git →
1:2.42.0-1 →
armhf → 2023-10-09 02:27:12
sbuild (Debian sbuild) 0.85.0 (04 January 2023) on test2023
+==============================================================================+
| git 1:2.42.0-1 (armhf) Mon, 09 Oct 2023 02:15:22 +0000 |
+==============================================================================+
Package: git
Version: 1:2.42.0-1
Source Version: 1:2.42.0-1
Distribution: trixie-staging
Machine Architecture: arm64
Host Architecture: armhf
Build Architecture: armhf
Build Type: any
I: NOTICE: Log filtering will replace 'var/run/schroot/mount/trixie-staging-armhf-sbuild-2b1478a8-259d-4893-a7b3-c8838940c688' with '<<CHROOT>>'
I: NOTICE: Log filtering will replace 'build/git-tI2CpQ/resolver-KNB4p6' with '<<RESOLVERDIR>>'
+------------------------------------------------------------------------------+
| Update chroot |
+------------------------------------------------------------------------------+
Get:1 http://172.17.4.1/private trixie-staging InRelease [11.3 kB]
Get:2 http://172.17.4.1/private trixie-staging/main Sources [14.1 MB]
Get:3 http://172.17.4.1/private trixie-staging/main armhf Packages [14.8 MB]
Fetched 28.9 MB in 5s (5307 kB/s)
Reading package lists...
W: http://172.17.4.1/private/dists/trixie-staging/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
+------------------------------------------------------------------------------+
| Fetch source files |
+------------------------------------------------------------------------------+
Check APT
---------
Checking available source versions...
Download source files with APT
------------------------------
Reading package lists...
NOTICE: 'git' packaging is maintained in the 'Git' version control system at:
https://repo.or.cz/r/git/debian.git/
Please use:
git clone https://repo.or.cz/r/git/debian.git/
to retrieve the latest (possibly unreleased) updates to the package.
Need to get 8107 kB of source archives.
Get:1 http://172.17.4.1/private trixie-staging/main git 1:2.42.0-1 (dsc) [2825 B]
Get:2 http://172.17.4.1/private trixie-staging/main git 1:2.42.0-1 (tar) [7347 kB]
Get:3 http://172.17.4.1/private trixie-staging/main git 1:2.42.0-1 (diff) [758 kB]
Fetched 8107 kB in 1s (8227 kB/s)
Download complete and in download only mode
I: NOTICE: Log filtering will replace 'build/git-tI2CpQ/git-2.42.0' with '<<PKGBUILDDIR>>'
I: NOTICE: Log filtering will replace 'build/git-tI2CpQ' with '<<BUILDDIR>>'
+------------------------------------------------------------------------------+
| Install package build dependencies |
+------------------------------------------------------------------------------+
Setup apt archive
-----------------
Merged Build-Depends: libz-dev, gettext, libpcre2-dev | libpcre3-dev, libcurl4-gnutls-dev, libexpat1-dev, subversion, libsvn-perl, libyaml-perl, tcl, python3, libhttp-date-perl | libtime-parsedate-perl, libcgi-pm-perl, liberror-perl, libmailtools-perl, cvs, cvsps, libdbd-sqlite3-perl, unzip, libio-pty-perl, debhelper-compat (= 10), dh-exec (>= 0.7), dh-apache2, dpkg-dev (>= 1.16.2~), build-essential, fakeroot
Filtered Build-Depends: libz-dev, gettext, libpcre2-dev, libcurl4-gnutls-dev, libexpat1-dev, subversion, libsvn-perl, libyaml-perl, tcl, python3, libhttp-date-perl, libcgi-pm-perl, liberror-perl, libmailtools-perl, cvs, cvsps, libdbd-sqlite3-perl, unzip, libio-pty-perl, debhelper-compat (= 10), dh-exec (>= 0.7), dh-apache2, dpkg-dev (>= 1.16.2~), build-essential, fakeroot
dpkg-deb: building package 'sbuild-build-depends-main-dummy' in '/<<RESOLVERDIR>>/apt_archive/sbuild-build-depends-main-dummy.deb'.
Ign:1 copy:/<<RESOLVERDIR>>/apt_archive ./ InRelease
Get:2 copy:/<<RESOLVERDIR>>/apt_archive ./ Release [609 B]
Ign:3 copy:/<<RESOLVERDIR>>/apt_archive ./ Release.gpg
Get:4 copy:/<<RESOLVERDIR>>/apt_archive ./ Sources [957 B]
Get:5 copy:/<<RESOLVERDIR>>/apt_archive ./ Packages [950 B]
Fetched 2516 B in 0s (0 B/s)
Reading package lists...
Reading package lists...
Install main build dependencies (apt-based resolver)
----------------------------------------------------
Installing build dependencies
Reading package lists...
Building dependency tree...
The following additional packages will be installed:
apache2-dev autoconf automake autopoint autotools-dev bsdextrautils bsdutils
cvs cvsps debhelper dh-autoreconf dh-exec dh-strip-nondeterminism dwz file
gettext gettext-base groff-base intltool-debian libapr1 libapr1-dev
libaprutil1 libaprutil1-dev libarchive-zip-perl libblkid1 libbrotli1 libbsd0
libcgi-pm-perl libcurl3-gnutls libcurl4-gnutls-dev libdbd-sqlite3-perl
libdbi-perl libdebhelper-perl libelf1 liberror-perl libexpat1 libexpat1-dev
libfile-stripnondeterminism-perl libhtml-parser-perl libhtml-tagset-perl
libhttp-date-perl libicu72 libio-pty-perl libio-socket-ssl-perl libldap-dev
libldap2-dev libmagic-mgc libmagic1 libmailtools-perl libmount1
libnet-smtp-ssl-perl libnet-ssleay-perl libnghttp2-14 libpcre2-16-0
libpcre2-32-0 libpcre2-dev libpcre2-posix3 libpipeline1 libpsl5
libpython3-stdlib libpython3.11-minimal libpython3.11-stdlib librtmp1
libsctp-dev libsctp1 libserf-1-1 libsmartcols1 libssh2-1
libsub-override-perl libsvn-perl libsvn1 libtcl8.6 libtimedate-perl libtool
libuchardet0 liburi-perl libutf8proc2 libuuid1 libxml2 libyaml-perl m4
man-db media-types mount netbase openssl perl-openssl-defaults po-debconf
python3 python3-minimal python3.11 python3.11-minimal sensible-utils
subversion tcl tcl8.6 unzip util-linux uuid-dev zlib1g-dev
Suggested packages:
autoconf-archive gnu-standards autoconf-doc mksh rcs dh-make gettext-doc
libasprintf-dev libgettextpo-dev groff libcurl4-doc libgnutls28-dev
libidn-dev libkrb5-dev librtmp-dev libssh2-1-dev pkg-config libclone-perl
libmldbm-perl libnet-daemon-perl libsql-statement-perl libdata-dump-perl
ca-certificates cryptsetup-bin lksctp-tools libtool-doc gfortran
| fortran95-compiler gcj-jdk libbusiness-isbn-perl libregexp-ipv6-perl
libwww-perl libyaml-shell-perl m4-doc apparmor less www-browser nfs-common
libmail-box-perl python3-doc python3-tk python3-venv python3.11-venv
python3.11-doc binfmt-support db5.3-util libapache2-mod-svn subversion-tools
tcl-tclreadline zip dosfstools kbd util-linux-extra util-linux-locales
Recommended packages:
openssh-client curl | wget | lynx libcgi-fast-perl ca-certificates
libarchive-cpio-perl libhttp-message-perl libauthen-sasl-perl publicsuffix
libltdl-dev uuid-runtime libyaml-libyaml-perl | libyaml-syck-perl
libmail-sendmail-perl
The following NEW packages will be installed:
apache2-dev autoconf automake autopoint autotools-dev bsdextrautils cvs
cvsps debhelper dh-autoreconf dh-exec dh-strip-nondeterminism dwz file
gettext gettext-base groff-base intltool-debian libapr1 libapr1-dev
libaprutil1 libaprutil1-dev libarchive-zip-perl libbrotli1 libbsd0
libcgi-pm-perl libcurl3-gnutls libcurl4-gnutls-dev libdbd-sqlite3-perl
libdbi-perl libdebhelper-perl libelf1 liberror-perl libexpat1 libexpat1-dev
libfile-stripnondeterminism-perl libhtml-parser-perl libhtml-tagset-perl
libhttp-date-perl libicu72 libio-pty-perl libio-socket-ssl-perl libldap-dev
libldap2-dev libmagic-mgc libmagic1 libmailtools-perl libnet-smtp-ssl-perl
libnet-ssleay-perl libnghttp2-14 libpcre2-16-0 libpcre2-32-0 libpcre2-dev
libpcre2-posix3 libpipeline1 libpsl5 libpython3-stdlib libpython3.11-minimal
libpython3.11-stdlib librtmp1 libsctp-dev libsctp1 libserf-1-1 libssh2-1
libsub-override-perl libsvn-perl libsvn1 libtcl8.6 libtimedate-perl libtool
libuchardet0 liburi-perl libutf8proc2 libxml2 libyaml-perl m4 man-db
media-types netbase openssl perl-openssl-defaults po-debconf python3
python3-minimal python3.11 python3.11-minimal
sbuild-build-depends-main-dummy sensible-utils subversion tcl tcl8.6 unzip
uuid-dev zlib1g-dev
The following packages will be upgraded:
bsdutils libblkid1 libmount1 libsmartcols1 libuuid1 mount util-linux
7 upgraded, 94 newly installed, 0 to remove and 19 not upgraded.
Need to get 41.1 MB of archives.
After this operation, 150 MB of additional disk space will be used.
Get:1 copy:/<<RESOLVERDIR>>/apt_archive ./ sbuild-build-depends-main-dummy 0.invalid.0 [1032 B]
Get:2 http://172.17.4.1/private trixie-staging/main armhf bsdutils armhf 1:2.39.2-2 [85.9 kB]
Get:3 http://172.17.4.1/private trixie-staging/main armhf util-linux armhf 2.39.2-2 [1106 kB]
Get:4 http://172.17.4.1/private trixie-staging/main armhf mount armhf 2.39.2-2 [132 kB]
Get:5 http://172.17.4.1/private trixie-staging/main armhf libpython3.11-minimal armhf 3.11.5-3 [800 kB]
Get:6 http://172.17.4.1/private trixie-staging/main armhf libexpat1 armhf 2.5.0-2 [76.8 kB]
Get:7 http://172.17.4.1/private trixie-staging/main armhf python3.11-minimal armhf 3.11.5-3 [1676 kB]
Get:8 http://172.17.4.1/private trixie-staging/main armhf python3-minimal armhf 3.11.4-5 [26.2 kB]
Get:9 http://172.17.4.1/private trixie-staging/main armhf media-types all 10.1.0 [26.9 kB]
Get:10 http://172.17.4.1/private trixie-staging/main armhf libuuid1 armhf 2.39.2-2 [27.8 kB]
Get:11 http://172.17.4.1/private trixie-staging/main armhf libpython3.11-stdlib armhf 3.11.5-3 [1675 kB]
Get:12 http://172.17.4.1/private trixie-staging/main armhf python3.11 armhf 3.11.5-3 [582 kB]
Get:13 http://172.17.4.1/private trixie-staging/main armhf libpython3-stdlib armhf 3.11.4-5 [9200 B]
Get:14 http://172.17.4.1/private trixie-staging/main armhf python3 armhf 3.11.4-5 [26.2 kB]
Get:15 http://172.17.4.1/private trixie-staging/main armhf libblkid1 armhf 2.39.2-2 [143 kB]
Get:16 http://172.17.4.1/private trixie-staging/main armhf libmount1 armhf 2.39.2-2 [166 kB]
Get:17 http://172.17.4.1/private trixie-staging/main armhf libsmartcols1 armhf 2.39.2-2 [101 kB]
Get:18 http://172.17.4.1/private trixie-staging/main armhf libuchardet0 armhf 0.0.7-1 [65.0 kB]
Get:19 http://172.17.4.1/private trixie-staging/main armhf groff-base armhf 1.23.0-2 [1033 kB]
Get:20 http://172.17.4.1/private trixie-staging/main armhf bsdextrautils armhf 2.39.2-2 [80.6 kB]
Get:21 http://172.17.4.1/private trixie-staging/main armhf libpipeline1 armhf 1.5.7-1 [33.4 kB]
Get:22 http://172.17.4.1/private trixie-staging/main armhf man-db armhf 2.11.2-3 [1342 kB]
Get:23 http://172.17.4.1/private trixie-staging/main armhf netbase all 6.4 [12.8 kB]
Get:24 http://172.17.4.1/private trixie-staging/main armhf sensible-utils all 0.0.20 [19.3 kB]
Get:25 http://172.17.4.1/private trixie-staging/main armhf libmagic-mgc armhf 1:5.45-2 [314 kB]
Get:26 http://172.17.4.1/private trixie-staging/main armhf libmagic1 armhf 1:5.45-2 [96.1 kB]
Get:27 http://172.17.4.1/private trixie-staging/main armhf file armhf 1:5.45-2 [41.6 kB]
Get:28 http://172.17.4.1/private trixie-staging/main armhf gettext-base armhf 0.21-13 [156 kB]
Get:29 http://172.17.4.1/private trixie-staging/main armhf autotools-dev all 20220109.1 [51.6 kB]
Get:30 http://172.17.4.1/private trixie-staging/main armhf m4 armhf 1.4.19-4 [256 kB]
Get:31 http://172.17.4.1/private trixie-staging/main armhf autoconf all 2.71-3 [332 kB]
Get:32 http://172.17.4.1/private trixie-staging/main armhf automake all 1:1.16.5-1.3 [823 kB]
Get:33 http://172.17.4.1/private trixie-staging/main armhf autopoint all 0.21-13 [496 kB]
Get:34 http://172.17.4.1/private trixie-staging/main armhf libdebhelper-perl all 13.11.6 [81.9 kB]
Get:35 http://172.17.4.1/private trixie-staging/main armhf libtool all 2.4.7-7 [517 kB]
Get:36 http://172.17.4.1/private trixie-staging/main armhf dh-autoreconf all 20 [17.1 kB]
Get:37 http://172.17.4.1/private trixie-staging/main armhf libarchive-zip-perl all 1.68-1 [104 kB]
Get:38 http://172.17.4.1/private trixie-staging/main armhf libsub-override-perl all 0.09-4 [9304 B]
Get:39 http://172.17.4.1/private trixie-staging/main armhf libfile-stripnondeterminism-perl all 1.13.1-1 [19.4 kB]
Get:40 http://172.17.4.1/private trixie-staging/main armhf dh-strip-nondeterminism all 1.13.1-1 [8620 B]
Get:41 http://172.17.4.1/private trixie-staging/main armhf libelf1 armhf 0.188-2.1+rpi1 [171 kB]
Get:42 http://172.17.4.1/private trixie-staging/main armhf dwz armhf 0.15-1 [92.4 kB]
Get:43 http://172.17.4.1/private trixie-staging/main armhf libicu72 armhf 72.1-3 [9009 kB]
Get:44 http://172.17.4.1/private trixie-staging/main armhf libxml2 armhf 2.9.14+dfsg-1.3 [571 kB]
Get:45 http://172.17.4.1/private trixie-staging/main armhf gettext armhf 0.21-13 [1201 kB]
Get:46 http://172.17.4.1/private trixie-staging/main armhf intltool-debian all 0.35.0+20060710.6 [22.9 kB]
Get:47 http://172.17.4.1/private trixie-staging/main armhf po-debconf all 1.0.21+nmu1 [248 kB]
Get:48 http://172.17.4.1/private trixie-staging/main armhf debhelper all 13.11.6 [952 kB]
Get:49 http://172.17.4.1/private trixie-staging/main armhf libapr1 armhf 1.7.2-3 [82.4 kB]
Get:50 http://172.17.4.1/private trixie-staging/main armhf uuid-dev armhf 2.39.2-2 [38.5 kB]
Get:51 http://172.17.4.1/private trixie-staging/main armhf libsctp1 armhf 1.0.19+dfsg-2 [29.1 kB]
Get:52 http://172.17.4.1/private trixie-staging/main armhf libsctp-dev armhf 1.0.19+dfsg-2 [71.5 kB]
Get:53 http://172.17.4.1/private trixie-staging/main armhf libapr1-dev armhf 1.7.2-3 [732 kB]
Get:54 http://172.17.4.1/private trixie-staging/main armhf libaprutil1 armhf 1.6.3-1 [75.2 kB]
Get:55 http://172.17.4.1/private trixie-staging/main armhf libldap-dev armhf 2.5.13+dfsg-5+rpi1 [259 kB]
Get:56 http://172.17.4.1/private trixie-staging/main armhf libldap2-dev all 2.5.13+dfsg-5+rpi1 [22.7 kB]
Get:57 http://172.17.4.1/private trixie-staging/main armhf libexpat1-dev armhf 2.5.0-2 [130 kB]
Get:58 http://172.17.4.1/private trixie-staging/main armhf libaprutil1-dev armhf 1.6.3-1 [397 kB]
Get:59 http://172.17.4.1/private trixie-staging/main armhf libpcre2-16-0 armhf 10.42-4 [211 kB]
Get:60 http://172.17.4.1/private trixie-staging/main armhf libpcre2-32-0 armhf 10.42-4 [201 kB]
Get:61 http://172.17.4.1/private trixie-staging/main armhf libpcre2-posix3 armhf 10.42-4 [55.1 kB]
Get:62 http://172.17.4.1/private trixie-staging/main armhf libpcre2-dev armhf 10.42-4 [648 kB]
Get:63 http://172.17.4.1/private trixie-staging/main armhf openssl armhf 3.0.11-1 [1367 kB]
Get:64 http://172.17.4.1/private trixie-staging/main armhf apache2-dev armhf 2.4.57-3 [306 kB]
Get:65 http://172.17.4.1/private trixie-staging/main armhf libbsd0 armhf 0.11.7-4 [111 kB]
Get:66 http://172.17.4.1/private trixie-staging/main armhf cvs armhf 2:1.12.13+real-29 [2747 kB]
Get:67 http://172.17.4.1/private trixie-staging/main armhf cvsps armhf 2.1-8 [43.3 kB]
Get:68 http://172.17.4.1/private trixie-staging/main armhf dh-exec armhf 0.27+b6 [23.6 kB]
Get:69 http://172.17.4.1/private trixie-staging/main armhf libbrotli1 armhf 1.0.9-2+b3 [258 kB]
Get:70 http://172.17.4.1/private trixie-staging/main armhf libhtml-tagset-perl all 3.20-6 [11.7 kB]
Get:71 http://172.17.4.1/private trixie-staging/main armhf liburi-perl all 5.21-1 [95.6 kB]
Get:72 http://172.17.4.1/private trixie-staging/main armhf libhtml-parser-perl armhf 3.81-1 [97.2 kB]
Get:73 http://172.17.4.1/private trixie-staging/main armhf libcgi-pm-perl all 4.57-1 [221 kB]
Get:74 http://172.17.4.1/private trixie-staging/main armhf libnghttp2-14 armhf 1.56.0-1 [60.5 kB]
Get:75 http://172.17.4.1/private trixie-staging/main armhf libpsl5 armhf 0.21.2-1+b1 [57.8 kB]
Get:76 http://172.17.4.1/private trixie-staging/main armhf librtmp1 armhf 2.4+20151223.gitfa8646d.1-2+b2 [54.2 kB]
Get:77 http://172.17.4.1/private trixie-staging/main armhf libssh2-1 armhf 1.11.0-2 [195 kB]
Get:78 http://172.17.4.1/private trixie-staging/main armhf libcurl3-gnutls armhf 8.3.0-2 [352 kB]
Get:79 http://172.17.4.1/private trixie-staging/main armhf libcurl4-gnutls-dev armhf 8.3.0-2 [435 kB]
Get:80 http://172.17.4.1/private trixie-staging/main armhf libdbi-perl armhf 1.643-4 [763 kB]
Get:81 http://172.17.4.1/private trixie-staging/main armhf libdbd-sqlite3-perl armhf 1.74-1 [171 kB]
Get:82 http://172.17.4.1/private trixie-staging/main armhf liberror-perl all 0.17029-2 [29.0 kB]
Get:83 http://172.17.4.1/private trixie-staging/main armhf libtimedate-perl all 2.3300-2 [39.3 kB]
Get:84 http://172.17.4.1/private trixie-staging/main armhf libhttp-date-perl all 6.05-2 [10.5 kB]
Get:85 http://172.17.4.1/private trixie-staging/main armhf libio-pty-perl armhf 1:1.17-1 [34.7 kB]
Get:86 http://172.17.4.1/private trixie-staging/main armhf perl-openssl-defaults armhf 7+b1 [7916 B]
Get:87 http://172.17.4.1/private trixie-staging/main armhf libnet-ssleay-perl armhf 1.92-2+b2 [297 kB]
Get:88 http://172.17.4.1/private trixie-staging/main armhf libio-socket-ssl-perl all 2.083-1 [218 kB]
Get:89 http://172.17.4.1/private trixie-staging/main armhf libnet-smtp-ssl-perl all 1.04-2 [6548 B]
Get:90 http://172.17.4.1/private trixie-staging/main armhf libmailtools-perl all 2.21-2 [95.6 kB]
Get:91 http://172.17.4.1/private trixie-staging/main armhf libserf-1-1 armhf 1.3.10-1 [44.1 kB]
Get:92 http://172.17.4.1/private trixie-staging/main armhf libutf8proc2 armhf 2.8.0-1+rpi1 [59.1 kB]
Get:93 http://172.17.4.1/private trixie-staging/main armhf libsvn1 armhf 1.14.2-4+b1 [1180 kB]
Get:94 http://172.17.4.1/private trixie-staging/main armhf libsvn-perl armhf 1.14.2-4+b1 [857 kB]
Get:95 http://172.17.4.1/private trixie-staging/main armhf libtcl8.6 armhf 8.6.13+dfsg-2 [904 kB]
Get:96 http://172.17.4.1/private trixie-staging/main armhf libyaml-perl all 1.30-2 [63.4 kB]
Get:97 http://172.17.4.1/private trixie-staging/main armhf subversion armhf 1.14.2-4+b1 [935 kB]
Get:98 http://172.17.4.1/private trixie-staging/main armhf tcl8.6 armhf 8.6.13+dfsg-2 [120 kB]
Get:99 http://172.17.4.1/private trixie-staging/main armhf tcl armhf 8.6.13 [4016 B]
Get:100 http://172.17.4.1/private trixie-staging/main armhf unzip armhf 6.0-28 [147 kB]
Get:101 http://172.17.4.1/private trixie-staging/main armhf zlib1g-dev armhf 1:1.2.13.dfsg-3 [901 kB]
debconf: delaying package configuration, since apt-utils is not installed
Fetched 41.1 MB in 5s (8721 kB/s)
(Reading database ... 11497 files and directories currently installed.)
Preparing to unpack .../bsdutils_1%3a2.39.2-2_armhf.deb ...
Unpacking bsdutils (1:2.39.2-2) over (1:2.39.2-1) ...
Setting up bsdutils (1:2.39.2-2) ...
(Reading database ... 11497 files and directories currently installed.)
Preparing to unpack .../util-linux_2.39.2-2_armhf.deb ...
Unpacking util-linux (2.39.2-2) over (2.39.2-1) ...
Setting up util-linux (2.39.2-2) ...
(Reading database ... 11497 files and directories currently installed.)
Preparing to unpack .../mount_2.39.2-2_armhf.deb ...
Unpacking mount (2.39.2-2) over (2.39.2-1) ...
Selecting previously unselected package libpython3.11-minimal:armhf.
Preparing to unpack .../libpython3.11-minimal_3.11.5-3_armhf.deb ...
Unpacking libpython3.11-minimal:armhf (3.11.5-3) ...
Selecting previously unselected package libexpat1:armhf.
Preparing to unpack .../libexpat1_2.5.0-2_armhf.deb ...
Unpacking libexpat1:armhf (2.5.0-2) ...
Selecting previously unselected package python3.11-minimal.
Preparing to unpack .../python3.11-minimal_3.11.5-3_armhf.deb ...
Unpacking python3.11-minimal (3.11.5-3) ...
Setting up libpython3.11-minimal:armhf (3.11.5-3) ...
Setting up libexpat1:armhf (2.5.0-2) ...
Setting up python3.11-minimal (3.11.5-3) ...
Selecting previously unselected package python3-minimal.
(Reading database ... 11813 files and directories currently installed.)
Preparing to unpack .../python3-minimal_3.11.4-5_armhf.deb ...
Unpacking python3-minimal (3.11.4-5) ...
Selecting previously unselected package media-types.
Preparing to unpack .../media-types_10.1.0_all.deb ...
Unpacking media-types (10.1.0) ...
Preparing to unpack .../libuuid1_2.39.2-2_armhf.deb ...
Unpacking libuuid1:armhf (2.39.2-2) over (2.39.2-1) ...
Setting up libuuid1:armhf (2.39.2-2) ...
Selecting previously unselected package libpython3.11-stdlib:armhf.
(Reading database ... 11840 files and directories currently installed.)
Preparing to unpack .../libpython3.11-stdlib_3.11.5-3_armhf.deb ...
Unpacking libpython3.11-stdlib:armhf (3.11.5-3) ...
Selecting previously unselected package python3.11.
Preparing to unpack .../python3.11_3.11.5-3_armhf.deb ...
Unpacking python3.11 (3.11.5-3) ...
Selecting previously unselected package libpython3-stdlib:armhf.
Preparing to unpack .../libpython3-stdlib_3.11.4-5_armhf.deb ...
Unpacking libpython3-stdlib:armhf (3.11.4-5) ...
Setting up python3-minimal (3.11.4-5) ...
Selecting previously unselected package python3.
(Reading database ... 12221 files and directories currently installed.)
Preparing to unpack .../python3_3.11.4-5_armhf.deb ...
Unpacking python3 (3.11.4-5) ...
Preparing to unpack .../libblkid1_2.39.2-2_armhf.deb ...
Unpacking libblkid1:armhf (2.39.2-2) over (2.39.2-1) ...
Setting up libblkid1:armhf (2.39.2-2) ...
(Reading database ... 12242 files and directories currently installed.)
Preparing to unpack .../libmount1_2.39.2-2_armhf.deb ...
Unpacking libmount1:armhf (2.39.2-2) over (2.39.2-1) ...
Setting up libmount1:armhf (2.39.2-2) ...
(Reading database ... 12242 files and directories currently installed.)
Preparing to unpack .../libsmartcols1_2.39.2-2_armhf.deb ...
Unpacking libsmartcols1:armhf (2.39.2-2) over (2.39.2-1) ...
Setting up libsmartcols1:armhf (2.39.2-2) ...
Selecting previously unselected package libuchardet0:armhf.
(Reading database ... 12242 files and directories currently installed.)
Preparing to unpack .../00-libuchardet0_0.0.7-1_armhf.deb ...
Unpacking libuchardet0:armhf (0.0.7-1) ...
Selecting previously unselected package groff-base.
Preparing to unpack .../01-groff-base_1.23.0-2_armhf.deb ...
Unpacking groff-base (1.23.0-2) ...
Selecting previously unselected package bsdextrautils.
Preparing to unpack .../02-bsdextrautils_2.39.2-2_armhf.deb ...
Unpacking bsdextrautils (2.39.2-2) ...
Selecting previously unselected package libpipeline1:armhf.
Preparing to unpack .../03-libpipeline1_1.5.7-1_armhf.deb ...
Unpacking libpipeline1:armhf (1.5.7-1) ...
Selecting previously unselected package man-db.
Preparing to unpack .../04-man-db_2.11.2-3_armhf.deb ...
Unpacking man-db (2.11.2-3) ...
Selecting previously unselected package netbase.
Preparing to unpack .../05-netbase_6.4_all.deb ...
Unpacking netbase (6.4) ...
Selecting previously unselected package sensible-utils.
Preparing to unpack .../06-sensible-utils_0.0.20_all.deb ...
Unpacking sensible-utils (0.0.20) ...
Selecting previously unselected package libmagic-mgc.
Preparing to unpack .../07-libmagic-mgc_1%3a5.45-2_armhf.deb ...
Unpacking libmagic-mgc (1:5.45-2) ...
Selecting previously unselected package libmagic1:armhf.
Preparing to unpack .../08-libmagic1_1%3a5.45-2_armhf.deb ...
Unpacking libmagic1:armhf (1:5.45-2) ...
Selecting previously unselected package file.
Preparing to unpack .../09-file_1%3a5.45-2_armhf.deb ...
Unpacking file (1:5.45-2) ...
Selecting previously unselected package gettext-base.
Preparing to unpack .../10-gettext-base_0.21-13_armhf.deb ...
Unpacking gettext-base (0.21-13) ...
Selecting previously unselected package autotools-dev.
Preparing to unpack .../11-autotools-dev_20220109.1_all.deb ...
Unpacking autotools-dev (20220109.1) ...
Selecting previously unselected package m4.
Preparing to unpack .../12-m4_1.4.19-4_armhf.deb ...
Unpacking m4 (1.4.19-4) ...
Selecting previously unselected package autoconf.
Preparing to unpack .../13-autoconf_2.71-3_all.deb ...
Unpacking autoconf (2.71-3) ...
Selecting previously unselected package automake.
Preparing to unpack .../14-automake_1%3a1.16.5-1.3_all.deb ...
Unpacking automake (1:1.16.5-1.3) ...
Selecting previously unselected package autopoint.
Preparing to unpack .../15-autopoint_0.21-13_all.deb ...
Unpacking autopoint (0.21-13) ...
Selecting previously unselected package libdebhelper-perl.
Preparing to unpack .../16-libdebhelper-perl_13.11.6_all.deb ...
Unpacking libdebhelper-perl (13.11.6) ...
Selecting previously unselected package libtool.
Preparing to unpack .../17-libtool_2.4.7-7_all.deb ...
Unpacking libtool (2.4.7-7) ...
Selecting previously unselected package dh-autoreconf.
Preparing to unpack .../18-dh-autoreconf_20_all.deb ...
Unpacking dh-autoreconf (20) ...
Selecting previously unselected package libarchive-zip-perl.
Preparing to unpack .../19-libarchive-zip-perl_1.68-1_all.deb ...
Unpacking libarchive-zip-perl (1.68-1) ...
Selecting previously unselected package libsub-override-perl.
Preparing to unpack .../20-libsub-override-perl_0.09-4_all.deb ...
Unpacking libsub-override-perl (0.09-4) ...
Selecting previously unselected package libfile-stripnondeterminism-perl.
Preparing to unpack .../21-libfile-stripnondeterminism-perl_1.13.1-1_all.deb ...
Unpacking libfile-stripnondeterminism-perl (1.13.1-1) ...
Selecting previously unselected package dh-strip-nondeterminism.
Preparing to unpack .../22-dh-strip-nondeterminism_1.13.1-1_all.deb ...
Unpacking dh-strip-nondeterminism (1.13.1-1) ...
Selecting previously unselected package libelf1:armhf.
Preparing to unpack .../23-libelf1_0.188-2.1+rpi1_armhf.deb ...
Unpacking libelf1:armhf (0.188-2.1+rpi1) ...
Selecting previously unselected package dwz.
Preparing to unpack .../24-dwz_0.15-1_armhf.deb ...
Unpacking dwz (0.15-1) ...
Selecting previously unselected package libicu72:armhf.
Preparing to unpack .../25-libicu72_72.1-3_armhf.deb ...
Unpacking libicu72:armhf (72.1-3) ...
Selecting previously unselected package libxml2:armhf.
Preparing to unpack .../26-libxml2_2.9.14+dfsg-1.3_armhf.deb ...
Unpacking libxml2:armhf (2.9.14+dfsg-1.3) ...
Selecting previously unselected package gettext.
Preparing to unpack .../27-gettext_0.21-13_armhf.deb ...
Unpacking gettext (0.21-13) ...
Selecting previously unselected package intltool-debian.
Preparing to unpack .../28-intltool-debian_0.35.0+20060710.6_all.deb ...
Unpacking intltool-debian (0.35.0+20060710.6) ...
Selecting previously unselected package po-debconf.
Preparing to unpack .../29-po-debconf_1.0.21+nmu1_all.deb ...
Unpacking po-debconf (1.0.21+nmu1) ...
Selecting previously unselected package debhelper.
Preparing to unpack .../30-debhelper_13.11.6_all.deb ...
Unpacking debhelper (13.11.6) ...
Selecting previously unselected package libapr1:armhf.
Preparing to unpack .../31-libapr1_1.7.2-3_armhf.deb ...
Unpacking libapr1:armhf (1.7.2-3) ...
Selecting previously unselected package uuid-dev:armhf.
Preparing to unpack .../32-uuid-dev_2.39.2-2_armhf.deb ...
Unpacking uuid-dev:armhf (2.39.2-2) ...
Selecting previously unselected package libsctp1:armhf.
Preparing to unpack .../33-libsctp1_1.0.19+dfsg-2_armhf.deb ...
Unpacking libsctp1:armhf (1.0.19+dfsg-2) ...
Selecting previously unselected package libsctp-dev:armhf.
Preparing to unpack .../34-libsctp-dev_1.0.19+dfsg-2_armhf.deb ...
Unpacking libsctp-dev:armhf (1.0.19+dfsg-2) ...
Selecting previously unselected package libapr1-dev.
Preparing to unpack .../35-libapr1-dev_1.7.2-3_armhf.deb ...
Unpacking libapr1-dev (1.7.2-3) ...
Selecting previously unselected package libaprutil1:armhf.
Preparing to unpack .../36-libaprutil1_1.6.3-1_armhf.deb ...
Unpacking libaprutil1:armhf (1.6.3-1) ...
Selecting previously unselected package libldap-dev:armhf.
Preparing to unpack .../37-libldap-dev_2.5.13+dfsg-5+rpi1_armhf.deb ...
Unpacking libldap-dev:armhf (2.5.13+dfsg-5+rpi1) ...
Selecting previously unselected package libldap2-dev.
Preparing to unpack .../38-libldap2-dev_2.5.13+dfsg-5+rpi1_all.deb ...
Unpacking libldap2-dev (2.5.13+dfsg-5+rpi1) ...
Selecting previously unselected package libexpat1-dev:armhf.
Preparing to unpack .../39-libexpat1-dev_2.5.0-2_armhf.deb ...
Unpacking libexpat1-dev:armhf (2.5.0-2) ...
Selecting previously unselected package libaprutil1-dev.
Preparing to unpack .../40-libaprutil1-dev_1.6.3-1_armhf.deb ...
Unpacking libaprutil1-dev (1.6.3-1) ...
Selecting previously unselected package libpcre2-16-0:armhf.
Preparing to unpack .../41-libpcre2-16-0_10.42-4_armhf.deb ...
Unpacking libpcre2-16-0:armhf (10.42-4) ...
Selecting previously unselected package libpcre2-32-0:armhf.
Preparing to unpack .../42-libpcre2-32-0_10.42-4_armhf.deb ...
Unpacking libpcre2-32-0:armhf (10.42-4) ...
Selecting previously unselected package libpcre2-posix3:armhf.
Preparing to unpack .../43-libpcre2-posix3_10.42-4_armhf.deb ...
Unpacking libpcre2-posix3:armhf (10.42-4) ...
Selecting previously unselected package libpcre2-dev:armhf.
Preparing to unpack .../44-libpcre2-dev_10.42-4_armhf.deb ...
Unpacking libpcre2-dev:armhf (10.42-4) ...
Selecting previously unselected package openssl.
Preparing to unpack .../45-openssl_3.0.11-1_armhf.deb ...
Unpacking openssl (3.0.11-1) ...
Selecting previously unselected package apache2-dev.
Preparing to unpack .../46-apache2-dev_2.4.57-3_armhf.deb ...
Unpacking apache2-dev (2.4.57-3) ...
Selecting previously unselected package libbsd0:armhf.
Preparing to unpack .../47-libbsd0_0.11.7-4_armhf.deb ...
Unpacking libbsd0:armhf (0.11.7-4) ...
Selecting previously unselected package cvs.
Preparing to unpack .../48-cvs_2%3a1.12.13+real-29_armhf.deb ...
Unpacking cvs (2:1.12.13+real-29) ...
Selecting previously unselected package cvsps.
Preparing to unpack .../49-cvsps_2.1-8_armhf.deb ...
Unpacking cvsps (2.1-8) ...
Selecting previously unselected package dh-exec.
Preparing to unpack .../50-dh-exec_0.27+b6_armhf.deb ...
Unpacking dh-exec (0.27+b6) ...
Selecting previously unselected package libbrotli1:armhf.
Preparing to unpack .../51-libbrotli1_1.0.9-2+b3_armhf.deb ...
Unpacking libbrotli1:armhf (1.0.9-2+b3) ...
Selecting previously unselected package libhtml-tagset-perl.
Preparing to unpack .../52-libhtml-tagset-perl_3.20-6_all.deb ...
Unpacking libhtml-tagset-perl (3.20-6) ...
Selecting previously unselected package liburi-perl.
Preparing to unpack .../53-liburi-perl_5.21-1_all.deb ...
Unpacking liburi-perl (5.21-1) ...
Selecting previously unselected package libhtml-parser-perl:armhf.
Preparing to unpack .../54-libhtml-parser-perl_3.81-1_armhf.deb ...
Unpacking libhtml-parser-perl:armhf (3.81-1) ...
Selecting previously unselected package libcgi-pm-perl.
Preparing to unpack .../55-libcgi-pm-perl_4.57-1_all.deb ...
Unpacking libcgi-pm-perl (4.57-1) ...
Selecting previously unselected package libnghttp2-14:armhf.
Preparing to unpack .../56-libnghttp2-14_1.56.0-1_armhf.deb ...
Unpacking libnghttp2-14:armhf (1.56.0-1) ...
Selecting previously unselected package libpsl5:armhf.
Preparing to unpack .../57-libpsl5_0.21.2-1+b1_armhf.deb ...
Unpacking libpsl5:armhf (0.21.2-1+b1) ...
Selecting previously unselected package librtmp1:armhf.
Preparing to unpack .../58-librtmp1_2.4+20151223.gitfa8646d.1-2+b2_armhf.deb ...
Unpacking librtmp1:armhf (2.4+20151223.gitfa8646d.1-2+b2) ...
Selecting previously unselected package libssh2-1:armhf.
Preparing to unpack .../59-libssh2-1_1.11.0-2_armhf.deb ...
Unpacking libssh2-1:armhf (1.11.0-2) ...
Selecting previously unselected package libcurl3-gnutls:armhf.
Preparing to unpack .../60-libcurl3-gnutls_8.3.0-2_armhf.deb ...
Unpacking libcurl3-gnutls:armhf (8.3.0-2) ...
Selecting previously unselected package libcurl4-gnutls-dev:armhf.
Preparing to unpack .../61-libcurl4-gnutls-dev_8.3.0-2_armhf.deb ...
Unpacking libcurl4-gnutls-dev:armhf (8.3.0-2) ...
Selecting previously unselected package libdbi-perl:armhf.
Preparing to unpack .../62-libdbi-perl_1.643-4_armhf.deb ...
Unpacking libdbi-perl:armhf (1.643-4) ...
Selecting previously unselected package libdbd-sqlite3-perl:armhf.
Preparing to unpack .../63-libdbd-sqlite3-perl_1.74-1_armhf.deb ...
Unpacking libdbd-sqlite3-perl:armhf (1.74-1) ...
Selecting previously unselected package liberror-perl.
Preparing to unpack .../64-liberror-perl_0.17029-2_all.deb ...
Unpacking liberror-perl (0.17029-2) ...
Selecting previously unselected package libtimedate-perl.
Preparing to unpack .../65-libtimedate-perl_2.3300-2_all.deb ...
Unpacking libtimedate-perl (2.3300-2) ...
Selecting previously unselected package libhttp-date-perl.
Preparing to unpack .../66-libhttp-date-perl_6.05-2_all.deb ...
Unpacking libhttp-date-perl (6.05-2) ...
Selecting previously unselected package libio-pty-perl.
Preparing to unpack .../67-libio-pty-perl_1%3a1.17-1_armhf.deb ...
Unpacking libio-pty-perl (1:1.17-1) ...
Selecting previously unselected package perl-openssl-defaults:armhf.
Preparing to unpack .../68-perl-openssl-defaults_7+b1_armhf.deb ...
Unpacking perl-openssl-defaults:armhf (7+b1) ...
Selecting previously unselected package libnet-ssleay-perl:armhf.
Preparing to unpack .../69-libnet-ssleay-perl_1.92-2+b2_armhf.deb ...
Unpacking libnet-ssleay-perl:armhf (1.92-2+b2) ...
Selecting previously unselected package libio-socket-ssl-perl.
Preparing to unpack .../70-libio-socket-ssl-perl_2.083-1_all.deb ...
Unpacking libio-socket-ssl-perl (2.083-1) ...
Selecting previously unselected package libnet-smtp-ssl-perl.
Preparing to unpack .../71-libnet-smtp-ssl-perl_1.04-2_all.deb ...
Unpacking libnet-smtp-ssl-perl (1.04-2) ...
Selecting previously unselected package libmailtools-perl.
Preparing to unpack .../72-libmailtools-perl_2.21-2_all.deb ...
Unpacking libmailtools-perl (2.21-2) ...
Selecting previously unselected package libserf-1-1:armhf.
Preparing to unpack .../73-libserf-1-1_1.3.10-1_armhf.deb ...
Unpacking libserf-1-1:armhf (1.3.10-1) ...
Selecting previously unselected package libutf8proc2:armhf.
Preparing to unpack .../74-libutf8proc2_2.8.0-1+rpi1_armhf.deb ...
Unpacking libutf8proc2:armhf (2.8.0-1+rpi1) ...
Selecting previously unselected package libsvn1:armhf.
Preparing to unpack .../75-libsvn1_1.14.2-4+b1_armhf.deb ...
Unpacking libsvn1:armhf (1.14.2-4+b1) ...
Selecting previously unselected package libsvn-perl:armhf.
Preparing to unpack .../76-libsvn-perl_1.14.2-4+b1_armhf.deb ...
Unpacking libsvn-perl:armhf (1.14.2-4+b1) ...
Selecting previously unselected package libtcl8.6:armhf.
Preparing to unpack .../77-libtcl8.6_8.6.13+dfsg-2_armhf.deb ...
Unpacking libtcl8.6:armhf (8.6.13+dfsg-2) ...
Selecting previously unselected package libyaml-perl.
Preparing to unpack .../78-libyaml-perl_1.30-2_all.deb ...
Unpacking libyaml-perl (1.30-2) ...
Selecting previously unselected package subversion.
Preparing to unpack .../79-subversion_1.14.2-4+b1_armhf.deb ...
Unpacking subversion (1.14.2-4+b1) ...
Selecting previously unselected package tcl8.6.
Preparing to unpack .../80-tcl8.6_8.6.13+dfsg-2_armhf.deb ...
Unpacking tcl8.6 (8.6.13+dfsg-2) ...
Selecting previously unselected package tcl.
Preparing to unpack .../81-tcl_8.6.13_armhf.deb ...
Unpacking tcl (8.6.13) ...
Selecting previously unselected package unzip.
Preparing to unpack .../82-unzip_6.0-28_armhf.deb ...
Unpacking unzip (6.0-28) ...
Selecting previously unselected package zlib1g-dev:armhf.
Preparing to unpack .../83-zlib1g-dev_1%3a1.2.13.dfsg-3_armhf.deb ...
Unpacking zlib1g-dev:armhf (1:1.2.13.dfsg-3) ...
Selecting previously unselected package sbuild-build-depends-main-dummy.
Preparing to unpack .../84-sbuild-build-depends-main-dummy_0.invalid.0_armhf.deb ...
Unpacking sbuild-build-depends-main-dummy (0.invalid.0) ...
Setting up media-types (10.1.0) ...
Setting up libpipeline1:armhf (1.5.7-1) ...
Setting up libpsl5:armhf (0.21.2-1+b1) ...
Setting up libicu72:armhf (72.1-3) ...
Setting up bsdextrautils (2.39.2-2) ...
Setting up libio-pty-perl (1:1.17-1) ...
Setting up libmagic-mgc (1:5.45-2) ...
Setting up libarchive-zip-perl (1.68-1) ...
Setting up libhtml-tagset-perl (3.20-6) ...
Setting up unzip (6.0-28) ...
Setting up libpython3.11-stdlib:armhf (3.11.5-3) ...
Setting up libutf8proc2:armhf (2.8.0-1+rpi1) ...
Setting up libdebhelper-perl (13.11.6) ...
Setting up libbrotli1:armhf (1.0.9-2+b3) ...
Setting up libnghttp2-14:armhf (1.56.0-1) ...
Setting up libmagic1:armhf (1:5.45-2) ...
Setting up libapr1:armhf (1.7.2-3) ...
Setting up perl-openssl-defaults:armhf (7+b1) ...
Setting up gettext-base (0.21-13) ...
Setting up m4 (1.4.19-4) ...
Setting up file (1:5.45-2) ...
Setting up libyaml-perl (1.30-2) ...
Setting up libpcre2-16-0:armhf (10.42-4) ...
Setting up liberror-perl (0.17029-2) ...
Setting up autotools-dev (20220109.1) ...
Setting up libpcre2-32-0:armhf (10.42-4) ...
Setting up libexpat1-dev:armhf (2.5.0-2) ...
Setting up librtmp1:armhf (2.4+20151223.gitfa8646d.1-2+b2) ...
Setting up libldap-dev:armhf (2.5.13+dfsg-5+rpi1) ...
Setting up uuid-dev:armhf (2.39.2-2) ...
Setting up libtcl8.6:armhf (8.6.13+dfsg-2) ...
Setting up autopoint (0.21-13) ...
Setting up autoconf (2.71-3) ...
Setting up libtimedate-perl (2.3300-2) ...
Setting up zlib1g-dev:armhf (1:1.2.13.dfsg-3) ...
Setting up libpcre2-posix3:armhf (10.42-4) ...
Setting up libsctp1:armhf (1.0.19+dfsg-2) ...
Setting up mount (2.39.2-2) ...
Setting up sensible-utils (0.0.20) ...
Setting up libuchardet0:armhf (0.0.7-1) ...
Setting up libsub-override-perl (0.09-4) ...
Setting up libssh2-1:armhf (1.11.0-2) ...
Setting up netbase (6.4) ...
Setting up openssl (3.0.11-1) ...
Setting up libbsd0:armhf (0.11.7-4) ...
Setting up libelf1:armhf (0.188-2.1+rpi1) ...
Setting up libxml2:armhf (2.9.14+dfsg-1.3) ...
Setting up liburi-perl (5.21-1) ...
Setting up libdbi-perl:armhf (1.643-4) ...
Setting up libpython3-stdlib:armhf (3.11.4-5) ...
Setting up libaprutil1:armhf (1.6.3-1) ...
Setting up libnet-ssleay-perl:armhf (1.92-2+b2) ...
Setting up automake (1:1.16.5-1.3) ...
update-alternatives: using /usr/bin/automake-1.16 to provide /usr/bin/automake (automake) in auto mode
Setting up libfile-stripnondeterminism-perl (1.13.1-1) ...
Setting up python3.11 (3.11.5-3) ...
Setting up libhttp-date-perl (6.05-2) ...
Setting up tcl8.6 (8.6.13+dfsg-2) ...
Setting up gettext (0.21-13) ...
Setting up libpcre2-dev:armhf (10.42-4) ...
Setting up libtool (2.4.7-7) ...
Setting up cvs (2:1.12.13+real-29) ...
info: Selecting GID from range 100 to 999 ...
info: Adding group `_cvsadmin' (GID 125) ...
Setting up libserf-1-1:armhf (1.3.10-1) ...
Setting up libcurl3-gnutls:armhf (8.3.0-2) ...
Setting up python3 (3.11.4-5) ...
Setting up libcurl4-gnutls-dev:armhf (8.3.0-2) ...
Setting up intltool-debian (0.35.0+20060710.6) ...
Setting up libldap2-dev (2.5.13+dfsg-5+rpi1) ...
Setting up dh-autoreconf (20) ...
Setting up libsctp-dev:armhf (1.0.19+dfsg-2) ...
Setting up dh-strip-nondeterminism (1.13.1-1) ...
Setting up dwz (0.15-1) ...
Setting up groff-base (1.23.0-2) ...
Setting up libhtml-parser-perl:armhf (3.81-1) ...
Setting up tcl (8.6.13) ...
Setting up libdbd-sqlite3-perl:armhf (1.74-1) ...
Setting up cvsps (2.1-8) ...
Setting up libsvn1:armhf (1.14.2-4+b1) ...
Setting up libio-socket-ssl-perl (2.083-1) ...
Setting up libsvn-perl:armhf (1.14.2-4+b1) ...
Setting up po-debconf (1.0.21+nmu1) ...
Setting up libcgi-pm-perl (4.57-1) ...
Setting up subversion (1.14.2-4+b1) ...
Setting up man-db (2.11.2-3) ...
Not building database; man-db/auto-update is not 'true'.
Setting up libnet-smtp-ssl-perl (1.04-2) ...
Setting up libmailtools-perl (2.21-2) ...
Setting up libapr1-dev (1.7.2-3) ...
Setting up libaprutil1-dev (1.6.3-1) ...
Setting up debhelper (13.11.6) ...
Setting up dh-exec (0.27+b6) ...
Setting up apache2-dev (2.4.57-3) ...
Setting up sbuild-build-depends-main-dummy (0.invalid.0) ...
Processing triggers for libc-bin (2.36-9+rpi1+deb12u1) ...
+------------------------------------------------------------------------------+
| Check architectures |
+------------------------------------------------------------------------------+
Arch check ok (armhf included in any all)
+------------------------------------------------------------------------------+
| Build environment |
+------------------------------------------------------------------------------+
Kernel: Linux 6.1.47-v8+ #1 SMP PREEMPT Fri Sep 1 07:05:33 BST 2023 arm64 (aarch64)
Toolchain package versions: binutils_2.40-2+rpi2 dpkg-dev_1.21.22+rpi1 g++-12_12.2.0-14+rpi1 gcc-12_12.2.0-14+rpi1 libc6-dev_2.36-9+rpi1+deb12u1 libstdc++-12-dev_12.2.0-14+rpi1 libstdc++6_12.2.0-14+rpi1 linux-libc-dev_6.1.38-1+rpi1
Package versions: adduser_3.137 apache2-dev_2.4.57-3 apt_2.7.3 autoconf_2.71-3 automake_1:1.16.5-1.3 autopoint_0.21-13 autotools-dev_20220109.1 base-files_13+rpi1 base-passwd_3.6.1 bash_5.2.15-2 binutils_2.40-2+rpi2 binutils-arm-linux-gnueabihf_2.40-2+rpi2 binutils-common_2.40-2+rpi2 bsdextrautils_2.39.2-2 bsdutils_1:2.39.2-2 build-essential_12.9 bzip2_1.0.8-5+b2 coreutils_9.1-1 cpp_4:12.2.0-3+rpi1 cpp-12_12.2.0-14+rpi1 cvs_2:1.12.13+real-29 cvsps_2.1-8 dash_0.5.12-6 debconf_1.5.82 debhelper_13.11.6 debianutils_5.13 dh-autoreconf_20 dh-exec_0.27+b6 dh-strip-nondeterminism_1.13.1-1 diffutils_1:3.8-4 dirmngr_2.2.40-1.1 dpkg_1.21.22+rpi1 dpkg-dev_1.21.22+rpi1 dwz_0.15-1 e2fsprogs_1.47.0-2 fakeroot_1.32.1-1 file_1:5.45-2 findutils_4.9.0-5 g++_4:12.2.0-3+rpi1 g++-12_12.2.0-14+rpi1 gcc_4:12.2.0-3+rpi1 gcc-10-base_10.4.0-7+rpi1 gcc-12_12.2.0-14+rpi1 gcc-12-base_12.2.0-14+rpi1 gcc-7-base_7.5.0-6+rpi1+b2 gcc-8-base_8.4.0-7+rpi1 gcc-9-base_9.4.0-2+rpi1 gettext_0.21-13 gettext-base_0.21-13 gnupg_2.2.40-1.1 gnupg-l10n_2.2.40-1.1 gnupg-utils_2.2.40-1.1 gpg_2.2.40-1.1 gpg-agent_2.2.40-1.1 gpg-wks-client_2.2.40-1.1 gpg-wks-server_2.2.40-1.1 gpgconf_2.2.40-1.1 gpgsm_2.2.40-1.1 gpgv_2.2.40-1.1 grep_3.11-3 groff-base_1.23.0-2 gzip_1.12-1 hostname_3.23+nmu1 init-system-helpers_1.65.2 intltool-debian_0.35.0+20060710.6 libacl1_2.3.1-3 libapr1_1.7.2-3 libapr1-dev_1.7.2-3 libaprutil1_1.6.3-1 libaprutil1-dev_1.6.3-1 libapt-pkg6.0_2.7.3 libarchive-zip-perl_1.68-1 libasan8_12.2.0-14+rpi1 libassuan0_2.5.6-1 libatomic1_12.2.0-14+rpi1 libattr1_1:2.5.1-4 libaudit-common_1:3.1.1-1 libaudit1_1:3.1.1-1 libbinutils_2.40-2+rpi2 libblkid1_2.39.2-2 libbrotli1_1.0.9-2+b3 libbsd0_0.11.7-4 libbz2-1.0_1.0.8-5+b2 libc-bin_2.36-9+rpi1+deb12u1 libc-dev-bin_2.36-9+rpi1+deb12u1 libc6_2.36-9+rpi1+deb12u1 libc6-dev_2.36-9+rpi1+deb12u1 libcap-ng0_0.8.3-1+b1 libcap2_1:2.66-4 libcc1-0_12.2.0-14+rpi1 libcgi-pm-perl_4.57-1 libcom-err2_1.47.0-2 libcrypt-dev_1:4.4.36-2 libcrypt1_1:4.4.36-2 libctf-nobfd0_2.40-2+rpi2 libctf0_2.40-2+rpi2 libcurl3-gnutls_8.3.0-2 libcurl4-gnutls-dev_8.3.0-2 libdb5.3_5.3.28+dfsg2-2 libdbd-sqlite3-perl_1.74-1 libdbi-perl_1.643-4 libdebconfclient0_0.270 libdebhelper-perl_13.11.6 libdpkg-perl_1.21.22+rpi1 libelf1_0.188-2.1+rpi1 liberror-perl_0.17029-2 libexpat1_2.5.0-2 libexpat1-dev_2.5.0-2 libext2fs2_1.47.0-2 libfakeroot_1.32.1-1 libffi8_3.4.4-1 libfile-stripnondeterminism-perl_1.13.1-1 libgcc-12-dev_12.2.0-14+rpi1 libgcc-s1_12.2.0-14+rpi1 libgcrypt20_1.10.2-3 libgdbm-compat4_1.23-3 libgdbm6_1.23-3 libgmp10_2:6.3.0+dfsg-2 libgnutls30_3.8.1-4 libgomp1_12.2.0-14+rpi1 libgpg-error0_1.47-2 libgssapi-krb5-2_1.20.1-4 libhogweed6_3.9.1-2 libhtml-parser-perl_3.81-1 libhtml-tagset-perl_3.20-6 libhttp-date-perl_6.05-2 libicu72_72.1-3 libidn2-0_2.3.4-1 libio-pty-perl_1:1.17-1 libio-socket-ssl-perl_2.083-1 libisl23_0.26-3 libjansson4_2.14-2 libk5crypto3_1.20.1-4 libkeyutils1_1.6.3-2 libkrb5-3_1.20.1-4 libkrb5support0_1.20.1-4 libksba8_1.6.4-2 libldap-2.5-0_2.5.13+dfsg-5+rpi1 libldap-dev_2.5.13+dfsg-5+rpi1 libldap2-dev_2.5.13+dfsg-5+rpi1 liblocale-gettext-perl_1.07-6 liblz4-1_1.9.4-1+rpi1+b1 liblzma5_5.4.4-0.1 libmagic-mgc_1:5.45-2 libmagic1_1:5.45-2 libmailtools-perl_2.21-2 libmd0_1.1.0-1 libmount1_2.39.2-2 libmpc3_1.3.1-1 libmpfr6_4.2.0-1 libncursesw6_6.4+20230625-2 libnet-smtp-ssl-perl_1.04-2 libnet-ssleay-perl_1.92-2+b2 libnettle8_3.9.1-2 libnghttp2-14_1.56.0-1 libnpth0_1.6-3 libnsl-dev_1.3.0-2 libnsl2_1.3.0-2 libp11-kit0_0.25.0-4 libpam-modules_1.5.2-7 libpam-modules-bin_1.5.2-7 libpam-runtime_1.5.2-7 libpam0g_1.5.2-7 libpcre2-16-0_10.42-4 libpcre2-32-0_10.42-4 libpcre2-8-0_10.42-4 libpcre2-dev_10.42-4 libpcre2-posix3_10.42-4 libperl5.36_5.36.0-9 libpipeline1_1.5.7-1 libpsl5_0.21.2-1+b1 libpython3-stdlib_3.11.4-5 libpython3.11-minimal_3.11.5-3 libpython3.11-stdlib_3.11.5-3 libreadline8_8.2-1.3 librtmp1_2.4+20151223.gitfa8646d.1-2+b2 libsasl2-2_2.1.28+dfsg1-3 libsasl2-modules-db_2.1.28+dfsg1-3 libsctp-dev_1.0.19+dfsg-2 libsctp1_1.0.19+dfsg-2 libseccomp2_2.5.4-1+rpi1+b1 libselinux1_3.5-1 libsemanage-common_3.5-1 libsemanage2_3.5-1 libsepol2_3.5-1 libserf-1-1_1.3.10-1 libsmartcols1_2.39.2-2 libsqlite3-0_3.43.1-1 libss2_1.47.0-2 libssh2-1_1.11.0-2 libssl3_3.0.11-1 libstdc++-12-dev_12.2.0-14+rpi1 libstdc++6_12.2.0-14+rpi1 libsub-override-perl_0.09-4 libsvn-perl_1.14.2-4+b1 libsvn1_1.14.2-4+b1 libsystemd0_252.12-1~deb12u1+rpi1 libtasn1-6_4.19.0-3 libtcl8.6_8.6.13+dfsg-2 libtext-charwidth-perl_0.04-11 libtext-iconv-perl_1.7-8 libtimedate-perl_2.3300-2 libtinfo6_6.4+20230625-2 libtirpc-common_1.3.3+ds-1 libtirpc-dev_1.3.3+ds-1 libtirpc3_1.3.3+ds-1 libtool_2.4.7-7 libubsan1_12.2.0-14+rpi1 libuchardet0_0.0.7-1 libudev1_252.12-1~deb12u1+rpi1 libunistring5_1.1-2 liburi-perl_5.21-1 libutf8proc2_2.8.0-1+rpi1 libuuid1_2.39.2-2 libxml2_2.9.14+dfsg-1.3 libxxhash0_0.8.2-2 libyaml-perl_1.30-2 libzstd1_1.5.5+dfsg2-1 linux-libc-dev_6.1.38-1+rpi1 login_1:4.13+dfsg1-1 logsave_1.47.0-2 lsb-base_11.6+rpi1 m4_1.4.19-4 make_4.3-4.1 man-db_2.11.2-3 mawk_1.3.4.20230808-1 media-types_10.1.0 mount_2.39.2-2 ncurses-base_6.4+20230625-2 ncurses-bin_6.4+20230625-2 netbase_6.4 openssl_3.0.11-1 passwd_1:4.13+dfsg1-1 patch_2.7.6-7 perl_5.36.0-9 perl-base_5.36.0-9 perl-modules-5.36_5.36.0-9 perl-openssl-defaults_7+b1 pinentry-curses_1.2.1-1 po-debconf_1.0.21+nmu1 python3_3.11.4-5 python3-minimal_3.11.4-5 python3.11_3.11.5-3 python3.11-minimal_3.11.5-3 raspbian-archive-keyring_20120528.2 readline-common_8.2-1.3 rpcsvc-proto_1.4.3-1 sbuild-build-depends-main-dummy_0.invalid.0 sed_4.9-1 sensible-utils_0.0.20 subversion_1.14.2-4+b1 sysvinit-utils_3.08-1 tar_1.34+dfsg-1.2 tcl_8.6.13 tcl8.6_8.6.13+dfsg-2 tzdata_2023c-10 unzip_6.0-28 usr-is-merged_37 util-linux_2.39.2-2 uuid-dev_2.39.2-2 xz-utils_5.4.4-0.1 zlib1g_1:1.2.13.dfsg-3 zlib1g-dev_1:1.2.13.dfsg-3
+------------------------------------------------------------------------------+
| Build |
+------------------------------------------------------------------------------+
Unpack source
-------------
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
Format: 3.0 (quilt)
Source: git
Binary: git, git-man, git-doc, git-cvs, git-svn, git-mediawiki, git-email, git-daemon-run, git-daemon-sysvinit, git-gui, gitk, gitweb, git-all
Architecture: any all
Version: 1:2.42.0-1
Maintainer: Jonathan Nieder <jrnieder@gmail.com>
Uploaders: Anders Kaseorg <andersk@mit.edu>
Homepage: https://git-scm.com/
Standards-Version: 4.3.0.1
Vcs-Browser: https://repo.or.cz/w/git/debian.git/
Vcs-Git: https://repo.or.cz/r/git/debian.git/
Build-Depends: libz-dev, gettext, libpcre2-dev | libpcre3-dev, libcurl4-gnutls-dev, libexpat1-dev, subversion, libsvn-perl, libyaml-perl, tcl, python3, libhttp-date-perl | libtime-parsedate-perl, libcgi-pm-perl, liberror-perl, libmailtools-perl, cvs, cvsps, libdbd-sqlite3-perl, unzip, libio-pty-perl, debhelper-compat (= 10), dh-exec (>= 0.7), dh-apache2, dpkg-dev (>= 1.16.2~)
Build-Depends-Indep: asciidoc (>= 8.6.10), xmlto, docbook-xsl
Package-List:
git deb vcs optional arch=any
git-all deb vcs optional arch=all
git-cvs deb vcs optional arch=all
git-daemon-run deb vcs optional arch=all
git-daemon-sysvinit deb vcs optional arch=all
git-doc deb doc optional arch=all
git-email deb vcs optional arch=all
git-gui deb vcs optional arch=all
git-man deb doc optional arch=all
git-mediawiki deb vcs optional arch=all
git-svn deb vcs optional arch=all
gitk deb vcs optional arch=all
gitweb deb vcs optional arch=all
Checksums-Sha1:
b8f9760971bc16a0813bd66cb38e8582a59d4968 7346760 git_2.42.0.orig.tar.xz
56e44a820a26ff3297f445de507ba1fad42853d4 757596 git_2.42.0-1.debian.tar.xz
Checksums-Sha256:
3278210e9fd2994b8484dd7e3ddd9ea8b940ef52170cdb606daa94d887c93b0d 7346760 git_2.42.0.orig.tar.xz
db6b5bdacb87cd716453c8bdd5d5652da9f8c3b1be062ee3b2624056889103b4 757596 git_2.42.0-1.debian.tar.xz
Files:
e61c187f6863d5e977e60cdedf213ec0 7346760 git_2.42.0.orig.tar.xz
bb664cd6d3986e1b0f81f731134bc2b9 757596 git_2.42.0-1.debian.tar.xz
-----BEGIN PGP SIGNATURE-----
iQJHBAEBCAAxFiEEUh5Y8X6W1xKqD/EC38Zx7rMz+iUFAmUUdMoTHGpybmllZGVy
QGdtYWlsLmNvbQAKCRDfxnHuszP6JTIID/wP9S2jQt7Jh3uOJlbqCg6Ow9Gy7ir/
SceCustp0QUT7bZhLnkwvK0pEWb3BBfVGxcy+JFN0b+D++iMCCGWbyrJHPxQ4N66
YbFHdg6yZ8JUdbAmclhNYttSsSVI3Zet6Gvs+e+zLrNDHyHFiA/mqddJPQpsZJUj
6cAfKCW2x5IamriTdSuaePih6rqNkmmAuwhGWqm6+U8mZvMMQWrk6NjdPwgCIRe+
SKHJXRSGNzRqvFk1kn+gpe6wALPJgo8SIFuCq0KmA9PT0O339kaqJ1gLx94u4sXY
WexN3oYVCN2ZjGzj2JEPmIuzpFw8RF5h7n6PLRX9rBhtpjYITEvOLWvE2ELJHpA7
MloGVxnuiyGsGQ6c3LY6xxUD8rLxXJLcWwrFXDUhQ1MbLsMGFamN1Y1JWAAVzCzH
OycZQ28NCNDTpT91pXpfZUAeoJXYwnQ5uCAYcNkULz4vXpAB1CxLCAno46LzSMkT
kSDZKKTcZKK1DWAUiQWSG89TF5kZf/CU/6td5yAT4zxhXqGpdzkGiF5vO8SNHCL9
GAk2cjrg770ygavEsu3kWVK63JSLd5H5sNgPvy6KyfOdOgamFhuegJln90P8+/2t
ySZu+DAQnAs96peXCX7SETASDpAHki6kN+0V/DGSVIw+io5V9AL/krGZoygJRRkp
+VPvY8lRHWD0FQ==
=c2ny
-----END PGP SIGNATURE-----
gpgv: Signature made Wed Sep 27 18:30:34 2023 UTC
gpgv: using RSA key 521E58F17E96D712AA0FF102DFC671EEB333FA25
gpgv: issuer "jrnieder@gmail.com"
gpgv: Can't check signature: No public key
dpkg-source: warning: cannot verify inline signature for ./git_2.42.0-1.dsc: no acceptable signature found
dpkg-source: info: extracting git in /<<PKGBUILDDIR>>
dpkg-source: info: unpacking git_2.42.0.orig.tar.xz
dpkg-source: info: unpacking git_2.42.0-1.debian.tar.xz
Check disk space
----------------
Sufficient free space for build
User Environment
----------------
APT_CONFIG=/var/lib/sbuild/apt.conf
DEB_BUILD_OPTIONS=parallel=4
HOME=/sbuild-nonexistent
LANG=en_GB.UTF-8
LC_ALL=C.UTF-8
LOGNAME=buildd
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
SCHROOT_ALIAS_NAME=trixie-staging-armhf-sbuild
SCHROOT_CHROOT_NAME=trixie-staging-armhf-sbuild
SCHROOT_COMMAND=env
SCHROOT_GID=124
SCHROOT_GROUP=buildd
SCHROOT_SESSION_ID=trixie-staging-armhf-sbuild-2b1478a8-259d-4893-a7b3-c8838940c688
SCHROOT_UID=114
SCHROOT_USER=buildd
SHELL=/bin/sh
USER=buildd
dpkg-buildpackage
-----------------
Command: dpkg-buildpackage --sanitize-env -us -uc -mRaspbian pi5 test autobuilder <root@raspbian.org> -B -rfakeroot
dpkg-buildpackage: info: source package git
dpkg-buildpackage: info: source version 1:2.42.0-1
dpkg-buildpackage: info: source distribution unstable
dpkg-source --before-build .
dpkg-buildpackage: info: host architecture armhf
fakeroot debian/rules clean
dh clean --with apache2 --without autoreconf
debian/rules override_dh_auto_clean
/usr/bin/make -C contrib/mw-to-git clean NO_OPENSSL=1 prefix=/usr gitexecdir=/usr/lib/git-core mandir=/usr/share/man htmldir=/usr/share/doc/git/html INSTALLDIRS=vendor SANE_TOOL_PATH= INSTALL=install TAR=tar NO_CROSS_DIRECTORY_HARDLINKS=1 NO_INSTALL_HARDLINKS=1 NO_PERL_CPAN_FALLBACKS=1 PYTHON_PATH=/usr/bin/python3 DEFAULT_PAGER=pager DEFAULT_EDITOR=editor CC='gcc' CFLAGS='-Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' LDFLAGS='-Wl,-z,relro' HOST_CPU='arm' V=1 USE_LIBPCRE2=1
/usr/bin/make -C ../.. SCRIPT_PERL="contrib/mw-to-git//git-remote-mediawiki.perl contrib/mw-to-git//git-mw.perl" \
clean-perl-script
make[3]: Entering directory '/<<PKGBUILDDIR>>'
GIT_VERSION = 2.42.0
make[3]: Leaving directory '/<<PKGBUILDDIR>>'
make[3]: Entering directory '/<<PKGBUILDDIR>>'
rm -f contrib/mw-to-git//git-remote-mediawiki contrib/mw-to-git//git-mw
make[3]: Leaving directory '/<<PKGBUILDDIR>>'
/usr/bin/make -C contrib/subtree clean NO_OPENSSL=1 prefix=/usr gitexecdir=/usr/lib/git-core mandir=/usr/share/man htmldir=/usr/share/doc/git/html INSTALLDIRS=vendor SANE_TOOL_PATH= INSTALL=install TAR=tar NO_CROSS_DIRECTORY_HARDLINKS=1 NO_INSTALL_HARDLINKS=1 NO_PERL_CPAN_FALLBACKS=1 PYTHON_PATH=/usr/bin/python3 DEFAULT_PAGER=pager DEFAULT_EDITOR=editor CC='gcc' CFLAGS='-Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' LDFLAGS='-Wl,-z,relro' HOST_CPU='arm' V=1 USE_LIBPCRE2=1
/usr/bin/make -C ../../ GIT-VERSION-FILE
make[3]: 'GIT-VERSION-FILE' is up to date.
make[2]: Entering directory '/<<PKGBUILDDIR>>/contrib/subtree'
rm -f git-subtree
rm -f *.xml *.html *.1
make[2]: Leaving directory '/<<PKGBUILDDIR>>/contrib/subtree'
/usr/bin/make clean NO_OPENSSL=1 prefix=/usr gitexecdir=/usr/lib/git-core mandir=/usr/share/man htmldir=/usr/share/doc/git/html INSTALLDIRS=vendor SANE_TOOL_PATH= INSTALL=install TAR=tar NO_CROSS_DIRECTORY_HARDLINKS=1 NO_INSTALL_HARDLINKS=1 NO_PERL_CPAN_FALLBACKS=1 PYTHON_PATH=/usr/bin/python3 DEFAULT_PAGER=pager DEFAULT_EDITOR=editor CC='gcc' CFLAGS='-Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' LDFLAGS='-Wl,-z,relro' HOST_CPU='arm' V=1 USE_LIBPCRE2=1
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f gitweb/gitweb.cgi gitweb/static/gitweb.js gitweb/static/gitweb.min.js gitweb/static/gitweb.min.css gitweb/GITWEB-BUILD-OPTIONS
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f GIT-SPATCH-DEFINES
rm -f -r .build/contrib/coccinelle
rm -f contrib/coccinelle/*.cocci.patch
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f /<<PKGBUILDDIR>>/./*.gcda /<<PKGBUILDDIR>>/builtin/*.gcda /<<PKGBUILDDIR>>/compat/*.gcda /<<PKGBUILDDIR>>/compat/linux/*.gcda /<<PKGBUILDDIR>>/compat/simple-ipc/*.gcda /<<PKGBUILDDIR>>/ewah/*.gcda /<<PKGBUILDDIR>>/negotiator/*.gcda /<<PKGBUILDDIR>>/oss-fuzz/*.gcda /<<PKGBUILDDIR>>/refs/*.gcda /<<PKGBUILDDIR>>/reftable/*.gcda /<<PKGBUILDDIR>>/sha1dc/*.gcda /<<PKGBUILDDIR>>/sha256/block/*.gcda /<<PKGBUILDDIR>>/t/helper/*.gcda /<<PKGBUILDDIR>>/trace2/*.gcda /<<PKGBUILDDIR>>/xdiff/*.gcda
rm -f /<<PKGBUILDDIR>>/./*.gcno /<<PKGBUILDDIR>>/builtin/*.gcno /<<PKGBUILDDIR>>/compat/*.gcno /<<PKGBUILDDIR>>/compat/linux/*.gcno /<<PKGBUILDDIR>>/compat/simple-ipc/*.gcno /<<PKGBUILDDIR>>/ewah/*.gcno /<<PKGBUILDDIR>>/negotiator/*.gcno /<<PKGBUILDDIR>>/oss-fuzz/*.gcno /<<PKGBUILDDIR>>/refs/*.gcno /<<PKGBUILDDIR>>/reftable/*.gcno /<<PKGBUILDDIR>>/sha1dc/*.gcno /<<PKGBUILDDIR>>/sha256/block/*.gcno /<<PKGBUILDDIR>>/t/helper/*.gcno /<<PKGBUILDDIR>>/trace2/*.gcno /<<PKGBUILDDIR>>/xdiff/*.gcno
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f ./*.gcov builtin/*.gcov compat/*.gcov compat/linux/*.gcov compat/simple-ipc/*.gcov ewah/*.gcov negotiator/*.gcov oss-fuzz/*.gcov refs/*.gcov reftable/*.gcov sha1dc/*.gcov sha256/block/*.gcov t/helper/*.gcov trace2/*.gcov xdiff/*.gcov
rm -f ./*.gcda builtin/*.gcda compat/*.gcda compat/linux/*.gcda compat/simple-ipc/*.gcda ewah/*.gcda negotiator/*.gcda oss-fuzz/*.gcda refs/*.gcda reftable/*.gcda sha1dc/*.gcda sha256/block/*.gcda t/helper/*.gcda trace2/*.gcda xdiff/*.gcda
rm -f coverage-untested-functions
rm -f -r cover_db/
rm -f -r cover_db_html/
rm -f coverage-test.made
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f ./*.gcno builtin/*.gcno compat/*.gcno compat/linux/*.gcno compat/simple-ipc/*.gcno ewah/*.gcno negotiator/*.gcno oss-fuzz/*.gcno refs/*.gcno reftable/*.gcno sha1dc/*.gcno sha256/block/*.gcno t/helper/*.gcno trace2/*.gcno xdiff/*.gcno
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f -r .build
rm -f po/git.pot po/git-core.pot
rm -f git.res
rm -f abspath.o add-interactive.o add-patch.o advice.o alias.o alloc.o apply.o archive-tar.o archive-zip.o archive.o attr.o base85.o bisect.o blame.o blob.o bloom.o branch.o bulk-checkin.o bundle-uri.o bundle.o cache-tree.o cbtree.o chdir-notify.o checkout.o chunk-format.o color.o column.o combine-diff.o commit-graph.o commit-reach.o commit.o compat/nonblock.o compat/obstack.o compat/terminal.o compat/zlib-uncompress2.o config.o connect.o connected.o convert.o copy.o credential.o csum-file.o ctype.o date.o decorate.o delta-islands.o diagnose.o diff-delta.o diff-merges.o diff-lib.o diff-no-index.o diff.o diffcore-break.o diffcore-delta.o diffcore-order.o diffcore-pickaxe.o diffcore-rename.o diffcore-rotate.o dir-iterator.o dir.o editor.o entry.o environment.o ewah/bitmap.o ewah/ewah_bitmap.o ewah/ewah_io.o ewah/ewah_rlw.o exec-cmd.o fetch-negotiator.o fetch-pack.o fmt-merge-msg.o fsck.o fsmonitor.o fsmonitor-ipc.o fsmonitor-settings.o gettext.o git-zlib.o gpg-interface.o graph.o grep.o hash-lookup.o hashmap.o help.o hex.o hook.o ident.o json-writer.o kwset.o levenshtein.o line-log.o line-range.o linear-assignment.o list-objects-filter-options.o list-objects-filter.o list-objects.o lockfile.o log-tree.o ls-refs.o mailinfo.o mailmap.o match-trees.o mem-pool.o merge-blobs.o merge-ll.o merge-ort.o merge-ort-wrappers.o merge-recursive.o merge.o midx.o name-hash.o negotiator/default.o negotiator/noop.o negotiator/skipping.o notes-cache.o notes-merge.o notes-utils.o notes.o object-file.o object-name.o object.o oid-array.o oidmap.o oidset.o oidtree.o pack-bitmap-write.o pack-bitmap.o pack-check.o pack-mtimes.o pack-objects.o pack-revindex.o pack-write.o packfile.o pager.o parallel-checkout.o parse-options-cb.o parse-options.o patch-delta.o patch-ids.o path.o pathspec.o pkt-line.o preload-index.o pretty.o prio-queue.o progress.o promisor-remote.o prompt.o protocol.o protocol-caps.o prune-packed.o quote.o range-diff.o reachable.o read-cache.o rebase-interactive.o rebase.o ref-filter.o reflog-walk.o reflog.o refs.o refs/debug.o refs/files-backend.o refs/iterator.o refs/packed-backend.o refs/ref-cache.o refspec.o remote.o replace-object.o repo-settings.o repository.o rerere.o reset.o resolve-undo.o revision.o run-command.o send-pack.o sequencer.o serve.o server-info.o setup.o shallow.o sideband.o sigchain.o sparse-index.o split-index.o stable-qsort.o statinfo.o strbuf.o streaming.o string-list.o strmap.o strvec.o sub-process.o submodule-config.o submodule.o symlinks.o tag.o tempfile.o thread-utils.o tmp-objdir.o trace.o trace2.o trace2/tr2_cfg.o trace2/tr2_cmd_name.o trace2/tr2_ctr.o trace2/tr2_dst.o trace2/tr2_sid.o trace2/tr2_sysenv.o trace2/tr2_tbuf.o trace2/tr2_tgt_event.o trace2/tr2_tgt_normal.o trace2/tr2_tgt_perf.o trace2/tr2_tls.o trace2/tr2_tmr.o trailer.o transport-helper.o transport.o tree-diff.o tree-walk.o tree.o unpack-trees.o upload-pack.o url.o urlmatch.o usage.o userdiff.o utf8.o varint.o version.o versioncmp.o walker.o wildmatch.o worktree.o wrapper.o write-or-die.o ws.o wt-status.o xdiff-interface.o unix-socket.o unix-stream-server.o compat/simple-ipc/ipc-shared.o compat/simple-ipc/ipc-unix-socket.o sha1dc_git.o sha1dc/sha1.o sha1dc/ubc_check.o sha256/block/sha256.o compat/linux/procinfo.o compat/fopen.o compat/strlcpy.o compat/qsort_s.o builtin/add.o builtin/am.o builtin/annotate.o builtin/apply.o builtin/archive.o builtin/bisect.o builtin/blame.o builtin/branch.o builtin/bugreport.o builtin/bundle.o builtin/cat-file.o builtin/check-attr.o builtin/check-ignore.o builtin/check-mailmap.o builtin/check-ref-format.o builtin/checkout--worker.o builtin/checkout-index.o builtin/checkout.o builtin/clean.o builtin/clone.o builtin/column.o builtin/commit-graph.o builtin/commit-tree.o builtin/commit.o builtin/config.o builtin/count-objects.o builtin/credential-cache--daemon.o builtin/credential-cache.o builtin/credential-store.o builtin/credential.o builtin/describe.o builtin/diagnose.o builtin/diff-files.o builtin/diff-index.o builtin/diff-tree.o builtin/diff.o builtin/difftool.o builtin/fast-export.o builtin/fast-import.o builtin/fetch-pack.o builtin/fetch.o builtin/fmt-merge-msg.o builtin/for-each-ref.o builtin/for-each-repo.o builtin/fsck.o builtin/fsmonitor--daemon.o builtin/gc.o builtin/get-tar-commit-id.o builtin/grep.o builtin/hash-object.o builtin/help.o builtin/hook.o builtin/index-pack.o builtin/init-db.o builtin/interpret-trailers.o builtin/log.o builtin/ls-files.o builtin/ls-remote.o builtin/ls-tree.o builtin/mailinfo.o builtin/mailsplit.o builtin/merge-base.o builtin/merge-file.o builtin/merge-index.o builtin/merge-ours.o builtin/merge-recursive.o builtin/merge-tree.o builtin/merge.o builtin/mktag.o builtin/mktree.o builtin/multi-pack-index.o builtin/mv.o builtin/name-rev.o builtin/notes.o builtin/pack-objects.o builtin/pack-redundant.o builtin/pack-refs.o builtin/patch-id.o builtin/prune-packed.o builtin/prune.o builtin/pull.o builtin/push.o builtin/range-diff.o builtin/read-tree.o builtin/rebase.o builtin/receive-pack.o builtin/reflog.o builtin/remote-ext.o builtin/remote-fd.o builtin/remote.o builtin/repack.o builtin/replace.o builtin/rerere.o builtin/reset.o builtin/rev-list.o builtin/rev-parse.o builtin/revert.o builtin/rm.o builtin/send-pack.o builtin/shortlog.o builtin/show-branch.o builtin/show-index.o builtin/show-ref.o builtin/sparse-checkout.o builtin/stash.o builtin/stripspace.o builtin/submodule--helper.o builtin/symbolic-ref.o builtin/tag.o builtin/unpack-file.o builtin/unpack-objects.o builtin/update-index.o builtin/update-ref.o builtin/update-server-info.o builtin/upload-archive.o builtin/upload-pack.o builtin/var.o builtin/verify-commit.o builtin/verify-pack.o builtin/verify-tag.o builtin/worktree.o builtin/write-tree.o common-main.o git.o scalar.o daemon.o http-backend.o imap-send.o sh-i18n--envsubst.o shell.o http-fetch.o http-push.o t/helper/test-fake-ssh.o t/helper/test-tool.o t/helper/test-advise.o t/helper/test-bitmap.o t/helper/test-bloom.o t/helper/test-bundle-uri.o t/helper/test-cache-tree.o t/helper/test-chmtime.o t/helper/test-config.o t/helper/test-crontab.o t/helper/test-csprng.o t/helper/test-ctype.o t/helper/test-date.o t/helper/test-delta.o t/helper/test-dir-iterator.o t/helper/test-drop-caches.o t/helper/test-dump-cache-tree.o t/helper/test-dump-fsmonitor.o t/helper/test-dump-split-index.o t/helper/test-dump-untracked-cache.o t/helper/test-env-helper.o t/helper/test-example-decorate.o t/helper/test-fast-rebase.o t/helper/test-fsmonitor-client.o t/helper/test-genrandom.o t/helper/test-genzeros.o t/helper/test-getcwd.o t/helper/test-hash-speed.o t/helper/test-hash.o t/helper/test-hashmap.o t/helper/test-hexdump.o t/helper/test-index-version.o t/helper/test-json-writer.o t/helper/test-lazy-init-name-hash.o t/helper/test-match-trees.o t/helper/test-mergesort.o t/helper/test-mktemp.o t/helper/test-oid-array.o t/helper/test-oidmap.o t/helper/test-oidtree.o t/helper/test-online-cpus.o t/helper/test-pack-mtimes.o t/helper/test-parse-options.o t/helper/test-parse-pathspec-file.o t/helper/test-partial-clone.o t/helper/test-path-utils.o t/helper/test-pcre2-config.o t/helper/test-pkt-line.o t/helper/test-prio-queue.o t/helper/test-proc-receive.o t/helper/test-progress.o t/helper/test-reach.o t/helper/test-read-cache.o t/helper/test-read-graph.o t/helper/test-read-midx.o t/helper/test-ref-store.o t/helper/test-reftable.o t/helper/test-regex.o t/helper/test-rot13-filter.o t/helper/test-repository.o t/helper/test-revision-walking.o t/helper/test-run-command.o t/helper/test-scrap-cache-tree.o t/helper/test-serve-v2.o t/helper/test-sha1.o t/helper/test-sha256.o t/helper/test-sigchain.o t/helper/test-simple-ipc.o t/helper/test-strcmp-offset.o t/helper/test-string-list.o t/helper/test-submodule-config.o t/helper/test-submodule-nested-repo-config.o t/helper/test-submodule.o t/helper/test-subprocess.o t/helper/test-trace2.o t/helper/test-urlmatch-normalization.o t/helper/test-userdiff.o t/helper/test-wildmatch.o t/helper/test-windows-named-pipe.o t/helper/test-write-cache.o t/helper/test-xml-encode.o xdiff/xdiffi.o xdiff/xemit.o xdiff/xhistogram.o xdiff/xmerge.o xdiff/xpatience.o xdiff/xprepare.o xdiff/xutils.o oss-fuzz/fuzz-commit-graph.o oss-fuzz/fuzz-pack-headers.o oss-fuzz/fuzz-pack-idx.o reftable/basics.o reftable/error.o reftable/block.o reftable/blocksource.o reftable/iter.o reftable/publicbasics.o reftable/merged.o reftable/pq.o reftable/reader.o reftable/record.o reftable/refname.o reftable/generic.o reftable/stack.o reftable/tree.o reftable/writer.o reftable/basics_test.o reftable/block_test.o reftable/dump.o reftable/merged_test.o reftable/pq_test.o reftable/record_test.o reftable/readwrite_test.o reftable/refname_test.o reftable/stack_test.o reftable/test_framework.o reftable/tree_test.o http.o http-walker.o remote-curl.o
rm -f headless-git.o
rm -f libgit.a xdiff/lib.a reftable/libreftable.a reftable/libreftable_test.a
rm -f git-daemon git-http-backend git-imap-send git-sh-i18n--envsubst git-shell git-http-fetch git-http-push git-remote-http git-remote-https git-remote-ftp git-remote-ftps git-difftool--helper git-filter-branch git-merge-octopus git-merge-one-file git-merge-resolve git-mergetool git-quiltimport git-request-pull git-submodule git-web--browse git-archimport git-cvsexportcommit git-cvsimport git-cvsserver git-send-email git-svn git-p4 git-instaweb git-mergetool--lib git-sh-i18n git-sh-setup git-add git-am git-annotate git-apply git-archive git-bisect git-blame git-branch git-bugreport git-bundle git-cat-file git-check-attr git-check-ignore git-check-mailmap git-check-ref-format git-checkout--worker git-checkout-index git-checkout git-clean git-clone git-column git-commit-graph git-commit-tree git-commit git-config git-count-objects git-credential-cache--daemon git-credential-cache git-credential-store git-credential git-describe git-diagnose git-diff-files git-diff-index git-diff-tree git-diff git-difftool git-fast-export git-fast-import git-fetch-pack git-fetch git-fmt-merge-msg git-for-each-ref git-for-each-repo git-fsck git-fsmonitor--daemon git-gc git-get-tar-commit-id git-grep git-hash-object git-help git-hook git-index-pack git-init-db git-interpret-trailers git-log git-ls-files git-ls-remote git-ls-tree git-mailinfo git-mailsplit git-merge-base git-merge-file git-merge-index git-merge-ours git-merge-recursive git-merge-tree git-merge git-mktag git-mktree git-multi-pack-index git-mv git-name-rev git-notes git-pack-objects git-pack-redundant git-pack-refs git-patch-id git-prune-packed git-prune git-pull git-push git-range-diff git-read-tree git-rebase git-receive-pack git-reflog git-remote-ext git-remote-fd git-remote git-repack git-replace git-rerere git-reset git-rev-list git-rev-parse git-revert git-rm git-send-pack git-shortlog git-show-branch git-show-index git-show-ref git-sparse-checkout git-stash git-stripspace git-submodule--helper git-symbolic-ref git-tag git-unpack-file git-unpack-objects git-update-index git-update-ref git-update-server-info git-upload-archive git-upload-pack git-var git-verify-commit git-verify-pack git-verify-tag git-worktree git-write-tree git-cherry git-cherry-pick git-format-patch git-fsck-objects git-init git-maintenance git-merge-subtree git-restore git-show git-stage git-status git-switch git-version git-whatchanged git scalar
rm -f t/helper/test-fake-ssh t/helper/test-tool
rm -f oss-fuzz/fuzz-commit-graph oss-fuzz/fuzz-pack-headers oss-fuzz/fuzz-pack-idx
rm -f abspath.sp add-interactive.sp add-patch.sp advice.sp alias.sp alloc.sp apply.sp archive-tar.sp archive-zip.sp archive.sp attr.sp base85.sp bisect.sp blame.sp blob.sp bloom.sp branch.sp bulk-checkin.sp bundle-uri.sp bundle.sp cache-tree.sp cbtree.sp chdir-notify.sp checkout.sp chunk-format.sp color.sp column.sp combine-diff.sp commit-graph.sp commit-reach.sp commit.sp compat/nonblock.sp compat/obstack.sp compat/terminal.sp compat/zlib-uncompress2.sp config.sp connect.sp connected.sp convert.sp copy.sp credential.sp csum-file.sp ctype.sp date.sp decorate.sp delta-islands.sp diagnose.sp diff-delta.sp diff-merges.sp diff-lib.sp diff-no-index.sp diff.sp diffcore-break.sp diffcore-delta.sp diffcore-order.sp diffcore-pickaxe.sp diffcore-rename.sp diffcore-rotate.sp dir-iterator.sp dir.sp editor.sp entry.sp environment.sp ewah/bitmap.sp ewah/ewah_bitmap.sp ewah/ewah_io.sp ewah/ewah_rlw.sp exec-cmd.sp fetch-negotiator.sp fetch-pack.sp fmt-merge-msg.sp fsck.sp fsmonitor.sp fsmonitor-ipc.sp fsmonitor-settings.sp gettext.sp git-zlib.sp gpg-interface.sp graph.sp grep.sp hash-lookup.sp hashmap.sp help.sp hex.sp hook.sp ident.sp json-writer.sp kwset.sp levenshtein.sp line-log.sp line-range.sp linear-assignment.sp list-objects-filter-options.sp list-objects-filter.sp list-objects.sp lockfile.sp log-tree.sp ls-refs.sp mailinfo.sp mailmap.sp match-trees.sp mem-pool.sp merge-blobs.sp merge-ll.sp merge-ort.sp merge-ort-wrappers.sp merge-recursive.sp merge.sp midx.sp name-hash.sp negotiator/default.sp negotiator/noop.sp negotiator/skipping.sp notes-cache.sp notes-merge.sp notes-utils.sp notes.sp object-file.sp object-name.sp object.sp oid-array.sp oidmap.sp oidset.sp oidtree.sp pack-bitmap-write.sp pack-bitmap.sp pack-check.sp pack-mtimes.sp pack-objects.sp pack-revindex.sp pack-write.sp packfile.sp pager.sp parallel-checkout.sp parse-options-cb.sp parse-options.sp patch-delta.sp patch-ids.sp path.sp pathspec.sp pkt-line.sp preload-index.sp pretty.sp prio-queue.sp progress.sp promisor-remote.sp prompt.sp protocol.sp protocol-caps.sp prune-packed.sp quote.sp range-diff.sp reachable.sp read-cache.sp rebase-interactive.sp rebase.sp ref-filter.sp reflog-walk.sp reflog.sp refs.sp refs/debug.sp refs/files-backend.sp refs/iterator.sp refs/packed-backend.sp refs/ref-cache.sp refspec.sp remote.sp replace-object.sp repo-settings.sp repository.sp rerere.sp reset.sp resolve-undo.sp revision.sp run-command.sp send-pack.sp sequencer.sp serve.sp server-info.sp setup.sp shallow.sp sideband.sp sigchain.sp sparse-index.sp split-index.sp stable-qsort.sp statinfo.sp strbuf.sp streaming.sp string-list.sp strmap.sp strvec.sp sub-process.sp submodule-config.sp submodule.sp symlinks.sp tag.sp tempfile.sp thread-utils.sp tmp-objdir.sp trace.sp trace2.sp trace2/tr2_cfg.sp trace2/tr2_cmd_name.sp trace2/tr2_ctr.sp trace2/tr2_dst.sp trace2/tr2_sid.sp trace2/tr2_sysenv.sp trace2/tr2_tbuf.sp trace2/tr2_tgt_event.sp trace2/tr2_tgt_normal.sp trace2/tr2_tgt_perf.sp trace2/tr2_tls.sp trace2/tr2_tmr.sp trailer.sp transport-helper.sp transport.sp tree-diff.sp tree-walk.sp tree.sp unpack-trees.sp upload-pack.sp url.sp urlmatch.sp usage.sp userdiff.sp utf8.sp varint.sp version.sp versioncmp.sp walker.sp wildmatch.sp worktree.sp wrapper.sp write-or-die.sp ws.sp wt-status.sp xdiff-interface.sp unix-socket.sp unix-stream-server.sp compat/simple-ipc/ipc-shared.sp compat/simple-ipc/ipc-unix-socket.sp sha1dc_git.sp sha1dc/sha1.sp sha1dc/ubc_check.sp sha256/block/sha256.sp compat/linux/procinfo.sp compat/fopen.sp compat/strlcpy.sp compat/qsort_s.sp builtin/add.sp builtin/am.sp builtin/annotate.sp builtin/apply.sp builtin/archive.sp builtin/bisect.sp builtin/blame.sp builtin/branch.sp builtin/bugreport.sp builtin/bundle.sp builtin/cat-file.sp builtin/check-attr.sp builtin/check-ignore.sp builtin/check-mailmap.sp builtin/check-ref-format.sp builtin/checkout--worker.sp builtin/checkout-index.sp builtin/checkout.sp builtin/clean.sp builtin/clone.sp builtin/column.sp builtin/commit-graph.sp builtin/commit-tree.sp builtin/commit.sp builtin/config.sp builtin/count-objects.sp builtin/credential-cache--daemon.sp builtin/credential-cache.sp builtin/credential-store.sp builtin/credential.sp builtin/describe.sp builtin/diagnose.sp builtin/diff-files.sp builtin/diff-index.sp builtin/diff-tree.sp builtin/diff.sp builtin/difftool.sp builtin/fast-export.sp builtin/fast-import.sp builtin/fetch-pack.sp builtin/fetch.sp builtin/fmt-merge-msg.sp builtin/for-each-ref.sp builtin/for-each-repo.sp builtin/fsck.sp builtin/fsmonitor--daemon.sp builtin/gc.sp builtin/get-tar-commit-id.sp builtin/grep.sp builtin/hash-object.sp builtin/help.sp builtin/hook.sp builtin/index-pack.sp builtin/init-db.sp builtin/interpret-trailers.sp builtin/log.sp builtin/ls-files.sp builtin/ls-remote.sp builtin/ls-tree.sp builtin/mailinfo.sp builtin/mailsplit.sp builtin/merge-base.sp builtin/merge-file.sp builtin/merge-index.sp builtin/merge-ours.sp builtin/merge-recursive.sp builtin/merge-tree.sp builtin/merge.sp builtin/mktag.sp builtin/mktree.sp builtin/multi-pack-index.sp builtin/mv.sp builtin/name-rev.sp builtin/notes.sp builtin/pack-objects.sp builtin/pack-redundant.sp builtin/pack-refs.sp builtin/patch-id.sp builtin/prune-packed.sp builtin/prune.sp builtin/pull.sp builtin/push.sp builtin/range-diff.sp builtin/read-tree.sp builtin/rebase.sp builtin/receive-pack.sp builtin/reflog.sp builtin/remote-ext.sp builtin/remote-fd.sp builtin/remote.sp builtin/repack.sp builtin/replace.sp builtin/rerere.sp builtin/reset.sp builtin/rev-list.sp builtin/rev-parse.sp builtin/revert.sp builtin/rm.sp builtin/send-pack.sp builtin/shortlog.sp builtin/show-branch.sp builtin/show-index.sp builtin/show-ref.sp builtin/sparse-checkout.sp builtin/stash.sp builtin/stripspace.sp builtin/submodule--helper.sp builtin/symbolic-ref.sp builtin/tag.sp builtin/unpack-file.sp builtin/unpack-objects.sp builtin/update-index.sp builtin/update-ref.sp builtin/update-server-info.sp builtin/upload-archive.sp builtin/upload-pack.sp builtin/var.sp builtin/verify-commit.sp builtin/verify-pack.sp builtin/verify-tag.sp builtin/worktree.sp builtin/write-tree.sp common-main.sp git.sp scalar.sp daemon.sp http-backend.sp imap-send.sp sh-i18n--envsubst.sp shell.sp http-fetch.sp http-push.sp t/helper/test-fake-ssh.sp t/helper/test-tool.sp t/helper/test-advise.sp t/helper/test-bitmap.sp t/helper/test-bloom.sp t/helper/test-bundle-uri.sp t/helper/test-cache-tree.sp t/helper/test-chmtime.sp t/helper/test-config.sp t/helper/test-crontab.sp t/helper/test-csprng.sp t/helper/test-ctype.sp t/helper/test-date.sp t/helper/test-delta.sp t/helper/test-dir-iterator.sp t/helper/test-drop-caches.sp t/helper/test-dump-cache-tree.sp t/helper/test-dump-fsmonitor.sp t/helper/test-dump-split-index.sp t/helper/test-dump-untracked-cache.sp t/helper/test-env-helper.sp t/helper/test-example-decorate.sp t/helper/test-fast-rebase.sp t/helper/test-fsmonitor-client.sp t/helper/test-genrandom.sp t/helper/test-genzeros.sp t/helper/test-getcwd.sp t/helper/test-hash-speed.sp t/helper/test-hash.sp t/helper/test-hashmap.sp t/helper/test-hexdump.sp t/helper/test-index-version.sp t/helper/test-json-writer.sp t/helper/test-lazy-init-name-hash.sp t/helper/test-match-trees.sp t/helper/test-mergesort.sp t/helper/test-mktemp.sp t/helper/test-oid-array.sp t/helper/test-oidmap.sp t/helper/test-oidtree.sp t/helper/test-online-cpus.sp t/helper/test-pack-mtimes.sp t/helper/test-parse-options.sp t/helper/test-parse-pathspec-file.sp t/helper/test-partial-clone.sp t/helper/test-path-utils.sp t/helper/test-pcre2-config.sp t/helper/test-pkt-line.sp t/helper/test-prio-queue.sp t/helper/test-proc-receive.sp t/helper/test-progress.sp t/helper/test-reach.sp t/helper/test-read-cache.sp t/helper/test-read-graph.sp t/helper/test-read-midx.sp t/helper/test-ref-store.sp t/helper/test-reftable.sp t/helper/test-regex.sp t/helper/test-rot13-filter.sp t/helper/test-repository.sp t/helper/test-revision-walking.sp t/helper/test-run-command.sp t/helper/test-scrap-cache-tree.sp t/helper/test-serve-v2.sp t/helper/test-sha1.sp t/helper/test-sha256.sp t/helper/test-sigchain.sp t/helper/test-simple-ipc.sp t/helper/test-strcmp-offset.sp t/helper/test-string-list.sp t/helper/test-submodule-config.sp t/helper/test-submodule-nested-repo-config.sp t/helper/test-submodule.sp t/helper/test-subprocess.sp t/helper/test-trace2.sp t/helper/test-urlmatch-normalization.sp t/helper/test-userdiff.sp t/helper/test-wildmatch.sp t/helper/test-windows-named-pipe.sp t/helper/test-write-cache.sp t/helper/test-xml-encode.sp xdiff/xdiffi.sp xdiff/xemit.sp xdiff/xhistogram.sp xdiff/xmerge.sp xdiff/xpatience.sp xdiff/xprepare.sp xdiff/xutils.sp oss-fuzz/fuzz-commit-graph.sp oss-fuzz/fuzz-pack-headers.sp oss-fuzz/fuzz-pack-idx.sp reftable/basics.sp reftable/error.sp reftable/block.sp reftable/blocksource.sp reftable/iter.sp reftable/publicbasics.sp reftable/merged.sp reftable/pq.sp reftable/reader.sp reftable/record.sp reftable/refname.sp reftable/generic.sp reftable/stack.sp reftable/tree.sp reftable/writer.sp reftable/basics_test.sp reftable/block_test.sp reftable/dump.sp reftable/merged_test.sp reftable/pq_test.sp reftable/record_test.sp reftable/readwrite_test.sp reftable/refname_test.sp reftable/stack_test.sp reftable/test_framework.sp reftable/tree_test.sp http.sp http-walker.sp remote-curl.sp
rm -f abspath.hcc add-interactive.hcc advice.hcc alias.hcc alloc.hcc apply.hcc archive.hcc attr.hcc banned.hcc base85.hcc bisect.hcc blame.hcc blob.hcc block-sha1/sha1.hcc bloom.hcc branch.hcc builtin.hcc bulk-checkin.hcc bundle-uri.hcc bundle.hcc cache-tree.hcc cbtree.hcc chdir-notify.hcc checkout.hcc chunk-format.hcc color.hcc column.hcc commit-graph.hcc commit-reach.hcc commit-slab-decl.hcc commit-slab-impl.hcc commit-slab.hcc commit.hcc config.hcc connect.hcc connected.hcc convert.hcc copy.hcc credential.hcc csum-file.hcc date.hcc decorate.hcc delta-islands.hcc delta.hcc diagnose.hcc diff-merges.hcc diff.hcc diffcore.hcc dir-iterator.hcc dir.hcc editor.hcc entry.hcc environment.hcc ewah/ewok.hcc ewah/ewok_rlw.hcc exec-cmd.hcc fetch-negotiator.hcc fetch-pack.hcc fmt-merge-msg.hcc fsck.hcc fsmonitor--daemon.hcc fsmonitor-ipc.hcc fsmonitor-ll.hcc fsmonitor-path-utils.hcc fsmonitor-settings.hcc fsmonitor.hcc gettext.hcc git-compat-util.hcc git-curl-compat.hcc git-zlib.hcc gpg-interface.hcc graph.hcc grep.hcc hash-ll.hcc hash-lookup.hcc hash.hcc hashmap.hcc help.hcc hex.hcc hook.hcc http.hcc ident.hcc iterator.hcc json-writer.hcc khash.hcc kwset.hcc levenshtein.hcc line-log.hcc line-range.hcc linear-assignment.hcc list-objects-filter-options.hcc list-objects-filter.hcc list-objects.hcc list.hcc lockfile.hcc log-tree.hcc ls-refs.hcc mailinfo.hcc mailmap.hcc match-trees.hcc mem-pool.hcc merge-blobs.hcc merge-ll.hcc merge-ort-wrappers.hcc merge-ort.hcc merge-recursive.hcc merge.hcc mergesort.hcc midx.hcc name-hash.hcc negotiator/default.hcc negotiator/noop.hcc negotiator/skipping.hcc notes-cache.hcc notes-merge.hcc notes-utils.hcc notes.hcc object-file.hcc object-name.hcc object-store-ll.hcc object-store.hcc object.hcc oid-array.hcc oidmap.hcc oidset.hcc oidtree.hcc pack-bitmap.hcc pack-mtimes.hcc pack-objects.hcc pack-revindex.hcc pack.hcc packfile.hcc pager.hcc parallel-checkout.hcc parse-options.hcc patch-ids.hcc path.hcc pathspec.hcc pkt-line.hcc preload-index.hcc pretty.hcc prio-queue.hcc progress.hcc promisor-remote.hcc prompt.hcc protocol-caps.hcc protocol.hcc prune-packed.hcc quote.hcc range-diff.hcc reachable.hcc read-cache-ll.hcc read-cache.hcc rebase-interactive.hcc rebase.hcc ref-filter.hcc reflog-walk.hcc reflog.hcc refs.hcc refs/packed-backend.hcc refs/ref-cache.hcc refs/refs-internal.hcc refspec.hcc reftable/basics.hcc reftable/block.hcc reftable/blocksource.hcc reftable/constants.hcc reftable/generic.hcc reftable/iter.hcc reftable/merged.hcc reftable/pq.hcc reftable/reader.hcc reftable/record.hcc reftable/refname.hcc reftable/reftable-blocksource.hcc reftable/reftable-error.hcc reftable/reftable-generic.hcc reftable/reftable-iterator.hcc reftable/reftable-malloc.hcc reftable/reftable-merged.hcc reftable/reftable-reader.hcc reftable/reftable-record.hcc reftable/reftable-stack.hcc reftable/reftable-tests.hcc reftable/reftable-writer.hcc reftable/stack.hcc reftable/system.hcc reftable/test_framework.hcc reftable/tree.hcc reftable/writer.hcc remote.hcc replace-object.hcc repository.hcc rerere.hcc reset.hcc resolve-undo.hcc revision.hcc run-command.hcc sane-ctype.hcc send-pack.hcc sequencer.hcc serve.hcc server-info.hcc setup.hcc sha1dc/sha1.hcc sha1dc/ubc_check.hcc sha1dc_git.hcc sha256/block/sha256.hcc shallow.hcc shortlog.hcc sideband.hcc sigchain.hcc simple-ipc.hcc sparse-index.hcc split-index.hcc statinfo.hcc strbuf.hcc streaming.hcc string-list.hcc strmap.hcc strvec.hcc sub-process.hcc submodule-config.hcc submodule.hcc symlinks.hcc t/helper/test-tool-utils.hcc t/helper/test-tool.hcc tag.hcc tar.hcc tempfile.hcc thread-utils.hcc tmp-objdir.hcc trace.hcc trace2.hcc trace2/tr2_cfg.hcc trace2/tr2_cmd_name.hcc trace2/tr2_ctr.hcc trace2/tr2_dst.hcc trace2/tr2_sid.hcc trace2/tr2_sysenv.hcc trace2/tr2_tbuf.hcc trace2/tr2_tgt.hcc trace2/tr2_tls.hcc trace2/tr2_tmr.hcc trailer.hcc transport-internal.hcc transport.hcc tree-walk.hcc tree.hcc unix-socket.hcc unix-stream-server.hcc unpack-trees.hcc upload-pack.hcc url.hcc urlmatch.hcc userdiff.hcc utf8.hcc varint.hcc version.hcc versioncmp.hcc walker.hcc wildmatch.hcc worktree.hcc wrapper.hcc write-or-die.hcc ws.hcc wt-status.hcc xdiff-interface.hcc
rm -f -r bin-wrappers ./.depend builtin/.depend compat/.depend compat/linux/.depend compat/simple-ipc/.depend ewah/.depend negotiator/.depend oss-fuzz/.depend refs/.depend reftable/.depend sha1dc/.depend sha256/block/.depend t/helper/.depend trace2/.depend xdiff/.depend compile_commands compile_commands.json
rm -f -r po/build/
rm -f *.pyc *.pyo */*.pyc */*.pyo command-list.h config-list.h hook-list.h TAGS tags cscope*
rm -f -r .dist-tmp-dir .doc-tmp-dir
rm -f git-2.42.0.tar.gz
rm -f git-htmldocs-2.42.0.tar.gz git-manpages-2.42.0.tar.gz
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
/usr/bin/make -C Documentation/ clean
make[3]: Entering directory '/<<PKGBUILDDIR>>/Documentation'
make[3]: git: No such file or directory
make[3]: Leaving directory '/<<PKGBUILDDIR>>/Documentation'
make[3]: Entering directory '/<<PKGBUILDDIR>>/Documentation'
rm -f -rf .build/
rm -f *.xml *.xml+ *.html *.html+ *.1 *.5 *.7
rm -f *.texi *.texi+ *.texi++ git.info gitman.info
rm -f *.pdf
rm -f howto-index.txt howto/*.html doc.dep
rm -f technical/*.html technical/api-index.txt
rm -f SubmittingPatches.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-guide.txt cmds-developerinterfaces.txt cmds-userinterfaces.txt cmds-purehelpers.txt cmds-foreignscminterface.txt mergetools-diff.txt mergetools-merge.txt *.made
rm -f GIT-ASCIIDOCFLAGS
make[3]: Leaving directory '/<<PKGBUILDDIR>>/Documentation'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f Documentation/GIT-EXCLUDED-PROGRAMS
rm -f -r perl/build/
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
/usr/bin/make -C templates/ clean
make[3]: Entering directory '/<<PKGBUILDDIR>>/templates'
rm -f -r blt boilerplates.made
make[3]: Leaving directory '/<<PKGBUILDDIR>>/templates'
/usr/bin/make -C t/ clean
make[3]: Entering directory '/<<PKGBUILDDIR>>/t'
rm -f -r 'chainlinttmp'
make[3]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[3]: Entering directory '/<<PKGBUILDDIR>>/t'
rm -f -r 'trash directory'.*
rm -f -r valgrind/bin
make[3]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[3]: Entering directory '/<<PKGBUILDDIR>>/t'
rm -f -r 'test-results'
rm -f .prove
make[3]: Leaving directory '/<<PKGBUILDDIR>>/t'
/usr/bin/make -C gitk-git clean
make[3]: Entering directory '/<<PKGBUILDDIR>>/gitk-git'
rm -f gitk-wish po/*.msg GIT-TCLTK-VARS
make[3]: Leaving directory '/<<PKGBUILDDIR>>/gitk-git'
/usr/bin/make -C git-gui clean
make[3]: Entering directory '/<<PKGBUILDDIR>>/git-gui'
rm -rf git-gui lib/tclIndex po/*.msg
rm -rf GIT-VERSION-FILE GIT-GUI-VARS
make[3]: Leaving directory '/<<PKGBUILDDIR>>/git-gui'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f GIT-VERSION-FILE GIT-CFLAGS GIT-LDFLAGS GIT-BUILD-OPTIONS
rm -f GIT-USER-AGENT GIT-PREFIX
rm -f GIT-SCRIPT-DEFINES GIT-PERL-DEFINES GIT-PERL-HEADER GIT-PYTHON-VARS
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[1]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-subtree
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
debian/rules override_dh_clean
make[1]: Entering directory '/<<PKGBUILDDIR>>'
dh_clean -Xmailinfo.c.orig
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
debian/rules build-arch
dh build-arch --with apache2 --without autoreconf
dh_update_autotools_config -a
debian/rules override_dh_auto_build-arch
make[1]: Entering directory '/<<PKGBUILDDIR>>'
gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/12/lto-wrapper
Target: arm-linux-gnueabihf
Configured with: ../src/configure -v --with-pkgversion='Raspbian 12.2.0-14+rpi1' --with-bugurl=file:///usr/share/doc/gcc-12/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-12 --program-prefix=arm-linux-gnueabihf- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libquadmath --disable-libquadmath-support --enable-plugin --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-sjlj-exceptions --with-arch=armv6+fp --with-float=hard --disable-werror --enable-checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 12.2.0 (Raspbian 12.2.0-14+rpi1)
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
/usr/bin/make all NO_OPENSSL=1 prefix=/usr gitexecdir=/usr/lib/git-core mandir=/usr/share/man htmldir=/usr/share/doc/git/html INSTALLDIRS=vendor SANE_TOOL_PATH= INSTALL=install TAR=tar NO_CROSS_DIRECTORY_HARDLINKS=1 NO_INSTALL_HARDLINKS=1 NO_PERL_CPAN_FALLBACKS=1 PYTHON_PATH=/usr/bin/python3 DEFAULT_PAGER=pager DEFAULT_EDITOR=editor CC='gcc' CFLAGS='-Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' LDFLAGS='-Wl,-z,relro' HOST_CPU='arm' V=1 USE_LIBPCRE2=1
make[2]: Entering directory '/<<PKGBUILDDIR>>'
GIT_VERSION = 2.42.0
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
* new build flags
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o oss-fuzz/fuzz-pack-headers.o -c -MF oss-fuzz/.depend/fuzz-pack-headers.o.d -MQ oss-fuzz/fuzz-pack-headers.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' oss-fuzz/fuzz-pack-headers.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o oss-fuzz/fuzz-pack-idx.o -c -MF oss-fuzz/.depend/fuzz-pack-idx.o.d -MQ oss-fuzz/fuzz-pack-idx.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' oss-fuzz/fuzz-pack-idx.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o oss-fuzz/fuzz-commit-graph.o -c -MF oss-fuzz/.depend/fuzz-commit-graph.o.d -MQ oss-fuzz/fuzz-commit-graph.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' oss-fuzz/fuzz-commit-graph.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
* new link flags
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o common-main.o -c -MF ./.depend/common-main.o.d -MQ common-main.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' common-main.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o abspath.o -c -MF ./.depend/abspath.o.d -MQ abspath.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' abspath.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o advice.o -c -MF ./.depend/advice.o.d -MQ advice.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' advice.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o alias.o -c -MF ./.depend/alias.o.d -MQ alias.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' alias.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o add-interactive.o -c -MF ./.depend/add-interactive.o.d -MQ add-interactive.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' add-interactive.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o daemon.o -c -MF ./.depend/daemon.o.d -MQ daemon.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' daemon.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o alloc.o -c -MF ./.depend/alloc.o.d -MQ alloc.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' alloc.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o archive-tar.o -c -MF ./.depend/archive-tar.o.d -MQ archive-tar.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' archive-tar.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o archive-zip.o -c -MF ./.depend/archive-zip.o.d -MQ archive-zip.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' archive-zip.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
* new prefix flags
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o add-patch.o -c -MF ./.depend/add-patch.o.d -MQ add-patch.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' add-patch.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o base85.o -c -MF ./.depend/base85.o.d -MQ base85.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' base85.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o archive.o -c -MF ./.depend/archive.o.d -MQ archive.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' archive.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o blob.o -c -MF ./.depend/blob.o.d -MQ blob.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' blob.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o bloom.o -c -MF ./.depend/bloom.o.d -MQ bloom.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' bloom.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o bisect.o -c -MF ./.depend/bisect.o.d -MQ bisect.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' bisect.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o bulk-checkin.o -c -MF ./.depend/bulk-checkin.o.d -MQ bulk-checkin.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' bulk-checkin.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o branch.o -c -MF ./.depend/branch.o.d -MQ branch.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' branch.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o bundle-uri.o -c -MF ./.depend/bundle-uri.o.d -MQ bundle-uri.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' bundle-uri.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o bundle.o -c -MF ./.depend/bundle.o.d -MQ bundle.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' bundle.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o blame.o -c -MF ./.depend/blame.o.d -MQ blame.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' blame.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o cbtree.o -c -MF ./.depend/cbtree.o.d -MQ cbtree.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' cbtree.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o chdir-notify.o -c -MF ./.depend/chdir-notify.o.d -MQ chdir-notify.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' chdir-notify.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o checkout.o -c -MF ./.depend/checkout.o.d -MQ checkout.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' checkout.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o chunk-format.o -c -MF ./.depend/chunk-format.o.d -MQ chunk-format.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' chunk-format.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o cache-tree.o -c -MF ./.depend/cache-tree.o.d -MQ cache-tree.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' cache-tree.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o color.o -c -MF ./.depend/color.o.d -MQ color.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' color.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o column.o -c -MF ./.depend/column.o.d -MQ column.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' column.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o apply.o -c -MF ./.depend/apply.o.d -MQ apply.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' apply.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o commit-reach.o -c -MF ./.depend/commit-reach.o.d -MQ commit-reach.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' commit-reach.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o compat/nonblock.o -c -MF compat/.depend/nonblock.o.d -MQ compat/nonblock.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' compat/nonblock.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o compat/obstack.o -c -MF compat/.depend/obstack.o.d -MQ compat/obstack.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' compat/obstack.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o combine-diff.o -c -MF ./.depend/combine-diff.o.d -MQ combine-diff.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' combine-diff.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o compat/zlib-uncompress2.o -c -MF compat/.depend/zlib-uncompress2.o.d -MQ compat/zlib-uncompress2.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' compat/zlib-uncompress2.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o compat/terminal.o -c -MF compat/.depend/terminal.o.d -MQ compat/terminal.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' compat/terminal.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o commit.o -c -MF ./.depend/commit.o.d -MQ commit.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' commit.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o connected.o -c -MF ./.depend/connected.o.d -MQ connected.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' connected.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o commit-graph.o -c -MF ./.depend/commit-graph.o.d -MQ commit-graph.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' commit-graph.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o copy.o -c -MF ./.depend/copy.o.d -MQ copy.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' copy.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o connect.o -c -MF ./.depend/connect.o.d -MQ connect.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' connect.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o csum-file.o -c -MF ./.depend/csum-file.o.d -MQ csum-file.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' csum-file.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o credential.o -c -MF ./.depend/credential.o.d -MQ credential.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' credential.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o ctype.o -c -MF ./.depend/ctype.o.d -MQ ctype.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' ctype.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o decorate.o -c -MF ./.depend/decorate.o.d -MQ decorate.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' decorate.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o convert.o -c -MF ./.depend/convert.o.d -MQ convert.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' convert.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o diagnose.o -c -MF ./.depend/diagnose.o.d -MQ diagnose.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' diagnose.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o date.o -c -MF ./.depend/date.o.d -MQ date.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' date.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o diff-delta.o -c -MF ./.depend/diff-delta.o.d -MQ diff-delta.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' diff-delta.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o delta-islands.o -c -MF ./.depend/delta-islands.o.d -MQ delta-islands.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' delta-islands.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o diff-merges.o -c -MF ./.depend/diff-merges.o.d -MQ diff-merges.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' diff-merges.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o config.o -c -MF ./.depend/config.o.d -MQ config.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' -DETC_GITCONFIG='"/etc/gitconfig"' config.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o diffcore-break.o -c -MF ./.depend/diffcore-break.o.d -MQ diffcore-break.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' diffcore-break.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o diff-no-index.o -c -MF ./.depend/diff-no-index.o.d -MQ diff-no-index.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' diff-no-index.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o diffcore-delta.o -c -MF ./.depend/diffcore-delta.o.d -MQ diffcore-delta.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' diffcore-delta.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o diffcore-order.o -c -MF ./.depend/diffcore-order.o.d -MQ diffcore-order.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' diffcore-order.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o diff-lib.o -c -MF ./.depend/diff-lib.o.d -MQ diff-lib.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' diff-lib.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o diffcore-rotate.o -c -MF ./.depend/diffcore-rotate.o.d -MQ diffcore-rotate.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' diffcore-rotate.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o diffcore-pickaxe.o -c -MF ./.depend/diffcore-pickaxe.o.d -MQ diffcore-pickaxe.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' diffcore-pickaxe.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o dir-iterator.o -c -MF ./.depend/dir-iterator.o.d -MQ dir-iterator.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' dir-iterator.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o editor.o -c -MF ./.depend/editor.o.d -MQ editor.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' editor.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o diffcore-rename.o -c -MF ./.depend/diffcore-rename.o.d -MQ diffcore-rename.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' diffcore-rename.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o entry.o -c -MF ./.depend/entry.o.d -MQ entry.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' entry.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o environment.o -c -MF ./.depend/environment.o.d -MQ environment.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' environment.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o ewah/bitmap.o -c -MF ewah/.depend/bitmap.o.d -MQ ewah/bitmap.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' ewah/bitmap.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o ewah/ewah_io.o -c -MF ewah/.depend/ewah_io.o.d -MQ ewah/ewah_io.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' ewah/ewah_io.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o ewah/ewah_rlw.o -c -MF ewah/.depend/ewah_rlw.o.d -MQ ewah/ewah_rlw.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' ewah/ewah_rlw.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o ewah/ewah_bitmap.o -c -MF ewah/.depend/ewah_bitmap.o.d -MQ ewah/ewah_bitmap.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' ewah/ewah_bitmap.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o fetch-negotiator.o -c -MF ./.depend/fetch-negotiator.o.d -MQ fetch-negotiator.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' fetch-negotiator.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o exec-cmd.o -c -MF ./.depend/exec-cmd.o.d -MQ exec-cmd.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' '-DGIT_EXEC_PATH="/usr/lib/git-core"' '-DGIT_LOCALE_PATH="share/locale"' '-DBINDIR="bin"' '-DFALLBACK_RUNTIME_PREFIX="/usr"' exec-cmd.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o dir.o -c -MF ./.depend/dir.o.d -MQ dir.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' dir.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o fmt-merge-msg.o -c -MF ./.depend/fmt-merge-msg.o.d -MQ fmt-merge-msg.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' fmt-merge-msg.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o fsmonitor.o -c -MF ./.depend/fsmonitor.o.d -MQ fsmonitor.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' fsmonitor.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o fsmonitor-ipc.o -c -MF ./.depend/fsmonitor-ipc.o.d -MQ fsmonitor-ipc.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' fsmonitor-ipc.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o fsmonitor-settings.o -c -MF ./.depend/fsmonitor-settings.o.d -MQ fsmonitor-settings.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' fsmonitor-settings.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o gettext.o -c -MF ./.depend/gettext.o.d -MQ gettext.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' -DGIT_LOCALE_PATH='"share/locale"' gettext.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o fsck.o -c -MF ./.depend/fsck.o.d -MQ fsck.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' fsck.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o fetch-pack.o -c -MF ./.depend/fetch-pack.o.d -MQ fetch-pack.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' fetch-pack.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o git-zlib.o -c -MF ./.depend/git-zlib.o.d -MQ git-zlib.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' git-zlib.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o gpg-interface.o -c -MF ./.depend/gpg-interface.o.d -MQ gpg-interface.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' gpg-interface.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o graph.o -c -MF ./.depend/graph.o.d -MQ graph.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' graph.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o hash-lookup.o -c -MF ./.depend/hash-lookup.o.d -MQ hash-lookup.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' hash-lookup.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
/bin/sh ./generate-cmdlist.sh \
\
command-list.txt >command-list.h
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o hex.o -c -MF ./.depend/hex.o.d -MQ hex.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' hex.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o hashmap.o -c -MF ./.depend/hashmap.o.d -MQ hashmap.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' hashmap.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o hook.o -c -MF ./.depend/hook.o.d -MQ hook.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' hook.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o grep.o -c -MF ./.depend/grep.o.d -MQ grep.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' grep.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o ident.o -c -MF ./.depend/ident.o.d -MQ ident.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' ident.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o json-writer.o -c -MF ./.depend/json-writer.o.d -MQ json-writer.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' json-writer.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o levenshtein.o -c -MF ./.depend/levenshtein.o.d -MQ levenshtein.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' levenshtein.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o line-range.o -c -MF ./.depend/line-range.o.d -MQ line-range.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' line-range.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o diff.o -c -MF ./.depend/diff.o.d -MQ diff.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' diff.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o linear-assignment.o -c -MF ./.depend/linear-assignment.o.d -MQ linear-assignment.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' linear-assignment.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o kwset.o -c -MF ./.depend/kwset.o.d -MQ kwset.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' kwset.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o list-objects-filter-options.o -c -MF ./.depend/list-objects-filter-options.o.d -MQ list-objects-filter-options.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' list-objects-filter-options.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o line-log.o -c -MF ./.depend/line-log.o.d -MQ line-log.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' line-log.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o lockfile.o -c -MF ./.depend/lockfile.o.d -MQ lockfile.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' lockfile.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o list-objects.o -c -MF ./.depend/list-objects.o.d -MQ list-objects.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' list-objects.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o list-objects-filter.o -c -MF ./.depend/list-objects-filter.o.d -MQ list-objects-filter.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' list-objects-filter.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o ls-refs.o -c -MF ./.depend/ls-refs.o.d -MQ ls-refs.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' ls-refs.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o mailmap.o -c -MF ./.depend/mailmap.o.d -MQ mailmap.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' mailmap.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o match-trees.o -c -MF ./.depend/match-trees.o.d -MQ match-trees.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' match-trees.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o mem-pool.o -c -MF ./.depend/mem-pool.o.d -MQ mem-pool.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' mem-pool.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o log-tree.o -c -MF ./.depend/log-tree.o.d -MQ log-tree.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' log-tree.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o merge-blobs.o -c -MF ./.depend/merge-blobs.o.d -MQ merge-blobs.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' merge-blobs.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o merge-ort-wrappers.o -c -MF ./.depend/merge-ort-wrappers.o.d -MQ merge-ort-wrappers.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' merge-ort-wrappers.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o merge-ll.o -c -MF ./.depend/merge-ll.o.d -MQ merge-ll.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' merge-ll.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o mailinfo.o -c -MF ./.depend/mailinfo.o.d -MQ mailinfo.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' mailinfo.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o merge.o -c -MF ./.depend/merge.o.d -MQ merge.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' merge.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o name-hash.o -c -MF ./.depend/name-hash.o.d -MQ name-hash.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' name-hash.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o negotiator/default.o -c -MF negotiator/.depend/default.o.d -MQ negotiator/default.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' negotiator/default.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o negotiator/noop.o -c -MF negotiator/.depend/noop.o.d -MQ negotiator/noop.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' negotiator/noop.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o negotiator/skipping.o -c -MF negotiator/.depend/skipping.o.d -MQ negotiator/skipping.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' negotiator/skipping.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o notes-cache.o -c -MF ./.depend/notes-cache.o.d -MQ notes-cache.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' notes-cache.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o midx.o -c -MF ./.depend/midx.o.d -MQ midx.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' midx.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o notes-utils.o -c -MF ./.depend/notes-utils.o.d -MQ notes-utils.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' notes-utils.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o notes-merge.o -c -MF ./.depend/notes-merge.o.d -MQ notes-merge.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' notes-merge.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o merge-recursive.o -c -MF ./.depend/merge-recursive.o.d -MQ merge-recursive.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' merge-recursive.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o notes.o -c -MF ./.depend/notes.o.d -MQ notes.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' notes.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o merge-ort.o -c -MF ./.depend/merge-ort.o.d -MQ merge-ort.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' merge-ort.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o oid-array.o -c -MF ./.depend/oid-array.o.d -MQ oid-array.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' oid-array.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o object.o -c -MF ./.depend/object.o.d -MQ object.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' object.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o oidmap.o -c -MF ./.depend/oidmap.o.d -MQ oidmap.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' oidmap.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o oidtree.o -c -MF ./.depend/oidtree.o.d -MQ oidtree.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' oidtree.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o object-name.o -c -MF ./.depend/object-name.o.d -MQ object-name.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' object-name.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o oidset.o -c -MF ./.depend/oidset.o.d -MQ oidset.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' oidset.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o pack-check.o -c -MF ./.depend/pack-check.o.d -MQ pack-check.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' pack-check.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o pack-mtimes.o -c -MF ./.depend/pack-mtimes.o.d -MQ pack-mtimes.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' pack-mtimes.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o object-file.o -c -MF ./.depend/object-file.o.d -MQ object-file.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' object-file.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o pack-bitmap-write.o -c -MF ./.depend/pack-bitmap-write.o.d -MQ pack-bitmap-write.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' pack-bitmap-write.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o pack-objects.o -c -MF ./.depend/pack-objects.o.d -MQ pack-objects.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' pack-objects.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o pack-revindex.o -c -MF ./.depend/pack-revindex.o.d -MQ pack-revindex.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' pack-revindex.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o pack-write.o -c -MF ./.depend/pack-write.o.d -MQ pack-write.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' pack-write.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o pager.o -c -MF ./.depend/pager.o.d -MQ pager.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' -DPAGER_ENV='"LESS=FRX LV=-c"' pager.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o parse-options-cb.o -c -MF ./.depend/parse-options-cb.o.d -MQ parse-options-cb.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' parse-options-cb.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o parallel-checkout.o -c -MF ./.depend/parallel-checkout.o.d -MQ parallel-checkout.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' parallel-checkout.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o patch-delta.o -c -MF ./.depend/patch-delta.o.d -MQ patch-delta.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' patch-delta.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o pack-bitmap.o -c -MF ./.depend/pack-bitmap.o.d -MQ pack-bitmap.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' pack-bitmap.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o patch-ids.o -c -MF ./.depend/patch-ids.o.d -MQ patch-ids.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' patch-ids.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o packfile.o -c -MF ./.depend/packfile.o.d -MQ packfile.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' packfile.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o parse-options.o -c -MF ./.depend/parse-options.o.d -MQ parse-options.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' parse-options.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o pathspec.o -c -MF ./.depend/pathspec.o.d -MQ pathspec.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' pathspec.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o preload-index.o -c -MF ./.depend/preload-index.o.d -MQ preload-index.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' preload-index.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o path.o -c -MF ./.depend/path.o.d -MQ path.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' path.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o prio-queue.o -c -MF ./.depend/prio-queue.o.d -MQ prio-queue.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' prio-queue.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o pkt-line.o -c -MF ./.depend/pkt-line.o.d -MQ pkt-line.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' pkt-line.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o progress.o -c -MF ./.depend/progress.o.d -MQ progress.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' progress.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o prompt.o -c -MF ./.depend/prompt.o.d -MQ prompt.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' prompt.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o promisor-remote.o -c -MF ./.depend/promisor-remote.o.d -MQ promisor-remote.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' promisor-remote.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o protocol.o -c -MF ./.depend/protocol.o.d -MQ protocol.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' protocol.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o protocol-caps.o -c -MF ./.depend/protocol-caps.o.d -MQ protocol-caps.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' protocol-caps.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o prune-packed.o -c -MF ./.depend/prune-packed.o.d -MQ prune-packed.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' prune-packed.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o reachable.o -c -MF ./.depend/reachable.o.d -MQ reachable.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' reachable.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o quote.o -c -MF ./.depend/quote.o.d -MQ quote.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' quote.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o range-diff.o -c -MF ./.depend/range-diff.o.d -MQ range-diff.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' range-diff.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o pretty.o -c -MF ./.depend/pretty.o.d -MQ pretty.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' pretty.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o rebase.o -c -MF ./.depend/rebase.o.d -MQ rebase.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' rebase.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o rebase-interactive.o -c -MF ./.depend/rebase-interactive.o.d -MQ rebase-interactive.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' rebase-interactive.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o reflog-walk.o -c -MF ./.depend/reflog-walk.o.d -MQ reflog-walk.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' reflog-walk.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o reflog.o -c -MF ./.depend/reflog.o.d -MQ reflog.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' reflog.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o refs/debug.o -c -MF refs/.depend/debug.o.d -MQ refs/debug.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' refs/debug.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o read-cache.o -c -MF ./.depend/read-cache.o.d -MQ read-cache.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' read-cache.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o ref-filter.o -c -MF ./.depend/ref-filter.o.d -MQ ref-filter.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' ref-filter.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o refs.o -c -MF ./.depend/refs.o.d -MQ refs.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' refs.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o refs/iterator.o -c -MF refs/.depend/iterator.o.d -MQ refs/iterator.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' refs/iterator.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o refs/files-backend.o -c -MF refs/.depend/files-backend.o.d -MQ refs/files-backend.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' refs/files-backend.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o refs/ref-cache.o -c -MF refs/.depend/ref-cache.o.d -MQ refs/ref-cache.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' refs/ref-cache.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o refspec.o -c -MF ./.depend/refspec.o.d -MQ refspec.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' refspec.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o repo-settings.o -c -MF ./.depend/repo-settings.o.d -MQ repo-settings.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' repo-settings.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o replace-object.o -c -MF ./.depend/replace-object.o.d -MQ replace-object.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' replace-object.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o refs/packed-backend.o -c -MF refs/.depend/packed-backend.o.d -MQ refs/packed-backend.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' refs/packed-backend.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o repository.o -c -MF ./.depend/repository.o.d -MQ repository.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' repository.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o reset.o -c -MF ./.depend/reset.o.d -MQ reset.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' reset.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o resolve-undo.o -c -MF ./.depend/resolve-undo.o.d -MQ resolve-undo.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' resolve-undo.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o rerere.o -c -MF ./.depend/rerere.o.d -MQ rerere.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' rerere.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o send-pack.o -c -MF ./.depend/send-pack.o.d -MQ send-pack.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' send-pack.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o run-command.o -c -MF ./.depend/run-command.o.d -MQ run-command.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' run-command.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o remote.o -c -MF ./.depend/remote.o.d -MQ remote.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' remote.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o serve.o -c -MF ./.depend/serve.o.d -MQ serve.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' serve.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o server-info.o -c -MF ./.depend/server-info.o.d -MQ server-info.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' server-info.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o shallow.o -c -MF ./.depend/shallow.o.d -MQ shallow.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' shallow.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o sideband.o -c -MF ./.depend/sideband.o.d -MQ sideband.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' sideband.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o setup.o -c -MF ./.depend/setup.o.d -MQ setup.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' -DDEFAULT_GIT_TEMPLATE_DIR='"share/git-core/templates"' setup.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o revision.o -c -MF ./.depend/revision.o.d -MQ revision.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' revision.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o sigchain.o -c -MF ./.depend/sigchain.o.d -MQ sigchain.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' sigchain.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o stable-qsort.o -c -MF ./.depend/stable-qsort.o.d -MQ stable-qsort.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' stable-qsort.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o sparse-index.o -c -MF ./.depend/sparse-index.o.d -MQ sparse-index.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' sparse-index.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o statinfo.o -c -MF ./.depend/statinfo.o.d -MQ statinfo.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' statinfo.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o split-index.o -c -MF ./.depend/split-index.o.d -MQ split-index.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' split-index.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o streaming.o -c -MF ./.depend/streaming.o.d -MQ streaming.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' streaming.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o string-list.o -c -MF ./.depend/string-list.o.d -MQ string-list.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' string-list.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o strmap.o -c -MF ./.depend/strmap.o.d -MQ strmap.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' strmap.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o strvec.o -c -MF ./.depend/strvec.o.d -MQ strvec.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' strvec.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o sub-process.o -c -MF ./.depend/sub-process.o.d -MQ sub-process.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' sub-process.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o strbuf.o -c -MF ./.depend/strbuf.o.d -MQ strbuf.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' strbuf.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o submodule-config.o -c -MF ./.depend/submodule-config.o.d -MQ submodule-config.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' submodule-config.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o symlinks.o -c -MF ./.depend/symlinks.o.d -MQ symlinks.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' symlinks.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o tag.o -c -MF ./.depend/tag.o.d -MQ tag.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' tag.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o thread-utils.o -c -MF ./.depend/thread-utils.o.d -MQ thread-utils.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' thread-utils.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o tempfile.o -c -MF ./.depend/tempfile.o.d -MQ tempfile.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' tempfile.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o tmp-objdir.o -c -MF ./.depend/tmp-objdir.o.d -MQ tmp-objdir.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' tmp-objdir.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o trace.o -c -MF ./.depend/trace.o.d -MQ trace.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' trace.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o submodule.o -c -MF ./.depend/submodule.o.d -MQ submodule.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' submodule.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o trace2/tr2_cmd_name.o -c -MF trace2/.depend/tr2_cmd_name.o.d -MQ trace2/tr2_cmd_name.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' trace2/tr2_cmd_name.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o trace2/tr2_cfg.o -c -MF trace2/.depend/tr2_cfg.o.d -MQ trace2/tr2_cfg.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' trace2/tr2_cfg.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o trace2/tr2_ctr.o -c -MF trace2/.depend/tr2_ctr.o.d -MQ trace2/tr2_ctr.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' trace2/tr2_ctr.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o trace2.o -c -MF ./.depend/trace2.o.d -MQ trace2.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' trace2.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o trace2/tr2_sid.o -c -MF trace2/.depend/tr2_sid.o.d -MQ trace2/tr2_sid.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' trace2/tr2_sid.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o trace2/tr2_dst.o -c -MF trace2/.depend/tr2_dst.o.d -MQ trace2/tr2_dst.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' trace2/tr2_dst.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o trace2/tr2_sysenv.o -c -MF trace2/.depend/tr2_sysenv.o.d -MQ trace2/tr2_sysenv.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' trace2/tr2_sysenv.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o trace2/tr2_tbuf.o -c -MF trace2/.depend/tr2_tbuf.o.d -MQ trace2/tr2_tbuf.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' trace2/tr2_tbuf.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o trace2/tr2_tgt_normal.o -c -MF trace2/.depend/tr2_tgt_normal.o.d -MQ trace2/tr2_tgt_normal.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' trace2/tr2_tgt_normal.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o trace2/tr2_tgt_event.o -c -MF trace2/.depend/tr2_tgt_event.o.d -MQ trace2/tr2_tgt_event.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' trace2/tr2_tgt_event.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o trace2/tr2_tls.o -c -MF trace2/.depend/tr2_tls.o.d -MQ trace2/tr2_tls.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' trace2/tr2_tls.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o trace2/tr2_tgt_perf.o -c -MF trace2/.depend/tr2_tgt_perf.o.d -MQ trace2/tr2_tgt_perf.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' trace2/tr2_tgt_perf.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o trace2/tr2_tmr.o -c -MF trace2/.depend/tr2_tmr.o.d -MQ trace2/tr2_tmr.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' trace2/tr2_tmr.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o sequencer.o -c -MF ./.depend/sequencer.o.d -MQ sequencer.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' sequencer.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o tree-diff.o -c -MF ./.depend/tree-diff.o.d -MQ tree-diff.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' tree-diff.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o trailer.o -c -MF ./.depend/trailer.o.d -MQ trailer.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' trailer.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o transport-helper.o -c -MF ./.depend/transport-helper.o.d -MQ transport-helper.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' transport-helper.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o transport.o -c -MF ./.depend/transport.o.d -MQ transport.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' transport.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o tree.o -c -MF ./.depend/tree.o.d -MQ tree.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' tree.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o url.o -c -MF ./.depend/url.o.d -MQ url.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' url.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o tree-walk.o -c -MF ./.depend/tree-walk.o.d -MQ tree-walk.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' tree-walk.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o usage.o -c -MF ./.depend/usage.o.d -MQ usage.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' usage.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o urlmatch.o -c -MF ./.depend/urlmatch.o.d -MQ urlmatch.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' urlmatch.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o userdiff.o -c -MF ./.depend/userdiff.o.d -MQ userdiff.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' userdiff.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o upload-pack.o -c -MF ./.depend/upload-pack.o.d -MQ upload-pack.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' upload-pack.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o varint.o -c -MF ./.depend/varint.o.d -MQ varint.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' varint.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o versioncmp.o -c -MF ./.depend/versioncmp.o.d -MQ versioncmp.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' versioncmp.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o utf8.o -c -MF ./.depend/utf8.o.d -MQ utf8.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' utf8.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o walker.o -c -MF ./.depend/walker.o.d -MQ walker.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' walker.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o wildmatch.o -c -MF ./.depend/wildmatch.o.d -MQ wildmatch.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' wildmatch.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o write-or-die.o -c -MF ./.depend/write-or-die.o.d -MQ write-or-die.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' write-or-die.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o unpack-trees.o -c -MF ./.depend/unpack-trees.o.d -MQ unpack-trees.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' unpack-trees.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o wrapper.o -c -MF ./.depend/wrapper.o.d -MQ wrapper.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' wrapper.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o worktree.o -c -MF ./.depend/worktree.o.d -MQ worktree.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' worktree.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o ws.o -c -MF ./.depend/ws.o.d -MQ ws.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' ws.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o unix-socket.o -c -MF ./.depend/unix-socket.o.d -MQ unix-socket.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' unix-socket.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o unix-stream-server.o -c -MF ./.depend/unix-stream-server.o.d -MQ unix-stream-server.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' unix-stream-server.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o xdiff-interface.o -c -MF ./.depend/xdiff-interface.o.d -MQ xdiff-interface.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' xdiff-interface.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o compat/simple-ipc/ipc-shared.o -c -MF compat/simple-ipc/.depend/ipc-shared.o.d -MQ compat/simple-ipc/ipc-shared.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' compat/simple-ipc/ipc-shared.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o sha1dc_git.o -c -MF ./.depend/sha1dc_git.o.d -MQ sha1dc_git.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' sha1dc_git.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o compat/simple-ipc/ipc-unix-socket.o -c -MF compat/simple-ipc/.depend/ipc-unix-socket.o.d -MQ compat/simple-ipc/ipc-unix-socket.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' compat/simple-ipc/ipc-unix-socket.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o sha1dc/ubc_check.o -c -MF sha1dc/.depend/ubc_check.o.d -MQ sha1dc/ubc_check.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' sha1dc/ubc_check.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o compat/linux/procinfo.o -c -MF compat/linux/.depend/procinfo.o.d -MQ compat/linux/procinfo.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' compat/linux/procinfo.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o compat/fopen.o -c -MF compat/.depend/fopen.o.d -MQ compat/fopen.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' compat/fopen.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o compat/strlcpy.o -c -MF compat/.depend/strlcpy.o.d -MQ compat/strlcpy.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' compat/strlcpy.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o sha256/block/sha256.o -c -MF sha256/block/.depend/sha256.o.d -MQ sha256/block/sha256.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' sha256/block/sha256.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o sha1dc/sha1.o -c -MF sha1dc/.depend/sha1.o.d -MQ sha1dc/sha1.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' sha1dc/sha1.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o compat/qsort_s.o -c -MF compat/.depend/qsort_s.o.d -MQ compat/qsort_s.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' compat/qsort_s.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o xdiff/xemit.o -c -MF xdiff/.depend/xemit.o.d -MQ xdiff/xemit.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' xdiff/xemit.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o xdiff/xhistogram.o -c -MF xdiff/.depend/xhistogram.o.d -MQ xdiff/xhistogram.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' xdiff/xhistogram.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o wt-status.o -c -MF ./.depend/wt-status.o.d -MQ wt-status.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' wt-status.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o xdiff/xdiffi.o -c -MF xdiff/.depend/xdiffi.o.d -MQ xdiff/xdiffi.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' xdiff/xdiffi.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o xdiff/xpatience.o -c -MF xdiff/.depend/xpatience.o.d -MQ xdiff/xpatience.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' xdiff/xpatience.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o xdiff/xprepare.o -c -MF xdiff/.depend/xprepare.o.d -MQ xdiff/xprepare.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' xdiff/xprepare.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o xdiff/xmerge.o -c -MF xdiff/.depend/xmerge.o.d -MQ xdiff/xmerge.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' xdiff/xmerge.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o reftable/basics.o -c -MF reftable/.depend/basics.o.d -MQ reftable/basics.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' reftable/basics.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o reftable/error.o -c -MF reftable/.depend/error.o.d -MQ reftable/error.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' reftable/error.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o xdiff/xutils.o -c -MF xdiff/.depend/xutils.o.d -MQ xdiff/xutils.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' xdiff/xutils.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o reftable/blocksource.o -c -MF reftable/.depend/blocksource.o.d -MQ reftable/blocksource.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' reftable/blocksource.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o reftable/publicbasics.o -c -MF reftable/.depend/publicbasics.o.d -MQ reftable/publicbasics.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' reftable/publicbasics.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o reftable/iter.o -c -MF reftable/.depend/iter.o.d -MQ reftable/iter.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' reftable/iter.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o reftable/block.o -c -MF reftable/.depend/block.o.d -MQ reftable/block.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' reftable/block.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o reftable/pq.o -c -MF reftable/.depend/pq.o.d -MQ reftable/pq.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' reftable/pq.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o reftable/merged.o -c -MF reftable/.depend/merged.o.d -MQ reftable/merged.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' reftable/merged.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o reftable/refname.o -c -MF reftable/.depend/refname.o.d -MQ reftable/refname.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' reftable/refname.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o reftable/generic.o -c -MF reftable/.depend/generic.o.d -MQ reftable/generic.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' reftable/generic.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o reftable/reader.o -c -MF reftable/.depend/reader.o.d -MQ reftable/reader.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' reftable/reader.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o reftable/tree.o -c -MF reftable/.depend/tree.o.d -MQ reftable/tree.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' reftable/tree.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o reftable/record.o -c -MF reftable/.depend/record.o.d -MQ reftable/record.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' reftable/record.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o reftable/writer.o -c -MF reftable/.depend/writer.o.d -MQ reftable/writer.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' reftable/writer.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o http-backend.o -c -MF ./.depend/http-backend.o.d -MQ http-backend.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' http-backend.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o reftable/stack.o -c -MF reftable/.depend/stack.o.d -MQ reftable/stack.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' reftable/stack.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o sh-i18n--envsubst.o -c -MF ./.depend/sh-i18n--envsubst.o.d -MQ sh-i18n--envsubst.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' sh-i18n--envsubst.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o shell.o -c -MF ./.depend/shell.o.d -MQ shell.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' shell.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o imap-send.o -c -MF ./.depend/imap-send.o.d -MQ imap-send.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' imap-send.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o http-fetch.o -c -MF ./.depend/http-fetch.o.d -MQ http-fetch.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' http-fetch.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o http-walker.o -c -MF ./.depend/http-walker.o.d -MQ http-walker.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' http-walker.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
* new script parameters
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
* new perl-specific parameters
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
* new Python interpreter location
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
sed -e '1s|#!.*/sh|#!/bin/sh|' -e 's|@SHELL_PATH@|/bin/sh|' -e 's|@@DIFF@@|diff|' -e 's|@@LOCALEDIR@@|/usr/share/locale|g' -e 's/@@USE_GETTEXT_SCHEME@@//g' -e '/^# @@BROKEN_PATH_FIX@@$/d' -e 's|@@GITWEBDIR@@|/usr/share/gitweb|g' -e 's|@@PERL@@|/usr/bin/perl|g' -e 's|@@PAGER_ENV@@|LESS=FRX LV=-c|g' git-instaweb.sh >git-instaweb+ && \
chmod +x git-instaweb+ && \
mv git-instaweb+ git-instaweb
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o git.o -c -MF ./.depend/git.o.d -MQ git.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' '-DGIT_HTML_PATH="share/doc/git/html"' '-DGIT_MAN_PATH="share/man"' '-DGIT_INFO_PATH="share/info"' git.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o http-push.o -c -MF ./.depend/http-push.o.d -MQ http-push.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' http-push.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o remote-curl.o -c -MF ./.depend/remote-curl.o.d -MQ remote-curl.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' remote-curl.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o http.o -c -MF ./.depend/http.o.d -MQ http.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' http.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/annotate.o -c -MF builtin/.depend/annotate.o.d -MQ builtin/annotate.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/annotate.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/add.o -c -MF builtin/.depend/add.o.d -MQ builtin/add.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/add.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/apply.o -c -MF builtin/.depend/apply.o.d -MQ builtin/apply.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/apply.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/archive.o -c -MF builtin/.depend/archive.o.d -MQ builtin/archive.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/archive.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/blame.o -c -MF builtin/.depend/blame.o.d -MQ builtin/blame.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/blame.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
/bin/sh ./generate-hooklist.sh >hook-list.h
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/bisect.o -c -MF builtin/.depend/bisect.o.d -MQ builtin/bisect.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/bisect.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/bundle.o -c -MF builtin/.depend/bundle.o.d -MQ builtin/bundle.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/bundle.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/branch.o -c -MF builtin/.depend/branch.o.d -MQ builtin/branch.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/branch.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/check-attr.o -c -MF builtin/.depend/check-attr.o.d -MQ builtin/check-attr.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/check-attr.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/check-ignore.o -c -MF builtin/.depend/check-ignore.o.d -MQ builtin/check-ignore.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/check-ignore.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/am.o -c -MF builtin/.depend/am.o.d -MQ builtin/am.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/am.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/check-mailmap.o -c -MF builtin/.depend/check-mailmap.o.d -MQ builtin/check-mailmap.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/check-mailmap.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/check-ref-format.o -c -MF builtin/.depend/check-ref-format.o.d -MQ builtin/check-ref-format.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/check-ref-format.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/checkout--worker.o -c -MF builtin/.depend/checkout--worker.o.d -MQ builtin/checkout--worker.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/checkout--worker.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/cat-file.o -c -MF builtin/.depend/cat-file.o.d -MQ builtin/cat-file.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/cat-file.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/checkout-index.o -c -MF builtin/.depend/checkout-index.o.d -MQ builtin/checkout-index.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/checkout-index.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/column.o -c -MF builtin/.depend/column.o.d -MQ builtin/column.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/column.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/commit-graph.o -c -MF builtin/.depend/commit-graph.o.d -MQ builtin/commit-graph.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/commit-graph.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/clean.o -c -MF builtin/.depend/clean.o.d -MQ builtin/clean.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/clean.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/commit-tree.o -c -MF builtin/.depend/commit-tree.o.d -MQ builtin/commit-tree.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/commit-tree.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/clone.o -c -MF builtin/.depend/clone.o.d -MQ builtin/clone.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/clone.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/checkout.o -c -MF builtin/.depend/checkout.o.d -MQ builtin/checkout.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/checkout.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/count-objects.o -c -MF builtin/.depend/count-objects.o.d -MQ builtin/count-objects.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/count-objects.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/config.o -c -MF builtin/.depend/config.o.d -MQ builtin/config.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/config.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/credential-cache.o -c -MF builtin/.depend/credential-cache.o.d -MQ builtin/credential-cache.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/credential-cache.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/credential-cache--daemon.o -c -MF builtin/.depend/credential-cache--daemon.o.d -MQ builtin/credential-cache--daemon.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/credential-cache--daemon.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/credential.o -c -MF builtin/.depend/credential.o.d -MQ builtin/credential.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/credential.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/credential-store.o -c -MF builtin/.depend/credential-store.o.d -MQ builtin/credential-store.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/credential-store.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/diagnose.o -c -MF builtin/.depend/diagnose.o.d -MQ builtin/diagnose.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/diagnose.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/diff-files.o -c -MF builtin/.depend/diff-files.o.d -MQ builtin/diff-files.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/diff-files.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/diff-index.o -c -MF builtin/.depend/diff-index.o.d -MQ builtin/diff-index.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/diff-index.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/commit.o -c -MF builtin/.depend/commit.o.d -MQ builtin/commit.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/commit.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/diff-tree.o -c -MF builtin/.depend/diff-tree.o.d -MQ builtin/diff-tree.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/diff-tree.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/describe.o -c -MF builtin/.depend/describe.o.d -MQ builtin/describe.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/describe.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/diff.o -c -MF builtin/.depend/diff.o.d -MQ builtin/diff.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/diff.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/difftool.o -c -MF builtin/.depend/difftool.o.d -MQ builtin/difftool.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/difftool.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/fetch-pack.o -c -MF builtin/.depend/fetch-pack.o.d -MQ builtin/fetch-pack.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/fetch-pack.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/fmt-merge-msg.o -c -MF builtin/.depend/fmt-merge-msg.o.d -MQ builtin/fmt-merge-msg.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/fmt-merge-msg.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/fast-export.o -c -MF builtin/.depend/fast-export.o.d -MQ builtin/fast-export.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/fast-export.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/for-each-repo.o -c -MF builtin/.depend/for-each-repo.o.d -MQ builtin/for-each-repo.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/for-each-repo.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/for-each-ref.o -c -MF builtin/.depend/for-each-ref.o.d -MQ builtin/for-each-ref.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/for-each-ref.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/fsmonitor--daemon.o -c -MF builtin/.depend/fsmonitor--daemon.o.d -MQ builtin/fsmonitor--daemon.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/fsmonitor--daemon.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/fsck.o -c -MF builtin/.depend/fsck.o.d -MQ builtin/fsck.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/fsck.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/get-tar-commit-id.o -c -MF builtin/.depend/get-tar-commit-id.o.d -MQ builtin/get-tar-commit-id.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/get-tar-commit-id.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/fetch.o -c -MF builtin/.depend/fetch.o.d -MQ builtin/fetch.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/fetch.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/gc.o -c -MF builtin/.depend/gc.o.d -MQ builtin/gc.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/gc.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
/bin/sh ./generate-configlist.sh >config-list.h
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/hook.o -c -MF builtin/.depend/hook.o.d -MQ builtin/hook.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/hook.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/hash-object.o -c -MF builtin/.depend/hash-object.o.d -MQ builtin/hash-object.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/hash-object.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/init-db.o -c -MF builtin/.depend/init-db.o.d -MQ builtin/init-db.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/init-db.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/fast-import.o -c -MF builtin/.depend/fast-import.o.d -MQ builtin/fast-import.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/fast-import.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/interpret-trailers.o -c -MF builtin/.depend/interpret-trailers.o.d -MQ builtin/interpret-trailers.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/interpret-trailers.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/grep.o -c -MF builtin/.depend/grep.o.d -MQ builtin/grep.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/grep.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/ls-remote.o -c -MF builtin/.depend/ls-remote.o.d -MQ builtin/ls-remote.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/ls-remote.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/ls-files.o -c -MF builtin/.depend/ls-files.o.d -MQ builtin/ls-files.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/ls-files.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/ls-tree.o -c -MF builtin/.depend/ls-tree.o.d -MQ builtin/ls-tree.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/ls-tree.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/mailinfo.o -c -MF builtin/.depend/mailinfo.o.d -MQ builtin/mailinfo.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/mailinfo.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/index-pack.o -c -MF builtin/.depend/index-pack.o.d -MQ builtin/index-pack.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/index-pack.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/mailsplit.o -c -MF builtin/.depend/mailsplit.o.d -MQ builtin/mailsplit.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/mailsplit.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/merge-base.o -c -MF builtin/.depend/merge-base.o.d -MQ builtin/merge-base.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/merge-base.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/merge-file.o -c -MF builtin/.depend/merge-file.o.d -MQ builtin/merge-file.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/merge-file.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/merge-index.o -c -MF builtin/.depend/merge-index.o.d -MQ builtin/merge-index.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/merge-index.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/merge-ours.o -c -MF builtin/.depend/merge-ours.o.d -MQ builtin/merge-ours.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/merge-ours.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/merge-recursive.o -c -MF builtin/.depend/merge-recursive.o.d -MQ builtin/merge-recursive.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/merge-recursive.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/mktag.o -c -MF builtin/.depend/mktag.o.d -MQ builtin/mktag.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/mktag.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/merge-tree.o -c -MF builtin/.depend/merge-tree.o.d -MQ builtin/merge-tree.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/merge-tree.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/log.o -c -MF builtin/.depend/log.o.d -MQ builtin/log.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/log.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/mktree.o -c -MF builtin/.depend/mktree.o.d -MQ builtin/mktree.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/mktree.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/multi-pack-index.o -c -MF builtin/.depend/multi-pack-index.o.d -MQ builtin/multi-pack-index.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/multi-pack-index.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/mv.o -c -MF builtin/.depend/mv.o.d -MQ builtin/mv.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/mv.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/name-rev.o -c -MF builtin/.depend/name-rev.o.d -MQ builtin/name-rev.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/name-rev.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/merge.o -c -MF builtin/.depend/merge.o.d -MQ builtin/merge.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/merge.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/pack-refs.o -c -MF builtin/.depend/pack-refs.o.d -MQ builtin/pack-refs.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/pack-refs.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/notes.o -c -MF builtin/.depend/notes.o.d -MQ builtin/notes.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/notes.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/prune-packed.o -c -MF builtin/.depend/prune-packed.o.d -MQ builtin/prune-packed.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/prune-packed.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/patch-id.o -c -MF builtin/.depend/patch-id.o.d -MQ builtin/patch-id.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/patch-id.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/pack-redundant.o -c -MF builtin/.depend/pack-redundant.o.d -MQ builtin/pack-redundant.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/pack-redundant.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/prune.o -c -MF builtin/.depend/prune.o.d -MQ builtin/prune.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/prune.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/range-diff.o -c -MF builtin/.depend/range-diff.o.d -MQ builtin/range-diff.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/range-diff.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/pull.o -c -MF builtin/.depend/pull.o.d -MQ builtin/pull.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/pull.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/push.o -c -MF builtin/.depend/push.o.d -MQ builtin/push.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/push.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/read-tree.o -c -MF builtin/.depend/read-tree.o.d -MQ builtin/read-tree.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/read-tree.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/reflog.o -c -MF builtin/.depend/reflog.o.d -MQ builtin/reflog.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/reflog.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/remote-ext.o -c -MF builtin/.depend/remote-ext.o.d -MQ builtin/remote-ext.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/remote-ext.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/remote-fd.o -c -MF builtin/.depend/remote-fd.o.d -MQ builtin/remote-fd.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/remote-fd.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/receive-pack.o -c -MF builtin/.depend/receive-pack.o.d -MQ builtin/receive-pack.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/receive-pack.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/rebase.o -c -MF builtin/.depend/rebase.o.d -MQ builtin/rebase.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/rebase.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/pack-objects.o -c -MF builtin/.depend/pack-objects.o.d -MQ builtin/pack-objects.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/pack-objects.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/remote.o -c -MF builtin/.depend/remote.o.d -MQ builtin/remote.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/remote.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/rerere.o -c -MF builtin/.depend/rerere.o.d -MQ builtin/rerere.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/rerere.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/replace.o -c -MF builtin/.depend/replace.o.d -MQ builtin/replace.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/replace.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/reset.o -c -MF builtin/.depend/reset.o.d -MQ builtin/reset.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/reset.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/rev-list.o -c -MF builtin/.depend/rev-list.o.d -MQ builtin/rev-list.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/rev-list.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/repack.o -c -MF builtin/.depend/repack.o.d -MQ builtin/repack.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/repack.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/revert.o -c -MF builtin/.depend/revert.o.d -MQ builtin/revert.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/revert.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/rm.o -c -MF builtin/.depend/rm.o.d -MQ builtin/rm.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/rm.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/send-pack.o -c -MF builtin/.depend/send-pack.o.d -MQ builtin/send-pack.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/send-pack.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/rev-parse.o -c -MF builtin/.depend/rev-parse.o.d -MQ builtin/rev-parse.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/rev-parse.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/show-index.o -c -MF builtin/.depend/show-index.o.d -MQ builtin/show-index.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/show-index.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/shortlog.o -c -MF builtin/.depend/shortlog.o.d -MQ builtin/shortlog.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/shortlog.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/show-ref.o -c -MF builtin/.depend/show-ref.o.d -MQ builtin/show-ref.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/show-ref.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/stripspace.o -c -MF builtin/.depend/stripspace.o.d -MQ builtin/stripspace.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/stripspace.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/show-branch.o -c -MF builtin/.depend/show-branch.o.d -MQ builtin/show-branch.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/show-branch.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/sparse-checkout.o -c -MF builtin/.depend/sparse-checkout.o.d -MQ builtin/sparse-checkout.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/sparse-checkout.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/symbolic-ref.o -c -MF builtin/.depend/symbolic-ref.o.d -MQ builtin/symbolic-ref.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/symbolic-ref.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/unpack-file.o -c -MF builtin/.depend/unpack-file.o.d -MQ builtin/unpack-file.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/unpack-file.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/stash.o -c -MF builtin/.depend/stash.o.d -MQ builtin/stash.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/stash.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/tag.o -c -MF builtin/.depend/tag.o.d -MQ builtin/tag.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/tag.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/unpack-objects.o -c -MF builtin/.depend/unpack-objects.o.d -MQ builtin/unpack-objects.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/unpack-objects.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/update-server-info.o -c -MF builtin/.depend/update-server-info.o.d -MQ builtin/update-server-info.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/update-server-info.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/upload-archive.o -c -MF builtin/.depend/upload-archive.o.d -MQ builtin/upload-archive.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/upload-archive.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/update-ref.o -c -MF builtin/.depend/update-ref.o.d -MQ builtin/update-ref.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/update-ref.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/upload-pack.o -c -MF builtin/.depend/upload-pack.o.d -MQ builtin/upload-pack.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/upload-pack.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/var.o -c -MF builtin/.depend/var.o.d -MQ builtin/var.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/var.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/update-index.o -c -MF builtin/.depend/update-index.o.d -MQ builtin/update-index.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/update-index.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/verify-commit.o -c -MF builtin/.depend/verify-commit.o.d -MQ builtin/verify-commit.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/verify-commit.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/verify-pack.o -c -MF builtin/.depend/verify-pack.o.d -MQ builtin/verify-pack.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/verify-pack.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/verify-tag.o -c -MF builtin/.depend/verify-tag.o.d -MQ builtin/verify-tag.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/verify-tag.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
sed -e '1s|#!.*/sh|#!/bin/sh|' -e 's|@SHELL_PATH@|/bin/sh|' -e 's|@@DIFF@@|diff|' -e 's|@@LOCALEDIR@@|/usr/share/locale|g' -e 's/@@USE_GETTEXT_SCHEME@@//g' -e '/^# @@BROKEN_PATH_FIX@@$/d' -e 's|@@GITWEBDIR@@|/usr/share/gitweb|g' -e 's|@@PERL@@|/usr/bin/perl|g' -e 's|@@PAGER_ENV@@|LESS=FRX LV=-c|g' git-mergetool--lib.sh >git-mergetool--lib+ && \
mv git-mergetool--lib+ git-mergetool--lib
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
sed -e '1s|#!.*/sh|#!/bin/sh|' -e 's|@SHELL_PATH@|/bin/sh|' -e 's|@@DIFF@@|diff|' -e 's|@@LOCALEDIR@@|/usr/share/locale|g' -e 's/@@USE_GETTEXT_SCHEME@@//g' -e '/^# @@BROKEN_PATH_FIX@@$/d' -e 's|@@GITWEBDIR@@|/usr/share/gitweb|g' -e 's|@@PERL@@|/usr/bin/perl|g' -e 's|@@PAGER_ENV@@|LESS=FRX LV=-c|g' git-sh-i18n.sh >git-sh-i18n+ && \
mv git-sh-i18n+ git-sh-i18n
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
sed -e '1s|#!.*/sh|#!/bin/sh|' -e 's|@SHELL_PATH@|/bin/sh|' -e 's|@@DIFF@@|diff|' -e 's|@@LOCALEDIR@@|/usr/share/locale|g' -e 's/@@USE_GETTEXT_SCHEME@@//g' -e '/^# @@BROKEN_PATH_FIX@@$/d' -e 's|@@GITWEBDIR@@|/usr/share/gitweb|g' -e 's|@@PERL@@|/usr/bin/perl|g' -e 's|@@PAGER_ENV@@|LESS=FRX LV=-c|g' git-sh-setup.sh >git-sh-setup+ && \
mv git-sh-setup+ git-sh-setup
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/submodule--helper.o -c -MF builtin/.depend/submodule--helper.o.d -MQ builtin/submodule--helper.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/submodule--helper.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/write-tree.o -c -MF builtin/.depend/write-tree.o.d -MQ builtin/write-tree.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/write-tree.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o scalar.o -c -MF ./.depend/scalar.o.d -MQ scalar.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' scalar.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/worktree.o -c -MF builtin/.depend/worktree.o.d -MQ builtin/worktree.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/worktree.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f xdiff/lib.a && ar rcs xdiff/lib.a xdiff/xdiffi.o xdiff/xemit.o xdiff/xhistogram.o xdiff/xmerge.o xdiff/xpatience.o xdiff/xprepare.o xdiff/xutils.o
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f reftable/libreftable.a && ar rcs reftable/libreftable.a reftable/basics.o reftable/error.o reftable/block.o reftable/blocksource.o reftable/iter.o reftable/publicbasics.o reftable/merged.o reftable/pq.o reftable/reader.o reftable/record.o reftable/refname.o reftable/generic.o reftable/stack.o reftable/tree.o reftable/writer.o
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
sed -e '1s|#!.*/sh|#!/bin/sh|' -e 's|@SHELL_PATH@|/bin/sh|' -e 's|@@DIFF@@|diff|' -e 's|@@LOCALEDIR@@|/usr/share/locale|g' -e 's/@@USE_GETTEXT_SCHEME@@//g' -e '/^# @@BROKEN_PATH_FIX@@$/d' -e 's|@@GITWEBDIR@@|/usr/share/gitweb|g' -e 's|@@PERL@@|/usr/bin/perl|g' -e 's|@@PAGER_ENV@@|LESS=FRX LV=-c|g' git-difftool--helper.sh >git-difftool--helper+ && \
chmod +x git-difftool--helper+ && \
mv git-difftool--helper+ git-difftool--helper
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
sed -e '1s|#!.*/sh|#!/bin/sh|' -e 's|@SHELL_PATH@|/bin/sh|' -e 's|@@DIFF@@|diff|' -e 's|@@LOCALEDIR@@|/usr/share/locale|g' -e 's/@@USE_GETTEXT_SCHEME@@//g' -e '/^# @@BROKEN_PATH_FIX@@$/d' -e 's|@@GITWEBDIR@@|/usr/share/gitweb|g' -e 's|@@PERL@@|/usr/bin/perl|g' -e 's|@@PAGER_ENV@@|LESS=FRX LV=-c|g' git-filter-branch.sh >git-filter-branch+ && \
chmod +x git-filter-branch+ && \
mv git-filter-branch+ git-filter-branch
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o help.o -c -MF ./.depend/help.o.d -MQ help.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' help.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
sed -e '1s|#!.*/sh|#!/bin/sh|' -e 's|@SHELL_PATH@|/bin/sh|' -e 's|@@DIFF@@|diff|' -e 's|@@LOCALEDIR@@|/usr/share/locale|g' -e 's/@@USE_GETTEXT_SCHEME@@//g' -e '/^# @@BROKEN_PATH_FIX@@$/d' -e 's|@@GITWEBDIR@@|/usr/share/gitweb|g' -e 's|@@PERL@@|/usr/bin/perl|g' -e 's|@@PAGER_ENV@@|LESS=FRX LV=-c|g' git-merge-octopus.sh >git-merge-octopus+ && \
chmod +x git-merge-octopus+ && \
mv git-merge-octopus+ git-merge-octopus
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o version.o -c -MF ./.depend/version.o.d -MQ version.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' '-DGIT_VERSION="2.42.0"' '-DGIT_USER_AGENT="git/2.42.0"' '-DGIT_BUILT_FROM_COMMIT=""' version.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
sed -e '1s|#!.*/sh|#!/bin/sh|' -e 's|@SHELL_PATH@|/bin/sh|' -e 's|@@DIFF@@|diff|' -e 's|@@LOCALEDIR@@|/usr/share/locale|g' -e 's/@@USE_GETTEXT_SCHEME@@//g' -e '/^# @@BROKEN_PATH_FIX@@$/d' -e 's|@@GITWEBDIR@@|/usr/share/gitweb|g' -e 's|@@PERL@@|/usr/bin/perl|g' -e 's|@@PAGER_ENV@@|LESS=FRX LV=-c|g' git-merge-one-file.sh >git-merge-one-file+ && \
chmod +x git-merge-one-file+ && \
mv git-merge-one-file+ git-merge-one-file
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
sed -e '1s|#!.*/sh|#!/bin/sh|' -e 's|@SHELL_PATH@|/bin/sh|' -e 's|@@DIFF@@|diff|' -e 's|@@LOCALEDIR@@|/usr/share/locale|g' -e 's/@@USE_GETTEXT_SCHEME@@//g' -e '/^# @@BROKEN_PATH_FIX@@$/d' -e 's|@@GITWEBDIR@@|/usr/share/gitweb|g' -e 's|@@PERL@@|/usr/bin/perl|g' -e 's|@@PAGER_ENV@@|LESS=FRX LV=-c|g' git-merge-resolve.sh >git-merge-resolve+ && \
chmod +x git-merge-resolve+ && \
mv git-merge-resolve+ git-merge-resolve
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
sed -e '1s|#!.*/sh|#!/bin/sh|' -e 's|@SHELL_PATH@|/bin/sh|' -e 's|@@DIFF@@|diff|' -e 's|@@LOCALEDIR@@|/usr/share/locale|g' -e 's/@@USE_GETTEXT_SCHEME@@//g' -e '/^# @@BROKEN_PATH_FIX@@$/d' -e 's|@@GITWEBDIR@@|/usr/share/gitweb|g' -e 's|@@PERL@@|/usr/bin/perl|g' -e 's|@@PAGER_ENV@@|LESS=FRX LV=-c|g' git-mergetool.sh >git-mergetool+ && \
chmod +x git-mergetool+ && \
mv git-mergetool+ git-mergetool
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
sed -e '1s|#!.*/sh|#!/bin/sh|' -e 's|@SHELL_PATH@|/bin/sh|' -e 's|@@DIFF@@|diff|' -e 's|@@LOCALEDIR@@|/usr/share/locale|g' -e 's/@@USE_GETTEXT_SCHEME@@//g' -e '/^# @@BROKEN_PATH_FIX@@$/d' -e 's|@@GITWEBDIR@@|/usr/share/gitweb|g' -e 's|@@PERL@@|/usr/bin/perl|g' -e 's|@@PAGER_ENV@@|LESS=FRX LV=-c|g' git-quiltimport.sh >git-quiltimport+ && \
chmod +x git-quiltimport+ && \
mv git-quiltimport+ git-quiltimport
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
sed -e '1s|#!.*/sh|#!/bin/sh|' -e 's|@SHELL_PATH@|/bin/sh|' -e 's|@@DIFF@@|diff|' -e 's|@@LOCALEDIR@@|/usr/share/locale|g' -e 's/@@USE_GETTEXT_SCHEME@@//g' -e '/^# @@BROKEN_PATH_FIX@@$/d' -e 's|@@GITWEBDIR@@|/usr/share/gitweb|g' -e 's|@@PERL@@|/usr/bin/perl|g' -e 's|@@PAGER_ENV@@|LESS=FRX LV=-c|g' git-request-pull.sh >git-request-pull+ && \
chmod +x git-request-pull+ && \
mv git-request-pull+ git-request-pull
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
sed -e '1s|#!.*/sh|#!/bin/sh|' -e 's|@SHELL_PATH@|/bin/sh|' -e 's|@@DIFF@@|diff|' -e 's|@@LOCALEDIR@@|/usr/share/locale|g' -e 's/@@USE_GETTEXT_SCHEME@@//g' -e '/^# @@BROKEN_PATH_FIX@@$/d' -e 's|@@GITWEBDIR@@|/usr/share/gitweb|g' -e 's|@@PERL@@|/usr/bin/perl|g' -e 's|@@PAGER_ENV@@|LESS=FRX LV=-c|g' git-submodule.sh >git-submodule+ && \
chmod +x git-submodule+ && \
mv git-submodule+ git-submodule
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
sed -e '1s|#!.*/sh|#!/bin/sh|' -e 's|@SHELL_PATH@|/bin/sh|' -e 's|@@DIFF@@|diff|' -e 's|@@LOCALEDIR@@|/usr/share/locale|g' -e 's/@@USE_GETTEXT_SCHEME@@//g' -e '/^# @@BROKEN_PATH_FIX@@$/d' -e 's|@@GITWEBDIR@@|/usr/share/gitweb|g' -e 's|@@PERL@@|/usr/bin/perl|g' -e 's|@@PAGER_ENV@@|LESS=FRX LV=-c|g' git-web--browse.sh >git-web--browse+ && \
chmod +x git-web--browse+ && \
mv git-web--browse+ git-web--browse
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
\
INSTLIBDIR='/usr/share/perl5' && \
INSTLIBDIR_EXTRA='' && \
INSTLIBDIR="$INSTLIBDIR${INSTLIBDIR_EXTRA:+:$INSTLIBDIR_EXTRA}" && \
sed -e 's=@@PATHSEP@@=:=g' \
-e "s=@@INSTLIBDIR@@=$INSTLIBDIR=g" \
-e 's=@@PERLLIBDIR_REL@@=share/perl5=g' \
-e 's=@@GITEXECDIR_REL@@=lib/git-core=g' \
-e 's=@@LOCALEDIR_REL@@=share/locale=g' \
perl/header_templates/fixed_prefix.template.pl >GIT-PERL-HEADER+ && \
mv GIT-PERL-HEADER+ GIT-PERL-HEADER
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
\
sed -e '1s|#!.*python|#!/usr/bin/python3|' \
git-p4.py >git-p4+ && \
chmod +x git-p4+ && \
mv git-p4+ git-p4
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
\
sed -e '1{' \
-e ' s|#!.*perl|#!/usr/bin/perl|' \
-e ' r GIT-PERL-HEADER' \
-e ' G' \
-e '}' \
-e 's/@@GIT_VERSION@@/2.42.0/g' \
git-archimport.perl >git-archimport+ && \
chmod +x git-archimport+ && \
mv git-archimport+ git-archimport
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
\
sed -e '1{' \
-e ' s|#!.*perl|#!/usr/bin/perl|' \
-e ' r GIT-PERL-HEADER' \
-e ' G' \
-e '}' \
-e 's/@@GIT_VERSION@@/2.42.0/g' \
git-cvsexportcommit.perl >git-cvsexportcommit+ && \
chmod +x git-cvsexportcommit+ && \
mv git-cvsexportcommit+ git-cvsexportcommit
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o attr.o -c -MF ./.depend/attr.o.d -MQ attr.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' -DETC_GITATTRIBUTES='"/etc/gitattributes"' attr.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
\
sed -e '1{' \
-e ' s|#!.*perl|#!/usr/bin/perl|' \
-e ' r GIT-PERL-HEADER' \
-e ' G' \
-e '}' \
-e 's/@@GIT_VERSION@@/2.42.0/g' \
git-cvsimport.perl >git-cvsimport+ && \
chmod +x git-cvsimport+ && \
mv git-cvsimport+ git-cvsimport
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
\
sed -e '1{' \
-e ' s|#!.*perl|#!/usr/bin/perl|' \
-e ' r GIT-PERL-HEADER' \
-e ' G' \
-e '}' \
-e 's/@@GIT_VERSION@@/2.42.0/g' \
git-cvsserver.perl >git-cvsserver+ && \
chmod +x git-cvsserver+ && \
mv git-cvsserver+ git-cvsserver
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
\
sed -e '1{' \
-e ' s|#!.*perl|#!/usr/bin/perl|' \
-e ' r GIT-PERL-HEADER' \
-e ' G' \
-e '}' \
-e 's/@@GIT_VERSION@@/2.42.0/g' \
git-send-email.perl >git-send-email+ && \
chmod +x git-send-email+ && \
mv git-send-email+ git-send-email
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
\
sed -e '1{' \
-e ' s|#!.*perl|#!/usr/bin/perl|' \
-e ' r GIT-PERL-HEADER' \
-e ' G' \
-e '}' \
-e 's/@@GIT_VERSION@@/2.42.0/g' \
git-svn.perl >git-svn+ && \
chmod +x git-svn+ && \
mv git-svn+ git-svn
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f libgit.a && ar rcs libgit.a abspath.o add-interactive.o add-patch.o advice.o alias.o alloc.o apply.o archive-tar.o archive-zip.o archive.o attr.o base85.o bisect.o blame.o blob.o bloom.o branch.o bulk-checkin.o bundle-uri.o bundle.o cache-tree.o cbtree.o chdir-notify.o checkout.o chunk-format.o color.o column.o combine-diff.o commit-graph.o commit-reach.o commit.o compat/nonblock.o compat/obstack.o compat/terminal.o compat/zlib-uncompress2.o config.o connect.o connected.o convert.o copy.o credential.o csum-file.o ctype.o date.o decorate.o delta-islands.o diagnose.o diff-delta.o diff-merges.o diff-lib.o diff-no-index.o diff.o diffcore-break.o diffcore-delta.o diffcore-order.o diffcore-pickaxe.o diffcore-rename.o diffcore-rotate.o dir-iterator.o dir.o editor.o entry.o environment.o ewah/bitmap.o ewah/ewah_bitmap.o ewah/ewah_io.o ewah/ewah_rlw.o exec-cmd.o fetch-negotiator.o fetch-pack.o fmt-merge-msg.o fsck.o fsmonitor.o fsmonitor-ipc.o fsmonitor-settings.o gettext.o git-zlib.o gpg-interface.o graph.o grep.o hash-lookup.o hashmap.o help.o hex.o hook.o ident.o json-writer.o kwset.o levenshtein.o line-log.o line-range.o linear-assignment.o list-objects-filter-options.o list-objects-filter.o list-objects.o lockfile.o log-tree.o ls-refs.o mailinfo.o mailmap.o match-trees.o mem-pool.o merge-blobs.o merge-ll.o merge-ort.o merge-ort-wrappers.o merge-recursive.o merge.o midx.o name-hash.o negotiator/default.o negotiator/noop.o negotiator/skipping.o notes-cache.o notes-merge.o notes-utils.o notes.o object-file.o object-name.o object.o oid-array.o oidmap.o oidset.o oidtree.o pack-bitmap-write.o pack-bitmap.o pack-check.o pack-mtimes.o pack-objects.o pack-revindex.o pack-write.o packfile.o pager.o parallel-checkout.o parse-options-cb.o parse-options.o patch-delta.o patch-ids.o path.o pathspec.o pkt-line.o preload-index.o pretty.o prio-queue.o progress.o promisor-remote.o prompt.o protocol.o protocol-caps.o prune-packed.o quote.o range-diff.o reachable.o read-cache.o rebase-interactive.o rebase.o ref-filter.o reflog-walk.o reflog.o refs.o refs/debug.o refs/files-backend.o refs/iterator.o refs/packed-backend.o refs/ref-cache.o refspec.o remote.o replace-object.o repo-settings.o repository.o rerere.o reset.o resolve-undo.o revision.o run-command.o send-pack.o sequencer.o serve.o server-info.o setup.o shallow.o sideband.o sigchain.o sparse-index.o split-index.o stable-qsort.o statinfo.o strbuf.o streaming.o string-list.o strmap.o strvec.o sub-process.o submodule-config.o submodule.o symlinks.o tag.o tempfile.o thread-utils.o tmp-objdir.o trace.o trace2.o trace2/tr2_cfg.o trace2/tr2_cmd_name.o trace2/tr2_ctr.o trace2/tr2_dst.o trace2/tr2_sid.o trace2/tr2_sysenv.o trace2/tr2_tbuf.o trace2/tr2_tgt_event.o trace2/tr2_tgt_normal.o trace2/tr2_tgt_perf.o trace2/tr2_tls.o trace2/tr2_tmr.o trailer.o transport-helper.o transport.o tree-diff.o tree-walk.o tree.o unpack-trees.o upload-pack.o url.o urlmatch.o usage.o userdiff.o utf8.o varint.o version.o versioncmp.o walker.o wildmatch.o worktree.o wrapper.o write-or-die.o ws.o wt-status.o xdiff-interface.o unix-socket.o unix-stream-server.o compat/simple-ipc/ipc-shared.o compat/simple-ipc/ipc-unix-socket.o sha1dc_git.o sha1dc/sha1.o sha1dc/ubc_check.o sha256/block/sha256.o compat/linux/procinfo.o compat/fopen.o compat/strlcpy.o compat/qsort_s.o
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/bugreport.o -c -MF builtin/.depend/bugreport.o.d -MQ builtin/bugreport.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' builtin/bugreport.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o builtin/help.o -c -MF builtin/.depend/help.o.d -MQ builtin/help.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' '-DGIT_HTML_PATH="share/doc/git/html"' '-DGIT_MAN_PATH="share/man"' '-DGIT_INFO_PATH="share/info"' builtin/help.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' -o git-daemon -Wl,-z,relro daemon.o common-main.o libgit.a xdiff/lib.a reftable/libreftable.a libgit.a -lpcre2-8 -lz -lpthread -lrt
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' -o git-http-backend -Wl,-z,relro http-backend.o common-main.o libgit.a xdiff/lib.a reftable/libreftable.a libgit.a -lpcre2-8 -lz -lpthread -lrt
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' -o git-imap-send -Wl,-z,relro imap-send.o http.o common-main.o \
-lcurl libgit.a xdiff/lib.a reftable/libreftable.a libgit.a -lpcre2-8 -lz -lpthread -lrt
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' -o git-sh-i18n--envsubst -Wl,-z,relro sh-i18n--envsubst.o common-main.o libgit.a xdiff/lib.a reftable/libreftable.a libgit.a -lpcre2-8 -lz -lpthread -lrt
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' -o git-shell -Wl,-z,relro shell.o common-main.o libgit.a xdiff/lib.a reftable/libreftable.a libgit.a -lpcre2-8 -lz -lpthread -lrt
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' -o git-http-fetch -Wl,-z,relro http.o http-walker.o http-fetch.o common-main.o \
-lcurl libgit.a xdiff/lib.a reftable/libreftable.a libgit.a -lpcre2-8 -lz -lpthread -lrt
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' -o git-http-push -Wl,-z,relro http.o http-push.o common-main.o \
-lcurl -lexpat libgit.a xdiff/lib.a reftable/libreftable.a libgit.a -lpcre2-8 -lz -lpthread -lrt
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' -o git-remote-http -Wl,-z,relro remote-curl.o http.o http-walker.o common-main.o \
-lcurl -lexpat libgit.a xdiff/lib.a reftable/libreftable.a libgit.a -lpcre2-8 -lz -lpthread -lrt
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-remote-https && \
ln git-remote-http git-remote-https 2>/dev/null || \
ln -s git-remote-http git-remote-https 2>/dev/null || \
cp git-remote-http git-remote-https
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-remote-ftp && \
ln git-remote-http git-remote-ftp 2>/dev/null || \
ln -s git-remote-http git-remote-ftp 2>/dev/null || \
cp git-remote-http git-remote-ftp
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-remote-ftps && \
ln git-remote-http git-remote-ftps 2>/dev/null || \
ln -s git-remote-http git-remote-ftps 2>/dev/null || \
cp git-remote-http git-remote-ftps
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' -o scalar -Wl,-z,relro \
scalar.o common-main.o libgit.a xdiff/lib.a reftable/libreftable.a libgit.a -lpcre2-8 -lz -lpthread -lrt
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' -o git -Wl,-z,relro \
git.o builtin/add.o builtin/am.o builtin/annotate.o builtin/apply.o builtin/archive.o builtin/bisect.o builtin/blame.o builtin/branch.o builtin/bugreport.o builtin/bundle.o builtin/cat-file.o builtin/check-attr.o builtin/check-ignore.o builtin/check-mailmap.o builtin/check-ref-format.o builtin/checkout--worker.o builtin/checkout-index.o builtin/checkout.o builtin/clean.o builtin/clone.o builtin/column.o builtin/commit-graph.o builtin/commit-tree.o builtin/commit.o builtin/config.o builtin/count-objects.o builtin/credential-cache--daemon.o builtin/credential-cache.o builtin/credential-store.o builtin/credential.o builtin/describe.o builtin/diagnose.o builtin/diff-files.o builtin/diff-index.o builtin/diff-tree.o builtin/diff.o builtin/difftool.o builtin/fast-export.o builtin/fast-import.o builtin/fetch-pack.o builtin/fetch.o builtin/fmt-merge-msg.o builtin/for-each-ref.o builtin/for-each-repo.o builtin/fsck.o builtin/fsmonitor--daemon.o builtin/gc.o builtin/get-tar-commit-id.o builtin/grep.o builtin/hash-object.o builtin/help.o builtin/hook.o builtin/index-pack.o builtin/init-db.o builtin/interpret-trailers.o builtin/log.o builtin/ls-files.o builtin/ls-remote.o builtin/ls-tree.o builtin/mailinfo.o builtin/mailsplit.o builtin/merge-base.o builtin/merge-file.o builtin/merge-index.o builtin/merge-ours.o builtin/merge-recursive.o builtin/merge-tree.o builtin/merge.o builtin/mktag.o builtin/mktree.o builtin/multi-pack-index.o builtin/mv.o builtin/name-rev.o builtin/notes.o builtin/pack-objects.o builtin/pack-redundant.o builtin/pack-refs.o builtin/patch-id.o builtin/prune-packed.o builtin/prune.o builtin/pull.o builtin/push.o builtin/range-diff.o builtin/read-tree.o builtin/rebase.o builtin/receive-pack.o builtin/reflog.o builtin/remote-ext.o builtin/remote-fd.o builtin/remote.o builtin/repack.o builtin/replace.o builtin/rerere.o builtin/reset.o builtin/rev-list.o builtin/rev-parse.o builtin/revert.o builtin/rm.o builtin/send-pack.o builtin/shortlog.o builtin/show-branch.o builtin/show-index.o builtin/show-ref.o builtin/sparse-checkout.o builtin/stash.o builtin/stripspace.o builtin/submodule--helper.o builtin/symbolic-ref.o builtin/tag.o builtin/unpack-file.o builtin/unpack-objects.o builtin/update-index.o builtin/update-ref.o builtin/update-server-info.o builtin/upload-archive.o builtin/upload-pack.o builtin/var.o builtin/verify-commit.o builtin/verify-pack.o builtin/verify-tag.o builtin/worktree.o builtin/write-tree.o common-main.o libgit.a xdiff/lib.a reftable/libreftable.a libgit.a -lpcre2-8 -lz -lpthread -lrt
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-add && \
ln git git-add 2>/dev/null || \
ln -s git git-add 2>/dev/null || \
cp git git-add
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-am && \
ln git git-am 2>/dev/null || \
ln -s git git-am 2>/dev/null || \
cp git git-am
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-annotate && \
ln git git-annotate 2>/dev/null || \
ln -s git git-annotate 2>/dev/null || \
cp git git-annotate
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-apply && \
ln git git-apply 2>/dev/null || \
ln -s git git-apply 2>/dev/null || \
cp git git-apply
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-bisect && \
ln git git-bisect 2>/dev/null || \
ln -s git git-bisect 2>/dev/null || \
cp git git-bisect
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-blame && \
ln git git-blame 2>/dev/null || \
ln -s git git-blame 2>/dev/null || \
cp git git-blame
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-archive && \
ln git git-archive 2>/dev/null || \
ln -s git git-archive 2>/dev/null || \
cp git git-archive
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-branch && \
ln git git-branch 2>/dev/null || \
ln -s git git-branch 2>/dev/null || \
cp git git-branch
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-bugreport && \
ln git git-bugreport 2>/dev/null || \
ln -s git git-bugreport 2>/dev/null || \
cp git git-bugreport
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-bundle && \
ln git git-bundle 2>/dev/null || \
ln -s git git-bundle 2>/dev/null || \
cp git git-bundle
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-cat-file && \
ln git git-cat-file 2>/dev/null || \
ln -s git git-cat-file 2>/dev/null || \
cp git git-cat-file
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-check-ignore && \
ln git git-check-ignore 2>/dev/null || \
ln -s git git-check-ignore 2>/dev/null || \
cp git git-check-ignore
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-check-mailmap && \
ln git git-check-mailmap 2>/dev/null || \
ln -s git git-check-mailmap 2>/dev/null || \
cp git git-check-mailmap
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-check-attr && \
ln git git-check-attr 2>/dev/null || \
ln -s git git-check-attr 2>/dev/null || \
cp git git-check-attr
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-check-ref-format && \
ln git git-check-ref-format 2>/dev/null || \
ln -s git git-check-ref-format 2>/dev/null || \
cp git git-check-ref-format
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-checkout--worker && \
ln git git-checkout--worker 2>/dev/null || \
ln -s git git-checkout--worker 2>/dev/null || \
cp git git-checkout--worker
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-checkout-index && \
ln git git-checkout-index 2>/dev/null || \
ln -s git git-checkout-index 2>/dev/null || \
cp git git-checkout-index
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-clean && \
ln git git-clean 2>/dev/null || \
ln -s git git-clean 2>/dev/null || \
cp git git-clean
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-checkout && \
ln git git-checkout 2>/dev/null || \
ln -s git git-checkout 2>/dev/null || \
cp git git-checkout
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-clone && \
ln git git-clone 2>/dev/null || \
ln -s git git-clone 2>/dev/null || \
cp git git-clone
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-commit-graph && \
ln git git-commit-graph 2>/dev/null || \
ln -s git git-commit-graph 2>/dev/null || \
cp git git-commit-graph
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-column && \
ln git git-column 2>/dev/null || \
ln -s git git-column 2>/dev/null || \
cp git git-column
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-commit-tree && \
ln git git-commit-tree 2>/dev/null || \
ln -s git git-commit-tree 2>/dev/null || \
cp git git-commit-tree
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-commit && \
ln git git-commit 2>/dev/null || \
ln -s git git-commit 2>/dev/null || \
cp git git-commit
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-config && \
ln git git-config 2>/dev/null || \
ln -s git git-config 2>/dev/null || \
cp git git-config
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-count-objects && \
ln git git-count-objects 2>/dev/null || \
ln -s git git-count-objects 2>/dev/null || \
cp git git-count-objects
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-credential-cache && \
ln git git-credential-cache 2>/dev/null || \
ln -s git git-credential-cache 2>/dev/null || \
cp git git-credential-cache
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-credential-cache--daemon && \
ln git git-credential-cache--daemon 2>/dev/null || \
ln -s git git-credential-cache--daemon 2>/dev/null || \
cp git git-credential-cache--daemon
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-credential-store && \
ln git git-credential-store 2>/dev/null || \
ln -s git git-credential-store 2>/dev/null || \
cp git git-credential-store
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-credential && \
ln git git-credential 2>/dev/null || \
ln -s git git-credential 2>/dev/null || \
cp git git-credential
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-describe && \
ln git git-describe 2>/dev/null || \
ln -s git git-describe 2>/dev/null || \
cp git git-describe
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-diff-files && \
ln git git-diff-files 2>/dev/null || \
ln -s git git-diff-files 2>/dev/null || \
cp git git-diff-files
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-diagnose && \
ln git git-diagnose 2>/dev/null || \
ln -s git git-diagnose 2>/dev/null || \
cp git git-diagnose
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-diff-index && \
ln git git-diff-index 2>/dev/null || \
ln -s git git-diff-index 2>/dev/null || \
cp git git-diff-index
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-diff-tree && \
ln git git-diff-tree 2>/dev/null || \
ln -s git git-diff-tree 2>/dev/null || \
cp git git-diff-tree
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-diff && \
ln git git-diff 2>/dev/null || \
ln -s git git-diff 2>/dev/null || \
cp git git-diff
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-fast-export && \
ln git git-fast-export 2>/dev/null || \
ln -s git git-fast-export 2>/dev/null || \
cp git git-fast-export
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-fast-import && \
ln git git-fast-import 2>/dev/null || \
ln -s git git-fast-import 2>/dev/null || \
cp git git-fast-import
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-difftool && \
ln git git-difftool 2>/dev/null || \
ln -s git git-difftool 2>/dev/null || \
cp git git-difftool
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-fetch-pack && \
ln git git-fetch-pack 2>/dev/null || \
ln -s git git-fetch-pack 2>/dev/null || \
cp git git-fetch-pack
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-fetch && \
ln git git-fetch 2>/dev/null || \
ln -s git git-fetch 2>/dev/null || \
cp git git-fetch
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-fmt-merge-msg && \
ln git git-fmt-merge-msg 2>/dev/null || \
ln -s git git-fmt-merge-msg 2>/dev/null || \
cp git git-fmt-merge-msg
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-for-each-ref && \
ln git git-for-each-ref 2>/dev/null || \
ln -s git git-for-each-ref 2>/dev/null || \
cp git git-for-each-ref
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-fsck && \
ln git git-fsck 2>/dev/null || \
ln -s git git-fsck 2>/dev/null || \
cp git git-fsck
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-fsmonitor--daemon && \
ln git git-fsmonitor--daemon 2>/dev/null || \
ln -s git git-fsmonitor--daemon 2>/dev/null || \
cp git git-fsmonitor--daemon
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-for-each-repo && \
ln git git-for-each-repo 2>/dev/null || \
ln -s git git-for-each-repo 2>/dev/null || \
cp git git-for-each-repo
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-get-tar-commit-id && \
ln git git-get-tar-commit-id 2>/dev/null || \
ln -s git git-get-tar-commit-id 2>/dev/null || \
cp git git-get-tar-commit-id
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-grep && \
ln git git-grep 2>/dev/null || \
ln -s git git-grep 2>/dev/null || \
cp git git-grep
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-gc && \
ln git git-gc 2>/dev/null || \
ln -s git git-gc 2>/dev/null || \
cp git git-gc
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-hash-object && \
ln git git-hash-object 2>/dev/null || \
ln -s git git-hash-object 2>/dev/null || \
cp git git-hash-object
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-help && \
ln git git-help 2>/dev/null || \
ln -s git git-help 2>/dev/null || \
cp git git-help
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-hook && \
ln git git-hook 2>/dev/null || \
ln -s git git-hook 2>/dev/null || \
cp git git-hook
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-index-pack && \
ln git git-index-pack 2>/dev/null || \
ln -s git git-index-pack 2>/dev/null || \
cp git git-index-pack
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-init-db && \
ln git git-init-db 2>/dev/null || \
ln -s git git-init-db 2>/dev/null || \
cp git git-init-db
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-interpret-trailers && \
ln git git-interpret-trailers 2>/dev/null || \
ln -s git git-interpret-trailers 2>/dev/null || \
cp git git-interpret-trailers
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-ls-files && \
ln git git-ls-files 2>/dev/null || \
ln -s git git-ls-files 2>/dev/null || \
cp git git-ls-files
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-ls-remote && \
ln git git-ls-remote 2>/dev/null || \
ln -s git git-ls-remote 2>/dev/null || \
cp git git-ls-remote
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-log && \
ln git git-log 2>/dev/null || \
ln -s git git-log 2>/dev/null || \
cp git git-log
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-ls-tree && \
ln git git-ls-tree 2>/dev/null || \
ln -s git git-ls-tree 2>/dev/null || \
cp git git-ls-tree
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-mailinfo && \
ln git git-mailinfo 2>/dev/null || \
ln -s git git-mailinfo 2>/dev/null || \
cp git git-mailinfo
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-mailsplit && \
ln git git-mailsplit 2>/dev/null || \
ln -s git git-mailsplit 2>/dev/null || \
cp git git-mailsplit
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-merge-file && \
ln git git-merge-file 2>/dev/null || \
ln -s git git-merge-file 2>/dev/null || \
cp git git-merge-file
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-merge-index && \
ln git git-merge-index 2>/dev/null || \
ln -s git git-merge-index 2>/dev/null || \
cp git git-merge-index
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-merge-base && \
ln git git-merge-base 2>/dev/null || \
ln -s git git-merge-base 2>/dev/null || \
cp git git-merge-base
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-merge-ours && \
ln git git-merge-ours 2>/dev/null || \
ln -s git git-merge-ours 2>/dev/null || \
cp git git-merge-ours
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-merge-recursive && \
ln git git-merge-recursive 2>/dev/null || \
ln -s git git-merge-recursive 2>/dev/null || \
cp git git-merge-recursive
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-merge-tree && \
ln git git-merge-tree 2>/dev/null || \
ln -s git git-merge-tree 2>/dev/null || \
cp git git-merge-tree
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-merge && \
ln git git-merge 2>/dev/null || \
ln -s git git-merge 2>/dev/null || \
cp git git-merge
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-mktree && \
ln git git-mktree 2>/dev/null || \
ln -s git git-mktree 2>/dev/null || \
cp git git-mktree
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-mktag && \
ln git git-mktag 2>/dev/null || \
ln -s git git-mktag 2>/dev/null || \
cp git git-mktag
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-multi-pack-index && \
ln git git-multi-pack-index 2>/dev/null || \
ln -s git git-multi-pack-index 2>/dev/null || \
cp git git-multi-pack-index
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-mv && \
ln git git-mv 2>/dev/null || \
ln -s git git-mv 2>/dev/null || \
cp git git-mv
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-name-rev && \
ln git git-name-rev 2>/dev/null || \
ln -s git git-name-rev 2>/dev/null || \
cp git git-name-rev
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-notes && \
ln git git-notes 2>/dev/null || \
ln -s git git-notes 2>/dev/null || \
cp git git-notes
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-pack-objects && \
ln git git-pack-objects 2>/dev/null || \
ln -s git git-pack-objects 2>/dev/null || \
cp git git-pack-objects
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-pack-redundant && \
ln git git-pack-redundant 2>/dev/null || \
ln -s git git-pack-redundant 2>/dev/null || \
cp git git-pack-redundant
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-patch-id && \
ln git git-patch-id 2>/dev/null || \
ln -s git git-patch-id 2>/dev/null || \
cp git git-patch-id
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-pack-refs && \
ln git git-pack-refs 2>/dev/null || \
ln -s git git-pack-refs 2>/dev/null || \
cp git git-pack-refs
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-prune-packed && \
ln git git-prune-packed 2>/dev/null || \
ln -s git git-prune-packed 2>/dev/null || \
cp git git-prune-packed
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-prune && \
ln git git-prune 2>/dev/null || \
ln -s git git-prune 2>/dev/null || \
cp git git-prune
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-pull && \
ln git git-pull 2>/dev/null || \
ln -s git git-pull 2>/dev/null || \
cp git git-pull
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-push && \
ln git git-push 2>/dev/null || \
ln -s git git-push 2>/dev/null || \
cp git git-push
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-range-diff && \
ln git git-range-diff 2>/dev/null || \
ln -s git git-range-diff 2>/dev/null || \
cp git git-range-diff
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-read-tree && \
ln git git-read-tree 2>/dev/null || \
ln -s git git-read-tree 2>/dev/null || \
cp git git-read-tree
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-rebase && \
ln git git-rebase 2>/dev/null || \
ln -s git git-rebase 2>/dev/null || \
cp git git-rebase
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-reflog && \
ln git git-reflog 2>/dev/null || \
ln -s git git-reflog 2>/dev/null || \
cp git git-reflog
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-remote-ext && \
ln git git-remote-ext 2>/dev/null || \
ln -s git git-remote-ext 2>/dev/null || \
cp git git-remote-ext
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-receive-pack && \
ln git git-receive-pack 2>/dev/null || \
ln -s git git-receive-pack 2>/dev/null || \
cp git git-receive-pack
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-remote-fd && \
ln git git-remote-fd 2>/dev/null || \
ln -s git git-remote-fd 2>/dev/null || \
cp git git-remote-fd
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-remote && \
ln git git-remote 2>/dev/null || \
ln -s git git-remote 2>/dev/null || \
cp git git-remote
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-repack && \
ln git git-repack 2>/dev/null || \
ln -s git git-repack 2>/dev/null || \
cp git git-repack
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-replace && \
ln git git-replace 2>/dev/null || \
ln -s git git-replace 2>/dev/null || \
cp git git-replace
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-rerere && \
ln git git-rerere 2>/dev/null || \
ln -s git git-rerere 2>/dev/null || \
cp git git-rerere
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-reset && \
ln git git-reset 2>/dev/null || \
ln -s git git-reset 2>/dev/null || \
cp git git-reset
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-rev-parse && \
ln git git-rev-parse 2>/dev/null || \
ln -s git git-rev-parse 2>/dev/null || \
cp git git-rev-parse
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-rev-list && \
ln git git-rev-list 2>/dev/null || \
ln -s git git-rev-list 2>/dev/null || \
cp git git-rev-list
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-rm && \
ln git git-rm 2>/dev/null || \
ln -s git git-rm 2>/dev/null || \
cp git git-rm
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-revert && \
ln git git-revert 2>/dev/null || \
ln -s git git-revert 2>/dev/null || \
cp git git-revert
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-send-pack && \
ln git git-send-pack 2>/dev/null || \
ln -s git git-send-pack 2>/dev/null || \
cp git git-send-pack
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-shortlog && \
ln git git-shortlog 2>/dev/null || \
ln -s git git-shortlog 2>/dev/null || \
cp git git-shortlog
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-show-branch && \
ln git git-show-branch 2>/dev/null || \
ln -s git git-show-branch 2>/dev/null || \
cp git git-show-branch
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-show-index && \
ln git git-show-index 2>/dev/null || \
ln -s git git-show-index 2>/dev/null || \
cp git git-show-index
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-show-ref && \
ln git git-show-ref 2>/dev/null || \
ln -s git git-show-ref 2>/dev/null || \
cp git git-show-ref
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-stash && \
ln git git-stash 2>/dev/null || \
ln -s git git-stash 2>/dev/null || \
cp git git-stash
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-sparse-checkout && \
ln git git-sparse-checkout 2>/dev/null || \
ln -s git git-sparse-checkout 2>/dev/null || \
cp git git-sparse-checkout
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-stripspace && \
ln git git-stripspace 2>/dev/null || \
ln -s git git-stripspace 2>/dev/null || \
cp git git-stripspace
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-submodule--helper && \
ln git git-submodule--helper 2>/dev/null || \
ln -s git git-submodule--helper 2>/dev/null || \
cp git git-submodule--helper
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-symbolic-ref && \
ln git git-symbolic-ref 2>/dev/null || \
ln -s git git-symbolic-ref 2>/dev/null || \
cp git git-symbolic-ref
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-tag && \
ln git git-tag 2>/dev/null || \
ln -s git git-tag 2>/dev/null || \
cp git git-tag
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-unpack-objects && \
ln git git-unpack-objects 2>/dev/null || \
ln -s git git-unpack-objects 2>/dev/null || \
cp git git-unpack-objects
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-update-index && \
ln git git-update-index 2>/dev/null || \
ln -s git git-update-index 2>/dev/null || \
cp git git-update-index
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-update-ref && \
ln git git-update-ref 2>/dev/null || \
ln -s git git-update-ref 2>/dev/null || \
cp git git-update-ref
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-unpack-file && \
ln git git-unpack-file 2>/dev/null || \
ln -s git git-unpack-file 2>/dev/null || \
cp git git-unpack-file
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-update-server-info && \
ln git git-update-server-info 2>/dev/null || \
ln -s git git-update-server-info 2>/dev/null || \
cp git git-update-server-info
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-upload-archive && \
ln git git-upload-archive 2>/dev/null || \
ln -s git git-upload-archive 2>/dev/null || \
cp git git-upload-archive
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-upload-pack && \
ln git git-upload-pack 2>/dev/null || \
ln -s git git-upload-pack 2>/dev/null || \
cp git git-upload-pack
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-var && \
ln git git-var 2>/dev/null || \
ln -s git git-var 2>/dev/null || \
cp git git-var
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-verify-pack && \
ln git git-verify-pack 2>/dev/null || \
ln -s git git-verify-pack 2>/dev/null || \
cp git git-verify-pack
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-verify-tag && \
ln git git-verify-tag 2>/dev/null || \
ln -s git git-verify-tag 2>/dev/null || \
cp git git-verify-tag
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-worktree && \
ln git git-worktree 2>/dev/null || \
ln -s git git-worktree 2>/dev/null || \
cp git git-worktree
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-verify-commit && \
ln git git-verify-commit 2>/dev/null || \
ln -s git git-verify-commit 2>/dev/null || \
cp git git-verify-commit
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-write-tree && \
ln git git-write-tree 2>/dev/null || \
ln -s git git-write-tree 2>/dev/null || \
cp git git-write-tree
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-cherry && \
ln git git-cherry 2>/dev/null || \
ln -s git git-cherry 2>/dev/null || \
cp git git-cherry
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-cherry-pick && \
ln git git-cherry-pick 2>/dev/null || \
ln -s git git-cherry-pick 2>/dev/null || \
cp git git-cherry-pick
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-format-patch && \
ln git git-format-patch 2>/dev/null || \
ln -s git git-format-patch 2>/dev/null || \
cp git git-format-patch
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-fsck-objects && \
ln git git-fsck-objects 2>/dev/null || \
ln -s git git-fsck-objects 2>/dev/null || \
cp git git-fsck-objects
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-maintenance && \
ln git git-maintenance 2>/dev/null || \
ln -s git git-maintenance 2>/dev/null || \
cp git git-maintenance
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-init && \
ln git git-init 2>/dev/null || \
ln -s git git-init 2>/dev/null || \
cp git git-init
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-restore && \
ln git git-restore 2>/dev/null || \
ln -s git git-restore 2>/dev/null || \
cp git git-restore
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-merge-subtree && \
ln git git-merge-subtree 2>/dev/null || \
ln -s git git-merge-subtree 2>/dev/null || \
cp git git-merge-subtree
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-stage && \
ln git git-stage 2>/dev/null || \
ln -s git git-stage 2>/dev/null || \
cp git git-stage
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-show && \
ln git git-show 2>/dev/null || \
ln -s git git-show 2>/dev/null || \
cp git git-show
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-status && \
ln git git-status 2>/dev/null || \
ln -s git git-status 2>/dev/null || \
cp git git-status
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-switch && \
ln git git-switch 2>/dev/null || \
ln -s git git-switch 2>/dev/null || \
cp git git-switch
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-version && \
ln git git-version 2>/dev/null || \
ln -s git git-version 2>/dev/null || \
cp git git-version
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f git-whatchanged && \
ln git git-whatchanged 2>/dev/null || \
ln -s git git-whatchanged 2>/dev/null || \
cp git git-whatchanged
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
/usr/bin/make -C git-gui gitexecdir='/usr/lib/git-core' all
make[3]: Entering directory '/<<PKGBUILDDIR>>/git-gui'
GITGUI_VERSION = 0.21.GITGUI
make[3]: Leaving directory '/<<PKGBUILDDIR>>/git-gui'
make[3]: Entering directory '/<<PKGBUILDDIR>>/git-gui'
* new locations or Tcl/Tk interpreter
make[3]: Leaving directory '/<<PKGBUILDDIR>>/git-gui'
make[3]: Entering directory '/<<PKGBUILDDIR>>/git-gui'
msgfmt --statistics --tcl -l el -d po/ po/el.po
381 translated messages, 4 fuzzy translations, 6 untranslated messages.
make[3]: Leaving directory '/<<PKGBUILDDIR>>/git-gui'
make[3]: Entering directory '/<<PKGBUILDDIR>>/git-gui'
msgfmt --statistics --tcl -l de -d po/ po/de.po
579 translated messages.
make[3]: Leaving directory '/<<PKGBUILDDIR>>/git-gui'
make[3]: Entering directory '/<<PKGBUILDDIR>>/git-gui'
msgfmt --statistics --tcl -l fr -d po/ po/fr.po
520 translated messages.
make[3]: Leaving directory '/<<PKGBUILDDIR>>/git-gui'
make[3]: Entering directory '/<<PKGBUILDDIR>>/git-gui'
msgfmt --statistics --tcl -l bg -d po/ po/bg.po
565 translated messages.
make[3]: Leaving directory '/<<PKGBUILDDIR>>/git-gui'
make[3]: Entering directory '/<<PKGBUILDDIR>>/git-gui'
msgfmt --statistics --tcl -l hu -d po/ po/hu.po
514 translated messages.
make[3]: Leaving directory '/<<PKGBUILDDIR>>/git-gui'
make[3]: Entering directory '/<<PKGBUILDDIR>>/git-gui'
msgfmt --statistics --tcl -l it -d po/ po/it.po
519 translated messages, 1 untranslated message.
make[3]: Leaving directory '/<<PKGBUILDDIR>>/git-gui'
make[3]: Entering directory '/<<PKGBUILDDIR>>/git-gui'
msgfmt --statistics --tcl -l nb -d po/ po/nb.po
474 translated messages, 39 untranslated messages.
make[3]: Leaving directory '/<<PKGBUILDDIR>>/git-gui'
make[3]: Entering directory '/<<PKGBUILDDIR>>/git-gui'
msgfmt --statistics --tcl -l ja -d po/ po/ja.po
546 translated messages, 1 untranslated message.
make[3]: Leaving directory '/<<PKGBUILDDIR>>/git-gui'
make[3]: Entering directory '/<<PKGBUILDDIR>>/git-gui'
msgfmt --statistics --tcl -l pt_br -d po/ po/pt_br.po
520 translated messages.
make[3]: Leaving directory '/<<PKGBUILDDIR>>/git-gui'
make[3]: Entering directory '/<<PKGBUILDDIR>>/git-gui'
msgfmt --statistics --tcl -l pt_pt -d po/ po/pt_pt.po
550 translated messages.
make[3]: Leaving directory '/<<PKGBUILDDIR>>/git-gui'
make[3]: Entering directory '/<<PKGBUILDDIR>>/git-gui'
msgfmt --statistics --tcl -l sv -d po/ po/sv.po
547 translated messages.
make[3]: Leaving directory '/<<PKGBUILDDIR>>/git-gui'
make[3]: Entering directory '/<<PKGBUILDDIR>>/git-gui'
msgfmt --statistics --tcl -l ru -d po/ po/ru.po
579 translated messages.
make[3]: Leaving directory '/<<PKGBUILDDIR>>/git-gui'
make[3]: Entering directory '/<<PKGBUILDDIR>>/git-gui'
msgfmt --statistics --tcl -l zh_cn -d po/ po/zh_cn.po
366 translated messages, 7 fuzzy translations, 17 untranslated messages.
make[3]: Leaving directory '/<<PKGBUILDDIR>>/git-gui'
make[3]: Entering directory '/<<PKGBUILDDIR>>/git-gui'
msgfmt --statistics --tcl -l vi -d po/ po/vi.po
543 translated messages.
make[3]: Leaving directory '/<<PKGBUILDDIR>>/git-gui'
make[3]: Entering directory '/<<PKGBUILDDIR>>/git-gui'
rm -f git-gui git-gui+ && \
sed -e '1s|#!.*/sh|#!/bin/sh|' \
-e 's|@@SHELL_PATH@@|/bin/sh|' \
-e '1,30s|^ argv0=$0| argv0=$0|' \
-e '1,30s|^ exec wish | exec '\''wish'\'' |' \
-e 's/@@GITGUI_VERSION@@/0.21.GITGUI/g' \
-e 's|@@GITGUI_RELATIVE@@||' \
-e 's|@@GITGUI_LIBDIR@@|/usr/share/git-gui/lib|' \
git-gui.sh >git-gui+ && \
chmod +x git-gui+ && \
mv git-gui+ git-gui
make[3]: Leaving directory '/<<PKGBUILDDIR>>/git-gui'
make[3]: Entering directory '/<<PKGBUILDDIR>>/git-gui'
if echo \
source lib/class.tcl\; \
auto_mkindex lib about.tcl blame.tcl branch.tcl branch_checkout.tcl branch_create.tcl branch_delete.tcl branch_rename.tcl browser.tcl checkout_op.tcl choose_font.tcl choose_repository.tcl choose_rev.tcl chord.tcl class.tcl commit.tcl console.tcl database.tcl date.tcl diff.tcl encoding.tcl error.tcl index.tcl line.tcl logo.tcl merge.tcl mergetool.tcl option.tcl remote.tcl remote_add.tcl remote_branch_delete.tcl search.tcl shortcut.tcl spellcheck.tcl sshkey.tcl status_bar.tcl themed.tcl tools.tcl tools_dlg.tcl transport.tcl win32.tcl \
| tclsh ; then : ok; \
else \
echo >&2 " * tclsh failed; using unoptimized loading"; \
rm -f lib/tclIndex ; \
echo '# Autogenerated by git-gui Makefile' >lib/tclIndex && \
echo >>lib/tclIndex && \
echo 'class.tcl' >>lib/tclIndex && echo 'about.tcl' >>lib/tclIndex && echo 'blame.tcl' >>lib/tclIndex && echo 'branch.tcl' >>lib/tclIndex && echo 'branch_checkout.tcl' >>lib/tclIndex && echo 'branch_create.tcl' >>lib/tclIndex && echo 'branch_delete.tcl' >>lib/tclIndex && echo 'branch_rename.tcl' >>lib/tclIndex && echo 'browser.tcl' >>lib/tclIndex && echo 'checkout_op.tcl' >>lib/tclIndex && echo 'choose_font.tcl' >>lib/tclIndex && echo 'choose_repository.tcl' >>lib/tclIndex && echo 'choose_rev.tcl' >>lib/tclIndex && echo 'chord.tcl' >>lib/tclIndex && echo 'class.tcl' >>lib/tclIndex && echo 'commit.tcl' >>lib/tclIndex && echo 'console.tcl' >>lib/tclIndex && echo 'database.tcl' >>lib/tclIndex && echo 'date.tcl' >>lib/tclIndex && echo 'diff.tcl' >>lib/tclIndex && echo 'encoding.tcl' >>lib/tclIndex && echo 'error.tcl' >>lib/tclIndex && echo 'index.tcl' >>lib/tclIndex && echo 'line.tcl' >>lib/tclIndex && echo 'logo.tcl' >>lib/tclIndex && echo 'merge.tcl' >>lib/tclIndex && echo 'mergetool.tcl' >>lib/tclIndex && echo 'option.tcl' >>lib/tclIndex && echo 'remote.tcl' >>lib/tclIndex && echo 'remote_add.tcl' >>lib/tclIndex && echo 'remote_branch_delete.tcl' >>lib/tclIndex && echo 'search.tcl' >>lib/tclIndex && echo 'shortcut.tcl' >>lib/tclIndex && echo 'spellcheck.tcl' >>lib/tclIndex && echo 'sshkey.tcl' >>lib/tclIndex && echo 'status_bar.tcl' >>lib/tclIndex && echo 'themed.tcl' >>lib/tclIndex && echo 'tools.tcl' >>lib/tclIndex && echo 'tools_dlg.tcl' >>lib/tclIndex && echo 'transport.tcl' >>lib/tclIndex && echo 'win32.tcl' >>lib/tclIndex && \
echo >>lib/tclIndex ; \
fi
make[3]: Leaving directory '/<<PKGBUILDDIR>>/git-gui'
/usr/bin/make -C gitk-git all
make[3]: Entering directory '/<<PKGBUILDDIR>>/gitk-git'
* new Tcl/Tk interpreter location
make[3]: Leaving directory '/<<PKGBUILDDIR>>/gitk-git'
make[3]: Entering directory '/<<PKGBUILDDIR>>/gitk-git'
Generating catalog po/ca.msg
msgfmt --statistics --tcl po/ca.po -l ca -d po/
307 translated messages.
make[3]: Leaving directory '/<<PKGBUILDDIR>>/gitk-git'
make[3]: Entering directory '/<<PKGBUILDDIR>>/gitk-git'
Generating catalog po/de.msg
msgfmt --statistics --tcl po/de.po -l de -d po/
307 translated messages.
make[3]: Leaving directory '/<<PKGBUILDDIR>>/gitk-git'
make[3]: Entering directory '/<<PKGBUILDDIR>>/gitk-git'
Generating catalog po/bg.msg
msgfmt --statistics --tcl po/bg.po -l bg -d po/
317 translated messages.
make[3]: Leaving directory '/<<PKGBUILDDIR>>/gitk-git'
make[3]: Entering directory '/<<PKGBUILDDIR>>/gitk-git'
Generating catalog po/es.msg
msgfmt --statistics --tcl po/es.po -l es -d po/
184 translated messages, 46 fuzzy translations, 77 untranslated messages.
make[3]: Leaving directory '/<<PKGBUILDDIR>>/gitk-git'
make[3]: Entering directory '/<<PKGBUILDDIR>>/gitk-git'
Generating catalog po/fr.msg
msgfmt --statistics --tcl po/fr.po -l fr -d po/
311 translated messages.
make[3]: Leaving directory '/<<PKGBUILDDIR>>/gitk-git'
make[3]: Entering directory '/<<PKGBUILDDIR>>/gitk-git'
Generating catalog po/hu.msg
msgfmt --statistics --tcl po/hu.po -l hu -d po/
277 translated messages, 18 fuzzy translations, 12 untranslated messages.
make[3]: Leaving directory '/<<PKGBUILDDIR>>/gitk-git'
make[3]: Entering directory '/<<PKGBUILDDIR>>/gitk-git'
Generating catalog po/it.msg
msgfmt --statistics --tcl po/it.po -l it -d po/
274 translated messages, 17 fuzzy translations, 16 untranslated messages.
make[3]: Leaving directory '/<<PKGBUILDDIR>>/gitk-git'
make[3]: Entering directory '/<<PKGBUILDDIR>>/gitk-git'
Generating catalog po/ja.msg
msgfmt --statistics --tcl po/ja.po -l ja -d po/
311 translated messages.
make[3]: Leaving directory '/<<PKGBUILDDIR>>/gitk-git'
make[3]: Entering directory '/<<PKGBUILDDIR>>/gitk-git'
Generating catalog po/pt_br.msg
msgfmt --statistics --tcl po/pt_br.po -l pt_br -d po/
279 translated messages, 16 fuzzy translations, 12 untranslated messages.
make[3]: Leaving directory '/<<PKGBUILDDIR>>/gitk-git'
make[3]: Entering directory '/<<PKGBUILDDIR>>/gitk-git'
Generating catalog po/ru.msg
msgfmt --statistics --tcl po/ru.po -l ru -d po/
317 translated messages.
make[3]: Leaving directory '/<<PKGBUILDDIR>>/gitk-git'
make[3]: Entering directory '/<<PKGBUILDDIR>>/gitk-git'
Generating catalog po/pt_pt.msg
msgfmt --statistics --tcl po/pt_pt.po -l pt_pt -d po/
311 translated messages.
make[3]: Leaving directory '/<<PKGBUILDDIR>>/gitk-git'
make[3]: Entering directory '/<<PKGBUILDDIR>>/gitk-git'
Generating catalog po/sv.msg
msgfmt --statistics --tcl po/sv.po -l sv -d po/
311 translated messages.
make[3]: Leaving directory '/<<PKGBUILDDIR>>/gitk-git'
make[3]: Entering directory '/<<PKGBUILDDIR>>/gitk-git'
Generating catalog po/vi.msg
msgfmt --statistics --tcl po/vi.po -l vi -d po/
307 translated messages.
make[3]: Leaving directory '/<<PKGBUILDDIR>>/gitk-git'
make[3]: Entering directory '/<<PKGBUILDDIR>>/gitk-git'
Generating catalog po/zh_cn.msg
msgfmt --statistics --tcl po/zh_cn.po -l zh_cn -d po/
317 translated messages.
make[3]: Leaving directory '/<<PKGBUILDDIR>>/gitk-git'
make[3]: Entering directory '/<<PKGBUILDDIR>>/gitk-git'
rm -f gitk-wish gitk-wish+ && \
sed -e '1,3s|^exec .* "$0"|exec wish "$0"|' <gitk >gitk-wish+ && \
chmod +x gitk-wish+ && \
mv -f gitk-wish+ gitk-wish
make[3]: Leaving directory '/<<PKGBUILDDIR>>/gitk-git'
/usr/bin/make -C templates SHELL_PATH='/bin/sh' PERL_PATH='/usr/bin/perl'
make[3]: Entering directory '/<<PKGBUILDDIR>>/templates'
: no custom templates yet
make[3]: Leaving directory '/<<PKGBUILDDIR>>/templates'
make[3]: Entering directory '/<<PKGBUILDDIR>>/templates'
umask 022 && ls *--* 2>/dev/null | \
while read boilerplate; \
do \
case "$boilerplate" in *~) continue ;; esac && \
dst=`echo "$boilerplate" | sed -e 's|^this|.|;s|--|/|g'` && \
dir=`expr "$dst" : '\(.*\)/'` && \
mkdir -p blt/$dir && \
case "$boilerplate" in \
*--) continue;; \
esac && \
sed -e '1s|#!.*/sh|#!/bin/sh|' \
-e 's|@SHELL_PATH@|/bin/sh|' \
-e 's|@PERL_PATH@|/usr/bin/perl|g' $boilerplate > \
blt/$dst && \
if test -x "$boilerplate"; then rx=rx; else rx=r; fi && \
chmod a+$rx "blt/$dst" || exit; \
done && \
date >boilerplates.made
make[3]: Leaving directory '/<<PKGBUILDDIR>>/templates'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
msgfmt --check -o po/build/locale/el/LC_MESSAGES/git.mo po/el.po
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
msgfmt --check -o po/build/locale/ca/LC_MESSAGES/git.mo po/ca.po
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
msgfmt --check -o po/build/locale/de/LC_MESSAGES/git.mo po/de.po
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
msgfmt --check -o po/build/locale/bg/LC_MESSAGES/git.mo po/bg.po
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
msgfmt --check -o po/build/locale/is/LC_MESSAGES/git.mo po/is.po
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
msgfmt --check -o po/build/locale/es/LC_MESSAGES/git.mo po/es.po
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
msgfmt --check -o po/build/locale/fr/LC_MESSAGES/git.mo po/fr.po
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
msgfmt --check -o po/build/locale/id/LC_MESSAGES/git.mo po/id.po
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
msgfmt --check -o po/build/locale/it/LC_MESSAGES/git.mo po/it.po
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
msgfmt --check -o po/build/locale/ko/LC_MESSAGES/git.mo po/ko.po
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
msgfmt --check -o po/build/locale/pl/LC_MESSAGES/git.mo po/pl.po
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
msgfmt --check -o po/build/locale/ru/LC_MESSAGES/git.mo po/ru.po
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
msgfmt --check -o po/build/locale/pt_PT/LC_MESSAGES/git.mo po/pt_PT.po
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
msgfmt --check -o po/build/locale/sv/LC_MESSAGES/git.mo po/sv.po
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
msgfmt --check -o po/build/locale/tr/LC_MESSAGES/git.mo po/tr.po
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
msgfmt --check -o po/build/locale/vi/LC_MESSAGES/git.mo po/vi.po
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
msgfmt --check -o po/build/locale/uk/LC_MESSAGES/git.mo po/uk.po
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
msgfmt --check -o po/build/locale/zh_CN/LC_MESSAGES/git.mo po/zh_CN.po
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
msgfmt --check -o po/build/locale/zh_TW/LC_MESSAGES/git.mo po/zh_TW.po
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
\
sed -e 's|@@LOCALEDIR@@|/usr/share/locale|g' \
-e 's|@@NO_GETTEXT@@||g' \
-e 's|@@NO_PERL_CPAN_FALLBACKS@@|1|g' \
< perl/Git.pm > perl/build/lib/Git.pm
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
\
sed -e 's|@@LOCALEDIR@@|/usr/share/locale|g' \
-e 's|@@NO_GETTEXT@@||g' \
-e 's|@@NO_PERL_CPAN_FALLBACKS@@|1|g' \
< perl/Git/I18N.pm > perl/build/lib/Git/I18N.pm
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
\
sed -e 's|@@LOCALEDIR@@|/usr/share/locale|g' \
-e 's|@@NO_GETTEXT@@||g' \
-e 's|@@NO_PERL_CPAN_FALLBACKS@@|1|g' \
< perl/Git/IndexInfo.pm > perl/build/lib/Git/IndexInfo.pm
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
\
sed -e 's|@@LOCALEDIR@@|/usr/share/locale|g' \
-e 's|@@NO_GETTEXT@@||g' \
-e 's|@@NO_PERL_CPAN_FALLBACKS@@|1|g' \
< perl/Git/LoadCPAN.pm > perl/build/lib/Git/LoadCPAN.pm
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
\
sed -e 's|@@LOCALEDIR@@|/usr/share/locale|g' \
-e 's|@@NO_GETTEXT@@||g' \
-e 's|@@NO_PERL_CPAN_FALLBACKS@@|1|g' \
< perl/Git/Packet.pm > perl/build/lib/Git/Packet.pm
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
\
sed -e 's|@@LOCALEDIR@@|/usr/share/locale|g' \
-e 's|@@NO_GETTEXT@@||g' \
-e 's|@@NO_PERL_CPAN_FALLBACKS@@|1|g' \
< perl/Git/LoadCPAN/Error.pm > perl/build/lib/Git/LoadCPAN/Error.pm
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
\
sed -e 's|@@LOCALEDIR@@|/usr/share/locale|g' \
-e 's|@@NO_GETTEXT@@||g' \
-e 's|@@NO_PERL_CPAN_FALLBACKS@@|1|g' \
< perl/Git/SVN.pm > perl/build/lib/Git/SVN.pm
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
\
sed -e 's|@@LOCALEDIR@@|/usr/share/locale|g' \
-e 's|@@NO_GETTEXT@@||g' \
-e 's|@@NO_PERL_CPAN_FALLBACKS@@|1|g' \
< perl/Git/SVN/Editor.pm > perl/build/lib/Git/SVN/Editor.pm
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
\
sed -e 's|@@LOCALEDIR@@|/usr/share/locale|g' \
-e 's|@@NO_GETTEXT@@||g' \
-e 's|@@NO_PERL_CPAN_FALLBACKS@@|1|g' \
< perl/Git/SVN/Fetcher.pm > perl/build/lib/Git/SVN/Fetcher.pm
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
\
sed -e 's|@@LOCALEDIR@@|/usr/share/locale|g' \
-e 's|@@NO_GETTEXT@@||g' \
-e 's|@@NO_PERL_CPAN_FALLBACKS@@|1|g' \
< perl/Git/SVN/Log.pm > perl/build/lib/Git/SVN/Log.pm
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
\
sed -e 's|@@LOCALEDIR@@|/usr/share/locale|g' \
-e 's|@@NO_GETTEXT@@||g' \
-e 's|@@NO_PERL_CPAN_FALLBACKS@@|1|g' \
< perl/Git/SVN/GlobSpec.pm > perl/build/lib/Git/SVN/GlobSpec.pm
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
\
sed -e 's|@@LOCALEDIR@@|/usr/share/locale|g' \
-e 's|@@NO_GETTEXT@@||g' \
-e 's|@@NO_PERL_CPAN_FALLBACKS@@|1|g' \
< perl/Git/SVN/Migration.pm > perl/build/lib/Git/SVN/Migration.pm
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
\
sed -e 's|@@LOCALEDIR@@|/usr/share/locale|g' \
-e 's|@@NO_GETTEXT@@||g' \
-e 's|@@NO_PERL_CPAN_FALLBACKS@@|1|g' \
< perl/Git/SVN/Prompt.pm > perl/build/lib/Git/SVN/Prompt.pm
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
\
sed -e 's|@@LOCALEDIR@@|/usr/share/locale|g' \
-e 's|@@NO_GETTEXT@@||g' \
-e 's|@@NO_PERL_CPAN_FALLBACKS@@|1|g' \
< perl/Git/SVN/Ra.pm > perl/build/lib/Git/SVN/Ra.pm
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
\
sed -e 's|@@LOCALEDIR@@|/usr/share/locale|g' \
-e 's|@@NO_GETTEXT@@||g' \
-e 's|@@NO_PERL_CPAN_FALLBACKS@@|1|g' \
< perl/Git/SVN/Utils.pm > perl/build/lib/Git/SVN/Utils.pm
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
\
sed -e 's|@@LOCALEDIR@@|/usr/share/locale|g' \
-e 's|@@NO_GETTEXT@@||g' \
-e 's|@@NO_PERL_CPAN_FALLBACKS@@|1|g' \
< perl/Git/LoadCPAN/Mail/Address.pm > perl/build/lib/Git/LoadCPAN/Mail/Address.pm
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
\
sed -e 's|@@LOCALEDIR@@|/usr/share/locale|g' \
-e 's|@@NO_GETTEXT@@||g' \
-e 's|@@NO_PERL_CPAN_FALLBACKS@@|1|g' \
< perl/Git/SVN/Memoize/YAML.pm > perl/build/lib/Git/SVN/Memoize/YAML.pm
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-fake-ssh.o -c -MF t/helper/.depend/test-fake-ssh.o.d -MQ t/helper/test-fake-ssh.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-fake-ssh.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o reftable/dump.o -c -MF reftable/.depend/dump.o.d -MQ reftable/dump.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' reftable/dump.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o reftable/basics_test.o -c -MF reftable/.depend/basics_test.o.d -MQ reftable/basics_test.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' reftable/basics_test.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o reftable/block_test.o -c -MF reftable/.depend/block_test.o.d -MQ reftable/block_test.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' reftable/block_test.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o reftable/pq_test.o -c -MF reftable/.depend/pq_test.o.d -MQ reftable/pq_test.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' reftable/pq_test.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o reftable/refname_test.o -c -MF reftable/.depend/refname_test.o.d -MQ reftable/refname_test.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' reftable/refname_test.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o reftable/record_test.o -c -MF reftable/.depend/record_test.o.d -MQ reftable/record_test.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' reftable/record_test.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o reftable/merged_test.o -c -MF reftable/.depend/merged_test.o.d -MQ reftable/merged_test.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' reftable/merged_test.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o reftable/test_framework.o -c -MF reftable/.depend/test_framework.o.d -MQ reftable/test_framework.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' reftable/test_framework.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o reftable/tree_test.o -c -MF reftable/.depend/tree_test.o.d -MQ reftable/tree_test.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' reftable/tree_test.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-tool.o -c -MF t/helper/.depend/test-tool.o.d -MQ t/helper/test-tool.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-tool.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-advise.o -c -MF t/helper/.depend/test-advise.o.d -MQ t/helper/test-advise.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-advise.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o reftable/readwrite_test.o -c -MF reftable/.depend/readwrite_test.o.d -MQ reftable/readwrite_test.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' reftable/readwrite_test.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-bitmap.o -c -MF t/helper/.depend/test-bitmap.o.d -MQ t/helper/test-bitmap.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-bitmap.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-bloom.o -c -MF t/helper/.depend/test-bloom.o.d -MQ t/helper/test-bloom.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-bloom.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-bundle-uri.o -c -MF t/helper/.depend/test-bundle-uri.o.d -MQ t/helper/test-bundle-uri.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-bundle-uri.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-cache-tree.o -c -MF t/helper/.depend/test-cache-tree.o.d -MQ t/helper/test-cache-tree.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-cache-tree.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-chmtime.o -c -MF t/helper/.depend/test-chmtime.o.d -MQ t/helper/test-chmtime.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-chmtime.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-crontab.o -c -MF t/helper/.depend/test-crontab.o.d -MQ t/helper/test-crontab.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-crontab.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-csprng.o -c -MF t/helper/.depend/test-csprng.o.d -MQ t/helper/test-csprng.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-csprng.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-config.o -c -MF t/helper/.depend/test-config.o.d -MQ t/helper/test-config.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-config.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-delta.o -c -MF t/helper/.depend/test-delta.o.d -MQ t/helper/test-delta.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-delta.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-date.o -c -MF t/helper/.depend/test-date.o.d -MQ t/helper/test-date.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-date.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-ctype.o -c -MF t/helper/.depend/test-ctype.o.d -MQ t/helper/test-ctype.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-ctype.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o reftable/stack_test.o -c -MF reftable/.depend/stack_test.o.d -MQ reftable/stack_test.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' reftable/stack_test.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-drop-caches.o -c -MF t/helper/.depend/test-drop-caches.o.d -MQ t/helper/test-drop-caches.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-drop-caches.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-dir-iterator.o -c -MF t/helper/.depend/test-dir-iterator.o.d -MQ t/helper/test-dir-iterator.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-dir-iterator.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-dump-cache-tree.o -c -MF t/helper/.depend/test-dump-cache-tree.o.d -MQ t/helper/test-dump-cache-tree.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-dump-cache-tree.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-dump-fsmonitor.o -c -MF t/helper/.depend/test-dump-fsmonitor.o.d -MQ t/helper/test-dump-fsmonitor.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-dump-fsmonitor.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-dump-split-index.o -c -MF t/helper/.depend/test-dump-split-index.o.d -MQ t/helper/test-dump-split-index.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-dump-split-index.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-dump-untracked-cache.o -c -MF t/helper/.depend/test-dump-untracked-cache.o.d -MQ t/helper/test-dump-untracked-cache.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-dump-untracked-cache.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-env-helper.o -c -MF t/helper/.depend/test-env-helper.o.d -MQ t/helper/test-env-helper.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-env-helper.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-example-decorate.o -c -MF t/helper/.depend/test-example-decorate.o.d -MQ t/helper/test-example-decorate.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-example-decorate.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-fsmonitor-client.o -c -MF t/helper/.depend/test-fsmonitor-client.o.d -MQ t/helper/test-fsmonitor-client.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-fsmonitor-client.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-genrandom.o -c -MF t/helper/.depend/test-genrandom.o.d -MQ t/helper/test-genrandom.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-genrandom.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-genzeros.o -c -MF t/helper/.depend/test-genzeros.o.d -MQ t/helper/test-genzeros.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-genzeros.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-fast-rebase.o -c -MF t/helper/.depend/test-fast-rebase.o.d -MQ t/helper/test-fast-rebase.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-fast-rebase.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-getcwd.o -c -MF t/helper/.depend/test-getcwd.o.d -MQ t/helper/test-getcwd.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-getcwd.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-hash-speed.o -c -MF t/helper/.depend/test-hash-speed.o.d -MQ t/helper/test-hash-speed.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-hash-speed.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-hash.o -c -MF t/helper/.depend/test-hash.o.d -MQ t/helper/test-hash.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-hash.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-hexdump.o -c -MF t/helper/.depend/test-hexdump.o.d -MQ t/helper/test-hexdump.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-hexdump.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-index-version.o -c -MF t/helper/.depend/test-index-version.o.d -MQ t/helper/test-index-version.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-index-version.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-hashmap.o -c -MF t/helper/.depend/test-hashmap.o.d -MQ t/helper/test-hashmap.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-hashmap.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-match-trees.o -c -MF t/helper/.depend/test-match-trees.o.d -MQ t/helper/test-match-trees.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-match-trees.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-lazy-init-name-hash.o -c -MF t/helper/.depend/test-lazy-init-name-hash.o.d -MQ t/helper/test-lazy-init-name-hash.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-lazy-init-name-hash.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-json-writer.o -c -MF t/helper/.depend/test-json-writer.o.d -MQ t/helper/test-json-writer.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-json-writer.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-mktemp.o -c -MF t/helper/.depend/test-mktemp.o.d -MQ t/helper/test-mktemp.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-mktemp.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-oid-array.o -c -MF t/helper/.depend/test-oid-array.o.d -MQ t/helper/test-oid-array.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-oid-array.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-oidtree.o -c -MF t/helper/.depend/test-oidtree.o.d -MQ t/helper/test-oidtree.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-oidtree.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-oidmap.o -c -MF t/helper/.depend/test-oidmap.o.d -MQ t/helper/test-oidmap.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-oidmap.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-online-cpus.o -c -MF t/helper/.depend/test-online-cpus.o.d -MQ t/helper/test-online-cpus.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-online-cpus.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-pack-mtimes.o -c -MF t/helper/.depend/test-pack-mtimes.o.d -MQ t/helper/test-pack-mtimes.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-pack-mtimes.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-mergesort.o -c -MF t/helper/.depend/test-mergesort.o.d -MQ t/helper/test-mergesort.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-mergesort.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-parse-pathspec-file.o -c -MF t/helper/.depend/test-parse-pathspec-file.o.d -MQ t/helper/test-parse-pathspec-file.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-parse-pathspec-file.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-partial-clone.o -c -MF t/helper/.depend/test-partial-clone.o.d -MQ t/helper/test-partial-clone.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-partial-clone.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-pcre2-config.o -c -MF t/helper/.depend/test-pcre2-config.o.d -MQ t/helper/test-pcre2-config.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-pcre2-config.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-parse-options.o -c -MF t/helper/.depend/test-parse-options.o.d -MQ t/helper/test-parse-options.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-parse-options.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-pkt-line.o -c -MF t/helper/.depend/test-pkt-line.o.d -MQ t/helper/test-pkt-line.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-pkt-line.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-prio-queue.o -c -MF t/helper/.depend/test-prio-queue.o.d -MQ t/helper/test-prio-queue.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-prio-queue.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-path-utils.o -c -MF t/helper/.depend/test-path-utils.o.d -MQ t/helper/test-path-utils.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-path-utils.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-progress.o -c -MF t/helper/.depend/test-progress.o.d -MQ t/helper/test-progress.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-progress.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-proc-receive.o -c -MF t/helper/.depend/test-proc-receive.o.d -MQ t/helper/test-proc-receive.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-proc-receive.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-read-cache.o -c -MF t/helper/.depend/test-read-cache.o.d -MQ t/helper/test-read-cache.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-read-cache.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-reach.o -c -MF t/helper/.depend/test-reach.o.d -MQ t/helper/test-reach.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-reach.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-read-graph.o -c -MF t/helper/.depend/test-read-graph.o.d -MQ t/helper/test-read-graph.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-read-graph.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-read-midx.o -c -MF t/helper/.depend/test-read-midx.o.d -MQ t/helper/test-read-midx.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-read-midx.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-reftable.o -c -MF t/helper/.depend/test-reftable.o.d -MQ t/helper/test-reftable.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-reftable.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-regex.o -c -MF t/helper/.depend/test-regex.o.d -MQ t/helper/test-regex.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-regex.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-repository.o -c -MF t/helper/.depend/test-repository.o.d -MQ t/helper/test-repository.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-repository.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-ref-store.o -c -MF t/helper/.depend/test-ref-store.o.d -MQ t/helper/test-ref-store.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-ref-store.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-revision-walking.o -c -MF t/helper/.depend/test-revision-walking.o.d -MQ t/helper/test-revision-walking.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-revision-walking.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-rot13-filter.o -c -MF t/helper/.depend/test-rot13-filter.o.d -MQ t/helper/test-rot13-filter.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-rot13-filter.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-scrap-cache-tree.o -c -MF t/helper/.depend/test-scrap-cache-tree.o.d -MQ t/helper/test-scrap-cache-tree.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-scrap-cache-tree.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-serve-v2.o -c -MF t/helper/.depend/test-serve-v2.o.d -MQ t/helper/test-serve-v2.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-serve-v2.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-sha1.o -c -MF t/helper/.depend/test-sha1.o.d -MQ t/helper/test-sha1.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-sha1.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-sha256.o -c -MF t/helper/.depend/test-sha256.o.d -MQ t/helper/test-sha256.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-sha256.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-sigchain.o -c -MF t/helper/.depend/test-sigchain.o.d -MQ t/helper/test-sigchain.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-sigchain.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-strcmp-offset.o -c -MF t/helper/.depend/test-strcmp-offset.o.d -MQ t/helper/test-strcmp-offset.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-strcmp-offset.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-run-command.o -c -MF t/helper/.depend/test-run-command.o.d -MQ t/helper/test-run-command.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-run-command.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-string-list.o -c -MF t/helper/.depend/test-string-list.o.d -MQ t/helper/test-string-list.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-string-list.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-submodule-nested-repo-config.o -c -MF t/helper/.depend/test-submodule-nested-repo-config.o.d -MQ t/helper/test-submodule-nested-repo-config.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-submodule-nested-repo-config.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-submodule-config.o -c -MF t/helper/.depend/test-submodule-config.o.d -MQ t/helper/test-submodule-config.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-submodule-config.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-simple-ipc.o -c -MF t/helper/.depend/test-simple-ipc.o.d -MQ t/helper/test-simple-ipc.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-simple-ipc.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-subprocess.o -c -MF t/helper/.depend/test-subprocess.o.d -MQ t/helper/test-subprocess.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-subprocess.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-urlmatch-normalization.o -c -MF t/helper/.depend/test-urlmatch-normalization.o.d -MQ t/helper/test-urlmatch-normalization.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-urlmatch-normalization.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-submodule.o -c -MF t/helper/.depend/test-submodule.o.d -MQ t/helper/test-submodule.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-submodule.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-userdiff.o -c -MF t/helper/.depend/test-userdiff.o.d -MQ t/helper/test-userdiff.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-userdiff.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-wildmatch.o -c -MF t/helper/.depend/test-wildmatch.o.d -MQ t/helper/test-wildmatch.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-wildmatch.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-trace2.o -c -MF t/helper/.depend/test-trace2.o.d -MQ t/helper/test-trace2.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-trace2.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-windows-named-pipe.o -c -MF t/helper/.depend/test-windows-named-pipe.o.d -MQ t/helper/test-windows-named-pipe.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-windows-named-pipe.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
sed -e '1s|#!.*/sh|#!/bin/sh|' \
-e 's|@@BUILD_DIR@@|/<<PKGBUILDDIR>>|' \
-e 's|@@PROG@@|git|' < wrap-for-bin.sh > bin-wrappers/git && \
chmod +x bin-wrappers/git
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
sed -e '1s|#!.*/sh|#!/bin/sh|' \
-e 's|@@BUILD_DIR@@|/<<PKGBUILDDIR>>|' \
-e 's|@@PROG@@|scalar|' < wrap-for-bin.sh > bin-wrappers/scalar && \
chmod +x bin-wrappers/scalar
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
sed -e '1s|#!.*/sh|#!/bin/sh|' \
-e 's|@@BUILD_DIR@@|/<<PKGBUILDDIR>>|' \
-e 's|@@PROG@@|git-receive-pack|' < wrap-for-bin.sh > bin-wrappers/git-receive-pack && \
chmod +x bin-wrappers/git-receive-pack
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
sed -e '1s|#!.*/sh|#!/bin/sh|' \
-e 's|@@BUILD_DIR@@|/<<PKGBUILDDIR>>|' \
-e 's|@@PROG@@|git-shell|' < wrap-for-bin.sh > bin-wrappers/git-shell && \
chmod +x bin-wrappers/git-shell
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
sed -e '1s|#!.*/sh|#!/bin/sh|' \
-e 's|@@BUILD_DIR@@|/<<PKGBUILDDIR>>|' \
-e 's|@@PROG@@|git-upload-archive|' < wrap-for-bin.sh > bin-wrappers/git-upload-archive && \
chmod +x bin-wrappers/git-upload-archive
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
sed -e '1s|#!.*/sh|#!/bin/sh|' \
-e 's|@@BUILD_DIR@@|/<<PKGBUILDDIR>>|' \
-e 's|@@PROG@@|git-upload-pack|' < wrap-for-bin.sh > bin-wrappers/git-upload-pack && \
chmod +x bin-wrappers/git-upload-pack
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
sed -e '1s|#!.*/sh|#!/bin/sh|' \
-e 's|@@BUILD_DIR@@|/<<PKGBUILDDIR>>|' \
-e 's|@@PROG@@|git-cvsserver|' < wrap-for-bin.sh > bin-wrappers/git-cvsserver && \
chmod +x bin-wrappers/git-cvsserver
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
sed -e '1s|#!.*/sh|#!/bin/sh|' \
-e 's|@@BUILD_DIR@@|/<<PKGBUILDDIR>>|' \
-e 's|@@PROG@@|t/helper/test-fake-ssh|' < wrap-for-bin.sh > bin-wrappers/test-fake-ssh && \
chmod +x bin-wrappers/test-fake-ssh
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
sed -e '1s|#!.*/sh|#!/bin/sh|' \
-e 's|@@BUILD_DIR@@|/<<PKGBUILDDIR>>|' \
-e 's|@@PROG@@|t/helper/test-tool|' < wrap-for-bin.sh > bin-wrappers/test-tool && \
chmod +x bin-wrappers/test-tool
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f reftable/libreftable_test.a && ar rcs reftable/libreftable_test.a reftable/basics_test.o reftable/block_test.o reftable/dump.o reftable/merged_test.o reftable/pq_test.o reftable/record_test.o reftable/readwrite_test.o reftable/refname_test.o reftable/stack_test.o reftable/test_framework.o reftable/tree_test.o
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-write-cache.o -c -MF t/helper/.depend/test-write-cache.o.d -MQ t/helper/test-write-cache.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-write-cache.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -o t/helper/test-xml-encode.o -c -MF t/helper/.depend/test-xml-encode.o.d -MQ t/helper/test-xml-encode.o -MMD -MP -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' t/helper/test-xml-encode.c
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' -o t/helper/test-fake-ssh -Wl,-z,relro t/helper/test-fake-ssh.o common-main.o libgit.a xdiff/lib.a reftable/libreftable.a reftable/libreftable_test.a libgit.a xdiff/lib.a reftable/libreftable.a libgit.a -lpcre2-8 -lz -lpthread -lrt
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
gcc -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -I. -DHAVE_SYSINFO -DGIT_HOST_CPU="\"arm\"" -DUSE_LIBPCRE2 -DHAVE_ALLOCA_H -DUSE_CURL_FOR_IMAP_SEND -DNO_OPENSSL -DSUPPORTS_SIMPLE_IPC -DSHA1_DC -DSHA1DC_NO_STANDARD_INCLUDES -DSHA1DC_INIT_SAFE_HASH_DEFAULT=0 -DSHA1DC_CUSTOM_INCLUDE_SHA1_C="\"git-compat-util.h\"" -DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C="\"git-compat-util.h\"" -DSHA256_BLK -DHAVE_PATHS_H -DHAVE_DEV_TTY -DHAVE_CLOCK_GETTIME -DHAVE_CLOCK_MONOTONIC -DHAVE_SYNC_FILE_RANGE -DHAVE_GETDELIM '-DPROCFS_EXECUTABLE_PATH="/proc/self/exe"' -DFREAD_READS_DIRECTORIES -DNO_STRLCPY -DDEFAULT_EDITOR='"editor"' -DDEFAULT_PAGER='"pager"' -DSHELL_PATH='"/bin/sh"' -o t/helper/test-tool -Wl,-z,relro t/helper/test-tool.o common-main.o t/helper/test-advise.o t/helper/test-bitmap.o t/helper/test-bloom.o t/helper/test-bundle-uri.o t/helper/test-cache-tree.o t/helper/test-chmtime.o t/helper/test-config.o t/helper/test-crontab.o t/helper/test-csprng.o t/helper/test-ctype.o t/helper/test-date.o t/helper/test-delta.o t/helper/test-dir-iterator.o t/helper/test-drop-caches.o t/helper/test-dump-cache-tree.o t/helper/test-dump-fsmonitor.o t/helper/test-dump-split-index.o t/helper/test-dump-untracked-cache.o t/helper/test-env-helper.o t/helper/test-example-decorate.o t/helper/test-fast-rebase.o t/helper/test-fsmonitor-client.o t/helper/test-genrandom.o t/helper/test-genzeros.o t/helper/test-getcwd.o t/helper/test-hash-speed.o t/helper/test-hash.o t/helper/test-hashmap.o t/helper/test-hexdump.o t/helper/test-index-version.o t/helper/test-json-writer.o t/helper/test-lazy-init-name-hash.o t/helper/test-match-trees.o t/helper/test-mergesort.o t/helper/test-mktemp.o t/helper/test-oid-array.o t/helper/test-oidmap.o t/helper/test-oidtree.o t/helper/test-online-cpus.o t/helper/test-pack-mtimes.o t/helper/test-parse-options.o t/helper/test-parse-pathspec-file.o t/helper/test-partial-clone.o t/helper/test-path-utils.o t/helper/test-pcre2-config.o t/helper/test-pkt-line.o t/helper/test-prio-queue.o t/helper/test-proc-receive.o t/helper/test-progress.o t/helper/test-reach.o t/helper/test-read-cache.o t/helper/test-read-graph.o t/helper/test-read-midx.o t/helper/test-ref-store.o t/helper/test-reftable.o t/helper/test-regex.o t/helper/test-rot13-filter.o t/helper/test-repository.o t/helper/test-revision-walking.o t/helper/test-run-command.o t/helper/test-scrap-cache-tree.o t/helper/test-serve-v2.o t/helper/test-sha1.o t/helper/test-sha256.o t/helper/test-sigchain.o t/helper/test-simple-ipc.o t/helper/test-strcmp-offset.o t/helper/test-string-list.o t/helper/test-submodule-config.o t/helper/test-submodule-nested-repo-config.o t/helper/test-submodule.o t/helper/test-subprocess.o t/helper/test-trace2.o t/helper/test-urlmatch-normalization.o t/helper/test-userdiff.o t/helper/test-wildmatch.o t/helper/test-windows-named-pipe.o t/helper/test-write-cache.o t/helper/test-xml-encode.o libgit.a xdiff/lib.a reftable/libreftable.a reftable/libreftable_test.a libgit.a xdiff/lib.a reftable/libreftable.a libgit.a -lpcre2-8 -lz -lpthread -lrt
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f gitweb/static/gitweb.js gitweb/static/gitweb.js+ && \
cat gitweb/static/js/lib/common-lib.js gitweb/static/js/lib/datetime.js gitweb/static/js/lib/cookies.js gitweb/static/js/javascript-detection.js gitweb/static/js/adjust-timezone.js gitweb/static/js/blame_incremental.js >gitweb/static/gitweb.js+ && \
mv gitweb/static/gitweb.js+ gitweb/static/gitweb.js
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
rm -f gitweb/gitweb.cgi gitweb/gitweb.cgi+ && \
sed -e '1s|#!.*perl|#!/usr/bin/perl|' \
-e 's|++GIT_VERSION++|2.42.0|g' -e 's|++GIT_BINDIR++|/usr/bin|g' -e 's|++GITWEB_CONFIG++|gitweb_config.perl|g' -e 's|++GITWEB_CONFIG_SYSTEM++|/etc/gitweb.conf|g' -e 's|++GITWEB_CONFIG_COMMON++|/etc/gitweb-common.conf|g' -e 's|++GITWEB_HOME_LINK_STR++|projects|g' -e 's|++GITWEB_SITENAME++||g' -e 's|++GITWEB_PROJECTROOT++|/pub/git|g' -e 's|"++GITWEB_PROJECT_MAXDEPTH++"|2007|g' -e 's|++GITWEB_EXPORT_OK++||g' -e 's|++GITWEB_STRICT_EXPORT++||g' -e 's|++GITWEB_BASE_URL++||g' -e 's|++GITWEB_LIST++||g' -e 's|++GITWEB_HOMETEXT++|indextext.html|g' -e 's|++GITWEB_CSS++|static/gitweb.css|g' -e 's|++GITWEB_LOGO++|static/git-logo.png|g' -e 's|++GITWEB_FAVICON++|static/git-favicon.png|g' -e 's|++GITWEB_JS++|static/gitweb.js|g' -e 's|++GITWEB_SITE_HTML_HEAD_STRING++||g' -e 's|++GITWEB_SITE_HEADER++||g' -e 's|++GITWEB_SITE_FOOTER++||g' -e 's|++HIGHLIGHT_BIN++|highlight|g' gitweb/gitweb.perl >gitweb/gitweb.cgi+ && \
chmod +x gitweb/gitweb.cgi+ && \
mv gitweb/gitweb.cgi+ gitweb/gitweb.cgi
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[1]: Entering directory '/<<PKGBUILDDIR>>'
touch build-stamp
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
/usr/bin/make -C contrib/subtree all NO_OPENSSL=1 prefix=/usr gitexecdir=/usr/lib/git-core mandir=/usr/share/man htmldir=/usr/share/doc/git/html INSTALLDIRS=vendor SANE_TOOL_PATH= INSTALL=install TAR=tar NO_CROSS_DIRECTORY_HARDLINKS=1 NO_INSTALL_HARDLINKS=1 NO_PERL_CPAN_FALLBACKS=1 PYTHON_PATH=/usr/bin/python3 DEFAULT_PAGER=pager DEFAULT_EDITOR=editor CC='gcc' CFLAGS='-Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' LDFLAGS='-Wl,-z,relro' HOST_CPU='arm' V=1 USE_LIBPCRE2=1
/usr/bin/make -C ../../ GIT-VERSION-FILE
make[3]: 'GIT-VERSION-FILE' is up to date.
make[2]: Entering directory '/<<PKGBUILDDIR>>/contrib/subtree'
sed -e '1s|#!.*/sh|#!/bin/sh|' git-subtree.sh >git-subtree
chmod +x git-subtree
make[2]: Leaving directory '/<<PKGBUILDDIR>>/contrib/subtree'
make[1]: Entering directory '/<<PKGBUILDDIR>>'
ln -s contrib/subtree/git-subtree
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
debian/rules override_dh_auto_test-arch
test -z 'test' || \
GIT_SKIP_TESTS="t9128 t9167" \
GIT_TEST_OPTS='--verbose' /usr/bin/make test NO_OPENSSL=1 prefix=/usr gitexecdir=/usr/lib/git-core mandir=/usr/share/man htmldir=/usr/share/doc/git/html INSTALLDIRS=vendor SANE_TOOL_PATH= INSTALL=install TAR=tar NO_CROSS_DIRECTORY_HARDLINKS=1 NO_INSTALL_HARDLINKS=1 NO_PERL_CPAN_FALLBACKS=1 PYTHON_PATH=/usr/bin/python3 DEFAULT_PAGER=pager DEFAULT_EDITOR=editor CC='gcc' CFLAGS='-Wall -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' LDFLAGS='-Wl,-z,relro' HOST_CPU='arm' V=1 USE_LIBPCRE2=1
make[2]: Entering directory '/<<PKGBUILDDIR>>'
\
sed -e '1{' \
-e ' s|#!.*perl|#!/usr/bin/perl|' \
-e ' r GIT-PERL-HEADER' \
-e ' G' \
-e '}' \
-e 's/@@GIT_VERSION@@/2.42.0/g' \
git-cvsexportcommit.perl >git-cvsexportcommit+ && \
chmod +x git-cvsexportcommit+ && \
mv git-cvsexportcommit+ git-cvsexportcommit
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
\
sed -e '1{' \
-e ' s|#!.*perl|#!/usr/bin/perl|' \
-e ' r GIT-PERL-HEADER' \
-e ' G' \
-e '}' \
-e 's/@@GIT_VERSION@@/2.42.0/g' \
git-archimport.perl >git-archimport+ && \
chmod +x git-archimport+ && \
mv git-archimport+ git-archimport
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
\
sed -e '1{' \
-e ' s|#!.*perl|#!/usr/bin/perl|' \
-e ' r GIT-PERL-HEADER' \
-e ' G' \
-e '}' \
-e 's/@@GIT_VERSION@@/2.42.0/g' \
git-cvsimport.perl >git-cvsimport+ && \
chmod +x git-cvsimport+ && \
mv git-cvsimport+ git-cvsimport
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
\
sed -e '1{' \
-e ' s|#!.*perl|#!/usr/bin/perl|' \
-e ' r GIT-PERL-HEADER' \
-e ' G' \
-e '}' \
-e 's/@@GIT_VERSION@@/2.42.0/g' \
git-cvsserver.perl >git-cvsserver+ && \
chmod +x git-cvsserver+ && \
mv git-cvsserver+ git-cvsserver
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
\
sed -e '1{' \
-e ' s|#!.*perl|#!/usr/bin/perl|' \
-e ' r GIT-PERL-HEADER' \
-e ' G' \
-e '}' \
-e 's/@@GIT_VERSION@@/2.42.0/g' \
git-send-email.perl >git-send-email+ && \
chmod +x git-send-email+ && \
mv git-send-email+ git-send-email
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
\
sed -e '1{' \
-e ' s|#!.*perl|#!/usr/bin/perl|' \
-e ' r GIT-PERL-HEADER' \
-e ' G' \
-e '}' \
-e 's/@@GIT_VERSION@@/2.42.0/g' \
git-svn.perl >git-svn+ && \
chmod +x git-svn+ && \
mv git-svn+ git-svn
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
make[2]: Entering directory '/<<PKGBUILDDIR>>'
\
sed -e '1s|#!.*python|#!/usr/bin/python3|' \
git-p4.py >git-p4+ && \
chmod +x git-p4+ && \
mv git-p4+ git-p4
make[2]: Leaving directory '/<<PKGBUILDDIR>>'
/usr/bin/make -C git-gui gitexecdir='/usr/lib/git-core' all
/usr/bin/make -C gitk-git all
/usr/bin/make -C templates SHELL_PATH='/bin/sh' PERL_PATH='/usr/bin/perl'
make[3]: Entering directory '/<<PKGBUILDDIR>>/templates'
: no custom templates yet
make[3]: Leaving directory '/<<PKGBUILDDIR>>/templates'
/usr/bin/make -C t/ all
make[3]: Entering directory '/<<PKGBUILDDIR>>/t'
rm -f -r 'test-results'
make[3]: Leaving directory '/<<PKGBUILDDIR>>/t'
GIT_TEST_EXT_CHAIN_LINT=0 && export GIT_TEST_EXT_CHAIN_LINT && /usr/bin/make aggregate-results-and-cleanup
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0002-gitfile.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0002-gitfile/.git/
expecting success of 0002.1 'initial setup':
REAL="$(pwd)/.real" &&
mv .git "$REAL"
ok 1 - initial setup
expecting success of 0002.2 'bad setup: invalid .git file format':
echo "gitdir $REAL" >.git &&
test_must_fail git rev-parse 2>.err &&
test_i18ngrep "invalid gitfile format" .err
fatal: invalid gitfile format: /<<PKGBUILDDIR>>/t/trash directory.t0002-gitfile/.git
ok 2 - bad setup: invalid .git file format
expecting success of 0002.3 'bad setup: invalid .git file path':
echo "gitdir: $REAL.not" >.git &&
test_must_fail git rev-parse 2>.err &&
test_i18ngrep "not a git repository" .err
fatal: not a git repository: /<<PKGBUILDDIR>>/t/trash directory.t0002-gitfile/.real.not
ok 3 - bad setup: invalid .git file path
expecting success of 0002.4 'final setup + check rev-parse --git-dir':
echo "gitdir: $REAL" >.git &&
echo "$REAL" >expect &&
git rev-parse --git-dir >actual &&
test_cmp expect actual
ok 4 - final setup + check rev-parse --git-dir
expecting success of 0002.5 'check hash-object':
echo "foo" >bar &&
SHA=$(cat bar | git hash-object -w --stdin) &&
test_path_is_file "$REAL/objects/$(objpath $SHA)"
ok 5 - check hash-object
expecting success of 0002.6 'check cat-file':
git cat-file blob $SHA >actual &&
test_cmp bar actual
ok 6 - check cat-file
expecting success of 0002.7 'check update-index':
test_path_is_missing "$REAL/index" &&
rm -f "$REAL/objects/$(objpath $SHA)" &&
git update-index --add bar &&
test_path_is_file "$REAL/index" &&
test_path_is_file "$REAL/objects/$(objpath $SHA)"
ok 7 - check update-index
expecting success of 0002.8 'check write-tree':
SHA=$(git write-tree) &&
test_path_is_file "$REAL/objects/$(objpath $SHA)"
ok 8 - check write-tree
expecting success of 0002.9 'check commit-tree':
SHA=$(echo "commit bar" | git commit-tree $SHA) &&
test_path_is_file "$REAL/objects/$(objpath $SHA)"
ok 9 - check commit-tree
expecting success of 0002.10 'check rev-list':
git update-ref "HEAD" "$SHA" &&
git rev-list HEAD >actual &&
echo $SHA >expected &&
test_cmp expected actual
ok 10 - check rev-list
expecting success of 0002.11 'setup_git_dir twice in subdir':
git init sgd &&
(
cd sgd &&
git config alias.lsfi ls-files &&
mv .git .realgit &&
echo "gitdir: .realgit" >.git &&
mkdir subdir &&
cd subdir &&
>foo &&
git add foo &&
git lsfi >actual &&
echo foo >expected &&
test_cmp expected actual
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0002-gitfile/sgd/.git/
ok 11 - setup_git_dir twice in subdir
expecting success of 0002.12 'enter_repo non-strict mode':
test_create_repo enter_repo &&
(
cd enter_repo &&
test_tick &&
test_commit foo &&
mv .git .realgit &&
echo "gitdir: .realgit" >.git
) &&
head=$(git -C enter_repo rev-parse HEAD) &&
git ls-remote enter_repo >actual &&
cat >expected <<-EOF &&
$head HEAD
$head refs/heads/main
$head refs/tags/foo
EOF
test_cmp expected actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0002-gitfile/enter_repo/.git/
[main (root-commit) 946e985] foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo.t
ok 12 - enter_repo non-strict mode
expecting success of 0002.13 'enter_repo linked checkout':
(
cd enter_repo &&
git worktree add ../foo refs/tags/foo
) &&
head=$(git -C enter_repo rev-parse HEAD) &&
git ls-remote foo >actual &&
cat >expected <<-EOF &&
$head HEAD
$head refs/heads/main
$head refs/tags/foo
EOF
test_cmp expected actual
Preparing worktree (detached HEAD 946e985)
HEAD is now at 946e985 foo
ok 13 - enter_repo linked checkout
expecting success of 0002.14 'enter_repo strict mode':
head=$(git -C enter_repo rev-parse HEAD) &&
git ls-remote --upload-pack="git upload-pack --strict" foo/.git >actual &&
cat >expected <<-EOF &&
$head HEAD
$head refs/heads/main
$head refs/tags/foo
EOF
test_cmp expected actual
ok 14 - enter_repo strict mode
# passed all 14 test(s)
1..14
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0004-unwritable.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0004-unwritable/.git/
expecting success of 0004.1 'setup':
>file &&
git add file &&
test_tick &&
git commit -m initial &&
echo >file &&
git add file
[master (root-commit) 1bd44cb] initial
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file
ok 1 - setup
checking prerequisite: SANITY
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SANITY" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SANITY" &&
mkdir SANETESTD.1 SANETESTD.2 &&
chmod +w SANETESTD.1 SANETESTD.2 &&
>SANETESTD.1/x 2>SANETESTD.2/x &&
chmod -w SANETESTD.1 &&
chmod -r SANETESTD.1/x &&
chmod -rx SANETESTD.2 ||
BUG "cannot prepare SANETESTD"
! test -r SANETESTD.1/x &&
! rm SANETESTD.1/x && ! test -f SANETESTD.2/x
status=$?
chmod +rwx SANETESTD.1 SANETESTD.2 &&
rm -rf SANETESTD.1 SANETESTD.2 ||
BUG "cannot clean SANETESTD"
return $status
)
rm: cannot remove 'SANETESTD.1/x': Permission denied
prerequisite SANITY ok
expecting success of 0004.2 'write-tree should notice unwritable repository':
test_when_finished "chmod 775 .git/objects .git/objects/??" &&
chmod a-w .git/objects .git/objects/?? &&
test_must_fail git write-tree 2>out.write-tree
ok 2 - write-tree should notice unwritable repository
checking prerequisite: WRITE_TREE_OUT
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-WRITE_TREE_OUT" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-WRITE_TREE_OUT" &&test -e "$TRASH_DIRECTORY"/out.write-tree
)
prerequisite WRITE_TREE_OUT ok
expecting success of 0004.3 'write-tree output on unwritable repository':
cat >expect <<-\EOF &&
error: insufficient permission for adding an object to repository database .git/objects
fatal: git-write-tree: error building trees
EOF
test_cmp expect out.write-tree
ok 3 - write-tree output on unwritable repository
expecting success of 0004.4 'commit should notice unwritable repository':
test_when_finished "chmod 775 .git/objects .git/objects/??" &&
chmod a-w .git/objects .git/objects/?? &&
test_must_fail git commit -m second 2>out.commit
ok 4 - commit should notice unwritable repository
checking prerequisite: COMMIT_OUT
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-COMMIT_OUT" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-COMMIT_OUT" &&test -e "$TRASH_DIRECTORY"/out.commit
)
prerequisite COMMIT_OUT ok
expecting success of 0004.5 'commit output on unwritable repository':
cat >expect <<-\EOF &&
error: insufficient permission for adding an object to repository database .git/objects
error: Error building trees
EOF
test_cmp expect out.commit
ok 5 - commit output on unwritable repository
expecting success of 0004.6 'update-index should notice unwritable repository':
test_when_finished "chmod 775 .git/objects .git/objects/??" &&
echo 6O >file &&
chmod a-w .git/objects .git/objects/?? &&
test_must_fail git update-index file 2>out.update-index
ok 6 - update-index should notice unwritable repository
checking prerequisite: UPDATE_INDEX_OUT
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-UPDATE_INDEX_OUT" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-UPDATE_INDEX_OUT" &&test -e "$TRASH_DIRECTORY"/out.update-index
)
prerequisite UPDATE_INDEX_OUT ok
expecting success of 0004.7 'update-index output on unwritable repository':
cat >expect <<-\EOF &&
error: insufficient permission for adding an object to repository database .git/objects
error: file: failed to insert into database
fatal: Unable to process path file
EOF
test_cmp expect out.update-index
ok 7 - update-index output on unwritable repository
expecting success of 0004.8 'add should notice unwritable repository':
test_when_finished "chmod 775 .git/objects .git/objects/??" &&
echo b >file &&
chmod a-w .git/objects .git/objects/?? &&
test_must_fail git add file 2>out.add
ok 8 - add should notice unwritable repository
checking prerequisite: ADD_OUT
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-ADD_OUT" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-ADD_OUT" &&test -e "$TRASH_DIRECTORY"/out.add
)
prerequisite ADD_OUT ok
expecting success of 0004.9 'add output on unwritable repository':
cat >expect <<-\EOF &&
error: insufficient permission for adding an object to repository database .git/objects
error: file: failed to insert into database
error: unable to index file 'file'
fatal: updating files failed
EOF
test_cmp expect out.add
ok 9 - add output on unwritable repository
# passed all 9 test(s)
1..9
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0005-signals.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0005-signals/.git/
expecting success of 0005.1 'sigchain works':
{ test-tool sigchain >actual; ret=$?; } &&
{
# Signal death by raise() on Windows acts like exit(3),
# regardless of the signal number. So we must allow that
# as well as the normal signal check.
test_match_signal 15 "$ret" ||
test "$ret" = 3
} &&
test_cmp expect actual
Terminated
ok 1 - sigchain works
expecting success of 0005.2 'signals are propagated using shell convention':
# we use exec here to avoid any sub-shell interpretation
# of the exit code
git config alias.sigterm "!exec test-tool sigchain" &&
test_expect_code 143 git sigterm
three
two
one
error: exec test-tool sigchain died of signal 15
ok 2 - signals are propagated using shell convention
expecting success of 0005.3 'create blob':
test-tool genrandom foo 16384 >file &&
git add file
ok 3 - create blob
expecting success of 0005.4 'a constipated git dies with SIGPIPE':
OUT=$( ((large_git; echo $? 1>&3) | :) 3>&1 ) &&
test_match_signal 13 "$OUT"
ok 4 - a constipated git dies with SIGPIPE
expecting success of 0005.5 'a constipated git dies with SIGPIPE even if parent ignores it':
OUT=$( ((trap "" PIPE && large_git; echo $? 1>&3) | :) 3>&1 ) &&
test_match_signal 13 "$OUT"
ok 5 - a constipated git dies with SIGPIPE even if parent ignores it
# passed all 5 test(s)
1..5
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0003-attributes.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0003-attributes/.git/
expecting success of 0003.1 'open-quoted pathname':
echo "\"a test=a" >.gitattributes &&
attr_check a unspecified
ok 1 - open-quoted pathname
expecting success of 0003.2 'setup':
mkdir -p a/b/d a/c b &&
(
echo "[attr]notest !test" &&
echo "\" d \" test=d" &&
echo " e test=e" &&
echo " e\" test=e" &&
echo "f test=f" &&
echo "a/i test=a/i" &&
echo "onoff test -test" &&
echo "offon -test test" &&
echo "no notest" &&
echo "A/e/F test=A/e/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/*" &&
echo "d/yes notest"
) >a/b/.gitattributes &&
(
echo "global test=global"
) >"$HOME"/global-gitattributes &&
cat <<-EOF >expect-all
f: test: f
a/f: test: f
a/c/f: test: f
a/g: test: a/g
a/b/g: test: a/b/g
b/g: test: unspecified
a/b/h: test: a/b/h
a/b/d/g: test: a/b/d/*
onoff: test: unset
offon: test: set
no: notest: set
no: test: unspecified
a/b/d/no: notest: set
a/b/d/no: test: a/b/d/*
a/b/d/yes: notest: set
a/b/d/yes: test: unspecified
EOF
ok 2 - setup
expecting success of 0003.3 'setup branches':
mkdir -p foo/bar &&
test_commit --printf "add .gitattributes" foo/bar/.gitattributes \
"f test=f\na/i test=n\n" tag-1 &&
test_commit --printf "add .gitattributes" foo/bar/.gitattributes \
"g test=g\na/i test=m\n" tag-2 &&
rm foo/bar/.gitattributes
[master (root-commit) df8bf8d] add .gitattributes
Author: A U Thor <author@example.com>
1 file changed, 2 insertions(+)
create mode 100644 foo/bar/.gitattributes
[master 2e229b7] add .gitattributes
Author: A U Thor <author@example.com>
1 file changed, 2 insertions(+), 2 deletions(-)
ok 3 - setup branches
expecting success of 0003.4 'command line checks':
test_must_fail git check-attr &&
test_must_fail git check-attr -- &&
test_must_fail git check-attr test &&
test_must_fail git check-attr test -- &&
test_must_fail git check-attr -- f &&
test_must_fail git check-attr --source &&
test_must_fail git check-attr --source not-a-valid-ref &&
echo "f" | test_must_fail git check-attr --stdin &&
echo "f" | test_must_fail git check-attr --stdin -- f &&
echo "f" | test_must_fail git check-attr --stdin test -- f &&
test_must_fail git check-attr "" -- f
error: No attribute specified
usage: git check-attr [--source <tree-ish>] [-a | --all | <attr>...] [--] <pathname>...
or: git check-attr --stdin [-z] [--source <tree-ish>] [-a | --all | <attr>...]
-a, --all report all attributes set on file
--cached use .gitattributes only from the index
--stdin read file names from stdin
-z terminate input and output records by a NUL character
--source <tree-ish> which tree-ish to check attributes at
error: No attribute specified
usage: git check-attr [--source <tree-ish>] [-a | --all | <attr>...] [--] <pathname>...
or: git check-attr --stdin [-z] [--source <tree-ish>] [-a | --all | <attr>...]
-a, --all report all attributes set on file
--cached use .gitattributes only from the index
--stdin read file names from stdin
-z terminate input and output records by a NUL character
--source <tree-ish> which tree-ish to check attributes at
error: No file specified
usage: git check-attr [--source <tree-ish>] [-a | --all | <attr>...] [--] <pathname>...
or: git check-attr --stdin [-z] [--source <tree-ish>] [-a | --all | <attr>...]
-a, --all report all attributes set on file
--cached use .gitattributes only from the index
--stdin read file names from stdin
-z terminate input and output records by a NUL character
--source <tree-ish> which tree-ish to check attributes at
error: No file specified
usage: git check-attr [--source <tree-ish>] [-a | --all | <attr>...] [--] <pathname>...
or: git check-attr --stdin [-z] [--source <tree-ish>] [-a | --all | <attr>...]
-a, --all report all attributes set on file
--cached use .gitattributes only from the index
--stdin read file names from stdin
-z terminate input and output records by a NUL character
--source <tree-ish> which tree-ish to check attributes at
error: No attribute specified
usage: git check-attr [--source <tree-ish>] [-a | --all | <attr>...] [--] <pathname>...
or: git check-attr --stdin [-z] [--source <tree-ish>] [-a | --all | <attr>...]
-a, --all report all attributes set on file
--cached use .gitattributes only from the index
--stdin read file names from stdin
-z terminate input and output records by a NUL character
--source <tree-ish> which tree-ish to check attributes at
error: option `source' requires a value
error: No attribute specified
usage: git check-attr [--source <tree-ish>] [-a | --all | <attr>...] [--] <pathname>...
or: git check-attr --stdin [-z] [--source <tree-ish>] [-a | --all | <attr>...]
-a, --all report all attributes set on file
--cached use .gitattributes only from the index
--stdin read file names from stdin
-z terminate input and output records by a NUL character
--source <tree-ish> which tree-ish to check attributes at
error: No attribute specified
usage: git check-attr [--source <tree-ish>] [-a | --all | <attr>...] [--] <pathname>...
or: git check-attr --stdin [-z] [--source <tree-ish>] [-a | --all | <attr>...]
-a, --all report all attributes set on file
--cached use .gitattributes only from the index
--stdin read file names from stdin
-z terminate input and output records by a NUL character
--source <tree-ish> which tree-ish to check attributes at
error: No attribute specified
usage: git check-attr [--source <tree-ish>] [-a | --all | <attr>...] [--] <pathname>...
or: git check-attr --stdin [-z] [--source <tree-ish>] [-a | --all | <attr>...]
-a, --all report all attributes set on file
--cached use .gitattributes only from the index
--stdin read file names from stdin
-z terminate input and output records by a NUL character
--source <tree-ish> which tree-ish to check attributes at
error: Can't specify files with --stdin
usage: git check-attr [--source <tree-ish>] [-a | --all | <attr>...] [--] <pathname>...
or: git check-attr --stdin [-z] [--source <tree-ish>] [-a | --all | <attr>...]
-a, --all report all attributes set on file
--cached use .gitattributes only from the index
--stdin read file names from stdin
-z terminate input and output records by a NUL character
--source <tree-ish> which tree-ish to check attributes at
error: : not a valid attribute name
ok 4 - command line checks
expecting success of 0003.5 'attribute test':
attr_check " d " d &&
attr_check e e &&
attr_check_quote e\" e\\\" e &&
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/*" &&
attr_check onoff unset &&
attr_check offon set &&
attr_check no unspecified &&
attr_check a/b/d/no "a/b/d/*" &&
attr_check a/b/d/yes unspecified
ok 5 - attribute test
expecting success of 0003.6 'attribute matching is case sensitive when core.ignorecase=0':
attr_check F unspecified "-c core.ignorecase=0" &&
attr_check a/F unspecified "-c core.ignorecase=0" &&
attr_check a/c/F unspecified "-c core.ignorecase=0" &&
attr_check a/G unspecified "-c core.ignorecase=0" &&
attr_check a/B/g a/g "-c core.ignorecase=0" &&
attr_check a/b/G unspecified "-c core.ignorecase=0" &&
attr_check a/b/H unspecified "-c core.ignorecase=0" &&
attr_check a/b/D/g a/g "-c core.ignorecase=0" &&
attr_check oNoFf unspecified "-c core.ignorecase=0" &&
attr_check oFfOn unspecified "-c core.ignorecase=0" &&
attr_check NO unspecified "-c core.ignorecase=0" &&
attr_check a/b/D/NO unspecified "-c core.ignorecase=0" &&
attr_check a/b/d/YES a/b/d/* "-c core.ignorecase=0" &&
attr_check a/E/f f "-c core.ignorecase=0"
ok 6 - attribute matching is case sensitive when core.ignorecase=0
expecting success of 0003.7 'attribute matching is case insensitive when core.ignorecase=1':
attr_check F f "-c core.ignorecase=1" &&
attr_check a/F f "-c core.ignorecase=1" &&
attr_check a/c/F f "-c core.ignorecase=1" &&
attr_check a/G a/g "-c core.ignorecase=1" &&
attr_check a/B/g a/b/g "-c core.ignorecase=1" &&
attr_check a/b/G a/b/g "-c core.ignorecase=1" &&
attr_check a/b/H a/b/h "-c core.ignorecase=1" &&
attr_check a/b/D/g "a/b/d/*" "-c core.ignorecase=1" &&
attr_check oNoFf unset "-c core.ignorecase=1" &&
attr_check oFfOn set "-c core.ignorecase=1" &&
attr_check NO unspecified "-c core.ignorecase=1" &&
attr_check a/b/D/NO "a/b/d/*" "-c core.ignorecase=1" &&
attr_check a/b/d/YES unspecified "-c core.ignorecase=1" &&
attr_check a/E/f "A/e/F" "-c core.ignorecase=1"
ok 7 - attribute matching is case insensitive when core.ignorecase=1
checking prerequisite: CASE_INSENSITIVE_FS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-CASE_INSENSITIVE_FS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-CASE_INSENSITIVE_FS" &&
echo good >CamelCase &&
echo bad >camelcase &&
test "$(cat CamelCase)" != good
)
prerequisite CASE_INSENSITIVE_FS not satisfied
ok 8 # skip additional case insensitivity tests (missing CASE_INSENSITIVE_FS)
expecting success of 0003.9 'unnormalized paths':
attr_check ./f f &&
attr_check ./a/g a/g &&
attr_check a/./g a/g &&
attr_check a/c/../b/g a/b/g
ok 9 - unnormalized paths
expecting success of 0003.10 'relative paths':
(cd a && attr_check ../f f) &&
(cd a && attr_check f f) &&
(cd a && attr_check i a/i) &&
(cd a && attr_check g a/g) &&
(cd a && attr_check b/g a/b/g) &&
(cd b && attr_check ../a/f f) &&
(cd b && attr_check ../a/g a/g) &&
(cd b && attr_check ../a/b/g a/b/g)
ok 10 - relative paths
expecting success of 0003.11 'prefixes are not confused with leading directories':
attr_check a_plus/g unspecified &&
cat >expect <<-\EOF &&
a/g: test: a/g
a_plus/g: test: unspecified
EOF
git check-attr test a/g a_plus/g >actual &&
test_cmp expect actual
ok 11 - prefixes are not confused with leading directories
expecting success of 0003.12 'core.attributesfile':
attr_check global unspecified &&
git config core.attributesfile "$HOME/global-gitattributes" &&
attr_check global global &&
git config core.attributesfile "~/global-gitattributes" &&
attr_check global global &&
echo "global test=precedence" >>.gitattributes &&
attr_check global precedence
ok 12 - core.attributesfile
expecting success of 0003.13 'attribute test: read paths from stdin':
grep -v notest <expect-all >expect &&
sed -e "s/:.*//" <expect | git check-attr --stdin test >actual &&
test_cmp expect actual
ok 13 - attribute test: read paths from stdin
expecting success of 0003.14 'setup --all option':
grep -v unspecified <expect-all | sort >specified-all &&
sed -e "s/:.*//" <expect-all | uniq >stdin-all
ok 14 - setup --all option
expecting success of 0003.15 'attribute test: --all option':
git check-attr --stdin --all <stdin-all >tmp &&
sort tmp >actual &&
test_cmp specified-all actual
ok 15 - attribute test: --all option
expecting success of 0003.16 'attribute test: --cached option':
git check-attr --cached --stdin --all <stdin-all >tmp &&
sort tmp >actual &&
test_must_be_empty actual &&
git add .gitattributes a/.gitattributes a/b/.gitattributes &&
git check-attr --cached --stdin --all <stdin-all >tmp &&
sort tmp >actual &&
test_cmp specified-all actual
ok 16 - attribute test: --cached option
expecting success of 0003.17 'root subdir attribute test':
attr_check a/i a/i &&
attr_check subdir/a/i unspecified
ok 17 - root subdir attribute test
expecting success of 0003.18 'negative patterns':
echo "!f test=bar" >.gitattributes &&
git check-attr test -- '!f' 2>errors &&
test_i18ngrep "Negative patterns are ignored" errors
!f: test: unspecified
warning: Negative patterns are ignored in git attributes
ok 18 - negative patterns
expecting success of 0003.19 'patterns starting with exclamation':
echo "\!f test=foo" >.gitattributes &&
attr_check "!f" foo
ok 19 - patterns starting with exclamation
expecting success of 0003.20 '"**" test':
echo "**/f foo=bar" >.gitattributes &&
cat <<\EOF >expect &&
f: foo: bar
a/f: foo: bar
a/b/f: foo: bar
a/b/c/f: foo: bar
EOF
git check-attr foo -- "f" >actual 2>err &&
git check-attr foo -- "a/f" >>actual 2>>err &&
git check-attr foo -- "a/b/f" >>actual 2>>err &&
git check-attr foo -- "a/b/c/f" >>actual 2>>err &&
test_cmp expect actual &&
test_must_be_empty err
ok 20 - "**" test
expecting success of 0003.21 '"**" with no slashes test':
echo "a**f foo=bar" >.gitattributes &&
git check-attr foo -- "f" >actual &&
cat <<\EOF >expect &&
f: foo: unspecified
af: foo: bar
axf: foo: bar
a/f: foo: unspecified
a/b/f: foo: unspecified
a/b/c/f: foo: unspecified
EOF
git check-attr foo -- "f" >actual 2>err &&
git check-attr foo -- "af" >>actual 2>err &&
git check-attr foo -- "axf" >>actual 2>err &&
git check-attr foo -- "a/f" >>actual 2>>err &&
git check-attr foo -- "a/b/f" >>actual 2>>err &&
git check-attr foo -- "a/b/c/f" >>actual 2>>err &&
test_cmp expect actual &&
test_must_be_empty err
ok 21 - "**" with no slashes test
expecting success of 0003.22 'using --git-dir and --work-tree':
mkdir unreal real &&
git init real &&
echo "file test=in-real" >real/.gitattributes &&
(
cd unreal &&
attr_check file in-real "--git-dir ../real/.git --work-tree ../real"
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0003-attributes/real/.git/
ok 22 - using --git-dir and --work-tree
expecting success of 0003.23 'using --source':
attr_check_source foo/bar/f f tag-1 &&
attr_check_source foo/bar/a/i n tag-1 &&
attr_check_source foo/bar/f unspecified tag-2 &&
attr_check_source foo/bar/a/i m tag-2 &&
attr_check_source foo/bar/g g tag-2 &&
attr_check_source foo/bar/g unspecified tag-1
ok 23 - using --source
expecting success of 0003.24 'setup bare':
git clone --template= --bare . bare.git
Cloning into bare repository 'bare.git'...
done.
ok 24 - setup bare
expecting success of 0003.25 'bare repository: check that .gitattribute is ignored':
(
cd bare.git &&
(
echo "f test=f" &&
echo "a/i test=a/i"
) >.gitattributes &&
attr_check f unspecified &&
attr_check a/f unspecified &&
attr_check a/c/f unspecified &&
attr_check a/i unspecified &&
attr_check subdir/a/i unspecified
)
ok 25 - bare repository: check that .gitattribute is ignored
expecting success of 0003.26 'bare repository: with --source':
(
cd bare.git &&
attr_check_source foo/bar/f f tag-1 &&
attr_check_source foo/bar/a/i n tag-1 &&
attr_check_source foo/bar/f unspecified tag-2 &&
attr_check_source foo/bar/a/i m tag-2 &&
attr_check_source foo/bar/g g tag-2 &&
attr_check_source foo/bar/g unspecified tag-1
)
ok 26 - bare repository: with --source
expecting success of 0003.27 'bare repository: check that --cached honors index':
(
cd bare.git &&
GIT_INDEX_FILE=../.git/index \
git check-attr --cached --stdin --all <../stdin-all |
sort >actual &&
test_cmp ../specified-all actual
)
ok 27 - bare repository: check that --cached honors index
expecting success of 0003.28 'bare repository: test info/attributes':
(
cd bare.git &&
mkdir info &&
(
echo "f test=f" &&
echo "a/i test=a/i"
) >info/attributes &&
attr_check f f &&
attr_check a/f f &&
attr_check a/c/f f &&
attr_check a/i a/i &&
attr_check subdir/a/i unspecified
)
ok 28 - bare repository: test info/attributes
expecting success of 0003.29 'binary macro expanded by -a':
echo "file binary" >.gitattributes &&
cat >expect <<-\EOF &&
file: binary: set
file: diff: unset
file: merge: unset
file: text: unset
EOF
git check-attr -a file >actual &&
test_cmp expect actual
ok 29 - binary macro expanded by -a
expecting success of 0003.30 'query binary macro directly':
echo "file binary" >.gitattributes &&
echo file: binary: set >expect &&
git check-attr binary file >actual &&
test_cmp expect actual
ok 30 - query binary macro directly
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
expecting success of 0003.31 'set up symlink tests':
echo "* test" >attr &&
rm -f .gitattributes
ok 31 - set up symlink tests
expecting success of 0003.32 'symlinks respected in core.attributesFile':
test_when_finished "rm symlink" &&
ln -s attr symlink &&
test_config core.attributesFile "$(pwd)/symlink" &&
attr_check file set
ok 32 - symlinks respected in core.attributesFile
expecting success of 0003.33 'symlinks respected in info/attributes':
test_when_finished "rm .git/info/attributes" &&
mkdir .git/info &&
ln -s ../../attr .git/info/attributes &&
attr_check file set
ok 33 - symlinks respected in info/attributes
expecting success of 0003.34 'symlinks not respected in-tree':
test_when_finished "rm -rf .gitattributes subdir" &&
ln -s attr .gitattributes &&
mkdir subdir &&
ln -s ../attr subdir/.gitattributes &&
attr_check_basic subdir/file unspecified &&
test_i18ngrep "unable to access.*gitattributes" err
warning: unable to access '.gitattributes': Too many levels of symbolic links
warning: unable to access 'subdir/.gitattributes': Too many levels of symbolic links
ok 34 - symlinks not respected in-tree
expecting success of 0003.35 'large attributes line ignored in tree':
test_when_finished "rm .gitattributes" &&
printf "path %02043d" 1 >.gitattributes &&
git check-attr --all path >actual 2>err &&
echo "warning: ignoring overly long attributes line 1" >expect &&
test_cmp expect err &&
test_must_be_empty actual
ok 35 - large attributes line ignored in tree
expecting success of 0003.36 'large attributes line ignores trailing content in tree':
test_when_finished "rm .gitattributes" &&
# older versions of Git broke lines at 2048 bytes; the 2045 bytes
# of 0-padding here is accounting for the three bytes of "a 1", which
# would knock "trailing" to the "next" line, where it would be
# erroneously parsed.
printf "a %02045dtrailing attribute\n" 1 >.gitattributes &&
git check-attr --all trailing >actual 2>err &&
echo "warning: ignoring overly long attributes line 1" >expect &&
test_cmp expect err &&
test_must_be_empty actual
ok 36 - large attributes line ignores trailing content in tree
checking prerequisite: EXPENSIVE
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-EXPENSIVE" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-EXPENSIVE" &&
test -n "$GIT_TEST_LONG"
)
prerequisite EXPENSIVE not satisfied
ok 37 # skip large attributes file ignored in tree (missing EXPENSIVE)
expecting success of 0003.38 'large attributes line ignored in index':
test_when_finished "git update-index --remove .gitattributes" &&
blob=$(printf "path %02043d" 1 | git hash-object -w --stdin) &&
git update-index --add --cacheinfo 100644,$blob,.gitattributes &&
git check-attr --cached --all path >actual 2>err &&
echo "warning: ignoring overly long attributes line 1" >expect &&
test_cmp expect err &&
test_must_be_empty actual
warning: ignoring overly long attributes line 1
ok 38 - large attributes line ignored in index
expecting success of 0003.39 'large attributes line ignores trailing content in index':
test_when_finished "git update-index --remove .gitattributes" &&
blob=$(printf "a %02045dtrailing attribute\n" 1 | git hash-object -w --stdin) &&
git update-index --add --cacheinfo 100644,$blob,.gitattributes &&
git check-attr --cached --all trailing >actual 2>err &&
echo "warning: ignoring overly long attributes line 1" >expect &&
test_cmp expect err &&
test_must_be_empty actual
ok 39 - large attributes line ignores trailing content in index
ok 40 # skip large attributes file ignored in index (missing EXPENSIVE)
# passed all 40 test(s)
1..40
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0006-date.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0006-date/.git/
expecting success of 0006.1 'relative date (5 seconds ago)':
test-tool date relative 1251659995 >actual &&
test_cmp expect actual
ok 1 - relative date (5 seconds ago)
expecting success of 0006.2 'relative date (5 minutes ago)':
test-tool date relative 1251659700 >actual &&
test_cmp expect actual
ok 2 - relative date (5 minutes ago)
expecting success of 0006.3 'relative date (5 hours ago)':
test-tool date relative 1251642000 >actual &&
test_cmp expect actual
ok 3 - relative date (5 hours ago)
expecting success of 0006.4 'relative date (5 days ago)':
test-tool date relative 1251228000 >actual &&
test_cmp expect actual
ok 4 - relative date (5 days ago)
expecting success of 0006.5 'relative date (3 weeks ago)':
test-tool date relative 1249932000 >actual &&
test_cmp expect actual
ok 5 - relative date (3 weeks ago)
expecting success of 0006.6 'relative date (5 months ago)':
test-tool date relative 1238660000 >actual &&
test_cmp expect actual
ok 6 - relative date (5 months ago)
expecting success of 0006.7 'relative date (1 year, 2 months ago)':
test-tool date relative 1214160000 >actual &&
test_cmp expect actual
ok 7 - relative date (1 year, 2 months ago)
expecting success of 0006.8 'relative date (1 year, 9 months ago)':
test-tool date relative 1196472000 >actual &&
test_cmp expect actual
ok 8 - relative date (1 year, 9 months ago)
expecting success of 0006.9 'relative date (20 years ago)':
test-tool date relative 621660000 >actual &&
test_cmp expect actual
ok 9 - relative date (20 years ago)
expecting success of 0006.10 'relative date (12 months ago)':
test-tool date relative 1220210400 >actual &&
test_cmp expect actual
ok 10 - relative date (12 months ago)
expecting success of 0006.11 'relative date (2 years ago)':
test-tool date relative 1188674400 >actual &&
test_cmp expect actual
ok 11 - relative date (2 years ago)
expecting success of 0006.12 'show date (iso8601:1466000000 +0200)':
echo "$time -> $expect" >expect &&
TZ=${zone:-$TZ} test-tool date show:"$format" "$time" >actual &&
test_cmp expect actual
ok 12 - show date (iso8601:1466000000 +0200)
expecting success of 0006.13 'show date (iso8601-strict:1466000000 +0200)':
echo "$time -> $expect" >expect &&
TZ=${zone:-$TZ} test-tool date show:"$format" "$time" >actual &&
test_cmp expect actual
ok 13 - show date (iso8601-strict:1466000000 +0200)
expecting success of 0006.14 'show date (rfc2822:1466000000 +0200)':
echo "$time -> $expect" >expect &&
TZ=${zone:-$TZ} test-tool date show:"$format" "$time" >actual &&
test_cmp expect actual
ok 14 - show date (rfc2822:1466000000 +0200)
expecting success of 0006.15 'show date (short:1466000000 +0200)':
echo "$time -> $expect" >expect &&
TZ=${zone:-$TZ} test-tool date show:"$format" "$time" >actual &&
test_cmp expect actual
ok 15 - show date (short:1466000000 +0200)
expecting success of 0006.16 'show date (default:1466000000 +0200)':
echo "$time -> $expect" >expect &&
TZ=${zone:-$TZ} test-tool date show:"$format" "$time" >actual &&
test_cmp expect actual
ok 16 - show date (default:1466000000 +0200)
expecting success of 0006.17 'show date (raw:1466000000 +0200)':
echo "$time -> $expect" >expect &&
TZ=${zone:-$TZ} test-tool date show:"$format" "$time" >actual &&
test_cmp expect actual
ok 17 - show date (raw:1466000000 +0200)
expecting success of 0006.18 'show date (unix:1466000000 +0200)':
echo "$time -> $expect" >expect &&
TZ=${zone:-$TZ} test-tool date show:"$format" "$time" >actual &&
test_cmp expect actual
ok 18 - show date (unix:1466000000 +0200)
expecting success of 0006.19 'show date (iso-local:1466000000 +0200)':
echo "$time -> $expect" >expect &&
TZ=${zone:-$TZ} test-tool date show:"$format" "$time" >actual &&
test_cmp expect actual
ok 19 - show date (iso-local:1466000000 +0200)
expecting success of 0006.20 'show date (raw-local:1466000000 +0200)':
echo "$time -> $expect" >expect &&
TZ=${zone:-$TZ} test-tool date show:"$format" "$time" >actual &&
test_cmp expect actual
ok 20 - show date (raw-local:1466000000 +0200)
expecting success of 0006.21 'show date (unix-local:1466000000 +0200)':
echo "$time -> $expect" >expect &&
TZ=${zone:-$TZ} test-tool date show:"$format" "$time" >actual &&
test_cmp expect actual
ok 21 - show date (unix-local:1466000000 +0200)
expecting success of 0006.22 'show date (format:%z:1466000000 +0200)':
echo "$time -> $expect" >expect &&
TZ=${zone:-$TZ} test-tool date show:"$format" "$time" >actual &&
test_cmp expect actual
ok 22 - show date (format:%z:1466000000 +0200)
expecting success of 0006.23 'show date (format-local:%z:1466000000 +0200)':
echo "$time -> $expect" >expect &&
TZ=${zone:-$TZ} test-tool date show:"$format" "$time" >actual &&
test_cmp expect actual
ok 23 - show date (format-local:%z:1466000000 +0200)
expecting success of 0006.24 'show date (format:%Z:1466000000 +0200)':
echo "$time -> $expect" >expect &&
TZ=${zone:-$TZ} test-tool date show:"$format" "$time" >actual &&
test_cmp expect actual
ok 24 - show date (format:%Z:1466000000 +0200)
expecting success of 0006.25 'show date (format-local:%Z:1466000000 +0200)':
echo "$time -> $expect" >expect &&
TZ=${zone:-$TZ} test-tool date show:"$format" "$time" >actual &&
test_cmp expect actual
ok 25 - show date (format-local:%Z:1466000000 +0200)
expecting success of 0006.26 'show date (format:%%z:1466000000 +0200)':
echo "$time -> $expect" >expect &&
TZ=${zone:-$TZ} test-tool date show:"$format" "$time" >actual &&
test_cmp expect actual
ok 26 - show date (format:%%z:1466000000 +0200)
expecting success of 0006.27 'show date (format-local:%%z:1466000000 +0200)':
echo "$time -> $expect" >expect &&
TZ=${zone:-$TZ} test-tool date show:"$format" "$time" >actual &&
test_cmp expect actual
ok 27 - show date (format-local:%%z:1466000000 +0200)
expecting success of 0006.28 'show date (format:%Y-%m-%d %H:%M:%S:1466000000 +0200)':
echo "$time -> $expect" >expect &&
TZ=${zone:-$TZ} test-tool date show:"$format" "$time" >actual &&
test_cmp expect actual
ok 28 - show date (format:%Y-%m-%d %H:%M:%S:1466000000 +0200)
expecting success of 0006.29 'show date (format-local:%Y-%m-%d %H:%M:%S:1466000000 +0200)':
echo "$time -> $expect" >expect &&
TZ=${zone:-$TZ} test-tool date show:"$format" "$time" >actual &&
test_cmp expect actual
ok 29 - show date (format-local:%Y-%m-%d %H:%M:%S:1466000000 +0200)
expecting success of 0006.30 'show date (format:%s:123456789 +1234)':
echo "$time -> $expect" >expect &&
TZ=${zone:-$TZ} test-tool date show:"$format" "$time" >actual &&
test_cmp expect actual
ok 30 - show date (format:%s:123456789 +1234)
expecting success of 0006.31 'show date (format:%s:123456789 -1234)':
echo "$time -> $expect" >expect &&
TZ=${zone:-$TZ} test-tool date show:"$format" "$time" >actual &&
test_cmp expect actual
ok 31 - show date (format:%s:123456789 -1234)
expecting success of 0006.32 'show date (format-local:%s:123456789 -1234)':
echo "$time -> $expect" >expect &&
TZ=${zone:-$TZ} test-tool date show:"$format" "$time" >actual &&
test_cmp expect actual
ok 32 - show date (format-local:%s:123456789 -1234)
checking prerequisite: TIME_IS_64BIT
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-TIME_IS_64BIT" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-TIME_IS_64BIT" &&test-tool date is64bit
)
prerequisite TIME_IS_64BIT ok
checking prerequisite: TIME_T_IS_64BIT
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-TIME_T_IS_64BIT" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-TIME_T_IS_64BIT" &&test-tool date time_t-is64bit
)
prerequisite TIME_T_IS_64BIT not satisfied
ok 33 # skip show date (iso:5758122296 -0400) (missing TIME_T_IS_64BIT of TIME_IS_64BIT,TIME_T_IS_64BIT)
ok 34 # skip show date (iso-local:5758122296 -0400) (missing TIME_T_IS_64BIT of TIME_IS_64BIT,TIME_T_IS_64BIT)
expecting success of 0006.35 'parse date (2008)':
TZ=UTC test-tool date parse '2008' >actual &&
test_cmp expect actual
ok 35 - parse date (2008)
expecting success of 0006.36 'parse date (2008-02)':
TZ=UTC test-tool date parse '2008-02' >actual &&
test_cmp expect actual
ok 36 - parse date (2008-02)
expecting success of 0006.37 'parse date (2008-02-14)':
TZ=UTC test-tool date parse '2008-02-14' >actual &&
test_cmp expect actual
ok 37 - parse date (2008-02-14)
expecting success of 0006.38 'parse date (2008-02-14 20:30:45)':
TZ=UTC test-tool date parse '2008-02-14 20:30:45' >actual &&
test_cmp expect actual
ok 38 - parse date (2008-02-14 20:30:45)
expecting success of 0006.39 'parse date (2008-02-14 20:30:45 -0500)':
TZ=UTC test-tool date parse '2008-02-14 20:30:45 -0500' >actual &&
test_cmp expect actual
ok 39 - parse date (2008-02-14 20:30:45 -0500)
expecting success of 0006.40 'parse date (2008.02.14 20:30:45 -0500)':
TZ=UTC test-tool date parse '2008.02.14 20:30:45 -0500' >actual &&
test_cmp expect actual
ok 40 - parse date (2008.02.14 20:30:45 -0500)
expecting success of 0006.41 'parse date (20080214T20:30:45)':
TZ=UTC test-tool date parse '20080214T20:30:45' >actual &&
test_cmp expect actual
ok 41 - parse date (20080214T20:30:45)
expecting success of 0006.42 'parse date (20080214T20:30)':
TZ=UTC test-tool date parse '20080214T20:30' >actual &&
test_cmp expect actual
ok 42 - parse date (20080214T20:30)
expecting success of 0006.43 'parse date (20080214T20)':
TZ=UTC test-tool date parse '20080214T20' >actual &&
test_cmp expect actual
ok 43 - parse date (20080214T20)
expecting success of 0006.44 'parse date (20080214T203045)':
TZ=UTC test-tool date parse '20080214T203045' >actual &&
test_cmp expect actual
ok 44 - parse date (20080214T203045)
expecting success of 0006.45 'parse date (20080214T2030)':
TZ=UTC test-tool date parse '20080214T2030' >actual &&
test_cmp expect actual
ok 45 - parse date (20080214T2030)
expecting success of 0006.46 'parse date (20080214T000000.20)':
TZ=UTC test-tool date parse '20080214T000000.20' >actual &&
test_cmp expect actual
ok 46 - parse date (20080214T000000.20)
expecting success of 0006.47 'parse date (20080214T00:00:00.20)':
TZ=UTC test-tool date parse '20080214T00:00:00.20' >actual &&
test_cmp expect actual
ok 47 - parse date (20080214T00:00:00.20)
expecting success of 0006.48 'parse date (20080214T203045-04:00)':
TZ=UTC test-tool date parse '20080214T203045-04:00' >actual &&
test_cmp expect actual
ok 48 - parse date (20080214T203045-04:00)
expecting success of 0006.49 'parse date (20080214T203045 -04:00)':
TZ=UTC test-tool date parse '20080214T203045 -04:00' >actual &&
test_cmp expect actual
ok 49 - parse date (20080214T203045 -04:00)
expecting success of 0006.50 'parse date (20080214T203045.019-04:00)':
TZ=UTC test-tool date parse '20080214T203045.019-04:00' >actual &&
test_cmp expect actual
ok 50 - parse date (20080214T203045.019-04:00)
expecting success of 0006.51 'parse date (2008-02-14 20:30:45.019-04:00)':
TZ=UTC test-tool date parse '2008-02-14 20:30:45.019-04:00' >actual &&
test_cmp expect actual
ok 51 - parse date (2008-02-14 20:30:45.019-04:00)
expecting success of 0006.52 'parse date (2008-02-14 20:30:45 -0015)':
TZ=UTC test-tool date parse '2008-02-14 20:30:45 -0015' >actual &&
test_cmp expect actual
ok 52 - parse date (2008-02-14 20:30:45 -0015)
expecting success of 0006.53 'parse date (2008-02-14 20:30:45 -5)':
TZ=UTC test-tool date parse '2008-02-14 20:30:45 -5' >actual &&
test_cmp expect actual
ok 53 - parse date (2008-02-14 20:30:45 -5)
expecting success of 0006.54 'parse date (2008-02-14 20:30:45 -5:)':
TZ=UTC test-tool date parse '2008-02-14 20:30:45 -5:' >actual &&
test_cmp expect actual
ok 54 - parse date (2008-02-14 20:30:45 -5:)
expecting success of 0006.55 'parse date (2008-02-14 20:30:45 -05)':
TZ=UTC test-tool date parse '2008-02-14 20:30:45 -05' >actual &&
test_cmp expect actual
ok 55 - parse date (2008-02-14 20:30:45 -05)
expecting success of 0006.56 'parse date (2008-02-14 20:30:45 -:30)':
TZ=UTC test-tool date parse '2008-02-14 20:30:45 -:30' >actual &&
test_cmp expect actual
ok 56 - parse date (2008-02-14 20:30:45 -:30)
expecting success of 0006.57 'parse date (2008-02-14 20:30:45 -05:00)':
TZ=UTC test-tool date parse '2008-02-14 20:30:45 -05:00' >actual &&
test_cmp expect actual
ok 57 - parse date (2008-02-14 20:30:45 -05:00)
expecting success of 0006.58 'parse date (2008-02-14 20:30:45 TZ=EST5)':
TZ=EST5 test-tool date parse '2008-02-14 20:30:45' >actual &&
test_cmp expect actual
ok 58 - parse date (2008-02-14 20:30:45 TZ=EST5)
expecting success of 0006.59 'parse date (Thu, 7 Apr 2005 15:14:13 -0700)':
TZ=UTC test-tool date parse 'Thu, 7 Apr 2005 15:14:13 -0700' >actual &&
test_cmp expect actual
ok 59 - parse date (Thu, 7 Apr 2005 15:14:13 -0700)
expecting success of 0006.60 'parse approxidate (now)':
test-tool date approxidate 'now' >actual &&
test_cmp expect actual
ok 60 - parse approxidate (now)
expecting success of 0006.61 'parse approxidate (5 seconds ago)':
test-tool date approxidate '5 seconds ago' >actual &&
test_cmp expect actual
ok 61 - parse approxidate (5 seconds ago)
expecting success of 0006.62 'parse approxidate (5.seconds.ago)':
test-tool date approxidate '5.seconds.ago' >actual &&
test_cmp expect actual
ok 62 - parse approxidate (5.seconds.ago)
expecting success of 0006.63 'parse approxidate (10.minutes.ago)':
test-tool date approxidate '10.minutes.ago' >actual &&
test_cmp expect actual
ok 63 - parse approxidate (10.minutes.ago)
expecting success of 0006.64 'parse approxidate (yesterday)':
test-tool date approxidate 'yesterday' >actual &&
test_cmp expect actual
ok 64 - parse approxidate (yesterday)
expecting success of 0006.65 'parse approxidate (3.days.ago)':
test-tool date approxidate '3.days.ago' >actual &&
test_cmp expect actual
ok 65 - parse approxidate (3.days.ago)
expecting success of 0006.66 'parse approxidate (12:34:56.3.days.ago)':
test-tool date approxidate '12:34:56.3.days.ago' >actual &&
test_cmp expect actual
ok 66 - parse approxidate (12:34:56.3.days.ago)
expecting success of 0006.67 'parse approxidate (3.weeks.ago)':
test-tool date approxidate '3.weeks.ago' >actual &&
test_cmp expect actual
ok 67 - parse approxidate (3.weeks.ago)
expecting success of 0006.68 'parse approxidate (3.months.ago)':
test-tool date approxidate '3.months.ago' >actual &&
test_cmp expect actual
ok 68 - parse approxidate (3.months.ago)
expecting success of 0006.69 'parse approxidate (2.years.3.months.ago)':
test-tool date approxidate '2.years.3.months.ago' >actual &&
test_cmp expect actual
ok 69 - parse approxidate (2.years.3.months.ago)
expecting success of 0006.70 'parse approxidate (6am yesterday)':
test-tool date approxidate '6am yesterday' >actual &&
test_cmp expect actual
ok 70 - parse approxidate (6am yesterday)
expecting success of 0006.71 'parse approxidate (6pm yesterday)':
test-tool date approxidate '6pm yesterday' >actual &&
test_cmp expect actual
ok 71 - parse approxidate (6pm yesterday)
expecting success of 0006.72 'parse approxidate (3:00)':
test-tool date approxidate '3:00' >actual &&
test_cmp expect actual
ok 72 - parse approxidate (3:00)
expecting success of 0006.73 'parse approxidate (15:00)':
test-tool date approxidate '15:00' >actual &&
test_cmp expect actual
ok 73 - parse approxidate (15:00)
expecting success of 0006.74 'parse approxidate (noon today)':
test-tool date approxidate 'noon today' >actual &&
test_cmp expect actual
ok 74 - parse approxidate (noon today)
expecting success of 0006.75 'parse approxidate (noon yesterday)':
test-tool date approxidate 'noon yesterday' >actual &&
test_cmp expect actual
ok 75 - parse approxidate (noon yesterday)
expecting success of 0006.76 'parse approxidate (January 5th noon pm)':
test-tool date approxidate 'January 5th noon pm' >actual &&
test_cmp expect actual
ok 76 - parse approxidate (January 5th noon pm)
expecting success of 0006.77 'parse approxidate (10am noon)':
test-tool date approxidate '10am noon' >actual &&
test_cmp expect actual
ok 77 - parse approxidate (10am noon)
expecting success of 0006.78 'parse approxidate (last tuesday)':
test-tool date approxidate 'last tuesday' >actual &&
test_cmp expect actual
ok 78 - parse approxidate (last tuesday)
expecting success of 0006.79 'parse approxidate (July 5th)':
test-tool date approxidate 'July 5th' >actual &&
test_cmp expect actual
ok 79 - parse approxidate (July 5th)
expecting success of 0006.80 'parse approxidate (06/05/2009)':
test-tool date approxidate '06/05/2009' >actual &&
test_cmp expect actual
ok 80 - parse approxidate (06/05/2009)
expecting success of 0006.81 'parse approxidate (06.05.2009)':
test-tool date approxidate '06.05.2009' >actual &&
test_cmp expect actual
ok 81 - parse approxidate (06.05.2009)
expecting success of 0006.82 'parse approxidate (Jun 6, 5AM)':
test-tool date approxidate 'Jun 6, 5AM' >actual &&
test_cmp expect actual
ok 82 - parse approxidate (Jun 6, 5AM)
expecting success of 0006.83 'parse approxidate (5AM Jun 6)':
test-tool date approxidate '5AM Jun 6' >actual &&
test_cmp expect actual
ok 83 - parse approxidate (5AM Jun 6)
expecting success of 0006.84 'parse approxidate (6AM, June 7, 2009)':
test-tool date approxidate '6AM, June 7, 2009' >actual &&
test_cmp expect actual
ok 84 - parse approxidate (6AM, June 7, 2009)
expecting success of 0006.85 'parse approxidate (2008-12-01)':
test-tool date approxidate '2008-12-01' >actual &&
test_cmp expect actual
ok 85 - parse approxidate (2008-12-01)
expecting success of 0006.86 'parse approxidate (2009-12-01)':
test-tool date approxidate '2009-12-01' >actual &&
test_cmp expect actual
ok 86 - parse approxidate (2009-12-01)
expecting success of 0006.87 'human date 1251642000':
test-tool date human $t >actual &&
test_cmp expect actual
ok 87 - human date 1251642000
expecting success of 0006.88 'human date 1251228000':
test-tool date human $t >actual &&
test_cmp expect actual
ok 88 - human date 1251228000
expecting success of 0006.89 'human date 1249932000':
test-tool date human $t >actual &&
test_cmp expect actual
ok 89 - human date 1249932000
expecting success of 0006.90 'human date 1238660000':
test-tool date human $t >actual &&
test_cmp expect actual
ok 90 - human date 1238660000
expecting success of 0006.91 'human date 1220210400':
test-tool date human $t >actual &&
test_cmp expect actual
ok 91 - human date 1220210400
expecting success of 0006.92 'human date 1214160000':
test-tool date human $t >actual &&
test_cmp expect actual
ok 92 - human date 1214160000
expecting success of 0006.93 'human date 1196472000':
test-tool date human $t >actual &&
test_cmp expect actual
ok 93 - human date 1196472000
expecting success of 0006.94 'human date 621660000':
test-tool date human $t >actual &&
test_cmp expect actual
ok 94 - human date 621660000
# passed all 94 test(s)
1..94
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0001-init.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/.git/
expecting success of 0001.1 'plain':
git init plain &&
check_config plain/.git false unset
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/plain/.git/
ok 1 - plain
expecting success of 0001.2 'plain nested in bare':
(
git init --bare bare-ancestor.git &&
cd bare-ancestor.git &&
mkdir plain-nested &&
cd plain-nested &&
git init
) &&
check_config bare-ancestor.git/plain-nested/.git false unset
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/bare-ancestor.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/bare-ancestor.git/plain-nested/.git/
ok 2 - plain nested in bare
expecting success of 0001.3 'plain through aliased command, outside any git repo':
(
HOME=$(pwd)/alias-config &&
export HOME &&
mkdir alias-config &&
echo "[alias] aliasedinit = init" >alias-config/.gitconfig &&
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
mkdir plain-aliased &&
cd plain-aliased &&
git aliasedinit
) &&
check_config plain-aliased/.git false unset
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/plain-aliased/.git/
ok 3 - plain through aliased command, outside any git repo
expecting success of 0001.4 'plain nested through aliased command':
(
git init plain-ancestor-aliased &&
cd plain-ancestor-aliased &&
echo "[alias] aliasedinit = init" >>.git/config &&
mkdir plain-nested &&
cd plain-nested &&
git aliasedinit
) &&
check_config plain-ancestor-aliased/plain-nested/.git false unset
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/plain-ancestor-aliased/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/plain-ancestor-aliased/plain-nested/.git/
ok 4 - plain nested through aliased command
expecting success of 0001.5 'plain nested in bare through aliased command':
(
git init --bare bare-ancestor-aliased.git &&
cd bare-ancestor-aliased.git &&
echo "[alias] aliasedinit = init" >>config &&
mkdir plain-nested &&
cd plain-nested &&
git aliasedinit
) &&
check_config bare-ancestor-aliased.git/plain-nested/.git false unset
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/bare-ancestor-aliased.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/bare-ancestor-aliased.git/plain-nested/.git/
ok 5 - plain nested in bare through aliased command
expecting success of 0001.6 'No extra GIT_* on alias scripts':
write_script script <<-\EOF &&
env |
sed -n \
-e "/^GIT_PREFIX=/d" \
-e "/^GIT_TEXTDOMAINDIR=/d" \
-e "/^GIT_TRACE2_PARENT/d" \
-e "/^GIT_/s/=.*//p" |
sort
EOF
./script >expected &&
git config alias.script \!./script &&
( mkdir sub && cd sub && git script >../actual ) &&
test_cmp expected actual
ok 6 - No extra GIT_* on alias scripts
expecting success of 0001.7 'plain with GIT_WORK_TREE':
mkdir plain-wt &&
test_must_fail env GIT_WORK_TREE="$(pwd)/plain-wt" git init plain-wt
fatal: GIT_WORK_TREE (or --work-tree=<directory>) not allowed without specifying GIT_DIR (or --git-dir=<directory>)
ok 7 - plain with GIT_WORK_TREE
expecting success of 0001.8 'plain bare':
git --bare init plain-bare-1 &&
check_config plain-bare-1 true unset
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/plain-bare-1/
ok 8 - plain bare
expecting success of 0001.9 'plain bare with GIT_WORK_TREE':
mkdir plain-bare-2 &&
test_must_fail \
env GIT_WORK_TREE="$(pwd)/plain-bare-2" \
git --bare init plain-bare-2
fatal: GIT_WORK_TREE (or --work-tree=<directory>) not allowed without specifying GIT_DIR (or --git-dir=<directory>)
ok 9 - plain bare with GIT_WORK_TREE
expecting success of 0001.10 'GIT_DIR bare':
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 /<<PKGBUILDDIR>>/t/trash directory.t0001-init/git-dir-bare.git/
ok 10 - GIT_DIR bare
expecting success of 0001.11 'init --bare':
git init --bare init-bare.git &&
check_config init-bare.git true unset
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/init-bare.git/
ok 11 - init --bare
expecting success of 0001.12 'GIT_DIR non-bare':
(
mkdir non-bare &&
cd non-bare &&
GIT_DIR=.git git init
) &&
check_config non-bare/.git false unset
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/non-bare/.git/
ok 12 - GIT_DIR non-bare
expecting success of 0001.13 'GIT_DIR & GIT_WORK_TREE (1)':
(
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 /<<PKGBUILDDIR>>/t/trash directory.t0001-init/git-dir-wt-1.git/
ok 13 - GIT_DIR & GIT_WORK_TREE (1)
expecting success of 0001.14 'GIT_DIR & GIT_WORK_TREE (2)':
mkdir git-dir-wt-2.git &&
test_must_fail env \
GIT_WORK_TREE="$(pwd)" \
GIT_DIR=git-dir-wt-2.git \
git --bare init
fatal: GIT_WORK_TREE (or --work-tree=<directory>) not allowed without specifying GIT_DIR (or --git-dir=<directory>)
ok 14 - GIT_DIR & GIT_WORK_TREE (2)
expecting success of 0001.15 'reinit':
(
mkdir again &&
cd again &&
git -c init.defaultBranch=initial init >out1 2>err1 &&
git init >out2 2>err2
) &&
test_i18ngrep "Initialized empty" again/out1 &&
test_i18ngrep "Reinitialized existing" again/out2 &&
test_must_be_empty again/err1 &&
test_must_be_empty again/err2
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/again/.git/
Reinitialized existing Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/again/.git/
ok 15 - reinit
expecting success of 0001.16 'init with --template':
mkdir template-source &&
echo content >template-source/file &&
git init --template=template-source template-custom &&
test_cmp template-source/file template-custom/.git/file
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/template-custom/.git/
ok 16 - init with --template
expecting success of 0001.17 'init with --template (blank)':
git init template-plain &&
test_path_is_file template-plain/.git/info/exclude &&
git init --template= template-blank &&
test_path_is_missing template-blank/.git/info/exclude
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/template-plain/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/template-blank/.git/
ok 17 - init with --template (blank)
expecting success of 0001.18 'init with init.templatedir set':
mkdir templatedir-source &&
echo Content >templatedir-source/file &&
test_config_global init.templatedir "${HOME}/templatedir-source" &&
init_no_templatedir_env templatedir-set &&
test_cmp templatedir-source/file templatedir-set/.git/file
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/templatedir-set/.git/
ok 18 - init with init.templatedir set
expecting success of 0001.19 'init with init.templatedir using ~ expansion':
mkdir -p templatedir-source &&
echo Content >templatedir-source/file &&
test_config_global init.templatedir "~/templatedir-source" &&
init_no_templatedir_env templatedir-expansion &&
test_cmp templatedir-source/file templatedir-expansion/.git/file
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/templatedir-expansion/.git/
ok 19 - init with init.templatedir using ~ expansion
expecting success of 0001.20 'init --bare/--shared overrides system/global config':
test_config_global core.bare false &&
test_config_global core.sharedRepository 0640 &&
git init --bare --shared=0666 init-bare-shared-override &&
check_config init-bare-shared-override true unset &&
test x0666 = \
x$(git config -f init-bare-shared-override/config core.sharedRepository)
Initialized empty shared Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/init-bare-shared-override/
ok 20 - init --bare/--shared overrides system/global config
expecting success of 0001.21 'init honors global core.sharedRepository':
test_config_global core.sharedRepository 0666 &&
git init shared-honor-global &&
test x0666 = \
x$(git config -f shared-honor-global/.git/config core.sharedRepository)
Initialized empty shared Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/shared-honor-global/.git/
ok 21 - init honors global core.sharedRepository
expecting success of 0001.22 'init allows insanely long --template':
git init --template=$(printf "x%09999dx" 1) test
warning: templates not found in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/test/.git/
ok 22 - init allows insanely long --template
expecting success of 0001.23 'init creates a new directory':
rm -fr newdir &&
git init newdir &&
test_path_is_dir newdir/.git/refs
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/newdir/.git/
ok 23 - init creates a new directory
expecting success of 0001.24 'init creates a new bare directory':
rm -fr newdir &&
git init --bare newdir &&
test_path_is_dir newdir/refs
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/newdir/
ok 24 - init creates a new bare directory
expecting success of 0001.25 'init recreates a directory':
rm -fr newdir &&
mkdir newdir &&
git init newdir &&
test_path_is_dir newdir/.git/refs
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/newdir/.git/
ok 25 - init recreates a directory
expecting success of 0001.26 'init recreates a new bare directory':
rm -fr newdir &&
mkdir newdir &&
git init --bare newdir &&
test_path_is_dir newdir/refs
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/newdir/
ok 26 - init recreates a new bare directory
expecting success of 0001.27 'init creates a new deep directory':
rm -fr newdir &&
git init newdir/a/b/c &&
test_path_is_dir newdir/a/b/c/.git/refs
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/newdir/a/b/c/.git/
ok 27 - init creates a new deep directory
expecting success of 0001.28 'init creates a new deep directory (umask vs. shared)':
rm -fr newdir &&
(
# Leading directories should honor umask while
# the repository itself should follow "shared"
mkdir newdir &&
# Remove a default ACL if possible.
(setfacl -k newdir 2>/dev/null || true) &&
umask 002 &&
git init --bare --shared=0660 newdir/a/b/c &&
test_path_is_dir newdir/a/b/c/refs &&
ls -ld newdir/a newdir/a/b > lsab.out &&
! grep -v "^drwxrw[sx]r-x" lsab.out &&
ls -ld newdir/a/b/c > lsc.out &&
! grep -v "^drwxrw[sx]---" lsc.out
)
Initialized empty shared Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/newdir/a/b/c/
ok 28 - init creates a new deep directory (umask vs. shared)
expecting success of 0001.29 'init notices EEXIST (1)':
rm -fr newdir &&
>newdir &&
test_must_fail git init newdir &&
test_path_is_file newdir
fatal: cannot mkdir newdir: File exists
ok 29 - init notices EEXIST (1)
expecting success of 0001.30 'init notices EEXIST (2)':
rm -fr newdir &&
mkdir newdir &&
>newdir/a &&
test_must_fail git init newdir/a/b &&
test_path_is_file newdir/a
fatal: cannot mkdir newdir/a/b: File exists
ok 30 - init notices EEXIST (2)
checking prerequisite: SANITY
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SANITY" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SANITY" &&
mkdir SANETESTD.1 SANETESTD.2 &&
chmod +w SANETESTD.1 SANETESTD.2 &&
>SANETESTD.1/x 2>SANETESTD.2/x &&
chmod -w SANETESTD.1 &&
chmod -r SANETESTD.1/x &&
chmod -rx SANETESTD.2 ||
BUG "cannot prepare SANETESTD"
! test -r SANETESTD.1/x &&
! rm SANETESTD.1/x && ! test -f SANETESTD.2/x
status=$?
chmod +rwx SANETESTD.1 SANETESTD.2 &&
rm -rf SANETESTD.1 SANETESTD.2 ||
BUG "cannot clean SANETESTD"
return $status
)
rm: cannot remove 'SANETESTD.1/x': Permission denied
prerequisite SANITY ok
expecting success of 0001.31 'init notices EPERM':
test_when_finished "chmod +w newdir" &&
rm -fr newdir &&
mkdir newdir &&
chmod -w newdir &&
test_must_fail git init newdir/a/b
fatal: cannot mkdir newdir/a/b: Permission denied
ok 31 - init notices EPERM
expecting success of 0001.32 'init creates a new bare directory with global --bare':
rm -rf newdir &&
git --bare init newdir &&
test_path_is_dir newdir/refs
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/newdir/
ok 32 - init creates a new bare directory with global --bare
expecting success of 0001.33 'init prefers command line to GIT_DIR':
rm -rf newdir &&
mkdir otherdir &&
GIT_DIR=otherdir git --bare init newdir &&
test_path_is_dir newdir/refs &&
test_path_is_missing otherdir/refs
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/newdir/
ok 33 - init prefers command line to GIT_DIR
expecting success of 0001.34 'init with separate gitdir':
rm -rf newdir &&
git init --separate-git-dir realgitdir newdir &&
newdir_git="$(cat newdir/.git)" &&
test_cmp_fspath "$(pwd)/realgitdir" "${newdir_git#gitdir: }" &&
test_path_is_dir realgitdir/refs
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/realgitdir/
ok 34 - init with separate gitdir
expecting success of 0001.35 'explicit bare & --separate-git-dir incompatible':
test_must_fail git init --bare --separate-git-dir goop.git bare.git 2>err &&
test_i18ngrep "cannot be used together" err
fatal: options '--separate-git-dir' and '--bare' cannot be used together
ok 35 - explicit bare & --separate-git-dir incompatible
expecting success of 0001.36 'implicit bare & --separate-git-dir incompatible':
test_when_finished "rm -rf bare.git" &&
mkdir -p bare.git &&
test_must_fail env GIT_DIR=. \
git -C bare.git init --separate-git-dir goop.git 2>err &&
test_i18ngrep "incompatible" err
fatal: --separate-git-dir incompatible with bare repository
ok 36 - implicit bare & --separate-git-dir incompatible
expecting success of 0001.37 'bare & --separate-git-dir incompatible within worktree':
test_when_finished "rm -rf bare.git linkwt seprepo" &&
test_commit gumby &&
git clone --bare . bare.git &&
git -C bare.git worktree add --detach ../linkwt &&
test_must_fail git -C linkwt init --separate-git-dir seprepo 2>err &&
test_i18ngrep "incompatible" err
[master (root-commit) 9bca56c] gumby
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 gumby.t
Cloning into bare repository 'bare.git'...
done.
Preparing worktree (detached HEAD 9bca56c)
HEAD is now at 9bca56c gumby
fatal: --separate-git-dir incompatible with bare repository
ok 37 - bare & --separate-git-dir incompatible within worktree
expecting success of 0001.38 'init in long base path':
check_long_base_path
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/123456789abcdef/123456789abcdef/123456789abcdef/123456789abcdef/123456789abcdef/123456789abcdef/123456789abcdef/123456789abcdef/newdir/.git/
ok 38 - init in long base path
checking prerequisite: GETCWD_IGNORES_PERMS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-GETCWD_IGNORES_PERMS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-GETCWD_IGNORES_PERMS" &&
base=GETCWD_TEST_BASE_DIR &&
mkdir -p $base/dir &&
chmod 100 $base ||
BUG "cannot prepare $base"
(
cd $base/dir &&
test-tool getcwd
)
status=$?
chmod 700 $base &&
rm -rf $base ||
BUG "cannot clean $base"
return $status
)
/<<PKGBUILDDIR>>/t/trash directory.t0001-init/prereq-test-dir-GETCWD_IGNORES_PERMS/GETCWD_TEST_BASE_DIR/dir
prerequisite GETCWD_IGNORES_PERMS ok
expecting success of 0001.39 'init in long restricted base path':
check_long_base_path 0111
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/123456789abcdef/123456789abcdef/123456789abcdef/123456789abcdef/123456789abcdef/123456789abcdef/123456789abcdef/123456789abcdef/newdir/.git/
ok 39 - init in long restricted base path
expecting success of 0001.40 're-init on .git file':
( cd newdir && git init )
Reinitialized existing Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/realgitdir/
ok 40 - re-init on .git file
expecting success of 0001.41 're-init to update git link':
git -C newdir init --separate-git-dir ../surrealgitdir &&
newdir_git="$(cat newdir/.git)" &&
test_cmp_fspath "$(pwd)/surrealgitdir" "${newdir_git#gitdir: }" &&
test_path_is_dir surrealgitdir/refs &&
test_path_is_missing realgitdir/refs
Reinitialized existing Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/surrealgitdir/
ok 41 - re-init to update git link
expecting success of 0001.42 're-init to move gitdir':
rm -rf newdir realgitdir surrealgitdir &&
git init newdir &&
git -C newdir init --separate-git-dir ../realgitdir &&
newdir_git="$(cat newdir/.git)" &&
test_cmp_fspath "$(pwd)/realgitdir" "${newdir_git#gitdir: }" &&
test_path_is_dir realgitdir/refs
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/newdir/.git/
Reinitialized existing Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/realgitdir/
ok 42 - re-init to move gitdir
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
expecting success of 0001.43 're-init to move gitdir symlink':
rm -rf newdir realgitdir &&
git init newdir &&
(
cd newdir &&
mv .git here &&
ln -s here .git &&
git init --separate-git-dir ../realgitdir
) &&
echo "gitdir: $(pwd)/realgitdir" >expected &&
test_cmp expected newdir/.git &&
test_cmp expected newdir/here &&
test_path_is_dir realgitdir/refs
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/newdir/.git/
Reinitialized existing Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/realgitdir/
ok 43 - re-init to move gitdir symlink
expecting success of 0001.44 're-init to move gitdir with linked worktrees':
sep_git_dir_worktree mainwt
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/mainwt/.git/
[master (root-commit) ad170d6] gumby
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 gumby.t
Preparing worktree (detached HEAD ad170d6)
HEAD is now at ad170d6 gumby
Reinitialized existing Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/seprepo/
ok 44 - re-init to move gitdir with linked worktrees
expecting success of 0001.45 're-init to move gitdir within linked worktree':
sep_git_dir_worktree linkwt
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/mainwt/.git/
[master (root-commit) ee407db] gumby
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 gumby.t
Preparing worktree (detached HEAD ee407db)
HEAD is now at ee407db gumby
Reinitialized existing Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/seprepo/
ok 45 - re-init to move gitdir within linked worktree
ok 46 # skip .git hidden (missing MINGW)
ok 47 # skip bare git dir not hidden (missing MINGW)
expecting success of 0001.48 'remote init from does not use config from cwd':
rm -rf newdir &&
test_config core.logallrefupdates true &&
git init newdir &&
echo true >expect &&
git -C newdir config --bool core.logallrefupdates >actual &&
test_cmp expect actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/newdir/.git/
ok 48 - remote init from does not use config from cwd
expecting success of 0001.49 're-init from a linked worktree':
git init main-worktree &&
(
cd main-worktree &&
test_commit first &&
git worktree add ../linked-worktree &&
mv .git/info/exclude expected-exclude &&
cp .git/config expected-config &&
find .git/worktrees -print | sort >expected &&
git -C ../linked-worktree init &&
test_cmp expected-exclude .git/info/exclude &&
test_cmp expected-config .git/config &&
find .git/worktrees -print | sort >actual &&
test_cmp expected actual
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/main-worktree/.git/
[master (root-commit) 599f738] first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 first.t
Preparing worktree (new branch 'linked-worktree')
HEAD is now at 599f738 first
Reinitialized existing Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/main-worktree/.git/worktrees/linked-worktree/
ok 49 - re-init from a linked worktree
expecting success of 0001.50 'init honors GIT_DEFAULT_HASH':
GIT_DEFAULT_HASH=sha1 git init sha1 &&
git -C sha1 rev-parse --show-object-format >actual &&
echo sha1 >expected &&
test_cmp expected actual &&
GIT_DEFAULT_HASH=sha256 git init sha256 &&
git -C sha256 rev-parse --show-object-format >actual &&
echo sha256 >expected &&
test_cmp expected actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/sha1/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/sha256/.git/
ok 50 - init honors GIT_DEFAULT_HASH
expecting success of 0001.51 'init honors --object-format':
git init --object-format=sha1 explicit-sha1 &&
git -C explicit-sha1 rev-parse --show-object-format >actual &&
echo sha1 >expected &&
test_cmp expected actual &&
git init --object-format=sha256 explicit-sha256 &&
git -C explicit-sha256 rev-parse --show-object-format >actual &&
echo sha256 >expected &&
test_cmp expected actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/explicit-sha1/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/explicit-sha256/.git/
ok 51 - init honors --object-format
expecting success of 0001.52 'extensions.objectFormat is not allowed with repo version 0':
git init --object-format=sha256 explicit-v0 &&
git -C explicit-v0 config core.repositoryformatversion 0 &&
test_must_fail git -C explicit-v0 rev-parse --show-object-format
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/explicit-v0/.git/
fatal: repo version is 0, but v1-only extension found:
objectformat
ok 52 - extensions.objectFormat is not allowed with repo version 0
expecting success of 0001.53 'init rejects attempts to initialize with different hash':
test_must_fail git -C sha1 init --object-format=sha256 &&
test_must_fail git -C sha256 init --object-format=sha1
fatal: attempt to reinitialize repository with different hash
fatal: attempt to reinitialize repository with different hash
ok 53 - init rejects attempts to initialize with different hash
ok 54 # skip core.hidedotfiles = false (missing MINGW)
ok 55 # skip redirect std handles (missing MINGW)
expecting success of 0001.56 '--initial-branch':
git init --initial-branch=hello initial-branch-option &&
git -C initial-branch-option symbolic-ref HEAD >actual &&
echo refs/heads/hello >expect &&
test_cmp expect actual &&
: re-initializing should not change the branch name &&
git init --initial-branch=ignore initial-branch-option 2>err &&
test_i18ngrep "ignored --initial-branch" err &&
git -C initial-branch-option symbolic-ref HEAD >actual &&
grep hello actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/initial-branch-option/.git/
Reinitialized existing Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/initial-branch-option/.git/
warning: re-init: ignored --initial-branch=ignore
refs/heads/hello
ok 56 - --initial-branch
expecting success of 0001.57 'overridden default initial branch name (config)':
test_config_global init.defaultBranch nmb &&
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME= git init initial-branch-config &&
git -C initial-branch-config symbolic-ref HEAD >actual &&
grep nmb actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/initial-branch-config/.git/
refs/heads/nmb
ok 57 - overridden default initial branch name (config)
expecting success of 0001.58 'advice on unconfigured init.defaultBranch':
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME= git -c color.advice=always \
init unconfigured-default-branch-name 2>err &&
test_decode_color <err >decoded &&
test_i18ngrep "<YELLOW>hint: " decoded
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/unconfigured-default-branch-name/.git/
<YELLOW>hint: Using 'master' as the name for the initial branch. This default branch name<RESET>
<YELLOW>hint: is subject to change. To configure the initial branch name to use in all<RESET>
<YELLOW>hint: of your new repositories, which will suppress this warning, call:<RESET>
<YELLOW>hint: <RESET>
<YELLOW>hint: git config --global init.defaultBranch <name><RESET>
<YELLOW>hint: <RESET>
<YELLOW>hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and<RESET>
<YELLOW>hint: 'development'. The just-created branch can be renamed via this command:<RESET>
<YELLOW>hint: <RESET>
<YELLOW>hint: git branch -m <name><RESET>
ok 58 - advice on unconfigured init.defaultBranch
expecting success of 0001.59 'overridden default main branch name (env)':
test_config_global init.defaultBranch nmb &&
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=env git init main-branch-env &&
git -C main-branch-env symbolic-ref HEAD >actual &&
grep env actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/main-branch-env/.git/
refs/heads/env
ok 59 - overridden default main branch name (env)
expecting success of 0001.60 'invalid default branch name':
test_must_fail env GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME="with space" \
git init initial-branch-invalid 2>err &&
test_i18ngrep "invalid branch name" err
fatal: invalid branch name: init.defaultBranch = with space
ok 60 - invalid default branch name
expecting success of 0001.61 'branch -m with the initial branch':
git init rename-initial &&
git -C rename-initial branch -m renamed &&
echo renamed >expect &&
git -C rename-initial symbolic-ref --short HEAD >actual &&
test_cmp expect actual &&
git -C rename-initial branch -m renamed again &&
echo again >expect &&
git -C rename-initial symbolic-ref --short HEAD >actual &&
test_cmp expect actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0001-init/rename-initial/.git/
ok 61 - branch -m with the initial branch
# passed all 61 test(s)
1..61
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0009-prio-queue.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0009-prio-queue/.git/
expecting success of 0009.1 'basic ordering':
test-tool prio-queue 2 6 3 10 9 5 7 4 5 8 1 dump >actual &&
test_cmp expect actual
ok 1 - basic ordering
expecting success of 0009.2 'mixed put and get':
test-tool prio-queue 6 2 4 get 5 3 get get 1 dump >actual &&
test_cmp expect actual
ok 2 - mixed put and get
expecting success of 0009.3 'notice empty queue':
test-tool prio-queue 1 2 get get get 1 2 get get get >actual &&
test_cmp expect actual
ok 3 - notice empty queue
expecting success of 0009.4 'stack order':
test-tool prio-queue stack 8 1 5 4 6 2 3 dump >actual &&
test_cmp expect actual
ok 4 - stack order
# passed all 4 test(s)
1..4
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0007-git-var.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0007-git-var/.git/
expecting success of 0007.1 'get GIT_AUTHOR_IDENT':
test_tick &&
echo "$GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> $GIT_AUTHOR_DATE" >expect &&
git var GIT_AUTHOR_IDENT >actual &&
test_cmp expect actual
ok 1 - get GIT_AUTHOR_IDENT
expecting success of 0007.2 'get GIT_COMMITTER_IDENT':
test_tick &&
echo "$GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE" >expect &&
git var GIT_COMMITTER_IDENT >actual &&
test_cmp expect actual
ok 2 - get GIT_COMMITTER_IDENT
checking prerequisite: FAIL_PREREQS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-FAIL_PREREQS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-FAIL_PREREQS" &&
test_bool_env GIT_TEST_FAIL_PREREQS false
)
prerequisite FAIL_PREREQS not satisfied
checking prerequisite: AUTOIDENT
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-AUTOIDENT" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-AUTOIDENT" &&
sane_unset GIT_AUTHOR_NAME &&
sane_unset GIT_AUTHOR_EMAIL &&
git var GIT_AUTHOR_IDENT
)
Debian build daemon <buildd@test2023.Home> 1112912053 -0700
prerequisite AUTOIDENT ok
ok 3 # skip requested identities are strict (missing !AUTOIDENT of !FAIL_PREREQS,!AUTOIDENT)
expecting success of 0007.4 'get GIT_DEFAULT_BRANCH without configuration':
(
sane_unset GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME &&
git init defbranch &&
git -C defbranch symbolic-ref --short HEAD >expect &&
git var GIT_DEFAULT_BRANCH >actual &&
test_cmp expect actual
)
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0007-git-var/defbranch/.git/
ok 4 - get GIT_DEFAULT_BRANCH without configuration
expecting success of 0007.5 'get GIT_DEFAULT_BRANCH with configuration':
test_config init.defaultbranch foo &&
(
sane_unset GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME &&
echo foo >expect &&
git var GIT_DEFAULT_BRANCH >actual &&
test_cmp expect actual
)
ok 5 - get GIT_DEFAULT_BRANCH with configuration
expecting success of 0007.6 'get GIT_EDITOR without configuration':
(
sane_unset_all_editors &&
test_expect_code 1 git var GIT_EDITOR >out &&
test_must_be_empty out
)
ok 6 - get GIT_EDITOR without configuration
expecting success of 0007.7 'get GIT_EDITOR with configuration':
test_config core.editor foo &&
(
sane_unset_all_editors &&
echo foo >expect &&
git var GIT_EDITOR >actual &&
test_cmp expect actual
)
ok 7 - get GIT_EDITOR with configuration
expecting success of 0007.8 'get GIT_EDITOR with environment variable GIT_EDITOR':
(
sane_unset_all_editors &&
echo bar >expect &&
GIT_EDITOR=bar git var GIT_EDITOR >actual &&
test_cmp expect actual
)
ok 8 - get GIT_EDITOR with environment variable GIT_EDITOR
expecting success of 0007.9 'get GIT_EDITOR with environment variable EDITOR':
(
sane_unset_all_editors &&
echo bar >expect &&
EDITOR=bar git var GIT_EDITOR >actual &&
test_cmp expect actual
)
ok 9 - get GIT_EDITOR with environment variable EDITOR
expecting success of 0007.10 'get GIT_EDITOR with configuration and environment variable GIT_EDITOR':
test_config core.editor foo &&
(
sane_unset_all_editors &&
echo bar >expect &&
GIT_EDITOR=bar git var GIT_EDITOR >actual &&
test_cmp expect actual
)
ok 10 - get GIT_EDITOR with configuration and environment variable GIT_EDITOR
expecting success of 0007.11 'get GIT_EDITOR with configuration and environment variable EDITOR':
test_config core.editor foo &&
(
sane_unset_all_editors &&
echo foo >expect &&
EDITOR=bar git var GIT_EDITOR >actual &&
test_cmp expect actual
)
ok 11 - get GIT_EDITOR with configuration and environment variable EDITOR
expecting success of 0007.12 'get GIT_SEQUENCE_EDITOR without configuration':
(
sane_unset GIT_SEQUENCE_EDITOR &&
git var GIT_EDITOR >expect &&
git var GIT_SEQUENCE_EDITOR >actual &&
test_cmp expect actual
)
ok 12 - get GIT_SEQUENCE_EDITOR without configuration
expecting success of 0007.13 'get GIT_SEQUENCE_EDITOR with configuration':
test_config sequence.editor foo &&
(
sane_unset GIT_SEQUENCE_EDITOR &&
echo foo >expect &&
git var GIT_SEQUENCE_EDITOR >actual &&
test_cmp expect actual
)
ok 13 - get GIT_SEQUENCE_EDITOR with configuration
expecting success of 0007.14 'get GIT_SEQUENCE_EDITOR with environment variable':
(
sane_unset GIT_SEQUENCE_EDITOR &&
echo bar >expect &&
GIT_SEQUENCE_EDITOR=bar git var GIT_SEQUENCE_EDITOR >actual &&
test_cmp expect actual
)
ok 14 - get GIT_SEQUENCE_EDITOR with environment variable
expecting success of 0007.15 'get GIT_SEQUENCE_EDITOR with configuration and environment variable':
test_config sequence.editor foo &&
(
sane_unset GIT_SEQUENCE_EDITOR &&
echo bar >expect &&
GIT_SEQUENCE_EDITOR=bar git var GIT_SEQUENCE_EDITOR >actual &&
test_cmp expect actual
)
ok 15 - get GIT_SEQUENCE_EDITOR with configuration and environment variable
expecting success of 0007.16 'GIT_SHELL_PATH points to a valid executable':
shellpath=$(git var GIT_SHELL_PATH) &&
test_path_is_executable "$shellpath"
ok 16 - GIT_SHELL_PATH points to a valid executable
ok 17 # skip GIT_SHELL_PATH points to a suitable shell (missing MINGW)
expecting success of 0007.18 'GIT_ATTR_SYSTEM produces expected output':
test_must_fail env GIT_ATTR_NOSYSTEM=1 git var GIT_ATTR_SYSTEM &&
(
sane_unset GIT_ATTR_NOSYSTEM &&
systempath=$(git var GIT_ATTR_SYSTEM) &&
test "$systempath" != ""
)
ok 18 - GIT_ATTR_SYSTEM produces expected output
expecting success of 0007.19 'GIT_ATTR_GLOBAL points to the correct location':
TRASHDIR="$(test-tool path-utils normalize_path_copy "$(pwd)")" &&
globalpath=$(XDG_CONFIG_HOME="$TRASHDIR/.config" git var GIT_ATTR_GLOBAL) &&
test "$globalpath" = "$TRASHDIR/.config/git/attributes" &&
(
sane_unset XDG_CONFIG_HOME &&
globalpath=$(HOME="$TRASHDIR" git var GIT_ATTR_GLOBAL) &&
test "$globalpath" = "$TRASHDIR/.config/git/attributes"
)
ok 19 - GIT_ATTR_GLOBAL points to the correct location
expecting success of 0007.20 'GIT_CONFIG_SYSTEM points to the correct location':
TRASHDIR="$(test-tool path-utils normalize_path_copy "$(pwd)")" &&
test_must_fail env GIT_CONFIG_NOSYSTEM=1 git var GIT_CONFIG_SYSTEM &&
(
sane_unset GIT_CONFIG_NOSYSTEM &&
systempath=$(git var GIT_CONFIG_SYSTEM) &&
test "$systempath" != "" &&
systempath=$(GIT_CONFIG_SYSTEM=/dev/null git var GIT_CONFIG_SYSTEM) &&
if test_have_prereq MINGW
then
test "$systempath" = "nul"
else
test "$systempath" = "/dev/null"
fi &&
systempath=$(GIT_CONFIG_SYSTEM="$TRASHDIR/gitconfig" git var GIT_CONFIG_SYSTEM) &&
test "$systempath" = "$TRASHDIR/gitconfig"
)
ok 20 - GIT_CONFIG_SYSTEM points to the correct location
expecting success of 0007.21 'GIT_CONFIG_GLOBAL points to the correct location':
TRASHDIR="$(test-tool path-utils normalize_path_copy "$(pwd)")" &&
HOME="$TRASHDIR" XDG_CONFIG_HOME="$TRASHDIR/foo" git var GIT_CONFIG_GLOBAL >actual &&
echo "$TRASHDIR/foo/git/config" >expected &&
echo "$TRASHDIR/.gitconfig" >>expected &&
test_cmp expected actual &&
(
sane_unset XDG_CONFIG_HOME &&
HOME="$TRASHDIR" git var GIT_CONFIG_GLOBAL >actual &&
echo "$TRASHDIR/.config/git/config" >expected &&
echo "$TRASHDIR/.gitconfig" >>expected &&
test_cmp expected actual &&
globalpath=$(GIT_CONFIG_GLOBAL=/dev/null git var GIT_CONFIG_GLOBAL) &&
if test_have_prereq MINGW
then
test "$globalpath" = "nul"
else
test "$globalpath" = "/dev/null"
fi &&
globalpath=$(GIT_CONFIG_GLOBAL="$TRASHDIR/gitconfig" git var GIT_CONFIG_GLOBAL) &&
test "$globalpath" = "$TRASHDIR/gitconfig"
)
ok 21 - GIT_CONFIG_GLOBAL points to the correct location
expecting success of 0007.22 'git var -l lists variables':
git var -l >actual &&
echo "$GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> $GIT_AUTHOR_DATE" >expect &&
sed -n s/GIT_AUTHOR_IDENT=//p <actual >actual.author &&
test_cmp expect actual.author
ok 22 - git var -l lists variables
expecting success of 0007.23 'git var -l lists config':
git var -l >actual &&
echo false >expect &&
sed -n s/core\\.bare=//p <actual >actual.bare &&
test_cmp expect actual.bare
ok 23 - git var -l lists config
expecting success of 0007.24 'git var -l lists multiple global configs':
TRASHDIR="$(test-tool path-utils normalize_path_copy "$(pwd)")" &&
HOME="$TRASHDIR" XDG_CONFIG_HOME="$TRASHDIR/foo" git var -l >actual &&
grep "^GIT_CONFIG_GLOBAL=" actual >filtered &&
echo "GIT_CONFIG_GLOBAL=$TRASHDIR/foo/git/config" >expected &&
echo "GIT_CONFIG_GLOBAL=$TRASHDIR/.gitconfig" >>expected &&
test_cmp expected filtered
ok 24 - git var -l lists multiple global configs
expecting success of 0007.25 'git var -l does not split multiline editors':
(
GIT_EDITOR="!f() {
echo Hello!
}; f" &&
export GIT_EDITOR &&
echo "GIT_EDITOR=$GIT_EDITOR" >expected &&
git var -l >var &&
sed -n -e "/^GIT_EDITOR/,\$p" var | head -n 3 >actual &&
test_cmp expected actual
)
ok 25 - git var -l does not split multiline editors
expecting success of 0007.26 'listing and asking for variables are exclusive':
test_must_fail git var -l GIT_COMMITTER_IDENT
usage: git var (-l | <variable>)
ok 26 - listing and asking for variables are exclusive
# passed all 26 test(s)
1..26
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0011-hashmap.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0011-hashmap/.git/
expecting success of 0011.1 'put':
test_hashmap "put key1 value1
put key2 value2
put fooBarFrotz value3
put foobarfrotz value4
size" "NULL
NULL
NULL
NULL
64 4"
ok 1 - put
expecting success of 0011.2 'put (case insensitive)':
test_hashmap "put key1 value1
put key2 value2
put fooBarFrotz value3
size" "NULL
NULL
NULL
64 3" ignorecase
ok 2 - put (case insensitive)
expecting success of 0011.3 'replace':
test_hashmap "put key1 value1
put key1 value2
put fooBarFrotz value3
put fooBarFrotz value4
size" "NULL
value1
NULL
value3
64 2"
ok 3 - replace
expecting success of 0011.4 'replace (case insensitive)':
test_hashmap "put key1 value1
put Key1 value2
put fooBarFrotz value3
put foobarfrotz value4
size" "NULL
value1
NULL
value3
64 2" ignorecase
ok 4 - replace (case insensitive)
expecting success of 0011.5 'get':
test_hashmap "put key1 value1
put key2 value2
put fooBarFrotz value3
put foobarfrotz value4
get key1
get key2
get fooBarFrotz
get notInMap" "NULL
NULL
NULL
NULL
value1
value2
value3
NULL"
ok 5 - get
expecting success of 0011.6 'get (case insensitive)':
test_hashmap "put key1 value1
put key2 value2
put fooBarFrotz value3
get Key1
get keY2
get foobarfrotz
get notInMap" "NULL
NULL
NULL
value1
value2
value3
NULL" ignorecase
ok 6 - get (case insensitive)
expecting success of 0011.7 'add':
test_hashmap "add key1 value1
add key1 value2
add fooBarFrotz value3
add fooBarFrotz value4
get key1
get fooBarFrotz
get notInMap" "value2
value1
value4
value3
NULL"
ok 7 - add
expecting success of 0011.8 'add (case insensitive)':
test_hashmap "add key1 value1
add Key1 value2
add fooBarFrotz value3
add foobarfrotz value4
get key1
get Foobarfrotz
get notInMap" "value2
value1
value4
value3
NULL" ignorecase
ok 8 - add (case insensitive)
expecting success of 0011.9 'remove':
test_hashmap "put key1 value1
put key2 value2
put fooBarFrotz value3
remove key1
remove key2
remove notInMap
size" "NULL
NULL
NULL
value1
value2
NULL
64 1"
ok 9 - remove
expecting success of 0011.10 'remove (case insensitive)':
test_hashmap "put key1 value1
put key2 value2
put fooBarFrotz value3
remove Key1
remove keY2
remove notInMap
size" "NULL
NULL
NULL
value1
value2
NULL
64 1" ignorecase
ok 10 - remove (case insensitive)
expecting success of 0011.11 'iterate':
test-tool hashmap >actual.raw <<-\EOF &&
put key1 value1
put key2 value2
put fooBarFrotz value3
iterate
EOF
cat >expect <<-\EOF &&
NULL
NULL
NULL
fooBarFrotz value3
key1 value1
key2 value2
EOF
sort <actual.raw >actual &&
test_cmp expect actual
ok 11 - iterate
expecting success of 0011.12 'iterate (case insensitive)':
test-tool hashmap ignorecase >actual.raw <<-\EOF &&
put key1 value1
put key2 value2
put fooBarFrotz value3
iterate
EOF
cat >expect <<-\EOF &&
NULL
NULL
NULL
fooBarFrotz value3
key1 value1
key2 value2
EOF
sort <actual.raw >actual &&
test_cmp expect actual
ok 12 - iterate (case insensitive)
expecting success of 0011.13 'grow / shrink':
rm -f in &&
rm -f expect &&
for n in $(test_seq 51)
do
echo put key$n value$n >> in &&
echo NULL >> expect || return 1
done &&
echo size >> in &&
echo 64 51 >> expect &&
echo put key52 value52 >> in &&
echo NULL >> expect &&
echo size >> in &&
echo 256 52 >> expect &&
for n in $(test_seq 12)
do
echo remove key$n >> in &&
echo value$n >> expect || return 1
done &&
echo size >> in &&
echo 256 40 >> expect &&
echo remove key40 >> in &&
echo value40 >> expect &&
echo size >> in &&
echo 64 39 >> expect &&
cat in | test-tool hashmap > out &&
test_cmp expect out
ok 13 - grow / shrink
expecting success of 0011.14 'string interning':
test_hashmap "intern value1
intern Value1
intern value2
intern value2
" "value1
Value1
value2
value2"
ok 14 - string interning
# passed all 14 test(s)
1..14
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0012-help.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0012-help/.git/
expecting success of 0012.1 'setup':
# Just write out which page gets requested
write_script test-browser <<-\EOF
echo "$*" >test-browser.log
EOF
ok 1 - setup
expecting success of 0012.2 'basic help commands':
git help >/dev/null &&
git help -a --no-verbose >/dev/null &&
git help -g >/dev/null &&
git help -a >/dev/null
ok 2 - basic help commands
expecting success of 0012.3 'invalid usage':
test_expect_code 129 git help -a add &&
test_expect_code 129 git help --all add &&
test_expect_code 129 git help -g add &&
test_expect_code 129 git help -a -c &&
test_expect_code 129 git help -g add &&
test_expect_code 129 git help -a -g &&
test_expect_code 129 git help --user-interfaces add &&
test_expect_code 129 git help -g -c &&
test_expect_code 129 git help --config-for-completion add &&
test_expect_code 129 git help --config-sections-for-completion add
fatal: the '--all' option doesn't take any non-option arguments
usage: git help [-a|--all] [--[no-]verbose] [--[no-]external-commands] [--[no-]aliases]
or: git help [[-i|--info] [-m|--man] [-w|--web]] [<command>|<doc>]
or: git help [-g|--guides]
or: git help [-c|--config]
or: git help [--user-interfaces]
or: git help [--developer-interfaces]
-a, --all print all available commands
--external-commands show external commands in --all
--aliases show aliases in --all
-m, --man show man page
-w, --web show manual in web browser
-i, --info show info page
-v, --verbose print command description
-g, --guides print list of useful guides
--user-interfaces print list of user-facing repository, command and file interfaces
--developer-interfaces
print list of file formats, protocols and other developer interfaces
-c, --config print all configuration variable names
fatal: the '--all' option doesn't take any non-option arguments
usage: git help [-a|--all] [--[no-]verbose] [--[no-]external-commands] [--[no-]aliases]
or: git help [[-i|--info] [-m|--man] [-w|--web]] [<command>|<doc>]
or: git help [-g|--guides]
or: git help [-c|--config]
or: git help [--user-interfaces]
or: git help [--developer-interfaces]
-a, --all print all available commands
--external-commands show external commands in --all
--aliases show aliases in --all
-m, --man show man page
-w, --web show manual in web browser
-i, --info show info page
-v, --verbose print command description
-g, --guides print list of useful guides
--user-interfaces print list of user-facing repository, command and file interfaces
--developer-interfaces
print list of file formats, protocols and other developer interfaces
-c, --config print all configuration variable names
fatal: the '--guides' option doesn't take any non-option arguments
usage: git help [-a|--all] [--[no-]verbose] [--[no-]external-commands] [--[no-]aliases]
or: git help [[-i|--info] [-m|--man] [-w|--web]] [<command>|<doc>]
or: git help [-g|--guides]
or: git help [-c|--config]
or: git help [--user-interfaces]
or: git help [--developer-interfaces]
-a, --all print all available commands
--external-commands show external commands in --all
--aliases show aliases in --all
-m, --man show man page
-w, --web show manual in web browser
-i, --info show info page
-v, --verbose print command description
-g, --guides print list of useful guides
--user-interfaces print list of user-facing repository, command and file interfaces
--developer-interfaces
print list of file formats, protocols and other developer interfaces
-c, --config print all configuration variable names
error: switch `c' is incompatible with --all
fatal: the '--guides' option doesn't take any non-option arguments
usage: git help [-a|--all] [--[no-]verbose] [--[no-]external-commands] [--[no-]aliases]
or: git help [[-i|--info] [-m|--man] [-w|--web]] [<command>|<doc>]
or: git help [-g|--guides]
or: git help [-c|--config]
or: git help [--user-interfaces]
or: git help [--developer-interfaces]
-a, --all print all available commands
--external-commands show external commands in --all
--aliases show aliases in --all
-m, --man show man page
-w, --web show manual in web browser
-i, --info show info page
-v, --verbose print command description
-g, --guides print list of useful guides
--user-interfaces print list of user-facing repository, command and file interfaces
--developer-interfaces
print list of file formats, protocols and other developer interfaces
-c, --config print all configuration variable names
error: switch `g' is incompatible with --all
fatal: the '--user-interfaces' option doesn't take any non-option arguments
usage: git help [-a|--all] [--[no-]verbose] [--[no-]external-commands] [--[no-]aliases]
or: git help [[-i|--info] [-m|--man] [-w|--web]] [<command>|<doc>]
or: git help [-g|--guides]
or: git help [-c|--config]
or: git help [--user-interfaces]
or: git help [--developer-interfaces]
-a, --all print all available commands
--external-commands show external commands in --all
--aliases show aliases in --all
-m, --man show man page
-w, --web show manual in web browser
-i, --info show info page
-v, --verbose print command description
-g, --guides print list of useful guides
--user-interfaces print list of user-facing repository, command and file interfaces
--developer-interfaces
print list of file formats, protocols and other developer interfaces
-c, --config print all configuration variable names
error: switch `c' is incompatible with --guides
fatal: the '--config-for-completion' option doesn't take any non-option arguments
usage: git help [-a|--all] [--[no-]verbose] [--[no-]external-commands] [--[no-]aliases]
or: git help [[-i|--info] [-m|--man] [-w|--web]] [<command>|<doc>]
or: git help [-g|--guides]
or: git help [-c|--config]
or: git help [--user-interfaces]
or: git help [--developer-interfaces]
-a, --all print all available commands
--external-commands show external commands in --all
--aliases show aliases in --all
-m, --man show man page
-w, --web show manual in web browser
-i, --info show info page
-v, --verbose print command description
-g, --guides print list of useful guides
--user-interfaces print list of user-facing repository, command and file interfaces
--developer-interfaces
print list of file formats, protocols and other developer interfaces
-c, --config print all configuration variable names
fatal: the '--config-sections-for-completion' option doesn't take any non-option arguments
usage: git help [-a|--all] [--[no-]verbose] [--[no-]external-commands] [--[no-]aliases]
or: git help [[-i|--info] [-m|--man] [-w|--web]] [<command>|<doc>]
or: git help [-g|--guides]
or: git help [-c|--config]
or: git help [--user-interfaces]
or: git help [--developer-interfaces]
-a, --all print all available commands
--external-commands show external commands in --all
--aliases show aliases in --all
-m, --man show man page
-w, --web show manual in web browser
-i, --info show info page
-v, --verbose print command description
-g, --guides print list of useful guides
--user-interfaces print list of user-facing repository, command and file interfaces
--developer-interfaces
print list of file formats, protocols and other developer interfaces
-c, --config print all configuration variable names
ok 3 - invalid usage
expecting success of 0012.4 'invalid usage of '-a' with [-i|-m|-w]':
git help $opt &&
test_expect_code 129 git help $opt -i &&
test_expect_code 129 git help $opt -m &&
test_expect_code 129 git help $opt -w
See 'git help <command>' to read about a specific subcommand
Main Porcelain Commands
add Add file contents to the index
am Apply a series of patches from a mailbox
archive Create an archive of files from a named tree
bisect Use binary search to find the commit that introduced a bug
branch List, create, or delete branches
bundle Move objects and refs by archive
checkout Switch branches or restore working tree files
cherry-pick Apply the changes introduced by some existing commits
citool Graphical alternative to git-commit
clean Remove untracked files from the working tree
clone Clone a repository into a new directory
commit Record changes to the repository
describe Give an object a human readable name based on an available ref
diff Show changes between commits, commit and working tree, etc
fetch Download objects and refs from another repository
format-patch Prepare patches for e-mail submission
gc Cleanup unnecessary files and optimize the local repository
gitk The Git repository browser
grep Print lines matching a pattern
gui A portable graphical interface to Git
init Create an empty Git repository or reinitialize an existing one
log Show commit logs
maintenance Run tasks to optimize Git repository data
merge Join two or more development histories together
mv Move or rename a file, a directory, or a symlink
notes Add or inspect object notes
pull Fetch from and integrate with another repository or a local branch
push Update remote refs along with associated objects
range-diff Compare two commit ranges (e.g. two versions of a branch)
rebase Reapply commits on top of another base tip
reset Reset current HEAD to the specified state
restore Restore working tree files
revert Revert some existing commits
rm Remove files from the working tree and from the index
scalar A tool for managing large Git repositories
shortlog Summarize 'git log' output
show Show various types of objects
sparse-checkout Reduce your working tree to a subset of tracked files
stash Stash the changes in a dirty working directory away
status Show the working tree status
submodule Initialize, update or inspect submodules
switch Switch branches
tag Create, list, delete or verify a tag object signed with GPG
worktree Manage multiple working trees
Ancillary Commands / Manipulators
config Get and set repository or global options
fast-export Git data exporter
fast-import Backend for fast Git data importers
filter-branch Rewrite branches
mergetool Run merge conflict resolution tools to resolve merge conflicts
pack-refs Pack heads and tags for efficient repository access
prune Prune all unreachable objects from the object database
reflog Manage reflog information
remote Manage set of tracked repositories
repack Pack unpacked objects in a repository
replace Create, list, delete refs to replace objects
Ancillary Commands / Interrogators
annotate Annotate file lines with commit information
blame Show what revision and author last modified each line of a file
bugreport Collect information for user to file a bug report
count-objects Count unpacked number of objects and their disk consumption
diagnose Generate a zip archive of diagnostic information
difftool Show changes using common diff tools
fsck Verifies the connectivity and validity of the objects in the database
gitweb Git web interface (web frontend to Git repositories)
help Display help information about Git
instaweb Instantly browse your working repository in gitweb
merge-tree Perform merge without touching index or working tree
rerere Reuse recorded resolution of conflicted merges
show-branch Show branches and their commits
verify-commit Check the GPG signature of commits
verify-tag Check the GPG signature of tags
version Display version information about Git
whatchanged Show logs with difference each commit introduces
Interacting with Others
archimport Import a GNU Arch repository into Git
cvsexportcommit Export a single commit to a CVS checkout
cvsimport Salvage your data out of another SCM people love to hate
cvsserver A CVS server emulator for Git
imap-send Send a collection of patches from stdin to an IMAP folder
p4 Import from and submit to Perforce repositories
quiltimport Applies a quilt patchset onto the current branch
request-pull Generates a summary of pending changes
send-email Send a collection of patches as emails
svn Bidirectional operation between a Subversion repository and Git
Low-level Commands / Manipulators
apply Apply a patch to files and/or to the index
checkout-index Copy files from the index to the working tree
commit-graph Write and verify Git commit-graph files
commit-tree Create a new commit object
hash-object Compute object ID and optionally create an object from a file
index-pack Build pack index file for an existing packed archive
merge-file Run a three-way file merge
merge-index Run a merge for files needing merging
mktag Creates a tag object with extra validation
mktree Build a tree-object from ls-tree formatted text
multi-pack-index Write and verify multi-pack-indexes
pack-objects Create a packed archive of objects
prune-packed Remove extra objects that are already in pack files
read-tree Reads tree information into the index
symbolic-ref Read, modify and delete symbolic refs
unpack-objects Unpack objects from a packed archive
update-index Register file contents in the working tree to the index
update-ref Update the object name stored in a ref safely
write-tree Create a tree object from the current index
Low-level Commands / Interrogators
cat-file Provide content or type and size information for repository objects
cherry Find commits yet to be applied to upstream
diff-files Compares files in the working tree and the index
diff-index Compare a tree to the working tree or index
diff-tree Compares the content and mode of blobs found via two tree objects
for-each-ref Output information on each ref
for-each-repo Run a Git command on a list of repositories
get-tar-commit-id Extract commit ID from an archive created using git-archive
ls-files Show information about files in the index and the working tree
ls-remote List references in a remote repository
ls-tree List the contents of a tree object
merge-base Find as good common ancestors as possible for a merge
name-rev Find symbolic names for given revs
pack-redundant Find redundant pack files
rev-list Lists commit objects in reverse chronological order
rev-parse Pick out and massage parameters
show-index Show packed archive index
show-ref List references in a local repository
unpack-file Creates a temporary file with a blob's contents
var Show a Git logical variable
verify-pack Validate packed Git archive files
Low-level Commands / Syncing Repositories
daemon A really simple server for Git repositories
fetch-pack Receive missing objects from another repository
http-backend Server side implementation of Git over HTTP
send-pack Push objects over Git protocol to another repository
update-server-info Update auxiliary info file to help dumb servers
Low-level Commands / Internal Helpers
check-attr Display gitattributes information
check-ignore Debug gitignore / exclude files
check-mailmap Show canonical names and email addresses of contacts
check-ref-format Ensures that a reference name is well formed
column Display data in columns
credential Retrieve and store user credentials
credential-cache Helper to temporarily store passwords in memory
credential-store Helper to store credentials on disk
fmt-merge-msg Produce a merge commit message
hook Run git hooks
interpret-trailers Add or parse structured information in commit messages
mailinfo Extracts patch and authorship from a single e-mail message
mailsplit Simple UNIX mbox splitter program
merge-one-file The standard helper program to use with git-merge-index
patch-id Compute unique ID for a patch
sh-i18n Git's i18n setup code for shell scripts
sh-setup Common Git shell script setup code
stripspace Remove unnecessary whitespace
User-facing repository, command and file interfaces
attributes Defining attributes per path
cli Git command-line interface and conventions
hooks Hooks used by Git
ignore Specifies intentionally untracked files to ignore
mailmap Map author/committer names and/or E-Mail addresses
modules Defining submodule properties
repository-layout Git Repository Layout
revisions Specifying revisions and ranges for Git
Developer-facing file formats, protocols and other interfaces
format-bundle The bundle file format
format-chunk Chunk-based file formats
format-commit-graph Git commit-graph format
format-index Git index format
format-pack Git pack format
format-signature Git cryptographic signature formats
protocol-capabilities Protocol v0 and v1 capabilities
protocol-common Things common to various protocols
protocol-http Git HTTP-based protocols
protocol-pack How packs are transferred over-the-wire
protocol-v2 Git Wire Protocol, Version 2
fatal: options '--all' and '--info' cannot be used together
usage: git help [-a|--all] [--[no-]verbose] [--[no-]external-commands] [--[no-]aliases]
or: git help [[-i|--info] [-m|--man] [-w|--web]] [<command>|<doc>]
or: git help [-g|--guides]
or: git help [-c|--config]
or: git help [--user-interfaces]
or: git help [--developer-interfaces]
-a, --all print all available commands
--external-commands show external commands in --all
--aliases show aliases in --all
-m, --man show man page
-w, --web show manual in web browser
-i, --info show info page
-v, --verbose print command description
-g, --guides print list of useful guides
--user-interfaces print list of user-facing repository, command and file interfaces
--developer-interfaces
print list of file formats, protocols and other developer interfaces
-c, --config print all configuration variable names
fatal: options '--all' and '--man' cannot be used together
usage: git help [-a|--all] [--[no-]verbose] [--[no-]external-commands] [--[no-]aliases]
or: git help [[-i|--info] [-m|--man] [-w|--web]] [<command>|<doc>]
or: git help [-g|--guides]
or: git help [-c|--config]
or: git help [--user-interfaces]
or: git help [--developer-interfaces]
-a, --all print all available commands
--external-commands show external commands in --all
--aliases show aliases in --all
-m, --man show man page
-w, --web show manual in web browser
-i, --info show info page
-v, --verbose print command description
-g, --guides print list of useful guides
--user-interfaces print list of user-facing repository, command and file interfaces
--developer-interfaces
print list of file formats, protocols and other developer interfaces
-c, --config print all configuration variable names
fatal: options '--all' and '--web' cannot be used together
usage: git help [-a|--all] [--[no-]verbose] [--[no-]external-commands] [--[no-]aliases]
or: git help [[-i|--info] [-m|--man] [-w|--web]] [<command>|<doc>]
or: git help [-g|--guides]
or: git help [-c|--config]
or: git help [--user-interfaces]
or: git help [--developer-interfaces]
-a, --all print all available commands
--external-commands show external commands in --all
--aliases show aliases in --all
-m, --man show man page
-w, --web show manual in web browser
-i, --info show info page
-v, --verbose print command description
-g, --guides print list of useful guides
--user-interfaces print list of user-facing repository, command and file interfaces
--developer-interfaces
print list of file formats, protocols and other developer interfaces
-c, --config print all configuration variable names
ok 4 - invalid usage of '-a' with [-i|-m|-w]
expecting success of 0012.5 'invalid usage of '-g' with [-i|-m|-w]':
git help $opt &&
test_expect_code 129 git help $opt -i &&
test_expect_code 129 git help $opt -m &&
test_expect_code 129 git help $opt -w
The Git concept guides are:
core-tutorial A Git core tutorial for developers
credentials Providing usernames and passwords to Git
cvs-migration Git for CVS users
diffcore Tweaking diff output
everyday A useful minimum set of commands for Everyday Git
faq Frequently asked questions about using Git
glossary A Git Glossary
namespaces Git namespaces
remote-helpers Helper programs to interact with remote repositories
submodules Mounting one repository inside another
tutorial A tutorial introduction to Git
tutorial-2 A tutorial introduction to Git: part two
workflows An overview of recommended workflows with Git
'git help -a' and 'git help -g' list available subcommands and some
concept guides. See 'git help <command>' or 'git help <concept>'
to read about a specific subcommand or concept.
See 'git help git' for an overview of the system.
fatal: options '--guides' and '--info' cannot be used together
usage: git help [-a|--all] [--[no-]verbose] [--[no-]external-commands] [--[no-]aliases]
or: git help [[-i|--info] [-m|--man] [-w|--web]] [<command>|<doc>]
or: git help [-g|--guides]
or: git help [-c|--config]
or: git help [--user-interfaces]
or: git help [--developer-interfaces]
-a, --all print all available commands
--external-commands show external commands in --all
--aliases show aliases in --all
-m, --man show man page
-w, --web show manual in web browser
-i, --info show info page
-v, --verbose print command description
-g, --guides print list of useful guides
--user-interfaces print list of user-facing repository, command and file interfaces
--developer-interfaces
print list of file formats, protocols and other developer interfaces
-c, --config print all configuration variable names
fatal: options '--guides' and '--man' cannot be used together
usage: git help [-a|--all] [--[no-]verbose] [--[no-]external-commands] [--[no-]aliases]
or: git help [[-i|--info] [-m|--man] [-w|--web]] [<command>|<doc>]
or: git help [-g|--guides]
or: git help [-c|--config]
or: git help [--user-interfaces]
or: git help [--developer-interfaces]
-a, --all print all available commands
--external-commands show external commands in --all
--aliases show aliases in --all
-m, --man show man page
-w, --web show manual in web browser
-i, --info show info page
-v, --verbose print command description
-g, --guides print list of useful guides
--user-interfaces print list of user-facing repository, command and file interfaces
--developer-interfaces
print list of file formats, protocols and other developer interfaces
-c, --config print all configuration variable names
fatal: options '--guides' and '--web' cannot be used together
usage: git help [-a|--all] [--[no-]verbose] [--[no-]external-commands] [--[no-]aliases]
or: git help [[-i|--info] [-m|--man] [-w|--web]] [<command>|<doc>]
or: git help [-g|--guides]
or: git help [-c|--config]
or: git help [--user-interfaces]
or: git help [--developer-interfaces]
-a, --all print all available commands
--external-commands show external commands in --all
--aliases show aliases in --all
-m, --man show man page
-w, --web show manual in web browser
-i, --info show info page
-v, --verbose print command description
-g, --guides print list of useful guides
--user-interfaces print list of user-facing repository, command and file interfaces
--developer-interfaces
print list of file formats, protocols and other developer interfaces
-c, --config print all configuration variable names
ok 5 - invalid usage of '-g' with [-i|-m|-w]
expecting success of 0012.6 'invalid usage of '-g' with --no-external-commands':
test_expect_code 129 git help $opt --no-external-commands
fatal: the '--no-[external-commands|aliases]' options can only be used with '--all'
usage: git help [-a|--all] [--[no-]verbose] [--[no-]external-commands] [--[no-]aliases]
or: git help [[-i|--info] [-m|--man] [-w|--web]] [<command>|<doc>]
or: git help [-g|--guides]
or: git help [-c|--config]
or: git help [--user-interfaces]
or: git help [--developer-interfaces]
-a, --all print all available commands
--external-commands show external commands in --all
--aliases show aliases in --all
-m, --man show man page
-w, --web show manual in web browser
-i, --info show info page
-v, --verbose print command description
-g, --guides print list of useful guides
--user-interfaces print list of user-facing repository, command and file interfaces
--developer-interfaces
print list of file formats, protocols and other developer interfaces
-c, --config print all configuration variable names
ok 6 - invalid usage of '-g' with --no-external-commands
expecting success of 0012.7 'invalid usage of '-g' with --no-aliases':
test_expect_code 129 git help $opt --no-external-commands
fatal: the '--no-[external-commands|aliases]' options can only be used with '--all'
usage: git help [-a|--all] [--[no-]verbose] [--[no-]external-commands] [--[no-]aliases]
or: git help [[-i|--info] [-m|--man] [-w|--web]] [<command>|<doc>]
or: git help [-g|--guides]
or: git help [-c|--config]
or: git help [--user-interfaces]
or: git help [--developer-interfaces]
-a, --all print all available commands
--external-commands show external commands in --all
--aliases show aliases in --all
-m, --man show man page
-w, --web show manual in web browser
-i, --info show info page
-v, --verbose print command description
-g, --guides print list of useful guides
--user-interfaces print list of user-facing repository, command and file interfaces
--developer-interfaces
print list of file formats, protocols and other developer interfaces
-c, --config print all configuration variable names
ok 7 - invalid usage of '-g' with --no-aliases
expecting success of 0012.8 'invalid usage of '-c' with [-i|-m|-w]':
git help $opt &&
test_expect_code 129 git help $opt -i &&
test_expect_code 129 git help $opt -m &&
test_expect_code 129 git help $opt -w
add.ignoreErrors
add.interactive.useBuiltin
advice.addEmbeddedRepo
advice.addEmptyPathspec
advice.addIgnoredFile
advice.amWorkDir
advice.ambiguousFetchRefspec
advice.checkoutAmbiguousRemoteBranchName
advice.commitBeforeMerge
advice.detachedHead
advice.diverging
advice.fetchShowForcedUpdates
advice.graftFileDeprecated
advice.ignoredHook
advice.implicitIdentity
advice.nestedTag
advice.objectNameWarning
advice.pushAlreadyExists
advice.pushFetchFirst
advice.pushNeedsForce
advice.pushNonFFCurrent
advice.pushNonFFMatching
advice.pushNonFastForward
advice.pushRefNeedsUpdate
advice.pushUnqualifiedRefName
advice.pushUpdateRejected
advice.resetNoRefresh
advice.resolveConflict
advice.rmHints
advice.sequencerInUse
advice.setUpstreamFailure
advice.skippedCherryPicks
advice.statusAheadBehindWarning
advice.statusHints
advice.statusUoption
advice.submoduleAlternateErrorStrategyDie
advice.submodulesNotUpdated
advice.suggestDetachingHead
advice.updateSparsePath
advice.waitingForEditor
advice.worktreeAddOrphan
alias.*
am.keepcr
am.threeWay
apply.ignoreWhitespace
apply.whitespace
author.email
author.name
blame.blankBoundary
blame.coloring
blame.date
blame.ignoreRevsFile
blame.markIgnoredLines
blame.markUnblamableLines
blame.showEmail
blame.showRoot
branch.<name>.description
branch.<name>.merge
branch.<name>.mergeOptions
branch.<name>.pushRemote
branch.<name>.rebase
branch.<name>.remote
branch.autoSetupMerge
branch.autoSetupRebase
branch.sort
browser.<tool>.cmd
browser.<tool>.path
bundle.*
bundle.<id>.*
bundle.<id>.uri
bundle.heuristic
bundle.mode
bundle.version
checkout.defaultRemote
checkout.guess
checkout.thresholdForParallelism
checkout.workers
clean.requireForce
clone.defaultRemoteName
clone.filterSubmodules
clone.rejectShallow
color.advice
color.advice.hint
color.blame.highlightRecent
color.blame.repeatedLines
color.branch
color.branch.current
color.branch.local
color.branch.plain
color.branch.remote
color.branch.reset
color.branch.upstream
color.branch.worktree
color.decorate.HEAD
color.decorate.branch
color.decorate.grafted
color.decorate.remoteBranch
color.decorate.stash
color.decorate.tag
color.diff
color.diff.commit
color.diff.context
color.diff.contextBold
color.diff.contextDimmed
color.diff.frag
color.diff.func
color.diff.meta
color.diff.new
color.diff.newBold
color.diff.newDimmed
color.diff.newMoved
color.diff.newMovedAlternative
color.diff.newMovedAlternativeDimmed
color.diff.newMovedDimmed
color.diff.old
color.diff.oldBold
color.diff.oldDimmed
color.diff.oldMoved
color.diff.oldMovedAlternative
color.diff.oldMovedAlternativeDimmed
color.diff.oldMovedDimmed
color.diff.plain
color.diff.whitespace
color.grep
color.grep.column
color.grep.context
color.grep.filename
color.grep.function
color.grep.lineNumber
color.grep.match
color.grep.matchContext
color.grep.matchSelected
color.grep.selected
color.grep.separator
color.interactive
color.interactive.error
color.interactive.header
color.interactive.help
color.interactive.plain
color.interactive.prompt
color.interactive.reset
color.pager
color.push
color.push.error
color.remote
color.remote.error
color.remote.hint
color.remote.success
color.remote.warning
color.showBranch
color.status
color.status.added
color.status.branch
color.status.changed
color.status.header
color.status.localBranch
color.status.noBranch
color.status.remoteBranch
color.status.unmerged
color.status.untracked
color.status.updated
color.transport
color.transport.rejected
color.ui
column.branch
column.clean
column.status
column.tag
column.ui
commit.cleanup
commit.gpgSign
commit.status
commit.template
commit.verbose
commitGraph.generationVersion
commitGraph.maxNewFilters
commitGraph.readChangedPaths
committer.email
committer.name
completion.commands
core.abbrev
core.alternateRefsCommand
core.alternateRefsPrefixes
core.askPass
core.attributesFile
core.autocrlf
core.bare
core.bigFileThreshold
core.checkRoundtripEncoding
core.checkStat
core.commentChar
core.commitGraph
core.compression
core.createObject
core.deltaBaseCacheLimit
core.editor
core.eol
core.excludesFile
core.fileMode
core.filesRefLockTimeout
core.fsmonitor
core.fsmonitorHookVersion
core.fsync
core.fsyncMethod
core.fsyncObjectFiles
core.gitProxy
core.hideDotFiles
core.hooksPath
core.ignoreCase
core.ignoreStat
core.logAllRefUpdates
core.looseCompression
core.multiPackIndex
core.notesRef
core.packedGitLimit
core.packedGitWindowSize
core.packedRefsTimeout
core.pager
core.precomposeUnicode
core.preferSymlinkRefs
core.preloadIndex
core.protectHFS
core.protectNTFS
core.quotePath
core.repositoryFormatVersion
core.restrictinheritedhandles
core.safecrlf
core.sharedRepository
core.sparseCheckout
core.sparseCheckoutCone
core.splitIndex
core.sshCommand
core.symlinks
core.trustctime
core.unsetenvvars
core.untrackedCache
core.useReplaceRefs
core.warnAmbiguousRefs
core.whitespace
core.worktree
credential.<url>.*
credential.helper
credential.useHttpPath
credential.username
credentialCache.ignoreSIGHUP
credentialStore.lockTimeoutMS
diff.<driver>.binary
diff.<driver>.cachetextconv
diff.<driver>.command
diff.<driver>.textconv
diff.<driver>.wordRegex
diff.<driver>.xfuncname
diff.algorithm
diff.autoRefreshIndex
diff.colorMoved
diff.colorMovedWS
diff.context
diff.dirstat
diff.external
diff.guitool
diff.ignoreSubmodules
diff.indentHeuristic
diff.interHunkContext
diff.mnemonicPrefix
diff.noprefix
diff.orderFile
diff.relative
diff.renameLimit
diff.renames
diff.statGraphWidth
diff.submodule
diff.suppressBlankEmpty
diff.tool
diff.wordRegex
diff.wsErrorHighlight
difftool.<tool>.cmd
difftool.<tool>.path
difftool.guiDefault
difftool.prompt
difftool.trustExitCode
extensions.objectFormat
extensions.worktreeConfig
fastimport.unpackLimit
feature.*
feature.experimental
feature.manyFiles
fetch.bundleCreationToken
fetch.bundleURI
fetch.fsck.<msg-id>
fetch.fsck.skipList
fetch.fsckObjects
fetch.negotiationAlgorithm
fetch.output
fetch.parallel
fetch.prune
fetch.pruneTags
fetch.recurseSubmodules
fetch.showForcedUpdates
fetch.unpackLimit
fetch.writeCommitGraph
filter.<driver>.clean
filter.<driver>.smudge
format.attach
format.cc
format.coverFromDescription
format.coverLetter
format.encodeEmailHeaders
format.filenameMaxLength
format.forceInBodyFrom
format.from
format.headers
format.mboxrd
format.noprefix
format.notes
format.numbered
format.outputDirectory
format.pretty
format.signOff
format.signature
format.signatureFile
format.subjectPrefix
format.suffix
format.thread
format.to
format.useAutoBase
fsck.badDate
fsck.badDateOverflow
fsck.badEmail
fsck.badFilemode
fsck.badName
fsck.badObjectSha1
fsck.badParentSha1
fsck.badTagName
fsck.badTimezone
fsck.badTree
fsck.badTreeSha1
fsck.badType
fsck.duplicateEntries
fsck.emptyName
fsck.extraHeaderEntry
fsck.fullPathname
fsck.gitattributesBlob
fsck.gitattributesLarge
fsck.gitattributesLineLength
fsck.gitattributesMissing
fsck.gitattributesSymlink
fsck.gitignoreSymlink
fsck.gitmodulesBlob
fsck.gitmodulesLarge
fsck.gitmodulesMissing
fsck.gitmodulesName
fsck.gitmodulesParse
fsck.gitmodulesPath
fsck.gitmodulesSymlink
fsck.gitmodulesUpdate
fsck.gitmodulesUrl
fsck.hasDot
fsck.hasDotdot
fsck.hasDotgit
fsck.mailmapSymlink
fsck.missingAuthor
fsck.missingCommitter
fsck.missingEmail
fsck.missingNameBeforeEmail
fsck.missingObject
fsck.missingSpaceBeforeDate
fsck.missingSpaceBeforeEmail
fsck.missingTag
fsck.missingTagEntry
fsck.missingTaggerEntry
fsck.missingTree
fsck.missingType
fsck.missingTypeEntry
fsck.multipleAuthors
fsck.nulInCommit
fsck.nulInHeader
fsck.nullSha1
fsck.skipList
fsck.treeNotSorted
fsck.unknownType
fsck.unterminatedHeader
fsck.zeroPaddedDate
fsck.zeroPaddedFilemode
fsmonitor.allowRemote
fsmonitor.socketDir
gc.<pattern>.reflogExpire
gc.<pattern>.reflogExpireUnreachable
gc.aggressiveDepth
gc.aggressiveWindow
gc.auto
gc.autoDetach
gc.autoPackLimit
gc.bigPackThreshold
gc.cruftPacks
gc.logExpiry
gc.packRefs
gc.pruneExpire
gc.recentObjectsHook
gc.reflogExpire
gc.reflogExpireUnreachable
gc.rerereResolved
gc.rerereUnresolved
gc.worktreePruneExpire
gc.writeCommitGraph
gitcvs.allBinary
gitcvs.commitMsgAnnotation
gitcvs.dbDriver
gitcvs.dbName
gitcvs.dbPass
gitcvs.dbTableNamePrefix
gitcvs.dbUser
gitcvs.enabled
gitcvs.logFile
gitcvs.usecrlfattr
gitweb.avatar
gitweb.blame
gitweb.category
gitweb.description
gitweb.grep
gitweb.highlight
gitweb.owner
gitweb.patches
gitweb.pickaxe
gitweb.remote_heads
gitweb.showSizes
gitweb.snapshot
gitweb.url
gpg.<format>.program
gpg.format
gpg.minTrustLevel
gpg.program
gpg.ssh.allowedSignersFile
gpg.ssh.defaultKeyCommand
gpg.ssh.revocationFile
grep.column
grep.extendedRegexp
grep.fallbackToNoIndex
grep.fullName
grep.lineNumber
grep.patternType
grep.threads
gui.blamehistoryctx
gui.commitMsgWidth
gui.copyBlameThreshold
gui.diffContext
gui.displayUntracked
gui.encoding
gui.fastCopyBlame
gui.matchTrackingBranch
gui.newBranchTemplate
gui.pruneDuringFetch
gui.spellingDictionary
gui.trustmtime
guitool.<name>.argPrompt
guitool.<name>.cmd
guitool.<name>.confirm
guitool.<name>.needsFile
guitool.<name>.noConsole
guitool.<name>.noRescan
guitool.<name>.prompt
guitool.<name>.revPrompt
guitool.<name>.revUnmerged
guitool.<name>.title
help.autoCorrect
help.browser
help.format
help.htmlPath
http.<url>.*
http.cookieFile
http.curloptResolve
http.delegation
http.emptyAuth
http.extraHeader
http.followRedirects
http.lowSpeedLimit
http.lowSpeedTime
http.maxRequests
http.minSessions
http.noEPSV
http.pinnedPubkey
http.postBuffer
http.proxy
http.proxyAuthMethod
http.proxySSLCAInfo
http.proxySSLCert
http.proxySSLCertPasswordProtected
http.proxySSLKey
http.saveCookies
http.schannelCheckRevoke
http.schannelUseSSLCAInfo
http.sslBackend
http.sslCAInfo
http.sslCAPath
http.sslCert
http.sslCertPasswordProtected
http.sslCipherList
http.sslKey
http.sslTry
http.sslVerify
http.sslVersion
http.userAgent
http.version
i18n.commitEncoding
i18n.logOutputEncoding
imap.authMethod
imap.folder
imap.host
imap.pass
imap.port
imap.preformattedHTML
imap.sslverify
imap.tunnel
imap.user
include.path
includeIf.<condition>.path
index.recordEndOfIndexEntries
index.recordOffsetTable
index.skipHash
index.sparse
index.threads
index.version
init.defaultBranch
init.templateDir
instaweb.browser
instaweb.httpd
instaweb.local
instaweb.modulePath
instaweb.port
interactive.diffFilter
interactive.singleKey
log.abbrevCommit
log.date
log.decorate
log.diffMerges
log.excludeDecoration
log.follow
log.graphColors
log.initialDecorationSet
log.mailmap
log.showRoot
log.showSignature
lsrefs.unborn
mailinfo.scissors
mailmap.blob
mailmap.file
maintenance.<task>.enabled
maintenance.<task>.schedule
maintenance.auto
maintenance.commit-graph.auto
maintenance.incremental-repack.auto
maintenance.loose-objects.auto
maintenance.strategy
man.<tool>.cmd
man.<tool>.path
man.viewer
merge.<driver>.driver
merge.<driver>.name
merge.<driver>.recursive
merge.autoStash
merge.branchdesc
merge.conflictStyle
merge.defaultToUpstream
merge.directoryRenames
merge.ff
merge.guitool
merge.log
merge.renameLimit
merge.renames
merge.renormalize
merge.stat
merge.suppressDest
merge.tool
merge.verbosity
merge.verifySignatures
mergetool.<tool>.cmd
mergetool.<tool>.hideResolved
mergetool.<tool>.path
mergetool.<tool>.trustExitCode
mergetool.guiDefault
mergetool.hideResolved
mergetool.keepBackup
mergetool.keepTemporaries
mergetool.meld.hasOutput
mergetool.meld.useAutoMerge
mergetool.prompt
mergetool.vimdiff.layout
mergetool.writeToTemp
notes.<name>.mergeStrategy
notes.displayRef
notes.mergeStrategy
notes.rewrite.<command>
notes.rewriteMode
notes.rewriteRef
pack.allowPackReuse
pack.compression
pack.deltaCacheLimit
pack.deltaCacheSize
pack.depth
pack.indexVersion
pack.island
pack.islandCore
pack.packSizeLimit
pack.preferBitmapTips
pack.readReverseIndex
pack.threads
pack.useBitmapBoundaryTraversal
pack.useBitmaps
pack.useSparse
pack.window
pack.windowMemory
pack.writeBitmapHashCache
pack.writeBitmapLookupTable
pack.writeReverseIndex
pager.<cmd>
pretty.<name>
protocol.<name>.allow
protocol.allow
protocol.version
pull.ff
pull.octopus
pull.rebase
pull.twohead
push.autoSetupRemote
push.default
push.followTags
push.gpgSign
push.negotiate
push.pushOption
push.recurseSubmodules
push.useBitmaps
push.useForceIfIncludes
rebase.abbreviateCommands
rebase.autoSquash
rebase.autoStash
rebase.backend
rebase.forkPoint
rebase.instructionFormat
rebase.missingCommitsCheck
rebase.rebaseMerges
rebase.rescheduleFailedExec
rebase.stat
rebase.updateRefs
receive.advertiseAtomic
receive.advertisePushOptions
receive.autogc
receive.certNonceSeed
receive.certNonceSlop
receive.denyCurrentBranch
receive.denyDeleteCurrent
receive.denyDeletes
receive.denyNonFastForwards
receive.fsck.badDate
receive.fsck.badDateOverflow
receive.fsck.badEmail
receive.fsck.badFilemode
receive.fsck.badName
receive.fsck.badObjectSha1
receive.fsck.badParentSha1
receive.fsck.badTagName
receive.fsck.badTimezone
receive.fsck.badTree
receive.fsck.badTreeSha1
receive.fsck.badType
receive.fsck.duplicateEntries
receive.fsck.emptyName
receive.fsck.extraHeaderEntry
receive.fsck.fullPathname
receive.fsck.gitattributesBlob
receive.fsck.gitattributesLarge
receive.fsck.gitattributesLineLength
receive.fsck.gitattributesMissing
receive.fsck.gitattributesSymlink
receive.fsck.gitignoreSymlink
receive.fsck.gitmodulesBlob
receive.fsck.gitmodulesLarge
receive.fsck.gitmodulesMissing
receive.fsck.gitmodulesName
receive.fsck.gitmodulesParse
receive.fsck.gitmodulesPath
receive.fsck.gitmodulesSymlink
receive.fsck.gitmodulesUpdate
receive.fsck.gitmodulesUrl
receive.fsck.hasDot
receive.fsck.hasDotdot
receive.fsck.hasDotgit
receive.fsck.mailmapSymlink
receive.fsck.missingAuthor
receive.fsck.missingCommitter
receive.fsck.missingEmail
receive.fsck.missingNameBeforeEmail
receive.fsck.missingObject
receive.fsck.missingSpaceBeforeDate
receive.fsck.missingSpaceBeforeEmail
receive.fsck.missingTag
receive.fsck.missingTagEntry
receive.fsck.missingTaggerEntry
receive.fsck.missingTree
receive.fsck.missingType
receive.fsck.missingTypeEntry
receive.fsck.multipleAuthors
receive.fsck.nulInCommit
receive.fsck.nulInHeader
receive.fsck.nullSha1
receive.fsck.skipList
receive.fsck.treeNotSorted
receive.fsck.unknownType
receive.fsck.unterminatedHeader
receive.fsck.zeroPaddedDate
receive.fsck.zeroPaddedFilemode
receive.fsckObjects
receive.hideRefs
receive.keepAlive
receive.maxInputSize
receive.procReceiveRefs
receive.shallowUpdate
receive.unpackLimit
receive.updateServerInfo
remote.<name>.fetch
remote.<name>.mirror
remote.<name>.partialclonefilter
remote.<name>.promisor
remote.<name>.proxy
remote.<name>.proxyAuthMethod
remote.<name>.prune
remote.<name>.pruneTags
remote.<name>.push
remote.<name>.pushurl
remote.<name>.receivepack
remote.<name>.skipDefaultUpdate
remote.<name>.skipFetchAll
remote.<name>.tagOpt
remote.<name>.uploadpack
remote.<name>.url
remote.<name>.vcs
remote.pushDefault
remotes.<group>
repack.cruftDepth
repack.cruftThreads
repack.cruftWindow
repack.cruftWindowMemory
repack.packKeptObjects
repack.updateServerInfo
repack.useDeltaBaseOffset
repack.useDeltaIslands
repack.writeBitmaps
rerere.autoUpdate
rerere.enabled
revert.reference
safe.bareRepository
safe.directory
sendemail.<identity>.*
sendemail.aliasFileType
sendemail.aliasesFile
sendemail.annotate
sendemail.bcc
sendemail.cc
sendemail.ccCmd
sendemail.chainReplyTo
sendemail.confirm
sendemail.envelopeSender
sendemail.forbidSendmailVariables
sendemail.from
sendemail.headerCmd
sendemail.identity
sendemail.multiEdit
sendemail.signedoffbycc
sendemail.smtpBatchSize
sendemail.smtpDomain
sendemail.smtpEncryption
sendemail.smtpPass
sendemail.smtpReloginDelay
sendemail.smtpServer
sendemail.smtpServerOption
sendemail.smtpServerPort
sendemail.smtpUser
sendemail.smtpsslcertpath
sendemail.suppressFrom
sendemail.suppresscc
sendemail.thread
sendemail.to
sendemail.tocmd
sendemail.transferEncoding
sendemail.validate
sendemail.xmailer
sequence.editor
showBranch.default
sparse.expectFilesOutsideOfPatterns
splitIndex.maxPercentChange
splitIndex.sharedIndexExpire
ssh.variant
stash.showIncludeUntracked
stash.showPatch
stash.showStat
status.aheadBehind
status.branch
status.displayCommentPrefix
status.relativePaths
status.renameLimit
status.renames
status.short
status.showStash
status.showUntrackedFiles
status.submoduleSummary
submodule.<name>.active
submodule.<name>.branch
submodule.<name>.fetchRecurseSubmodules
submodule.<name>.ignore
submodule.<name>.update
submodule.<name>.url
submodule.active
submodule.alternateErrorStrategy
submodule.alternateLocation
submodule.fetchJobs
submodule.propagateBranches
submodule.recurse
tag.forceSignAnnotated
tag.gpgSign
tag.sort
tar.umask
trace2.configParams
trace2.destinationDebug
trace2.envVars
trace2.eventBrief
trace2.eventNesting
trace2.eventTarget
trace2.maxFiles
trace2.normalBrief
trace2.normalTarget
trace2.perfBrief
trace2.perfTarget
transfer.advertiseSID
transfer.bundleURI
transfer.credentialsInUrl
transfer.fsckObjects
transfer.hideRefs
transfer.unpackLimit
uploadarchive.allowUnreachable
uploadpack.allowAnySHA1InWant
uploadpack.allowFilter
uploadpack.allowReachableSHA1InWant
uploadpack.allowRefInWant
uploadpack.allowTipSHA1InWant
uploadpack.hideRefs
uploadpack.keepAlive
uploadpack.packObjectsHook
uploadpackfilter.<filter>.allow
uploadpackfilter.allow
uploadpackfilter.tree.maxDepth
url.<base>.insteadOf
url.<base>.pushInsteadOf
user.email
user.name
user.signingKey
user.useConfigOnly
versionsort.suffix
web.browser
worktree.guessRemote
'git help config' for more information
fatal: options '--config' and '--info' cannot be used together
usage: git help [-a|--all] [--[no-]verbose] [--[no-]external-commands] [--[no-]aliases]
or: git help [[-i|--info] [-m|--man] [-w|--web]] [<command>|<doc>]
or: git help [-g|--guides]
or: git help [-c|--config]
or: git help [--user-interfaces]
or: git help [--developer-interfaces]
-a, --all print all available commands
--external-commands show external commands in --all
--aliases show aliases in --all
-m, --man show man page
-w, --web show manual in web browser
-i, --info show info page
-v, --verbose print command description
-g, --guides print list of useful guides
--user-interfaces print list of user-facing repository, command and file interfaces
--developer-interfaces
print list of file formats, protocols and other developer interfaces
-c, --config print all configuration variable names
fatal: options '--config' and '--man' cannot be used together
usage: git help [-a|--all] [--[no-]verbose] [--[no-]external-commands] [--[no-]aliases]
or: git help [[-i|--info] [-m|--man] [-w|--web]] [<command>|<doc>]
or: git help [-g|--guides]
or: git help [-c|--config]
or: git help [--user-interfaces]
or: git help [--developer-interfaces]
-a, --all print all available commands
--external-commands show external commands in --all
--aliases show aliases in --all
-m, --man show man page
-w, --web show manual in web browser
-i, --info show info page
-v, --verbose print command description
-g, --guides print list of useful guides
--user-interfaces print list of user-facing repository, command and file interfaces
--developer-interfaces
print list of file formats, protocols and other developer interfaces
-c, --config print all configuration variable names
fatal: options '--config' and '--web' cannot be used together
usage: git help [-a|--all] [--[no-]verbose] [--[no-]external-commands] [--[no-]aliases]
or: git help [[-i|--info] [-m|--man] [-w|--web]] [<command>|<doc>]
or: git help [-g|--guides]
or: git help [-c|--config]
or: git help [--user-interfaces]
or: git help [--developer-interfaces]
-a, --all print all available commands
--external-commands show external commands in --all
--aliases show aliases in --all
-m, --man show man page
-w, --web show manual in web browser
-i, --info show info page
-v, --verbose print command description
-g, --guides print list of useful guides
--user-interfaces print list of user-facing repository, command and file interfaces
--developer-interfaces
print list of file formats, protocols and other developer interfaces
-c, --config print all configuration variable names
ok 8 - invalid usage of '-c' with [-i|-m|-w]
expecting success of 0012.9 'invalid usage of '-c' with --no-external-commands':
test_expect_code 129 git help $opt --no-external-commands
fatal: the '--no-[external-commands|aliases]' options can only be used with '--all'
usage: git help [-a|--all] [--[no-]verbose] [--[no-]external-commands] [--[no-]aliases]
or: git help [[-i|--info] [-m|--man] [-w|--web]] [<command>|<doc>]
or: git help [-g|--guides]
or: git help [-c|--config]
or: git help [--user-interfaces]
or: git help [--developer-interfaces]
-a, --all print all available commands
--external-commands show external commands in --all
--aliases show aliases in --all
-m, --man show man page
-w, --web show manual in web browser
-i, --info show info page
-v, --verbose print command description
-g, --guides print list of useful guides
--user-interfaces print list of user-facing repository, command and file interfaces
--developer-interfaces
print list of file formats, protocols and other developer interfaces
-c, --config print all configuration variable names
ok 9 - invalid usage of '-c' with --no-external-commands
expecting success of 0012.10 'invalid usage of '-c' with --no-aliases':
test_expect_code 129 git help $opt --no-external-commands
fatal: the '--no-[external-commands|aliases]' options can only be used with '--all'
usage: git help [-a|--all] [--[no-]verbose] [--[no-]external-commands] [--[no-]aliases]
or: git help [[-i|--info] [-m|--man] [-w|--web]] [<command>|<doc>]
or: git help [-g|--guides]
or: git help [-c|--config]
or: git help [--user-interfaces]
or: git help [--developer-interfaces]
-a, --all print all available commands
--external-commands show external commands in --all
--aliases show aliases in --all
-m, --man show man page
-w, --web show manual in web browser
-i, --info show info page
-v, --verbose print command description
-g, --guides print list of useful guides
--user-interfaces print list of user-facing repository, command and file interfaces
--developer-interfaces
print list of file formats, protocols and other developer interfaces
-c, --config print all configuration variable names
ok 10 - invalid usage of '-c' with --no-aliases
expecting success of 0012.11 'invalid usage of '--config-for-completion' with [-i|-m|-w]':
git help $opt &&
test_expect_code 129 git help $opt -i &&
test_expect_code 129 git help $opt -m &&
test_expect_code 129 git help $opt -w
add.ignoreErrors
add.interactive.useBuiltin
advice.addEmbeddedRepo
advice.addEmptyPathspec
advice.addIgnoredFile
advice.amWorkDir
advice.ambiguousFetchRefspec
advice.checkoutAmbiguousRemoteBranchName
advice.commitBeforeMerge
advice.detachedHead
advice.diverging
advice.fetchShowForcedUpdates
advice.graftFileDeprecated
advice.ignoredHook
advice.implicitIdentity
advice.nestedTag
advice.objectNameWarning
advice.pushAlreadyExists
advice.pushFetchFirst
advice.pushNeedsForce
advice.pushNonFFCurrent
advice.pushNonFFMatching
advice.pushNonFastForward
advice.pushRefNeedsUpdate
advice.pushUnqualifiedRefName
advice.pushUpdateRejected
advice.resetNoRefresh
advice.resolveConflict
advice.rmHints
advice.sequencerInUse
advice.setUpstreamFailure
advice.skippedCherryPicks
advice.statusAheadBehindWarning
advice.statusHints
advice.statusUoption
advice.submoduleAlternateErrorStrategyDie
advice.submodulesNotUpdated
advice.suggestDetachingHead
advice.updateSparsePath
advice.waitingForEditor
advice.worktreeAddOrphan
alias.
am.keepcr
am.threeWay
apply.ignoreWhitespace
apply.whitespace
author.email
author.name
blame.blankBoundary
blame.coloring
blame.date
blame.ignoreRevsFile
blame.markIgnoredLines
blame.markUnblamableLines
blame.showEmail
blame.showRoot
branch.
branch.autoSetupMerge
branch.autoSetupRebase
branch.sort
browser.
bundle.
bundle.heuristic
bundle.mode
bundle.version
checkout.defaultRemote
checkout.guess
checkout.thresholdForParallelism
checkout.workers
clean.requireForce
clone.defaultRemoteName
clone.filterSubmodules
clone.rejectShallow
color.advice
color.advice.hint
color.blame.highlightRecent
color.blame.repeatedLines
color.branch
color.branch.current
color.branch.local
color.branch.plain
color.branch.remote
color.branch.reset
color.branch.upstream
color.branch.worktree
color.decorate.HEAD
color.decorate.branch
color.decorate.grafted
color.decorate.remoteBranch
color.decorate.stash
color.decorate.tag
color.diff
color.diff.commit
color.diff.context
color.diff.contextBold
color.diff.contextDimmed
color.diff.frag
color.diff.func
color.diff.meta
color.diff.new
color.diff.newBold
color.diff.newDimmed
color.diff.newMoved
color.diff.newMovedAlternative
color.diff.newMovedAlternativeDimmed
color.diff.newMovedDimmed
color.diff.old
color.diff.oldBold
color.diff.oldDimmed
color.diff.oldMoved
color.diff.oldMovedAlternative
color.diff.oldMovedAlternativeDimmed
color.diff.oldMovedDimmed
color.diff.plain
color.diff.whitespace
color.grep
color.grep.column
color.grep.context
color.grep.filename
color.grep.function
color.grep.lineNumber
color.grep.match
color.grep.matchContext
color.grep.matchSelected
color.grep.selected
color.grep.separator
color.interactive
color.interactive.error
color.interactive.header
color.interactive.help
color.interactive.plain
color.interactive.prompt
color.interactive.reset
color.pager
color.push
color.push.error
color.remote
color.remote.error
color.remote.hint
color.remote.success
color.remote.warning
color.showBranch
color.status
color.status.added
color.status.branch
color.status.changed
color.status.header
color.status.localBranch
color.status.noBranch
color.status.remoteBranch
color.status.unmerged
color.status.untracked
color.status.updated
color.transport
color.transport.rejected
color.ui
column.branch
column.clean
column.status
column.tag
column.ui
commit.cleanup
commit.gpgSign
commit.status
commit.template
commit.verbose
commitGraph.generationVersion
commitGraph.maxNewFilters
commitGraph.readChangedPaths
committer.email
committer.name
completion.commands
core.abbrev
core.alternateRefsCommand
core.alternateRefsPrefixes
core.askPass
core.attributesFile
core.autocrlf
core.bare
core.bigFileThreshold
core.checkRoundtripEncoding
core.checkStat
core.commentChar
core.commitGraph
core.compression
core.createObject
core.deltaBaseCacheLimit
core.editor
core.eol
core.excludesFile
core.fileMode
core.filesRefLockTimeout
core.fsmonitor
core.fsmonitorHookVersion
core.fsync
core.fsyncMethod
core.fsyncObjectFiles
core.gitProxy
core.hideDotFiles
core.hooksPath
core.ignoreCase
core.ignoreStat
core.logAllRefUpdates
core.looseCompression
core.multiPackIndex
core.notesRef
core.packedGitLimit
core.packedGitWindowSize
core.packedRefsTimeout
core.pager
core.precomposeUnicode
core.preferSymlinkRefs
core.preloadIndex
core.protectHFS
core.protectNTFS
core.quotePath
core.repositoryFormatVersion
core.restrictinheritedhandles
core.safecrlf
core.sharedRepository
core.sparseCheckout
core.sparseCheckoutCone
core.splitIndex
core.sshCommand
core.symlinks
core.trustctime
core.unsetenvvars
core.untrackedCache
core.useReplaceRefs
core.warnAmbiguousRefs
core.whitespace
core.worktree
credential.
credential.helper
credential.useHttpPath
credential.username
credentialCache.ignoreSIGHUP
credentialStore.lockTimeoutMS
diff.
diff.algorithm
diff.autoRefreshIndex
diff.colorMoved
diff.colorMovedWS
diff.context
diff.dirstat
diff.external
diff.guitool
diff.ignoreSubmodules
diff.indentHeuristic
diff.interHunkContext
diff.mnemonicPrefix
diff.noprefix
diff.orderFile
diff.relative
diff.renameLimit
diff.renames
diff.statGraphWidth
diff.submodule
diff.suppressBlankEmpty
diff.tool
diff.wordRegex
diff.wsErrorHighlight
difftool.
difftool.guiDefault
difftool.prompt
difftool.trustExitCode
extensions.objectFormat
extensions.worktreeConfig
fastimport.unpackLimit
feature.
feature.experimental
feature.manyFiles
fetch.bundleCreationToken
fetch.bundleURI
fetch.fsck.
fetch.fsck.skipList
fetch.fsckObjects
fetch.negotiationAlgorithm
fetch.output
fetch.parallel
fetch.prune
fetch.pruneTags
fetch.recurseSubmodules
fetch.showForcedUpdates
fetch.unpackLimit
fetch.writeCommitGraph
filter.
format.attach
format.cc
format.coverFromDescription
format.coverLetter
format.encodeEmailHeaders
format.filenameMaxLength
format.forceInBodyFrom
format.from
format.headers
format.mboxrd
format.noprefix
format.notes
format.numbered
format.outputDirectory
format.pretty
format.signOff
format.signature
format.signatureFile
format.subjectPrefix
format.suffix
format.thread
format.to
format.useAutoBase
fsck.badDate
fsck.badDateOverflow
fsck.badEmail
fsck.badFilemode
fsck.badName
fsck.badObjectSha1
fsck.badParentSha1
fsck.badTagName
fsck.badTimezone
fsck.badTree
fsck.badTreeSha1
fsck.badType
fsck.duplicateEntries
fsck.emptyName
fsck.extraHeaderEntry
fsck.fullPathname
fsck.gitattributesBlob
fsck.gitattributesLarge
fsck.gitattributesLineLength
fsck.gitattributesMissing
fsck.gitattributesSymlink
fsck.gitignoreSymlink
fsck.gitmodulesBlob
fsck.gitmodulesLarge
fsck.gitmodulesMissing
fsck.gitmodulesName
fsck.gitmodulesParse
fsck.gitmodulesPath
fsck.gitmodulesSymlink
fsck.gitmodulesUpdate
fsck.gitmodulesUrl
fsck.hasDot
fsck.hasDotdot
fsck.hasDotgit
fsck.mailmapSymlink
fsck.missingAuthor
fsck.missingCommitter
fsck.missingEmail
fsck.missingNameBeforeEmail
fsck.missingObject
fsck.missingSpaceBeforeDate
fsck.missingSpaceBeforeEmail
fsck.missingTag
fsck.missingTagEntry
fsck.missingTaggerEntry
fsck.missingTree
fsck.missingType
fsck.missingTypeEntry
fsck.multipleAuthors
fsck.nulInCommit
fsck.nulInHeader
fsck.nullSha1
fsck.skipList
fsck.treeNotSorted
fsck.unknownType
fsck.unterminatedHeader
fsck.zeroPaddedDate
fsck.zeroPaddedFilemode
fsmonitor.allowRemote
fsmonitor.socketDir
gc.
gc.aggressiveDepth
gc.aggressiveWindow
gc.auto
gc.autoDetach
gc.autoPackLimit
gc.bigPackThreshold
gc.cruftPacks
gc.logExpiry
gc.packRefs
gc.pruneExpire
gc.recentObjectsHook
gc.reflogExpire
gc.reflogExpireUnreachable
gc.rerereResolved
gc.rerereUnresolved
gc.worktreePruneExpire
gc.writeCommitGraph
gitcvs.allBinary
gitcvs.commitMsgAnnotation
gitcvs.dbDriver
gitcvs.dbName
gitcvs.dbPass
gitcvs.dbTableNamePrefix
gitcvs.dbUser
gitcvs.enabled
gitcvs.logFile
gitcvs.usecrlfattr
gitweb.avatar
gitweb.blame
gitweb.category
gitweb.description
gitweb.grep
gitweb.highlight
gitweb.owner
gitweb.patches
gitweb.pickaxe
gitweb.remote_heads
gitweb.showSizes
gitweb.snapshot
gitweb.url
gpg.
gpg.format
gpg.minTrustLevel
gpg.program
gpg.ssh.allowedSignersFile
gpg.ssh.defaultKeyCommand
gpg.ssh.revocationFile
grep.column
grep.extendedRegexp
grep.fallbackToNoIndex
grep.fullName
grep.lineNumber
grep.patternType
grep.threads
gui.blamehistoryctx
gui.commitMsgWidth
gui.copyBlameThreshold
gui.diffContext
gui.displayUntracked
gui.encoding
gui.fastCopyBlame
gui.matchTrackingBranch
gui.newBranchTemplate
gui.pruneDuringFetch
gui.spellingDictionary
gui.trustmtime
guitool.
help.autoCorrect
help.browser
help.format
help.htmlPath
http.
http.cookieFile
http.curloptResolve
http.delegation
http.emptyAuth
http.extraHeader
http.followRedirects
http.lowSpeedLimit
http.lowSpeedTime
http.maxRequests
http.minSessions
http.noEPSV
http.pinnedPubkey
http.postBuffer
http.proxy
http.proxyAuthMethod
http.proxySSLCAInfo
http.proxySSLCert
http.proxySSLCertPasswordProtected
http.proxySSLKey
http.saveCookies
http.schannelCheckRevoke
http.schannelUseSSLCAInfo
http.sslBackend
http.sslCAInfo
http.sslCAPath
http.sslCert
http.sslCertPasswordProtected
http.sslCipherList
http.sslKey
http.sslTry
http.sslVerify
http.sslVersion
http.userAgent
http.version
i18n.commitEncoding
i18n.logOutputEncoding
imap.authMethod
imap.folder
imap.host
imap.pass
imap.port
imap.preformattedHTML
imap.sslverify
imap.tunnel
imap.user
include.path
includeIf.
index.recordEndOfIndexEntries
index.recordOffsetTable
index.skipHash
index.sparse
index.threads
index.version
init.defaultBranch
init.templateDir
instaweb.browser
instaweb.httpd
instaweb.local
instaweb.modulePath
instaweb.port
interactive.diffFilter
interactive.singleKey
log.abbrevCommit
log.date
log.decorate
log.diffMerges
log.excludeDecoration
log.follow
log.graphColors
log.initialDecorationSet
log.mailmap
log.showRoot
log.showSignature
lsrefs.unborn
mailinfo.scissors
mailmap.blob
mailmap.file
maintenance.
maintenance.auto
maintenance.commit-graph.auto
maintenance.incremental-repack.auto
maintenance.loose-objects.auto
maintenance.strategy
man.
man.viewer
merge.
merge.autoStash
merge.branchdesc
merge.conflictStyle
merge.defaultToUpstream
merge.directoryRenames
merge.ff
merge.guitool
merge.log
merge.renameLimit
merge.renames
merge.renormalize
merge.stat
merge.suppressDest
merge.tool
merge.verbosity
merge.verifySignatures
mergetool.
mergetool.guiDefault
mergetool.hideResolved
mergetool.keepBackup
mergetool.keepTemporaries
mergetool.meld.hasOutput
mergetool.meld.useAutoMerge
mergetool.prompt
mergetool.vimdiff.layout
mergetool.writeToTemp
notes.
notes.displayRef
notes.mergeStrategy
notes.rewrite.
notes.rewriteMode
notes.rewriteRef
pack.allowPackReuse
pack.compression
pack.deltaCacheLimit
pack.deltaCacheSize
pack.depth
pack.indexVersion
pack.island
pack.islandCore
pack.packSizeLimit
pack.preferBitmapTips
pack.readReverseIndex
pack.threads
pack.useBitmapBoundaryTraversal
pack.useBitmaps
pack.useSparse
pack.window
pack.windowMemory
pack.writeBitmapHashCache
pack.writeBitmapLookupTable
pack.writeReverseIndex
pager.
pretty.
protocol.
protocol.allow
protocol.version
pull.ff
pull.octopus
pull.rebase
pull.twohead
push.autoSetupRemote
push.default
push.followTags
push.gpgSign
push.negotiate
push.pushOption
push.recurseSubmodules
push.useBitmaps
push.useForceIfIncludes
rebase.abbreviateCommands
rebase.autoSquash
rebase.autoStash
rebase.backend
rebase.forkPoint
rebase.instructionFormat
rebase.missingCommitsCheck
rebase.rebaseMerges
rebase.rescheduleFailedExec
rebase.stat
rebase.updateRefs
receive.advertiseAtomic
receive.advertisePushOptions
receive.autogc
receive.certNonceSeed
receive.certNonceSlop
receive.denyCurrentBranch
receive.denyDeleteCurrent
receive.denyDeletes
receive.denyNonFastForwards
receive.fsck.badDate
receive.fsck.badDateOverflow
receive.fsck.badEmail
receive.fsck.badFilemode
receive.fsck.badName
receive.fsck.badObjectSha1
receive.fsck.badParentSha1
receive.fsck.badTagName
receive.fsck.badTimezone
receive.fsck.badTree
receive.fsck.badTreeSha1
receive.fsck.badType
receive.fsck.duplicateEntries
receive.fsck.emptyName
receive.fsck.extraHeaderEntry
receive.fsck.fullPathname
receive.fsck.gitattributesBlob
receive.fsck.gitattributesLarge
receive.fsck.gitattributesLineLength
receive.fsck.gitattributesMissing
receive.fsck.gitattributesSymlink
receive.fsck.gitignoreSymlink
receive.fsck.gitmodulesBlob
receive.fsck.gitmodulesLarge
receive.fsck.gitmodulesMissing
receive.fsck.gitmodulesName
receive.fsck.gitmodulesParse
receive.fsck.gitmodulesPath
receive.fsck.gitmodulesSymlink
receive.fsck.gitmodulesUpdate
receive.fsck.gitmodulesUrl
receive.fsck.hasDot
receive.fsck.hasDotdot
receive.fsck.hasDotgit
receive.fsck.mailmapSymlink
receive.fsck.missingAuthor
receive.fsck.missingCommitter
receive.fsck.missingEmail
receive.fsck.missingNameBeforeEmail
receive.fsck.missingObject
receive.fsck.missingSpaceBeforeDate
receive.fsck.missingSpaceBeforeEmail
receive.fsck.missingTag
receive.fsck.missingTagEntry
receive.fsck.missingTaggerEntry
receive.fsck.missingTree
receive.fsck.missingType
receive.fsck.missingTypeEntry
receive.fsck.multipleAuthors
receive.fsck.nulInCommit
receive.fsck.nulInHeader
receive.fsck.nullSha1
receive.fsck.skipList
receive.fsck.treeNotSorted
receive.fsck.unknownType
receive.fsck.unterminatedHeader
receive.fsck.zeroPaddedDate
receive.fsck.zeroPaddedFilemode
receive.fsckObjects
receive.hideRefs
receive.keepAlive
receive.maxInputSize
receive.procReceiveRefs
receive.shallowUpdate
receive.unpackLimit
receive.updateServerInfo
remote.
remote.pushDefault
remotes.
repack.cruftDepth
repack.cruftThreads
repack.cruftWindow
repack.cruftWindowMemory
repack.packKeptObjects
repack.updateServerInfo
repack.useDeltaBaseOffset
repack.useDeltaIslands
repack.writeBitmaps
rerere.autoUpdate
rerere.enabled
revert.reference
safe.bareRepository
safe.directory
sendemail.
sendemail.aliasFileType
sendemail.aliasesFile
sendemail.annotate
sendemail.bcc
sendemail.cc
sendemail.ccCmd
sendemail.chainReplyTo
sendemail.confirm
sendemail.envelopeSender
sendemail.forbidSendmailVariables
sendemail.from
sendemail.headerCmd
sendemail.identity
sendemail.multiEdit
sendemail.signedoffbycc
sendemail.smtpBatchSize
sendemail.smtpDomain
sendemail.smtpEncryption
sendemail.smtpPass
sendemail.smtpReloginDelay
sendemail.smtpServer
sendemail.smtpServerOption
sendemail.smtpServerPort
sendemail.smtpUser
sendemail.smtpsslcertpath
sendemail.suppressFrom
sendemail.suppresscc
sendemail.thread
sendemail.to
sendemail.tocmd
sendemail.transferEncoding
sendemail.validate
sendemail.xmailer
sequence.editor
showBranch.default
sparse.expectFilesOutsideOfPatterns
splitIndex.maxPercentChange
splitIndex.sharedIndexExpire
ssh.variant
stash.showIncludeUntracked
stash.showPatch
stash.showStat
status.aheadBehind
status.branch
status.displayCommentPrefix
status.relativePaths
status.renameLimit
status.renames
status.short
status.showStash
status.showUntrackedFiles
status.submoduleSummary
submodule.
submodule.active
submodule.alternateErrorStrategy
submodule.alternateLocation
submodule.fetchJobs
submodule.propagateBranches
submodule.recurse
tag.forceSignAnnotated
tag.gpgSign
tag.sort
tar.umask
trace2.configParams
trace2.destinationDebug
trace2.envVars
trace2.eventBrief
trace2.eventNesting
trace2.eventTarget
trace2.maxFiles
trace2.normalBrief
trace2.normalTarget
trace2.perfBrief
trace2.perfTarget
transfer.advertiseSID
transfer.bundleURI
transfer.credentialsInUrl
transfer.fsckObjects
transfer.hideRefs
transfer.unpackLimit
uploadarchive.allowUnreachable
uploadpack.allowAnySHA1InWant
uploadpack.allowFilter
uploadpack.allowReachableSHA1InWant
uploadpack.allowRefInWant
uploadpack.allowTipSHA1InWant
uploadpack.hideRefs
uploadpack.keepAlive
uploadpack.packObjectsHook
uploadpackfilter.
uploadpackfilter.allow
uploadpackfilter.tree.maxDepth
url.
user.email
user.name
user.signingKey
user.useConfigOnly
versionsort.suffix
web.browser
worktree.guessRemote
fatal: options '--config-for-completion' and '--info' cannot be used together
usage: git help [-a|--all] [--[no-]verbose] [--[no-]external-commands] [--[no-]aliases]
or: git help [[-i|--info] [-m|--man] [-w|--web]] [<command>|<doc>]
or: git help [-g|--guides]
or: git help [-c|--config]
or: git help [--user-interfaces]
or: git help [--developer-interfaces]
-a, --all print all available commands
--external-commands show external commands in --all
--aliases show aliases in --all
-m, --man show man page
-w, --web show manual in web browser
-i, --info show info page
-v, --verbose print command description
-g, --guides print list of useful guides
--user-interfaces print list of user-facing repository, command and file interfaces
--developer-interfaces
print list of file formats, protocols and other developer interfaces
-c, --config print all configuration variable names
fatal: options '--config-for-completion' and '--man' cannot be used together
usage: git help [-a|--all] [--[no-]verbose] [--[no-]external-commands] [--[no-]aliases]
or: git help [[-i|--info] [-m|--man] [-w|--web]] [<command>|<doc>]
or: git help [-g|--guides]
or: git help [-c|--config]
or: git help [--user-interfaces]
or: git help [--developer-interfaces]
-a, --all print all available commands
--external-commands show external commands in --all
--aliases show aliases in --all
-m, --man show man page
-w, --web show manual in web browser
-i, --info show info page
-v, --verbose print command description
-g, --guides print list of useful guides
--user-interfaces print list of user-facing repository, command and file interfaces
--developer-interfaces
print list of file formats, protocols and other developer interfaces
-c, --config print all configuration variable names
fatal: options '--config-for-completion' and '--web' cannot be used together
usage: git help [-a|--all] [--[no-]verbose] [--[no-]external-commands] [--[no-]aliases]
or: git help [[-i|--info] [-m|--man] [-w|--web]] [<command>|<doc>]
or: git help [-g|--guides]
or: git help [-c|--config]
or: git help [--user-interfaces]
or: git help [--developer-interfaces]
-a, --all print all available commands
--external-commands show external commands in --all
--aliases show aliases in --all
-m, --man show man page
-w, --web show manual in web browser
-i, --info show info page
-v, --verbose print command description
-g, --guides print list of useful guides
--user-interfaces print list of user-facing repository, command and file interfaces
--developer-interfaces
print list of file formats, protocols and other developer interfaces
-c, --config print all configuration variable names
ok 11 - invalid usage of '--config-for-completion' with [-i|-m|-w]
expecting success of 0012.12 'invalid usage of '--config-for-completion' with --no-external-commands':
test_expect_code 129 git help $opt --no-external-commands
fatal: the '--no-[external-commands|aliases]' options can only be used with '--all'
usage: git help [-a|--all] [--[no-]verbose] [--[no-]external-commands] [--[no-]aliases]
or: git help [[-i|--info] [-m|--man] [-w|--web]] [<command>|<doc>]
or: git help [-g|--guides]
or: git help [-c|--config]
or: git help [--user-interfaces]
or: git help [--developer-interfaces]
-a, --all print all available commands
--external-commands show external commands in --all
--aliases show aliases in --all
-m, --man show man page
-w, --web show manual in web browser
-i, --info show info page
-v, --verbose print command description
-g, --guides print list of useful guides
--user-interfaces print list of user-facing repository, command and file interfaces
--developer-interfaces
print list of file formats, protocols and other developer interfaces
-c, --config print all configuration variable names
ok 12 - invalid usage of '--config-for-completion' with --no-external-commands
expecting success of 0012.13 'invalid usage of '--config-for-completion' with --no-aliases':
test_expect_code 129 git help $opt --no-external-commands
fatal: the '--no-[external-commands|aliases]' options can only be used with '--all'
usage: git help [-a|--all] [--[no-]verbose] [--[no-]external-commands] [--[no-]aliases]
or: git help [[-i|--info] [-m|--man] [-w|--web]] [<command>|<doc>]
or: git help [-g|--guides]
or: git help [-c|--config]
or: git help [--user-interfaces]
or: git help [--developer-interfaces]
-a, --all print all available commands
--external-commands show external commands in --all
--aliases show aliases in --all
-m, --man show man page
-w, --web show manual in web browser
-i, --info show info page
-v, --verbose print command description
-g, --guides print list of useful guides
--user-interfaces print list of user-facing repository, command and file interfaces
--developer-interfaces
print list of file formats, protocols and other developer interfaces
-c, --config print all configuration variable names
ok 13 - invalid usage of '--config-for-completion' with --no-aliases
expecting success of 0012.14 'invalid usage of '--config-sections-for-completion' with [-i|-m|-w]':
git help $opt &&
test_expect_code 129 git help $opt -i &&
test_expect_code 129 git help $opt -m &&
test_expect_code 129 git help $opt -w
add
advice
alias
am
apply
author
blame
branch
browser
bundle
checkout
clean
clone
color
column
commit
commitGraph
committer
completion
core
credential
credentialCache
credentialStore
diff
difftool
extensions
fastimport
feature
fetch
filter
format
fsck
fsmonitor
gc
gitcvs
gitweb
gpg
grep
gui
guitool
help
http
i18n
imap
include
includeIf
index
init
instaweb
interactive
log
lsrefs
mailinfo
mailmap
maintenance
man
merge
mergetool
notes
pack
pager
pretty
protocol
pull
push
rebase
receive
remote
remotes
repack
rerere
revert
safe
sendemail
sequence
showBranch
sparse
splitIndex
ssh
stash
status
submodule
tag
tar
trace2
transfer
uploadarchive
uploadpack
uploadpackfilter
url
user
versionsort
web
worktree
fatal: options '--config-sections-for-completion' and '--info' cannot be used together
usage: git help [-a|--all] [--[no-]verbose] [--[no-]external-commands] [--[no-]aliases]
or: git help [[-i|--info] [-m|--man] [-w|--web]] [<command>|<doc>]
or: git help [-g|--guides]
or: git help [-c|--config]
or: git help [--user-interfaces]
or: git help [--developer-interfaces]
-a, --all print all available commands
--external-commands show external commands in --all
--aliases show aliases in --all
-m, --man show man page
-w, --web show manual in web browser
-i, --info show info page
-v, --verbose print command description
-g, --guides print list of useful guides
--user-interfaces print list of user-facing repository, command and file interfaces
--developer-interfaces
print list of file formats, protocols and other developer interfaces
-c, --config print all configuration variable names
fatal: options '--config-sections-for-completion' and '--man' cannot be used together
usage: git help [-a|--all] [--[no-]verbose] [--[no-]external-commands] [--[no-]aliases]
or: git help [[-i|--info] [-m|--man] [-w|--web]] [<command>|<doc>]
or: git help [-g|--guides]
or: git help [-c|--config]
or: git help [--user-interfaces]
or: git help [--developer-interfaces]
-a, --all print all available commands
--external-commands show external commands in --all
--aliases show aliases in --all
-m, --man show man page
-w, --web show manual in web browser
-i, --info show info page
-v, --verbose print command description
-g, --guides print list of useful guides
--user-interfaces print list of user-facing repository, command and file interfaces
--developer-interfaces
print list of file formats, protocols and other developer interfaces
-c, --config print all configuration variable names
fatal: options '--config-sections-for-completion' and '--web' cannot be used together
usage: git help [-a|--all] [--[no-]verbose] [--[no-]external-commands] [--[no-]aliases]
or: git help [[-i|--info] [-m|--man] [-w|--web]] [<command>|<doc>]
or: git help [-g|--guides]
or: git help [-c|--config]
or: git help [--user-interfaces]
or: git help [--developer-interfaces]
-a, --all print all available commands
--external-commands show external commands in --all
--aliases show aliases in --all
-m, --man show man page
-w, --web show manual in web browser
-i, --info show info page
-v, --verbose print command description
-g, --guides print list of useful guides
--user-interfaces print list of user-facing repository, command and file interfaces
--developer-interfaces
print list of file formats, protocols and other developer interfaces
-c, --config print all configuration variable names
ok 14 - invalid usage of '--config-sections-for-completion' with [-i|-m|-w]
expecting success of 0012.15 'invalid usage of '--config-sections-for-completion' with --no-external-commands':
test_expect_code 129 git help $opt --no-external-commands
fatal: the '--no-[external-commands|aliases]' options can only be used with '--all'
usage: git help [-a|--all] [--[no-]verbose] [--[no-]external-commands] [--[no-]aliases]
or: git help [[-i|--info] [-m|--man] [-w|--web]] [<command>|<doc>]
or: git help [-g|--guides]
or: git help [-c|--config]
or: git help [--user-interfaces]
or: git help [--developer-interfaces]
-a, --all print all available commands
--external-commands show external commands in --all
--aliases show aliases in --all
-m, --man show man page
-w, --web show manual in web browser
-i, --info show info page
-v, --verbose print command description
-g, --guides print list of useful guides
--user-interfaces print list of user-facing repository, command and file interfaces
--developer-interfaces
print list of file formats, protocols and other developer interfaces
-c, --config print all configuration variable names
ok 15 - invalid usage of '--config-sections-for-completion' with --no-external-commands
expecting success of 0012.16 'invalid usage of '--config-sections-for-completion' with --no-aliases':
test_expect_code 129 git help $opt --no-external-commands
fatal: the '--no-[external-commands|aliases]' options can only be used with '--all'
usage: git help [-a|--all] [--[no-]verbose] [--[no-]external-commands] [--[no-]aliases]
or: git help [[-i|--info] [-m|--man] [-w|--web]] [<command>|<doc>]
or: git help [-g|--guides]
or: git help [-c|--config]
or: git help [--user-interfaces]
or: git help [--developer-interfaces]
-a, --all print all available commands
--external-commands show external commands in --all
--aliases show aliases in --all
-m, --man show man page
-w, --web show manual in web browser
-i, --info show info page
-v, --verbose print command description
-g, --guides print list of useful guides
--user-interfaces print list of user-facing repository, command and file interfaces
--developer-interfaces
print list of file formats, protocols and other developer interfaces
-c, --config print all configuration variable names
ok 16 - invalid usage of '--config-sections-for-completion' with --no-aliases
expecting success of 0012.17 'works for commands and guides by default':
configure_help &&
git help status &&
echo "test://html/git-status.html" >expect &&
test_cmp expect test-browser.log &&
git help revisions &&
echo "test://html/gitrevisions.html" >expect &&
test_cmp expect test-browser.log
ok 17 - works for commands and guides by default
expecting success of 0012.18 '--exclude-guides does not work for guides':
>test-browser.log &&
test_must_fail git help --exclude-guides revisions &&
test_must_be_empty test-browser.log
git: 'revisions' is not a git command. See 'git --help'.
ok 18 - --exclude-guides does not work for guides
expecting success of 0012.19 '--help does not work for guides':
cat <<-EOF >expect &&
git: 'revisions' is not a git command. See 'git --help'.
EOF
test_must_fail git revisions --help 2>actual &&
test_cmp expect actual
ok 19 - --help does not work for guides
expecting success of 0012.20 'git help':
git help >help.output &&
test_i18ngrep "^ clone " help.output &&
test_i18ngrep "^ add " help.output &&
test_i18ngrep "^ log " help.output &&
test_i18ngrep "^ commit " help.output &&
test_i18ngrep "^ fetch " help.output
clone Clone a repository into a new directory
add Add file contents to the index
log Show commit logs
commit Record changes to the repository
fetch Download objects and refs from another repository
ok 20 - git help
expecting success of 0012.21 'git help -g':
git help -g >help.output &&
test_i18ngrep "^ everyday " help.output &&
test_i18ngrep "^ tutorial " help.output
everyday A useful minimum set of commands for Everyday Git
tutorial A tutorial introduction to Git
ok 21 - git help -g
expecting success of 0012.22 'git help fails for non-existing html pages':
configure_help &&
mkdir html-empty &&
test_must_fail git -c help.htmlpath=html-empty help status &&
test_must_be_empty test-browser.log
fatal: 'html-empty/git-status.html': documentation file not found.
ok 22 - git help fails for non-existing html pages
expecting success of 0012.23 'git help succeeds without git.html':
configure_help &&
mkdir html-with-docs &&
touch html-with-docs/git-status.html &&
git -c help.htmlpath=html-with-docs help status &&
echo "html-with-docs/git-status.html" >expect &&
test_cmp expect test-browser.log
ok 23 - git help succeeds without git.html
expecting success of 0012.24 'git help --user-interfaces':
git help --user-interfaces >help.output &&
grep "^ attributes " help.output &&
grep "^ mailmap " help.output
attributes Defining attributes per path
mailmap Map author/committer names and/or E-Mail addresses
ok 24 - git help --user-interfaces
expecting success of 0012.25 'git help -c':
git help -c >help.output &&
cat >expect <<-\EOF &&
'git help config' for more information
EOF
grep -v -E \
-e "^[^.]+\.[^.]+$" \
-e "^[^.]+\.[^.]+\.[^.]+$" \
help.output >actual &&
test_cmp expect actual
ok 25 - git help -c
expecting success of 0012.26 'git help --config-for-completion':
git help -c >human &&
grep -E \
-e "^[^.]+\.[^.]+$" \
-e "^[^.]+\.[^.]+\.[^.]+$" human |
sed -e "s/\*.*//" -e "s/<.*//" |
sort -u >human.munged &&
git help --config-for-completion >vars &&
test_cmp human.munged vars
ok 26 - git help --config-for-completion
expecting success of 0012.27 'git help --config-sections-for-completion':
git help -c >human &&
grep -E \
-e "^[^.]+\.[^.]+$" \
-e "^[^.]+\.[^.]+\.[^.]+$" human |
sed -e "s/\..*//" |
sort -u >human.munged &&
git help --config-sections-for-completion >sections &&
test_cmp human.munged sections
ok 27 - git help --config-sections-for-completion
expecting success of 0012.28 ''git' section spacing':
test_section_spacing_trailer git help <<-\EOF &&
usage: git [-v | --version] [-h | --help] [-C <path>] [-c <name>=<value>]
These are common Git commands used in various situations:
start a working area (see also: git help tutorial)
work on the current change (see also: git help everyday)
examine the history and state (see also: git help revisions)
grow, mark and tweak your common history
collaborate (see also: git help workflows)
EOF
test_cmp expect actual
ok 28 - 'git' section spacing
expecting success of 0012.29 ''git help' section spacing':
test_section_spacing_trailer git help <<-\EOF &&
usage: git [-v | --version] [-h | --help] [-C <path>] [-c <name>=<value>]
These are common Git commands used in various situations:
start a working area (see also: git help tutorial)
work on the current change (see also: git help everyday)
examine the history and state (see also: git help revisions)
grow, mark and tweak your common history
collaborate (see also: git help workflows)
EOF
test_cmp expect actual
ok 29 - 'git help' section spacing
expecting success of 0012.30 ''git help -a' section spacing':
test_section_spacing \
git help -a --no-external-commands --no-aliases <<-\EOF &&
See 'git help <command>' to read about a specific subcommand
Main Porcelain Commands
Ancillary Commands / Manipulators
Ancillary Commands / Interrogators
Interacting with Others
Low-level Commands / Manipulators
Low-level Commands / Interrogators
Low-level Commands / Syncing Repositories
Low-level Commands / Internal Helpers
User-facing repository, command and file interfaces
Developer-facing file formats, protocols and other interfaces
EOF
test_cmp expect actual
ok 30 - 'git help -a' section spacing
expecting success of 0012.31 ''git help -g' section spacing':
test_section_spacing_trailer git help -g <<-\EOF &&
The Git concept guides are:
EOF
test_cmp expect actual
ok 31 - 'git help -g' section spacing
expecting success of 0012.32 'generate builtin list':
mkdir -p sub &&
git --list-cmds=builtins >builtins
ok 32 - generate builtin list
expecting success of 0012.33 'add can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git add [<options>] [--] <pathspec>...
ok 33 - add can handle -h
expecting success of 0012.34 'am can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git am [<options>] [(<mbox> | <Maildir>)...]
ok 34 - am can handle -h
expecting success of 0012.35 'annotate can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git annotate [<options>] [<rev-opts>] [<rev>] [--] <file>
ok 35 - annotate can handle -h
expecting success of 0012.36 'apply can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git apply [<options>] [<patch>...]
ok 36 - apply can handle -h
expecting success of 0012.37 'archive can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git archive [<options>] <tree-ish> [<path>...]
ok 37 - archive can handle -h
expecting success of 0012.38 'bisect can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git bisect start [--term-{new,bad}=<term> --term-{old,good}=<term>] [--no-checkout] [--first-parent] [<bad> [<good>...]] [--] [<pathspec>...]
ok 38 - bisect can handle -h
expecting success of 0012.39 'blame can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git blame [<options>] [<rev-opts>] [<rev>] [--] <file>
ok 39 - blame can handle -h
expecting success of 0012.40 'branch can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git branch [<options>] [-r | -a] [--merged] [--no-merged]
ok 40 - branch can handle -h
expecting success of 0012.41 'bugreport can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git bugreport [(-o | --output-directory) <path>] [(-s | --suffix) <format>]
ok 41 - bugreport can handle -h
expecting success of 0012.42 'bundle can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git bundle create [-q | --quiet | --progress]
ok 42 - bundle can handle -h
expecting success of 0012.43 'cat-file can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git cat-file <type> <object>
ok 43 - cat-file can handle -h
expecting success of 0012.44 'check-attr can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git check-attr [--source <tree-ish>] [-a | --all | <attr>...] [--] <pathname>...
ok 44 - check-attr can handle -h
expecting success of 0012.45 'check-ignore can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git check-ignore [<options>] <pathname>...
ok 45 - check-ignore can handle -h
expecting success of 0012.46 'check-mailmap can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git check-mailmap [<options>] <contact>...
ok 46 - check-mailmap can handle -h
expecting success of 0012.47 'check-ref-format can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git check-ref-format [--normalize] [<options>] <refname>
ok 47 - check-ref-format can handle -h
expecting success of 0012.48 'checkout can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git checkout [<options>] <branch>
ok 48 - checkout can handle -h
expecting success of 0012.49 'checkout--worker can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git checkout--worker [<options>]
ok 49 - checkout--worker can handle -h
expecting success of 0012.50 'checkout-index can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git checkout-index [<options>] [--] [<file>...]
ok 50 - checkout-index can handle -h
expecting success of 0012.51 'cherry can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git cherry [-v] [<upstream> [<head> [<limit>]]]
ok 51 - cherry can handle -h
expecting success of 0012.52 'cherry-pick can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git cherry-pick [--edit] [-n] [-m <parent-number>] [-s] [-x] [--ff]
ok 52 - cherry-pick can handle -h
expecting success of 0012.53 'clean can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git clean [-d] [-f] [-i] [-n] [-q] [-e <pattern>] [-x | -X] [--] [<pathspec>...]
ok 53 - clean can handle -h
expecting success of 0012.54 'clone can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git clone [<options>] [--] <repo> [<dir>]
ok 54 - clone can handle -h
expecting success of 0012.55 'column can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git column [<options>]
ok 55 - column can handle -h
expecting success of 0012.56 'commit can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git commit [-a | --interactive | --patch] [-s] [-v] [-u<mode>] [--amend]
ok 56 - commit can handle -h
expecting success of 0012.57 'commit-graph can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git commit-graph verify [--object-dir <dir>] [--shallow] [--[no-]progress]
ok 57 - commit-graph can handle -h
expecting success of 0012.58 'commit-tree can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git commit-tree <tree> [(-p <parent>)...]
ok 58 - commit-tree can handle -h
expecting success of 0012.59 'config can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git config [<options>]
ok 59 - config can handle -h
expecting success of 0012.60 'count-objects can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git count-objects [-v] [-H | --human-readable]
ok 60 - count-objects can handle -h
expecting success of 0012.61 'credential can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git credential (fill|approve|reject)
ok 61 - credential can handle -h
expecting success of 0012.62 'credential-cache can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git credential-cache [<options>] <action>
ok 62 - credential-cache can handle -h
expecting success of 0012.63 'credential-cache--daemon can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git credential-cache--daemon [--debug] <socket-path>
ok 63 - credential-cache--daemon can handle -h
expecting success of 0012.64 'credential-store can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git credential-store [<options>] <action>
ok 64 - credential-store can handle -h
expecting success of 0012.65 'describe can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git describe [--all] [--tags] [--contains] [--abbrev=<n>] [<commit-ish>...]
ok 65 - describe can handle -h
expecting success of 0012.66 'diagnose can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git diagnose [(-o | --output-directory) <path>] [(-s | --suffix) <format>]
ok 66 - diagnose can handle -h
expecting success of 0012.67 'diff can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git diff --no-index [<options>] <path> <path>
ok 67 - diff can handle -h
expecting success of 0012.68 'diff-files can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git diff-files [-q] [-0 | -1 | -2 | -3 | -c | --cc] [<common-diff-options>] [<path>...]
ok 68 - diff-files can handle -h
expecting success of 0012.69 'diff-index can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git diff-index [-m] [--cached] [--merge-base] [<common-diff-options>] <tree-ish> [<path>...]
ok 69 - diff-index can handle -h
expecting success of 0012.70 'diff-tree can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git diff-tree [--stdin] [-m] [-s] [-v] [--no-commit-id] [--pretty]
ok 70 - diff-tree can handle -h
expecting success of 0012.71 'difftool can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git difftool [<options>] [<commit> [<commit>]] [--] [<path>...]
ok 71 - difftool can handle -h
expecting success of 0012.72 'fast-export can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git fast-export [<rev-list-opts>]
ok 72 - fast-export can handle -h
expecting success of 0012.73 'fast-import can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git fast-import [--date-format=<f>] [--max-pack-size=<n>] [--big-file-threshold=<n>] [--depth=<n>] [--active-branches=<n>] [--export-marks=<marks.file>]
ok 73 - fast-import can handle -h
expecting success of 0012.74 'fetch can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git fetch [<options>] [<repository> [<refspec>...]]
ok 74 - fetch can handle -h
expecting success of 0012.75 'fetch-pack can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git fetch-pack [--all] [--stdin] [--quiet | -q] [--keep | -k] [--thin] [--include-tag] [--upload-pack=<git-upload-pack>] [--depth=<n>] [--no-progress] [--diag-url] [-v] [<host>:]<directory> [<refs>...]
ok 75 - fetch-pack can handle -h
expecting success of 0012.76 'fmt-merge-msg can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git fmt-merge-msg [-m <message>] [--log[=<n>] | --no-log] [--file <file>]
ok 76 - fmt-merge-msg can handle -h
expecting success of 0012.77 'for-each-ref can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git for-each-ref [<options>] [<pattern>]
ok 77 - for-each-ref can handle -h
expecting success of 0012.78 'for-each-repo can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git for-each-repo --config=<config> [--] <arguments>
ok 78 - for-each-repo can handle -h
expecting success of 0012.79 'format-patch can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git format-patch [<options>] [<since> | <revision-range>]
ok 79 - format-patch can handle -h
expecting success of 0012.80 'fsck can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git fsck [--tags] [--root] [--unreachable] [--cache] [--no-reflogs]
ok 80 - fsck can handle -h
expecting success of 0012.81 'fsck-objects can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git fsck [--tags] [--root] [--unreachable] [--cache] [--no-reflogs]
ok 81 - fsck-objects can handle -h
expecting success of 0012.82 'fsmonitor--daemon can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git fsmonitor--daemon start [<options>]
ok 82 - fsmonitor--daemon can handle -h
expecting success of 0012.83 'gc can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git gc [<options>]
ok 83 - gc can handle -h
expecting success of 0012.84 'get-tar-commit-id can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git get-tar-commit-id
ok 84 - get-tar-commit-id can handle -h
expecting success of 0012.85 'grep can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git grep [<options>] [-e] <pattern> [<rev>...] [[--] <path>...]
ok 85 - grep can handle -h
expecting success of 0012.86 'hash-object can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git hash-object [-t <type>] [-w] [--path=<file> | --no-filters]
ok 86 - hash-object can handle -h
expecting success of 0012.87 'help can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git help [-a|--all] [--[no-]verbose] [--[no-]external-commands] [--[no-]aliases]
ok 87 - help can handle -h
expecting success of 0012.88 'hook can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git hook run [--ignore-missing] [--to-stdin=<path>] <hook-name> [-- <hook-args>]
ok 88 - hook can handle -h
expecting success of 0012.89 'index-pack can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git index-pack [-v] [-o <index-file>] [--keep | --keep=<msg>] [--[no-]rev-index] [--verify] [--strict] (<pack-file> | --stdin [--fix-thin] [<pack-file>])
ok 89 - index-pack can handle -h
expecting success of 0012.90 'init can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git init [-q | --quiet] [--bare] [--template=<template-directory>]
ok 90 - init can handle -h
expecting success of 0012.91 'init-db can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git init [-q | --quiet] [--bare] [--template=<template-directory>]
ok 91 - init-db can handle -h
expecting success of 0012.92 'interpret-trailers can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git interpret-trailers [--in-place] [--trim-empty]
ok 92 - interpret-trailers can handle -h
expecting success of 0012.93 'log can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git log [<options>] [<revision-range>] [[--] <path>...]
ok 93 - log can handle -h
expecting success of 0012.94 'ls-files can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git ls-files [<options>] [<file>...]
ok 94 - ls-files can handle -h
expecting success of 0012.95 'ls-remote can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git ls-remote [--heads] [--tags] [--refs] [--upload-pack=<exec>]
ok 95 - ls-remote can handle -h
expecting success of 0012.96 'ls-tree can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git ls-tree [<options>] <tree-ish> [<path>...]
ok 96 - ls-tree can handle -h
expecting success of 0012.97 'mailinfo can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git mailinfo [<options>] <msg> <patch> < mail >info
ok 97 - mailinfo can handle -h
expecting success of 0012.98 'mailsplit can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git mailsplit [-d<prec>] [-f<n>] [-b] [--keep-cr] -o<directory> [(<mbox>|<Maildir>)...]
ok 98 - mailsplit can handle -h
expecting success of 0012.99 'maintenance can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git maintenance <subcommand> [<options>]
ok 99 - maintenance can handle -h
expecting success of 0012.100 'merge can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git merge [<options>] [<commit>...]
ok 100 - merge can handle -h
expecting success of 0012.101 'merge-base can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git merge-base [-a | --all] <commit> <commit>...
ok 101 - merge-base can handle -h
expecting success of 0012.102 'merge-file can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git merge-file [<options>] [-L <name1> [-L <orig> [-L <name2>]]] <file1> <orig-file> <file2>
ok 102 - merge-file can handle -h
expecting success of 0012.103 'merge-index can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git merge-index [-o] [-q] <merge-program> (-a | [--] [<filename>...])
ok 103 - merge-index can handle -h
expecting success of 0012.104 'merge-ours can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git merge-ours <base>... -- HEAD <remote>...
ok 104 - merge-ours can handle -h
expecting success of 0012.105 'merge-recursive can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git merge-recursive <base>... -- <head> <remote> ...
ok 105 - merge-recursive can handle -h
expecting success of 0012.106 'merge-recursive-ours can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git merge-recursive-ours <base>... -- <head> <remote> ...
ok 106 - merge-recursive-ours can handle -h
expecting success of 0012.107 'merge-recursive-theirs can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git merge-recursive-theirs <base>... -- <head> <remote> ...
ok 107 - merge-recursive-theirs can handle -h
expecting success of 0012.108 'merge-subtree can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git merge-subtree <base>... -- <head> <remote> ...
ok 108 - merge-subtree can handle -h
expecting success of 0012.109 'merge-tree can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git merge-tree [--write-tree] [<options>] <branch1> <branch2>
ok 109 - merge-tree can handle -h
expecting success of 0012.110 'mktag can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git mktag
ok 110 - mktag can handle -h
expecting success of 0012.111 'mktree can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git mktree [-z] [--missing] [--batch]
ok 111 - mktree can handle -h
expecting success of 0012.112 'multi-pack-index can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git multi-pack-index [<options>] write [--preferred-pack=<pack>][--refs-snapshot=<path>]
ok 112 - multi-pack-index can handle -h
expecting success of 0012.113 'mv can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git mv [<options>] <source>... <destination>
ok 113 - mv can handle -h
expecting success of 0012.114 'name-rev can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git name-rev [<options>] <commit>...
ok 114 - name-rev can handle -h
expecting success of 0012.115 'notes can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git notes [--ref <notes-ref>] [list [<object>]]
ok 115 - notes can handle -h
expecting success of 0012.116 'pack-objects can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git pack-objects --stdout [<options>] [< <ref-list> | < <object-list>]
ok 116 - pack-objects can handle -h
expecting success of 0012.117 'pack-redundant can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git pack-redundant [--verbose] [--alt-odb] (--all | <pack-filename>...)
ok 117 - pack-redundant can handle -h
expecting success of 0012.118 'pack-refs can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git pack-refs [--all] [--no-prune] [--include <pattern>] [--exclude <pattern>]
ok 118 - pack-refs can handle -h
expecting success of 0012.119 'patch-id can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git patch-id [--stable | --unstable | --verbatim]
ok 119 - patch-id can handle -h
expecting success of 0012.120 'pickaxe can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git blame [<options>] [<rev-opts>] [<rev>] [--] <file>
ok 120 - pickaxe can handle -h
expecting success of 0012.121 'prune can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git prune [-n] [-v] [--progress] [--expire <time>] [--] [<head>...]
ok 121 - prune can handle -h
expecting success of 0012.122 'prune-packed can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git prune-packed [-n | --dry-run] [-q | --quiet]
ok 122 - prune-packed can handle -h
expecting success of 0012.123 'pull can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git pull [<options>] [<repository> [<refspec>...]]
ok 123 - pull can handle -h
expecting success of 0012.124 'push can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git push [<options>] [<repository> [<refspec>...]]
ok 124 - push can handle -h
expecting success of 0012.125 'range-diff can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git range-diff [<options>] <old-base>..<old-tip> <new-base>..<new-tip>
ok 125 - range-diff can handle -h
expecting success of 0012.126 'read-tree can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git read-tree [(-m [--trivial] [--aggressive] | --reset | --prefix=<prefix>)
ok 126 - read-tree can handle -h
expecting success of 0012.127 'rebase can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git rebase [-i] [options] [--exec <cmd>] [--onto <newbase> | --keep-base] [<upstream> [<branch>]]
ok 127 - rebase can handle -h
expecting success of 0012.128 'receive-pack can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git receive-pack <git-dir>
ok 128 - receive-pack can handle -h
expecting success of 0012.129 'reflog can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git reflog [show] [<log-options>] [<ref>]
ok 129 - reflog can handle -h
expecting success of 0012.130 'remote can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git remote [-v | --verbose]
ok 130 - remote can handle -h
expecting success of 0012.131 'remote-ext can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git remote-ext <remote> <url>
ok 131 - remote-ext can handle -h
expecting success of 0012.132 'remote-fd can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git remote-fd <remote> <url>
ok 132 - remote-fd can handle -h
expecting success of 0012.133 'repack can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git repack [<options>]
ok 133 - repack can handle -h
expecting success of 0012.134 'replace can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git replace [-f] <object> <replacement>
ok 134 - replace can handle -h
expecting success of 0012.135 'rerere can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git rerere [clear | forget <pathspec>... | diff | status | remaining | gc]
ok 135 - rerere can handle -h
expecting success of 0012.136 'reset can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git reset [--mixed | --soft | --hard | --merge | --keep] [-q] [<commit>]
ok 136 - reset can handle -h
expecting success of 0012.137 'restore can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git restore [<options>] [--source=<branch>] <file>...
ok 137 - restore can handle -h
expecting success of 0012.138 'rev-list can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git rev-list [<options>] <commit>... [--] [<path>...]
--disk-usage[=human]
ok 138 - rev-list can handle -h
expecting success of 0012.139 'rev-parse can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git rev-parse --parseopt [<options>] -- [<args>...]
Run "git rev-parse --parseopt -h" for more information on the first usage.
ok 139 - rev-parse can handle -h
expecting success of 0012.140 'revert can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git revert [--[no-]edit] [-n] [-m <parent-number>] [-s] [-S[<keyid>]] <commit>...
ok 140 - revert can handle -h
expecting success of 0012.141 'rm can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git rm [-f | --force] [-n] [-r] [--cached] [--ignore-unmatch]
ok 141 - rm can handle -h
expecting success of 0012.142 'send-pack can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git send-pack [--mirror] [--dry-run] [--force]
ok 142 - send-pack can handle -h
expecting success of 0012.143 'shortlog can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git shortlog [<options>] [<revision-range>] [[--] <path>...]
ok 143 - shortlog can handle -h
expecting success of 0012.144 'show can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git log [<options>] [<revision-range>] [[--] <path>...]
ok 144 - show can handle -h
expecting success of 0012.145 'show-branch can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git show-branch [-a | --all] [-r | --remotes] [--topo-order | --date-order]
ok 145 - show-branch can handle -h
expecting success of 0012.146 'show-index can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git show-index [--object-format=<hash-algorithm>]
ok 146 - show-index can handle -h
expecting success of 0012.147 'show-ref can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git show-ref [-q | --quiet] [--verify] [--head] [-d | --dereference]
ok 147 - show-ref can handle -h
expecting success of 0012.148 'sparse-checkout can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git sparse-checkout (init | list | set | add | reapply | disable | check-rules) [<options>]
ok 148 - sparse-checkout can handle -h
expecting success of 0012.149 'stage can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git add [<options>] [--] <pathspec>...
ok 149 - stage can handle -h
expecting success of 0012.150 'stash can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git stash list [<log-options>]
ok 150 - stash can handle -h
expecting success of 0012.151 'status can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git status [<options>] [--] [<pathspec>...]
ok 151 - status can handle -h
expecting success of 0012.152 'stripspace can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git stripspace [-s | --strip-comments]
ok 152 - stripspace can handle -h
expecting success of 0012.153 'submodule--helper can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git submodule--helper <command>
ok 153 - submodule--helper can handle -h
expecting success of 0012.154 'switch can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git switch [<options>] [<branch>]
ok 154 - switch can handle -h
expecting success of 0012.155 'symbolic-ref can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git symbolic-ref [-m <reason>] <name> <ref>
ok 155 - symbolic-ref can handle -h
expecting success of 0012.156 'tag can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git tag [-a | -s | -u <key-id>] [-f] [-m <msg> | -F <file>] [-e]
ok 156 - tag can handle -h
expecting success of 0012.157 'unpack-file can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git unpack-file <blob>
ok 157 - unpack-file can handle -h
expecting success of 0012.158 'unpack-objects can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git unpack-objects [-n] [-q] [-r] [--strict]
ok 158 - unpack-objects can handle -h
expecting success of 0012.159 'update-index can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git update-index [<options>] [--] [<file>...]
ok 159 - update-index can handle -h
expecting success of 0012.160 'update-ref can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git update-ref [<options>] -d <refname> [<old-val>]
ok 160 - update-ref can handle -h
expecting success of 0012.161 'update-server-info can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git update-server-info [-f | --force]
ok 161 - update-server-info can handle -h
expecting success of 0012.162 'upload-archive can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git upload-archive <repository>
ok 162 - upload-archive can handle -h
expecting success of 0012.163 'upload-archive--writer can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git upload-archive <repository>
ok 163 - upload-archive--writer can handle -h
expecting success of 0012.164 'upload-pack can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git-upload-pack [--[no-]strict] [--timeout=<n>] [--stateless-rpc]
ok 164 - upload-pack can handle -h
expecting success of 0012.165 'var can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git var (-l | <variable>)
ok 165 - var can handle -h
expecting success of 0012.166 'verify-commit can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git verify-commit [-v | --verbose] [--raw] <commit>...
ok 166 - verify-commit can handle -h
expecting success of 0012.167 'verify-pack can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git verify-pack [-v | --verbose] [-s | --stat-only] [--] <pack>.idx...
ok 167 - verify-pack can handle -h
expecting success of 0012.168 'verify-tag can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git verify-tag [-v | --verbose] [--format=<format>] [--raw] <tag>...
ok 168 - verify-tag can handle -h
expecting success of 0012.169 'version can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git version [--build-options]
ok 169 - version can handle -h
expecting success of 0012.170 'whatchanged can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git log [<options>] [<revision-range>] [[--] <path>...]
ok 170 - whatchanged can handle -h
expecting success of 0012.171 'worktree can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git worktree add [-f] [--detach] [--checkout] [--lock [--reason <string>]]
ok 171 - worktree can handle -h
expecting success of 0012.172 'write-tree can handle -h':
(
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
test_expect_code 129 git -C sub $builtin -h >output 2>&1
) &&
test_i18ngrep usage output
usage: git write-tree [--missing-ok] [--prefix=<prefix>/]
ok 172 - write-tree can handle -h
# passed all 172 test(s)
1..172
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0013-sha1dc.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0013-sha1dc/.git/
checking prerequisite: SHA1_IS_SHA1DC
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SHA1_IS_SHA1DC" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SHA1_IS_SHA1DC" &&test-tool sha1-is-sha1dc
)
prerequisite SHA1_IS_SHA1DC ok
expecting success of 0013.1 'test-sha1 detects shattered pdf':
test_must_fail test-tool sha1 <"$TEST_DATA/shattered-1.pdf" 2>err &&
test_i18ngrep collision err &&
grep 38762cf7f55934b34d179ae6a4c80cadccbb7f0a err
fatal: SHA-1 appears to be part of a collision attack: 38762cf7f55934b34d179ae6a4c80cadccbb7f0a
fatal: SHA-1 appears to be part of a collision attack: 38762cf7f55934b34d179ae6a4c80cadccbb7f0a
ok 1 - test-sha1 detects shattered pdf
# passed all 1 test(s)
1..1
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0014-alias.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0014-alias/.git/
expecting success of 0014.1 'nested aliases - internal execution':
git config alias.nested-internal-1 nested-internal-2 &&
git config alias.nested-internal-2 status &&
git nested-internal-1 >output &&
test_i18ngrep "^On branch " output
On branch master
ok 1 - nested aliases - internal execution
expecting success of 0014.2 'nested aliases - mixed execution':
git config alias.nested-external-1 nested-external-2 &&
git config alias.nested-external-2 "!git nested-external-3" &&
git config alias.nested-external-3 status &&
git nested-external-1 >output &&
test_i18ngrep "^On branch " output
On branch master
ok 2 - nested aliases - mixed execution
expecting success of 0014.3 'looping aliases - internal execution':
git config alias.loop-internal-1 loop-internal-2 &&
git config alias.loop-internal-2 loop-internal-3 &&
git config alias.loop-internal-3 loop-internal-2 &&
test_must_fail git loop-internal-1 2>output &&
test_i18ngrep "^fatal: alias loop detected: expansion of" output
fatal: alias loop detected: expansion of 'loop-internal-1' does not terminate:
ok 3 - looping aliases - internal execution
expecting success of 0014.4 'run-command formats empty args properly':
test_must_fail env GIT_TRACE=1 git frotz a "" b " " c 2>actual.raw &&
sed -ne "/run_command:/s/.*trace: run_command: //p" actual.raw >actual &&
echo "git-frotz a '' b ' ' c" >expect &&
test_cmp expect actual
ok 4 - run-command formats empty args properly
# passed all 4 test(s)
1..4
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0015-hash.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0015-hash/.git/
expecting success of 0015.1 'test basic SHA-1 hash values':
test-tool sha1 </dev/null >actual &&
grep da39a3ee5e6b4b0d3255bfef95601890afd80709 actual &&
printf "a" | test-tool sha1 >actual &&
grep 86f7e437faa5a7fce15d1ddcb9eaeaea377667b8 actual &&
printf "abc" | test-tool sha1 >actual &&
grep a9993e364706816aba3e25717850c26c9cd0d89d actual &&
printf "message digest" | test-tool sha1 >actual &&
grep c12252ceda8be8994d5fa0290a47231c1d16aae3 actual &&
printf "abcdefghijklmnopqrstuvwxyz" | test-tool sha1 >actual &&
grep 32d10c7b8cf96570ca04ce37f2a19d84240d3a89 actual &&
perl -e "$| = 1; print q{aaaaaaaaaa} for 1..100000;" |
test-tool sha1 >actual &&
grep 34aa973cd4c4daa4f61eeb2bdbad27316534016f actual &&
printf "blob 0\0" | test-tool sha1 >actual &&
grep e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 actual &&
printf "blob 3\0abc" | test-tool sha1 >actual &&
grep f2ba8f84ab5c1bce84a7b441cb1959cfc7093b7f actual &&
printf "tree 0\0" | test-tool sha1 >actual &&
grep 4b825dc642cb6eb9a060e54bf8d69288fbee4904 actual
da39a3ee5e6b4b0d3255bfef95601890afd80709
86f7e437faa5a7fce15d1ddcb9eaeaea377667b8
a9993e364706816aba3e25717850c26c9cd0d89d
c12252ceda8be8994d5fa0290a47231c1d16aae3
32d10c7b8cf96570ca04ce37f2a19d84240d3a89
34aa973cd4c4daa4f61eeb2bdbad27316534016f
e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
f2ba8f84ab5c1bce84a7b441cb1959cfc7093b7f
4b825dc642cb6eb9a060e54bf8d69288fbee4904
ok 1 - test basic SHA-1 hash values
expecting success of 0015.2 'test basic SHA-256 hash values':
test-tool sha256 </dev/null >actual &&
grep e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 actual &&
printf "a" | test-tool sha256 >actual &&
grep ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb actual &&
printf "abc" | test-tool sha256 >actual &&
grep ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad actual &&
printf "message digest" | test-tool sha256 >actual &&
grep f7846f55cf23e14eebeab5b4e1550cad5b509e3348fbc4efa3a1413d393cb650 actual &&
printf "abcdefghijklmnopqrstuvwxyz" | test-tool sha256 >actual &&
grep 71c480df93d6ae2f1efad1447c66c9525e316218cf51fc8d9ed832f2daf18b73 actual &&
# Try to exercise the chunking code by turning autoflush on.
perl -e "$| = 1; print q{aaaaaaaaaa} for 1..100000;" |
test-tool sha256 >actual &&
grep cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0 actual &&
perl -e "$| = 1; print q{abcdefghijklmnopqrstuvwxyz} for 1..100000;" |
test-tool sha256 >actual &&
grep e406ba321ca712ad35a698bf0af8d61fc4dc40eca6bdcea4697962724ccbde35 actual &&
printf "blob 0\0" | test-tool sha256 >actual &&
grep 473a0f4c3be8a93681a267e3b1e9a7dcda1185436fe141f7749120a303721813 actual &&
printf "blob 3\0abc" | test-tool sha256 >actual &&
grep c1cf6e465077930e88dc5136641d402f72a229ddd996f627d60e9639eaba35a6 actual &&
printf "tree 0\0" | test-tool sha256 >actual &&
grep 6ef19b41225c5369f1c104d45d8d85efa9b057b53b14b4b9b939dd74decc5321 actual
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
f7846f55cf23e14eebeab5b4e1550cad5b509e3348fbc4efa3a1413d393cb650
71c480df93d6ae2f1efad1447c66c9525e316218cf51fc8d9ed832f2daf18b73
cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0
e406ba321ca712ad35a698bf0af8d61fc4dc40eca6bdcea4697962724ccbde35
473a0f4c3be8a93681a267e3b1e9a7dcda1185436fe141f7749120a303721813
c1cf6e465077930e88dc5136641d402f72a229ddd996f627d60e9639eaba35a6
6ef19b41225c5369f1c104d45d8d85efa9b057b53b14b4b9b939dd74decc5321
ok 2 - test basic SHA-256 hash values
# passed all 2 test(s)
1..2
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0016-oidmap.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0016-oidmap/.git/
expecting success of 0016.1 'setup':
test_commit one &&
test_commit two &&
test_commit three &&
test_commit four
[master (root-commit) d79ce16] one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 one.t
[master 139b20d] two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 two.t
[master 7c7cd71] three
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 three.t
[master fd8d77e] four
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 four.t
ok 1 - setup
expecting success of 0016.2 'put':
test_oidmap "put one 1
put two 2
put invalidOid 4
put three 3" "NULL
NULL
Unknown oid: invalidOid
NULL"
ok 2 - put
expecting success of 0016.3 'replace':
test_oidmap "put one 1
put two 2
put three 3
put invalidOid 4
put two deux
put one un" "NULL
NULL
NULL
Unknown oid: invalidOid
2
1"
ok 3 - replace
expecting success of 0016.4 'get':
test_oidmap "put one 1
put two 2
put three 3
get two
get four
get invalidOid
get one" "NULL
NULL
NULL
2
NULL
Unknown oid: invalidOid
1"
ok 4 - get
expecting success of 0016.5 'remove':
test_oidmap "put one 1
put two 2
put three 3
remove one
remove two
remove invalidOid
remove four" "NULL
NULL
NULL
1
2
Unknown oid: invalidOid
NULL"
ok 5 - remove
expecting success of 0016.6 'iterate':
test-tool oidmap >actual.raw <<-\EOF &&
put one 1
put two 2
put three 3
iterate
EOF
# sort "expect" too so we do not rely on the order of particular oids
sort >expect <<-EOF &&
NULL
NULL
NULL
$(git rev-parse one) 1
$(git rev-parse two) 2
$(git rev-parse three) 3
EOF
sort <actual.raw >actual &&
test_cmp expect actual
ok 6 - iterate
# passed all 6 test(s)
1..6
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0017-env-helper.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0017-env-helper/.git/
expecting success of 0017.1 'test-tool env-helper usage':
test_must_fail test-tool env-helper &&
test_must_fail test-tool env-helper --type=bool &&
test_must_fail test-tool env-helper --type=ulong &&
test_must_fail test-tool env-helper --type=bool &&
test_must_fail test-tool env-helper --type=bool --default &&
test_must_fail test-tool env-helper --type=bool --default= &&
test_must_fail test-tool env-helper --defaultxyz
usage: test-tool env-helper --type=[bool|ulong] <options> <env-var>
--type <type> value is given this type
--default <value> default for git_env_*(...) to fall back on
--exit-code be quiet only use git_env_*() value as exit code
usage: test-tool env-helper --type=[bool|ulong] <options> <env-var>
--type <type> value is given this type
--default <value> default for git_env_*(...) to fall back on
--exit-code be quiet only use git_env_*() value as exit code
usage: test-tool env-helper --type=[bool|ulong] <options> <env-var>
--type <type> value is given this type
--default <value> default for git_env_*(...) to fall back on
--exit-code be quiet only use git_env_*() value as exit code
usage: test-tool env-helper --type=[bool|ulong] <options> <env-var>
--type <type> value is given this type
--default <value> default for git_env_*(...) to fall back on
--exit-code be quiet only use git_env_*() value as exit code
error: option `default' requires a value
usage: test-tool env-helper --type=[bool|ulong] <options> <env-var>
--type <type> value is given this type
--default <value> default for git_env_*(...) to fall back on
--exit-code be quiet only use git_env_*() value as exit code
usage: test-tool env-helper --type=[bool|ulong] <options> <env-var>
--type <type> value is given this type
--default <value> default for git_env_*(...) to fall back on
--exit-code be quiet only use git_env_*() value as exit code
ok 1 - test-tool env-helper usage
expecting success of 0017.2 'test-tool env-helper bad default values':
test_must_fail test-tool env-helper --type=bool --default=1xyz MISSING &&
test_must_fail test-tool env-helper --type=ulong --default=1xyz MISSING
error: option `--default' expects a boolean value with `--type=bool`, not `1xyz`
usage: test-tool env-helper --type=[bool|ulong] <options> <env-var>
--type <type> value is given this type
--default <value> default for git_env_*(...) to fall back on
--exit-code be quiet only use git_env_*() value as exit code
error: option `--default' expects an unsigned long value with `--type=ulong`, not `1xyz`
usage: test-tool env-helper --type=[bool|ulong] <options> <env-var>
--type <type> value is given this type
--default <value> default for git_env_*(...) to fall back on
--exit-code be quiet only use git_env_*() value as exit code
ok 2 - test-tool env-helper bad default values
expecting success of 0017.3 'test-tool env-helper --type=bool':
# Test various --default bool values
echo true >expected &&
test-tool env-helper --type=bool --default=1 MISSING >actual &&
test_cmp expected actual &&
test-tool env-helper --type=bool --default=yes MISSING >actual &&
test_cmp expected actual &&
test-tool env-helper --type=bool --default=true MISSING >actual &&
test_cmp expected actual &&
echo false >expected &&
test_must_fail test-tool env-helper --type=bool --default=0 MISSING >actual &&
test_cmp expected actual &&
test_must_fail test-tool env-helper --type=bool --default=no MISSING >actual &&
test_cmp expected actual &&
test_must_fail test-tool env-helper --type=bool --default=false MISSING >actual &&
test_cmp expected actual &&
# No output with --exit-code
test-tool env-helper --type=bool --default=true --exit-code MISSING >actual.out 2>actual.err &&
test_must_be_empty actual.out &&
test_must_be_empty actual.err &&
test_must_fail test-tool env-helper --type=bool --default=false --exit-code MISSING >actual.out 2>actual.err &&
test_must_be_empty actual.out &&
test_must_be_empty actual.err &&
# Existing variable
EXISTS=true test-tool env-helper --type=bool --default=false --exit-code EXISTS >actual.out 2>actual.err &&
test_must_be_empty actual.out &&
test_must_be_empty actual.err &&
test_must_fail \
env EXISTS=false \
test-tool env-helper --type=bool --default=true --exit-code EXISTS >actual.out 2>actual.err &&
test_must_be_empty actual.out &&
test_must_be_empty actual.err
ok 3 - test-tool env-helper --type=bool
expecting success of 0017.4 'test-tool env-helper --type=ulong':
echo 1234567890 >expected &&
test-tool env-helper --type=ulong --default=1234567890 MISSING >actual.out 2>actual.err &&
test_cmp expected actual.out &&
test_must_be_empty actual.err &&
echo 0 >expected &&
test_must_fail test-tool env-helper --type=ulong --default=0 MISSING >actual &&
test_cmp expected actual &&
test-tool env-helper --type=ulong --default=1234567890 --exit-code MISSING >actual.out 2>actual.err &&
test_must_be_empty actual.out &&
test_must_be_empty actual.err &&
EXISTS=1234567890 test-tool env-helper --type=ulong --default=0 EXISTS --exit-code >actual.out 2>actual.err &&
test_must_be_empty actual.out &&
test_must_be_empty actual.err &&
echo 1234567890 >expected &&
EXISTS=1234567890 test-tool env-helper --type=ulong --default=0 EXISTS >actual.out 2>actual.err &&
test_cmp expected actual.out &&
test_must_be_empty actual.err
ok 4 - test-tool env-helper --type=ulong
expecting success of 0017.5 'test-tool env-helper reads config thanks to trace2':
mkdir home &&
git config -f home/.gitconfig include.path cycle &&
git config -f home/cycle include.path .gitconfig &&
test_must_fail \
env HOME="$(pwd)/home" \
git config -l 2>err &&
grep "exceeded maximum include depth" err &&
test_must_fail \
env HOME="$(pwd)/home" GIT_TEST_ENV_HELPER=true \
test-tool -C cycle env-helper --type=bool --default=0 --exit-code GIT_TEST_ENV_HELPER 2>err &&
grep "exceeded maximum include depth" err
fatal: exceeded maximum include depth (10) while including
fatal: exceeded maximum include depth (10) while including
ok 5 - test-tool env-helper reads config thanks to trace2
# passed all 5 test(s)
1..5
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0018-advice.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0018-advice/.git/
expecting success of 0018.1 'advice should be printed when config variable is unset':
cat >expect <<-\EOF &&
hint: This is a piece of advice
hint: Disable this message with "git config advice.nestedTag false"
EOF
test-tool advise "This is a piece of advice" 2>actual &&
test_cmp expect actual
ok 1 - advice should be printed when config variable is unset
expecting success of 0018.2 'advice should be printed when config variable is set to true':
cat >expect <<-\EOF &&
hint: This is a piece of advice
hint: Disable this message with "git config advice.nestedTag false"
EOF
test_config advice.nestedTag true &&
test-tool advise "This is a piece of advice" 2>actual &&
test_cmp expect actual
ok 2 - advice should be printed when config variable is set to true
expecting success of 0018.3 'advice should not be printed when config variable is set to false':
test_config advice.nestedTag false &&
test-tool advise "This is a piece of advice" 2>actual &&
test_must_be_empty actual
ok 3 - advice should not be printed when config variable is set to false
# passed all 3 test(s)
1..3
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0008-ignores.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0008-ignores/.git/
expecting success of 0008.1 'setup':
init_vars &&
mkdir -p a/b/ignored-dir a/submodule b &&
if test_have_prereq SYMLINKS
then
ln -s b a/symlink
fi &&
(
cd a/submodule &&
git init &&
echo a >a &&
git add a &&
git commit -m"commit in submodule"
) &&
git add a/submodule &&
cat <<-\EOF >.gitignore &&
one
ignored-*
top-level-dir/
EOF
for dir in . a
do
: >$dir/not-ignored &&
: >$dir/ignored-and-untracked &&
: >$dir/ignored-but-in-index || return 1
done &&
git add -f ignored-but-in-index a/ignored-but-in-index &&
cat <<-\EOF >a/.gitignore &&
two*
*three
EOF
cat <<-\EOF >a/b/.gitignore &&
four
five
# this comment should affect the line numbers
six
ignored-dir/
# and so should this blank line:
!on*
!two
EOF
echo "seven" >a/b/ignored-dir/.gitignore &&
test -n "$HOME" &&
cat <<-\EOF >"$global_excludes" &&
globalone
!globaltwo
globalthree
EOF
mkdir .git/info &&
cat <<-\EOF >.git/info/exclude
per-repo
EOF
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0008-ignores/a/submodule/.git/
[master (root-commit) d93acdf] commit in submodule
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 a
warning: adding embedded git repository: a/submodule
hint: You've added another git repository inside your current repository.
hint: Clones of the outer repository will not contain the contents of
hint: the embedded repository and will not know how to obtain it.
hint: If you meant to add a submodule, use:
hint:
hint: git submodule add <url> a/submodule
hint:
hint: If you added this path by mistake, you can remove it from the
hint: index with:
hint:
hint: git rm --cached a/submodule
hint:
hint: See "git help submodule" for more information.
ok 1 - setup
expecting success of 0008.2 '. corner-case':
expect "$expect" &&
eval "$code"
ok 2 - . corner-case
expecting success of 0008.3 '. corner-case with -q':
expect '' &&
test_check_ignore . 1
ok 3 - . corner-case with -q
expecting success of 0008.4 '. corner-case with --quiet':
expect '' &&
test_check_ignore . 1
ok 4 - . corner-case with --quiet
expecting success of 0008.5 '. corner-case with -v':
expect '' &&
test_check_ignore . 1
ok 5 - . corner-case with -v
expecting success of 0008.6 '. corner-case with -v -n':
expect ':: .' &&
test_check_ignore . 1
ok 6 - . corner-case with -v -n
expecting success of 0008.7 '. corner-case with -v --non-matching':
expect ':: .' &&
test_check_ignore . 1
ok 7 - . corner-case with -v --non-matching
expecting success of 0008.8 '. corner-case with --verbose':
expect '' &&
test_check_ignore . 1
ok 8 - . corner-case with --verbose
expecting success of 0008.9 '. corner-case with --verbose -n':
expect ':: .' &&
test_check_ignore . 1
ok 9 - . corner-case with --verbose -n
expecting success of 0008.10 '. corner-case with --verbose --non-matching':
expect ':: .' &&
test_check_ignore . 1
ok 10 - . corner-case with --verbose --non-matching
expecting success of 0008.11 'empty command line':
expect "$expect" &&
eval "$code"
fatal: no path specified
ok 11 - empty command line
expecting success of 0008.12 'empty command line with -q':
expect '' &&
test_check_ignore "" 128 &&
stderr_contains "fatal: no path specified"
fatal: no path specified
ok 12 - empty command line with -q
expecting success of 0008.13 'empty command line with --quiet':
expect '' &&
test_check_ignore "" 128 &&
stderr_contains "fatal: no path specified"
fatal: no path specified
ok 13 - empty command line with --quiet
expecting success of 0008.14 'empty command line with -v':
expect '' &&
test_check_ignore "" 128 &&
stderr_contains "fatal: no path specified"
fatal: no path specified
ok 14 - empty command line with -v
expecting success of 0008.15 'empty command line with -v -n':
expect '' &&
test_check_ignore "" 128 &&
stderr_contains "fatal: no path specified"
fatal: no path specified
ok 15 - empty command line with -v -n
expecting success of 0008.16 'empty command line with -v --non-matching':
expect '' &&
test_check_ignore "" 128 &&
stderr_contains "fatal: no path specified"
fatal: no path specified
ok 16 - empty command line with -v --non-matching
expecting success of 0008.17 'empty command line with --verbose':
expect '' &&
test_check_ignore "" 128 &&
stderr_contains "fatal: no path specified"
fatal: no path specified
ok 17 - empty command line with --verbose
expecting success of 0008.18 'empty command line with --verbose -n':
expect '' &&
test_check_ignore "" 128 &&
stderr_contains "fatal: no path specified"
fatal: no path specified
ok 18 - empty command line with --verbose -n
expecting success of 0008.19 'empty command line with --verbose --non-matching':
expect '' &&
test_check_ignore "" 128 &&
stderr_contains "fatal: no path specified"
fatal: no path specified
ok 19 - empty command line with --verbose --non-matching
expecting success of 0008.20 '--stdin with empty STDIN':
expect "$expect" &&
eval "$code"
ok 20 - --stdin with empty STDIN
expecting success of 0008.21 '--stdin with empty STDIN with -q':
expect '' &&
test_check_ignore "--stdin" 1 </dev/null &&
test_stderr ""
ok 21 - --stdin with empty STDIN with -q
expecting success of 0008.22 '--stdin with empty STDIN with --quiet':
expect '' &&
test_check_ignore "--stdin" 1 </dev/null &&
test_stderr ""
ok 22 - --stdin with empty STDIN with --quiet
expecting success of 0008.23 '--stdin with empty STDIN with -v':
expect '' &&
test_check_ignore "--stdin" 1 </dev/null &&
test_stderr ""
ok 23 - --stdin with empty STDIN with -v
expecting success of 0008.24 '--stdin with empty STDIN with -v -n':
expect '' &&
test_check_ignore "--stdin" 1 </dev/null &&
test_stderr ""
ok 24 - --stdin with empty STDIN with -v -n
expecting success of 0008.25 '--stdin with empty STDIN with -v --non-matching':
expect '' &&
test_check_ignore "--stdin" 1 </dev/null &&
test_stderr ""
ok 25 - --stdin with empty STDIN with -v --non-matching
expecting success of 0008.26 '--stdin with empty STDIN with --verbose':
expect '' &&
test_check_ignore "--stdin" 1 </dev/null &&
test_stderr ""
ok 26 - --stdin with empty STDIN with --verbose
expecting success of 0008.27 '--stdin with empty STDIN with --verbose -n':
expect '' &&
test_check_ignore "--stdin" 1 </dev/null &&
test_stderr ""
ok 27 - --stdin with empty STDIN with --verbose -n
expecting success of 0008.28 '--stdin with empty STDIN with --verbose --non-matching':
expect '' &&
test_check_ignore "--stdin" 1 </dev/null &&
test_stderr ""
ok 28 - --stdin with empty STDIN with --verbose --non-matching
expecting success of 0008.29 '-q with multiple args':
expect "" &&
test_check_ignore "-q one two" 128 &&
stderr_contains "fatal: --quiet is only valid with a single pathname"
fatal: --quiet is only valid with a single pathname
ok 29 - -q with multiple args
expecting success of 0008.30 '--quiet with multiple args':
expect "" &&
test_check_ignore "--quiet one two" 128 &&
stderr_contains "fatal: --quiet is only valid with a single pathname"
fatal: --quiet is only valid with a single pathname
ok 30 - --quiet with multiple args
expecting success of 0008.31 '-q -v':
expect '' &&
test_check_ignore '-q -v foo' 128 &&
stderr_contains 'fatal: cannot have both --quiet and --verbose'
fatal: cannot have both --quiet and --verbose
ok 31 - -q -v
expecting success of 0008.32 '--quiet -v':
expect '' &&
test_check_ignore '--quiet -v foo' 128 &&
stderr_contains 'fatal: cannot have both --quiet and --verbose'
fatal: cannot have both --quiet and --verbose
ok 32 - --quiet -v
expecting success of 0008.33 '-q --verbose':
expect '' &&
test_check_ignore '-q --verbose foo' 128 &&
stderr_contains 'fatal: cannot have both --quiet and --verbose'
fatal: cannot have both --quiet and --verbose
ok 33 - -q --verbose
expecting success of 0008.34 '--quiet --verbose':
expect '' &&
test_check_ignore '--quiet --verbose foo' 128 &&
stderr_contains 'fatal: cannot have both --quiet and --verbose'
fatal: cannot have both --quiet and --verbose
ok 34 - --quiet --verbose
expecting success of 0008.35 '--quiet with multiple args':
expect "" &&
test_check_ignore "--quiet one two" 128 &&
stderr_contains "fatal: --quiet is only valid with a single pathname"
fatal: --quiet is only valid with a single pathname
ok 35 - --quiet with multiple args
expecting success of 0008.36 'erroneous use of --':
expect "$expect" &&
eval "$code"
fatal: no path specified
ok 36 - erroneous use of --
expecting success of 0008.37 'erroneous use of -- with -q':
expect '' &&
test_check_ignore "--" 128 &&
stderr_contains "fatal: no path specified"
fatal: no path specified
ok 37 - erroneous use of -- with -q
expecting success of 0008.38 'erroneous use of -- with --quiet':
expect '' &&
test_check_ignore "--" 128 &&
stderr_contains "fatal: no path specified"
fatal: no path specified
ok 38 - erroneous use of -- with --quiet
expecting success of 0008.39 'erroneous use of -- with -v':
expect '' &&
test_check_ignore "--" 128 &&
stderr_contains "fatal: no path specified"
fatal: no path specified
ok 39 - erroneous use of -- with -v
expecting success of 0008.40 'erroneous use of -- with -v -n':
expect '' &&
test_check_ignore "--" 128 &&
stderr_contains "fatal: no path specified"
fatal: no path specified
ok 40 - erroneous use of -- with -v -n
expecting success of 0008.41 'erroneous use of -- with -v --non-matching':
expect '' &&
test_check_ignore "--" 128 &&
stderr_contains "fatal: no path specified"
fatal: no path specified
ok 41 - erroneous use of -- with -v --non-matching
expecting success of 0008.42 'erroneous use of -- with --verbose':
expect '' &&
test_check_ignore "--" 128 &&
stderr_contains "fatal: no path specified"
fatal: no path specified
ok 42 - erroneous use of -- with --verbose
expecting success of 0008.43 'erroneous use of -- with --verbose -n':
expect '' &&
test_check_ignore "--" 128 &&
stderr_contains "fatal: no path specified"
fatal: no path specified
ok 43 - erroneous use of -- with --verbose -n
expecting success of 0008.44 'erroneous use of -- with --verbose --non-matching':
expect '' &&
test_check_ignore "--" 128 &&
stderr_contains "fatal: no path specified"
fatal: no path specified
ok 44 - erroneous use of -- with --verbose --non-matching
expecting success of 0008.45 '--stdin with superfluous arg':
expect "$expect" &&
eval "$code"
fatal: cannot specify pathnames with --stdin
ok 45 - --stdin with superfluous arg
expecting success of 0008.46 '--stdin with superfluous arg with -q':
expect '' &&
test_check_ignore "--stdin foo" 128 &&
stderr_contains "fatal: cannot specify pathnames with --stdin"
fatal: cannot specify pathnames with --stdin
ok 46 - --stdin with superfluous arg with -q
expecting success of 0008.47 '--stdin with superfluous arg with --quiet':
expect '' &&
test_check_ignore "--stdin foo" 128 &&
stderr_contains "fatal: cannot specify pathnames with --stdin"
fatal: cannot specify pathnames with --stdin
ok 47 - --stdin with superfluous arg with --quiet
expecting success of 0008.48 '--stdin with superfluous arg with -v':
expect '' &&
test_check_ignore "--stdin foo" 128 &&
stderr_contains "fatal: cannot specify pathnames with --stdin"
fatal: cannot specify pathnames with --stdin
ok 48 - --stdin with superfluous arg with -v
expecting success of 0008.49 '--stdin with superfluous arg with -v -n':
expect '' &&
test_check_ignore "--stdin foo" 128 &&
stderr_contains "fatal: cannot specify pathnames with --stdin"
fatal: cannot specify pathnames with --stdin
ok 49 - --stdin with superfluous arg with -v -n
expecting success of 0008.50 '--stdin with superfluous arg with -v --non-matching':
expect '' &&
test_check_ignore "--stdin foo" 128 &&
stderr_contains "fatal: cannot specify pathnames with --stdin"
fatal: cannot specify pathnames with --stdin
ok 50 - --stdin with superfluous arg with -v --non-matching
expecting success of 0008.51 '--stdin with superfluous arg with --verbose':
expect '' &&
test_check_ignore "--stdin foo" 128 &&
stderr_contains "fatal: cannot specify pathnames with --stdin"
fatal: cannot specify pathnames with --stdin
ok 51 - --stdin with superfluous arg with --verbose
expecting success of 0008.52 '--stdin with superfluous arg with --verbose -n':
expect '' &&
test_check_ignore "--stdin foo" 128 &&
stderr_contains "fatal: cannot specify pathnames with --stdin"
fatal: cannot specify pathnames with --stdin
ok 52 - --stdin with superfluous arg with --verbose -n
expecting success of 0008.53 '--stdin with superfluous arg with --verbose --non-matching':
expect '' &&
test_check_ignore "--stdin foo" 128 &&
stderr_contains "fatal: cannot specify pathnames with --stdin"
fatal: cannot specify pathnames with --stdin
ok 53 - --stdin with superfluous arg with --verbose --non-matching
expecting success of 0008.54 '--stdin -z with superfluous arg':
expect "$expect" &&
eval "$code"
fatal: cannot specify pathnames with --stdin
ok 54 - --stdin -z with superfluous arg
expecting success of 0008.55 '--stdin -z with superfluous arg with -q':
expect '' &&
test_check_ignore "--stdin -z foo" 128 &&
stderr_contains "fatal: cannot specify pathnames with --stdin"
fatal: cannot specify pathnames with --stdin
ok 55 - --stdin -z with superfluous arg with -q
expecting success of 0008.56 '--stdin -z with superfluous arg with --quiet':
expect '' &&
test_check_ignore "--stdin -z foo" 128 &&
stderr_contains "fatal: cannot specify pathnames with --stdin"
fatal: cannot specify pathnames with --stdin
ok 56 - --stdin -z with superfluous arg with --quiet
expecting success of 0008.57 '--stdin -z with superfluous arg with -v':
expect '' &&
test_check_ignore "--stdin -z foo" 128 &&
stderr_contains "fatal: cannot specify pathnames with --stdin"
fatal: cannot specify pathnames with --stdin
ok 57 - --stdin -z with superfluous arg with -v
expecting success of 0008.58 '--stdin -z with superfluous arg with -v -n':
expect '' &&
test_check_ignore "--stdin -z foo" 128 &&
stderr_contains "fatal: cannot specify pathnames with --stdin"
fatal: cannot specify pathnames with --stdin
ok 58 - --stdin -z with superfluous arg with -v -n
expecting success of 0008.59 '--stdin -z with superfluous arg with -v --non-matching':
expect '' &&
test_check_ignore "--stdin -z foo" 128 &&
stderr_contains "fatal: cannot specify pathnames with --stdin"
fatal: cannot specify pathnames with --stdin
ok 59 - --stdin -z with superfluous arg with -v --non-matching
expecting success of 0008.60 '--stdin -z with superfluous arg with --verbose':
expect '' &&
test_check_ignore "--stdin -z foo" 128 &&
stderr_contains "fatal: cannot specify pathnames with --stdin"
fatal: cannot specify pathnames with --stdin
ok 60 - --stdin -z with superfluous arg with --verbose
expecting success of 0008.61 '--stdin -z with superfluous arg with --verbose -n':
expect '' &&
test_check_ignore "--stdin -z foo" 128 &&
stderr_contains "fatal: cannot specify pathnames with --stdin"
fatal: cannot specify pathnames with --stdin
ok 61 - --stdin -z with superfluous arg with --verbose -n
expecting success of 0008.62 '--stdin -z with superfluous arg with --verbose --non-matching':
expect '' &&
test_check_ignore "--stdin -z foo" 128 &&
stderr_contains "fatal: cannot specify pathnames with --stdin"
fatal: cannot specify pathnames with --stdin
ok 62 - --stdin -z with superfluous arg with --verbose --non-matching
expecting success of 0008.63 '-z without --stdin':
expect "$expect" &&
eval "$code"
fatal: -z only makes sense with --stdin
ok 63 - -z without --stdin
expecting success of 0008.64 '-z without --stdin with -q':
expect '' &&
test_check_ignore "-z" 128 &&
stderr_contains "fatal: -z only makes sense with --stdin"
fatal: -z only makes sense with --stdin
ok 64 - -z without --stdin with -q
expecting success of 0008.65 '-z without --stdin with --quiet':
expect '' &&
test_check_ignore "-z" 128 &&
stderr_contains "fatal: -z only makes sense with --stdin"
fatal: -z only makes sense with --stdin
ok 65 - -z without --stdin with --quiet
expecting success of 0008.66 '-z without --stdin with -v':
expect '' &&
test_check_ignore "-z" 128 &&
stderr_contains "fatal: -z only makes sense with --stdin"
fatal: -z only makes sense with --stdin
ok 66 - -z without --stdin with -v
expecting success of 0008.67 '-z without --stdin with -v -n':
expect '' &&
test_check_ignore "-z" 128 &&
stderr_contains "fatal: -z only makes sense with --stdin"
fatal: -z only makes sense with --stdin
ok 67 - -z without --stdin with -v -n
expecting success of 0008.68 '-z without --stdin with -v --non-matching':
expect '' &&
test_check_ignore "-z" 128 &&
stderr_contains "fatal: -z only makes sense with --stdin"
fatal: -z only makes sense with --stdin
ok 68 - -z without --stdin with -v --non-matching
expecting success of 0008.69 '-z without --stdin with --verbose':
expect '' &&
test_check_ignore "-z" 128 &&
stderr_contains "fatal: -z only makes sense with --stdin"
fatal: -z only makes sense with --stdin
ok 69 - -z without --stdin with --verbose
expecting success of 0008.70 '-z without --stdin with --verbose -n':
expect '' &&
test_check_ignore "-z" 128 &&
stderr_contains "fatal: -z only makes sense with --stdin"
fatal: -z only makes sense with --stdin
ok 70 - -z without --stdin with --verbose -n
expecting success of 0008.71 '-z without --stdin with --verbose --non-matching':
expect '' &&
test_check_ignore "-z" 128 &&
stderr_contains "fatal: -z only makes sense with --stdin"
fatal: -z only makes sense with --stdin
ok 71 - -z without --stdin with --verbose --non-matching
expecting success of 0008.72 '-z without --stdin and superfluous arg':
expect "$expect" &&
eval "$code"
fatal: -z only makes sense with --stdin
ok 72 - -z without --stdin and superfluous arg
expecting success of 0008.73 '-z without --stdin and superfluous arg with -q':
expect '' &&
test_check_ignore "-z foo" 128 &&
stderr_contains "fatal: -z only makes sense with --stdin"
fatal: -z only makes sense with --stdin
ok 73 - -z without --stdin and superfluous arg with -q
expecting success of 0008.74 '-z without --stdin and superfluous arg with --quiet':
expect '' &&
test_check_ignore "-z foo" 128 &&
stderr_contains "fatal: -z only makes sense with --stdin"
fatal: -z only makes sense with --stdin
ok 74 - -z without --stdin and superfluous arg with --quiet
expecting success of 0008.75 '-z without --stdin and superfluous arg with -v':
expect '' &&
test_check_ignore "-z foo" 128 &&
stderr_contains "fatal: -z only makes sense with --stdin"
fatal: -z only makes sense with --stdin
ok 75 - -z without --stdin and superfluous arg with -v
expecting success of 0008.76 '-z without --stdin and superfluous arg with -v -n':
expect '' &&
test_check_ignore "-z foo" 128 &&
stderr_contains "fatal: -z only makes sense with --stdin"
fatal: -z only makes sense with --stdin
ok 76 - -z without --stdin and superfluous arg with -v -n
expecting success of 0008.77 '-z without --stdin and superfluous arg with -v --non-matching':
expect '' &&
test_check_ignore "-z foo" 128 &&
stderr_contains "fatal: -z only makes sense with --stdin"
fatal: -z only makes sense with --stdin
ok 77 - -z without --stdin and superfluous arg with -v --non-matching
expecting success of 0008.78 '-z without --stdin and superfluous arg with --verbose':
expect '' &&
test_check_ignore "-z foo" 128 &&
stderr_contains "fatal: -z only makes sense with --stdin"
fatal: -z only makes sense with --stdin
ok 78 - -z without --stdin and superfluous arg with --verbose
expecting success of 0008.79 '-z without --stdin and superfluous arg with --verbose -n':
expect '' &&
test_check_ignore "-z foo" 128 &&
stderr_contains "fatal: -z only makes sense with --stdin"
fatal: -z only makes sense with --stdin
ok 79 - -z without --stdin and superfluous arg with --verbose -n
expecting success of 0008.80 '-z without --stdin and superfluous arg with --verbose --non-matching':
expect '' &&
test_check_ignore "-z foo" 128 &&
stderr_contains "fatal: -z only makes sense with --stdin"
fatal: -z only makes sense with --stdin
ok 80 - -z without --stdin and superfluous arg with --verbose --non-matching
expecting success of 0008.81 'needs work tree':
expect "$expect" &&
eval "$code"
fatal: this operation must be run in a work tree
ok 81 - needs work tree
expecting success of 0008.82 'needs work tree with -q':
expect '' &&
(
cd .git &&
test_check_ignore "foo" 128
) &&
stderr_contains "fatal: this operation must be run in a work tree"
fatal: this operation must be run in a work tree
ok 82 - needs work tree with -q
expecting success of 0008.83 'needs work tree with --quiet':
expect '' &&
(
cd .git &&
test_check_ignore "foo" 128
) &&
stderr_contains "fatal: this operation must be run in a work tree"
fatal: this operation must be run in a work tree
ok 83 - needs work tree with --quiet
expecting success of 0008.84 'needs work tree with -v':
expect '' &&
(
cd .git &&
test_check_ignore "foo" 128
) &&
stderr_contains "fatal: this operation must be run in a work tree"
fatal: this operation must be run in a work tree
ok 84 - needs work tree with -v
expecting success of 0008.85 'needs work tree with -v -n':
expect '' &&
(
cd .git &&
test_check_ignore "foo" 128
) &&
stderr_contains "fatal: this operation must be run in a work tree"
fatal: this operation must be run in a work tree
ok 85 - needs work tree with -v -n
expecting success of 0008.86 'needs work tree with -v --non-matching':
expect '' &&
(
cd .git &&
test_check_ignore "foo" 128
) &&
stderr_contains "fatal: this operation must be run in a work tree"
fatal: this operation must be run in a work tree
ok 86 - needs work tree with -v --non-matching
expecting success of 0008.87 'needs work tree with --verbose':
expect '' &&
(
cd .git &&
test_check_ignore "foo" 128
) &&
stderr_contains "fatal: this operation must be run in a work tree"
fatal: this operation must be run in a work tree
ok 87 - needs work tree with --verbose
expecting success of 0008.88 'needs work tree with --verbose -n':
expect '' &&
(
cd .git &&
test_check_ignore "foo" 128
) &&
stderr_contains "fatal: this operation must be run in a work tree"
fatal: this operation must be run in a work tree
ok 88 - needs work tree with --verbose -n
expecting success of 0008.89 'needs work tree with --verbose --non-matching':
expect '' &&
(
cd .git &&
test_check_ignore "foo" 128
) &&
stderr_contains "fatal: this operation must be run in a work tree"
fatal: this operation must be run in a work tree
ok 89 - needs work tree with --verbose --non-matching
expecting success of 0008.90 'non-existent file at top-level not ignored':
expect "$expect" &&
eval "$code"
ok 90 - non-existent file at top-level not ignored
expecting success of 0008.91 'non-existent file at top-level not ignored with -q':
expect '' &&
test_check_ignore 'non-existent' 1
ok 91 - non-existent file at top-level not ignored with -q
expecting success of 0008.92 'non-existent file at top-level not ignored with --quiet':
expect '' &&
test_check_ignore 'non-existent' 1
ok 92 - non-existent file at top-level not ignored with --quiet
expecting success of 0008.93 'non-existent file at top-level not ignored with -v':
expect '' &&
test_check_ignore 'non-existent' 1
ok 93 - non-existent file at top-level not ignored with -v
expecting success of 0008.94 'non-existent file at top-level not ignored with -v -n':
expect ':: non-existent' &&
test_check_ignore 'non-existent' 1
ok 94 - non-existent file at top-level not ignored with -v -n
expecting success of 0008.95 'non-existent file at top-level not ignored with -v --non-matching':
expect ':: non-existent' &&
test_check_ignore 'non-existent' 1
ok 95 - non-existent file at top-level not ignored with -v --non-matching
expecting success of 0008.96 'non-existent file at top-level not ignored with --verbose':
expect '' &&
test_check_ignore 'non-existent' 1
ok 96 - non-existent file at top-level not ignored with --verbose
expecting success of 0008.97 'non-existent file at top-level not ignored with --verbose -n':
expect ':: non-existent' &&
test_check_ignore 'non-existent' 1
ok 97 - non-existent file at top-level not ignored with --verbose -n
expecting success of 0008.98 'non-existent file at top-level not ignored with --verbose --non-matching':
expect ':: non-existent' &&
test_check_ignore 'non-existent' 1
ok 98 - non-existent file at top-level not ignored with --verbose --non-matching
expecting success of 0008.99 'non-existent file at top-level not ignored with --no-index':
expect "$expect" &&
eval "$code"
ok 99 - non-existent file at top-level not ignored with --no-index
expecting success of 0008.100 'non-existent file at top-level not ignored with --no-index -q':
expect '' &&
test_check_ignore 'non-existent' 1
ok 100 - non-existent file at top-level not ignored with --no-index -q
expecting success of 0008.101 'non-existent file at top-level not ignored with --no-index --quiet':
expect '' &&
test_check_ignore 'non-existent' 1
ok 101 - non-existent file at top-level not ignored with --no-index --quiet
expecting success of 0008.102 'non-existent file at top-level not ignored with --no-index -v':
expect '' &&
test_check_ignore 'non-existent' 1
ok 102 - non-existent file at top-level not ignored with --no-index -v
expecting success of 0008.103 'non-existent file at top-level not ignored with --no-index -v -n':
expect ':: non-existent' &&
test_check_ignore 'non-existent' 1
ok 103 - non-existent file at top-level not ignored with --no-index -v -n
expecting success of 0008.104 'non-existent file at top-level not ignored with --no-index -v --non-matching':
expect ':: non-existent' &&
test_check_ignore 'non-existent' 1
ok 104 - non-existent file at top-level not ignored with --no-index -v --non-matching
expecting success of 0008.105 'non-existent file at top-level not ignored with --no-index --verbose':
expect '' &&
test_check_ignore 'non-existent' 1
ok 105 - non-existent file at top-level not ignored with --no-index --verbose
expecting success of 0008.106 'non-existent file at top-level not ignored with --no-index --verbose -n':
expect ':: non-existent' &&
test_check_ignore 'non-existent' 1
ok 106 - non-existent file at top-level not ignored with --no-index --verbose -n
expecting success of 0008.107 'non-existent file at top-level not ignored with --no-index --verbose --non-matching':
expect ':: non-existent' &&
test_check_ignore 'non-existent' 1
ok 107 - non-existent file at top-level not ignored with --no-index --verbose --non-matching
expecting success of 0008.108 'non-existent file at top-level ignored':
expect "$expect" &&
eval "$code"
ok 108 - non-existent file at top-level ignored
expecting success of 0008.109 'non-existent file at top-level ignored with -q':
expect '' &&
test_check_ignore 'one'
ok 109 - non-existent file at top-level ignored with -q
expecting success of 0008.110 'non-existent file at top-level ignored with --quiet':
expect '' &&
test_check_ignore 'one'
ok 110 - non-existent file at top-level ignored with --quiet
expecting success of 0008.111 'non-existent file at top-level ignored with -v':
expect '.gitignore:1:one one' &&
test_check_ignore 'one'
ok 111 - non-existent file at top-level ignored with -v
expecting success of 0008.112 'non-existent file at top-level ignored with -v -n':
expect '.gitignore:1:one one' &&
test_check_ignore 'one'
ok 112 - non-existent file at top-level ignored with -v -n
expecting success of 0008.113 'non-existent file at top-level ignored with -v --non-matching':
expect '.gitignore:1:one one' &&
test_check_ignore 'one'
ok 113 - non-existent file at top-level ignored with -v --non-matching
expecting success of 0008.114 'non-existent file at top-level ignored with --verbose':
expect '.gitignore:1:one one' &&
test_check_ignore 'one'
ok 114 - non-existent file at top-level ignored with --verbose
expecting success of 0008.115 'non-existent file at top-level ignored with --verbose -n':
expect '.gitignore:1:one one' &&
test_check_ignore 'one'
ok 115 - non-existent file at top-level ignored with --verbose -n
expecting success of 0008.116 'non-existent file at top-level ignored with --verbose --non-matching':
expect '.gitignore:1:one one' &&
test_check_ignore 'one'
ok 116 - non-existent file at top-level ignored with --verbose --non-matching
expecting success of 0008.117 'non-existent file at top-level ignored with --no-index':
expect "$expect" &&
eval "$code"
ok 117 - non-existent file at top-level ignored with --no-index
expecting success of 0008.118 'non-existent file at top-level ignored with --no-index -q':
expect '' &&
test_check_ignore 'one'
ok 118 - non-existent file at top-level ignored with --no-index -q
expecting success of 0008.119 'non-existent file at top-level ignored with --no-index --quiet':
expect '' &&
test_check_ignore 'one'
ok 119 - non-existent file at top-level ignored with --no-index --quiet
expecting success of 0008.120 'non-existent file at top-level ignored with --no-index -v':
expect '.gitignore:1:one one' &&
test_check_ignore 'one'
ok 120 - non-existent file at top-level ignored with --no-index -v
expecting success of 0008.121 'non-existent file at top-level ignored with --no-index -v -n':
expect '.gitignore:1:one one' &&
test_check_ignore 'one'
ok 121 - non-existent file at top-level ignored with --no-index -v -n
expecting success of 0008.122 'non-existent file at top-level ignored with --no-index -v --non-matching':
expect '.gitignore:1:one one' &&
test_check_ignore 'one'
ok 122 - non-existent file at top-level ignored with --no-index -v --non-matching
expecting success of 0008.123 'non-existent file at top-level ignored with --no-index --verbose':
expect '.gitignore:1:one one' &&
test_check_ignore 'one'
ok 123 - non-existent file at top-level ignored with --no-index --verbose
expecting success of 0008.124 'non-existent file at top-level ignored with --no-index --verbose -n':
expect '.gitignore:1:one one' &&
test_check_ignore 'one'
ok 124 - non-existent file at top-level ignored with --no-index --verbose -n
expecting success of 0008.125 'non-existent file at top-level ignored with --no-index --verbose --non-matching':
expect '.gitignore:1:one one' &&
test_check_ignore 'one'
ok 125 - non-existent file at top-level ignored with --no-index --verbose --non-matching
expecting success of 0008.126 'existing untracked file at top-level not ignored':
expect "$expect" &&
eval "$code"
ok 126 - existing untracked file at top-level not ignored
expecting success of 0008.127 'existing untracked file at top-level not ignored with -q':
expect '' &&
test_check_ignore 'not-ignored' 1
ok 127 - existing untracked file at top-level not ignored with -q
expecting success of 0008.128 'existing untracked file at top-level not ignored with --quiet':
expect '' &&
test_check_ignore 'not-ignored' 1
ok 128 - existing untracked file at top-level not ignored with --quiet
expecting success of 0008.129 'existing untracked file at top-level not ignored with -v':
expect '' &&
test_check_ignore 'not-ignored' 1
ok 129 - existing untracked file at top-level not ignored with -v
expecting success of 0008.130 'existing untracked file at top-level not ignored with -v -n':
expect ':: not-ignored' &&
test_check_ignore 'not-ignored' 1
ok 130 - existing untracked file at top-level not ignored with -v -n
expecting success of 0008.131 'existing untracked file at top-level not ignored with -v --non-matching':
expect ':: not-ignored' &&
test_check_ignore 'not-ignored' 1
ok 131 - existing untracked file at top-level not ignored with -v --non-matching
expecting success of 0008.132 'existing untracked file at top-level not ignored with --verbose':
expect '' &&
test_check_ignore 'not-ignored' 1
ok 132 - existing untracked file at top-level not ignored with --verbose
expecting success of 0008.133 'existing untracked file at top-level not ignored with --verbose -n':
expect ':: not-ignored' &&
test_check_ignore 'not-ignored' 1
ok 133 - existing untracked file at top-level not ignored with --verbose -n
expecting success of 0008.134 'existing untracked file at top-level not ignored with --verbose --non-matching':
expect ':: not-ignored' &&
test_check_ignore 'not-ignored' 1
ok 134 - existing untracked file at top-level not ignored with --verbose --non-matching
expecting success of 0008.135 'existing untracked file at top-level not ignored with --no-index':
expect "$expect" &&
eval "$code"
ok 135 - existing untracked file at top-level not ignored with --no-index
expecting success of 0008.136 'existing untracked file at top-level not ignored with --no-index -q':
expect '' &&
test_check_ignore 'not-ignored' 1
ok 136 - existing untracked file at top-level not ignored with --no-index -q
expecting success of 0008.137 'existing untracked file at top-level not ignored with --no-index --quiet':
expect '' &&
test_check_ignore 'not-ignored' 1
ok 137 - existing untracked file at top-level not ignored with --no-index --quiet
expecting success of 0008.138 'existing untracked file at top-level not ignored with --no-index -v':
expect '' &&
test_check_ignore 'not-ignored' 1
ok 138 - existing untracked file at top-level not ignored with --no-index -v
expecting success of 0008.139 'existing untracked file at top-level not ignored with --no-index -v -n':
expect ':: not-ignored' &&
test_check_ignore 'not-ignored' 1
ok 139 - existing untracked file at top-level not ignored with --no-index -v -n
expecting success of 0008.140 'existing untracked file at top-level not ignored with --no-index -v --non-matching':
expect ':: not-ignored' &&
test_check_ignore 'not-ignored' 1
ok 140 - existing untracked file at top-level not ignored with --no-index -v --non-matching
expecting success of 0008.141 'existing untracked file at top-level not ignored with --no-index --verbose':
expect '' &&
test_check_ignore 'not-ignored' 1
ok 141 - existing untracked file at top-level not ignored with --no-index --verbose
expecting success of 0008.142 'existing untracked file at top-level not ignored with --no-index --verbose -n':
expect ':: not-ignored' &&
test_check_ignore 'not-ignored' 1
ok 142 - existing untracked file at top-level not ignored with --no-index --verbose -n
expecting success of 0008.143 'existing untracked file at top-level not ignored with --no-index --verbose --non-matching':
expect ':: not-ignored' &&
test_check_ignore 'not-ignored' 1
ok 143 - existing untracked file at top-level not ignored with --no-index --verbose --non-matching
expecting success of 0008.144 'existing tracked file at top-level not ignored':
expect "$expect" &&
eval "$code"
ok 144 - existing tracked file at top-level not ignored
expecting success of 0008.145 'existing tracked file at top-level not ignored with -q':
expect '' &&
test_check_ignore 'ignored-but-in-index' 1
ok 145 - existing tracked file at top-level not ignored with -q
expecting success of 0008.146 'existing tracked file at top-level not ignored with --quiet':
expect '' &&
test_check_ignore 'ignored-but-in-index' 1
ok 146 - existing tracked file at top-level not ignored with --quiet
expecting success of 0008.147 'existing tracked file at top-level not ignored with -v':
expect '' &&
test_check_ignore 'ignored-but-in-index' 1
ok 147 - existing tracked file at top-level not ignored with -v
expecting success of 0008.148 'existing tracked file at top-level not ignored with -v -n':
expect ':: ignored-but-in-index' &&
test_check_ignore 'ignored-but-in-index' 1
ok 148 - existing tracked file at top-level not ignored with -v -n
expecting success of 0008.149 'existing tracked file at top-level not ignored with -v --non-matching':
expect ':: ignored-but-in-index' &&
test_check_ignore 'ignored-but-in-index' 1
ok 149 - existing tracked file at top-level not ignored with -v --non-matching
expecting success of 0008.150 'existing tracked file at top-level not ignored with --verbose':
expect '' &&
test_check_ignore 'ignored-but-in-index' 1
ok 150 - existing tracked file at top-level not ignored with --verbose
expecting success of 0008.151 'existing tracked file at top-level not ignored with --verbose -n':
expect ':: ignored-but-in-index' &&
test_check_ignore 'ignored-but-in-index' 1
ok 151 - existing tracked file at top-level not ignored with --verbose -n
expecting success of 0008.152 'existing tracked file at top-level not ignored with --verbose --non-matching':
expect ':: ignored-but-in-index' &&
test_check_ignore 'ignored-but-in-index' 1
ok 152 - existing tracked file at top-level not ignored with --verbose --non-matching
expecting success of 0008.153 'existing tracked file at top-level shown as ignored with --no-index':
expect "$expect" &&
eval "$code"
ok 153 - existing tracked file at top-level shown as ignored with --no-index
expecting success of 0008.154 'existing tracked file at top-level shown as ignored with --no-index -q':
expect '' &&
test_check_ignore 'ignored-but-in-index'
ok 154 - existing tracked file at top-level shown as ignored with --no-index -q
expecting success of 0008.155 'existing tracked file at top-level shown as ignored with --no-index --quiet':
expect '' &&
test_check_ignore 'ignored-but-in-index'
ok 155 - existing tracked file at top-level shown as ignored with --no-index --quiet
expecting success of 0008.156 'existing tracked file at top-level shown as ignored with --no-index -v':
expect '.gitignore:2:ignored-* ignored-but-in-index' &&
test_check_ignore 'ignored-but-in-index'
ok 156 - existing tracked file at top-level shown as ignored with --no-index -v
expecting success of 0008.157 'existing tracked file at top-level shown as ignored with --no-index -v -n':
expect '.gitignore:2:ignored-* ignored-but-in-index' &&
test_check_ignore 'ignored-but-in-index'
ok 157 - existing tracked file at top-level shown as ignored with --no-index -v -n
expecting success of 0008.158 'existing tracked file at top-level shown as ignored with --no-index -v --non-matching':
expect '.gitignore:2:ignored-* ignored-but-in-index' &&
test_check_ignore 'ignored-but-in-index'
ok 158 - existing tracked file at top-level shown as ignored with --no-index -v --non-matching
expecting success of 0008.159 'existing tracked file at top-level shown as ignored with --no-index --verbose':
expect '.gitignore:2:ignored-* ignored-but-in-index' &&
test_check_ignore 'ignored-but-in-index'
ok 159 - existing tracked file at top-level shown as ignored with --no-index --verbose
expecting success of 0008.160 'existing tracked file at top-level shown as ignored with --no-index --verbose -n':
expect '.gitignore:2:ignored-* ignored-but-in-index' &&
test_check_ignore 'ignored-but-in-index'
ok 160 - existing tracked file at top-level shown as ignored with --no-index --verbose -n
expecting success of 0008.161 'existing tracked file at top-level shown as ignored with --no-index --verbose --non-matching':
expect '.gitignore:2:ignored-* ignored-but-in-index' &&
test_check_ignore 'ignored-but-in-index'
ok 161 - existing tracked file at top-level shown as ignored with --no-index --verbose --non-matching
expecting success of 0008.162 'existing untracked file at top-level ignored':
expect "$expect" &&
eval "$code"
ok 162 - existing untracked file at top-level ignored
expecting success of 0008.163 'existing untracked file at top-level ignored with -q':
expect '' &&
test_check_ignore 'ignored-and-untracked'
ok 163 - existing untracked file at top-level ignored with -q
expecting success of 0008.164 'existing untracked file at top-level ignored with --quiet':
expect '' &&
test_check_ignore 'ignored-and-untracked'
ok 164 - existing untracked file at top-level ignored with --quiet
expecting success of 0008.165 'existing untracked file at top-level ignored with -v':
expect '.gitignore:2:ignored-* ignored-and-untracked' &&
test_check_ignore 'ignored-and-untracked'
ok 165 - existing untracked file at top-level ignored with -v
expecting success of 0008.166 'existing untracked file at top-level ignored with -v -n':
expect '.gitignore:2:ignored-* ignored-and-untracked' &&
test_check_ignore 'ignored-and-untracked'
ok 166 - existing untracked file at top-level ignored with -v -n
expecting success of 0008.167 'existing untracked file at top-level ignored with -v --non-matching':
expect '.gitignore:2:ignored-* ignored-and-untracked' &&
test_check_ignore 'ignored-and-untracked'
ok 167 - existing untracked file at top-level ignored with -v --non-matching
expecting success of 0008.168 'existing untracked file at top-level ignored with --verbose':
expect '.gitignore:2:ignored-* ignored-and-untracked' &&
test_check_ignore 'ignored-and-untracked'
ok 168 - existing untracked file at top-level ignored with --verbose
expecting success of 0008.169 'existing untracked file at top-level ignored with --verbose -n':
expect '.gitignore:2:ignored-* ignored-and-untracked' &&
test_check_ignore 'ignored-and-untracked'
ok 169 - existing untracked file at top-level ignored with --verbose -n
expecting success of 0008.170 'existing untracked file at top-level ignored with --verbose --non-matching':
expect '.gitignore:2:ignored-* ignored-and-untracked' &&
test_check_ignore 'ignored-and-untracked'
ok 170 - existing untracked file at top-level ignored with --verbose --non-matching
expecting success of 0008.171 'existing untracked file at top-level ignored with --no-index':
expect "$expect" &&
eval "$code"
ok 171 - existing untracked file at top-level ignored with --no-index
expecting success of 0008.172 'existing untracked file at top-level ignored with --no-index -q':
expect '' &&
test_check_ignore 'ignored-and-untracked'
ok 172 - existing untracked file at top-level ignored with --no-index -q
expecting success of 0008.173 'existing untracked file at top-level ignored with --no-index --quiet':
expect '' &&
test_check_ignore 'ignored-and-untracked'
ok 173 - existing untracked file at top-level ignored with --no-index --quiet
expecting success of 0008.174 'existing untracked file at top-level ignored with --no-index -v':
expect '.gitignore:2:ignored-* ignored-and-untracked' &&
test_check_ignore 'ignored-and-untracked'
ok 174 - existing untracked file at top-level ignored with --no-index -v
expecting success of 0008.175 'existing untracked file at top-level ignored with --no-index -v -n':
expect '.gitignore:2:ignored-* ignored-and-untracked' &&
test_check_ignore 'ignored-and-untracked'
ok 175 - existing untracked file at top-level ignored with --no-index -v -n
expecting success of 0008.176 'existing untracked file at top-level ignored with --no-index -v --non-matching':
expect '.gitignore:2:ignored-* ignored-and-untracked' &&
test_check_ignore 'ignored-and-untracked'
ok 176 - existing untracked file at top-level ignored with --no-index -v --non-matching
expecting success of 0008.177 'existing untracked file at top-level ignored with --no-index --verbose':
expect '.gitignore:2:ignored-* ignored-and-untracked' &&
test_check_ignore 'ignored-and-untracked'
ok 177 - existing untracked file at top-level ignored with --no-index --verbose
expecting success of 0008.178 'existing untracked file at top-level ignored with --no-index --verbose -n':
expect '.gitignore:2:ignored-* ignored-and-untracked' &&
test_check_ignore 'ignored-and-untracked'
ok 178 - existing untracked file at top-level ignored with --no-index --verbose -n
expecting success of 0008.179 'existing untracked file at top-level ignored with --no-index --verbose --non-matching':
expect '.gitignore:2:ignored-* ignored-and-untracked' &&
test_check_ignore 'ignored-and-untracked'
ok 179 - existing untracked file at top-level ignored with --no-index --verbose --non-matching
expecting success of 0008.180 'mix of file types at top-level':
expect "$expect" &&
eval "$code"
ok 180 - mix of file types at top-level
expecting success of 0008.181 'mix of file types at top-level with -v':
expect '.gitignore:1:one one
.gitignore:2:ignored-* ignored-and-untracked' &&
test_check_ignore '
non-existent
one
not-ignored
ignored-but-in-index
ignored-and-untracked'
ok 181 - mix of file types at top-level with -v
expecting success of 0008.182 'mix of file types at top-level with -v -n':
expect ':: non-existent
.gitignore:1:one one
:: not-ignored
:: ignored-but-in-index
.gitignore:2:ignored-* ignored-and-untracked' &&
test_check_ignore '
non-existent
one
not-ignored
ignored-but-in-index
ignored-and-untracked'
ok 182 - mix of file types at top-level with -v -n
expecting success of 0008.183 'mix of file types at top-level with -v --non-matching':
expect ':: non-existent
.gitignore:1:one one
:: not-ignored
:: ignored-but-in-index
.gitignore:2:ignored-* ignored-and-untracked' &&
test_check_ignore '
non-existent
one
not-ignored
ignored-but-in-index
ignored-and-untracked'
ok 183 - mix of file types at top-level with -v --non-matching
expecting success of 0008.184 'mix of file types at top-level with --verbose':
expect '.gitignore:1:one one
.gitignore:2:ignored-* ignored-and-untracked' &&
test_check_ignore '
non-existent
one
not-ignored
ignored-but-in-index
ignored-and-untracked'
ok 184 - mix of file types at top-level with --verbose
expecting success of 0008.185 'mix of file types at top-level with --verbose -n':
expect ':: non-existent
.gitignore:1:one one
:: not-ignored
:: ignored-but-in-index
.gitignore:2:ignored-* ignored-and-untracked' &&
test_check_ignore '
non-existent
one
not-ignored
ignored-but-in-index
ignored-and-untracked'
ok 185 - mix of file types at top-level with --verbose -n
expecting success of 0008.186 'mix of file types at top-level with --verbose --non-matching':
expect ':: non-existent
.gitignore:1:one one
:: not-ignored
:: ignored-but-in-index
.gitignore:2:ignored-* ignored-and-untracked' &&
test_check_ignore '
non-existent
one
not-ignored
ignored-but-in-index
ignored-and-untracked'
ok 186 - mix of file types at top-level with --verbose --non-matching
expecting success of 0008.187 'mix of file types at top-level with --no-index':
expect "$expect" &&
eval "$code"
ok 187 - mix of file types at top-level with --no-index
expecting success of 0008.188 'mix of file types at top-level with --no-index -v':
expect '.gitignore:1:one one
.gitignore:2:ignored-* ignored-but-in-index
.gitignore:2:ignored-* ignored-and-untracked' &&
test_check_ignore '
non-existent
one
not-ignored
ignored-but-in-index
ignored-and-untracked'
ok 188 - mix of file types at top-level with --no-index -v
expecting success of 0008.189 'mix of file types at top-level with --no-index -v -n':
expect ':: non-existent
.gitignore:1:one one
:: not-ignored
.gitignore:2:ignored-* ignored-but-in-index
.gitignore:2:ignored-* ignored-and-untracked' &&
test_check_ignore '
non-existent
one
not-ignored
ignored-but-in-index
ignored-and-untracked'
ok 189 - mix of file types at top-level with --no-index -v -n
expecting success of 0008.190 'mix of file types at top-level with --no-index -v --non-matching':
expect ':: non-existent
.gitignore:1:one one
:: not-ignored
.gitignore:2:ignored-* ignored-but-in-index
.gitignore:2:ignored-* ignored-and-untracked' &&
test_check_ignore '
non-existent
one
not-ignored
ignored-but-in-index
ignored-and-untracked'
ok 190 - mix of file types at top-level with --no-index -v --non-matching
expecting success of 0008.191 'mix of file types at top-level with --no-index --verbose':
expect '.gitignore:1:one one
.gitignore:2:ignored-* ignored-but-in-index
.gitignore:2:ignored-* ignored-and-untracked' &&
test_check_ignore '
non-existent
one
not-ignored
ignored-but-in-index
ignored-and-untracked'
ok 191 - mix of file types at top-level with --no-index --verbose
expecting success of 0008.192 'mix of file types at top-level with --no-index --verbose -n':
expect ':: non-existent
.gitignore:1:one one
:: not-ignored
.gitignore:2:ignored-* ignored-but-in-index
.gitignore:2:ignored-* ignored-and-untracked' &&
test_check_ignore '
non-existent
one
not-ignored
ignored-but-in-index
ignored-and-untracked'
ok 192 - mix of file types at top-level with --no-index --verbose -n
expecting success of 0008.193 'mix of file types at top-level with --no-index --verbose --non-matching':
expect ':: non-existent
.gitignore:1:one one
:: not-ignored
.gitignore:2:ignored-* ignored-but-in-index
.gitignore:2:ignored-* ignored-and-untracked' &&
test_check_ignore '
non-existent
one
not-ignored
ignored-but-in-index
ignored-and-untracked'
ok 193 - mix of file types at top-level with --no-index --verbose --non-matching
expecting success of 0008.194 'non-existent file in subdir a/ not ignored':
expect "$expect" &&
eval "$code"
ok 194 - non-existent file in subdir a/ not ignored
expecting success of 0008.195 'non-existent file in subdir a/ not ignored with -q':
expect '' &&
test_check_ignore 'a/non-existent' 1
ok 195 - non-existent file in subdir a/ not ignored with -q
expecting success of 0008.196 'non-existent file in subdir a/ not ignored with --quiet':
expect '' &&
test_check_ignore 'a/non-existent' 1
ok 196 - non-existent file in subdir a/ not ignored with --quiet
expecting success of 0008.197 'non-existent file in subdir a/ not ignored with -v':
expect '' &&
test_check_ignore 'a/non-existent' 1
ok 197 - non-existent file in subdir a/ not ignored with -v
expecting success of 0008.198 'non-existent file in subdir a/ not ignored with -v -n':
expect ':: a/non-existent' &&
test_check_ignore 'a/non-existent' 1
ok 198 - non-existent file in subdir a/ not ignored with -v -n
expecting success of 0008.199 'non-existent file in subdir a/ not ignored with -v --non-matching':
expect ':: a/non-existent' &&
test_check_ignore 'a/non-existent' 1
ok 199 - non-existent file in subdir a/ not ignored with -v --non-matching
expecting success of 0008.200 'non-existent file in subdir a/ not ignored with --verbose':
expect '' &&
test_check_ignore 'a/non-existent' 1
ok 200 - non-existent file in subdir a/ not ignored with --verbose
expecting success of 0008.201 'non-existent file in subdir a/ not ignored with --verbose -n':
expect ':: a/non-existent' &&
test_check_ignore 'a/non-existent' 1
ok 201 - non-existent file in subdir a/ not ignored with --verbose -n
expecting success of 0008.202 'non-existent file in subdir a/ not ignored with --verbose --non-matching':
expect ':: a/non-existent' &&
test_check_ignore 'a/non-existent' 1
ok 202 - non-existent file in subdir a/ not ignored with --verbose --non-matching
expecting success of 0008.203 'non-existent file in subdir a/ not ignored with --no-index':
expect "$expect" &&
eval "$code"
ok 203 - non-existent file in subdir a/ not ignored with --no-index
expecting success of 0008.204 'non-existent file in subdir a/ not ignored with --no-index -q':
expect '' &&
test_check_ignore 'a/non-existent' 1
ok 204 - non-existent file in subdir a/ not ignored with --no-index -q
expecting success of 0008.205 'non-existent file in subdir a/ not ignored with --no-index --quiet':
expect '' &&
test_check_ignore 'a/non-existent' 1
ok 205 - non-existent file in subdir a/ not ignored with --no-index --quiet
expecting success of 0008.206 'non-existent file in subdir a/ not ignored with --no-index -v':
expect '' &&
test_check_ignore 'a/non-existent' 1
ok 206 - non-existent file in subdir a/ not ignored with --no-index -v
expecting success of 0008.207 'non-existent file in subdir a/ not ignored with --no-index -v -n':
expect ':: a/non-existent' &&
test_check_ignore 'a/non-existent' 1
ok 207 - non-existent file in subdir a/ not ignored with --no-index -v -n
expecting success of 0008.208 'non-existent file in subdir a/ not ignored with --no-index -v --non-matching':
expect ':: a/non-existent' &&
test_check_ignore 'a/non-existent' 1
ok 208 - non-existent file in subdir a/ not ignored with --no-index -v --non-matching
expecting success of 0008.209 'non-existent file in subdir a/ not ignored with --no-index --verbose':
expect '' &&
test_check_ignore 'a/non-existent' 1
ok 209 - non-existent file in subdir a/ not ignored with --no-index --verbose
expecting success of 0008.210 'non-existent file in subdir a/ not ignored with --no-index --verbose -n':
expect ':: a/non-existent' &&
test_check_ignore 'a/non-existent' 1
ok 210 - non-existent file in subdir a/ not ignored with --no-index --verbose -n
expecting success of 0008.211 'non-existent file in subdir a/ not ignored with --no-index --verbose --non-matching':
expect ':: a/non-existent' &&
test_check_ignore 'a/non-existent' 1
ok 211 - non-existent file in subdir a/ not ignored with --no-index --verbose --non-matching
expecting success of 0008.212 'non-existent file in subdir a/ ignored':
expect "$expect" &&
eval "$code"
ok 212 - non-existent file in subdir a/ ignored
expecting success of 0008.213 'non-existent file in subdir a/ ignored with -q':
expect '' &&
test_check_ignore 'a/one'
ok 213 - non-existent file in subdir a/ ignored with -q
expecting success of 0008.214 'non-existent file in subdir a/ ignored with --quiet':
expect '' &&
test_check_ignore 'a/one'
ok 214 - non-existent file in subdir a/ ignored with --quiet
expecting success of 0008.215 'non-existent file in subdir a/ ignored with -v':
expect '.gitignore:1:one a/one' &&
test_check_ignore 'a/one'
ok 215 - non-existent file in subdir a/ ignored with -v
expecting success of 0008.216 'non-existent file in subdir a/ ignored with -v -n':
expect '.gitignore:1:one a/one' &&
test_check_ignore 'a/one'
ok 216 - non-existent file in subdir a/ ignored with -v -n
expecting success of 0008.217 'non-existent file in subdir a/ ignored with -v --non-matching':
expect '.gitignore:1:one a/one' &&
test_check_ignore 'a/one'
ok 217 - non-existent file in subdir a/ ignored with -v --non-matching
expecting success of 0008.218 'non-existent file in subdir a/ ignored with --verbose':
expect '.gitignore:1:one a/one' &&
test_check_ignore 'a/one'
ok 218 - non-existent file in subdir a/ ignored with --verbose
expecting success of 0008.219 'non-existent file in subdir a/ ignored with --verbose -n':
expect '.gitignore:1:one a/one' &&
test_check_ignore 'a/one'
ok 219 - non-existent file in subdir a/ ignored with --verbose -n
expecting success of 0008.220 'non-existent file in subdir a/ ignored with --verbose --non-matching':
expect '.gitignore:1:one a/one' &&
test_check_ignore 'a/one'
ok 220 - non-existent file in subdir a/ ignored with --verbose --non-matching
expecting success of 0008.221 'non-existent file in subdir a/ ignored with --no-index':
expect "$expect" &&
eval "$code"
ok 221 - non-existent file in subdir a/ ignored with --no-index
expecting success of 0008.222 'non-existent file in subdir a/ ignored with --no-index -q':
expect '' &&
test_check_ignore 'a/one'
ok 222 - non-existent file in subdir a/ ignored with --no-index -q
expecting success of 0008.223 'non-existent file in subdir a/ ignored with --no-index --quiet':
expect '' &&
test_check_ignore 'a/one'
ok 223 - non-existent file in subdir a/ ignored with --no-index --quiet
expecting success of 0008.224 'non-existent file in subdir a/ ignored with --no-index -v':
expect '.gitignore:1:one a/one' &&
test_check_ignore 'a/one'
ok 224 - non-existent file in subdir a/ ignored with --no-index -v
expecting success of 0008.225 'non-existent file in subdir a/ ignored with --no-index -v -n':
expect '.gitignore:1:one a/one' &&
test_check_ignore 'a/one'
ok 225 - non-existent file in subdir a/ ignored with --no-index -v -n
expecting success of 0008.226 'non-existent file in subdir a/ ignored with --no-index -v --non-matching':
expect '.gitignore:1:one a/one' &&
test_check_ignore 'a/one'
ok 226 - non-existent file in subdir a/ ignored with --no-index -v --non-matching
expecting success of 0008.227 'non-existent file in subdir a/ ignored with --no-index --verbose':
expect '.gitignore:1:one a/one' &&
test_check_ignore 'a/one'
ok 227 - non-existent file in subdir a/ ignored with --no-index --verbose
expecting success of 0008.228 'non-existent file in subdir a/ ignored with --no-index --verbose -n':
expect '.gitignore:1:one a/one' &&
test_check_ignore 'a/one'
ok 228 - non-existent file in subdir a/ ignored with --no-index --verbose -n
expecting success of 0008.229 'non-existent file in subdir a/ ignored with --no-index --verbose --non-matching':
expect '.gitignore:1:one a/one' &&
test_check_ignore 'a/one'
ok 229 - non-existent file in subdir a/ ignored with --no-index --verbose --non-matching
expecting success of 0008.230 'existing untracked file in subdir a/ not ignored':
expect "$expect" &&
eval "$code"
ok 230 - existing untracked file in subdir a/ not ignored
expecting success of 0008.231 'existing untracked file in subdir a/ not ignored with -q':
expect '' &&
test_check_ignore 'a/not-ignored' 1
ok 231 - existing untracked file in subdir a/ not ignored with -q
expecting success of 0008.232 'existing untracked file in subdir a/ not ignored with --quiet':
expect '' &&
test_check_ignore 'a/not-ignored' 1
ok 232 - existing untracked file in subdir a/ not ignored with --quiet
expecting success of 0008.233 'existing untracked file in subdir a/ not ignored with -v':
expect '' &&
test_check_ignore 'a/not-ignored' 1
ok 233 - existing untracked file in subdir a/ not ignored with -v
expecting success of 0008.234 'existing untracked file in subdir a/ not ignored with -v -n':
expect ':: a/not-ignored' &&
test_check_ignore 'a/not-ignored' 1
ok 234 - existing untracked file in subdir a/ not ignored with -v -n
expecting success of 0008.235 'existing untracked file in subdir a/ not ignored with -v --non-matching':
expect ':: a/not-ignored' &&
test_check_ignore 'a/not-ignored' 1
ok 235 - existing untracked file in subdir a/ not ignored with -v --non-matching
expecting success of 0008.236 'existing untracked file in subdir a/ not ignored with --verbose':
expect '' &&
test_check_ignore 'a/not-ignored' 1
ok 236 - existing untracked file in subdir a/ not ignored with --verbose
expecting success of 0008.237 'existing untracked file in subdir a/ not ignored with --verbose -n':
expect ':: a/not-ignored' &&
test_check_ignore 'a/not-ignored' 1
ok 237 - existing untracked file in subdir a/ not ignored with --verbose -n
expecting success of 0008.238 'existing untracked file in subdir a/ not ignored with --verbose --non-matching':
expect ':: a/not-ignored' &&
test_check_ignore 'a/not-ignored' 1
ok 238 - existing untracked file in subdir a/ not ignored with --verbose --non-matching
expecting success of 0008.239 'existing untracked file in subdir a/ not ignored with --no-index':
expect "$expect" &&
eval "$code"
ok 239 - existing untracked file in subdir a/ not ignored with --no-index
expecting success of 0008.240 'existing untracked file in subdir a/ not ignored with --no-index -q':
expect '' &&
test_check_ignore 'a/not-ignored' 1
ok 240 - existing untracked file in subdir a/ not ignored with --no-index -q
expecting success of 0008.241 'existing untracked file in subdir a/ not ignored with --no-index --quiet':
expect '' &&
test_check_ignore 'a/not-ignored' 1
ok 241 - existing untracked file in subdir a/ not ignored with --no-index --quiet
expecting success of 0008.242 'existing untracked file in subdir a/ not ignored with --no-index -v':
expect '' &&
test_check_ignore 'a/not-ignored' 1
ok 242 - existing untracked file in subdir a/ not ignored with --no-index -v
expecting success of 0008.243 'existing untracked file in subdir a/ not ignored with --no-index -v -n':
expect ':: a/not-ignored' &&
test_check_ignore 'a/not-ignored' 1
ok 243 - existing untracked file in subdir a/ not ignored with --no-index -v -n
expecting success of 0008.244 'existing untracked file in subdir a/ not ignored with --no-index -v --non-matching':
expect ':: a/not-ignored' &&
test_check_ignore 'a/not-ignored' 1
ok 244 - existing untracked file in subdir a/ not ignored with --no-index -v --non-matching
expecting success of 0008.245 'existing untracked file in subdir a/ not ignored with --no-index --verbose':
expect '' &&
test_check_ignore 'a/not-ignored' 1
ok 245 - existing untracked file in subdir a/ not ignored with --no-index --verbose
expecting success of 0008.246 'existing untracked file in subdir a/ not ignored with --no-index --verbose -n':
expect ':: a/not-ignored' &&
test_check_ignore 'a/not-ignored' 1
ok 246 - existing untracked file in subdir a/ not ignored with --no-index --verbose -n
expecting success of 0008.247 'existing untracked file in subdir a/ not ignored with --no-index --verbose --non-matching':
expect ':: a/not-ignored' &&
test_check_ignore 'a/not-ignored' 1
ok 247 - existing untracked file in subdir a/ not ignored with --no-index --verbose --non-matching
expecting success of 0008.248 'existing tracked file in subdir a/ not ignored':
expect "$expect" &&
eval "$code"
ok 248 - existing tracked file in subdir a/ not ignored
expecting success of 0008.249 'existing tracked file in subdir a/ not ignored with -q':
expect '' &&
test_check_ignore 'a/ignored-but-in-index' 1
ok 249 - existing tracked file in subdir a/ not ignored with -q
expecting success of 0008.250 'existing tracked file in subdir a/ not ignored with --quiet':
expect '' &&
test_check_ignore 'a/ignored-but-in-index' 1
ok 250 - existing tracked file in subdir a/ not ignored with --quiet
expecting success of 0008.251 'existing tracked file in subdir a/ not ignored with -v':
expect '' &&
test_check_ignore 'a/ignored-but-in-index' 1
ok 251 - existing tracked file in subdir a/ not ignored with -v
expecting success of 0008.252 'existing tracked file in subdir a/ not ignored with -v -n':
expect ':: a/ignored-but-in-index' &&
test_check_ignore 'a/ignored-but-in-index' 1
ok 252 - existing tracked file in subdir a/ not ignored with -v -n
expecting success of 0008.253 'existing tracked file in subdir a/ not ignored with -v --non-matching':
expect ':: a/ignored-but-in-index' &&
test_check_ignore 'a/ignored-but-in-index' 1
ok 253 - existing tracked file in subdir a/ not ignored with -v --non-matching
expecting success of 0008.254 'existing tracked file in subdir a/ not ignored with --verbose':
expect '' &&
test_check_ignore 'a/ignored-but-in-index' 1
ok 254 - existing tracked file in subdir a/ not ignored with --verbose
expecting success of 0008.255 'existing tracked file in subdir a/ not ignored with --verbose -n':
expect ':: a/ignored-but-in-index' &&
test_check_ignore 'a/ignored-but-in-index' 1
ok 255 - existing tracked file in subdir a/ not ignored with --verbose -n
expecting success of 0008.256 'existing tracked file in subdir a/ not ignored with --verbose --non-matching':
expect ':: a/ignored-but-in-index' &&
test_check_ignore 'a/ignored-but-in-index' 1
ok 256 - existing tracked file in subdir a/ not ignored with --verbose --non-matching
expecting success of 0008.257 'existing tracked file in subdir a/ shown as ignored with --no-index':
expect "$expect" &&
eval "$code"
ok 257 - existing tracked file in subdir a/ shown as ignored with --no-index
expecting success of 0008.258 'existing tracked file in subdir a/ shown as ignored with --no-index -q':
expect '' &&
test_check_ignore 'a/ignored-but-in-index'
ok 258 - existing tracked file in subdir a/ shown as ignored with --no-index -q
expecting success of 0008.259 'existing tracked file in subdir a/ shown as ignored with --no-index --quiet':
expect '' &&
test_check_ignore 'a/ignored-but-in-index'
ok 259 - existing tracked file in subdir a/ shown as ignored with --no-index --quiet
expecting success of 0008.260 'existing tracked file in subdir a/ shown as ignored with --no-index -v':
expect '.gitignore:2:ignored-* a/ignored-but-in-index' &&
test_check_ignore 'a/ignored-but-in-index'
ok 260 - existing tracked file in subdir a/ shown as ignored with --no-index -v
expecting success of 0008.261 'existing tracked file in subdir a/ shown as ignored with --no-index -v -n':
expect '.gitignore:2:ignored-* a/ignored-but-in-index' &&
test_check_ignore 'a/ignored-but-in-index'
ok 261 - existing tracked file in subdir a/ shown as ignored with --no-index -v -n
expecting success of 0008.262 'existing tracked file in subdir a/ shown as ignored with --no-index -v --non-matching':
expect '.gitignore:2:ignored-* a/ignored-but-in-index' &&
test_check_ignore 'a/ignored-but-in-index'
ok 262 - existing tracked file in subdir a/ shown as ignored with --no-index -v --non-matching
expecting success of 0008.263 'existing tracked file in subdir a/ shown as ignored with --no-index --verbose':
expect '.gitignore:2:ignored-* a/ignored-but-in-index' &&
test_check_ignore 'a/ignored-but-in-index'
ok 263 - existing tracked file in subdir a/ shown as ignored with --no-index --verbose
expecting success of 0008.264 'existing tracked file in subdir a/ shown as ignored with --no-index --verbose -n':
expect '.gitignore:2:ignored-* a/ignored-but-in-index' &&
test_check_ignore 'a/ignored-but-in-index'
ok 264 - existing tracked file in subdir a/ shown as ignored with --no-index --verbose -n
expecting success of 0008.265 'existing tracked file in subdir a/ shown as ignored with --no-index --verbose --non-matching':
expect '.gitignore:2:ignored-* a/ignored-but-in-index' &&
test_check_ignore 'a/ignored-but-in-index'
ok 265 - existing tracked file in subdir a/ shown as ignored with --no-index --verbose --non-matching
expecting success of 0008.266 'existing untracked file in subdir a/ ignored':
expect "$expect" &&
eval "$code"
ok 266 - existing untracked file in subdir a/ ignored
expecting success of 0008.267 'existing untracked file in subdir a/ ignored with -q':
expect '' &&
test_check_ignore 'a/ignored-and-untracked'
ok 267 - existing untracked file in subdir a/ ignored with -q
expecting success of 0008.268 'existing untracked file in subdir a/ ignored with --quiet':
expect '' &&
test_check_ignore 'a/ignored-and-untracked'
ok 268 - existing untracked file in subdir a/ ignored with --quiet
expecting success of 0008.269 'existing untracked file in subdir a/ ignored with -v':
expect '.gitignore:2:ignored-* a/ignored-and-untracked' &&
test_check_ignore 'a/ignored-and-untracked'
ok 269 - existing untracked file in subdir a/ ignored with -v
expecting success of 0008.270 'existing untracked file in subdir a/ ignored with -v -n':
expect '.gitignore:2:ignored-* a/ignored-and-untracked' &&
test_check_ignore 'a/ignored-and-untracked'
ok 270 - existing untracked file in subdir a/ ignored with -v -n
expecting success of 0008.271 'existing untracked file in subdir a/ ignored with -v --non-matching':
expect '.gitignore:2:ignored-* a/ignored-and-untracked' &&
test_check_ignore 'a/ignored-and-untracked'
ok 271 - existing untracked file in subdir a/ ignored with -v --non-matching
expecting success of 0008.272 'existing untracked file in subdir a/ ignored with --verbose':
expect '.gitignore:2:ignored-* a/ignored-and-untracked' &&
test_check_ignore 'a/ignored-and-untracked'
ok 272 - existing untracked file in subdir a/ ignored with --verbose
expecting success of 0008.273 'existing untracked file in subdir a/ ignored with --verbose -n':
expect '.gitignore:2:ignored-* a/ignored-and-untracked' &&
test_check_ignore 'a/ignored-and-untracked'
ok 273 - existing untracked file in subdir a/ ignored with --verbose -n
expecting success of 0008.274 'existing untracked file in subdir a/ ignored with --verbose --non-matching':
expect '.gitignore:2:ignored-* a/ignored-and-untracked' &&
test_check_ignore 'a/ignored-and-untracked'
ok 274 - existing untracked file in subdir a/ ignored with --verbose --non-matching
expecting success of 0008.275 'existing untracked file in subdir a/ ignored with --no-index':
expect "$expect" &&
eval "$code"
ok 275 - existing untracked file in subdir a/ ignored with --no-index
expecting success of 0008.276 'existing untracked file in subdir a/ ignored with --no-index -q':
expect '' &&
test_check_ignore 'a/ignored-and-untracked'
ok 276 - existing untracked file in subdir a/ ignored with --no-index -q
expecting success of 0008.277 'existing untracked file in subdir a/ ignored with --no-index --quiet':
expect '' &&
test_check_ignore 'a/ignored-and-untracked'
ok 277 - existing untracked file in subdir a/ ignored with --no-index --quiet
expecting success of 0008.278 'existing untracked file in subdir a/ ignored with --no-index -v':
expect '.gitignore:2:ignored-* a/ignored-and-untracked' &&
test_check_ignore 'a/ignored-and-untracked'
ok 278 - existing untracked file in subdir a/ ignored with --no-index -v
expecting success of 0008.279 'existing untracked file in subdir a/ ignored with --no-index -v -n':
expect '.gitignore:2:ignored-* a/ignored-and-untracked' &&
test_check_ignore 'a/ignored-and-untracked'
ok 279 - existing untracked file in subdir a/ ignored with --no-index -v -n
expecting success of 0008.280 'existing untracked file in subdir a/ ignored with --no-index -v --non-matching':
expect '.gitignore:2:ignored-* a/ignored-and-untracked' &&
test_check_ignore 'a/ignored-and-untracked'
ok 280 - existing untracked file in subdir a/ ignored with --no-index -v --non-matching
expecting success of 0008.281 'existing untracked file in subdir a/ ignored with --no-index --verbose':
expect '.gitignore:2:ignored-* a/ignored-and-untracked' &&
test_check_ignore 'a/ignored-and-untracked'
ok 281 - existing untracked file in subdir a/ ignored with --no-index --verbose
expecting success of 0008.282 'existing untracked file in subdir a/ ignored with --no-index --verbose -n':
expect '.gitignore:2:ignored-* a/ignored-and-untracked' &&
test_check_ignore 'a/ignored-and-untracked'
ok 282 - existing untracked file in subdir a/ ignored with --no-index --verbose -n
expecting success of 0008.283 'existing untracked file in subdir a/ ignored with --no-index --verbose --non-matching':
expect '.gitignore:2:ignored-* a/ignored-and-untracked' &&
test_check_ignore 'a/ignored-and-untracked'
ok 283 - existing untracked file in subdir a/ ignored with --no-index --verbose --non-matching
expecting success of 0008.284 'mix of file types in subdir a/':
expect "$expect" &&
eval "$code"
ok 284 - mix of file types in subdir a/
expecting success of 0008.285 'mix of file types in subdir a/ with -v':
expect '.gitignore:1:one a/one
.gitignore:2:ignored-* a/ignored-and-untracked' &&
test_check_ignore '
a/non-existent
a/one
a/not-ignored
a/ignored-but-in-index
a/ignored-and-untracked'
ok 285 - mix of file types in subdir a/ with -v
expecting success of 0008.286 'mix of file types in subdir a/ with -v -n':
expect ':: a/non-existent
.gitignore:1:one a/one
:: a/not-ignored
:: a/ignored-but-in-index
.gitignore:2:ignored-* a/ignored-and-untracked' &&
test_check_ignore '
a/non-existent
a/one
a/not-ignored
a/ignored-but-in-index
a/ignored-and-untracked'
ok 286 - mix of file types in subdir a/ with -v -n
expecting success of 0008.287 'mix of file types in subdir a/ with -v --non-matching':
expect ':: a/non-existent
.gitignore:1:one a/one
:: a/not-ignored
:: a/ignored-but-in-index
.gitignore:2:ignored-* a/ignored-and-untracked' &&
test_check_ignore '
a/non-existent
a/one
a/not-ignored
a/ignored-but-in-index
a/ignored-and-untracked'
ok 287 - mix of file types in subdir a/ with -v --non-matching
expecting success of 0008.288 'mix of file types in subdir a/ with --verbose':
expect '.gitignore:1:one a/one
.gitignore:2:ignored-* a/ignored-and-untracked' &&
test_check_ignore '
a/non-existent
a/one
a/not-ignored
a/ignored-but-in-index
a/ignored-and-untracked'
ok 288 - mix of file types in subdir a/ with --verbose
expecting success of 0008.289 'mix of file types in subdir a/ with --verbose -n':
expect ':: a/non-existent
.gitignore:1:one a/one
:: a/not-ignored
:: a/ignored-but-in-index
.gitignore:2:ignored-* a/ignored-and-untracked' &&
test_check_ignore '
a/non-existent
a/one
a/not-ignored
a/ignored-but-in-index
a/ignored-and-untracked'
ok 289 - mix of file types in subdir a/ with --verbose -n
expecting success of 0008.290 'mix of file types in subdir a/ with --verbose --non-matching':
expect ':: a/non-existent
.gitignore:1:one a/one
:: a/not-ignored
:: a/ignored-but-in-index
.gitignore:2:ignored-* a/ignored-and-untracked' &&
test_check_ignore '
a/non-existent
a/one
a/not-ignored
a/ignored-but-in-index
a/ignored-and-untracked'
ok 290 - mix of file types in subdir a/ with --verbose --non-matching
expecting success of 0008.291 'mix of file types in subdir a/ with --no-index':
expect "$expect" &&
eval "$code"
ok 291 - mix of file types in subdir a/ with --no-index
expecting success of 0008.292 'mix of file types in subdir a/ with --no-index -v':
expect '.gitignore:1:one a/one
.gitignore:2:ignored-* a/ignored-but-in-index
.gitignore:2:ignored-* a/ignored-and-untracked' &&
test_check_ignore '
a/non-existent
a/one
a/not-ignored
a/ignored-but-in-index
a/ignored-and-untracked'
ok 292 - mix of file types in subdir a/ with --no-index -v
expecting success of 0008.293 'mix of file types in subdir a/ with --no-index -v -n':
expect ':: a/non-existent
.gitignore:1:one a/one
:: a/not-ignored
.gitignore:2:ignored-* a/ignored-but-in-index
.gitignore:2:ignored-* a/ignored-and-untracked' &&
test_check_ignore '
a/non-existent
a/one
a/not-ignored
a/ignored-but-in-index
a/ignored-and-untracked'
ok 293 - mix of file types in subdir a/ with --no-index -v -n
expecting success of 0008.294 'mix of file types in subdir a/ with --no-index -v --non-matching':
expect ':: a/non-existent
.gitignore:1:one a/one
:: a/not-ignored
.gitignore:2:ignored-* a/ignored-but-in-index
.gitignore:2:ignored-* a/ignored-and-untracked' &&
test_check_ignore '
a/non-existent
a/one
a/not-ignored
a/ignored-but-in-index
a/ignored-and-untracked'
ok 294 - mix of file types in subdir a/ with --no-index -v --non-matching
expecting success of 0008.295 'mix of file types in subdir a/ with --no-index --verbose':
expect '.gitignore:1:one a/one
.gitignore:2:ignored-* a/ignored-but-in-index
.gitignore:2:ignored-* a/ignored-and-untracked' &&
test_check_ignore '
a/non-existent
a/one
a/not-ignored
a/ignored-but-in-index
a/ignored-and-untracked'
ok 295 - mix of file types in subdir a/ with --no-index --verbose
expecting success of 0008.296 'mix of file types in subdir a/ with --no-index --verbose -n':
expect ':: a/non-existent
.gitignore:1:one a/one
:: a/not-ignored
.gitignore:2:ignored-* a/ignored-but-in-index
.gitignore:2:ignored-* a/ignored-and-untracked' &&
test_check_ignore '
a/non-existent
a/one
a/not-ignored
a/ignored-but-in-index
a/ignored-and-untracked'
ok 296 - mix of file types in subdir a/ with --no-index --verbose -n
expecting success of 0008.297 'mix of file types in subdir a/ with --no-index --verbose --non-matching':
expect ':: a/non-existent
.gitignore:1:one a/one
:: a/not-ignored
.gitignore:2:ignored-* a/ignored-but-in-index
.gitignore:2:ignored-* a/ignored-and-untracked' &&
test_check_ignore '
a/non-existent
a/one
a/not-ignored
a/ignored-but-in-index
a/ignored-and-untracked'
ok 297 - mix of file types in subdir a/ with --no-index --verbose --non-matching
expecting success of 0008.298 'sub-directory local ignore':
expect "a/3-three" &&
test_check_ignore "a/3-three a/three-not-this-one"
ok 298 - sub-directory local ignore
expecting success of 0008.299 'sub-directory local ignore with --verbose':
expect "a/.gitignore:2:*three a/3-three" &&
test_check_ignore "--verbose a/3-three a/three-not-this-one"
ok 299 - sub-directory local ignore with --verbose
expecting success of 0008.300 'local ignore inside a sub-directory':
expect "3-three" &&
(
cd a &&
test_check_ignore "3-three three-not-this-one"
)
ok 300 - local ignore inside a sub-directory
expecting success of 0008.301 'local ignore inside a sub-directory with --verbose':
expect "a/.gitignore:2:*three 3-three" &&
(
cd a &&
test_check_ignore "--verbose 3-three three-not-this-one"
)
ok 301 - local ignore inside a sub-directory with --verbose
expecting success of 0008.302 'nested include of negated pattern':
expect "" &&
test_check_ignore "a/b/one" 1
ok 302 - nested include of negated pattern
expecting success of 0008.303 'nested include of negated pattern with -q':
expect "" &&
test_check_ignore "-q a/b/one" 1
ok 303 - nested include of negated pattern with -q
expecting success of 0008.304 'nested include of negated pattern with -v':
expect "a/b/.gitignore:8:!on* a/b/one" &&
test_check_ignore "-v a/b/one" 0
ok 304 - nested include of negated pattern with -v
expecting success of 0008.305 'nested include of negated pattern with -v -n':
expect "a/b/.gitignore:8:!on* a/b/one" &&
test_check_ignore "-v -n a/b/one" 0
ok 305 - nested include of negated pattern with -v -n
expecting success of 0008.306 'ignored sub-directory':
expect "$expect" &&
eval "$code"
ok 306 - ignored sub-directory
expecting success of 0008.307 'ignored sub-directory with -q':
expect '' &&
test_check_ignore "a/b/ignored-dir"
ok 307 - ignored sub-directory with -q
expecting success of 0008.308 'ignored sub-directory with --quiet':
expect '' &&
test_check_ignore "a/b/ignored-dir"
ok 308 - ignored sub-directory with --quiet
expecting success of 0008.309 'ignored sub-directory with -v':
expect 'a/b/.gitignore:5:ignored-dir/ a/b/ignored-dir' &&
test_check_ignore "a/b/ignored-dir"
ok 309 - ignored sub-directory with -v
expecting success of 0008.310 'ignored sub-directory with -v -n':
expect 'a/b/.gitignore:5:ignored-dir/ a/b/ignored-dir' &&
test_check_ignore "a/b/ignored-dir"
ok 310 - ignored sub-directory with -v -n
expecting success of 0008.311 'ignored sub-directory with -v --non-matching':
expect 'a/b/.gitignore:5:ignored-dir/ a/b/ignored-dir' &&
test_check_ignore "a/b/ignored-dir"
ok 311 - ignored sub-directory with -v --non-matching
expecting success of 0008.312 'ignored sub-directory with --verbose':
expect 'a/b/.gitignore:5:ignored-dir/ a/b/ignored-dir' &&
test_check_ignore "a/b/ignored-dir"
ok 312 - ignored sub-directory with --verbose
expecting success of 0008.313 'ignored sub-directory with --verbose -n':
expect 'a/b/.gitignore:5:ignored-dir/ a/b/ignored-dir' &&
test_check_ignore "a/b/ignored-dir"
ok 313 - ignored sub-directory with --verbose -n
expecting success of 0008.314 'ignored sub-directory with --verbose --non-matching':
expect 'a/b/.gitignore:5:ignored-dir/ a/b/ignored-dir' &&
test_check_ignore "a/b/ignored-dir"
ok 314 - ignored sub-directory with --verbose --non-matching
expecting success of 0008.315 'multiple files inside ignored sub-directory':
expect_from_stdin <<-\EOF &&
a/b/ignored-dir/foo
a/b/ignored-dir/twoooo
a/b/ignored-dir/seven
EOF
test_check_ignore "a/b/ignored-dir/foo a/b/ignored-dir/twoooo a/b/ignored-dir/seven"
ok 315 - multiple files inside ignored sub-directory
expecting success of 0008.316 'multiple files inside ignored sub-directory with -v':
expect_from_stdin <<-\EOF &&
a/b/.gitignore:5:ignored-dir/ a/b/ignored-dir/foo
a/b/.gitignore:5:ignored-dir/ a/b/ignored-dir/twoooo
a/b/.gitignore:5:ignored-dir/ a/b/ignored-dir/seven
EOF
test_check_ignore "-v a/b/ignored-dir/foo a/b/ignored-dir/twoooo a/b/ignored-dir/seven"
ok 316 - multiple files inside ignored sub-directory with -v
expecting success of 0008.317 'cd to ignored sub-directory':
expect_from_stdin <<-\EOF &&
foo
twoooo
seven
../../one
EOF
(
cd a/b/ignored-dir &&
test_check_ignore "foo twoooo ../one seven ../../one"
)
ok 317 - cd to ignored sub-directory
expecting success of 0008.318 'cd to ignored sub-directory with -v':
expect_from_stdin <<-\EOF &&
a/b/.gitignore:5:ignored-dir/ foo
a/b/.gitignore:5:ignored-dir/ twoooo
a/b/.gitignore:8:!on* ../one
a/b/.gitignore:5:ignored-dir/ seven
.gitignore:1:one ../../one
EOF
(
cd a/b/ignored-dir &&
test_check_ignore "-v foo twoooo ../one seven ../../one"
)
ok 318 - cd to ignored sub-directory with -v
expecting success of 0008.319 'symlink':
expect "$expect" &&
eval "$code"
ok 319 - symlink
expecting success of 0008.320 'symlink with -q':
expect '' &&
test_check_ignore "a/symlink" 1
ok 320 - symlink with -q
expecting success of 0008.321 'symlink with --quiet':
expect '' &&
test_check_ignore "a/symlink" 1
ok 321 - symlink with --quiet
expecting success of 0008.322 'symlink with -v':
expect '' &&
test_check_ignore "a/symlink" 1
ok 322 - symlink with -v
expecting success of 0008.323 'symlink with -v -n':
expect ':: a/symlink' &&
test_check_ignore "a/symlink" 1
ok 323 - symlink with -v -n
expecting success of 0008.324 'symlink with -v --non-matching':
expect ':: a/symlink' &&
test_check_ignore "a/symlink" 1
ok 324 - symlink with -v --non-matching
expecting success of 0008.325 'symlink with --verbose':
expect '' &&
test_check_ignore "a/symlink" 1
ok 325 - symlink with --verbose
expecting success of 0008.326 'symlink with --verbose -n':
expect ':: a/symlink' &&
test_check_ignore "a/symlink" 1
ok 326 - symlink with --verbose -n
expecting success of 0008.327 'symlink with --verbose --non-matching':
expect ':: a/symlink' &&
test_check_ignore "a/symlink" 1
ok 327 - symlink with --verbose --non-matching
expecting success of 0008.328 'beyond a symlink':
expect "$expect" &&
eval "$code"
ok 328 - beyond a symlink
expecting success of 0008.329 'beyond a symlink with -q':
expect '' &&
test_check_ignore "a/symlink/foo" 128 &&
test_stderr "fatal: pathspec 'a/symlink/foo' is beyond a symbolic link"
ok 329 - beyond a symlink with -q
expecting success of 0008.330 'beyond a symlink with --quiet':
expect '' &&
test_check_ignore "a/symlink/foo" 128 &&
test_stderr "fatal: pathspec 'a/symlink/foo' is beyond a symbolic link"
ok 330 - beyond a symlink with --quiet
expecting success of 0008.331 'beyond a symlink with -v':
expect '' &&
test_check_ignore "a/symlink/foo" 128 &&
test_stderr "fatal: pathspec 'a/symlink/foo' is beyond a symbolic link"
ok 331 - beyond a symlink with -v
expecting success of 0008.332 'beyond a symlink with -v -n':
expect '' &&
test_check_ignore "a/symlink/foo" 128 &&
test_stderr "fatal: pathspec 'a/symlink/foo' is beyond a symbolic link"
ok 332 - beyond a symlink with -v -n
expecting success of 0008.333 'beyond a symlink with -v --non-matching':
expect '' &&
test_check_ignore "a/symlink/foo" 128 &&
test_stderr "fatal: pathspec 'a/symlink/foo' is beyond a symbolic link"
ok 333 - beyond a symlink with -v --non-matching
expecting success of 0008.334 'beyond a symlink with --verbose':
expect '' &&
test_check_ignore "a/symlink/foo" 128 &&
test_stderr "fatal: pathspec 'a/symlink/foo' is beyond a symbolic link"
ok 334 - beyond a symlink with --verbose
expecting success of 0008.335 'beyond a symlink with --verbose -n':
expect '' &&
test_check_ignore "a/symlink/foo" 128 &&
test_stderr "fatal: pathspec 'a/symlink/foo' is beyond a symbolic link"
ok 335 - beyond a symlink with --verbose -n
expecting success of 0008.336 'beyond a symlink with --verbose --non-matching':
expect '' &&
test_check_ignore "a/symlink/foo" 128 &&
test_stderr "fatal: pathspec 'a/symlink/foo' is beyond a symbolic link"
ok 336 - beyond a symlink with --verbose --non-matching
expecting success of 0008.337 'beyond a symlink from subdirectory':
expect "$expect" &&
eval "$code"
ok 337 - beyond a symlink from subdirectory
expecting success of 0008.338 'beyond a symlink from subdirectory with -q':
expect '' &&
(
cd a &&
test_check_ignore "symlink/foo" 128
) &&
test_stderr "fatal: pathspec 'symlink/foo' is beyond a symbolic link"
ok 338 - beyond a symlink from subdirectory with -q
expecting success of 0008.339 'beyond a symlink from subdirectory with --quiet':
expect '' &&
(
cd a &&
test_check_ignore "symlink/foo" 128
) &&
test_stderr "fatal: pathspec 'symlink/foo' is beyond a symbolic link"
ok 339 - beyond a symlink from subdirectory with --quiet
expecting success of 0008.340 'beyond a symlink from subdirectory with -v':
expect '' &&
(
cd a &&
test_check_ignore "symlink/foo" 128
) &&
test_stderr "fatal: pathspec 'symlink/foo' is beyond a symbolic link"
ok 340 - beyond a symlink from subdirectory with -v
expecting success of 0008.341 'beyond a symlink from subdirectory with -v -n':
expect '' &&
(
cd a &&
test_check_ignore "symlink/foo" 128
) &&
test_stderr "fatal: pathspec 'symlink/foo' is beyond a symbolic link"
ok 341 - beyond a symlink from subdirectory with -v -n
expecting success of 0008.342 'beyond a symlink from subdirectory with -v --non-matching':
expect '' &&
(
cd a &&
test_check_ignore "symlink/foo" 128
) &&
test_stderr "fatal: pathspec 'symlink/foo' is beyond a symbolic link"
ok 342 - beyond a symlink from subdirectory with -v --non-matching
expecting success of 0008.343 'beyond a symlink from subdirectory with --verbose':
expect '' &&
(
cd a &&
test_check_ignore "symlink/foo" 128
) &&
test_stderr "fatal: pathspec 'symlink/foo' is beyond a symbolic link"
ok 343 - beyond a symlink from subdirectory with --verbose
expecting success of 0008.344 'beyond a symlink from subdirectory with --verbose -n':
expect '' &&
(
cd a &&
test_check_ignore "symlink/foo" 128
) &&
test_stderr "fatal: pathspec 'symlink/foo' is beyond a symbolic link"
ok 344 - beyond a symlink from subdirectory with --verbose -n
expecting success of 0008.345 'beyond a symlink from subdirectory with --verbose --non-matching':
expect '' &&
(
cd a &&
test_check_ignore "symlink/foo" 128
) &&
test_stderr "fatal: pathspec 'symlink/foo' is beyond a symbolic link"
ok 345 - beyond a symlink from subdirectory with --verbose --non-matching
expecting success of 0008.346 'submodule':
expect "$expect" &&
eval "$code"
ok 346 - submodule
expecting success of 0008.347 'submodule with -q':
expect '' &&
test_check_ignore "a/submodule/one" 128 &&
test_stderr "fatal: Pathspec 'a/submodule/one' is in submodule 'a/submodule'"
ok 347 - submodule with -q
expecting success of 0008.348 'submodule with --quiet':
expect '' &&
test_check_ignore "a/submodule/one" 128 &&
test_stderr "fatal: Pathspec 'a/submodule/one' is in submodule 'a/submodule'"
ok 348 - submodule with --quiet
expecting success of 0008.349 'submodule with -v':
expect '' &&
test_check_ignore "a/submodule/one" 128 &&
test_stderr "fatal: Pathspec 'a/submodule/one' is in submodule 'a/submodule'"
ok 349 - submodule with -v
expecting success of 0008.350 'submodule with -v -n':
expect '' &&
test_check_ignore "a/submodule/one" 128 &&
test_stderr "fatal: Pathspec 'a/submodule/one' is in submodule 'a/submodule'"
ok 350 - submodule with -v -n
expecting success of 0008.351 'submodule with -v --non-matching':
expect '' &&
test_check_ignore "a/submodule/one" 128 &&
test_stderr "fatal: Pathspec 'a/submodule/one' is in submodule 'a/submodule'"
ok 351 - submodule with -v --non-matching
expecting success of 0008.352 'submodule with --verbose':
expect '' &&
test_check_ignore "a/submodule/one" 128 &&
test_stderr "fatal: Pathspec 'a/submodule/one' is in submodule 'a/submodule'"
ok 352 - submodule with --verbose
expecting success of 0008.353 'submodule with --verbose -n':
expect '' &&
test_check_ignore "a/submodule/one" 128 &&
test_stderr "fatal: Pathspec 'a/submodule/one' is in submodule 'a/submodule'"
ok 353 - submodule with --verbose -n
expecting success of 0008.354 'submodule with --verbose --non-matching':
expect '' &&
test_check_ignore "a/submodule/one" 128 &&
test_stderr "fatal: Pathspec 'a/submodule/one' is in submodule 'a/submodule'"
ok 354 - submodule with --verbose --non-matching
expecting success of 0008.355 'submodule from subdirectory':
expect "$expect" &&
eval "$code"
ok 355 - submodule from subdirectory
expecting success of 0008.356 'submodule from subdirectory with -q':
expect '' &&
(
cd a &&
test_check_ignore "submodule/one" 128
) &&
test_stderr "fatal: Pathspec 'submodule/one' is in submodule 'a/submodule'"
ok 356 - submodule from subdirectory with -q
expecting success of 0008.357 'submodule from subdirectory with --quiet':
expect '' &&
(
cd a &&
test_check_ignore "submodule/one" 128
) &&
test_stderr "fatal: Pathspec 'submodule/one' is in submodule 'a/submodule'"
ok 357 - submodule from subdirectory with --quiet
expecting success of 0008.358 'submodule from subdirectory with -v':
expect '' &&
(
cd a &&
test_check_ignore "submodule/one" 128
) &&
test_stderr "fatal: Pathspec 'submodule/one' is in submodule 'a/submodule'"
ok 358 - submodule from subdirectory with -v
expecting success of 0008.359 'submodule from subdirectory with -v -n':
expect '' &&
(
cd a &&
test_check_ignore "submodule/one" 128
) &&
test_stderr "fatal: Pathspec 'submodule/one' is in submodule 'a/submodule'"
ok 359 - submodule from subdirectory with -v -n
expecting success of 0008.360 'submodule from subdirectory with -v --non-matching':
expect '' &&
(
cd a &&
test_check_ignore "submodule/one" 128
) &&
test_stderr "fatal: Pathspec 'submodule/one' is in submodule 'a/submodule'"
ok 360 - submodule from subdirectory with -v --non-matching
expecting success of 0008.361 'submodule from subdirectory with --verbose':
expect '' &&
(
cd a &&
test_check_ignore "submodule/one" 128
) &&
test_stderr "fatal: Pathspec 'submodule/one' is in submodule 'a/submodule'"
ok 361 - submodule from subdirectory with --verbose
expecting success of 0008.362 'submodule from subdirectory with --verbose -n':
expect '' &&
(
cd a &&
test_check_ignore "submodule/one" 128
) &&
test_stderr "fatal: Pathspec 'submodule/one' is in submodule 'a/submodule'"
ok 362 - submodule from subdirectory with --verbose -n
expecting success of 0008.363 'submodule from subdirectory with --verbose --non-matching':
expect '' &&
(
cd a &&
test_check_ignore "submodule/one" 128
) &&
test_stderr "fatal: Pathspec 'submodule/one' is in submodule 'a/submodule'"
ok 363 - submodule from subdirectory with --verbose --non-matching
expecting success of 0008.364 'global ignore not yet enabled':
expect_from_stdin <<-\EOF &&
.git/info/exclude:1:per-repo per-repo
a/.gitignore:2:*three a/globalthree
.git/info/exclude:1:per-repo a/per-repo
EOF
test_check_ignore "-v globalone per-repo a/globalthree a/per-repo not-ignored a/globaltwo"
ok 364 - global ignore not yet enabled
expecting success of 0008.365 'global ignore':
enable_global_excludes &&
expect_from_stdin <<-\EOF &&
globalone
per-repo
globalthree
a/globalthree
a/per-repo
EOF
test_check_ignore "globalone per-repo globalthree a/globalthree a/per-repo not-ignored globaltwo"
ok 365 - global ignore
expecting success of 0008.366 'global ignore with -v':
enable_global_excludes &&
expect_from_stdin <<-EOF &&
$global_excludes:1:globalone globalone
.git/info/exclude:1:per-repo per-repo
$global_excludes:3:globalthree globalthree
a/.gitignore:2:*three a/globalthree
.git/info/exclude:1:per-repo a/per-repo
$global_excludes:2:!globaltwo globaltwo
EOF
test_check_ignore "-v globalone per-repo globalthree a/globalthree a/per-repo not-ignored globaltwo"
ok 366 - global ignore with -v
expecting success of 0008.367 '--stdin':
expect_from_stdin <expected-default &&
test_check_ignore "--stdin" <stdin
ok 367 - --stdin
expecting success of 0008.368 '--stdin -q':
expect "" &&
test_check_ignore "-q --stdin" <stdin
ok 368 - --stdin -q
expecting success of 0008.369 '--stdin -v':
expect_from_stdin <expected-verbose &&
test_check_ignore "-v --stdin" <stdin
ok 369 - --stdin -v
expecting success of 0008.370 '--stdin -z':
expect_from_stdin <expected-default0 &&
test_check_ignore '--stdin -z' <stdin0
ok 370 - --stdin -z
expecting success of 0008.371 '--stdin -z -q':
expect &&
test_check_ignore '-q --stdin -z' <stdin0
ok 371 - --stdin -z -q
expecting success of 0008.372 '--stdin -z -v':
expect_from_stdin <expected-verbose0 &&
test_check_ignore '-v --stdin -z' <stdin0
ok 372 - --stdin -z -v
expecting success of 0008.373 '-z --stdin':
expect_from_stdin <expected-default0 &&
test_check_ignore '-z --stdin' <stdin0
ok 373 - -z --stdin
expecting success of 0008.374 '-z --stdin -q':
expect &&
test_check_ignore '-q -z --stdin' <stdin0
ok 374 - -z --stdin -q
expecting success of 0008.375 '-z --stdin -v':
expect_from_stdin <expected-verbose0 &&
test_check_ignore '-v -z --stdin' <stdin0
ok 375 - -z --stdin -v
expecting success of 0008.376 '--stdin from subdirectory':
expect_from_stdin <expected-default &&
(
cd a &&
test_check_ignore "--stdin" <../stdin
)
ok 376 - --stdin from subdirectory
expecting success of 0008.377 '--stdin from subdirectory with -v':
expect_from_stdin <expected-verbose &&
(
cd a &&
test_check_ignore "--stdin -v" <../stdin
)
ok 377 - --stdin from subdirectory with -v
expecting success of 0008.378 '--stdin from subdirectory with -v -n':
expect_from_stdin <expected-all &&
(
cd a &&
test_check_ignore "--stdin -v -n" <../stdin
)
ok 378 - --stdin from subdirectory with -v -n
expecting success of 0008.379 '--stdin -z from subdirectory':
expect_from_stdin <expected-default0 &&
(
cd a &&
test_check_ignore "--stdin -z" <../stdin0
)
ok 379 - --stdin -z from subdirectory
expecting success of 0008.380 '--stdin -z from subdirectory with -v':
expect_from_stdin <expected-verbose0 &&
(
cd a &&
test_check_ignore "--stdin -z -v" <../stdin0
)
ok 380 - --stdin -z from subdirectory with -v
expecting success of 0008.381 '-z --stdin from subdirectory':
expect_from_stdin <expected-default0 &&
(
cd a &&
test_check_ignore "-z --stdin" <../stdin0
)
ok 381 - -z --stdin from subdirectory
expecting success of 0008.382 '-z --stdin from subdirectory with -v':
expect_from_stdin <expected-verbose0 &&
(
cd a &&
test_check_ignore "-z --stdin -v" <../stdin0
)
ok 382 - -z --stdin from subdirectory with -v
checking prerequisite: PIPE
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-PIPE" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-PIPE" &&
# test whether the filesystem supports FIFOs
test_have_prereq !MINGW,!CYGWIN &&
rm -f testfifo && mkfifo testfifo
)
prerequisite PIPE ok
expecting success of 0008.383 'streaming support for --stdin':
mkfifo in out &&
(git check-ignore -n -v --stdin <in >out &) &&
# We cannot just "echo >in" because check-ignore would get EOF
# after echo exited; instead we open the descriptor in our
# shell, and then echo to the fd. We make sure to close it at
# the end, so that the subprocess does get EOF and dies
# properly.
#
# Similarly, we must keep "out" open so that check-ignore does
# not ever get SIGPIPE trying to write to us. Not only would that
# produce incorrect results, but then there would be no writer on the
# other end of the pipe, and we would potentially block forever trying
# to open it.
exec 9>in &&
exec 8<out &&
test_when_finished "exec 9>&-" &&
test_when_finished "exec 8<&-" &&
echo >&9 one &&
read response <&8 &&
echo "$response" | grep "^\.gitignore:1:one one" &&
echo >&9 two &&
read response <&8 &&
echo "$response" | grep "^:: two"
.gitignore:1:one one
:: two
ok 383 - streaming support for --stdin
expecting success of 0008.384 'existing file and directory':
test_when_finished "rm one" &&
test_when_finished "rmdir top-level-dir" &&
>one &&
mkdir top-level-dir &&
git check-ignore one top-level-dir >actual &&
grep one actual &&
grep top-level-dir actual
one
top-level-dir
ok 384 - existing file and directory
expecting success of 0008.385 'existing directory and file':
test_when_finished "rm one" &&
test_when_finished "rmdir top-level-dir" &&
>one &&
mkdir top-level-dir &&
git check-ignore top-level-dir one >actual &&
grep one actual &&
grep top-level-dir actual
one
top-level-dir
ok 385 - existing directory and file
expecting success of 0008.386 'exact prefix matching (with root)':
test_when_finished rm -r a &&
mkdir -p a/git a/git-foo &&
touch a/git/foo a/git-foo/bar &&
echo /git/ >a/.gitignore &&
git check-ignore a/git a/git/foo a/git-foo a/git-foo/bar >actual &&
cat >expect <<-\EOF &&
a/git
a/git/foo
EOF
test_cmp expect actual
ok 386 - exact prefix matching (with root)
expecting success of 0008.387 'exact prefix matching (without root)':
test_when_finished rm -r a &&
mkdir -p a/git a/git-foo &&
touch a/git/foo a/git-foo/bar &&
echo git/ >a/.gitignore &&
git check-ignore a/git a/git/foo a/git-foo a/git-foo/bar >actual &&
cat >expect <<-\EOF &&
a/git
a/git/foo
EOF
test_cmp expect actual
ok 387 - exact prefix matching (without root)
expecting success of 0008.388 'directories and ** matches':
cat >.gitignore <<-\EOF &&
data/**
!data/**/
!data/**/*.txt
EOF
git check-ignore file \
data/file data/data1/file1 data/data1/file1.txt \
data/data2/file2 data/data2/file2.txt >actual &&
cat >expect <<-\EOF &&
data/file
data/data1/file1
data/data2/file2
EOF
test_cmp expect actual
ok 388 - directories and ** matches
expecting success of 0008.389 'trailing whitespace is ignored':
mkdir whitespace &&
>whitespace/trailing &&
>whitespace/untracked &&
echo "whitespace/trailing " >ignore &&
cat >expect <<EOF &&
whitespace/untracked
EOF
git ls-files -o -X ignore whitespace >actual 2>err &&
test_cmp expect actual &&
test_must_be_empty err
ok 389 - trailing whitespace is ignored
expecting success of 0008.390 'quoting allows trailing whitespace':
rm -rf whitespace &&
mkdir whitespace &&
>"whitespace/trailing " &&
>whitespace/untracked &&
echo "whitespace/trailing\\ \\ " >ignore &&
echo whitespace/untracked >expect &&
git ls-files -o -X ignore whitespace >actual 2>err &&
test_cmp expect actual &&
test_must_be_empty err
ok 390 - quoting allows trailing whitespace
expecting success of 0008.391 'correct handling of backslashes':
rm -rf whitespace &&
mkdir whitespace &&
>"whitespace/trailing 1 " &&
>"whitespace/trailing 2 \\\\" &&
>"whitespace/trailing 3 \\\\" &&
>"whitespace/trailing 4 \\ " &&
>"whitespace/trailing 5 \\ \\ " &&
>"whitespace/trailing 6 \\a\\" &&
>whitespace/untracked &&
sed -e "s/Z$//" >ignore <<-\EOF &&
whitespace/trailing 1 \ Z
whitespace/trailing 2 \\\\Z
whitespace/trailing 3 \\\\ Z
whitespace/trailing 4 \\\ Z
whitespace/trailing 5 \\ \\\ Z
whitespace/trailing 6 \\a\\Z
EOF
echo whitespace/untracked >expect &&
git ls-files -o -X ignore whitespace >actual 2>err &&
test_cmp expect actual &&
test_must_be_empty err
ok 391 - correct handling of backslashes
expecting success of 0008.392 'info/exclude trumps core.excludesfile':
echo >>global-excludes usually-ignored &&
echo >>.git/info/exclude "!usually-ignored" &&
>usually-ignored &&
echo "?? usually-ignored" >expect &&
git status --porcelain usually-ignored >actual &&
test_cmp expect actual
ok 392 - info/exclude trumps core.excludesfile
expecting success of 0008.393 'set up ignore file for symlink tests':
echo "*" >ignore &&
rm -f .gitignore .git/info/exclude
ok 393 - set up ignore file for symlink tests
expecting success of 0008.394 'symlinks respected in core.excludesFile':
test_when_finished "rm symlink" &&
ln -s ignore symlink &&
test_config core.excludesFile "$(pwd)/symlink" &&
echo file >expect &&
git check-ignore file >actual 2>err &&
test_cmp expect actual &&
test_must_be_empty err
ok 394 - symlinks respected in core.excludesFile
expecting success of 0008.395 'symlinks respected in info/exclude':
test_when_finished "rm .git/info/exclude" &&
ln -s ../../ignore .git/info/exclude &&
echo file >expect &&
git check-ignore file >actual 2>err &&
test_cmp expect actual &&
test_must_be_empty err
ok 395 - symlinks respected in info/exclude
expecting success of 0008.396 'symlinks not respected in-tree':
test_when_finished "rm .gitignore" &&
ln -s ignore .gitignore &&
mkdir subdir &&
ln -s ignore subdir/.gitignore &&
test_must_fail git check-ignore subdir/file >actual 2>err &&
test_must_be_empty actual &&
test_i18ngrep "unable to access.*gitignore" err
warning: unable to access '.gitignore': Too many levels of symbolic links
warning: unable to access 'subdir/.gitignore': Too many levels of symbolic links
ok 396 - symlinks not respected in-tree
# passed all 396 test(s)
1..396
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0019-json-writer.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0019-json-writer/.git/
expecting success of 0019.1 'unit test of json-writer routines':
test-tool json-writer -u
ok 1 - unit test of json-writer routines
expecting success of 0019.2 'trivial object':
cat >expect <<-\EOF &&
{}
EOF
cat >input <<-\EOF &&
object
end
EOF
test-tool json-writer <input >actual &&
test_cmp expect actual
ok 2 - trivial object
expecting success of 0019.3 'trivial array':
cat >expect <<-\EOF &&
[]
EOF
cat >input <<-\EOF &&
array
end
EOF
test-tool json-writer <input >actual &&
test_cmp expect actual
ok 3 - trivial array
expecting success of 0019.4 'simple object':
cat >expect <<-\EOF &&
{"a":"abc","b":42,"c":3.14,"d":true,"e":false,"f":null}
EOF
cat >input <<-\EOF &&
object
object-string a abc
object-int b 42
object-double c 2 3.140
object-true d
object-false e
object-null f
end
EOF
test-tool json-writer <input >actual &&
test_cmp expect actual
ok 4 - simple object
expecting success of 0019.5 'simple array':
cat >expect <<-\EOF &&
["abc",42,3.14,true,false,null]
EOF
cat >input <<-\EOF &&
array
array-string abc
array-int 42
array-double 2 3.140
array-true
array-false
array-null
end
EOF
test-tool json-writer <input >actual &&
test_cmp expect actual
ok 5 - simple array
expecting success of 0019.6 'escape quoting string':
cat >expect <<-\EOF &&
{"a":"abc\\def"}
EOF
cat >input <<-\EOF &&
object
object-string a abc\def
end
EOF
test-tool json-writer <input >actual &&
test_cmp expect actual
ok 6 - escape quoting string
expecting success of 0019.7 'escape quoting string 2':
cat >expect <<-\EOF &&
{"a":"abc\"def"}
EOF
cat >input <<-\EOF &&
object
object-string a abc"def
end
EOF
test-tool json-writer <input >actual &&
test_cmp expect actual
ok 7 - escape quoting string 2
expecting success of 0019.8 'nested inline object':
cat >expect <<-\EOF &&
{"a":"abc","b":42,"sub1":{"c":3.14,"d":true,"sub2":{"e":false,"f":null}}}
EOF
cat >input <<-\EOF &&
object
object-string a abc
object-int b 42
object-object sub1
object-double c 2 3.140
object-true d
object-object sub2
object-false e
object-null f
end
end
end
EOF
test-tool json-writer <input >actual &&
test_cmp expect actual
ok 8 - nested inline object
expecting success of 0019.9 'nested inline array':
cat >expect <<-\EOF &&
["abc",42,[3.14,true,[false,null]]]
EOF
cat >input <<-\EOF &&
array
array-string abc
array-int 42
array-array
array-double 2 3.140
array-true
array-array
array-false
array-null
end
end
end
EOF
test-tool json-writer <input >actual &&
test_cmp expect actual
ok 9 - nested inline array
expecting success of 0019.10 'nested inline object and array':
cat >expect <<-\EOF &&
{"a":"abc","b":42,"sub1":{"c":3.14,"d":true,"sub2":[false,null]}}
EOF
cat >input <<-\EOF &&
object
object-string a abc
object-int b 42
object-object sub1
object-double c 2 3.140
object-true d
object-array sub2
array-false
array-null
end
end
end
EOF
test-tool json-writer <input >actual &&
test_cmp expect actual
ok 10 - nested inline object and array
expecting success of 0019.11 'nested inline object and array 2':
cat >expect <<-\EOF &&
{"a":"abc","b":42,"sub1":{"c":3.14,"d":true,"sub2":[false,{"g":0,"h":1},null]}}
EOF
cat >input <<-\EOF &&
object
object-string a abc
object-int b 42
object-object sub1
object-double c 2 3.140
object-true d
object-array sub2
array-false
array-object
object-int g 0
object-int h 1
end
array-null
end
end
end
EOF
test-tool json-writer <input >actual &&
test_cmp expect actual
ok 11 - nested inline object and array 2
expecting success of 0019.12 'pretty nested inline object and array 2':
sed -e "s/^|//" >expect <<-\EOF &&
|{
| "a": "abc",
| "b": 42,
| "sub1": {
| "c": 3.14,
| "d": true,
| "sub2": [
| false,
| {
| "g": 0,
| "h": 1
| },
| null
| ]
| }
|}
EOF
cat >input <<-\EOF &&
object
object-string a abc
object-int b 42
object-object sub1
object-double c 2 3.140
object-true d
object-array sub2
array-false
array-object
object-int g 0
object-int h 1
end
array-null
end
end
end
EOF
test-tool json-writer -p <input >actual &&
test_cmp expect actual
ok 12 - pretty nested inline object and array 2
expecting success of 0019.13 'inline object with no members':
cat >expect <<-\EOF &&
{"a":"abc","empty":{},"b":42}
EOF
cat >input <<-\EOF &&
object
object-string a abc
object-object empty
end
object-int b 42
end
EOF
test-tool json-writer <input >actual &&
test_cmp expect actual
ok 13 - inline object with no members
expecting success of 0019.14 'inline array with no members':
cat >expect <<-\EOF &&
{"a":"abc","empty":[],"b":42}
EOF
cat >input <<-\EOF &&
object
object-string a abc
object-array empty
end
object-int b 42
end
EOF
test-tool json-writer <input >actual &&
test_cmp expect actual
ok 14 - inline array with no members
expecting success of 0019.15 'larger empty example':
cat >expect <<-\EOF &&
{"a":"abc","empty":[{},{},{},[],{}],"b":42}
EOF
cat >input <<-\EOF &&
object
object-string a abc
object-array empty
array-object
end
array-object
end
array-object
end
array-array
end
array-object
end
end
object-int b 42
end
EOF
test-tool json-writer <input >actual &&
test_cmp expect actual
ok 15 - larger empty example
checking prerequisite: PERLJSON
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-PERLJSON" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-PERLJSON" &&
perl -MJSON -e "exit 0"
)
Can't locate JSON.pm in @INC (you may need to install the JSON module) (@INC contains: /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.36.0 /usr/local/share/perl/5.36.0 /usr/lib/arm-linux-gnueabihf/perl5/5.36 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl-base /usr/lib/arm-linux-gnueabihf/perl/5.36 /usr/share/perl/5.36 /usr/local/lib/site_perl .).
BEGIN failed--compilation aborted.
prerequisite PERLJSON not satisfied
ok 16 # skip parse JSON using Perl (missing PERLJSON)
# passed all 16 test(s)
1..16
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0000-basic.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0000-basic/.git/
expecting success of 0000.1 'verify that the running shell supports "local"':
x="notlocal" &&
y="alsonotlocal" &&
echo "local alsolocal" >expected1 &&
try_local_xy >actual1 &&
test_cmp expected1 actual1 &&
echo "notlocal alsonotlocal" >expected2 &&
echo "$x $y" >actual2 &&
test_cmp expected2 actual2
ok 1 - verify that the running shell supports "local"
expecting success of 0000.2 '.git/objects should be empty after git init in an empty repo':
find .git/objects -type f -print >should-be-empty &&
test_line_count = 0 should-be-empty
ok 2 - .git/objects should be empty after git init in an empty repo
expecting success of 0000.3 '.git/objects should have 3 subdirectories':
find .git/objects -type d -print >full-of-directories &&
test_line_count = 3 full-of-directories
ok 3 - .git/objects should have 3 subdirectories
expecting success of 0000.4 'success is reported like this':
:
ok 4 - success is reported like this
expecting success of 0000.5 'subtest: 3 passing tests':
write_and_run_sub_test_lib_test full-pass <<-\EOF &&
for i in 1 2 3
do
test_expect_success "passing test #$i" "true"
done
test_done
EOF
check_sub_test_lib_test full-pass <<-\EOF
> ok 1 - passing test #1
> ok 2 - passing test #2
> ok 3 - passing test #3
> # passed all 3 test(s)
> 1..3
EOF
ok 5 - subtest: 3 passing tests
expecting success of 0000.6 'subtest: 2/3 tests passing':
write_and_run_sub_test_lib_test_err partial-pass <<-\EOF &&
test_expect_success "passing test #1" "true"
test_expect_success "failing test #2" "false"
test_expect_success "passing test #3" "true"
test_done
EOF
check_sub_test_lib_test partial-pass <<-\EOF
> ok 1 - passing test #1
> not ok 2 - failing test #2
# false
> ok 3 - passing test #3
> # failed 1 among 3 test(s)
> 1..3
EOF
ok 6 - subtest: 2/3 tests passing
expecting success of 0000.7 'subtest: --immediate':
run_sub_test_lib_test_err partial-pass \
--immediate &&
check_sub_test_lib_test_err partial-pass \
<<-\EOF_OUT 3<<-EOF_ERR
> ok 1 - passing test #1
> not ok 2 - failing test #2
> # false
> 1..2
EOF_OUT
EOF_ERR
ok 7 - subtest: --immediate
expecting success of 0000.8 'subtest: a failing TODO test':
write_and_run_sub_test_lib_test failing-todo <<-\EOF &&
test_expect_success "passing test" "true"
test_expect_failure "pretend we have a known breakage" "false"
test_done
EOF
check_sub_test_lib_test failing-todo <<-\EOF
> ok 1 - passing test
> not ok 2 - pretend we have a known breakage # TODO known breakage
> # still have 1 known breakage(s)
> # passed all remaining 1 test(s)
> 1..2
EOF
ok 8 - subtest: a failing TODO test
expecting success of 0000.9 'subtest: a passing TODO test':
write_and_run_sub_test_lib_test passing-todo <<-\EOF &&
test_expect_failure "pretend we have fixed a known breakage" "true"
test_done
EOF
check_sub_test_lib_test passing-todo <<-\EOF
> ok 1 - pretend we have fixed a known breakage # TODO known breakage vanished
> # 1 known breakage(s) vanished; please update test(s)
> 1..1
EOF
ok 9 - subtest: a passing TODO test
expecting success of 0000.10 'subtest: 2 TODO tests, one passin':
write_and_run_sub_test_lib_test partially-passing-todos <<-\EOF &&
test_expect_failure "pretend we have a known breakage" "false"
test_expect_success "pretend we have a passing test" "true"
test_expect_failure "pretend we have fixed another known breakage" "true"
test_done
EOF
check_sub_test_lib_test partially-passing-todos <<-\EOF
> not ok 1 - pretend we have a known breakage # TODO known breakage
> ok 2 - pretend we have a passing test
> ok 3 - pretend we have fixed another known breakage # TODO known breakage vanished
> # 1 known breakage(s) vanished; please update test(s)
> # still have 1 known breakage(s)
> # passed all remaining 1 test(s)
> 1..3
EOF
ok 10 - subtest: 2 TODO tests, one passin
expecting success of 0000.11 'subtest: mixed results: pass, failure and a TODO test':
write_and_run_sub_test_lib_test_err mixed-results1 <<-\EOF &&
test_expect_success "passing test" "true"
test_expect_success "failing test" "false"
test_expect_failure "pretend we have a known breakage" "false"
test_done
EOF
check_sub_test_lib_test mixed-results1 <<-\EOF
> ok 1 - passing test
> not ok 2 - failing test
> # false
> not ok 3 - pretend we have a known breakage # TODO known breakage
> # still have 1 known breakage(s)
> # failed 1 among remaining 2 test(s)
> 1..3
EOF
ok 11 - subtest: mixed results: pass, failure and a TODO test
expecting success of 0000.12 'subtest: mixed results: a mixture of all possible results':
write_and_run_sub_test_lib_test_err mixed-results2 <<-\EOF &&
test_expect_success "passing test" "true"
test_expect_success "passing test" "true"
test_expect_success "passing test" "true"
test_expect_success "passing test" "true"
test_expect_success "failing test" "false"
test_expect_success "failing test" "false"
test_expect_success "failing test" "false"
test_expect_failure "pretend we have a known breakage" "false"
test_expect_failure "pretend we have a known breakage" "false"
test_expect_failure "pretend we have fixed a known breakage" "true"
test_done
EOF
check_sub_test_lib_test mixed-results2 <<-\EOF
> ok 1 - passing test
> ok 2 - passing test
> ok 3 - passing test
> ok 4 - passing test
> not ok 5 - failing test
> # false
> not ok 6 - failing test
> # false
> not ok 7 - failing test
> # false
> not ok 8 - pretend we have a known breakage # TODO known breakage
> not ok 9 - pretend we have a known breakage # TODO known breakage
> ok 10 - pretend we have fixed a known breakage # TODO known breakage vanished
> # 1 known breakage(s) vanished; please update test(s)
> # still have 2 known breakage(s)
> # failed 3 among remaining 7 test(s)
> 1..10
EOF
ok 12 - subtest: mixed results: a mixture of all possible results
expecting success of 0000.13 'subtest: --verbose option':
write_and_run_sub_test_lib_test_err t1234-verbose --verbose <<-\EOF &&
test_expect_success "passing test" true
test_expect_success "test with output" "echo foo"
test_expect_success "failing test" false
test_done
EOF
mv t1234-verbose/out t1234-verbose/out+ &&
grep -v "^Initialized empty" t1234-verbose/out+ >t1234-verbose/out &&
check_sub_test_lib_test t1234-verbose <<-\EOF
> expecting success of 1234.1 'passing test': true
> ok 1 - passing test
> Z
> expecting success of 1234.2 'test with output': echo foo
> foo
> ok 2 - test with output
> Z
> expecting success of 1234.3 'failing test': false
> not ok 3 - failing test
> # false
> Z
> # failed 1 among 3 test(s)
> 1..3
EOF
ok 13 - subtest: --verbose option
expecting success of 0000.14 'subtest: --verbose-only option':
run_sub_test_lib_test_err \
t1234-verbose \
--verbose-only=2 &&
check_sub_test_lib_test t1234-verbose <<-\EOF
> ok 1 - passing test
> Z
> expecting success of 1234.2 'test with output': echo foo
> foo
> ok 2 - test with output
> Z
> not ok 3 - failing test
> # false
> # failed 1 among 3 test(s)
> 1..3
EOF
ok 14 - subtest: --verbose-only option
expecting success of 0000.15 'subtest: skip one with GIT_SKIP_TESTS':
(
run_sub_test_lib_test full-pass \
--skip="full.2" &&
check_sub_test_lib_test full-pass <<-\EOF
> ok 1 - passing test #1
> ok 2 # skip passing test #2 (GIT_SKIP_TESTS)
> ok 3 - passing test #3
> # passed all 3 test(s)
> 1..3
EOF
)
ok 15 - subtest: skip one with GIT_SKIP_TESTS
expecting success of 0000.16 'subtest: skip several with GIT_SKIP_TESTS':
(
write_and_run_sub_test_lib_test git-skip-tests-several \
--skip="git.2 git.5" <<-\EOF &&
for i in 1 2 3 4 5 6
do
test_expect_success "passing test #$i" "true"
done
test_done
EOF
check_sub_test_lib_test git-skip-tests-several <<-\EOF
> ok 1 - passing test #1
> ok 2 # skip passing test #2 (GIT_SKIP_TESTS)
> ok 3 - passing test #3
> ok 4 - passing test #4
> ok 5 # skip passing test #5 (GIT_SKIP_TESTS)
> ok 6 - passing test #6
> # passed all 6 test(s)
> 1..6
EOF
)
ok 16 - subtest: skip several with GIT_SKIP_TESTS
expecting success of 0000.17 'subtest: sh pattern skipping with GIT_SKIP_TESTS':
(
run_sub_test_lib_test git-skip-tests-several \
--skip="git.[2-5]" &&
check_sub_test_lib_test git-skip-tests-several <<-\EOF
> ok 1 - passing test #1
> ok 2 # skip passing test #2 (GIT_SKIP_TESTS)
> ok 3 # skip passing test #3 (GIT_SKIP_TESTS)
> ok 4 # skip passing test #4 (GIT_SKIP_TESTS)
> ok 5 # skip passing test #5 (GIT_SKIP_TESTS)
> ok 6 - passing test #6
> # passed all 6 test(s)
> 1..6
EOF
)
ok 17 - subtest: sh pattern skipping with GIT_SKIP_TESTS
expecting success of 0000.18 'subtest: skip entire test suite with GIT_SKIP_TESTS':
(
GIT_SKIP_TESTS="git" && export GIT_SKIP_TESTS &&
run_sub_test_lib_test git-skip-tests-several \
--skip="git" &&
check_sub_test_lib_test git-skip-tests-several <<-\EOF
> 1..0 # SKIP skip all tests in git
EOF
)
ok 18 - subtest: skip entire test suite with GIT_SKIP_TESTS
expecting success of 0000.19 'subtest: GIT_SKIP_TESTS does not skip unmatched suite':
(
GIT_SKIP_TESTS="notgit" && export GIT_SKIP_TESTS &&
run_sub_test_lib_test full-pass \
--skip="notfull" &&
check_sub_test_lib_test full-pass <<-\EOF
> ok 1 - passing test #1
> ok 2 - passing test #2
> ok 3 - passing test #3
> # passed all 3 test(s)
> 1..3
EOF
)
ok 19 - subtest: GIT_SKIP_TESTS does not skip unmatched suite
expecting success of 0000.20 'subtest: --run basic':
run_sub_test_lib_test git-skip-tests-several --run="1,3,5" &&
check_sub_test_lib_test git-skip-tests-several <<-\EOF
> ok 1 - passing test #1
> ok 2 # skip passing test #2 (--run)
> ok 3 - passing test #3
> ok 4 # skip passing test #4 (--run)
> ok 5 - passing test #5
> ok 6 # skip passing test #6 (--run)
> # passed all 6 test(s)
> 1..6
EOF
ok 20 - subtest: --run basic
expecting success of 0000.21 'subtest: --run with a range':
run_sub_test_lib_test git-skip-tests-several \
--run="1-3" &&
check_sub_test_lib_test git-skip-tests-several <<-\EOF
> ok 1 - passing test #1
> ok 2 - passing test #2
> ok 3 - passing test #3
> ok 4 # skip passing test #4 (--run)
> ok 5 # skip passing test #5 (--run)
> ok 6 # skip passing test #6 (--run)
> # passed all 6 test(s)
> 1..6
EOF
ok 21 - subtest: --run with a range
expecting success of 0000.22 'subtest: --run with two ranges':
run_sub_test_lib_test git-skip-tests-several \
--run="1-2,5-6" &&
check_sub_test_lib_test git-skip-tests-several <<-\EOF
> ok 1 - passing test #1
> ok 2 - passing test #2
> ok 3 # skip passing test #3 (--run)
> ok 4 # skip passing test #4 (--run)
> ok 5 - passing test #5
> ok 6 - passing test #6
> # passed all 6 test(s)
> 1..6
EOF
ok 22 - subtest: --run with two ranges
expecting success of 0000.23 'subtest: --run with a left open range':
run_sub_test_lib_test git-skip-tests-several \
--run="-3" &&
check_sub_test_lib_test git-skip-tests-several <<-\EOF
> ok 1 - passing test #1
> ok 2 - passing test #2
> ok 3 - passing test #3
> ok 4 # skip passing test #4 (--run)
> ok 5 # skip passing test #5 (--run)
> ok 6 # skip passing test #6 (--run)
> # passed all 6 test(s)
> 1..6
EOF
ok 23 - subtest: --run with a left open range
expecting success of 0000.24 'subtest: --run with a right open range':
run_sub_test_lib_test git-skip-tests-several \
--run="4-" &&
check_sub_test_lib_test git-skip-tests-several <<-\EOF
> ok 1 # skip passing test #1 (--run)
> ok 2 # skip passing test #2 (--run)
> ok 3 # skip passing test #3 (--run)
> ok 4 - passing test #4
> ok 5 - passing test #5
> ok 6 - passing test #6
> # passed all 6 test(s)
> 1..6
EOF
ok 24 - subtest: --run with a right open range
expecting success of 0000.25 'subtest: --run with basic negation':
run_sub_test_lib_test git-skip-tests-several \
--run="!3" &&
check_sub_test_lib_test git-skip-tests-several <<-\EOF
> ok 1 - passing test #1
> ok 2 - passing test #2
> ok 3 # skip passing test #3 (--run)
> ok 4 - passing test #4
> ok 5 - passing test #5
> ok 6 - passing test #6
> # passed all 6 test(s)
> 1..6
EOF
ok 25 - subtest: --run with basic negation
expecting success of 0000.26 'subtest: --run with two negations':
run_sub_test_lib_test git-skip-tests-several \
--run="!3,!6" &&
check_sub_test_lib_test git-skip-tests-several <<-\EOF
> ok 1 - passing test #1
> ok 2 - passing test #2
> ok 3 # skip passing test #3 (--run)
> ok 4 - passing test #4
> ok 5 - passing test #5
> ok 6 # skip passing test #6 (--run)
> # passed all 6 test(s)
> 1..6
EOF
ok 26 - subtest: --run with two negations
expecting success of 0000.27 'subtest: --run a range and negation':
run_sub_test_lib_test git-skip-tests-several \
--run="-4,!2" &&
check_sub_test_lib_test git-skip-tests-several <<-\EOF
> ok 1 - passing test #1
> ok 2 # skip passing test #2 (--run)
> ok 3 - passing test #3
> ok 4 - passing test #4
> ok 5 # skip passing test #5 (--run)
> ok 6 # skip passing test #6 (--run)
> # passed all 6 test(s)
> 1..6
EOF
ok 27 - subtest: --run a range and negation
expecting success of 0000.28 'subtest: --run range negation':
run_sub_test_lib_test git-skip-tests-several \
--run="!1-3" &&
check_sub_test_lib_test git-skip-tests-several <<-\EOF
> ok 1 # skip passing test #1 (--run)
> ok 2 # skip passing test #2 (--run)
> ok 3 # skip passing test #3 (--run)
> ok 4 - passing test #4
> ok 5 - passing test #5
> ok 6 - passing test #6
> # passed all 6 test(s)
> 1..6
EOF
ok 28 - subtest: --run range negation
expecting success of 0000.29 'subtest: --run include, exclude and include':
run_sub_test_lib_test git-skip-tests-several \
--run="1-5,!1-3,2" &&
check_sub_test_lib_test git-skip-tests-several <<-\EOF
> ok 1 # skip passing test #1 (--run)
> ok 2 - passing test #2
> ok 3 # skip passing test #3 (--run)
> ok 4 - passing test #4
> ok 5 - passing test #5
> ok 6 # skip passing test #6 (--run)
> # passed all 6 test(s)
> 1..6
EOF
ok 29 - subtest: --run include, exclude and include
expecting success of 0000.30 'subtest: --run include, exclude and include, comma separated':
run_sub_test_lib_test git-skip-tests-several \
--run=1-5,!1-3,2 &&
check_sub_test_lib_test git-skip-tests-several <<-\EOF
> ok 1 # skip passing test #1 (--run)
> ok 2 - passing test #2
> ok 3 # skip passing test #3 (--run)
> ok 4 - passing test #4
> ok 5 - passing test #5
> ok 6 # skip passing test #6 (--run)
> # passed all 6 test(s)
> 1..6
EOF
ok 30 - subtest: --run include, exclude and include, comma separated
expecting success of 0000.31 'subtest: --run exclude and include':
run_sub_test_lib_test git-skip-tests-several \
--run="!3-,5" &&
check_sub_test_lib_test git-skip-tests-several <<-\EOF
> ok 1 - passing test #1
> ok 2 - passing test #2
> ok 3 # skip passing test #3 (--run)
> ok 4 # skip passing test #4 (--run)
> ok 5 - passing test #5
> ok 6 # skip passing test #6 (--run)
> # passed all 6 test(s)
> 1..6
EOF
ok 31 - subtest: --run exclude and include
expecting success of 0000.32 'subtest: --run empty selectors':
run_sub_test_lib_test git-skip-tests-several \
--run="1,,3,,,5" &&
check_sub_test_lib_test git-skip-tests-several <<-\EOF
> ok 1 - passing test #1
> ok 2 # skip passing test #2 (--run)
> ok 3 - passing test #3
> ok 4 # skip passing test #4 (--run)
> ok 5 - passing test #5
> ok 6 # skip passing test #6 (--run)
> # passed all 6 test(s)
> 1..6
EOF
ok 32 - subtest: --run empty selectors
expecting success of 0000.33 'subtest: --run substring selector':
write_and_run_sub_test_lib_test run-substring-selector \
--run="relevant" <<-\EOF &&
test_expect_success "relevant test" "true"
for i in 1 2 3 4 5 6
do
test_expect_success "other test #$i" "true"
done
test_done
EOF
check_sub_test_lib_test run-substring-selector <<-\EOF
> ok 1 - relevant test
> ok 2 # skip other test #1 (--run)
> ok 3 # skip other test #2 (--run)
> ok 4 # skip other test #3 (--run)
> ok 5 # skip other test #4 (--run)
> ok 6 # skip other test #5 (--run)
> ok 7 # skip other test #6 (--run)
> # passed all 7 test(s)
> 1..7
EOF
ok 33 - subtest: --run substring selector
expecting success of 0000.34 'subtest: --run keyword selection':
write_and_run_sub_test_lib_test_err run-inv-range-start \
--run="a-5" <<-\EOF &&
test_expect_success "passing test #1" "true"
test_done
EOF
check_sub_test_lib_test_err run-inv-range-start \
<<-\EOF_OUT 3<<-EOF_ERR
> FATAL: Unexpected exit with code 1
EOF_OUT
> error: --run: invalid non-numeric in range start: ${SQ}a-5${SQ}
EOF_ERR
ok 34 - subtest: --run keyword selection
expecting success of 0000.35 'subtest: --run invalid range end':
run_sub_test_lib_test_err run-inv-range-start \
--run="1-z" &&
check_sub_test_lib_test_err run-inv-range-start \
<<-\EOF_OUT 3<<-EOF_ERR
> FATAL: Unexpected exit with code 1
EOF_OUT
> error: --run: invalid non-numeric in range end: ${SQ}1-z${SQ}
EOF_ERR
ok 35 - subtest: --run invalid range end
expecting success of 0000.36 'subtest: --invert-exit-code without --immediate':
run_sub_test_lib_test_err full-pass \
--invert-exit-code &&
check_sub_test_lib_test_err full-pass \
<<-\EOF_OUT 3<<-EOF_ERR
ok 1 - passing test #1
ok 2 - passing test #2
ok 3 - passing test #3
# passed all 3 test(s)
1..3
# faking up non-zero exit with --invert-exit-code
EOF_OUT
EOF_ERR
ok 36 - subtest: --invert-exit-code without --immediate
expecting success of 0000.37 'subtest: --invert-exit-code with --immediate: all passed':
run_sub_test_lib_test_err full-pass \
--invert-exit-code --immediate &&
check_sub_test_lib_test_err full-pass \
<<-\EOF_OUT 3<<-EOF_ERR
ok 1 - passing test #1
ok 2 - passing test #2
ok 3 - passing test #3
# passed all 3 test(s)
1..3
# faking up non-zero exit with --invert-exit-code
EOF_OUT
EOF_ERR
ok 37 - subtest: --invert-exit-code with --immediate: all passed
expecting success of 0000.38 'subtest: --invert-exit-code without --immediate: partial pass':
run_sub_test_lib_test partial-pass \
--invert-exit-code &&
check_sub_test_lib_test partial-pass <<-\EOF
ok 1 - passing test #1
not ok 2 - # TODO induced breakage (--invert-exit-code): failing test #2
# false
ok 3 - passing test #3
# failed 1 among 3 test(s)
1..3
# faked up failures as TODO & now exiting with 0 due to --invert-exit-code
EOF
ok 38 - subtest: --invert-exit-code without --immediate: partial pass
expecting success of 0000.39 'subtest: --invert-exit-code with --immediate: partial pass':
run_sub_test_lib_test partial-pass \
--invert-exit-code --immediate &&
check_sub_test_lib_test partial-pass \
<<-\EOF_OUT 3<<-EOF_ERR
ok 1 - passing test #1
not ok 2 - # TODO induced breakage (--invert-exit-code): failing test #2
# false
1..2
# faked up failures as TODO & now exiting with 0 due to --invert-exit-code
EOF_OUT
EOF_ERR
ok 39 - subtest: --invert-exit-code with --immediate: partial pass
expecting success of 0000.40 'subtest: --invert-exit-code --immediate: got a failure':
run_sub_test_lib_test partial-pass \
--invert-exit-code --immediate &&
check_sub_test_lib_test_err partial-pass \
<<-\EOF_OUT 3<<-EOF_ERR
ok 1 - passing test #1
not ok 2 - # TODO induced breakage (--invert-exit-code): failing test #2
# false
1..2
# faked up failures as TODO & now exiting with 0 due to --invert-exit-code
EOF_OUT
EOF_ERR
ok 40 - subtest: --invert-exit-code --immediate: got a failure
expecting success of 0000.41 'subtest: tests respect prerequisites':
write_and_run_sub_test_lib_test prereqs <<-\EOF &&
test_set_prereq HAVEIT
test_expect_success HAVEIT "prereq is satisfied" "true"
test_expect_success "have_prereq works" "
test_have_prereq HAVEIT
"
test_expect_success DONTHAVEIT "prereq not satisfied" "false"
test_set_prereq HAVETHIS
test_expect_success HAVETHIS,HAVEIT "multiple prereqs" "true"
test_expect_success HAVEIT,DONTHAVEIT "mixed prereqs (yes,no)" "false"
test_expect_success DONTHAVEIT,HAVEIT "mixed prereqs (no,yes)" "false"
test_done
EOF
check_sub_test_lib_test prereqs <<-\EOF
ok 1 - prereq is satisfied
ok 2 - have_prereq works
ok 3 # skip prereq not satisfied (missing DONTHAVEIT)
ok 4 - multiple prereqs
ok 5 # skip mixed prereqs (yes,no) (missing DONTHAVEIT of HAVEIT,DONTHAVEIT)
ok 6 # skip mixed prereqs (no,yes) (missing DONTHAVEIT of DONTHAVEIT,HAVEIT)
# passed all 6 test(s)
1..6
EOF
ok 41 - subtest: tests respect prerequisites
expecting success of 0000.42 'subtest: tests respect lazy prerequisites':
write_and_run_sub_test_lib_test lazy-prereqs <<-\EOF &&
test_lazy_prereq LAZY_TRUE true
test_expect_success LAZY_TRUE "lazy prereq is satisifed" "true"
test_expect_success !LAZY_TRUE "negative lazy prereq" "false"
test_lazy_prereq LAZY_FALSE false
test_expect_success LAZY_FALSE "lazy prereq not satisfied" "false"
test_expect_success !LAZY_FALSE "negative false prereq" "true"
test_done
EOF
check_sub_test_lib_test lazy-prereqs <<-\EOF
ok 1 - lazy prereq is satisifed
ok 2 # skip negative lazy prereq (missing !LAZY_TRUE)
ok 3 # skip lazy prereq not satisfied (missing LAZY_FALSE)
ok 4 - negative false prereq
# passed all 4 test(s)
1..4
EOF
ok 42 - subtest: tests respect lazy prerequisites
expecting success of 0000.43 'subtest: nested lazy prerequisites':
write_and_run_sub_test_lib_test nested-lazy <<-\EOF &&
test_lazy_prereq NESTED_INNER "
>inner &&
rm -f outer
"
test_lazy_prereq NESTED_PREREQ "
>outer &&
test_have_prereq NESTED_INNER &&
echo can create new file in cwd >file &&
test_path_is_file outer &&
test_path_is_missing inner
"
test_expect_success NESTED_PREREQ "evaluate nested prereq" "true"
test_done
EOF
check_sub_test_lib_test nested-lazy <<-\EOF
ok 1 - evaluate nested prereq
# passed all 1 test(s)
1..1
EOF
ok 43 - subtest: nested lazy prerequisites
expecting success of 0000.44 'subtest: lazy prereqs do not turn off tracing':
write_and_run_sub_test_lib_test lazy-prereq-and-tracing \
-v -x <<-\EOF &&
test_lazy_prereq LAZY true
test_expect_success lazy "test_have_prereq LAZY && echo trace"
test_done
EOF
grep "echo trace" lazy-prereq-and-tracing/err
+ echo trace
ok 44 - subtest: lazy prereqs do not turn off tracing
expecting success of 0000.45 'subtest: tests clean up after themselves':
write_and_run_sub_test_lib_test cleanup <<-\EOF &&
clean=no
test_expect_success "do cleanup" "
test_when_finished clean=yes
"
test_expect_success "cleanup happened" "
test $clean = yes
"
test_done
EOF
check_sub_test_lib_test cleanup <<-\EOF
ok 1 - do cleanup
ok 2 - cleanup happened
# passed all 2 test(s)
1..2
EOF
ok 45 - subtest: tests clean up after themselves
expecting success of 0000.46 'subtest: tests clean up even on failures':
write_and_run_sub_test_lib_test_err \
failing-cleanup <<-\EOF &&
test_expect_success "tests clean up even after a failure" "
touch clean-after-failure &&
test_when_finished rm clean-after-failure &&
(exit 1)
"
test_expect_success "failure to clean up causes the test to fail" "
test_when_finished \"(exit 2)\"
"
test_done
EOF
check_sub_test_lib_test failing-cleanup <<-\EOF
> not ok 1 - tests clean up even after a failure
> # Z
> # touch clean-after-failure &&
> # test_when_finished rm clean-after-failure &&
> # (exit 1)
> # Z
> not ok 2 - failure to clean up causes the test to fail
> # Z
> # test_when_finished "(exit 2)"
> # Z
> # failed 2 among 2 test(s)
> 1..2
EOF
ok 46 - subtest: tests clean up even on failures
expecting success of 0000.47 'subtest: test_atexit is run':
write_and_run_sub_test_lib_test_err \
atexit-cleanup -i <<-\EOF &&
test_expect_success "tests clean up even after a failure" "
> ../../clean-atexit &&
test_atexit rm ../../clean-atexit &&
> ../../also-clean-atexit &&
test_atexit rm ../../also-clean-atexit &&
> ../../dont-clean-atexit &&
(exit 1)
"
test_done
EOF
test_path_is_file dont-clean-atexit &&
test_path_is_missing clean-atexit &&
test_path_is_missing also-clean-atexit
ok 47 - subtest: test_atexit is run
expecting success of 0000.48 'test_oid provides sane info by default':
test_oid zero >actual &&
grep "^00*\$" actual &&
rawsz="$(test_oid rawsz)" &&
hexsz="$(test_oid hexsz)" &&
# +1 accounts for the trailing newline
test $(( $hexsz + 1)) -eq $(wc -c <actual) &&
test $(( $rawsz * 2)) -eq "$hexsz"
0000000000000000000000000000000000000000
ok 48 - test_oid provides sane info by default
expecting success of 0000.49 'test_oid can look up data for SHA-1':
test_when_finished "test_detect_hash" &&
test_set_hash sha1 &&
test_oid zero >actual &&
grep "^00*\$" actual &&
rawsz="$(test_oid rawsz)" &&
hexsz="$(test_oid hexsz)" &&
test $(wc -c <actual) -eq 41 &&
test "$rawsz" -eq 20 &&
test "$hexsz" -eq 40
0000000000000000000000000000000000000000
ok 49 - test_oid can look up data for SHA-1
expecting success of 0000.50 'test_oid can look up data for SHA-256':
test_when_finished "test_detect_hash" &&
test_set_hash sha256 &&
test_oid zero >actual &&
grep "^00*\$" actual &&
rawsz="$(test_oid rawsz)" &&
hexsz="$(test_oid hexsz)" &&
test $(wc -c <actual) -eq 65 &&
test "$rawsz" -eq 32 &&
test "$hexsz" -eq 64
0000000000000000000000000000000000000000000000000000000000000000
ok 50 - test_oid can look up data for SHA-256
expecting success of 0000.51 'test_oid can look up data for a specified algorithm':
rawsz="$(test_oid --hash=sha1 rawsz)" &&
hexsz="$(test_oid --hash=sha1 hexsz)" &&
test "$rawsz" -eq 20 &&
test "$hexsz" -eq 40 &&
rawsz="$(test_oid --hash=sha256 rawsz)" &&
hexsz="$(test_oid --hash=sha256 hexsz)" &&
test "$rawsz" -eq 32 &&
test "$hexsz" -eq 64
ok 51 - test_oid can look up data for a specified algorithm
expecting success of 0000.52 'test_bool_env':
(
sane_unset envvar &&
test_bool_env envvar true &&
! test_bool_env envvar false &&
envvar= &&
export envvar &&
! test_bool_env envvar true &&
! test_bool_env envvar false &&
envvar=true &&
test_bool_env envvar true &&
test_bool_env envvar false &&
envvar=false &&
! test_bool_env envvar true &&
! test_bool_env envvar false &&
envvar=invalid &&
# When encountering an invalid bool value, test_bool_env
# prints its error message to the original stderr of the
# test script, hence the redirection of fd 7, and aborts
# with "exit 1", hence the subshell.
! ( test_bool_env envvar true ) 7>err &&
grep "error: test_bool_env requires bool values" err &&
envvar=true &&
! ( test_bool_env envvar invalid ) 7>err &&
grep "error: test_bool_env requires bool values" err
)
fatal: bad boolean config value 'invalid' for 'envvar'
error: test_bool_env requires bool values both for $envvar and for the default fallback
error: option `--default' expects a boolean value with `--type=bool`, not `invalid`
usage: test-tool env-helper --type=[bool|ulong] <options> <env-var>
--type <type> value is given this type
--default <value> default for git_env_*(...) to fall back on
--exit-code be quiet only use git_env_*() value as exit code
error: test_bool_env requires bool values both for $envvar and for the default fallback
ok 52 - test_bool_env
expecting success of 0000.53 'git update-index without --add should fail adding':
test_must_fail 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 53 - git update-index without --add should fail adding
expecting success of 0000.54 'git update-index with --add should succeed':
git update-index --add should-be-empty
ok 54 - git update-index with --add should succeed
expecting success of 0000.55 'writing tree out with git write-tree':
tree=$(git write-tree)
ok 55 - writing tree out with git write-tree
expecting success of 0000.56 'validate object ID of a known tree':
test "$tree" = "$(test_oid simpletree)"
ok 56 - validate object ID of a known tree
expecting success of 0000.57 'git update-index without --remove should fail removing':
rm -f should-be-empty full-of-directories &&
test_must_fail 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 57 - git update-index without --remove should fail removing
expecting success of 0000.58 'git update-index with --remove should be able to remove':
git update-index --remove should-be-empty
ok 58 - git update-index with --remove should be able to remove
expecting success of 0000.59 'git write-tree should be able to write an empty tree':
tree=$(git write-tree)
ok 59 - git write-tree should be able to write an empty tree
expecting success of 0000.60 'validate object ID of a known tree':
test "$tree" = $EMPTY_TREE
ok 60 - validate object ID of a known tree
expecting success of 0000.61 'adding various types of objects with git update-index --add':
mkdir path2 path3 path3/subp3 &&
paths="path0 path2/file2 path3/file3 path3/subp3/file3" &&
(
for p in $paths
do
echo "hello $p" >$p || exit 1
test_ln_s_add "hello $p" ${p}sym || exit 1
done
) &&
find path* ! -type d -print | xargs git update-index --add
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
ok 61 - adding various types of objects with git update-index --add
expecting success of 0000.62 'showing stage with git ls-files --stage':
git ls-files --stage >current
ok 62 - showing stage with git ls-files --stage
expecting success of 0000.63 'validate git ls-files output for a known tree':
cat >expected <<-EOF &&
100644 $(test_oid path0f) 0 path0
120000 $(test_oid path0s) 0 path0sym
100644 $(test_oid path2f) 0 path2/file2
120000 $(test_oid path2s) 0 path2/file2sym
100644 $(test_oid path3f) 0 path3/file3
120000 $(test_oid path3s) 0 path3/file3sym
100644 $(test_oid subp3f) 0 path3/subp3/file3
120000 $(test_oid subp3s) 0 path3/subp3/file3sym
EOF
test_cmp expected current
ok 63 - validate git ls-files output for a known tree
expecting success of 0000.64 'writing tree out with git write-tree':
tree=$(git write-tree)
ok 64 - writing tree out with git write-tree
expecting success of 0000.65 'validate object ID for a known tree':
test "$tree" = "$(test_oid root)"
ok 65 - validate object ID for a known tree
expecting success of 0000.66 'showing tree with git ls-tree':
git ls-tree $tree >current
ok 66 - showing tree with git ls-tree
expecting success of 0000.67 'git ls-tree output for a known tree':
cat >expected <<-EOF &&
100644 blob $(test_oid path0f) path0
120000 blob $(test_oid path0s) path0sym
040000 tree $(test_oid path2d) path2
040000 tree $(test_oid path3d) path3
EOF
test_cmp expected current
ok 67 - git ls-tree output for a known tree
expecting success of 0000.68 'showing tree with git ls-tree -r':
git ls-tree -r $tree >current
ok 68 - showing tree with git ls-tree -r
expecting success of 0000.69 'git ls-tree -r output for a known tree':
cat >expected <<-EOF &&
100644 blob $(test_oid path0f) path0
120000 blob $(test_oid path0s) path0sym
100644 blob $(test_oid path2f) path2/file2
120000 blob $(test_oid path2s) path2/file2sym
100644 blob $(test_oid path3f) path3/file3
120000 blob $(test_oid path3s) path3/file3sym
100644 blob $(test_oid subp3f) path3/subp3/file3
120000 blob $(test_oid subp3s) path3/subp3/file3sym
EOF
test_cmp expected current
ok 69 - git ls-tree -r output for a known tree
expecting success of 0000.70 'showing tree with git ls-tree -r -t':
git ls-tree -r -t $tree >current
ok 70 - showing tree with git ls-tree -r -t
expecting success of 0000.71 'git ls-tree -r output for a known tree':
cat >expected <<-EOF &&
100644 blob $(test_oid path0f) path0
120000 blob $(test_oid path0s) path0sym
040000 tree $(test_oid path2d) path2
100644 blob $(test_oid path2f) path2/file2
120000 blob $(test_oid path2s) path2/file2sym
040000 tree $(test_oid path3d) path3
100644 blob $(test_oid path3f) path3/file3
120000 blob $(test_oid path3s) path3/file3sym
040000 tree $(test_oid subp3d) path3/subp3
100644 blob $(test_oid subp3f) path3/subp3/file3
120000 blob $(test_oid subp3s) path3/subp3/file3sym
EOF
test_cmp expected current
ok 71 - git ls-tree -r output for a known tree
expecting success of 0000.72 'writing partial tree out with git write-tree --prefix':
ptree=$(git write-tree --prefix=path3)
ok 72 - writing partial tree out with git write-tree --prefix
expecting success of 0000.73 'validate object ID for a known tree':
test "$ptree" = $(test_oid path3d)
ok 73 - validate object ID for a known tree
expecting success of 0000.74 'writing partial tree out with git write-tree --prefix':
ptree=$(git write-tree --prefix=path3/subp3)
ok 74 - writing partial tree out with git write-tree --prefix
expecting success of 0000.75 'validate object ID for a known tree':
test "$ptree" = $(test_oid subp3d)
ok 75 - validate object ID for a known tree
expecting success of 0000.76 'put invalid objects into the index':
rm -f .git/index &&
suffix=$(echo $ZERO_OID | sed -e "s/^.//") &&
cat >badobjects <<-EOF &&
100644 blob $(test_oid 001) dir/file1
100644 blob $(test_oid 002) dir/file2
100644 blob $(test_oid 003) dir/file3
100644 blob $(test_oid 004) dir/file4
100644 blob $(test_oid 005) dir/file5
EOF
git update-index --index-info <badobjects
ok 76 - put invalid objects into the index
expecting success of 0000.77 'writing this tree without --missing-ok':
test_must_fail git write-tree
error: invalid object 100644 0000000000000000000000000000000000000001 for 'dir/file1'
fatal: git-write-tree: error building trees
ok 77 - writing this tree without --missing-ok
expecting success of 0000.78 'writing this tree with --missing-ok':
git write-tree --missing-ok
6718b1dd2231ec9ad958238ceeaa06fbfbefda94
ok 78 - writing this tree with --missing-ok
expecting success of 0000.79 'git read-tree followed by write-tree should be idempotent':
rm -f .git/index &&
git read-tree $tree &&
test_path_is_file .git/index &&
newtree=$(git write-tree) &&
test "$newtree" = "$tree"
ok 79 - git read-tree followed by write-tree should be idempotent
expecting success of 0000.80 'validate git diff-files output for a know cache/work tree state':
cat >expected <<EOF &&
:100644 100644 $(test_oid path0f) $ZERO_OID M path0
:120000 120000 $(test_oid path0s) $ZERO_OID M path0sym
:100644 100644 $(test_oid path2f) $ZERO_OID M path2/file2
:120000 120000 $(test_oid path2s) $ZERO_OID M path2/file2sym
:100644 100644 $(test_oid path3f) $ZERO_OID M path3/file3
:120000 120000 $(test_oid path3s) $ZERO_OID M path3/file3sym
:100644 100644 $(test_oid subp3f) $ZERO_OID M path3/subp3/file3
:120000 120000 $(test_oid subp3s) $ZERO_OID M path3/subp3/file3sym
EOF
git diff-files >current &&
test_cmp expected current
ok 80 - validate git diff-files output for a know cache/work tree state
expecting success of 0000.81 'git update-index --refresh should succeed':
git update-index --refresh
ok 81 - git update-index --refresh should succeed
expecting success of 0000.82 'no diff after checkout and git update-index --refresh':
git diff-files >current &&
cmp -s current /dev/null
ok 82 - no diff after checkout and git update-index --refresh
expecting success of 0000.83 'git commit-tree records the correct tree in a commit':
commit0=$(echo NO | git commit-tree $P) &&
git show --pretty=raw $commit0 >out &&
tree=$(sed -n -e "s/^tree //p" -e "/^author /q" out) &&
test "z$tree" = "z$P"
ok 83 - git commit-tree records the correct tree in a commit
expecting success of 0000.84 'git commit-tree records the correct parent in a commit':
commit1=$(echo NO | git commit-tree $P -p $commit0) &&
git show --pretty=raw $commit1 >out &&
parent=$(sed -n -e "s/^parent //p" -e "/^author /q" out) &&
test "z$commit0" = "z$parent"
ok 84 - git commit-tree records the correct parent in a commit
expecting success of 0000.85 'git commit-tree omits duplicated parent in a commit':
commit2=$(echo NO | git commit-tree $P -p $commit0 -p $commit0) &&
git show --pretty=raw $commit2 >out &&
cat >match.sed <<-\EOF &&
s/^parent //p
/^author /q
EOF
parent=$(sed -n -f match.sed out | sort -u) &&
test "z$commit0" = "z$parent" &&
git show --pretty=raw $commit2 >out &&
test_stdout_line_count = 1 sed -n -f match.sed out
error: duplicate parent d664f4b2f72710b8e019acf96c4773c8ac3993b8 ignored
ok 85 - git commit-tree omits duplicated parent in a commit
expecting success of 0000.86 'update-index D/F conflict':
mv path0 tmp &&
mv path2 path0 &&
mv tmp path2 &&
git update-index --add --replace path2 path0/file2 &&
git ls-files path0 >tmp &&
numpath0=$(wc -l <tmp) &&
test $numpath0 = 1
ok 86 - update-index D/F conflict
expecting success of 0000.87 'very long name in the index handled sanely':
a=a && # 1
a=$a$a$a$a$a$a$a$a$a$a$a$a$a$a$a$a && # 16
a=$a$a$a$a$a$a$a$a$a$a$a$a$a$a$a$a && # 256
a=$a$a$a$a$a$a$a$a$a$a$a$a$a$a$a$a && # 4096
a=${a}q &&
>path4 &&
git update-index --add path4 &&
git ls-files -s path4 >tmp &&
(
sed -e "s/ .*/ /" tmp |
tr -d "\012" &&
echo "$a"
) | git update-index --index-info &&
git ls-files "a*" >tmp &&
len=$(wc -c <tmp) &&
test $len = 4098
ok 87 - very long name in the index handled sanely
expecting success of 0000.88 'test_must_fail on a failing git command':
test_must_fail git notacommand
git: 'notacommand' is not a git command. See 'git --help'.
ok 88 - test_must_fail on a failing git command
expecting success of 0000.89 'test_must_fail on a failing git command with env':
test_must_fail env var1=a var2=b git notacommand
git: 'notacommand' is not a git command. See 'git --help'.
ok 89 - test_must_fail on a failing git command with env
expecting success of 0000.90 'test_must_fail rejects a non-git command':
! test_must_fail grep ^$ notafile 2>err &&
grep -F "test_must_fail: only 'git' is allowed" err
test_must_fail: only 'git' is allowed: grep ^$ notafile
ok 90 - test_must_fail rejects a non-git command
expecting success of 0000.91 'test_must_fail rejects a non-git command with env':
! test_must_fail env var1=a var2=b grep ^$ notafile 2>err &&
grep -F "test_must_fail: only 'git' is allowed" err
test_must_fail: only 'git' is allowed: env var1=a var2=b grep ^$ notafile
ok 91 - test_must_fail rejects a non-git command with env
# passed all 91 test(s)
1..91
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0022-crlf-rename.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0022-crlf-rename/.git/
expecting success of 0022.1 'setup':
cat "$TEST_DIRECTORY"/t0022-crlf-rename.sh >sample &&
git add sample &&
test_tick &&
git commit -m Initial &&
append_cr <"$TEST_DIRECTORY"/t0022-crlf-rename.sh >elpmas &&
git add elpmas &&
rm -f sample &&
test_tick &&
git commit -a -m Second
[master (root-commit) d48b93e] Initial
Author: A U Thor <author@example.com>
1 file changed, 34 insertions(+)
create mode 100644 sample
[master 42002cb] Second
Author: A U Thor <author@example.com>
1 file changed, 34 insertions(+), 34 deletions(-)
rename sample => elpmas (94%)
ok 1 - setup
expecting success of 0022.2 'diff -M':
git diff-tree -M -r --name-status HEAD^ HEAD >tmp &&
sed -e "s/R[0-9]*/RNUM/" tmp >actual &&
echo "RNUM sample elpmas" >expect &&
test_cmp expect actual
ok 2 - diff -M
# passed all 2 test(s)
1..2
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0023-crlf-am.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0023-crlf-am/.git/
expecting success of 0023.1 'setup':
git config core.autocrlf true &&
echo foo >bar &&
git add bar &&
test_tick &&
git commit -m initial
warning: in the working copy of 'bar', LF will be replaced by CRLF the next time Git touches it
[master (root-commit) 1adb513] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 bar
ok 1 - setup
expecting success of 0023.2 'am':
git am -3 <patchfile &&
git diff-files --name-status --exit-code
Applying: test1
ok 2 - am
# passed all 2 test(s)
1..2
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0024-crlf-archive.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0024-crlf-archive/.git/
expecting success of 0024.1 'setup':
git config core.autocrlf true &&
printf "CRLF line ending\r\nAnd another\r\n" > sample &&
git add sample &&
test_tick &&
git commit -m Initial
[master (root-commit) 4f7f1aa] Initial
Author: A U Thor <author@example.com>
1 file changed, 2 insertions(+)
create mode 100644 sample
ok 1 - setup
expecting success of 0024.2 'tar archive':
git archive --format=tar HEAD |
( mkdir untarred && cd untarred && "$TAR" -xf - ) &&
test_cmp sample untarred/sample
ok 2 - tar archive
checking prerequisite: UNZIP
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-UNZIP" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-UNZIP" &&
"$GIT_UNZIP" -v
test $? -ne 127
)
UnZip 6.00 of 20 April 2009, by Debian. Original by Info-ZIP.
Latest sources and executables are at ftp://ftp.info-zip.org/pub/infozip/ ;
see ftp://ftp.info-zip.org/pub/infozip/UnZip.html for other sites.
Compiled with gcc 12.2.0 for Unix (Linux ELF).
UnZip special compilation options:
ACORN_FTYPE_NFS
COPYRIGHT_CLEAN (PKZIP 0.9x unreducing method not supported)
SET_DIR_ATTRIB
SYMLINKS (symbolic links supported, if RTL and file system permit)
TIMESTAMP
UNIXBACKUP
USE_EF_UT_TIME
USE_UNSHRINK (PKZIP/Zip 1.x unshrinking method supported)
USE_DEFLATE64 (PKZIP 4.x Deflate64(tm) supported)
UNICODE_SUPPORT [wide-chars, char coding: other] (handle UTF-8 paths)
LARGE_FILE_SUPPORT (large files over 2 GiB supported)
ZIP64_SUPPORT (archives using Zip64 for large files supported)
USE_BZIP2 (PKZIP 4.6+, using bzip2 lib version 1.0.8, 13-Jul-2019)
VMS_TEXT_CONV
WILD_STOP_AT_DIR
[decryption, version 2.11 of 05 Jan 2007]
UnZip and ZipInfo environment options:
UNZIP: [none]
UNZIPOPT: [none]
ZIPINFO: [none]
ZIPINFOOPT: [none]
prerequisite UNZIP ok
expecting success of 0024.3 'zip archive':
git archive --format=zip HEAD >test.zip &&
( mkdir unzipped && cd unzipped && "$GIT_UNZIP" ../test.zip ) &&
test_cmp sample unzipped/sample
Archive: ../test.zip
4f7f1aaec1ee996d8f5e13c2cfbd43a378578e1f
extracting: sample
ok 3 - zip archive
# passed all 3 test(s)
1..3
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0020-crlf.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0020-crlf/.git/
expecting success of 0020.1 'setup':
git config core.autocrlf false &&
test_write_lines Hello world how are you >one &&
mkdir dir &&
test_write_lines I am very very fine thank you >dir/two &&
test_write_lines Oh here is NULQin text here | 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) &&
test_write_lines Some extra lines here >>one &&
git diff >patch.file &&
patched=$(git hash-object --stdin <one) &&
git read-tree --reset -u HEAD
[main (root-commit) 69d7d88] initial
Author: A U Thor <author@example.com>
3 files changed, 12 insertions(+)
create mode 100644 dir/two
create mode 100644 one
create mode 100644 three
ok 1 - setup
expecting success of 0020.2 'safecrlf: autocrlf=input, all CRLF':
git config core.autocrlf input &&
git config core.safecrlf true &&
test_write_lines I am all CRLF | append_cr >allcrlf &&
test_must_fail git add allcrlf
fatal: CRLF would be replaced by LF in allcrlf
ok 2 - safecrlf: autocrlf=input, all CRLF
expecting success of 0020.3 'safecrlf: autocrlf=input, mixed LF/CRLF':
git config core.autocrlf input &&
git config core.safecrlf true &&
test_write_lines Oh here is CRLFQ in text | q_to_cr >mixed &&
test_must_fail git add mixed
fatal: CRLF would be replaced by LF in mixed
ok 3 - safecrlf: autocrlf=input, mixed LF/CRLF
expecting success of 0020.4 'safecrlf: autocrlf=true, all LF':
git config core.autocrlf true &&
git config core.safecrlf true &&
test_write_lines I am all LF >alllf &&
test_must_fail git add alllf
fatal: LF would be replaced by CRLF in alllf
ok 4 - safecrlf: autocrlf=true, all LF
expecting success of 0020.5 'safecrlf: autocrlf=true mixed LF/CRLF':
git config core.autocrlf true &&
git config core.safecrlf true &&
test_write_lines Oh here is CRLFQ in text | q_to_cr >mixed &&
test_must_fail git add mixed
fatal: LF would be replaced by CRLF in mixed
ok 5 - safecrlf: autocrlf=true mixed LF/CRLF
expecting success of 0020.6 'safecrlf: print warning only once':
git config core.autocrlf input &&
git config core.safecrlf warn &&
test_write_lines I am all LF >doublewarn &&
git add doublewarn &&
git commit -m "nowarn" &&
test_write_lines Oh here is CRLFQ in text | q_to_cr >doublewarn &&
git add doublewarn 2>err &&
grep "CRLF will be replaced by LF" err >err.warnings &&
test_line_count = 1 err.warnings
[main 4d5dbcd] nowarn
Author: A U Thor <author@example.com>
1 file changed, 4 insertions(+)
create mode 100644 doublewarn
ok 6 - safecrlf: print warning only once
expecting success of 0020.7 'safecrlf: git diff demotes safecrlf=true to warn':
git config core.autocrlf input &&
git config core.safecrlf true &&
git diff HEAD
diff --git a/doublewarn b/doublewarn
index 03ba6c2..1ed2a2c 100644
--- a/doublewarn
+++ b/doublewarn
@@ -1,4 +1,6 @@
-I
-am
-all
-LF
+Oh
+here
+is
+CRLF
+in
+text
ok 7 - safecrlf: git diff demotes safecrlf=true to warn
expecting success of 0020.8 'safecrlf: no warning with safecrlf=false':
git config core.autocrlf input &&
git config core.safecrlf false &&
test_write_lines I am all CRLF | append_cr >allcrlf &&
git add allcrlf 2>err &&
test_must_be_empty err
ok 8 - safecrlf: no warning with safecrlf=false
expecting success of 0020.9 'switch off autocrlf, safecrlf, reset HEAD':
git config core.autocrlf false &&
git config core.safecrlf false &&
git reset --hard HEAD^
HEAD is now at 69d7d88 initial
ok 9 - switch off autocrlf, safecrlf, reset HEAD
expecting success of 0020.10 'update with autocrlf=input':
rm -f tmp one dir/two three &&
git read-tree --reset -u HEAD &&
git config core.autocrlf input &&
munge_cr append one &&
munge_cr append dir/two &&
git update-index -- one dir/two &&
differs=$(git diff-index --cached HEAD) &&
test -z "$differs"
ok 10 - update with autocrlf=input
expecting success of 0020.11 'update with autocrlf=true':
rm -f tmp one dir/two three &&
git read-tree --reset -u HEAD &&
git config core.autocrlf true &&
munge_cr append one &&
munge_cr append dir/two &&
git update-index -- one dir/two &&
differs=$(git diff-index --cached HEAD) &&
test -z "$differs"
ok 11 - update with autocrlf=true
expecting success of 0020.12 'checkout with autocrlf=true':
rm -f tmp one dir/two three &&
git config core.autocrlf true &&
git read-tree --reset -u HEAD &&
munge_cr remove one &&
munge_cr remove dir/two &&
git update-index -- one dir/two &&
test "$one" = $(git hash-object --stdin <one) &&
test "$two" = $(git hash-object --stdin <dir/two) &&
differs=$(git diff-index --cached HEAD) &&
test -z "$differs"
ok 12 - checkout with autocrlf=true
expecting success of 0020.13 'checkout with autocrlf=input':
rm -f tmp one dir/two three &&
git config core.autocrlf input &&
git read-tree --reset -u HEAD &&
! has_cr one &&
! has_cr dir/two &&
git update-index -- one dir/two &&
test "$one" = $(git hash-object --stdin <one) &&
test "$two" = $(git hash-object --stdin <dir/two) &&
differs=$(git diff-index --cached HEAD) &&
test -z "$differs"
ok 13 - checkout with autocrlf=input
expecting success of 0020.14 'apply patch (autocrlf=input)':
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)"
ok 14 - apply patch (autocrlf=input)
expecting success of 0020.15 'apply patch --cached (autocrlf=input)':
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)
ok 15 - apply patch --cached (autocrlf=input)
expecting success of 0020.16 'apply patch --index (autocrlf=input)':
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)
ok 16 - apply patch --index (autocrlf=input)
expecting success of 0020.17 'apply patch (autocrlf=true)':
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)"
ok 17 - apply patch (autocrlf=true)
expecting success of 0020.18 'apply patch --cached (autocrlf=true)':
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)
ok 18 - apply patch --cached (autocrlf=true)
expecting success of 0020.19 'apply patch --index (autocrlf=true)':
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)"
ok 19 - apply patch --index (autocrlf=true)
expecting success of 0020.20 '.gitattributes says two is binary':
rm -f tmp one dir/two three &&
echo "two -crlf" >.gitattributes &&
git config core.autocrlf true &&
git read-tree --reset -u HEAD &&
! has_cr dir/two &&
has_cr one &&
! has_cr three
ok 20 - .gitattributes says two is binary
expecting success of 0020.21 '.gitattributes says two is input':
rm -f tmp one dir/two three &&
echo "two crlf=input" >.gitattributes &&
git read-tree --reset -u HEAD &&
! has_cr dir/two
ok 21 - .gitattributes says two is input
expecting success of 0020.22 '.gitattributes says two and three are text':
rm -f tmp one dir/two three &&
echo "t* crlf" >.gitattributes &&
git read-tree --reset -u HEAD &&
has_cr dir/two &&
has_cr three
ok 22 - .gitattributes says two and three are text
expecting success of 0020.23 'in-tree .gitattributes (1)':
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 &&
! has_cr one &&
has_cr three
[main 31eb750] Add .gitattributes
Author: A U Thor <author@example.com>
1 file changed, 2 insertions(+)
create mode 100644 .gitattributes
ok 23 - in-tree .gitattributes (1)
expecting success of 0020.24 'in-tree .gitattributes (2)':
rm -rf tmp one dir .gitattributes patch.file three &&
git read-tree --reset HEAD &&
git checkout-index -f -q -u -a &&
! has_cr one &&
has_cr three
ok 24 - in-tree .gitattributes (2)
expecting success of 0020.25 'in-tree .gitattributes (3)':
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 &&
! has_cr one &&
has_cr three
ok 25 - in-tree .gitattributes (3)
expecting success of 0020.26 'in-tree .gitattributes (4)':
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 &&
! has_cr one &&
has_cr three
ok 26 - in-tree .gitattributes (4)
expecting success of 0020.27 'checkout with existing .gitattributes':
git config core.autocrlf true &&
git config --unset core.safecrlf &&
echo ".file2 -crlfQ" | q_to_cr >> .gitattributes &&
git add .gitattributes &&
git commit -m initial &&
echo ".file -crlfQ" | q_to_cr >> .gitattributes &&
echo "contents" > .file &&
git add .gitattributes .file &&
git commit -m second &&
git checkout main~1 &&
git checkout main &&
test "$(git diff-files --raw)" = ""
[main 6d0586a] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[main f2c783e] second
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 .file
Note: switching to 'main~1'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 6d0586a initial
Previous HEAD position was 6d0586a initial
Switched to branch 'main'
ok 27 - checkout with existing .gitattributes
expecting success of 0020.28 'checkout when deleting .gitattributes':
git rm .gitattributes &&
echo "contentsQ" | q_to_cr > .file2 &&
git add .file2 &&
git commit -m third &&
git checkout main~1 &&
git checkout main &&
has_cr .file2
rm '.gitattributes'
[main edaea69] third
Author: A U Thor <author@example.com>
2 files changed, 1 insertion(+), 4 deletions(-)
create mode 100644 .file2
delete mode 100644 .gitattributes
Note: switching to 'main~1'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at f2c783e second
M three
Previous HEAD position was f2c783e second
Switched to branch 'main'
ok 28 - checkout when deleting .gitattributes
expecting success of 0020.29 'invalid .gitattributes (must not crash)':
echo "three +crlf" >>.gitattributes &&
git diff
+crlf is not a valid attribute name: .gitattributes:1
+crlf is not a valid attribute name: .gitattributes:1
diff --git a/three b/three
index 98efc5e..c5c386a 100644
Binary files a/three and b/three differ
ok 29 - invalid .gitattributes (must not crash)
expecting success of 0020.30 'setting up for new autocrlf tests':
git config core.autocrlf false &&
git config core.safecrlf false &&
rm -rf .????* * &&
test_write_lines I am all LF >alllf &&
test_write_lines Oh here is CRLFQ in text | q_to_cr >mixed &&
test_write_lines I am all CRLF | append_cr >allcrlf &&
git add -A . &&
git commit -m "alllf, allcrlf and mixed only" &&
git tag -a -m "message" autocrlf-checkpoint
[main 021c55b] alllf, allcrlf and mixed only
Author: A U Thor <author@example.com>
7 files changed, 8 insertions(+), 14 deletions(-)
delete mode 100644 .file
delete mode 100644 .file2
create mode 100644 allcrlf
create mode 100644 alllf
delete mode 100644 dir/two
rename three => mixed (57%)
delete mode 100644 one
ok 30 - setting up for new autocrlf tests
expecting success of 0020.31 'report no change after setting autocrlf':
git config core.autocrlf true &&
touch * &&
git diff --exit-code
ok 31 - report no change after setting autocrlf
expecting success of 0020.32 'files are clean after checkout':
rm * &&
git checkout -f &&
git diff --exit-code
ok 32 - files are clean after checkout
expecting success of 0020.33 'LF only file gets CRLF with autocrlf':
test "$(cr_to_Q_no_NL < alllf)" = "IQamQallQLFQ"
ok 33 - LF only file gets CRLF with autocrlf
expecting success of 0020.34 'Mixed file is still mixed with autocrlf':
test "$(cr_to_Q_no_NL < mixed)" = "OhhereisCRLFQintext"
ok 34 - Mixed file is still mixed with autocrlf
expecting success of 0020.35 'CRLF only file has CRLF with autocrlf':
test "$(cr_to_Q_no_NL < allcrlf)" = "IQamQallQCRLFQ"
ok 35 - CRLF only file has CRLF with autocrlf
expecting success of 0020.36 'New CRLF file gets LF in repo':
tr -d "\015" < alllf | append_cr > alllf2 &&
git add alllf2 &&
git commit -m "alllf2 added" &&
git config core.autocrlf false &&
rm * &&
git checkout -f &&
test_cmp alllf alllf2
[main 6ebdedc] alllf2 added
Author: A U Thor <author@example.com>
1 file changed, 4 insertions(+)
create mode 100644 alllf2
ok 36 - New CRLF file gets LF in repo
# passed all 36 test(s)
1..36
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0025-crlf-renormalize.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0025-crlf-renormalize/.git/
expecting success of 0025.1 'setup':
git config core.autocrlf false &&
printf "LINEONE\nLINETWO\nLINETHREE\n" >LF.txt &&
printf "LINEONE\r\nLINETWO\r\nLINETHREE\r\n" >CRLF.txt &&
printf "LINEONE\r\nLINETWO\nLINETHREE\n" >CRLF_mix_LF.txt &&
git add . &&
git commit -m initial
[master (root-commit) 98c48e8] initial
Author: A U Thor <author@example.com>
3 files changed, 9 insertions(+)
create mode 100644 CRLF.txt
create mode 100644 CRLF_mix_LF.txt
create mode 100644 LF.txt
ok 1 - setup
expecting success of 0025.2 'renormalize CRLF in repo':
echo "*.txt text=auto" >.gitattributes &&
git add --renormalize "*.txt" &&
cat >expect <<-\EOF &&
i/lf w/crlf attr/text=auto CRLF.txt
i/lf w/lf attr/text=auto LF.txt
i/lf w/mixed attr/text=auto CRLF_mix_LF.txt
EOF
git ls-files --eol >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2 - renormalize CRLF in repo
expecting success of 0025.3 'ignore-errors not mistaken for renormalize':
git reset --hard &&
echo "*.txt text=auto" >.gitattributes &&
git ls-files --eol >expect &&
git add --ignore-errors "*.txt" &&
git ls-files --eol >actual &&
test_cmp expect actual
HEAD is now at 98c48e8 initial
ok 3 - ignore-errors not mistaken for renormalize
# passed all 3 test(s)
1..3
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0026-eol-config.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0026-eol-config/.git/
expecting success of 0026.1 'setup':
git config core.autocrlf false &&
echo "one text" > .gitattributes &&
test_write_lines Hello world how are you >one &&
test_write_lines I am very very fine thank you >two &&
git add . &&
git commit -m initial &&
one=$(git rev-parse HEAD:one) &&
two=$(git rev-parse HEAD:two) &&
echo happy.
[master (root-commit) f7a09ee] initial
Author: A U Thor <author@example.com>
3 files changed, 13 insertions(+)
create mode 100644 .gitattributes
create mode 100644 one
create mode 100644 two
happy.
ok 1 - setup
expecting success of 0026.2 'eol=lf puts LFs in normalized file':
rm -f .gitattributes tmp one two &&
git config core.eol lf &&
git read-tree --reset -u HEAD &&
! has_cr one &&
! has_cr two &&
onediff=$(git diff one) &&
twodiff=$(git diff two) &&
test -z "$onediff" && test -z "$twodiff"
ok 2 - eol=lf puts LFs in normalized file
expecting success of 0026.3 'eol=crlf puts CRLFs in normalized file':
rm -f .gitattributes tmp one two &&
git config core.eol crlf &&
git read-tree --reset -u HEAD &&
has_cr one &&
! has_cr two &&
onediff=$(git diff one) &&
twodiff=$(git diff two) &&
test -z "$onediff" && test -z "$twodiff"
ok 3 - eol=crlf puts CRLFs in normalized file
expecting success of 0026.4 'autocrlf=true overrides eol=lf':
rm -f .gitattributes tmp one two &&
git config core.eol lf &&
git config core.autocrlf true &&
git read-tree --reset -u HEAD &&
has_cr one &&
has_cr two &&
onediff=$(git diff one) &&
twodiff=$(git diff two) &&
test -z "$onediff" && test -z "$twodiff"
ok 4 - autocrlf=true overrides eol=lf
expecting success of 0026.5 'autocrlf=true overrides unset eol':
rm -f .gitattributes tmp one two &&
git config --unset-all core.eol &&
git config core.autocrlf true &&
git read-tree --reset -u HEAD &&
has_cr one &&
has_cr two &&
onediff=$(git diff one) &&
twodiff=$(git diff two) &&
test -z "$onediff" && test -z "$twodiff"
ok 5 - autocrlf=true overrides unset eol
ok 6 # skip eol native is crlf (missing NATIVE_CRLF)
# passed all 6 test(s)
1..6
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0028-working-tree-encoding.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0028-working-tree-encoding/.git/
expecting success of 0028.1 'setup test files':
git config core.eol lf &&
text="hallo there!\ncan you read me?" &&
echo "*.utf16 text working-tree-encoding=utf-16" >.gitattributes &&
echo "*.utf16lebom text working-tree-encoding=UTF-16LE-BOM" >>.gitattributes &&
printf "$text" >test.utf8.raw &&
printf "$text" | write_utf16 >test.utf16.raw &&
printf "$text" | write_utf32 >test.utf32.raw &&
printf "\377\376" >test.utf16lebom.raw &&
printf "$text" | iconv -f UTF-8 -t UTF-16LE >>test.utf16lebom.raw &&
# Line ending tests
printf "one\ntwo\nthree\n" >lf.utf8.raw &&
printf "one\r\ntwo\r\nthree\r\n" >crlf.utf8.raw &&
# BOM tests
printf "\0a\0b\0c" >nobom.utf16be.raw &&
printf "a\0b\0c\0" >nobom.utf16le.raw &&
printf "\376\377\0a\0b\0c" >bebom.utf16be.raw &&
printf "\377\376a\0b\0c\0" >lebom.utf16le.raw &&
printf "\0\0\0a\0\0\0b\0\0\0c" >nobom.utf32be.raw &&
printf "a\0\0\0b\0\0\0c\0\0\0" >nobom.utf32le.raw &&
printf "\0\0\376\377\0\0\0a\0\0\0b\0\0\0c" >bebom.utf32be.raw &&
printf "\377\376\0\0a\0\0\0b\0\0\0c\0\0\0" >lebom.utf32le.raw &&
# Add only UTF-16 file, we will add the UTF-32 file later
cp test.utf16.raw test.utf16 &&
cp test.utf32.raw test.utf32 &&
cp test.utf16lebom.raw test.utf16lebom &&
git add .gitattributes test.utf16 test.utf16lebom &&
git commit -m initial
checking prerequisite: NO_UTF16_BOM
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-NO_UTF16_BOM" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-NO_UTF16_BOM" &&
test $(printf abc | iconv -f UTF-8 -t UTF-16 | wc -c) = 6
)
prerequisite NO_UTF16_BOM not satisfied
checking prerequisite: NO_UTF32_BOM
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-NO_UTF32_BOM" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-NO_UTF32_BOM" &&
test $(printf abc | iconv -f UTF-8 -t UTF-32 | wc -c) = 12
)
prerequisite NO_UTF32_BOM not satisfied
source (test.utf16, considered utf-16):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16lebom, considered UTF-16LE-BOM):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16lebom, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16, considered utf-16):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16lebom, considered UTF-16LE-BOM):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16lebom, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
[main (root-commit) dfb2bb8] initial
Author: A U Thor <author@example.com>
3 files changed, 6 insertions(+)
create mode 100644 .gitattributes
create mode 100644 test.utf16
create mode 100644 test.utf16lebom
ok 1 - setup test files
expecting success of 0028.2 'ensure UTF-8 is stored in Git':
test_when_finished "rm -f test.utf16.git" &&
git cat-file -p :test.utf16 >test.utf16.git &&
test_cmp_bin test.utf8.raw test.utf16.git
ok 2 - ensure UTF-8 is stored in Git
expecting success of 0028.3 're-encode to UTF-16 on checkout':
test_when_finished "rm -f test.utf16.raw" &&
rm test.utf16 &&
git checkout test.utf16 &&
test_cmp_bin test.utf16.raw test.utf16
Updated 1 path from the index
source (test.utf16lebom, considered UTF-16LE-BOM):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16lebom, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
ok 3 - re-encode to UTF-16 on checkout
expecting success of 0028.4 're-encode to UTF-16-LE-BOM on checkout':
rm test.utf16lebom &&
git checkout test.utf16lebom &&
test_cmp_bin test.utf16lebom.raw test.utf16lebom
Updated 1 path from the index
source (test.utf16, considered utf-16):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
ok 4 - re-encode to UTF-16-LE-BOM on checkout
expecting success of 0028.5 'check $GIT_DIR/info/attributes support':
test_when_finished "rm -f test.utf32.git" &&
test_when_finished "git reset --hard HEAD" &&
mkdir .git/info &&
echo "*.utf32 text working-tree-encoding=utf-32" >.git/info/attributes &&
git add test.utf32 &&
git cat-file -p :test.utf32 >test.utf32.git &&
test_cmp_bin test.utf8.raw test.utf32.git
source (test.utf32, considered utf-32):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 0 [2m [0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 68 [2mh[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 0 [2m [0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 61 [2ma[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 0 [2m [0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 6c [2ml[0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 0 [2m [0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 6c [2ml[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 0 [2m [0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 6f [2mo[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 0 [2m [0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 20 [2m [0m | [2m25:[0m 0 [2m [0m | [2m26:[0m 0 [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 74 [2mt[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 0 [2m [0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 68 [2mh[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 0 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 65 [2me[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 0 [2m [0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 72 [2mr[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 0 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 65 [2me[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 0 [2m [0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 21 [2m![0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 0 [2m [0m | [2m51:[0m 0 [2m [0m | [2m52:[0m a [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 0 [2m [0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 63 [2mc[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 0 [2m [0m | [2m59:[0m 0 [2m [0m | [2m60:[0m 61 [2ma[0m | [2m61:[0m 0 [2m [0m | [2m62:[0m 0 [2m [0m | [2m63:[0m 0 [2m [0m
| [2m64:[0m 6e [2mn[0m | [2m65:[0m 0 [2m [0m | [2m66:[0m 0 [2m [0m | [2m67:[0m 0 [2m [0m | [2m68:[0m 20 [2m [0m | [2m69:[0m 0 [2m [0m | [2m70:[0m 0 [2m [0m | [2m71:[0m 0 [2m [0m
| [2m72:[0m 79 [2my[0m | [2m73:[0m 0 [2m [0m | [2m74:[0m 0 [2m [0m | [2m75:[0m 0 [2m [0m | [2m76:[0m 6f [2mo[0m | [2m77:[0m 0 [2m [0m | [2m78:[0m 0 [2m [0m | [2m79:[0m 0 [2m [0m
| [2m80:[0m 75 [2mu[0m | [2m81:[0m 0 [2m [0m | [2m82:[0m 0 [2m [0m | [2m83:[0m 0 [2m [0m | [2m84:[0m 20 [2m [0m | [2m85:[0m 0 [2m [0m | [2m86:[0m 0 [2m [0m | [2m87:[0m 0 [2m [0m
| [2m88:[0m 72 [2mr[0m | [2m89:[0m 0 [2m [0m | [2m90:[0m 0 [2m [0m | [2m91:[0m 0 [2m [0m | [2m92:[0m 65 [2me[0m | [2m93:[0m 0 [2m [0m | [2m94:[0m 0 [2m [0m | [2m95:[0m 0 [2m [0m
| [2m96:[0m 61 [2ma[0m | [2m97:[0m 0 [2m [0m | [2m98:[0m 0 [2m [0m | [2m99:[0m 0 [2m [0m | [2m100:[0m 64 [2md[0m | [2m101:[0m 0 [2m [0m | [2m102:[0m 0 [2m [0m | [2m103:[0m 0 [2m [0m
| [2m104:[0m 20 [2m [0m | [2m105:[0m 0 [2m [0m | [2m106:[0m 0 [2m [0m | [2m107:[0m 0 [2m [0m | [2m108:[0m 6d [2mm[0m | [2m109:[0m 0 [2m [0m | [2m110:[0m 0 [2m [0m | [2m111:[0m 0 [2m [0m
| [2m112:[0m 65 [2me[0m | [2m113:[0m 0 [2m [0m | [2m114:[0m 0 [2m [0m | [2m115:[0m 0 [2m [0m | [2m116:[0m 3f [2m?[0m | [2m117:[0m 0 [2m [0m | [2m118:[0m 0 [2m [0m | [2m119:[0m 0 [2m [0m
destination (test.utf32, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16, considered utf-16):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16lebom, considered UTF-16LE-BOM):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16lebom, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16, considered utf-16):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16lebom, considered UTF-16LE-BOM):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16lebom, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16, considered utf-16):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16lebom, considered UTF-16LE-BOM):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16lebom, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
HEAD is now at dfb2bb8 initial
ok 5 - check $GIT_DIR/info/attributes support
expecting success of 0028.6 'check prohibited UTF-16 BOM':
test_when_finished "git reset --hard HEAD" &&
echo "*.utf${i}be text working-tree-encoding=utf-${i}be" >>.gitattributes &&
echo "*.utf${i}le text working-tree-encoding=utf-${i}LE" >>.gitattributes &&
# Here we add a UTF-16 (resp. UTF-32) files with BOM (big/little-endian)
# but we tell Git to treat it as UTF-16BE/UTF-16LE (resp. UTF-32).
# In these cases the BOM is prohibited.
cp bebom.utf${i}be.raw bebom.utf${i}be &&
test_must_fail git add bebom.utf${i}be 2>err.out &&
test_i18ngrep "fatal: BOM is prohibited .* utf-${i}be" err.out &&
test_i18ngrep "use UTF-${i} as working-tree-encoding" err.out &&
cp lebom.utf${i}le.raw lebom.utf${i}be &&
test_must_fail git add lebom.utf${i}be 2>err.out &&
test_i18ngrep "fatal: BOM is prohibited .* utf-${i}be" err.out &&
test_i18ngrep "use UTF-${i} as working-tree-encoding" err.out &&
cp bebom.utf${i}be.raw bebom.utf${i}le &&
test_must_fail git add bebom.utf${i}le 2>err.out &&
test_i18ngrep "fatal: BOM is prohibited .* utf-${i}LE" err.out &&
test_i18ngrep "use UTF-${i} as working-tree-encoding" err.out &&
cp lebom.utf${i}le.raw lebom.utf${i}le &&
test_must_fail git add lebom.utf${i}le 2>err.out &&
test_i18ngrep "fatal: BOM is prohibited .* utf-${i}LE" err.out &&
test_i18ngrep "use UTF-${i} as working-tree-encoding" err.out
fatal: BOM is prohibited in 'bebom.utf16be' if encoded as utf-16be
hint: The file 'bebom.utf16be' contains a byte order mark (BOM). Please use UTF-16 as working-tree-encoding.
fatal: BOM is prohibited in 'lebom.utf16be' if encoded as utf-16be
hint: The file 'lebom.utf16be' contains a byte order mark (BOM). Please use UTF-16 as working-tree-encoding.
fatal: BOM is prohibited in 'bebom.utf16le' if encoded as utf-16LE
hint: The file 'bebom.utf16le' contains a byte order mark (BOM). Please use UTF-16 as working-tree-encoding.
fatal: BOM is prohibited in 'lebom.utf16le' if encoded as utf-16LE
hint: The file 'lebom.utf16le' contains a byte order mark (BOM). Please use UTF-16 as working-tree-encoding.
source (test.utf16, considered utf-16):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16lebom, considered UTF-16LE-BOM):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16lebom, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16, considered utf-16):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16lebom, considered UTF-16LE-BOM):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16lebom, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
HEAD is now at dfb2bb8 initial
ok 6 - check prohibited UTF-16 BOM
expecting success of 0028.7 'check required UTF-16 BOM':
test_when_finished "git reset --hard HEAD" &&
echo "*.utf${i} text working-tree-encoding=utf-${i}" >>.gitattributes &&
cp nobom.utf${i}be.raw nobom.utf${i} &&
test_must_fail git add nobom.utf${i} 2>err.out &&
test_i18ngrep "fatal: BOM is required .* utf-${i}" err.out &&
test_i18ngrep "use UTF-${i}BE or UTF-${i}LE" err.out &&
cp nobom.utf${i}le.raw nobom.utf${i} &&
test_must_fail git add nobom.utf${i} 2>err.out &&
test_i18ngrep "fatal: BOM is required .* utf-${i}" err.out &&
test_i18ngrep "use UTF-${i}BE or UTF-${i}LE" err.out
fatal: BOM is required in 'nobom.utf16' if encoded as utf-16
hint: The file 'nobom.utf16' is missing a byte order mark (BOM). Please use UTF-16BE or UTF-16LE (depending on the byte order) as working-tree-encoding.
fatal: BOM is required in 'nobom.utf16' if encoded as utf-16
hint: The file 'nobom.utf16' is missing a byte order mark (BOM). Please use UTF-16BE or UTF-16LE (depending on the byte order) as working-tree-encoding.
source (test.utf16, considered utf-16):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16lebom, considered UTF-16LE-BOM):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16lebom, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16, considered utf-16):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16lebom, considered UTF-16LE-BOM):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16lebom, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
HEAD is now at dfb2bb8 initial
ok 7 - check required UTF-16 BOM
expecting success of 0028.8 'eol conversion for UTF-16 encoded files on checkout':
test_when_finished "rm -f crlf.utf${i}.raw lf.utf${i}.raw" &&
test_when_finished "git reset --hard HEAD^" &&
cat lf.utf8.raw | write_utf${i} >lf.utf${i}.raw &&
cat crlf.utf8.raw | write_utf${i} >crlf.utf${i}.raw &&
cp crlf.utf${i}.raw eol.utf${i} &&
cat >expectIndexLF <<-EOF &&
i/lf w/-text attr/text eol.utf${i}
EOF
git add eol.utf${i} &&
git commit -m eol &&
# UTF-${i} with CRLF (Windows line endings)
rm eol.utf${i} &&
git -c core.eol=crlf checkout eol.utf${i} &&
test_cmp_bin crlf.utf${i}.raw eol.utf${i} &&
# Although the file has CRLF in the working tree,
# ensure LF in the index
git ls-files --eol eol.utf${i} >actual &&
test_cmp expectIndexLF actual &&
# UTF-${i} with LF (Unix line endings)
rm eol.utf${i} &&
git -c core.eol=lf checkout eol.utf${i} &&
test_cmp_bin lf.utf${i}.raw eol.utf${i} &&
# The file LF in the working tree, ensure LF in the index
git ls-files --eol eol.utf${i} >actual &&
test_cmp expectIndexLF actual
checking prerequisite: NO_UTF16_BOM
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-NO_UTF16_BOM" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-NO_UTF16_BOM" &&
test $(printf abc | iconv -f UTF-8 -t UTF-16 | wc -c) = 6
)
prerequisite NO_UTF16_BOM not satisfied
checking prerequisite: NO_UTF16_BOM
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-NO_UTF16_BOM" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-NO_UTF16_BOM" &&
test $(printf abc | iconv -f UTF-8 -t UTF-16 | wc -c) = 6
)
prerequisite NO_UTF16_BOM not satisfied
source (eol.utf16, considered utf-16):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 6f [2mo[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 6e [2mn[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 65 [2me[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m d [2m [0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m a [2m [0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 74 [2mt[0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 77 [2mw[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 6f [2mo[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m d [2m [0m | [2m19:[0m 0 [2m [0m | [2m20:[0m a [2m [0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 74 [2mt[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 68 [2mh[0m | [2m25:[0m 0 [2m [0m | [2m26:[0m 72 [2mr[0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 65 [2me[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 65 [2me[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m d [2m [0m | [2m33:[0m 0 [2m [0m | [2m34:[0m a [2m [0m | [2m35:[0m 0 [2m [0m
destination (eol.utf16, considered UTF-8):
| [2m 0:[0m 6f [2mo[0m | [2m 1:[0m 6e [2mn[0m | [2m 2:[0m 65 [2me[0m | [2m 3:[0m d [2m [0m | [2m 4:[0m a [2m [0m | [2m 5:[0m 74 [2mt[0m | [2m 6:[0m 77 [2mw[0m | [2m 7:[0m 6f [2mo[0m
| [2m 8:[0m d [2m [0m | [2m 9:[0m a [2m [0m | [2m10:[0m 74 [2mt[0m | [2m11:[0m 68 [2mh[0m | [2m12:[0m 72 [2mr[0m | [2m13:[0m 65 [2me[0m | [2m14:[0m 65 [2me[0m | [2m15:[0m d [2m [0m
| [2m16:[0m a [2m [0m
warning: in the working copy of 'eol.utf16', CRLF will be replaced by LF the next time Git touches it
source (test.utf16, considered utf-16):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16lebom, considered UTF-16LE-BOM):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16lebom, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (eol.utf16, considered utf-16):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 6f [2mo[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 6e [2mn[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 65 [2me[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m d [2m [0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m a [2m [0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 74 [2mt[0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 77 [2mw[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 6f [2mo[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m d [2m [0m | [2m19:[0m 0 [2m [0m | [2m20:[0m a [2m [0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 74 [2mt[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 68 [2mh[0m | [2m25:[0m 0 [2m [0m | [2m26:[0m 72 [2mr[0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 65 [2me[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 65 [2me[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m d [2m [0m | [2m33:[0m 0 [2m [0m | [2m34:[0m a [2m [0m | [2m35:[0m 0 [2m [0m
destination (eol.utf16, considered UTF-8):
| [2m 0:[0m 6f [2mo[0m | [2m 1:[0m 6e [2mn[0m | [2m 2:[0m 65 [2me[0m | [2m 3:[0m d [2m [0m | [2m 4:[0m a [2m [0m | [2m 5:[0m 74 [2mt[0m | [2m 6:[0m 77 [2mw[0m | [2m 7:[0m 6f [2mo[0m
| [2m 8:[0m d [2m [0m | [2m 9:[0m a [2m [0m | [2m10:[0m 74 [2mt[0m | [2m11:[0m 68 [2mh[0m | [2m12:[0m 72 [2mr[0m | [2m13:[0m 65 [2me[0m | [2m14:[0m 65 [2me[0m | [2m15:[0m d [2m [0m
| [2m16:[0m a [2m [0m
source (test.utf16, considered utf-16):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16lebom, considered UTF-16LE-BOM):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16lebom, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
[main 85a4f33] eol
Author: A U Thor <author@example.com>
1 file changed, 3 insertions(+)
create mode 100644 eol.utf16
Updated 1 path from the index
source (test.utf16, considered utf-16):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16lebom, considered UTF-16LE-BOM):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16lebom, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
Updated 1 path from the index
source (test.utf16, considered utf-16):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16lebom, considered UTF-16LE-BOM):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16lebom, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16, considered utf-16):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16lebom, considered UTF-16LE-BOM):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16lebom, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16, considered utf-16):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16lebom, considered UTF-16LE-BOM):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16lebom, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
HEAD is now at dfb2bb8 initial
ok 8 - eol conversion for UTF-16 encoded files on checkout
expecting success of 0028.9 'check prohibited UTF-32 BOM':
test_when_finished "git reset --hard HEAD" &&
echo "*.utf${i}be text working-tree-encoding=utf-${i}be" >>.gitattributes &&
echo "*.utf${i}le text working-tree-encoding=utf-${i}LE" >>.gitattributes &&
# Here we add a UTF-16 (resp. UTF-32) files with BOM (big/little-endian)
# but we tell Git to treat it as UTF-16BE/UTF-16LE (resp. UTF-32).
# In these cases the BOM is prohibited.
cp bebom.utf${i}be.raw bebom.utf${i}be &&
test_must_fail git add bebom.utf${i}be 2>err.out &&
test_i18ngrep "fatal: BOM is prohibited .* utf-${i}be" err.out &&
test_i18ngrep "use UTF-${i} as working-tree-encoding" err.out &&
cp lebom.utf${i}le.raw lebom.utf${i}be &&
test_must_fail git add lebom.utf${i}be 2>err.out &&
test_i18ngrep "fatal: BOM is prohibited .* utf-${i}be" err.out &&
test_i18ngrep "use UTF-${i} as working-tree-encoding" err.out &&
cp bebom.utf${i}be.raw bebom.utf${i}le &&
test_must_fail git add bebom.utf${i}le 2>err.out &&
test_i18ngrep "fatal: BOM is prohibited .* utf-${i}LE" err.out &&
test_i18ngrep "use UTF-${i} as working-tree-encoding" err.out &&
cp lebom.utf${i}le.raw lebom.utf${i}le &&
test_must_fail git add lebom.utf${i}le 2>err.out &&
test_i18ngrep "fatal: BOM is prohibited .* utf-${i}LE" err.out &&
test_i18ngrep "use UTF-${i} as working-tree-encoding" err.out
fatal: BOM is prohibited in 'bebom.utf32be' if encoded as utf-32be
hint: The file 'bebom.utf32be' contains a byte order mark (BOM). Please use UTF-32 as working-tree-encoding.
fatal: BOM is prohibited in 'lebom.utf32be' if encoded as utf-32be
hint: The file 'lebom.utf32be' contains a byte order mark (BOM). Please use UTF-32 as working-tree-encoding.
fatal: BOM is prohibited in 'bebom.utf32le' if encoded as utf-32LE
hint: The file 'bebom.utf32le' contains a byte order mark (BOM). Please use UTF-32 as working-tree-encoding.
fatal: BOM is prohibited in 'lebom.utf32le' if encoded as utf-32LE
hint: The file 'lebom.utf32le' contains a byte order mark (BOM). Please use UTF-32 as working-tree-encoding.
source (test.utf16, considered utf-16):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16lebom, considered UTF-16LE-BOM):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16lebom, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16, considered utf-16):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16lebom, considered UTF-16LE-BOM):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16lebom, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
HEAD is now at dfb2bb8 initial
ok 9 - check prohibited UTF-32 BOM
expecting success of 0028.10 'check required UTF-32 BOM':
test_when_finished "git reset --hard HEAD" &&
echo "*.utf${i} text working-tree-encoding=utf-${i}" >>.gitattributes &&
cp nobom.utf${i}be.raw nobom.utf${i} &&
test_must_fail git add nobom.utf${i} 2>err.out &&
test_i18ngrep "fatal: BOM is required .* utf-${i}" err.out &&
test_i18ngrep "use UTF-${i}BE or UTF-${i}LE" err.out &&
cp nobom.utf${i}le.raw nobom.utf${i} &&
test_must_fail git add nobom.utf${i} 2>err.out &&
test_i18ngrep "fatal: BOM is required .* utf-${i}" err.out &&
test_i18ngrep "use UTF-${i}BE or UTF-${i}LE" err.out
fatal: BOM is required in 'nobom.utf32' if encoded as utf-32
hint: The file 'nobom.utf32' is missing a byte order mark (BOM). Please use UTF-32BE or UTF-32LE (depending on the byte order) as working-tree-encoding.
fatal: BOM is required in 'nobom.utf32' if encoded as utf-32
hint: The file 'nobom.utf32' is missing a byte order mark (BOM). Please use UTF-32BE or UTF-32LE (depending on the byte order) as working-tree-encoding.
source (test.utf16, considered utf-16):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16lebom, considered UTF-16LE-BOM):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16lebom, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16, considered utf-16):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16lebom, considered UTF-16LE-BOM):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16lebom, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
HEAD is now at dfb2bb8 initial
ok 10 - check required UTF-32 BOM
expecting success of 0028.11 'eol conversion for UTF-32 encoded files on checkout':
test_when_finished "rm -f crlf.utf${i}.raw lf.utf${i}.raw" &&
test_when_finished "git reset --hard HEAD^" &&
cat lf.utf8.raw | write_utf${i} >lf.utf${i}.raw &&
cat crlf.utf8.raw | write_utf${i} >crlf.utf${i}.raw &&
cp crlf.utf${i}.raw eol.utf${i} &&
cat >expectIndexLF <<-EOF &&
i/lf w/-text attr/text eol.utf${i}
EOF
git add eol.utf${i} &&
git commit -m eol &&
# UTF-${i} with CRLF (Windows line endings)
rm eol.utf${i} &&
git -c core.eol=crlf checkout eol.utf${i} &&
test_cmp_bin crlf.utf${i}.raw eol.utf${i} &&
# Although the file has CRLF in the working tree,
# ensure LF in the index
git ls-files --eol eol.utf${i} >actual &&
test_cmp expectIndexLF actual &&
# UTF-${i} with LF (Unix line endings)
rm eol.utf${i} &&
git -c core.eol=lf checkout eol.utf${i} &&
test_cmp_bin lf.utf${i}.raw eol.utf${i} &&
# The file LF in the working tree, ensure LF in the index
git ls-files --eol eol.utf${i} >actual &&
test_cmp expectIndexLF actual
checking prerequisite: NO_UTF32_BOM
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-NO_UTF32_BOM" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-NO_UTF32_BOM" &&
test $(printf abc | iconv -f UTF-8 -t UTF-32 | wc -c) = 12
)
prerequisite NO_UTF32_BOM not satisfied
checking prerequisite: NO_UTF32_BOM
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-NO_UTF32_BOM" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-NO_UTF32_BOM" &&
test $(printf abc | iconv -f UTF-8 -t UTF-32 | wc -c) = 12
)
prerequisite NO_UTF32_BOM not satisfied
source (eol.utf32, considered utf-32):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 0 [2m [0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 0 [2m [0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6e [2mn[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 0 [2m [0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 65 [2me[0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 0 [2m [0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m d [2m [0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 0 [2m [0m | [2m19:[0m 0 [2m [0m | [2m20:[0m a [2m [0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 0 [2m [0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 74 [2mt[0m | [2m25:[0m 0 [2m [0m | [2m26:[0m 0 [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 77 [2mw[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 0 [2m [0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6f [2mo[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 0 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m d [2m [0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 0 [2m [0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m a [2m [0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 0 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 74 [2mt[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 0 [2m [0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 68 [2mh[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 0 [2m [0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 72 [2mr[0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 0 [2m [0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 0 [2m [0m | [2m59:[0m 0 [2m [0m | [2m60:[0m 65 [2me[0m | [2m61:[0m 0 [2m [0m | [2m62:[0m 0 [2m [0m | [2m63:[0m 0 [2m [0m
| [2m64:[0m d [2m [0m | [2m65:[0m 0 [2m [0m | [2m66:[0m 0 [2m [0m | [2m67:[0m 0 [2m [0m | [2m68:[0m a [2m [0m | [2m69:[0m 0 [2m [0m | [2m70:[0m 0 [2m [0m | [2m71:[0m 0 [2m [0m
destination (eol.utf32, considered UTF-8):
| [2m 0:[0m 6f [2mo[0m | [2m 1:[0m 6e [2mn[0m | [2m 2:[0m 65 [2me[0m | [2m 3:[0m d [2m [0m | [2m 4:[0m a [2m [0m | [2m 5:[0m 74 [2mt[0m | [2m 6:[0m 77 [2mw[0m | [2m 7:[0m 6f [2mo[0m
| [2m 8:[0m d [2m [0m | [2m 9:[0m a [2m [0m | [2m10:[0m 74 [2mt[0m | [2m11:[0m 68 [2mh[0m | [2m12:[0m 72 [2mr[0m | [2m13:[0m 65 [2me[0m | [2m14:[0m 65 [2me[0m | [2m15:[0m d [2m [0m
| [2m16:[0m a [2m [0m
warning: in the working copy of 'eol.utf32', CRLF will be replaced by LF the next time Git touches it
source (test.utf16, considered utf-16):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16lebom, considered UTF-16LE-BOM):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16lebom, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (eol.utf32, considered utf-32):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 0 [2m [0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 0 [2m [0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6e [2mn[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 0 [2m [0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 65 [2me[0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 0 [2m [0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m d [2m [0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 0 [2m [0m | [2m19:[0m 0 [2m [0m | [2m20:[0m a [2m [0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 0 [2m [0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 74 [2mt[0m | [2m25:[0m 0 [2m [0m | [2m26:[0m 0 [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 77 [2mw[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 0 [2m [0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6f [2mo[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 0 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m d [2m [0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 0 [2m [0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m a [2m [0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 0 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 74 [2mt[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 0 [2m [0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 68 [2mh[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 0 [2m [0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 72 [2mr[0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 0 [2m [0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 0 [2m [0m | [2m59:[0m 0 [2m [0m | [2m60:[0m 65 [2me[0m | [2m61:[0m 0 [2m [0m | [2m62:[0m 0 [2m [0m | [2m63:[0m 0 [2m [0m
| [2m64:[0m d [2m [0m | [2m65:[0m 0 [2m [0m | [2m66:[0m 0 [2m [0m | [2m67:[0m 0 [2m [0m | [2m68:[0m a [2m [0m | [2m69:[0m 0 [2m [0m | [2m70:[0m 0 [2m [0m | [2m71:[0m 0 [2m [0m
destination (eol.utf32, considered UTF-8):
| [2m 0:[0m 6f [2mo[0m | [2m 1:[0m 6e [2mn[0m | [2m 2:[0m 65 [2me[0m | [2m 3:[0m d [2m [0m | [2m 4:[0m a [2m [0m | [2m 5:[0m 74 [2mt[0m | [2m 6:[0m 77 [2mw[0m | [2m 7:[0m 6f [2mo[0m
| [2m 8:[0m d [2m [0m | [2m 9:[0m a [2m [0m | [2m10:[0m 74 [2mt[0m | [2m11:[0m 68 [2mh[0m | [2m12:[0m 72 [2mr[0m | [2m13:[0m 65 [2me[0m | [2m14:[0m 65 [2me[0m | [2m15:[0m d [2m [0m
| [2m16:[0m a [2m [0m
source (test.utf16, considered utf-16):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16lebom, considered UTF-16LE-BOM):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16lebom, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
[main 674dc3f] eol
Author: A U Thor <author@example.com>
1 file changed, 3 insertions(+)
create mode 100644 eol.utf32
Updated 1 path from the index
source (test.utf16, considered utf-16):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16lebom, considered UTF-16LE-BOM):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16lebom, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
Updated 1 path from the index
source (test.utf16, considered utf-16):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16lebom, considered UTF-16LE-BOM):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16lebom, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16, considered utf-16):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16lebom, considered UTF-16LE-BOM):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16lebom, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16, considered utf-16):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16lebom, considered UTF-16LE-BOM):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16lebom, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
HEAD is now at dfb2bb8 initial
ok 11 - eol conversion for UTF-32 encoded files on checkout
expecting success of 0028.12 'check unsupported encodings':
test_when_finished "git reset --hard HEAD" &&
echo "*.set text working-tree-encoding" >.gitattributes &&
printf "set" >t.set &&
test_must_fail git add t.set 2>err.out &&
test_i18ngrep "true/false are no valid working-tree-encodings" err.out &&
echo "*.unset text -working-tree-encoding" >.gitattributes &&
printf "unset" >t.unset &&
git add t.unset &&
echo "*.empty text working-tree-encoding=" >.gitattributes &&
printf "empty" >t.empty &&
git add t.empty &&
echo "*.garbage text working-tree-encoding=garbage" >.gitattributes &&
printf "garbage" >t.garbage &&
test_must_fail git add t.garbage 2>err.out &&
test_i18ngrep "failed to encode" err.out
fatal: true/false are no valid working-tree-encodings
fatal: failed to encode 't.garbage' from garbage to UTF-8
HEAD is now at dfb2bb8 initial
ok 12 - check unsupported encodings
expecting success of 0028.13 'error if encoding round trip is not the same during refresh':
BEFORE_STATE=$(git rev-parse HEAD) &&
test_when_finished "git reset --hard $BEFORE_STATE" &&
# Add and commit a UTF-16 file but skip the "working-tree-encoding"
# filter. Consequently, the in-repo representation is UTF-16 and not
# UTF-8. This simulates a Git version that has no working tree encoding
# support.
echo "*.utf16le text working-tree-encoding=utf-16le" >.gitattributes &&
echo "hallo" >nonsense.utf16le &&
TEST_HASH=$(git hash-object --no-filters -w nonsense.utf16le) &&
git update-index --add --cacheinfo 100644 $TEST_HASH nonsense.utf16le &&
COMMIT=$(git commit-tree -p $(git rev-parse HEAD) -m "plain commit" $(git write-tree)) &&
git update-ref refs/heads/main $COMMIT &&
test_must_fail git checkout HEAD^ 2>err.out &&
test_i18ngrep "error: .* overwritten by checkout:" err.out
error: Your local changes to the following files would be overwritten by checkout:
HEAD is now at dfb2bb8 initial
ok 13 - error if encoding round trip is not the same during refresh
expecting success of 0028.14 'error if encoding garbage is already in Git':
BEFORE_STATE=$(git rev-parse HEAD) &&
test_when_finished "git reset --hard $BEFORE_STATE" &&
# Skip the UTF-16 filter for the added file
# This simulates a Git version that has no checkoutEncoding support
cp nobom.utf16be.raw nonsense.utf16 &&
TEST_HASH=$(git hash-object --no-filters -w nonsense.utf16) &&
git update-index --add --cacheinfo 100644 $TEST_HASH nonsense.utf16 &&
COMMIT=$(git commit-tree -p $(git rev-parse HEAD) -m "plain commit" $(git write-tree)) &&
git update-ref refs/heads/main $COMMIT &&
git diff 2>err.out &&
test_i18ngrep "error: BOM is required" err.out
source (test.utf16, considered utf-16):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16lebom, considered UTF-16LE-BOM):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16lebom, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16, considered utf-16):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16lebom, considered UTF-16LE-BOM):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16lebom, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
error: BOM is required in 'nonsense.utf16' if encoded as utf-16
error: BOM is required in 'nonsense.utf16' if encoded as utf-16
source (test.utf16, considered utf-16):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16lebom, considered UTF-16LE-BOM):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16lebom, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16, considered utf-16):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16lebom, considered UTF-16LE-BOM):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16lebom, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
HEAD is now at dfb2bb8 initial
ok 14 - error if encoding garbage is already in Git
checking prerequisite: ICONV_SHIFT_JIS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-ICONV_SHIFT_JIS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-ICONV_SHIFT_JIS" &&
iconv -f UTF-8 -t SHIFT-JIS </dev/null
)
prerequisite ICONV_SHIFT_JIS ok
expecting success of 0028.15 'check roundtrip encoding':
test_when_finished "rm -f roundtrip.shift roundtrip.utf16" &&
test_when_finished "git reset --hard HEAD" &&
text="hallo there!\nroundtrip test here!" &&
printf "$text" | iconv -f UTF-8 -t SHIFT-JIS >roundtrip.shift &&
printf "$text" | write_utf16 >roundtrip.utf16 &&
echo "*.shift text working-tree-encoding=SHIFT-JIS" >>.gitattributes &&
# SHIFT-JIS encoded files are round-trip checked by default...
GIT_TRACE=1 git add .gitattributes roundtrip.shift 2>&1 |
grep "Checking roundtrip encoding for SHIFT-JIS" &&
git reset &&
# ... unless we overwrite the Git config!
! GIT_TRACE=1 git -c core.checkRoundtripEncoding=garbage \
add .gitattributes roundtrip.shift 2>&1 |
grep "Checking roundtrip encoding for SHIFT-JIS" &&
git reset &&
# UTF-16 encoded files should not be round-trip checked by default...
! GIT_TRACE=1 git add roundtrip.utf16 2>&1 |
grep "Checking roundtrip encoding for UTF-16" &&
git reset &&
# ... unless we tell Git to check it!
GIT_TRACE=1 git -c core.checkRoundtripEncoding="UTF-16, UTF-32" \
add roundtrip.utf16 2>&1 |
grep "Checking roundtrip encoding for utf-16" &&
git reset &&
# ... unless we tell Git to check it!
# (here we also check that the casing of the encoding is irrelevant)
GIT_TRACE=1 git -c core.checkRoundtripEncoding="UTF-32, utf-16" \
add roundtrip.utf16 2>&1 |
grep "Checking roundtrip encoding for utf-16" &&
git reset
checking prerequisite: NO_UTF16_BOM
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-NO_UTF16_BOM" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-NO_UTF16_BOM" &&
test $(printf abc | iconv -f UTF-8 -t UTF-16 | wc -c) = 6
)
prerequisite NO_UTF16_BOM not satisfied
Checking roundtrip encoding for SHIFT-JIS...
source (test.utf16, considered utf-16):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16lebom, considered UTF-16LE-BOM):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16lebom, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
Unstaged changes after reset:
M .gitattributes
source (test.utf16, considered utf-16):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16lebom, considered UTF-16LE-BOM):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16lebom, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
Unstaged changes after reset:
M .gitattributes
source (test.utf16, considered utf-16):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16lebom, considered UTF-16LE-BOM):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16lebom, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
Unstaged changes after reset:
M .gitattributes
Checking roundtrip encoding for utf-16...
source (test.utf16, considered utf-16):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16lebom, considered UTF-16LE-BOM):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16lebom, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
Unstaged changes after reset:
M .gitattributes
Checking roundtrip encoding for utf-16...
source (test.utf16, considered utf-16):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16lebom, considered UTF-16LE-BOM):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16lebom, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
Unstaged changes after reset:
M .gitattributes
source (test.utf16, considered utf-16):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16lebom, considered UTF-16LE-BOM):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16lebom, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16, considered utf-16):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
source (test.utf16lebom, considered UTF-16LE-BOM):
| [2m 0:[0m ff [2m [0m | [2m 1:[0m fe [2m [0m | [2m 2:[0m 68 [2mh[0m | [2m 3:[0m 0 [2m [0m | [2m 4:[0m 61 [2ma[0m | [2m 5:[0m 0 [2m [0m | [2m 6:[0m 6c [2ml[0m | [2m 7:[0m 0 [2m [0m
| [2m 8:[0m 6c [2ml[0m | [2m 9:[0m 0 [2m [0m | [2m10:[0m 6f [2mo[0m | [2m11:[0m 0 [2m [0m | [2m12:[0m 20 [2m [0m | [2m13:[0m 0 [2m [0m | [2m14:[0m 74 [2mt[0m | [2m15:[0m 0 [2m [0m
| [2m16:[0m 68 [2mh[0m | [2m17:[0m 0 [2m [0m | [2m18:[0m 65 [2me[0m | [2m19:[0m 0 [2m [0m | [2m20:[0m 72 [2mr[0m | [2m21:[0m 0 [2m [0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 0 [2m [0m
| [2m24:[0m 21 [2m![0m | [2m25:[0m 0 [2m [0m | [2m26:[0m a [2m [0m | [2m27:[0m 0 [2m [0m | [2m28:[0m 63 [2mc[0m | [2m29:[0m 0 [2m [0m | [2m30:[0m 61 [2ma[0m | [2m31:[0m 0 [2m [0m
| [2m32:[0m 6e [2mn[0m | [2m33:[0m 0 [2m [0m | [2m34:[0m 20 [2m [0m | [2m35:[0m 0 [2m [0m | [2m36:[0m 79 [2my[0m | [2m37:[0m 0 [2m [0m | [2m38:[0m 6f [2mo[0m | [2m39:[0m 0 [2m [0m
| [2m40:[0m 75 [2mu[0m | [2m41:[0m 0 [2m [0m | [2m42:[0m 20 [2m [0m | [2m43:[0m 0 [2m [0m | [2m44:[0m 72 [2mr[0m | [2m45:[0m 0 [2m [0m | [2m46:[0m 65 [2me[0m | [2m47:[0m 0 [2m [0m
| [2m48:[0m 61 [2ma[0m | [2m49:[0m 0 [2m [0m | [2m50:[0m 64 [2md[0m | [2m51:[0m 0 [2m [0m | [2m52:[0m 20 [2m [0m | [2m53:[0m 0 [2m [0m | [2m54:[0m 6d [2mm[0m | [2m55:[0m 0 [2m [0m
| [2m56:[0m 65 [2me[0m | [2m57:[0m 0 [2m [0m | [2m58:[0m 3f [2m?[0m | [2m59:[0m 0 [2m [0m
destination (test.utf16lebom, considered UTF-8):
| [2m 0:[0m 68 [2mh[0m | [2m 1:[0m 61 [2ma[0m | [2m 2:[0m 6c [2ml[0m | [2m 3:[0m 6c [2ml[0m | [2m 4:[0m 6f [2mo[0m | [2m 5:[0m 20 [2m [0m | [2m 6:[0m 74 [2mt[0m | [2m 7:[0m 68 [2mh[0m
| [2m 8:[0m 65 [2me[0m | [2m 9:[0m 72 [2mr[0m | [2m10:[0m 65 [2me[0m | [2m11:[0m 21 [2m![0m | [2m12:[0m a [2m [0m | [2m13:[0m 63 [2mc[0m | [2m14:[0m 61 [2ma[0m | [2m15:[0m 6e [2mn[0m
| [2m16:[0m 20 [2m [0m | [2m17:[0m 79 [2my[0m | [2m18:[0m 6f [2mo[0m | [2m19:[0m 75 [2mu[0m | [2m20:[0m 20 [2m [0m | [2m21:[0m 72 [2mr[0m | [2m22:[0m 65 [2me[0m | [2m23:[0m 61 [2ma[0m
| [2m24:[0m 64 [2md[0m | [2m25:[0m 20 [2m [0m | [2m26:[0m 6d [2mm[0m | [2m27:[0m 65 [2me[0m | [2m28:[0m 3f [2m?[0m
HEAD is now at dfb2bb8 initial
ok 15 - check roundtrip encoding
expecting success of 0028.16 'Commit UTF-8, checkout UTF-8':
test_when_finished "git checkout HEAD -- .gitattributes" &&
test_ext="commit_utf8_checkout_$encoding" &&
test_file="test.$test_ext" &&
# Commit as UTF-8
echo "*.$test_ext text working-tree-encoding=UTF-8" >.gitattributes &&
printf "$orig_string" >$test_file &&
git add $test_file &&
git commit -m "Test data" &&
# Checkout in tested encoding
rm $test_file &&
echo "*.$test_ext text working-tree-encoding=$encoding" >.gitattributes &&
git checkout HEAD -- $test_file &&
# Test
printf $expect_bytes >$test_file.raw &&
test_cmp_bin $test_file.raw $test_file
[main 7887505] Test data
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 test.commit_utf8_checkout_UTF-8
ok 16 - Commit UTF-8, checkout UTF-8
expecting success of 0028.17 'Commit UTF-8, checkout UTF-16LE':
test_when_finished "git checkout HEAD -- .gitattributes" &&
test_ext="commit_utf8_checkout_$encoding" &&
test_file="test.$test_ext" &&
# Commit as UTF-8
echo "*.$test_ext text working-tree-encoding=UTF-8" >.gitattributes &&
printf "$orig_string" >$test_file &&
git add $test_file &&
git commit -m "Test data" &&
# Checkout in tested encoding
rm $test_file &&
echo "*.$test_ext text working-tree-encoding=$encoding" >.gitattributes &&
git checkout HEAD -- $test_file &&
# Test
printf $expect_bytes >$test_file.raw &&
test_cmp_bin $test_file.raw $test_file
[main dd0bb11] Test data
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 test.commit_utf8_checkout_UTF-16LE
ok 17 - Commit UTF-8, checkout UTF-16LE
expecting success of 0028.18 'Commit UTF-8, checkout UTF-16BE':
test_when_finished "git checkout HEAD -- .gitattributes" &&
test_ext="commit_utf8_checkout_$encoding" &&
test_file="test.$test_ext" &&
# Commit as UTF-8
echo "*.$test_ext text working-tree-encoding=UTF-8" >.gitattributes &&
printf "$orig_string" >$test_file &&
git add $test_file &&
git commit -m "Test data" &&
# Checkout in tested encoding
rm $test_file &&
echo "*.$test_ext text working-tree-encoding=$encoding" >.gitattributes &&
git checkout HEAD -- $test_file &&
# Test
printf $expect_bytes >$test_file.raw &&
test_cmp_bin $test_file.raw $test_file
[main ccf08f2] Test data
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 test.commit_utf8_checkout_UTF-16BE
ok 18 - Commit UTF-8, checkout UTF-16BE
expecting success of 0028.19 'Commit UTF-8, checkout UTF-16LE-BOM':
test_when_finished "git checkout HEAD -- .gitattributes" &&
test_ext="commit_utf8_checkout_$encoding" &&
test_file="test.$test_ext" &&
# Commit as UTF-8
echo "*.$test_ext text working-tree-encoding=UTF-8" >.gitattributes &&
printf "$orig_string" >$test_file &&
git add $test_file &&
git commit -m "Test data" &&
# Checkout in tested encoding
rm $test_file &&
echo "*.$test_ext text working-tree-encoding=$encoding" >.gitattributes &&
git checkout HEAD -- $test_file &&
# Test
printf $expect_bytes >$test_file.raw &&
test_cmp_bin $test_file.raw $test_file
[main bb82fa0] Test data
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 test.commit_utf8_checkout_UTF-16LE-BOM
ok 19 - Commit UTF-8, checkout UTF-16LE-BOM
expecting success of 0028.20 'Commit UTF-8, checkout UTF-16BE-BOM':
test_when_finished "git checkout HEAD -- .gitattributes" &&
test_ext="commit_utf8_checkout_$encoding" &&
test_file="test.$test_ext" &&
# Commit as UTF-8
echo "*.$test_ext text working-tree-encoding=UTF-8" >.gitattributes &&
printf "$orig_string" >$test_file &&
git add $test_file &&
git commit -m "Test data" &&
# Checkout in tested encoding
rm $test_file &&
echo "*.$test_ext text working-tree-encoding=$encoding" >.gitattributes &&
git checkout HEAD -- $test_file &&
# Test
printf $expect_bytes >$test_file.raw &&
test_cmp_bin $test_file.raw $test_file
[main 434b0e2] Test data
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 test.commit_utf8_checkout_UTF-16BE-BOM
ok 20 - Commit UTF-8, checkout UTF-16BE-BOM
expecting success of 0028.21 'Commit UTF-8, checkout UTF-32LE':
test_when_finished "git checkout HEAD -- .gitattributes" &&
test_ext="commit_utf8_checkout_$encoding" &&
test_file="test.$test_ext" &&
# Commit as UTF-8
echo "*.$test_ext text working-tree-encoding=UTF-8" >.gitattributes &&
printf "$orig_string" >$test_file &&
git add $test_file &&
git commit -m "Test data" &&
# Checkout in tested encoding
rm $test_file &&
echo "*.$test_ext text working-tree-encoding=$encoding" >.gitattributes &&
git checkout HEAD -- $test_file &&
# Test
printf $expect_bytes >$test_file.raw &&
test_cmp_bin $test_file.raw $test_file
[main 4ebb4c9] Test data
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 test.commit_utf8_checkout_UTF-32LE
ok 21 - Commit UTF-8, checkout UTF-32LE
expecting success of 0028.22 'Commit UTF-8, checkout UTF-32BE':
test_when_finished "git checkout HEAD -- .gitattributes" &&
test_ext="commit_utf8_checkout_$encoding" &&
test_file="test.$test_ext" &&
# Commit as UTF-8
echo "*.$test_ext text working-tree-encoding=UTF-8" >.gitattributes &&
printf "$orig_string" >$test_file &&
git add $test_file &&
git commit -m "Test data" &&
# Checkout in tested encoding
rm $test_file &&
echo "*.$test_ext text working-tree-encoding=$encoding" >.gitattributes &&
git checkout HEAD -- $test_file &&
# Test
printf $expect_bytes >$test_file.raw &&
test_cmp_bin $test_file.raw $test_file
[main bfde51e] Test data
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 test.commit_utf8_checkout_UTF-32BE
ok 22 - Commit UTF-8, checkout UTF-32BE
# passed all 22 test(s)
1..22
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0029-core-unsetenvvars.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0029-core-unsetenvvars/.git/
1..0 # SKIP skipping Windows-specific tests
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0030-stripspace.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0030-stripspace/.git/
expecting success of 0030.1 'long lines without spaces should be unchanged':
echo "$ttt" >expect &&
git stripspace <expect >actual &&
test_cmp expect actual &&
echo "$ttt$ttt" >expect &&
git stripspace <expect >actual &&
test_cmp expect actual &&
echo "$ttt$ttt$ttt" >expect &&
git stripspace <expect >actual &&
test_cmp expect actual &&
echo "$ttt$ttt$ttt$ttt" >expect &&
git stripspace <expect >actual &&
test_cmp expect actual
ok 1 - long lines without spaces should be unchanged
expecting success of 0030.2 'lines with spaces at the beginning should be unchanged':
echo "$sss$ttt" >expect &&
git stripspace <expect >actual &&
test_cmp expect actual &&
echo "$sss$sss$ttt" >expect &&
git stripspace <expect >actual &&
test_cmp expect actual &&
echo "$sss$sss$sss$ttt" >expect &&
git stripspace <expect >actual &&
test_cmp expect actual
ok 2 - lines with spaces at the beginning should be unchanged
expecting success of 0030.3 'lines with intermediate spaces should be unchanged':
echo "$ttt$sss$ttt" >expect &&
git stripspace <expect >actual &&
test_cmp expect actual &&
echo "$ttt$sss$sss$ttt" >expect &&
git stripspace <expect >actual &&
test_cmp expect actual
ok 3 - lines with intermediate spaces should be unchanged
expecting success of 0030.4 'consecutive blank lines should be unified':
printf "$ttt\n\n$ttt\n" > expect &&
printf "$ttt\n\n\n\n\n$ttt\n" | git stripspace >actual &&
test_cmp expect actual &&
printf "$ttt$ttt\n\n$ttt\n" > expect &&
printf "$ttt$ttt\n\n\n\n\n$ttt\n" | git stripspace >actual &&
test_cmp expect actual &&
printf "$ttt$ttt$ttt\n\n$ttt\n" > expect &&
printf "$ttt$ttt$ttt\n\n\n\n\n$ttt\n" | git stripspace >actual &&
test_cmp expect actual &&
printf "$ttt\n\n$ttt\n" > expect &&
printf "$ttt\n\n\n\n\n$ttt\n" | git stripspace >actual &&
test_cmp expect actual &&
printf "$ttt\n\n$ttt$ttt\n" > expect &&
printf "$ttt\n\n\n\n\n$ttt$ttt\n" | git stripspace >actual &&
test_cmp expect actual &&
printf "$ttt\n\n$ttt$ttt$ttt\n" > expect &&
printf "$ttt\n\n\n\n\n$ttt$ttt$ttt\n" | git stripspace >actual &&
test_cmp expect actual &&
printf "$ttt\n\n$ttt\n" > expect &&
printf "$ttt\n\t\n \n\n \t\t\n$ttt\n" | git stripspace >actual &&
test_cmp expect actual &&
printf "$ttt$ttt\n\n$ttt\n" > expect &&
printf "$ttt$ttt\n\t\n \n\n \t\t\n$ttt\n" | git stripspace >actual &&
test_cmp expect actual &&
printf "$ttt$ttt$ttt\n\n$ttt\n" > expect &&
printf "$ttt$ttt$ttt\n\t\n \n\n \t\t\n$ttt\n" | git stripspace >actual &&
test_cmp expect actual &&
printf "$ttt\n\n$ttt\n" > expect &&
printf "$ttt\n\t\n \n\n \t\t\n$ttt\n" | git stripspace >actual &&
test_cmp expect actual &&
printf "$ttt\n\n$ttt$ttt\n" > expect &&
printf "$ttt\n\t\n \n\n \t\t\n$ttt$ttt\n" | git stripspace >actual &&
test_cmp expect actual &&
printf "$ttt\n\n$ttt$ttt$ttt\n" > expect &&
printf "$ttt\n\t\n \n\n \t\t\n$ttt$ttt$ttt\n" | git stripspace >actual &&
test_cmp expect actual
ok 4 - consecutive blank lines should be unified
expecting success of 0030.5 'only consecutive blank lines should be completely removed':
printf "\n" | git stripspace >actual &&
test_must_be_empty actual &&
printf "\n\n\n" | git stripspace >actual &&
test_must_be_empty actual &&
printf "$sss\n$sss\n$sss\n" | git stripspace >actual &&
test_must_be_empty actual &&
printf "$sss$sss\n$sss\n\n" | git stripspace >actual &&
test_must_be_empty actual &&
printf "\n$sss\n$sss$sss\n" | git stripspace >actual &&
test_must_be_empty actual &&
printf "$sss$sss$sss$sss\n\n\n" | git stripspace >actual &&
test_must_be_empty actual &&
printf "\n$sss$sss$sss$sss\n\n" | git stripspace >actual &&
test_must_be_empty actual &&
printf "\n\n$sss$sss$sss$sss\n" | git stripspace >actual &&
test_must_be_empty actual
ok 5 - only consecutive blank lines should be completely removed
expecting success of 0030.6 'consecutive blank lines at the beginning should be removed':
printf "$ttt\n" > expect &&
printf "\n$ttt\n" | git stripspace >actual &&
test_cmp expect actual &&
printf "$ttt\n" > expect &&
printf "\n\n\n$ttt\n" | git stripspace >actual &&
test_cmp expect actual &&
printf "$ttt$ttt\n" > expect &&
printf "\n\n\n$ttt$ttt\n" | git stripspace >actual &&
test_cmp expect actual &&
printf "$ttt$ttt$ttt\n" > expect &&
printf "\n\n\n$ttt$ttt$ttt\n" | git stripspace >actual &&
test_cmp expect actual &&
printf "$ttt$ttt$ttt$ttt\n" > expect &&
printf "\n\n\n$ttt$ttt$ttt$ttt\n" | git stripspace >actual &&
test_cmp expect actual &&
printf "$ttt\n" > expect &&
printf "$sss\n$sss\n$sss\n$ttt\n" | git stripspace >actual &&
test_cmp expect actual &&
printf "\n$sss\n$sss$sss\n$ttt\n" | git stripspace >actual &&
test_cmp expect actual &&
printf "$sss$sss\n$sss\n\n$ttt\n" | git stripspace >actual &&
test_cmp expect actual &&
printf "$sss$sss$sss\n\n\n$ttt\n" | git stripspace >actual &&
test_cmp expect actual &&
printf "\n$sss$sss$sss\n\n$ttt\n" | git stripspace >actual &&
test_cmp expect actual &&
printf "\n\n$sss$sss$sss\n$ttt\n" | git stripspace >actual &&
test_cmp expect actual
ok 6 - consecutive blank lines at the beginning should be removed
expecting success of 0030.7 'consecutive blank lines at the end should be removed':
printf "$ttt\n" > expect &&
printf "$ttt\n\n" | git stripspace >actual &&
test_cmp expect actual &&
printf "$ttt\n" > expect &&
printf "$ttt\n\n\n\n" | git stripspace >actual &&
test_cmp expect actual &&
printf "$ttt$ttt\n" > expect &&
printf "$ttt$ttt\n\n\n\n" | git stripspace >actual &&
test_cmp expect actual &&
printf "$ttt$ttt$ttt\n" > expect &&
printf "$ttt$ttt$ttt\n\n\n\n" | git stripspace >actual &&
test_cmp expect actual &&
printf "$ttt$ttt$ttt$ttt\n" > expect &&
printf "$ttt$ttt$ttt$ttt\n\n\n\n" | git stripspace >actual &&
test_cmp expect actual &&
printf "$ttt\n" > expect &&
printf "$ttt\n$sss\n$sss\n$sss\n" | git stripspace >actual &&
test_cmp expect actual &&
printf "$ttt\n\n$sss\n$sss$sss\n" | git stripspace >actual &&
test_cmp expect actual &&
printf "$ttt\n$sss$sss\n$sss\n\n" | git stripspace >actual &&
test_cmp expect actual &&
printf "$ttt\n$sss$sss$sss\n\n\n" | git stripspace >actual &&
test_cmp expect actual &&
printf "$ttt\n\n$sss$sss$sss\n\n" | git stripspace >actual &&
test_cmp expect actual &&
printf "$ttt\n\n\n$sss$sss$sss\n" | git stripspace >actual &&
test_cmp expect actual
ok 7 - consecutive blank lines at the end should be removed
expecting success of 0030.8 'text without newline at end should end with newline':
test_stdout_line_count -gt 0 printf_git_stripspace "$ttt" &&
test_stdout_line_count -gt 0 printf_git_stripspace "$ttt$ttt" &&
test_stdout_line_count -gt 0 printf_git_stripspace "$ttt$ttt$ttt" &&
test_stdout_line_count -gt 0 printf_git_stripspace "$ttt$ttt$ttt$ttt"
ok 8 - text without newline at end should end with newline
expecting success of 0030.9 'text plus spaces without newline at end should end with newline':
test_stdout_line_count -gt 0 printf_git_stripspace "$ttt$sss" &&
test_stdout_line_count -gt 0 printf_git_stripspace "$ttt$ttt$sss" &&
test_stdout_line_count -gt 0 printf_git_stripspace "$ttt$ttt$ttt$sss" &&
test_stdout_line_count -gt 0 printf_git_stripspace "$ttt$sss$sss" &&
test_stdout_line_count -gt 0 printf_git_stripspace "$ttt$ttt$sss$sss" &&
test_stdout_line_count -gt 0 printf_git_stripspace "$ttt$sss$sss$sss"
ok 9 - text plus spaces without newline at end should end with newline
expecting success of 0030.10 'text plus spaces without newline at end should not show spaces':
printf "$ttt$sss" | git stripspace >tmp &&
! grep " " tmp >/dev/null &&
printf "$ttt$ttt$sss" | git stripspace >tmp &&
! grep " " tmp >/dev/null &&
printf "$ttt$ttt$ttt$sss" | git stripspace >tmp &&
! grep " " tmp >/dev/null &&
printf "$ttt$sss$sss" | git stripspace >tmp &&
! grep " " tmp >/dev/null &&
printf "$ttt$ttt$sss$sss" | git stripspace >tmp &&
! grep " " tmp >/dev/null &&
printf "$ttt$sss$sss$sss" | git stripspace >tmp &&
! grep " " tmp >/dev/null
ok 10 - text plus spaces without newline at end should not show spaces
expecting success of 0030.11 'text plus spaces without newline should show the correct lines':
printf "$ttt\n" >expect &&
printf "$ttt$sss" | git stripspace >actual &&
test_cmp expect actual &&
printf "$ttt\n" >expect &&
printf "$ttt$sss$sss" | git stripspace >actual &&
test_cmp expect actual &&
printf "$ttt\n" >expect &&
printf "$ttt$sss$sss$sss" | git stripspace >actual &&
test_cmp expect actual &&
printf "$ttt$ttt\n" >expect &&
printf "$ttt$ttt$sss" | git stripspace >actual &&
test_cmp expect actual &&
printf "$ttt$ttt\n" >expect &&
printf "$ttt$ttt$sss$sss" | git stripspace >actual &&
test_cmp expect actual &&
printf "$ttt$ttt$ttt\n" >expect &&
printf "$ttt$ttt$ttt$sss" | git stripspace >actual &&
test_cmp expect actual
ok 11 - text plus spaces without newline should show the correct lines
expecting success of 0030.12 'text plus spaces at end should not show spaces':
echo "$ttt$sss" | git stripspace >tmp &&
! grep " " tmp >/dev/null &&
echo "$ttt$ttt$sss" | git stripspace >tmp &&
! grep " " tmp >/dev/null &&
echo "$ttt$ttt$ttt$sss" | git stripspace >tmp &&
! grep " " tmp >/dev/null &&
echo "$ttt$sss$sss" | git stripspace >tmp &&
! grep " " tmp >/dev/null &&
echo "$ttt$ttt$sss$sss" | git stripspace >tmp &&
! grep " " tmp >/dev/null &&
echo "$ttt$sss$sss$sss" | git stripspace >tmp &&
! grep " " tmp >/dev/null
ok 12 - text plus spaces at end should not show spaces
expecting success of 0030.13 'text plus spaces at end should be cleaned and newline must remain':
echo "$ttt" >expect &&
echo "$ttt$sss" | git stripspace >actual &&
test_cmp expect actual &&
echo "$ttt" >expect &&
echo "$ttt$sss$sss" | git stripspace >actual &&
test_cmp expect actual &&
echo "$ttt" >expect &&
echo "$ttt$sss$sss$sss" | git stripspace >actual &&
test_cmp expect actual &&
echo "$ttt$ttt" >expect &&
echo "$ttt$ttt$sss" | git stripspace >actual &&
test_cmp expect actual &&
echo "$ttt$ttt" >expect &&
echo "$ttt$ttt$sss$sss" | git stripspace >actual &&
test_cmp expect actual &&
echo "$ttt$ttt$ttt" >expect &&
echo "$ttt$ttt$ttt$sss" | git stripspace >actual &&
test_cmp expect actual
ok 13 - text plus spaces at end should be cleaned and newline must remain
expecting success of 0030.14 'spaces with newline at end should be replaced with empty string':
echo | git stripspace >actual &&
test_must_be_empty actual &&
echo "$sss" | git stripspace >actual &&
test_must_be_empty actual &&
echo "$sss$sss" | git stripspace >actual &&
test_must_be_empty actual &&
echo "$sss$sss$sss" | git stripspace >actual &&
test_must_be_empty actual &&
echo "$sss$sss$sss$sss" | git stripspace >actual &&
test_must_be_empty actual
ok 14 - spaces with newline at end should be replaced with empty string
expecting success of 0030.15 'spaces without newline at end should not show spaces':
printf "" | git stripspace >tmp &&
! grep " " tmp >/dev/null &&
printf "$sss" | git stripspace >tmp &&
! grep " " tmp >/dev/null &&
printf "$sss$sss" | git stripspace >tmp &&
! grep " " tmp >/dev/null &&
printf "$sss$sss$sss" | git stripspace >tmp &&
! grep " " tmp >/dev/null &&
printf "$sss$sss$sss$sss" | git stripspace >tmp &&
! grep " " tmp >/dev/null
ok 15 - spaces without newline at end should not show spaces
expecting success of 0030.16 'spaces without newline at end should be replaced with empty string':
printf "" | git stripspace >actual &&
test_must_be_empty actual &&
printf "$sss$sss" | git stripspace >actual &&
test_must_be_empty actual &&
printf "$sss$sss$sss" | git stripspace >actual &&
test_must_be_empty actual &&
printf "$sss$sss$sss$sss" | git stripspace >actual &&
test_must_be_empty actual
ok 16 - spaces without newline at end should be replaced with empty string
expecting success of 0030.17 'consecutive text lines should be unchanged':
printf "$ttt$ttt\n$ttt\n" >expect &&
printf "$ttt$ttt\n$ttt\n" | git stripspace >actual &&
test_cmp expect actual &&
printf "$ttt\n$ttt$ttt\n$ttt\n" >expect &&
printf "$ttt\n$ttt$ttt\n$ttt\n" | git stripspace >actual &&
test_cmp expect actual &&
printf "$ttt\n$ttt\n$ttt\n$ttt$ttt\n" >expect &&
printf "$ttt\n$ttt\n$ttt\n$ttt$ttt\n" | git stripspace >actual &&
test_cmp expect actual &&
printf "$ttt\n$ttt\n\n$ttt$ttt\n$ttt\n" >expect &&
printf "$ttt\n$ttt\n\n$ttt$ttt\n$ttt\n" | git stripspace >actual &&
test_cmp expect actual &&
printf "$ttt$ttt\n\n$ttt\n$ttt$ttt\n" >expect &&
printf "$ttt$ttt\n\n$ttt\n$ttt$ttt\n" | git stripspace >actual &&
test_cmp expect actual &&
printf "$ttt\n$ttt$ttt\n\n$ttt\n" >expect &&
printf "$ttt\n$ttt$ttt\n\n$ttt\n" | git stripspace >actual &&
test_cmp expect actual
ok 17 - consecutive text lines should be unchanged
expecting success of 0030.18 'strip comments, too':
test ! -z "$(echo "# comment" | git stripspace)" &&
test -z "$(echo "# comment" | git stripspace -s)"
ok 18 - strip comments, too
expecting success of 0030.19 'strip comments with changed comment char':
test ! -z "$(echo "; comment" | git -c core.commentchar=";" stripspace)" &&
test -z "$(echo "; comment" | git -c core.commentchar=";" stripspace -s)"
ok 19 - strip comments with changed comment char
expecting success of 0030.20 '-c with single line':
printf "# foo\n" >expect &&
printf "foo" | git stripspace -c >actual &&
test_cmp expect actual
ok 20 - -c with single line
expecting success of 0030.21 '-c with single line followed by empty line':
printf "# foo\n#\n" >expect &&
printf "foo\n\n" | git stripspace -c >actual &&
test_cmp expect actual
ok 21 - -c with single line followed by empty line
expecting success of 0030.22 '-c with newline only':
printf "#\n" >expect &&
printf "\n" | git stripspace -c >actual &&
test_cmp expect actual
ok 22 - -c with newline only
expecting success of 0030.23 '--comment-lines with single line':
printf "# foo\n" >expect &&
printf "foo" | git stripspace -c >actual &&
test_cmp expect actual
ok 23 - --comment-lines with single line
expecting success of 0030.24 '-c with changed comment char':
printf "; foo\n" >expect &&
printf "foo" | git -c core.commentchar=";" stripspace -c >actual &&
test_cmp expect actual
ok 24 - -c with changed comment char
expecting success of 0030.25 '-c with comment char defined in .git/config':
test_config core.commentchar = &&
printf "= foo\n" >expect &&
rm -fr sub &&
mkdir sub &&
printf "foo" | git -C sub stripspace -c >actual &&
test_cmp expect actual
ok 25 - -c with comment char defined in .git/config
expecting success of 0030.26 '-c outside git repository':
printf "# foo\n" >expect &&
printf "foo" | nongit git stripspace -c >actual &&
test_cmp expect actual
ok 26 - -c outside git repository
expecting success of 0030.27 'avoid SP-HT sequence in commented line':
printf "#\tone\n#\n# two\n" >expect &&
printf "\tone\n\ntwo\n" | git stripspace -c >actual &&
test_cmp expect actual
ok 27 - avoid SP-HT sequence in commented line
# passed all 27 test(s)
1..27
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0010-racy-git.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0010-racy-git/.git/
expecting success of 0010.1 'Racy GIT trial #0 part A': test "" != "$files"
ok 1 - Racy GIT trial #0 part A
expecting success of 0010.2 'Racy GIT trial #0 part B': test "" != "$files"
ok 2 - Racy GIT trial #0 part B
expecting success of 0010.3 'Racy GIT trial #1 part A': test "" != "$files"
ok 3 - Racy GIT trial #1 part A
expecting success of 0010.4 'Racy GIT trial #1 part B': test "" != "$files"
ok 4 - Racy GIT trial #1 part B
expecting success of 0010.5 'Racy GIT trial #2 part A': test "" != "$files"
ok 5 - Racy GIT trial #2 part A
expecting success of 0010.6 'Racy GIT trial #2 part B': test "" != "$files"
ok 6 - Racy GIT trial #2 part B
expecting success of 0010.7 'Racy GIT trial #3 part A': test "" != "$files"
ok 7 - Racy GIT trial #3 part A
expecting success of 0010.8 'Racy GIT trial #3 part B': test "" != "$files"
ok 8 - Racy GIT trial #3 part B
expecting success of 0010.9 'Racy GIT trial #4 part A': test "" != "$files"
ok 9 - Racy GIT trial #4 part A
expecting success of 0010.10 'Racy GIT trial #4 part B': test "" != "$files"
ok 10 - Racy GIT trial #4 part B
# passed all 10 test(s)
1..10
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0032-reftable-unittest.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0032-reftable-unittest/.git/
expecting success of 0032.1 'unittests':
TMPDIR=$(pwd) && export TMPDIR &&
test-tool reftable
running test_common_prefix
running test_parse_names_normal
running test_parse_names_drop_empty
running test_binsearch
running test_names_length
running test_reftable_log_record_equal
running test_reftable_log_record_roundtrip
running test_reftable_ref_record_roundtrip
running test_varint_roundtrip
running test_key_roundtrip
running test_common_prefix
running test_reftable_obj_record_roundtrip
running test_reftable_index_record_roundtrip
running test_u24_roundtrip
running test_block_read_write
running test_tree
running test_pq
running test_log_zlib_corruption
running test_corrupt_table
running test_corrupt_table_empty
running test_log_write_read
running test_write_key_order
running test_table_read_write_seek_linear_sha256
running test_log_buffer_size
running test_table_write_small_table
running test_buffer
running test_table_read_api
running test_table_read_write_sequential
running test_table_read_write_seek_linear
running test_table_read_write_seek_index
running test_table_refs_for_no_index
running test_table_refs_for_obj_index
running test_write_empty_key
running test_write_empty_table
running test_log_overflow
running test_write_object_id_length
running test_write_object_id_min_length
running test_merged_logs
running test_merged_between
running test_merged
running test_default_write_opts
running test_empty_add
running test_log2
running test_names_equal
running test_parse_names
running test_read_file
running test_reflog_expire
running test_reftable_stack_add
running test_reftable_stack_add_one
running test_reftable_stack_auto_compaction
running test_reftable_stack_compaction_concurrent
running test_reftable_stack_compaction_concurrent_clean
running test_reftable_stack_hash_id
running test_reftable_stack_lock_failure
running test_reftable_stack_log_normalize
running test_reftable_stack_tombstone
running test_reftable_stack_transaction_api
running test_reftable_stack_update_index_check
running test_reftable_stack_uptodate
running test_reftable_stack_validate_refname
running test_sizes_to_segments
running test_sizes_to_segments_all_equal
running test_sizes_to_segments_empty
running test_suggest_compaction_segment
running test_suggest_compaction_segment_nothing
running test_conflict
testing print coverage:
'g': log{refs/heads/master(42) han-wen <hanwen@google.com> 1577123507 0100
0202020202020202020202020202020202020202 => 0101010101010101010101010101010101010101
test
}
testing print coverage:
'g': log{refs/heads/master(22) delete
testing print coverage:
'g': log{branch(33) <> 0 0000
0404040404040404040404040404040404040404 => 0303030303030303030303030303030303030303
}
testing print coverage:
'r': ref{refs/heads/master(0) delete}
testing print coverage:
'r': ref{refs/heads/master(0) val 1 0100000000000000000000000000000000000000}
testing print coverage:
'r': ref{refs/heads/master(0) val 2 0100000000000000000000000000000000000000(T 0201000000000000000000000000000000000000)}
testing print coverage:
'r': ref{refs/heads/master(0) => target}
testing print coverage:
'o': prefix 0102030400 (len 5), offsets [1 2 3 ]
testing print coverage:
'o': prefix 0102030400 (len 5), offsets [1 2 3 4 500 600 700 800 9000 ]
testing print coverage:
'o': prefix 0102030400 (len 5), offsets []
testing print coverage:
'i': "refs/heads/master" 42
testing print functionality:
ref{HEAD(1) => master}
ok 1 - unittests
# passed all 1 test(s)
1..1
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0033-safe-directory.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0033-safe-directory/.git/
expecting success of 0033.1 'safe.directory is not set':
expect_rejected_dir
fatal: detected dubious ownership in repository at '/<<PKGBUILDDIR>>/t/trash directory.t0033-safe-directory'
ok 1 - safe.directory is not set
expecting success of 0033.2 'safe.directory on the command line':
git -c safe.directory="$(pwd)" status
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
err
nothing added to commit but untracked files present (use "git add" to track)
ok 2 - safe.directory on the command line
expecting success of 0033.3 'safe.directory in the environment':
env GIT_CONFIG_COUNT=1 \
GIT_CONFIG_KEY_0="safe.directory" \
GIT_CONFIG_VALUE_0="$(pwd)" \
git status
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
err
nothing added to commit but untracked files present (use "git add" to track)
ok 3 - safe.directory in the environment
expecting success of 0033.4 'safe.directory in GIT_CONFIG_PARAMETERS':
env GIT_CONFIG_PARAMETERS="${SQ}safe.directory${SQ}=${SQ}$(pwd)${SQ}" \
git status
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
err
nothing added to commit but untracked files present (use "git add" to track)
ok 4 - safe.directory in GIT_CONFIG_PARAMETERS
expecting success of 0033.5 'ignoring safe.directory in repo config':
(
unset GIT_TEST_ASSUME_DIFFERENT_OWNER &&
git config safe.directory "$(pwd)"
) &&
expect_rejected_dir
fatal: detected dubious ownership in repository at '/<<PKGBUILDDIR>>/t/trash directory.t0033-safe-directory'
ok 5 - ignoring safe.directory in repo config
expecting success of 0033.6 'safe.directory does not match':
git config --global safe.directory bogus &&
expect_rejected_dir
fatal: detected dubious ownership in repository at '/<<PKGBUILDDIR>>/t/trash directory.t0033-safe-directory'
ok 6 - safe.directory does not match
expecting success of 0033.7 'path exist as different key':
git config --global foo.bar "$(pwd)" &&
expect_rejected_dir
fatal: detected dubious ownership in repository at '/<<PKGBUILDDIR>>/t/trash directory.t0033-safe-directory'
ok 7 - path exist as different key
expecting success of 0033.8 'safe.directory matches':
git config --global --add safe.directory "$(pwd)" &&
git status
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitconfig
err
nothing added to commit but untracked files present (use "git add" to track)
ok 8 - safe.directory matches
expecting success of 0033.9 'safe.directory matches, but is reset':
git config --global --add safe.directory "" &&
expect_rejected_dir
fatal: detected dubious ownership in repository at '/<<PKGBUILDDIR>>/t/trash directory.t0033-safe-directory'
ok 9 - safe.directory matches, but is reset
expecting success of 0033.10 'safe.directory=*':
git config --global --add safe.directory "*" &&
git status
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitconfig
err
nothing added to commit but untracked files present (use "git add" to track)
ok 10 - safe.directory=*
expecting success of 0033.11 'safe.directory=*, but is reset':
git config --global --add safe.directory "" &&
expect_rejected_dir
fatal: detected dubious ownership in repository at '/<<PKGBUILDDIR>>/t/trash directory.t0033-safe-directory'
ok 11 - safe.directory=*, but is reset
expecting success of 0033.12 'safe.directory in included file':
cat >gitconfig-include <<-EOF &&
[safe]
directory = "$(pwd)"
EOF
git config --global --add include.path "$(pwd)/gitconfig-include" &&
git status
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitconfig
err
gitconfig-include
nothing added to commit but untracked files present (use "git add" to track)
ok 12 - safe.directory in included file
# passed all 12 test(s)
1..12
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0034-root-safe-directory.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0034-root-safe-directory/.git/
1..0 # SKIP You must set env var GIT_TEST_ALLOW_SUDO=YES in order to run this test
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0035-safe-bare-repository.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0035-safe-bare-repository/.git/
expecting success of 0035.1 'setup bare repo in worktree':
git init outer-repo &&
git init --bare outer-repo/bare-repo
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0035-safe-bare-repository/outer-repo/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0035-safe-bare-repository/outer-repo/bare-repo/
ok 1 - setup bare repo in worktree
expecting success of 0035.2 'safe.bareRepository unset':
test_unconfig --global safe.bareRepository &&
expect_accepted_implicit -C outer-repo/bare-repo
.
02:17:38.926793 setup.c:1364 | d0 | main | data | | 0.000960 | 0.000960 | setup | implicit-bare-repository:/<<PKGBUILDDIR>>/t/trash directory.t0035-safe-bare-repository/outer-repo/bare-repo
ok 2 - safe.bareRepository unset
expecting success of 0035.3 'safe.bareRepository=all':
test_config_global safe.bareRepository all &&
expect_accepted_implicit -C outer-repo/bare-repo
.
02:17:38.936645 setup.c:1364 | d0 | main | data | | 0.000937 | 0.000937 | setup | implicit-bare-repository:/<<PKGBUILDDIR>>/t/trash directory.t0035-safe-bare-repository/outer-repo/bare-repo
ok 3 - safe.bareRepository=all
expecting success of 0035.4 'safe.bareRepository=explicit':
test_config_global safe.bareRepository explicit &&
expect_rejected -C outer-repo/bare-repo
fatal: cannot use bare repository '/<<PKGBUILDDIR>>/t/trash directory.t0035-safe-bare-repository/outer-repo/bare-repo' (safe.bareRepository is 'explicit')
02:17:38.949435 setup.c:1364 | d0 | main | data | | 0.000933 | 0.000933 | setup | implicit-bare-repository:/<<PKGBUILDDIR>>/t/trash directory.t0035-safe-bare-repository/outer-repo/bare-repo
ok 4 - safe.bareRepository=explicit
expecting success of 0035.5 'safe.bareRepository in the repository':
# safe.bareRepository must not be "explicit", otherwise
# git config fails with "fatal: not in a git directory" (like
# safe.directory)
test_config -C outer-repo/bare-repo safe.bareRepository \
all &&
test_config_global safe.bareRepository explicit &&
expect_rejected -C outer-repo/bare-repo
fatal: cannot use bare repository '/<<PKGBUILDDIR>>/t/trash directory.t0035-safe-bare-repository/outer-repo/bare-repo' (safe.bareRepository is 'explicit')
02:17:38.965581 setup.c:1364 | d0 | main | data | | 0.001206 | 0.001206 | setup | implicit-bare-repository:/<<PKGBUILDDIR>>/t/trash directory.t0035-safe-bare-repository/outer-repo/bare-repo
ok 5 - safe.bareRepository in the repository
expecting success of 0035.6 'safe.bareRepository on the command line':
test_config_global safe.bareRepository explicit &&
expect_accepted_implicit -C outer-repo/bare-repo \
-c safe.bareRepository=all
.
02:17:38.982459 setup.c:1364 | d0 | main | data | | 0.001005 | 0.001005 | setup | implicit-bare-repository:/<<PKGBUILDDIR>>/t/trash directory.t0035-safe-bare-repository/outer-repo/bare-repo
ok 6 - safe.bareRepository on the command line
expecting success of 0035.7 'safe.bareRepository in included file':
cat >gitconfig-include <<-\EOF &&
[safe]
bareRepository = explicit
EOF
git config --global --add include.path "$(pwd)/gitconfig-include" &&
expect_rejected -C outer-repo/bare-repo
fatal: cannot use bare repository '/<<PKGBUILDDIR>>/t/trash directory.t0035-safe-bare-repository/outer-repo/bare-repo' (safe.bareRepository is 'explicit')
02:17:38.996259 setup.c:1364 | d0 | main | data | | 0.001065 | 0.001065 | setup | implicit-bare-repository:/<<PKGBUILDDIR>>/t/trash directory.t0035-safe-bare-repository/outer-repo/bare-repo
ok 7 - safe.bareRepository in included file
expecting success of 0035.8 'no trace when GIT_DIR is explicitly provided':
expect_accepted_explicit "$pwd/outer-repo/bare-repo"
/<<PKGBUILDDIR>>/t/trash directory.t0035-safe-bare-repository/outer-repo/bare-repo
ok 8 - no trace when GIT_DIR is explicitly provided
# passed all 8 test(s)
1..8
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0041-usage.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0041-usage/.git/
expecting success of 0041.1 'setup ':
test_commit "v1.0"
[main (root-commit) 843b676] v1.0
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 v1.0.t
ok 1 - setup
expecting success of 0041.2 'tag --contains <existent_tag>':
git tag --contains "v1.0" >actual 2>actual.err &&
grep "v1.0" actual &&
test_line_count = 0 actual.err
v1.0
ok 2 - tag --contains <existent_tag>
expecting success of 0041.3 'tag --contains <inexistent_tag>':
test_must_fail git tag --contains "notag" >actual 2>actual.err &&
test_line_count = 0 actual &&
test_i18ngrep "error" actual.err &&
test_i18ngrep ! "usage" actual.err
error: malformed object name notag
ok 3 - tag --contains <inexistent_tag>
expecting success of 0041.4 'tag --no-contains <existent_tag>':
git tag --no-contains "v1.0" >actual 2>actual.err &&
test_line_count = 0 actual &&
test_line_count = 0 actual.err
ok 4 - tag --no-contains <existent_tag>
expecting success of 0041.5 'tag --no-contains <inexistent_tag>':
test_must_fail git tag --no-contains "notag" >actual 2>actual.err &&
test_line_count = 0 actual &&
test_i18ngrep "error" actual.err &&
test_i18ngrep ! "usage" actual.err
error: malformed object name notag
ok 5 - tag --no-contains <inexistent_tag>
expecting success of 0041.6 'tag usage error':
test_must_fail git tag --noopt >actual 2>actual.err &&
test_line_count = 0 actual &&
test_i18ngrep "usage" actual.err
usage: git tag [-a | -s | -u <key-id>] [-f] [-m <msg> | -F <file>] [-e]
ok 6 - tag usage error
expecting success of 0041.7 'branch --contains <existent_commit>':
git branch --contains "main" >actual 2>actual.err &&
test_i18ngrep "main" actual &&
test_line_count = 0 actual.err
* main
ok 7 - branch --contains <existent_commit>
expecting success of 0041.8 'branch --contains <inexistent_commit>':
test_must_fail git branch --no-contains "nocommit" >actual 2>actual.err &&
test_line_count = 0 actual &&
test_i18ngrep "error" actual.err &&
test_i18ngrep ! "usage" actual.err
error: malformed object name nocommit
ok 8 - branch --contains <inexistent_commit>
expecting success of 0041.9 'branch --no-contains <existent_commit>':
git branch --no-contains "main" >actual 2>actual.err &&
test_line_count = 0 actual &&
test_line_count = 0 actual.err
ok 9 - branch --no-contains <existent_commit>
expecting success of 0041.10 'branch --no-contains <inexistent_commit>':
test_must_fail git branch --no-contains "nocommit" >actual 2>actual.err &&
test_line_count = 0 actual &&
test_i18ngrep "error" actual.err &&
test_i18ngrep ! "usage" actual.err
error: malformed object name nocommit
ok 10 - branch --no-contains <inexistent_commit>
expecting success of 0041.11 'branch usage error':
test_must_fail git branch --noopt >actual 2>actual.err &&
test_line_count = 0 actual &&
test_i18ngrep "usage" actual.err
usage: git branch [<options>] [-r | -a] [--merged] [--no-merged]
ok 11 - branch usage error
expecting success of 0041.12 'for-each-ref --contains <existent_object>':
git for-each-ref --contains "main" >actual 2>actual.err &&
test_line_count = 2 actual &&
test_line_count = 0 actual.err
ok 12 - for-each-ref --contains <existent_object>
expecting success of 0041.13 'for-each-ref --contains <inexistent_object>':
test_must_fail git for-each-ref --no-contains "noobject" >actual 2>actual.err &&
test_line_count = 0 actual &&
test_i18ngrep "error" actual.err &&
test_i18ngrep ! "usage" actual.err
error: malformed object name noobject
ok 13 - for-each-ref --contains <inexistent_object>
expecting success of 0041.14 'for-each-ref --no-contains <existent_object>':
git for-each-ref --no-contains "main" >actual 2>actual.err &&
test_line_count = 0 actual &&
test_line_count = 0 actual.err
ok 14 - for-each-ref --no-contains <existent_object>
expecting success of 0041.15 'for-each-ref --no-contains <inexistent_object>':
test_must_fail git for-each-ref --no-contains "noobject" >actual 2>actual.err &&
test_line_count = 0 actual &&
test_i18ngrep "error" actual.err &&
test_i18ngrep ! "usage" actual.err
error: malformed object name noobject
ok 15 - for-each-ref --no-contains <inexistent_object>
expecting success of 0041.16 'for-each-ref usage error':
test_must_fail git for-each-ref --noopt >actual 2>actual.err &&
test_line_count = 0 actual &&
test_i18ngrep "usage" actual.err
usage: git for-each-ref [<options>] [<pattern>]
ok 16 - for-each-ref usage error
# passed all 16 test(s)
1..16
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0040-parse-options.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0040-parse-options/.git/
expecting success of 0040.1 'test help':
test_must_fail test-tool parse-options -h >output 2>output.err &&
test_must_be_empty output.err &&
test_cmp expect output
ok 1 - test help
expecting success of 0040.2 'OPT_BOOL() #1': check boolean: 1 --yes
ok 2 - OPT_BOOL() #1
expecting success of 0040.3 'OPT_BOOL() #2': check boolean: 1 --no-doubt
ok 3 - OPT_BOOL() #2
expecting success of 0040.4 'OPT_BOOL() #3': check boolean: 1 -D
ok 4 - OPT_BOOL() #3
expecting success of 0040.5 'OPT_BOOL() #4': check boolean: 1 --no-fear
ok 5 - OPT_BOOL() #4
expecting success of 0040.6 'OPT_BOOL() #5': check boolean: 1 -B
ok 6 - OPT_BOOL() #5
expecting success of 0040.7 'OPT_BOOL() is idempotent #1': check boolean: 1 --yes --yes
ok 7 - OPT_BOOL() is idempotent #1
expecting success of 0040.8 'OPT_BOOL() is idempotent #2': check boolean: 1 -DB
ok 8 - OPT_BOOL() is idempotent #2
expecting success of 0040.9 'OPT_BOOL() negation #1': check boolean: 0 -D --no-yes
ok 9 - OPT_BOOL() negation #1
expecting success of 0040.10 'OPT_BOOL() negation #2': check boolean: 0 -D --no-no-doubt
ok 10 - OPT_BOOL() negation #2
expecting success of 0040.11 'OPT_BOOL() no negation #1': check_unknown_i18n --fear
ok 11 - OPT_BOOL() no negation #1
expecting success of 0040.12 'OPT_BOOL() no negation #2': check_unknown_i18n --no-no-fear
ok 12 - OPT_BOOL() no negation #2
expecting success of 0040.13 'OPT_BOOL() positivation': check boolean: 0 -D --doubt
ok 13 - OPT_BOOL() positivation
expecting success of 0040.14 'OPT_INT() negative': check integer: -2345 -i -2345
ok 14 - OPT_INT() negative
expecting success of 0040.15 'OPT_MAGNITUDE() simple':
check magnitude: 2345678 -m 2345678
ok 15 - OPT_MAGNITUDE() simple
expecting success of 0040.16 'OPT_MAGNITUDE() kilo':
check magnitude: 239616 -m 234k
ok 16 - OPT_MAGNITUDE() kilo
expecting success of 0040.17 'OPT_MAGNITUDE() mega':
check magnitude: 104857600 -m 100m
ok 17 - OPT_MAGNITUDE() mega
expecting success of 0040.18 'OPT_MAGNITUDE() giga':
check magnitude: 1073741824 -m 1g
ok 18 - OPT_MAGNITUDE() giga
expecting success of 0040.19 'OPT_MAGNITUDE() 3giga':
check magnitude: 3221225472 -m 3g
ok 19 - OPT_MAGNITUDE() 3giga
expecting success of 0040.20 'short options':
test-tool parse-options -s123 -b -i 1729 -m 16k -b -vv -n -F my.file \
>output 2>output.err &&
test_cmp expect output &&
test_must_be_empty output.err
ok 20 - short options
expecting success of 0040.21 'long options':
test-tool parse-options --boolean --integer 1729 --magnitude 16k \
--boolean --string2=321 --verbose --verbose --no-dry-run \
--abbrev=10 --file fi.le --obsolete \
>output 2>output.err &&
test_must_be_empty output.err &&
test_cmp expect output
ok 21 - long options
expecting success of 0040.22 'missing required value':
cat >expect <<-\EOF &&
error: switch `s' requires a value
EOF
test_expect_code 129 test-tool parse-options -s 2>actual &&
test_cmp expect actual &&
cat >expect <<-\EOF &&
error: option `string' requires a value
EOF
test_expect_code 129 test-tool parse-options --string 2>actual &&
test_cmp expect actual &&
cat >expect <<-\EOF &&
error: option `file' requires a value
EOF
test_expect_code 129 test-tool parse-options --file 2>actual &&
test_cmp expect actual
ok 22 - missing required value
expecting success of 0040.23 'superfluous value provided: boolean':
cat >expect <<-\EOF &&
error: option `yes' takes no value
EOF
test_expect_code 129 test-tool parse-options --yes=hi 2>actual &&
test_cmp expect actual &&
cat >expect <<-\EOF &&
error: option `no-yes' takes no value
EOF
test_expect_code 129 test-tool parse-options --no-yes=hi 2>actual &&
test_cmp expect actual
ok 23 - superfluous value provided: boolean
expecting success of 0040.24 'superfluous value provided: cmdmode':
cat >expect <<-\EOF &&
error: option `mode1' takes no value
EOF
test_expect_code 129 test-tool parse-options --mode1=hi 2>actual &&
test_cmp expect actual
ok 24 - superfluous value provided: cmdmode
expecting success of 0040.25 'intermingled arguments':
test-tool parse-options a1 --string 123 b1 --boolean -j 13 -- --boolean \
>output 2>output.err &&
test_must_be_empty output.err &&
test_cmp expect output
ok 25 - intermingled arguments
expecting success of 0040.26 'unambiguously abbreviated option':
GIT_TEST_DISALLOW_ABBREVIATED_OPTIONS=false \
test-tool parse-options --int 2 --boolean --no-bo >output 2>output.err &&
test_must_be_empty output.err &&
test_cmp expect output
ok 26 - unambiguously abbreviated option
expecting success of 0040.27 'unambiguously abbreviated option with "="':
GIT_TEST_DISALLOW_ABBREVIATED_OPTIONS=false \
test-tool parse-options --expect="integer: 2" --int=2
ok 27 - unambiguously abbreviated option with "="
expecting success of 0040.28 'ambiguously abbreviated option':
test_expect_code 129 env GIT_TEST_DISALLOW_ABBREVIATED_OPTIONS=false \
test-tool parse-options --strin 123
error: ambiguous option: strin (could be --string or --string2)
usage: test-tool parse-options <options>
A helper function for the parse-options API.
--yes get a boolean
-D, --no-doubt begins with 'no-'
-B, --no-fear be brave
-b, --boolean increment by one
-4, --or4 bitwise-or boolean with ...0100
--neg-or4 same as --no-or4
-i, --integer <n> get a integer
-j <n> get a integer, too
-m, --magnitude <n> get a magnitude
--set23 set integer to 23
--mode1 set integer to 1 (cmdmode option)
--mode2 set integer to 2 (cmdmode option)
-L, --length <str> get length of <str>
-F, --file <file> set file to <file>
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
--longhelp help text of this entry
spans multiple lines
--list <str> add str to list
Magic arguments
-NUM set integer to NUM
+ same as -b
--ambiguous positive ambiguity
--no-ambiguous negative ambiguity
Standard options
--abbrev[=<n>] use <n> digits to display object names
-v, --verbose be verbose
-n, --dry-run dry run
-q, --quiet be quiet
--expect <string> expected output in the variable dump
Alias
-A, --alias-source <string>
get a string
-Z, --alias-target <string>
alias of --alias-source
ok 28 - ambiguously abbreviated option
expecting success of 0040.29 'non ambiguous option (after two options it abbreviates)':
GIT_TEST_DISALLOW_ABBREVIATED_OPTIONS=false \
test-tool parse-options --expect="string: 123" --st 123
ok 29 - non ambiguous option (after two options it abbreviates)
expecting success of 0040.30 'Alias options do not contribute to abbreviation':
test-tool parse-options --alias-source 123 >output &&
grep "^string: 123" output &&
test-tool parse-options --alias-target 123 >output &&
grep "^string: 123" output &&
test_must_fail test-tool parse-options --alias &&
GIT_TEST_DISALLOW_ABBREVIATED_OPTIONS=false \
test-tool parse-options --alias 123 >output &&
grep "^string: 123" output
string: 123
string: 123
fatal: disallowed abbreviated or ambiguous option 'alias'
string: 123
ok 30 - Alias options do not contribute to abbreviation
expecting success of 0040.31 'detect possible typos':
test_must_fail test-tool parse-options -boolean >output 2>output.err &&
test_must_be_empty output &&
test_cmp typo.err output.err
ok 31 - detect possible typos
expecting success of 0040.32 'detect possible typos':
test_must_fail test-tool parse-options -ambiguous >output 2>output.err &&
test_must_be_empty output &&
test_cmp typo.err output.err
ok 32 - detect possible typos
expecting success of 0040.33 'OPT_CALLBACK() and OPT_BIT() work':
test-tool parse-options --length=four -b -4 >output 2>output.err &&
test_must_be_empty output.err &&
test_cmp expect output
ok 33 - OPT_CALLBACK() and OPT_BIT() work
expecting success of 0040.34 'OPT_CALLBACK() and callback errors work':
test_must_fail test-tool parse-options --no-length >output 2>output.err &&
test_must_be_empty output &&
test_must_be_empty output.err
ok 34 - OPT_CALLBACK() and callback errors work
expecting success of 0040.35 'OPT_BIT() and OPT_SET_INT() work':
test-tool parse-options --set23 -bbbbb --no-or4 >output 2>output.err &&
test_must_be_empty output.err &&
test_cmp expect output
ok 35 - OPT_BIT() and OPT_SET_INT() work
expecting success of 0040.36 'OPT_NEGBIT() and OPT_SET_INT() work':
test-tool parse-options --set23 -bbbbb --neg-or4 >output 2>output.err &&
test_must_be_empty output.err &&
test_cmp expect output
ok 36 - OPT_NEGBIT() and OPT_SET_INT() work
expecting success of 0040.37 'OPT_BIT() works':
test-tool parse-options --expect="boolean: 6" -bb --or4
ok 37 - OPT_BIT() works
expecting success of 0040.38 'OPT_NEGBIT() works':
test-tool parse-options --expect="boolean: 6" -bb --no-neg-or4
ok 38 - OPT_NEGBIT() works
expecting success of 0040.39 'OPT_CMDMODE() works':
test-tool parse-options --expect="integer: 1" --mode1
ok 39 - OPT_CMDMODE() works
expecting success of 0040.40 'OPT_CMDMODE() detects incompatibility':
test_must_fail test-tool parse-options --mode1 --mode2 >output 2>output.err &&
test_must_be_empty output &&
test_i18ngrep "incompatible with --mode" output.err
error: option `mode2' is incompatible with --mode1
ok 40 - OPT_CMDMODE() detects incompatibility
expecting success of 0040.41 'OPT_CMDMODE() detects incompatibility with something else':
test_must_fail test-tool parse-options --set23 --mode2 >output 2>output.err &&
test_must_be_empty output &&
test_i18ngrep "incompatible with something else" output.err
error: option `mode2' : incompatible with something else
ok 41 - OPT_CMDMODE() detects incompatibility with something else
expecting success of 0040.42 'OPT_COUNTUP() with PARSE_OPT_NODASH works':
test-tool parse-options --expect="boolean: 6" + + + + + +
ok 42 - OPT_COUNTUP() with PARSE_OPT_NODASH works
expecting success of 0040.43 'OPT_NUMBER_CALLBACK() works':
test-tool parse-options --expect="integer: 12345" -12345
ok 43 - OPT_NUMBER_CALLBACK() works
expecting success of 0040.44 'negation of OPT_NONEG flags is not ambiguous':
GIT_TEST_DISALLOW_ABBREVIATED_OPTIONS=false \
test-tool parse-options --no-ambig >output 2>output.err &&
test_must_be_empty output.err &&
test_cmp expect output
ok 44 - negation of OPT_NONEG flags is not ambiguous
expecting success of 0040.45 '--list keeps list of strings':
test-tool parse-options --list foo --list=bar --list=baz >output &&
test_cmp expect output
ok 45 - --list keeps list of strings
expecting success of 0040.46 '--no-list resets list':
test-tool parse-options --list=other --list=irrelevant --list=options \
--no-list --list=foo --list=bar --list=baz >output &&
test_cmp expect output
ok 46 - --no-list resets list
expecting success of 0040.47 'multiple quiet levels':
test-tool parse-options --expect="quiet: 3" -q -q -q
ok 47 - multiple quiet levels
expecting success of 0040.48 'multiple verbose levels':
test-tool parse-options --expect="verbose: 3" -v -v -v
ok 48 - multiple verbose levels
expecting success of 0040.49 '--no-quiet sets --quiet to 0':
test-tool parse-options --expect="quiet: 0" --no-quiet
ok 49 - --no-quiet sets --quiet to 0
expecting success of 0040.50 '--no-quiet resets multiple -q to 0':
test-tool parse-options --expect="quiet: 0" -q -q -q --no-quiet
ok 50 - --no-quiet resets multiple -q to 0
expecting success of 0040.51 '--no-verbose sets verbose to 0':
test-tool parse-options --expect="verbose: 0" --no-verbose
ok 51 - --no-verbose sets verbose to 0
expecting success of 0040.52 '--no-verbose resets multiple verbose to 0':
test-tool parse-options --expect="verbose: 0" -v -v -v --no-verbose
ok 52 - --no-verbose resets multiple verbose to 0
expecting success of 0040.53 'GIT_TEST_DISALLOW_ABBREVIATED_OPTIONS works':
GIT_TEST_DISALLOW_ABBREVIATED_OPTIONS=false \
test-tool parse-options --ye &&
test_must_fail env GIT_TEST_DISALLOW_ABBREVIATED_OPTIONS=true \
test-tool parse-options --ye
boolean: 1
integer: 0
magnitude: 0
timestamp: 0
string: (not set)
abbrev: 7
verbose: -1
quiet: 0
dry run: no
file: (not set)
fatal: disallowed abbreviated or ambiguous option 'ye'
ok 53 - GIT_TEST_DISALLOW_ABBREVIATED_OPTIONS works
expecting success of 0040.54 '--end-of-options treats remainder as args':
test-tool parse-options \
--expect="verbose: -1" \
--expect="arg 00: --verbose" \
--end-of-options --verbose
ok 54 - --end-of-options treats remainder as args
expecting success of 0040.55 'KEEP_DASHDASH works':
test-tool parse-options-flags --keep-dashdash cmd --opt=1 -- --opt=2 --unknown >actual &&
cat >expect <<-\EOF &&
opt: 1
arg 00: --
arg 01: --opt=2
arg 02: --unknown
EOF
test_cmp expect actual
ok 55 - KEEP_DASHDASH works
expecting success of 0040.56 'KEEP_ARGV0 works':
test-tool parse-options-flags --keep-argv0 cmd arg0 --opt=3 >actual &&
cat >expect <<-\EOF &&
opt: 3
arg 00: cmd
arg 01: arg0
EOF
test_cmp expect actual
ok 56 - KEEP_ARGV0 works
expecting success of 0040.57 'STOP_AT_NON_OPTION works':
test-tool parse-options-flags --stop-at-non-option cmd --opt=4 arg0 --opt=5 --unknown >actual &&
cat >expect <<-\EOF &&
opt: 4
arg 00: arg0
arg 01: --opt=5
arg 02: --unknown
EOF
test_cmp expect actual
ok 57 - STOP_AT_NON_OPTION works
expecting success of 0040.58 'KEEP_UNKNOWN_OPT works':
test-tool parse-options-flags --keep-unknown-opt cmd --unknown=1 --opt=6 -u2 >actual &&
cat >expect <<-\EOF &&
opt: 6
arg 00: --unknown=1
arg 01: -u2
EOF
test_cmp expect actual
ok 58 - KEEP_UNKNOWN_OPT works
expecting success of 0040.59 'NO_INTERNAL_HELP works for -h':
test_expect_code 129 test-tool parse-options-flags --no-internal-help cmd -h 2>err &&
grep "^error: unknown switch \`h$SQ" err &&
grep "^usage: " err
error: unknown switch `h'
usage: <...> cmd [options]
ok 59 - NO_INTERNAL_HELP works for -h
expecting success of 0040.60 'NO_INTERNAL_HELP works for --help':
test_expect_code 129 test-tool parse-options-flags --no-internal-help cmd --help 2>err &&
grep '^error: unknown option `'help\' err &&
grep '^usage: ' err
error: unknown option `help'
usage: <...> cmd [options]
ok 60 - NO_INTERNAL_HELP works for --help
expecting success of 0040.61 'NO_INTERNAL_HELP works for --help-all':
test_expect_code 129 test-tool parse-options-flags --no-internal-help cmd --help-all 2>err &&
grep '^error: unknown option `'help-all\' err &&
grep '^usage: ' err
error: unknown option `help-all'
usage: <...> cmd [options]
ok 61 - NO_INTERNAL_HELP works for --help-all
expecting success of 0040.62 'KEEP_UNKNOWN_OPT | NO_INTERNAL_HELP works':
test-tool parse-options-flags --keep-unknown-opt --no-internal-help cmd -h --help --help-all >actual &&
cat >expect <<-\EOF &&
opt: 0
arg 00: -h
arg 01: --help
arg 02: --help-all
EOF
test_cmp expect actual
ok 62 - KEEP_UNKNOWN_OPT | NO_INTERNAL_HELP works
expecting success of 0040.63 'subcommand - no subcommand shows error and usage':
test_expect_code 129 test-tool parse-subcommand cmd 2>err &&
grep "^error: need a subcommand" err &&
grep ^usage: err
error: need a subcommand
usage: <...> cmd subcmd-one
ok 63 - subcommand - no subcommand shows error and usage
expecting success of 0040.64 'subcommand - subcommand after -- shows error and usage':
test_expect_code 129 test-tool parse-subcommand cmd -- subcmd-one 2>err &&
grep "^error: need a subcommand" err &&
grep ^usage: err
error: need a subcommand
usage: <...> cmd subcmd-one
ok 64 - subcommand - subcommand after -- shows error and usage
expecting success of 0040.65 'subcommand - subcommand after --end-of-options shows error and usage':
test_expect_code 129 test-tool parse-subcommand cmd --end-of-options subcmd-one 2>err &&
grep "^error: need a subcommand" err &&
grep ^usage: err
error: need a subcommand
usage: <...> cmd subcmd-one
ok 65 - subcommand - subcommand after --end-of-options shows error and usage
expecting success of 0040.66 'subcommand - unknown subcommand shows error and usage':
test_expect_code 129 test-tool parse-subcommand cmd nope 2>err &&
grep "^error: unknown subcommand: \`nope$SQ" err &&
grep ^usage: err
error: unknown subcommand: `nope'
usage: <...> cmd subcmd-one
ok 66 - subcommand - unknown subcommand shows error and usage
expecting success of 0040.67 'subcommand - subcommands cannot be abbreviated':
test_expect_code 129 test-tool parse-subcommand cmd subcmd-o 2>err &&
grep "^error: unknown subcommand: \`subcmd-o$SQ$" err &&
grep ^usage: err
error: unknown subcommand: `subcmd-o'
usage: <...> cmd subcmd-one
ok 67 - subcommand - subcommands cannot be abbreviated
expecting success of 0040.68 'subcommand - no negated subcommands':
test_expect_code 129 test-tool parse-subcommand cmd no-subcmd-one 2>err &&
grep "^error: unknown subcommand: \`no-subcmd-one$SQ" err &&
grep ^usage: err
error: unknown subcommand: `no-subcmd-one'
usage: <...> cmd subcmd-one
ok 68 - subcommand - no negated subcommands
expecting success of 0040.69 'subcommand - simple':
test-tool parse-subcommand cmd subcmd-two >actual &&
cat >expect <<-\EOF &&
opt: 0
fn: subcmd_two
arg 00: subcmd-two
EOF
test_cmp expect actual
ok 69 - subcommand - simple
expecting success of 0040.70 'subcommand - stop parsing at the first subcommand':
test-tool parse-subcommand cmd --opt=1 subcmd-two subcmd-one --opt=2 >actual &&
cat >expect <<-\EOF &&
opt: 1
fn: subcmd_two
arg 00: subcmd-two
arg 01: subcmd-one
arg 02: --opt=2
EOF
test_cmp expect actual
ok 70 - subcommand - stop parsing at the first subcommand
expecting success of 0040.71 'subcommand - KEEP_ARGV0':
test-tool parse-subcommand --keep-argv0 cmd subcmd-two >actual &&
cat >expect <<-\EOF &&
opt: 0
fn: subcmd_two
arg 00: cmd
arg 01: subcmd-two
EOF
test_cmp expect actual
ok 71 - subcommand - KEEP_ARGV0
expecting success of 0040.72 'subcommand - SUBCOMMAND_OPTIONAL + subcommand not given':
test-tool parse-subcommand --subcommand-optional cmd >actual &&
cat >expect <<-\EOF &&
opt: 0
fn: subcmd_one
EOF
test_cmp expect actual
ok 72 - subcommand - SUBCOMMAND_OPTIONAL + subcommand not given
expecting success of 0040.73 'subcommand - SUBCOMMAND_OPTIONAL + given subcommand':
test-tool parse-subcommand --subcommand-optional cmd subcmd-two branch file >actual &&
cat >expect <<-\EOF &&
opt: 0
fn: subcmd_two
arg 00: subcmd-two
arg 01: branch
arg 02: file
EOF
test_cmp expect actual
ok 73 - subcommand - SUBCOMMAND_OPTIONAL + given subcommand
expecting success of 0040.74 'subcommand - SUBCOMMAND_OPTIONAL + subcommand not given + unknown dashless args':
test-tool parse-subcommand --subcommand-optional cmd branch file >actual &&
cat >expect <<-\EOF &&
opt: 0
fn: subcmd_one
arg 00: branch
arg 01: file
EOF
test_cmp expect actual
ok 74 - subcommand - SUBCOMMAND_OPTIONAL + subcommand not given + unknown dashless args
expecting success of 0040.75 'subcommand - SUBCOMMAND_OPTIONAL + subcommand not given + unknown option':
test_expect_code 129 test-tool parse-subcommand --subcommand-optional cmd --subcommand-opt 2>err &&
grep "^error: unknown option" err &&
grep ^usage: err
error: unknown option `subcommand-opt'
usage: <...> cmd subcmd-one
ok 75 - subcommand - SUBCOMMAND_OPTIONAL + subcommand not given + unknown option
expecting success of 0040.76 'subcommand - SUBCOMMAND_OPTIONAL | KEEP_UNKNOWN_OPT + subcommand not given + unknown option':
test-tool parse-subcommand --subcommand-optional --keep-unknown-opt cmd --subcommand-opt >actual &&
cat >expect <<-\EOF &&
opt: 0
fn: subcmd_one
arg 00: --subcommand-opt
EOF
test_cmp expect actual
ok 76 - subcommand - SUBCOMMAND_OPTIONAL | KEEP_UNKNOWN_OPT + subcommand not given + unknown option
expecting success of 0040.77 'subcommand - SUBCOMMAND_OPTIONAL | KEEP_UNKNOWN_OPT + subcommand ignored after unknown option':
test-tool parse-subcommand --subcommand-optional --keep-unknown-opt cmd --subcommand-opt subcmd-two >actual &&
cat >expect <<-\EOF &&
opt: 0
fn: subcmd_one
arg 00: --subcommand-opt
arg 01: subcmd-two
EOF
test_cmp expect actual
ok 77 - subcommand - SUBCOMMAND_OPTIONAL | KEEP_UNKNOWN_OPT + subcommand ignored after unknown option
expecting success of 0040.78 'subcommand - SUBCOMMAND_OPTIONAL | KEEP_UNKNOWN_OPT + command and subcommand options cannot be mixed':
test-tool parse-subcommand --subcommand-optional --keep-unknown-opt cmd --subcommand-opt branch --opt=1 >actual &&
cat >expect <<-\EOF &&
opt: 0
fn: subcmd_one
arg 00: --subcommand-opt
arg 01: branch
arg 02: --opt=1
EOF
test_cmp expect actual
ok 78 - subcommand - SUBCOMMAND_OPTIONAL | KEEP_UNKNOWN_OPT + command and subcommand options cannot be mixed
expecting success of 0040.79 'subcommand - SUBCOMMAND_OPTIONAL | KEEP_UNKNOWN_OPT | KEEP_ARGV0':
test-tool parse-subcommand --subcommand-optional --keep-unknown-opt --keep-argv0 cmd --subcommand-opt branch >actual &&
cat >expect <<-\EOF &&
opt: 0
fn: subcmd_one
arg 00: cmd
arg 01: --subcommand-opt
arg 02: branch
EOF
test_cmp expect actual
ok 79 - subcommand - SUBCOMMAND_OPTIONAL | KEEP_UNKNOWN_OPT | KEEP_ARGV0
expecting success of 0040.80 'subcommand - SUBCOMMAND_OPTIONAL | KEEP_UNKNOWN_OPT | KEEP_DASHDASH':
test-tool parse-subcommand --subcommand-optional --keep-unknown-opt --keep-dashdash cmd -- --subcommand-opt file >actual &&
cat >expect <<-\EOF &&
opt: 0
fn: subcmd_one
arg 00: --
arg 01: --subcommand-opt
arg 02: file
EOF
test_cmp expect actual
ok 80 - subcommand - SUBCOMMAND_OPTIONAL | KEEP_UNKNOWN_OPT | KEEP_DASHDASH
expecting success of 0040.81 'subcommand - completion helper':
test-tool parse-subcommand cmd --git-completion-helper >actual &&
echo "subcmd-one subcmd-two --opt= --no-opt" >expect &&
test_cmp expect actual
ok 81 - subcommand - completion helper
expecting success of 0040.82 'subcommands are incompatible with STOP_AT_NON_OPTION':
test_must_fail test-tool parse-subcommand --stop-at-non-option cmd subcmd-one 2>err &&
grep ^BUG err
BUG: parse-options.c:560: subcommands are incompatible with PARSE_OPT_STOP_AT_NON_OPTION
ok 82 - subcommands are incompatible with STOP_AT_NON_OPTION
expecting success of 0040.83 'subcommands are incompatible with KEEP_UNKNOWN_OPT unless in combination with SUBCOMMAND_OPTIONAL':
test_must_fail test-tool parse-subcommand --keep-unknown-opt cmd subcmd-two 2>err &&
grep ^BUG err
BUG: parse-options.c:563: subcommands are incompatible with PARSE_OPT_KEEP_UNKNOWN_OPT unless in combination with PARSE_OPT_SUBCOMMAND_OPTIONAL
ok 83 - subcommands are incompatible with KEEP_UNKNOWN_OPT unless in combination with SUBCOMMAND_OPTIONAL
expecting success of 0040.84 'subcommands are incompatible with KEEP_DASHDASH unless in combination with SUBCOMMAND_OPTIONAL':
test_must_fail test-tool parse-subcommand --keep-dashdash cmd subcmd-two 2>err &&
grep ^BUG err
BUG: parse-options.c:565: subcommands are incompatible with PARSE_OPT_KEEP_DASHDASH unless in combination with PARSE_OPT_SUBCOMMAND_OPTIONAL
ok 84 - subcommands are incompatible with KEEP_DASHDASH unless in combination with SUBCOMMAND_OPTIONAL
expecting success of 0040.85 'negative magnitude':
test_must_fail test-tool parse-options --magnitude -1 >out 2>err &&
grep "non-negative integer" err &&
test_must_be_empty out
error: option `magnitude' expects a non-negative integer value with an optional k/m/g suffix
ok 85 - negative magnitude
expecting success of 0040.86 'magnitude with units but no numbers':
test_must_fail test-tool parse-options --magnitude m >out 2>err &&
grep "non-negative integer" err &&
test_must_be_empty out
error: option `magnitude' expects a non-negative integer value with an optional k/m/g suffix
ok 86 - magnitude with units but no numbers
# passed all 86 test(s)
1..86
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0051-windows-named-pipe.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0051-windows-named-pipe/.git/
1..0 # SKIP skipping Windows-specific tests
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0050-filesystem.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0050-filesystem/.git/
checking prerequisite: CASE_INSENSITIVE_FS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-CASE_INSENSITIVE_FS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-CASE_INSENSITIVE_FS" &&
echo good >CamelCase &&
echo bad >camelcase &&
test "$(cat CamelCase)" != good
)
prerequisite CASE_INSENSITIVE_FS not satisfied
checking prerequisite: UTF8_NFD_TO_NFC
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-UTF8_NFD_TO_NFC" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-UTF8_NFD_TO_NFC" &&
# check whether FS converts nfd unicode to nfc
auml=$(printf "\303\244")
aumlcdiar=$(printf "\141\314\210")
>"$auml" &&
test -f "$aumlcdiar"
)
prerequisite UTF8_NFD_TO_NFC not satisfied
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
expecting success of 0050.1 'detection of case insensitive filesystem during repo init':
{
test_must_fail git config --bool core.ignorecase >/dev/null ||
test $(git config --bool core.ignorecase) = false
}
ok 1 - detection of case insensitive filesystem during repo init
expecting success of 0050.2 'detection of filesystem w/o symlink support during repo init':
{
test_must_fail git config --bool core.symlinks ||
test "$(git config --bool core.symlinks)" = true
}
ok 2 - detection of filesystem w/o symlink support during repo init
expecting success of 0050.3 'setup case tests':
git config core.ignorecase true &&
touch camelcase &&
git add camelcase &&
git commit -m "initial" &&
git tag initial &&
git checkout -b topic &&
git mv camelcase tmp &&
git mv tmp CamelCase &&
git commit -m "rename" &&
git checkout -f main
[main (root-commit) 4f2cf87] initial
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 camelcase
Switched to a new branch 'topic'
[topic 0a6fec9] rename
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
rename camelcase => CamelCase (100%)
Switched to branch 'main'
ok 3 - setup case tests
expecting success of 0050.4 'rename (case change)':
git mv camelcase CamelCase &&
git commit -m "rename"
[main 0a6fec9] rename
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
rename camelcase => CamelCase (100%)
ok 4 - rename (case change)
expecting success of 0050.5 'merge (case change)':
rm -f CamelCase &&
rm -f camelcase &&
git reset --hard initial &&
git merge topic
HEAD is now at 4f2cf87 initial
Updating 4f2cf87..0a6fec9
Fast-forward
camelcase => CamelCase | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename camelcase => CamelCase (100%)
ok 5 - merge (case change)
ok 6 # skip add directory (with different case) (missing CASE_INSENSITIVE_FS)
ok 7 # skip add (with different case) (missing CASE_INSENSITIVE_FS)
expecting success of 0050.8 'setup unicode normalization tests':
test_create_repo unicode &&
cd unicode &&
git config core.precomposeunicode false &&
touch "$aumlcdiar" &&
git add "$aumlcdiar" &&
git commit -m initial &&
git tag initial &&
git checkout -b topic &&
git mv $aumlcdiar tmp &&
git mv tmp "$auml" &&
git commit -m rename &&
git checkout -f main
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0050-filesystem/unicode/.git/
[main (root-commit) 34f0acb] initial
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 "a\314\210"
Switched to a new branch 'topic'
[topic 591d19c] rename
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
rename "a\314\210" => "\303\244" (100%)
Switched to branch 'main'
ok 8 - setup unicode normalization tests
expecting success of 0050.9 'rename (silent unicode normalization)':
git mv "$aumlcdiar" "$auml" &&
git commit -m rename
[main 591d19c] rename
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
rename "a\314\210" => "\303\244" (100%)
ok 9 - rename (silent unicode normalization)
expecting success of 0050.10 'merge (silent unicode normalization)':
git reset --hard initial &&
git merge topic
HEAD is now at 34f0acb initial
Updating 34f0acb..591d19c
Fast-forward
"a\314\210" => "\303\244" | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename "a\314\210" => "\303\244" (100%)
ok 10 - merge (silent unicode normalization)
ok 11 # skip checkout with no pathspec and a case insensitive fs (missing CASE_INSENSITIVE_FS)
# passed all 11 test(s)
1..11
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0055-beyond-symlinks.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0055-beyond-symlinks/.git/
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
expecting success of 0055.1 'setup':
>a &&
mkdir b &&
ln -s b c &&
>c/d &&
git update-index --add a b/d
ok 1 - setup
expecting success of 0055.2 'update-index --add beyond symlinks':
test_must_fail git update-index --add c/d &&
cat >expect <<-\EOF &&
a
b/d
EOF
git ls-files >actual &&
test_cmp expect actual
error: 'c/d' is beyond a symbolic link
fatal: Unable to process path c/d
ok 2 - update-index --add beyond symlinks
expecting success of 0055.3 'add beyond symlinks':
test_must_fail git add c/d &&
cat >expect <<-\EOF &&
a
b/d
EOF
git ls-files >actual &&
test_cmp expect actual
fatal: pathspec 'c/d' is beyond a symbolic link
ok 3 - add beyond symlinks
# passed all 3 test(s)
1..3
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0056-git-C.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0056-git-C/.git/
expecting success of 0056.1 '"git -C <path>" runs git from the directory <path>':
test_create_repo dir1 &&
echo 1 >dir1/a.txt &&
msg="initial in dir1" &&
(cd dir1 && git add a.txt && git commit -m "$msg") &&
echo "$msg" >expected &&
git -C dir1 log --format=%s >actual &&
test_cmp expected actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0056-git-C/dir1/.git/
[master (root-commit) 4efbfb5] initial in dir1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 a.txt
ok 1 - "git -C <path>" runs git from the directory <path>
expecting success of 0056.2 '"git -C <path>" with an empty <path> is a no-op':
(
mkdir -p dir1/subdir &&
cd dir1/subdir &&
git -C "" rev-parse --show-prefix >actual &&
echo subdir/ >expect &&
test_cmp expect actual
)
ok 2 - "git -C <path>" with an empty <path> is a no-op
expecting success of 0056.3 'Multiple -C options: "-C dir1 -C dir2" is equivalent to "-C dir1/dir2"':
test_create_repo dir1/dir2 &&
echo 1 >dir1/dir2/b.txt &&
git -C dir1/dir2 add b.txt &&
msg="initial in dir1/dir2" &&
echo "$msg" >expected &&
git -C dir1/dir2 commit -m "$msg" &&
git -C dir1 -C dir2 log --format=%s >actual &&
test_cmp expected actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0056-git-C/dir1/dir2/.git/
[master (root-commit) ea3acc3] initial in dir1/dir2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 b.txt
ok 3 - Multiple -C options: "-C dir1 -C dir2" is equivalent to "-C dir1/dir2"
expecting success of 0056.4 'Effect on --git-dir option: "-C c --git-dir=a.git" is equivalent to "--git-dir c/a.git"':
mkdir c &&
mkdir c/a &&
mkdir c/a.git &&
(cd c/a.git && git init --bare) &&
echo 1 >c/a/a.txt &&
git --git-dir c/a.git --work-tree=c/a add a.txt &&
git --git-dir c/a.git --work-tree=c/a commit -m "initial" &&
git --git-dir=c/a.git log -1 --format=%s >expected &&
git -C c --git-dir=a.git log -1 --format=%s >actual &&
test_cmp expected actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0056-git-C/c/a.git/
[master (root-commit) cac529a] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 a.txt
ok 4 - Effect on --git-dir option: "-C c --git-dir=a.git" is equivalent to "--git-dir c/a.git"
expecting success of 0056.5 'Order should not matter: "--git-dir=a.git -C c" is equivalent to "-C c --git-dir=a.git"':
git -C c --git-dir=a.git log -1 --format=%s >expected &&
git --git-dir=a.git -C c log -1 --format=%s >actual &&
test_cmp expected actual
ok 5 - Order should not matter: "--git-dir=a.git -C c" is equivalent to "-C c --git-dir=a.git"
expecting success of 0056.6 'Effect on --work-tree option: "-C c/a.git --work-tree=../a" is equivalent to "--work-tree=c/a --git-dir=c/a.git"':
rm c/a/a.txt &&
git --git-dir=c/a.git --work-tree=c/a status >expected &&
git -C c/a.git --work-tree=../a status >actual &&
test_cmp expected actual
ok 6 - Effect on --work-tree option: "-C c/a.git --work-tree=../a" is equivalent to "--work-tree=c/a --git-dir=c/a.git"
expecting success of 0056.7 'Order should not matter: "--work-tree=../a -C c/a.git" is equivalent to "-C c/a.git --work-tree=../a"':
git -C c/a.git --work-tree=../a status >expected &&
git --work-tree=../a -C c/a.git status >actual &&
test_cmp expected actual
ok 7 - Order should not matter: "--work-tree=../a -C c/a.git" is equivalent to "-C c/a.git --work-tree=../a"
expecting success of 0056.8 'Effect on --git-dir and --work-tree options - "-C c --git-dir=a.git --work-tree=a" is equivalent to "--git-dir=c/a.git --work-tree=c/a"':
git --git-dir=c/a.git --work-tree=c/a status >expected &&
git -C c --git-dir=a.git --work-tree=a status >actual &&
test_cmp expected actual
ok 8 - Effect on --git-dir and --work-tree options - "-C c --git-dir=a.git --work-tree=a" is equivalent to "--git-dir=c/a.git --work-tree=c/a"
expecting success of 0056.9 'Order should not matter: "-C c --git-dir=a.git --work-tree=a" is equivalent to "--git-dir=a.git -C c --work-tree=a"':
git -C c --git-dir=a.git --work-tree=a status >expected &&
git --git-dir=a.git -C c --work-tree=a status >actual &&
test_cmp expected actual
ok 9 - Order should not matter: "-C c --git-dir=a.git --work-tree=a" is equivalent to "--git-dir=a.git -C c --work-tree=a"
expecting success of 0056.10 'Order should not matter: "-C c --git-dir=a.git --work-tree=a" is equivalent to "--git-dir=a.git --work-tree=a -C c"':
git -C c --git-dir=a.git --work-tree=a status >expected &&
git --git-dir=a.git --work-tree=a -C c status >actual &&
test_cmp expected actual
ok 10 - Order should not matter: "-C c --git-dir=a.git --work-tree=a" is equivalent to "--git-dir=a.git --work-tree=a -C c"
expecting success of 0056.11 'Relative followed by fullpath: "-C ./here -C /there" is equivalent to "-C /there"':
echo "initial in dir1/dir2" >expected &&
git -C dir1 -C "$(pwd)/dir1/dir2" log --format=%s >actual &&
test_cmp expected actual
ok 11 - Relative followed by fullpath: "-C ./here -C /there" is equivalent to "-C /there"
# passed all 11 test(s)
1..11
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0021-conversion.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0021-conversion/.git/
expecting success of 0021.1 'setup':
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 &&
echo "content-test2" >test2.o &&
echo "content-test3 - filename with special characters" >"test3 'sq',\$x=.o"
ok 1 - setup
expecting success of 0021.2 'check':
test_cmp test.o test &&
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 &&
test_cmp test.r test.t
ok 2 - check
expecting success of 0021.3 'expanded_in_repo':
cat >expanded-keywords.0 <<-\EOF &&
File with expanded keywords
$Id$
$Id:$
$Id: 0000000000000000000000000000000000000000 $
$Id: NoSpaceAtEnd$
$Id:NoSpaceAtFront $
$Id:NoSpaceAtEitherEnd$
$Id: NoTerminatingSymbol
$Id: Foreign Commit With Spaces $
EOF
{
cat expanded-keywords.0 &&
printf "\$Id: NoTerminatingSymbolAtEOF"
} >expanded-keywords &&
cat expanded-keywords >expanded-keywords-crlf &&
git add expanded-keywords expanded-keywords-crlf &&
git commit -m "File with keywords expanded" &&
id=$(git rev-parse --verify :expanded-keywords) &&
cat >expected-output.0 <<-EOF &&
File with expanded keywords
\$Id: $id \$
\$Id: $id \$
\$Id: $id \$
\$Id: $id \$
\$Id: $id \$
\$Id: $id \$
\$Id: NoTerminatingSymbol
\$Id: Foreign Commit With Spaces \$
EOF
{
cat expected-output.0 &&
printf "\$Id: NoTerminatingSymbolAtEOF"
} >expected-output &&
{
append_cr <expected-output.0 &&
printf "\$Id: NoTerminatingSymbolAtEOF"
} >expected-output-crlf &&
{
echo "expanded-keywords ident" &&
echo "expanded-keywords-crlf ident text eol=crlf"
} >>.gitattributes &&
rm -f expanded-keywords expanded-keywords-crlf &&
git checkout -- expanded-keywords &&
test_cmp expected-output expanded-keywords &&
git checkout -- expanded-keywords-crlf &&
test_cmp expected-output-crlf expanded-keywords-crlf
[main (root-commit) bf31399] File with keywords expanded
Author: A U Thor <author@example.com>
5 files changed, 29 insertions(+)
create mode 100644 expanded-keywords
create mode 100644 expanded-keywords-crlf
create mode 100644 test
create mode 100644 test.i
create mode 100644 test.t
ok 3 - expanded_in_repo
expecting success of 0021.4 'filter shell-escaped filenames':
cat >argc.sh <<-EOF &&
#!$SHELL_PATH
cat >/dev/null
echo argc: \$# "\$@"
EOF
normal=name-no-magic &&
special="name with 'sq' and \$x" &&
echo some test text >"$normal" &&
echo some test text >"$special" &&
git add "$normal" "$special" &&
git commit -q -m "add files" &&
echo "name* filter=argc" >.gitattributes &&
# delete the files and check them out again, using a smudge filter
# that will count the args and echo the command-line back to us
test_config filter.argc.smudge "sh ./argc.sh %f" &&
rm "$normal" "$special" &&
git checkout -- "$normal" "$special" &&
# make sure argc.sh counted the right number of args
echo "argc: 1 $normal" >expect &&
test_cmp expect "$normal" &&
echo "argc: 1 $special" >expect &&
test_cmp expect "$special" &&
# do the same thing, but with more args in the filter expression
test_config filter.argc.smudge "sh ./argc.sh %f --my-extra-arg" &&
rm "$normal" "$special" &&
git checkout -- "$normal" "$special" &&
# make sure argc.sh counted the right number of args
echo "argc: 2 $normal --my-extra-arg" >expect &&
test_cmp expect "$normal" &&
echo "argc: 2 $special --my-extra-arg" >expect &&
test_cmp expect "$special" &&
:
ok 4 - filter shell-escaped filenames
expecting success of 0021.5 'required filter should filter data':
test_config filter.required.smudge ./rot13.sh &&
test_config filter.required.clean ./rot13.sh &&
test_config filter.required.required true &&
echo "*.r filter=required" >.gitattributes &&
cat test.o >test.r &&
git add test.r &&
rm -f test.r &&
git checkout -- test.r &&
test_cmp test.o test.r &&
./rot13.sh <test.o >expected &&
git cat-file blob :test.r >actual &&
test_cmp expected actual
ok 5 - required filter should filter data
expecting success of 0021.6 'required filter smudge failure':
test_config filter.failsmudge.smudge false &&
test_config filter.failsmudge.clean cat &&
test_config filter.failsmudge.required true &&
echo "*.fs filter=failsmudge" >.gitattributes &&
echo test >test.fs &&
git add test.fs &&
rm -f test.fs &&
test_must_fail git checkout -- test.fs
error: external filter 'false' failed 1
error: external filter 'false' failed
fatal: test.fs: smudge filter failsmudge failed
ok 6 - required filter smudge failure
expecting success of 0021.7 'required filter clean failure':
test_config filter.failclean.smudge cat &&
test_config filter.failclean.clean false &&
test_config filter.failclean.required true &&
echo "*.fc filter=failclean" >.gitattributes &&
echo test >test.fc &&
test_must_fail git add test.fc
error: external filter 'false' failed 1
error: external filter 'false' failed
fatal: test.fc: clean filter 'failclean' failed
ok 7 - required filter clean failure
expecting success of 0021.8 'required filter with absent clean field':
test_config filter.absentclean.smudge cat &&
test_config filter.absentclean.required true &&
echo "*.ac filter=absentclean" >.gitattributes &&
echo test >test.ac &&
test_must_fail git add test.ac 2>stderr &&
test_i18ngrep "fatal: test.ac: clean filter .absentclean. failed" stderr
fatal: test.ac: clean filter 'absentclean' failed
ok 8 - required filter with absent clean field
expecting success of 0021.9 'required filter with absent smudge field':
test_config filter.absentsmudge.clean cat &&
test_config filter.absentsmudge.required true &&
echo "*.as filter=absentsmudge" >.gitattributes &&
echo test >test.as &&
git add test.as &&
rm -f test.as &&
test_must_fail git checkout -- test.as 2>stderr &&
test_i18ngrep "fatal: test.as: smudge filter absentsmudge failed" stderr
fatal: test.as: smudge filter absentsmudge failed
ok 9 - required filter with absent smudge field
expecting success of 0021.10 'filtering large input to small output should use little memory':
test_config filter.devnull.clean "cat >/dev/null" &&
test_config filter.devnull.required true &&
for i in $(test_seq 1 30); do printf "%1048576d" 1 || return 1; done >30MB &&
echo "30MB filter=devnull" >.gitattributes &&
GIT_MMAP_LIMIT=1m GIT_ALLOC_LIMIT=1m git add 30MB
ok 10 - filtering large input to small output should use little memory
expecting success of 0021.11 'filter that does not read is fine':
test-tool genrandom foo $((128 * 1024 + 1)) >big &&
echo "big filter=epipe" >.gitattributes &&
test_config filter.epipe.clean "echo xyzzy" &&
git add big &&
git cat-file blob :big >actual &&
echo xyzzy >expect &&
test_cmp expect actual
ok 11 - filter that does not read is fine
checking prerequisite: EXPENSIVE
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-EXPENSIVE" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-EXPENSIVE" &&
test -n "$GIT_TEST_LONG"
)
prerequisite EXPENSIVE not satisfied
ok 12 # skip filter large file (missing EXPENSIVE)
expecting success of 0021.13 'filter: clean empty file':
test_config filter.in-repo-header.clean "echo cleaned && cat" &&
test_config filter.in-repo-header.smudge "sed 1d" &&
echo "empty-in-worktree filter=in-repo-header" >>.gitattributes &&
>empty-in-worktree &&
echo cleaned >expected &&
git add empty-in-worktree &&
git show :empty-in-worktree >actual &&
test_cmp expected actual
ok 13 - filter: clean empty file
expecting success of 0021.14 'filter: smudge empty file':
test_config filter.empty-in-repo.clean "cat >/dev/null" &&
test_config filter.empty-in-repo.smudge "echo smudged && cat" &&
echo "empty-in-repo filter=empty-in-repo" >>.gitattributes &&
echo dead data walking >empty-in-repo &&
git add empty-in-repo &&
echo smudged >expected &&
git checkout-index --prefix=filtered- empty-in-repo &&
test_cmp expected filtered-empty-in-repo
ok 14 - filter: smudge empty file
expecting success of 0021.15 'disable filter with empty override':
test_config_global filter.disable.smudge false &&
test_config_global filter.disable.clean false &&
test_config filter.disable.smudge false &&
test_config filter.disable.clean false &&
echo "*.disable filter=disable" >.gitattributes &&
echo test >test.disable &&
git -c filter.disable.clean= add test.disable 2>err &&
test_must_be_empty err &&
rm -f test.disable &&
git -c filter.disable.smudge= checkout -- test.disable 2>err &&
test_must_be_empty err
ok 15 - disable filter with empty override
expecting success of 0021.16 'diff does not reuse worktree files that need cleaning':
test_config filter.counter.clean "echo . >>count; sed s/^/clean:/" &&
echo "file filter=counter" >.gitattributes &&
test_commit one file &&
test_commit two file &&
>count &&
git diff-tree -p HEAD &&
test_line_count = 0 count
[main 2e1b3a0] one
Author: A U Thor <author@example.com>
9 files changed, 8 insertions(+)
create mode 100644 30MB
create mode 100644 big
create mode 100644 empty-in-repo
create mode 100644 empty-in-worktree
create mode 100644 file
create mode 100644 test.as
create mode 100644 test.disable
create mode 100644 test.fs
create mode 100644 test.r
[main 5763447] two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
57634479428deffd4cbb8230d4ff66a3801fc1be
diff --git a/file b/file
index e4a1655..0c54b7b 100644
--- a/file
+++ b/file
@@ -1 +1 @@
-clean:one
+clean:two
ok 16 - diff does not reuse worktree files that need cleaning
expecting success of 0021.17 'required process filter should filter data':
test_config_global filter.protocol.process "test-tool rot13-filter --log=debug.log clean smudge" &&
test_config_global filter.protocol.required true &&
rm -rf repo &&
mkdir repo &&
(
cd repo &&
git init &&
echo "*.r filter=protocol" >.gitattributes &&
git add . &&
git commit -m "test commit 1" &&
git branch empty-branch &&
cp "$TEST_ROOT/test.o" test.r &&
cp "$TEST_ROOT/test2.o" test2.r &&
mkdir testsubdir &&
cp "$TEST_ROOT/test3 'sq',\$x=.o" "testsubdir/test3 'sq',\$x=.r" &&
>test4-empty.r &&
S=$(test_file_size test.r) &&
S2=$(test_file_size test2.r) &&
S3=$(test_file_size "testsubdir/test3 'sq',\$x=.r") &&
M=$(git hash-object test.r) &&
M2=$(git hash-object test2.r) &&
M3=$(git hash-object "testsubdir/test3 'sq',\$x=.r") &&
EMPTY=$(git hash-object /dev/null) &&
filter_git add . &&
cat >expected.log <<-EOF &&
START
init handshake complete
IN: clean test.r $S [OK] -- OUT: $S . [OK]
IN: clean test2.r $S2 [OK] -- OUT: $S2 . [OK]
IN: clean test4-empty.r 0 [OK] -- OUT: 0 [OK]
IN: clean testsubdir/test3 'sq',\$x=.r $S3 [OK] -- OUT: $S3 . [OK]
STOP
EOF
test_cmp_count expected.log debug.log &&
git commit -m "test commit 2" &&
MAIN=$(git rev-parse --verify main) &&
META="ref=refs/heads/main treeish=$MAIN" &&
rm -f test2.r "testsubdir/test3 'sq',\$x=.r" &&
filter_git checkout --quiet --no-progress . &&
cat >expected.log <<-EOF &&
START
init handshake complete
IN: smudge test2.r blob=$M2 $S2 [OK] -- OUT: $S2 . [OK]
IN: smudge testsubdir/test3 'sq',\$x=.r blob=$M3 $S3 [OK] -- OUT: $S3 . [OK]
STOP
EOF
test_cmp_exclude_clean expected.log debug.log &&
# Make sure that the file appears dirty, so checkout below has to
# run the configured filter.
touch test.r &&
filter_git checkout --quiet --no-progress empty-branch &&
cat >expected.log <<-EOF &&
START
init handshake complete
IN: clean test.r $S [OK] -- OUT: $S . [OK]
STOP
EOF
test_cmp_exclude_clean expected.log debug.log &&
filter_git checkout --quiet --no-progress main &&
cat >expected.log <<-EOF &&
START
init handshake complete
IN: smudge test.r $META blob=$M $S [OK] -- OUT: $S . [OK]
IN: smudge test2.r $META blob=$M2 $S2 [OK] -- OUT: $S2 . [OK]
IN: smudge test4-empty.r $META blob=$EMPTY 0 [OK] -- OUT: 0 [OK]
IN: smudge testsubdir/test3 'sq',\$x=.r $META blob=$M3 $S3 [OK] -- OUT: $S3 . [OK]
STOP
EOF
test_cmp_exclude_clean expected.log debug.log &&
test_cmp_committed_rot13 "$TEST_ROOT/test.o" test.r &&
test_cmp_committed_rot13 "$TEST_ROOT/test2.o" test2.r &&
test_cmp_committed_rot13 "$TEST_ROOT/test3 'sq',\$x=.o" "testsubdir/test3 'sq',\$x=.r"
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0021-conversion/repo/.git/
[main (root-commit) 56d459b] test commit 1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 .gitattributes
[main 9ea74df] test commit 2
Author: A U Thor <author@example.com>
4 files changed, 5 insertions(+)
create mode 100644 test.r
create mode 100644 test2.r
create mode 100644 test4-empty.r
create mode 100644 testsubdir/test3 'sq',$x=.r
ok 17 - required process filter should filter data
expecting success of 0021.18 'required process filter should filter data for various subcommands':
test_config_global filter.protocol.process "test-tool rot13-filter --log=debug.log clean smudge" &&
test_config_global filter.protocol.required true &&
(
cd repo &&
S=$(test_file_size test.r) &&
S2=$(test_file_size test2.r) &&
S3=$(test_file_size "testsubdir/test3 'sq',\$x=.r") &&
M=$(git hash-object test.r) &&
M2=$(git hash-object test2.r) &&
M3=$(git hash-object "testsubdir/test3 'sq',\$x=.r") &&
EMPTY=$(git hash-object /dev/null) &&
MAIN=$(git rev-parse --verify main) &&
cp "$TEST_ROOT/test.o" test5.r &&
git add test5.r &&
git commit -m "test commit 3" &&
git checkout empty-branch &&
filter_git rebase --onto empty-branch main^^ main &&
MAIN2=$(git rev-parse --verify main) &&
META="ref=refs/heads/main treeish=$MAIN2" &&
cat >expected.log <<-EOF &&
START
init handshake complete
IN: smudge test.r $META blob=$M $S [OK] -- OUT: $S . [OK]
IN: smudge test2.r $META blob=$M2 $S2 [OK] -- OUT: $S2 . [OK]
IN: smudge test4-empty.r $META blob=$EMPTY 0 [OK] -- OUT: 0 [OK]
IN: smudge test5.r $META blob=$M $S [OK] -- OUT: $S . [OK]
IN: smudge testsubdir/test3 'sq',\$x=.r $META blob=$M3 $S3 [OK] -- OUT: $S3 . [OK]
STOP
EOF
test_cmp_exclude_clean expected.log debug.log &&
git reset --hard empty-branch &&
filter_git reset --hard $MAIN &&
META="treeish=$MAIN" &&
cat >expected.log <<-EOF &&
START
init handshake complete
IN: smudge test.r $META blob=$M $S [OK] -- OUT: $S . [OK]
IN: smudge test2.r $META blob=$M2 $S2 [OK] -- OUT: $S2 . [OK]
IN: smudge test4-empty.r $META blob=$EMPTY 0 [OK] -- OUT: 0 [OK]
IN: smudge testsubdir/test3 'sq',\$x=.r $META blob=$M3 $S3 [OK] -- OUT: $S3 . [OK]
STOP
EOF
test_cmp_exclude_clean expected.log debug.log &&
git branch old-main $MAIN &&
git reset --hard empty-branch &&
filter_git reset --hard old-main &&
META="ref=refs/heads/old-main treeish=$MAIN" &&
cat >expected.log <<-EOF &&
START
init handshake complete
IN: smudge test.r $META blob=$M $S [OK] -- OUT: $S . [OK]
IN: smudge test2.r $META blob=$M2 $S2 [OK] -- OUT: $S2 . [OK]
IN: smudge test4-empty.r $META blob=$EMPTY 0 [OK] -- OUT: 0 [OK]
IN: smudge testsubdir/test3 'sq',\$x=.r $META blob=$M3 $S3 [OK] -- OUT: $S3 . [OK]
STOP
EOF
test_cmp_exclude_clean expected.log debug.log &&
git checkout -b merge empty-branch &&
git branch -f main $MAIN2 &&
filter_git merge main &&
META="treeish=$MAIN2" &&
cat >expected.log <<-EOF &&
START
init handshake complete
IN: smudge test.r $META blob=$M $S [OK] -- OUT: $S . [OK]
IN: smudge test2.r $META blob=$M2 $S2 [OK] -- OUT: $S2 . [OK]
IN: smudge test4-empty.r $META blob=$EMPTY 0 [OK] -- OUT: 0 [OK]
IN: smudge test5.r $META blob=$M $S [OK] -- OUT: $S . [OK]
IN: smudge testsubdir/test3 'sq',\$x=.r $META blob=$M3 $S3 [OK] -- OUT: $S3 . [OK]
STOP
EOF
test_cmp_exclude_clean expected.log debug.log &&
filter_git archive main >/dev/null &&
META="ref=refs/heads/main treeish=$MAIN2" &&
cat >expected.log <<-EOF &&
START
init handshake complete
IN: smudge test.r $META blob=$M $S [OK] -- OUT: $S . [OK]
IN: smudge test2.r $META blob=$M2 $S2 [OK] -- OUT: $S2 . [OK]
IN: smudge test4-empty.r $META blob=$EMPTY 0 [OK] -- OUT: 0 [OK]
IN: smudge test5.r $META blob=$M $S [OK] -- OUT: $S . [OK]
IN: smudge testsubdir/test3 'sq',\$x=.r $META blob=$M3 $S3 [OK] -- OUT: $S3 . [OK]
STOP
EOF
test_cmp_exclude_clean expected.log debug.log &&
TREE="$(git rev-parse $MAIN2^{tree})" &&
filter_git archive $TREE >/dev/null &&
META="treeish=$TREE" &&
cat >expected.log <<-EOF &&
START
init handshake complete
IN: smudge test.r $META blob=$M $S [OK] -- OUT: $S . [OK]
IN: smudge test2.r $META blob=$M2 $S2 [OK] -- OUT: $S2 . [OK]
IN: smudge test4-empty.r $META blob=$EMPTY 0 [OK] -- OUT: 0 [OK]
IN: smudge test5.r $META blob=$M $S [OK] -- OUT: $S . [OK]
IN: smudge testsubdir/test3 'sq',\$x=.r $META blob=$M3 $S3 [OK] -- OUT: $S3 . [OK]
STOP
EOF
test_cmp_exclude_clean expected.log debug.log
)
[main 07631f7] test commit 3
Author: A U Thor <author@example.com>
1 file changed, 3 insertions(+)
create mode 100644 test5.r
Switched to branch 'empty-branch'
Current branch main is up to date.
HEAD is now at 56d459b test commit 1
HEAD is now at 9ea74df test commit 2
HEAD is now at 56d459b test commit 1
HEAD is now at 9ea74df test commit 2
Switched to a new branch 'merge'
Updating 56d459b..07631f7
Fast-forward
test.r | 3 +++
test2.r | 1 +
test4-empty.r | 0
test5.r | 3 +++
testsubdir/test3 'sq',$x=.r | 1 +
5 files changed, 8 insertions(+)
create mode 100644 test.r
create mode 100644 test2.r
create mode 100644 test4-empty.r
create mode 100644 test5.r
create mode 100644 testsubdir/test3 'sq',$x=.r
ok 18 - required process filter should filter data for various subcommands
expecting success of 0021.19 'required process filter takes precedence':
test_config_global filter.protocol.clean false &&
test_config_global filter.protocol.process "test-tool rot13-filter --log=debug.log clean" &&
test_config_global filter.protocol.required true &&
rm -rf repo &&
mkdir repo &&
(
cd repo &&
git init &&
echo "*.r filter=protocol" >.gitattributes &&
cp "$TEST_ROOT/test.o" test.r &&
S=$(test_file_size test.r) &&
# Check that the process filter is invoked here
filter_git add . &&
cat >expected.log <<-EOF &&
START
init handshake complete
IN: clean test.r $S [OK] -- OUT: $S . [OK]
STOP
EOF
test_cmp_count expected.log debug.log
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0021-conversion/repo/.git/
ok 19 - required process filter takes precedence
expecting success of 0021.20 'required process filter should be used only for "clean" operation only':
test_config_global filter.protocol.process "test-tool rot13-filter --log=debug.log clean" &&
rm -rf repo &&
mkdir repo &&
(
cd repo &&
git init &&
echo "*.r filter=protocol" >.gitattributes &&
cp "$TEST_ROOT/test.o" test.r &&
S=$(test_file_size test.r) &&
filter_git add . &&
cat >expected.log <<-EOF &&
START
init handshake complete
IN: clean test.r $S [OK] -- OUT: $S . [OK]
STOP
EOF
test_cmp_count expected.log debug.log &&
rm test.r &&
filter_git checkout --quiet --no-progress . &&
# If the filter would be used for "smudge", too, we would see
# "IN: smudge test.r 57 [OK] -- OUT: 57 . [OK]" here
cat >expected.log <<-EOF &&
START
init handshake complete
STOP
EOF
test_cmp_exclude_clean expected.log debug.log
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0021-conversion/repo/.git/
ok 20 - required process filter should be used only for "clean" operation only
expecting success of 0021.21 'required process filter should process multiple packets':
test_config_global filter.protocol.process "test-tool rot13-filter --log=debug.log clean smudge" &&
test_config_global filter.protocol.required true &&
rm -rf repo &&
mkdir repo &&
(
cd repo &&
git init &&
# Generate data requiring 1, 2, 3 packets
S=65516 && # PKTLINE_DATA_MAXLEN -> Maximal size of a packet
generate_random_characters $(($S )) 1pkt_1__.file &&
generate_random_characters $(($S +1)) 2pkt_1+1.file &&
generate_random_characters $(($S*2-1)) 2pkt_2-1.file &&
generate_random_characters $(($S*2 )) 2pkt_2__.file &&
generate_random_characters $(($S*2+1)) 3pkt_2+1.file &&
for FILE in "$TEST_ROOT"/*.file
do
cp "$FILE" . &&
rot13.sh <"$FILE" >"$FILE.rot13" || return 1
done &&
echo "*.file filter=protocol" >.gitattributes &&
filter_git add *.file .gitattributes &&
cat >expected.log <<-EOF &&
START
init handshake complete
IN: clean 1pkt_1__.file $(($S )) [OK] -- OUT: $(($S )) . [OK]
IN: clean 2pkt_1+1.file $(($S +1)) [OK] -- OUT: $(($S +1)) .. [OK]
IN: clean 2pkt_2-1.file $(($S*2-1)) [OK] -- OUT: $(($S*2-1)) .. [OK]
IN: clean 2pkt_2__.file $(($S*2 )) [OK] -- OUT: $(($S*2 )) .. [OK]
IN: clean 3pkt_2+1.file $(($S*2+1)) [OK] -- OUT: $(($S*2+1)) ... [OK]
STOP
EOF
test_cmp_count expected.log debug.log &&
M1="blob=$(git hash-object 1pkt_1__.file)" &&
M2="blob=$(git hash-object 2pkt_1+1.file)" &&
M3="blob=$(git hash-object 2pkt_2-1.file)" &&
M4="blob=$(git hash-object 2pkt_2__.file)" &&
M5="blob=$(git hash-object 3pkt_2+1.file)" &&
rm -f *.file debug.log &&
filter_git checkout --quiet --no-progress -- *.file &&
cat >expected.log <<-EOF &&
START
init handshake complete
IN: smudge 1pkt_1__.file $M1 $(($S )) [OK] -- OUT: $(($S )) . [OK]
IN: smudge 2pkt_1+1.file $M2 $(($S +1)) [OK] -- OUT: $(($S +1)) .. [OK]
IN: smudge 2pkt_2-1.file $M3 $(($S*2-1)) [OK] -- OUT: $(($S*2-1)) .. [OK]
IN: smudge 2pkt_2__.file $M4 $(($S*2 )) [OK] -- OUT: $(($S*2 )) .. [OK]
IN: smudge 3pkt_2+1.file $M5 $(($S*2+1)) [OK] -- OUT: $(($S*2+1)) ... [OK]
STOP
EOF
test_cmp_exclude_clean expected.log debug.log &&
for FILE in *.file
do
test_cmp_committed_rot13 "$TEST_ROOT/$FILE" $FILE || return 1
done
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0021-conversion/repo/.git/
ok 21 - required process filter should process multiple packets
expecting success of 0021.22 'required process filter with clean error should fail':
test_config_global filter.protocol.process "test-tool rot13-filter --log=debug.log clean smudge" &&
test_config_global filter.protocol.required true &&
rm -rf repo &&
mkdir repo &&
(
cd repo &&
git init &&
echo "*.r filter=protocol" >.gitattributes &&
cp "$TEST_ROOT/test.o" test.r &&
echo "this is going to fail" >clean-write-fail.r &&
echo "content-test3-subdir" >test3.r &&
test_must_fail git add .
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0021-conversion/repo/.git/
fatal: clean write error
error: external filter 'test-tool rot13-filter --log=debug.log clean smudge' failed
fatal: clean-write-fail.r: clean filter 'protocol' failed
ok 22 - required process filter with clean error should fail
expecting success of 0021.23 'process filter should restart after unexpected write failure':
test_config_global filter.protocol.process "test-tool rot13-filter --log=debug.log clean smudge" &&
rm -rf repo &&
mkdir repo &&
(
cd repo &&
git init &&
echo "*.r filter=protocol" >.gitattributes &&
cp "$TEST_ROOT/test.o" test.r &&
cp "$TEST_ROOT/test2.o" test2.r &&
echo "this is going to fail" >smudge-write-fail.o &&
cp smudge-write-fail.o smudge-write-fail.r &&
S=$(test_file_size test.r) &&
S2=$(test_file_size test2.r) &&
SF=$(test_file_size smudge-write-fail.r) &&
M=$(git hash-object test.r) &&
M2=$(git hash-object test2.r) &&
MF=$(git hash-object smudge-write-fail.r) &&
rm -f debug.log &&
git add . &&
rm -f *.r &&
rm -f debug.log &&
git checkout --quiet --no-progress . 2>git-stderr.log &&
grep "smudge write error" git-stderr.log &&
test_i18ngrep "error: external filter" git-stderr.log &&
cat >expected.log <<-EOF &&
START
init handshake complete
IN: smudge smudge-write-fail.r blob=$MF $SF [OK] -- [WRITE FAIL]
START
init handshake complete
IN: smudge test.r blob=$M $S [OK] -- OUT: $S . [OK]
IN: smudge test2.r blob=$M2 $S2 [OK] -- OUT: $S2 . [OK]
STOP
EOF
test_cmp_exclude_clean expected.log debug.log &&
test_cmp_committed_rot13 "$TEST_ROOT/test.o" test.r &&
test_cmp_committed_rot13 "$TEST_ROOT/test2.o" test2.r &&
# Smudge failed
! test_cmp smudge-write-fail.o smudge-write-fail.r &&
rot13.sh <smudge-write-fail.o >expected &&
git cat-file blob :smudge-write-fail.r >actual &&
test_cmp expected actual
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0021-conversion/repo/.git/
fatal: smudge write error
error: external filter 'test-tool rot13-filter --log=debug.log clean smudge' failed
--- smudge-write-fail.o 2023-10-09 02:17:38.649264808 +0000
+++ smudge-write-fail.r 2023-10-09 02:17:38.701264516 +0000
@@ -1 +1 @@
-this is going to fail
+guvf vf tbvat gb snvy
ok 23 - process filter should restart after unexpected write failure
expecting success of 0021.24 'process filter should not be restarted if it signals an error':
test_config_global filter.protocol.process "test-tool rot13-filter --log=debug.log clean smudge" &&
rm -rf repo &&
mkdir repo &&
(
cd repo &&
git init &&
echo "*.r filter=protocol" >.gitattributes &&
cp "$TEST_ROOT/test.o" test.r &&
cp "$TEST_ROOT/test2.o" test2.r &&
echo "this will cause an error" >error.o &&
cp error.o error.r &&
S=$(test_file_size test.r) &&
S2=$(test_file_size test2.r) &&
SE=$(test_file_size error.r) &&
M=$(git hash-object test.r) &&
M2=$(git hash-object test2.r) &&
ME=$(git hash-object error.r) &&
rm -f debug.log &&
git add . &&
rm -f *.r &&
filter_git checkout --quiet --no-progress . &&
cat >expected.log <<-EOF &&
START
init handshake complete
IN: smudge error.r blob=$ME $SE [OK] -- [ERROR]
IN: smudge test.r blob=$M $S [OK] -- OUT: $S . [OK]
IN: smudge test2.r blob=$M2 $S2 [OK] -- OUT: $S2 . [OK]
STOP
EOF
test_cmp_exclude_clean expected.log debug.log &&
test_cmp_committed_rot13 "$TEST_ROOT/test.o" test.r &&
test_cmp_committed_rot13 "$TEST_ROOT/test2.o" test2.r &&
test_cmp error.o error.r
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0021-conversion/repo/.git/
ok 24 - process filter should not be restarted if it signals an error
expecting success of 0021.25 'process filter abort stops processing of all further files':
test_config_global filter.protocol.process "test-tool rot13-filter --log=debug.log clean smudge" &&
rm -rf repo &&
mkdir repo &&
(
cd repo &&
git init &&
echo "*.r filter=protocol" >.gitattributes &&
cp "$TEST_ROOT/test.o" test.r &&
cp "$TEST_ROOT/test2.o" test2.r &&
echo "error this blob and all future blobs" >abort.o &&
cp abort.o abort.r &&
M="blob=$(git hash-object abort.r)" &&
rm -f debug.log &&
SA=$(test_file_size abort.r) &&
git add . &&
rm -f *.r &&
# Note: This test assumes that Git filters files in alphabetical
# order ("abort.r" before "test.r").
filter_git checkout --quiet --no-progress . &&
cat >expected.log <<-EOF &&
START
init handshake complete
IN: smudge abort.r $M $SA [OK] -- [ABORT]
STOP
EOF
test_cmp_exclude_clean expected.log debug.log &&
test_cmp "$TEST_ROOT/test.o" test.r &&
test_cmp "$TEST_ROOT/test2.o" test2.r &&
test_cmp abort.o abort.r
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0021-conversion/repo/.git/
ok 25 - process filter abort stops processing of all further files
expecting success of 0021.26 'invalid process filter must fail (and not hang!)':
test_config_global filter.protocol.process cat &&
test_config_global filter.protocol.required true &&
rm -rf repo &&
mkdir repo &&
(
cd repo &&
git init &&
echo "*.r filter=protocol" >.gitattributes &&
cp "$TEST_ROOT/test.o" test.r &&
test_must_fail git add . 2>git-stderr.log &&
grep "expected git-filter-server" git-stderr.log
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0021-conversion/repo/.git/
error: Unexpected line 'git-filter-client', expected git-filter-server
ok 26 - invalid process filter must fail (and not hang!)
expecting success of 0021.27 'delayed checkout in process filter':
test_config_global filter.a.process "test-tool rot13-filter --log=a.log clean smudge delay" &&
test_config_global filter.a.required true &&
test_config_global filter.b.process "test-tool rot13-filter --log=b.log clean smudge delay" &&
test_config_global filter.b.required true &&
rm -rf repo &&
mkdir repo &&
(
cd repo &&
git init &&
echo "*.a filter=a" >.gitattributes &&
echo "*.b filter=b" >>.gitattributes &&
cp "$TEST_ROOT/test.o" test.a &&
cp "$TEST_ROOT/test.o" test-delay10.a &&
cp "$TEST_ROOT/test.o" test-delay11.a &&
cp "$TEST_ROOT/test.o" test-delay20.a &&
cp "$TEST_ROOT/test.o" test-delay10.b &&
git add . &&
git commit -m "test commit"
) &&
S=$(test_file_size "$TEST_ROOT/test.o") &&
PM="ref=refs/heads/main treeish=$(git -C repo rev-parse --verify main) " &&
M="${PM}blob=$(git -C repo rev-parse --verify main:test.a)" &&
cat >a.exp <<-EOF &&
START
init handshake complete
IN: smudge test.a $M $S [OK] -- OUT: $S . [OK]
IN: smudge test-delay10.a $M $S [OK] -- [DELAYED]
IN: smudge test-delay11.a $M $S [OK] -- [DELAYED]
IN: smudge test-delay20.a $M $S [OK] -- [DELAYED]
IN: list_available_blobs test-delay10.a test-delay11.a [OK]
IN: smudge test-delay10.a $M 0 [OK] -- OUT: $S . [OK]
IN: smudge test-delay11.a $M 0 [OK] -- OUT: $S . [OK]
IN: list_available_blobs test-delay20.a [OK]
IN: smudge test-delay20.a $M 0 [OK] -- OUT: $S . [OK]
IN: list_available_blobs [OK]
STOP
EOF
cat >b.exp <<-EOF &&
START
init handshake complete
IN: smudge test-delay10.b $M $S [OK] -- [DELAYED]
IN: list_available_blobs test-delay10.b [OK]
IN: smudge test-delay10.b $M 0 [OK] -- OUT: $S . [OK]
IN: list_available_blobs [OK]
STOP
EOF
rm -rf repo-cloned &&
filter_git clone repo repo-cloned &&
test_cmp_count a.exp repo-cloned/a.log &&
test_cmp_count b.exp repo-cloned/b.log &&
(
cd repo-cloned &&
test_cmp_committed_rot13 "$TEST_ROOT/test.o" test.a &&
test_cmp_committed_rot13 "$TEST_ROOT/test.o" test-delay10.a &&
test_cmp_committed_rot13 "$TEST_ROOT/test.o" test-delay11.a &&
test_cmp_committed_rot13 "$TEST_ROOT/test.o" test-delay20.a &&
test_cmp_committed_rot13 "$TEST_ROOT/test.o" test-delay10.b &&
rm *.a *.b &&
filter_git checkout . &&
# We are not checking out a ref here, so filter out ref metadata.
sed -e "s!$PM!!" ../a.exp >a.exp.filtered &&
sed -e "s!$PM!!" ../b.exp >b.exp.filtered &&
test_cmp_count a.exp.filtered a.log &&
test_cmp_count b.exp.filtered b.log &&
test_cmp_committed_rot13 "$TEST_ROOT/test.o" test.a &&
test_cmp_committed_rot13 "$TEST_ROOT/test.o" test-delay10.a &&
test_cmp_committed_rot13 "$TEST_ROOT/test.o" test-delay11.a &&
test_cmp_committed_rot13 "$TEST_ROOT/test.o" test-delay20.a &&
test_cmp_committed_rot13 "$TEST_ROOT/test.o" test-delay10.b
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0021-conversion/repo/.git/
[main (root-commit) 27d7fe8] test commit
Author: A U Thor <author@example.com>
6 files changed, 17 insertions(+)
create mode 100644 .gitattributes
create mode 100644 test-delay10.a
create mode 100644 test-delay10.b
create mode 100644 test-delay11.a
create mode 100644 test-delay20.a
create mode 100644 test.a
Cloning into 'repo-cloned'...
done.
Updated 5 paths from the index
ok 27 - delayed checkout in process filter
expecting success of 0021.28 'missing file in delayed checkout':
test_config_global filter.bug.process "test-tool rot13-filter --log=bug.log clean smudge delay" &&
test_config_global filter.bug.required true &&
rm -rf repo &&
mkdir repo &&
(
cd repo &&
git init &&
echo "*.a filter=bug" >.gitattributes &&
cp "$TEST_ROOT/test.o" missing-delay.a &&
git add . &&
git commit -m "test commit"
) &&
rm -rf repo-cloned &&
test_must_fail git clone repo repo-cloned 2>git-stderr.log &&
grep "error: .missing-delay\.a. was not filtered properly" git-stderr.log
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0021-conversion/repo/.git/
[main (root-commit) 5567259] test commit
Author: A U Thor <author@example.com>
2 files changed, 4 insertions(+)
create mode 100644 .gitattributes
create mode 100644 missing-delay.a
error: 'missing-delay.a' was not filtered properly
ok 28 - missing file in delayed checkout
expecting success of 0021.29 'invalid file in delayed checkout':
test_config_global filter.bug.process "test-tool rot13-filter --log=bug.log clean smudge delay" &&
test_config_global filter.bug.required true &&
rm -rf repo &&
mkdir repo &&
(
cd repo &&
git init &&
echo "*.a filter=bug" >.gitattributes &&
cp "$TEST_ROOT/test.o" invalid-delay.a &&
cp "$TEST_ROOT/test.o" unfiltered &&
git add . &&
git commit -m "test commit"
) &&
rm -rf repo-cloned &&
test_must_fail git clone repo repo-cloned 2>git-stderr.log &&
grep "error: external filter .* signaled that .unfiltered. is now available although it has not been delayed earlier" git-stderr.log
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0021-conversion/repo/.git/
[main (root-commit) 636012f] test commit
Author: A U Thor <author@example.com>
3 files changed, 7 insertions(+)
create mode 100644 .gitattributes
create mode 100644 invalid-delay.a
create mode 100644 unfiltered
error: external filter 'test-tool rot13-filter --log=bug.log clean smudge delay' signaled that 'unfiltered' is now available although it has not been delayed earlier
ok 29 - invalid file in delayed checkout
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
checking prerequisite: CASE_INSENSITIVE_FS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-CASE_INSENSITIVE_FS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-CASE_INSENSITIVE_FS" &&
echo good >CamelCase &&
echo bad >camelcase &&
test "$(cat CamelCase)" != good
)
prerequisite CASE_INSENSITIVE_FS not satisfied
ok 30 # skip delayed checkout with case-collision don't write to the wrong place (missing CASE_INSENSITIVE_FS of SYMLINKS,CASE_INSENSITIVE_FS)
checking prerequisite: UTF8_NFD_TO_NFC
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-UTF8_NFD_TO_NFC" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-UTF8_NFD_TO_NFC" &&
# check whether FS converts nfd unicode to nfc
auml=$(printf "\303\244")
aumlcdiar=$(printf "\141\314\210")
>"$auml" &&
test -f "$aumlcdiar"
)
prerequisite UTF8_NFD_TO_NFC not satisfied
ok 31 # skip delayed checkout with utf-8-collision don't write to the wrong place (missing UTF8_NFD_TO_NFC of SYMLINKS,UTF8_NFD_TO_NFC)
ok 32 # skip delayed checkout with submodule collision don't write to the wrong place (missing CASE_INSENSITIVE_FS of SYMLINKS,CASE_INSENSITIVE_FS)
expecting success of 0021.33 'setup for progress tests':
git init progress &&
(
cd progress &&
git config filter.delay.process "test-tool rot13-filter --log=delay-progress.log clean smudge delay" &&
git config filter.delay.required true &&
echo "*.a filter=delay" >.gitattributes &&
touch test-delay10.a &&
git add . &&
git commit -m files
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0021-conversion/progress/.git/
[main (root-commit) 36dc8bf] files
Author: A U Thor <author@example.com>
2 files changed, 1 insertion(+)
create mode 100644 .gitattributes
create mode 100644 test-delay10.a
ok 33 - setup for progress tests
checking prerequisite: TTY
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-TTY" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-TTY" &&
test_have_prereq PERL &&
# Reading from the pty master seems to get stuck _sometimes_
# on Mac OS X 10.5.0, using Perl 5.10.0 or 5.8.9.
#
# Reproduction recipe: run
#
# i=0
# while ./test-terminal.perl echo hi $i
# do
# : $((i = $i + 1))
# done
#
# After 2000 iterations or so it hangs.
# https://rt.cpan.org/Ticket/Display.html?id=65692
#
test "$(uname -s)" != Darwin &&
perl "$TEST_DIRECTORY"/test-terminal.perl \
sh -c "test -t 1 && test -t 2"
)
prerequisite TTY ok
expecting success of 0021.34 'delayed checkout shows progress by default on tty (pathspec checkout)':
test_delayed_checkout_progress test_terminal git checkout $opt
IN: smudge test-delay10.a blob=e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0 [OK] -- [DELAYED]
Filtering content: 100% (1/1)
Filtering content: 100% (1/1), 0 bytes | 0 bytes/s, done.
ok 34 - delayed checkout shows progress by default on tty (pathspec checkout)
expecting success of 0021.35 'delayed checkout ommits progress on non-tty (pathspec checkout)':
test_delayed_checkout_progress ! git checkout $opt
IN: smudge test-delay10.a blob=e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0 [OK] -- [DELAYED]
ok 35 - delayed checkout ommits progress on non-tty (pathspec checkout)
expecting success of 0021.36 'delayed checkout ommits progress with --quiet (pathspec checkout)':
test_delayed_checkout_progress ! test_terminal git checkout --quiet $opt
IN: smudge test-delay10.a blob=e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0 [OK] -- [DELAYED]
ok 36 - delayed checkout ommits progress with --quiet (pathspec checkout)
expecting success of 0021.37 'delayed checkout honors --[no]-progress (pathspec checkout)':
test_delayed_checkout_progress ! test_terminal git checkout --no-progress $opt &&
test_delayed_checkout_progress test_terminal git checkout --quiet --progress $opt
IN: smudge test-delay10.a blob=e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0 [OK] -- [DELAYED]
IN: smudge test-delay10.a blob=e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0 [OK] -- [DELAYED]
Filtering content: 100% (1/1)
Filtering content: 100% (1/1), 0 bytes | 0 bytes/s, done.
ok 37 - delayed checkout honors --[no]-progress (pathspec checkout)
expecting success of 0021.38 'delayed checkout shows progress by default on tty (branch checkout)':
test_delayed_checkout_progress test_terminal git checkout $opt
IN: smudge test-delay10.a ref=refs/heads/main treeish=36dc8bfae462bbc71de73591934e95020c6c26ce blob=e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0 [OK] -- [DELAYED]
Filtering content: 100% (1/1)
Filtering content: 100% (1/1), 0 bytes | 0 bytes/s, done.
ok 38 - delayed checkout shows progress by default on tty (branch checkout)
expecting success of 0021.39 'delayed checkout ommits progress on non-tty (branch checkout)':
test_delayed_checkout_progress ! git checkout $opt
IN: smudge test-delay10.a ref=refs/heads/main treeish=36dc8bfae462bbc71de73591934e95020c6c26ce blob=e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0 [OK] -- [DELAYED]
ok 39 - delayed checkout ommits progress on non-tty (branch checkout)
expecting success of 0021.40 'delayed checkout ommits progress with --quiet (branch checkout)':
test_delayed_checkout_progress ! test_terminal git checkout --quiet $opt
IN: smudge test-delay10.a ref=refs/heads/main treeish=36dc8bfae462bbc71de73591934e95020c6c26ce blob=e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0 [OK] -- [DELAYED]
ok 40 - delayed checkout ommits progress with --quiet (branch checkout)
expecting success of 0021.41 'delayed checkout honors --[no]-progress (branch checkout)':
test_delayed_checkout_progress ! test_terminal git checkout --no-progress $opt &&
test_delayed_checkout_progress test_terminal git checkout --quiet --progress $opt
IN: smudge test-delay10.a ref=refs/heads/main treeish=36dc8bfae462bbc71de73591934e95020c6c26ce blob=e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0 [OK] -- [DELAYED]
IN: smudge test-delay10.a ref=refs/heads/main treeish=36dc8bfae462bbc71de73591934e95020c6c26ce blob=e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0 [OK] -- [DELAYED]
Filtering content: 100% (1/1)
Filtering content: 100% (1/1), 0 bytes | 0 bytes/s, done.
ok 41 - delayed checkout honors --[no]-progress (branch checkout)
expecting success of 0021.42 'delayed checkout correctly reports the number of updated entries':
rm -rf repo &&
git init repo &&
(
cd repo &&
git config filter.delay.process "test-tool rot13-filter --log=delayed.log clean smudge delay" &&
git config filter.delay.required true &&
echo "*.a filter=delay" >.gitattributes &&
echo a >test-delay10.a &&
echo a >test-delay11.a &&
git add . &&
git commit -m files &&
rm *.a &&
git checkout . 2>err &&
grep "IN: smudge test-delay10.a .* \\[DELAYED\\]" delayed.log &&
grep "IN: smudge test-delay11.a .* \\[DELAYED\\]" delayed.log &&
grep "Updated 2 paths from the index" err
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0021-conversion/repo/.git/
[main (root-commit) 6d52fcb] files
Author: A U Thor <author@example.com>
3 files changed, 3 insertions(+)
create mode 100644 .gitattributes
create mode 100644 test-delay10.a
create mode 100644 test-delay11.a
IN: smudge test-delay10.a blob=8ba3a16384aacc37d01564b28401755ce8053f51 2 [OK] -- [DELAYED]
IN: smudge test-delay11.a blob=8ba3a16384aacc37d01564b28401755ce8053f51 2 [OK] -- [DELAYED]
Updated 2 paths from the index
ok 42 - delayed checkout correctly reports the number of updated entries
# passed all 42 test(s)
1..42
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0061-run-command.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0061-run-command/.git/
ok 1 # skip subprocess inherits only std handles (missing MINGW)
expecting success of 0061.2 'start_command reports ENOENT (slash)':
test-tool run-command start-command-ENOENT ./does-not-exist 2>err &&
test_i18ngrep "\./does-not-exist" err
fatal: cannot exec './does-not-exist': No such file or directory
ok 2 - start_command reports ENOENT (slash)
expecting success of 0061.3 'start_command reports ENOENT (no slash)':
test-tool run-command start-command-ENOENT does-not-exist 2>err &&
test_i18ngrep "does-not-exist" err
error: cannot run does-not-exist: No such file or directory
ok 3 - start_command reports ENOENT (no slash)
expecting success of 0061.4 'run_command can run a command':
cat hello-script >hello.sh &&
chmod +x hello.sh &&
test-tool run-command run-command ./hello.sh >actual 2>err &&
test_cmp hello-script actual &&
test_must_be_empty err
ok 4 - run_command can run a command
checking prerequisite: RUNS_COMMANDS_FROM_PWD
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-RUNS_COMMANDS_FROM_PWD" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-RUNS_COMMANDS_FROM_PWD" &&
write_script runs-commands-from-pwd <<-\EOF &&
true
EOF
runs-commands-from-pwd >/dev/null 2>&1
)
prerequisite RUNS_COMMANDS_FROM_PWD not satisfied
expecting success of 0061.5 'run_command is restricted to PATH':
write_script should-not-run <<-\EOF &&
echo yikes
EOF
test_must_fail test-tool run-command run-command should-not-run 2>err &&
test_i18ngrep "should-not-run" err
error: cannot run should-not-run: No such file or directory
ok 5 - run_command is restricted to PATH
expecting success of 0061.6 'run_command can run a script without a #! line':
cat >hello <<-\EOF &&
cat hello-script
EOF
chmod +x hello &&
test-tool run-command run-command ./hello >actual 2>err &&
test_cmp hello-script actual &&
test_must_be_empty err
ok 6 - run_command can run a script without a #! line
expecting success of 0061.7 'run_command does not try to execute a directory':
test_when_finished "rm -rf bin1 bin2" &&
mkdir -p bin1/greet bin2 &&
write_script bin2/greet <<-\EOF &&
cat bin2/greet
EOF
PATH=$PWD/bin1:$PWD/bin2:$PATH \
test-tool run-command run-command greet >actual 2>err &&
test_cmp bin2/greet actual &&
test_must_be_empty err
ok 7 - run_command does not try to execute a directory
expecting success of 0061.8 'run_command passes over non-executable file':
test_when_finished "rm -rf bin1 bin2" &&
mkdir -p bin1 bin2 &&
write_script bin1/greet <<-\EOF &&
cat bin1/greet
EOF
chmod -x bin1/greet &&
write_script bin2/greet <<-\EOF &&
cat bin2/greet
EOF
PATH=$PWD/bin1:$PWD/bin2:$PATH \
test-tool run-command run-command greet >actual 2>err &&
test_cmp bin2/greet actual &&
test_must_be_empty err
ok 8 - run_command passes over non-executable file
expecting success of 0061.9 'run_command reports EACCES':
cat hello-script >hello.sh &&
chmod -x hello.sh &&
test_must_fail test-tool run-command run-command ./hello.sh 2>err &&
grep "fatal: cannot exec.*hello.sh" err
fatal: cannot exec './hello.sh': Permission denied
ok 9 - run_command reports EACCES
checking prerequisite: SANITY
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SANITY" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SANITY" &&
mkdir SANETESTD.1 SANETESTD.2 &&
chmod +w SANETESTD.1 SANETESTD.2 &&
>SANETESTD.1/x 2>SANETESTD.2/x &&
chmod -w SANETESTD.1 &&
chmod -r SANETESTD.1/x &&
chmod -rx SANETESTD.2 ||
BUG "cannot prepare SANETESTD"
! test -r SANETESTD.1/x &&
! rm SANETESTD.1/x && ! test -f SANETESTD.2/x
status=$?
chmod +rwx SANETESTD.1 SANETESTD.2 &&
rm -rf SANETESTD.1 SANETESTD.2 ||
BUG "cannot clean SANETESTD"
return $status
)
rm: cannot remove 'SANETESTD.1/x': Permission denied
prerequisite SANITY ok
expecting success of 0061.10 'unreadable directory in PATH':
mkdir local-command &&
test_when_finished "chmod u+rwx local-command && rm -fr local-command" &&
git config alias.nitfol "!echo frotz" &&
chmod a-rx local-command &&
(
PATH=./local-command:$PATH &&
git nitfol >actual
) &&
echo frotz >expect &&
test_cmp expect actual
ok 10 - unreadable directory in PATH
expecting success of 0061.11 'run_command runs in parallel with more jobs available than tasks':
test-tool run-command run-command-parallel 5 sh -c "printf \"%s\n%s\n\" Hello World" >out 2>actual &&
test_must_be_empty out &&
test_cmp expect actual
ok 11 - run_command runs in parallel with more jobs available than tasks
expecting success of 0061.12 'run_command runs ungrouped in parallel with more jobs available than tasks':
test-tool run-command --ungroup run-command-parallel 5 sh -c "printf \"%s\n%s\n\" Hello World" >out 2>err &&
test_line_count = 8 out &&
test_line_count = 4 err
ok 12 - run_command runs ungrouped in parallel with more jobs available than tasks
expecting success of 0061.13 'run_command runs in parallel with as many jobs as tasks':
test-tool run-command run-command-parallel 4 sh -c "printf \"%s\n%s\n\" Hello World" >out 2>actual &&
test_must_be_empty out &&
test_cmp expect actual
ok 13 - run_command runs in parallel with as many jobs as tasks
expecting success of 0061.14 'run_command runs ungrouped in parallel with as many jobs as tasks':
test-tool run-command --ungroup run-command-parallel 4 sh -c "printf \"%s\n%s\n\" Hello World" >out 2>err &&
test_line_count = 8 out &&
test_line_count = 4 err
ok 14 - run_command runs ungrouped in parallel with as many jobs as tasks
expecting success of 0061.15 'run_command runs in parallel with more tasks than jobs available':
test-tool run-command run-command-parallel 3 sh -c "printf \"%s\n%s\n\" Hello World" >out 2>actual &&
test_must_be_empty out &&
test_cmp expect actual
ok 15 - run_command runs in parallel with more tasks than jobs available
expecting success of 0061.16 'run_command runs ungrouped in parallel with more tasks than jobs available':
test-tool run-command --ungroup run-command-parallel 3 sh -c "printf \"%s\n%s\n\" Hello World" >out 2>err &&
test_line_count = 8 out &&
test_line_count = 4 err
ok 16 - run_command runs ungrouped in parallel with more tasks than jobs available
expecting success of 0061.17 'run_command is asked to abort gracefully':
test-tool run-command run-command-abort 3 false >out 2>actual &&
test_must_be_empty out &&
test_cmp expect actual
ok 17 - run_command is asked to abort gracefully
expecting success of 0061.18 'run_command is asked to abort gracefully (ungroup)':
test-tool run-command --ungroup run-command-abort 3 false >out 2>err &&
test_must_be_empty out &&
test_line_count = 6 err
ok 18 - run_command is asked to abort gracefully (ungroup)
expecting success of 0061.19 'run_command outputs ':
test-tool run-command run-command-no-jobs 3 sh -c "printf \"%s\n%s\n\" Hello World" >out 2>actual &&
test_must_be_empty out &&
test_cmp expect actual
ok 19 - run_command outputs
expecting success of 0061.20 'run_command outputs (ungroup) ':
test-tool run-command --ungroup run-command-no-jobs 3 sh -c "printf \"%s\n%s\n\" Hello World" >out 2>err &&
test_must_be_empty out &&
test_cmp expect err
ok 20 - run_command outputs (ungroup)
expecting success of 0061.21 'GIT_TRACE with environment variables':
test_trace "abc=1 def=2" env abc=1 env def=2 &&
test_trace "abc=2" env abc env abc=1 env abc=2 &&
test_trace "abc=2" env abc env abc=2 &&
(
abc=1 && export abc &&
test_trace "def=1" env abc=1 env def=1
) &&
(
abc=1 && export abc &&
test_trace "def=1" env abc env abc=1 env def=1
) &&
test_trace "def=1" env non-exist env def=1 &&
test_trace "abc=2" env abc=1 env abc env abc=2 &&
(
abc=1 def=2 && export abc def &&
test_trace "unset abc def;" env abc env def
) &&
(
abc=1 def=2 && export abc def &&
test_trace "unset def; abc=3" env abc env def env abc=3
) &&
(
abc=1 && export abc &&
test_trace "unset abc;" env abc=2 env abc
)
ok 21 - GIT_TRACE with environment variables
ok 22 # skip verify curlies are quoted properly (missing MINGW)
ok 23 # skip can spawn .bat with argv[0] containing spaces (missing MINGW)
# passed all 23 test(s)
1..23
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0062-revision-walking.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0062-revision-walking/.git/
expecting success of 0062.1 'setup':
echo a > a &&
git add a &&
git commit -m "add a" &&
echo b > b &&
git add b &&
git commit -m "add b"
[master (root-commit) 925677c] add a
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 a
[master 4505e02] add b
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 b
ok 1 - setup
expecting success of 0062.2 'revision walking can be done twice':
test-tool revision-walking run-twice >run_twice_actual &&
test_cmp run_twice_expected run_twice_actual
ok 2 - revision walking can be done twice
# passed all 2 test(s)
1..2
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0063-string-list.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0063-string-list/.git/
expecting success of 0063.1 'split foo:bar:baz at :, max -1':
test-tool string-list split 'foo:bar:baz' ':' '-1' >actual &&
test_cmp expected actual &&
test-tool string-list split_in_place 'foo:bar:baz' ':' '-1' >actual &&
test_cmp expected actual
ok 1 - split foo:bar:baz at :, max -1
expecting success of 0063.2 'split foo:bar:baz at :, max 0':
test-tool string-list split 'foo:bar:baz' ':' '0' >actual &&
test_cmp expected actual &&
test-tool string-list split_in_place 'foo:bar:baz' ':' '0' >actual &&
test_cmp expected actual
ok 2 - split foo:bar:baz at :, max 0
expecting success of 0063.3 'split foo:bar:baz at :, max 1':
test-tool string-list split 'foo:bar:baz' ':' '1' >actual &&
test_cmp expected actual &&
test-tool string-list split_in_place 'foo:bar:baz' ':' '1' >actual &&
test_cmp expected actual
ok 3 - split foo:bar:baz at :, max 1
expecting success of 0063.4 'split foo:bar:baz at :, max 2':
test-tool string-list split 'foo:bar:baz' ':' '2' >actual &&
test_cmp expected actual &&
test-tool string-list split_in_place 'foo:bar:baz' ':' '2' >actual &&
test_cmp expected actual
ok 4 - split foo:bar:baz at :, max 2
expecting success of 0063.5 'split foo:bar: at :, max -1':
test-tool string-list split 'foo:bar:' ':' '-1' >actual &&
test_cmp expected actual &&
test-tool string-list split_in_place 'foo:bar:' ':' '-1' >actual &&
test_cmp expected actual
ok 5 - split foo:bar: at :, max -1
expecting success of 0063.6 'split at :, max -1':
test-tool string-list split '' ':' '-1' >actual &&
test_cmp expected actual &&
test-tool string-list split_in_place '' ':' '-1' >actual &&
test_cmp expected actual
ok 6 - split at :, max -1
expecting success of 0063.7 'split : at :, max -1':
test-tool string-list split ':' ':' '-1' >actual &&
test_cmp expected actual &&
test-tool string-list split_in_place ':' ':' '-1' >actual &&
test_cmp expected actual
ok 7 - split : at :, max -1
expecting success of 0063.8 'split (in place) foo:;:bar:;:baz:;: at :;, max -1':
test-tool string-list split_in_place 'foo:;:bar:;:baz:;:' ':;' '-1' >actual &&
test_cmp expected actual
ok 8 - split (in place) foo:;:bar:;:baz:;: at :;, max -1
expecting success of 0063.9 'split (in place) foo:;:bar:;:baz at :;, max 0':
test-tool string-list split_in_place 'foo:;:bar:;:baz' ':;' '0' >actual &&
test_cmp expected actual
ok 9 - split (in place) foo:;:bar:;:baz at :;, max 0
expecting success of 0063.10 'split (in place) foo:;:bar:;:baz at :;, max 1':
test-tool string-list split_in_place 'foo:;:bar:;:baz' ':;' '1' >actual &&
test_cmp expected actual
ok 10 - split (in place) foo:;:bar:;:baz at :;, max 1
expecting success of 0063.11 'split (in place) foo:;:bar:;:baz at :;, max 2':
test-tool string-list split_in_place 'foo:;:bar:;:baz' ':;' '2' >actual &&
test_cmp expected actual
ok 11 - split (in place) foo:;:bar:;:baz at :;, max 2
expecting success of 0063.12 'split (in place) foo:;:bar:;: at :;, max -1':
test-tool string-list split_in_place 'foo:;:bar:;:' ':;' '-1' >actual &&
test_cmp expected actual
ok 12 - split (in place) foo:;:bar:;: at :;, max -1
expecting success of 0063.13 'test filter_string_list':
test "x-" = "x$(test-tool string-list filter - y)" &&
test "x-" = "x$(test-tool string-list filter no y)" &&
test yes = "$(test-tool string-list filter yes y)" &&
test yes = "$(test-tool string-list filter no:yes y)" &&
test yes = "$(test-tool string-list filter yes:no y)" &&
test y1:y2 = "$(test-tool string-list filter y1:y2 y)" &&
test y2:y1 = "$(test-tool string-list filter y2:y1 y)" &&
test "x-" = "x$(test-tool string-list filter x1:x2 y)"
ok 13 - test filter_string_list
expecting success of 0063.14 'test remove_duplicates':
test "x-" = "x$(test-tool string-list remove_duplicates -)" &&
test "x" = "x$(test-tool string-list remove_duplicates "")" &&
test a = "$(test-tool string-list remove_duplicates a)" &&
test a = "$(test-tool string-list remove_duplicates a:a)" &&
test a = "$(test-tool string-list remove_duplicates a:a:a:a:a)" &&
test a:b = "$(test-tool string-list remove_duplicates a:b)" &&
test a:b = "$(test-tool string-list remove_duplicates a:a:b)" &&
test a:b = "$(test-tool string-list remove_duplicates a:b:b)" &&
test a:b:c = "$(test-tool string-list remove_duplicates a:b:c)" &&
test a:b:c = "$(test-tool string-list remove_duplicates a:a:b:c)" &&
test a:b:c = "$(test-tool string-list remove_duplicates a:b:b:c)" &&
test a:b:c = "$(test-tool string-list remove_duplicates a:b:c:c)" &&
test a:b:c = "$(test-tool string-list remove_duplicates a:a:b:b:c:c)" &&
test a:b:c = "$(test-tool string-list remove_duplicates a:a:a:b:b:b:c:c:c)"
ok 14 - test remove_duplicates
# passed all 14 test(s)
1..14
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0064-oid-array.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0064-oid-array/.git/
expecting success of 0064.1 'ordered enumeration':
echoid "" 44 55 88 aa >expect &&
{
echoid append 88 44 aa 55 &&
echo for_each_unique
} | test-tool oid-array >actual &&
test_cmp expect actual
ok 1 - ordered enumeration
expecting success of 0064.2 'ordered enumeration with duplicate suppression':
echoid "" 44 55 88 aa >expect &&
{
echoid append 88 44 aa 55 &&
echoid append 88 44 aa 55 &&
echoid append 88 44 aa 55 &&
echo for_each_unique
} | test-tool oid-array >actual &&
test_cmp expect actual
ok 2 - ordered enumeration with duplicate suppression
expecting success of 0064.3 'lookup':
{
echoid append 88 44 aa 55 &&
echoid lookup 55
} | test-tool oid-array >actual &&
n=$(cat actual) &&
test "$n" -eq 1
ok 3 - lookup
expecting success of 0064.4 'lookup non-existing entry':
{
echoid append 88 44 aa 55 &&
echoid lookup 33
} | test-tool oid-array >actual &&
n=$(cat actual) &&
test "$n" -lt 0
ok 4 - lookup non-existing entry
expecting success of 0064.5 'lookup with duplicates':
{
echoid append 88 44 aa 55 &&
echoid append 88 44 aa 55 &&
echoid append 88 44 aa 55 &&
echoid lookup 55
} | test-tool oid-array >actual &&
n=$(cat actual) &&
test "$n" -ge 3 &&
test "$n" -le 5
ok 5 - lookup with duplicates
expecting success of 0064.6 'lookup non-existing entry with duplicates':
{
echoid append 88 44 aa 55 &&
echoid append 88 44 aa 55 &&
echoid append 88 44 aa 55 &&
echoid lookup 66
} | test-tool oid-array >actual &&
n=$(cat actual) &&
test "$n" -lt 0
ok 6 - lookup non-existing entry with duplicates
expecting success of 0064.7 'lookup with almost duplicate values':
# n-1 5s
root=$(echoid "" 55) &&
root=${root%5} &&
{
id1="${root}5" &&
id2="${root}f" &&
echo "append $id1" &&
echo "append $id2" &&
echoid lookup 55
} | test-tool oid-array >actual &&
n=$(cat actual) &&
test "$n" -eq 0
ok 7 - lookup with almost duplicate values
expecting success of 0064.8 'lookup with single duplicate value':
{
echoid append 55 55 &&
echoid lookup 55
} | test-tool oid-array >actual &&
n=$(cat actual) &&
test "$n" -ge 0 &&
test "$n" -le 1
ok 8 - lookup with single duplicate value
# passed all 8 test(s)
1..8
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0065-strcmp-offset.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0065-strcmp-offset/.git/
expecting success of 0065.1 'strcmp_offset(abc, abc)':
echo "$expect" >expect &&
test-tool strcmp-offset "$s1" "$s2" >actual &&
test_cmp expect actual
ok 1 - strcmp_offset(abc, abc)
expecting success of 0065.2 'strcmp_offset(abc, def)':
echo "$expect" >expect &&
test-tool strcmp-offset "$s1" "$s2" >actual &&
test_cmp expect actual
ok 2 - strcmp_offset(abc, def)
expecting success of 0065.3 'strcmp_offset(abc, abz)':
echo "$expect" >expect &&
test-tool strcmp-offset "$s1" "$s2" >actual &&
test_cmp expect actual
ok 3 - strcmp_offset(abc, abz)
expecting success of 0065.4 'strcmp_offset(abc, abcdef)':
echo "$expect" >expect &&
test-tool strcmp-offset "$s1" "$s2" >actual &&
test_cmp expect actual
ok 4 - strcmp_offset(abc, abcdef)
# passed all 4 test(s)
1..4
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0060-path-utils.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/.git/
expecting success of 0060.1 'basename': test-tool path-utils basename
ok 1 - basename
expecting success of 0060.2 'dirname': test-tool path-utils dirname
ok 2 - dirname
expecting success of 0060.3 'normalize path: => ':
echo '' >expect &&
test-tool path-utils normalize_path_copy '' >actual &&
test_cmp expect actual
ok 3 - normalize path: =>
expecting success of 0060.4 'normalize path: . => ':
echo '' >expect &&
test-tool path-utils normalize_path_copy '.' >actual &&
test_cmp expect actual
ok 4 - normalize path: . =>
expecting success of 0060.5 'normalize path: ./ => ':
echo '' >expect &&
test-tool path-utils normalize_path_copy './' >actual &&
test_cmp expect actual
ok 5 - normalize path: ./ =>
expecting success of 0060.6 'normalize path: ./. => ':
echo '' >expect &&
test-tool path-utils normalize_path_copy './.' >actual &&
test_cmp expect actual
ok 6 - normalize path: ./. =>
expecting success of 0060.7 'normalize path: ./.. => ++failed++':
echo '++failed++' >expect &&
test-tool path-utils normalize_path_copy './..' >actual &&
test_cmp expect actual
ok 7 - normalize path: ./.. => ++failed++
expecting success of 0060.8 'normalize path: ../. => ++failed++':
echo '++failed++' >expect &&
test-tool path-utils normalize_path_copy '../.' >actual &&
test_cmp expect actual
ok 8 - normalize path: ../. => ++failed++
expecting success of 0060.9 'normalize path: ./../.// => ++failed++':
echo '++failed++' >expect &&
test-tool path-utils normalize_path_copy './.././/' >actual &&
test_cmp expect actual
ok 9 - normalize path: ./../.// => ++failed++
expecting success of 0060.10 'normalize path: dir/.. => ':
echo '' >expect &&
test-tool path-utils normalize_path_copy 'dir/..' >actual &&
test_cmp expect actual
ok 10 - normalize path: dir/.. =>
expecting success of 0060.11 'normalize path: dir/sub/../.. => ':
echo '' >expect &&
test-tool path-utils normalize_path_copy 'dir/sub/../..' >actual &&
test_cmp expect actual
ok 11 - normalize path: dir/sub/../.. =>
expecting success of 0060.12 'normalize path: dir/sub/../../.. => ++failed++':
echo '++failed++' >expect &&
test-tool path-utils normalize_path_copy 'dir/sub/../../..' >actual &&
test_cmp expect actual
ok 12 - normalize path: dir/sub/../../.. => ++failed++
expecting success of 0060.13 'normalize path: dir => dir':
echo 'dir' >expect &&
test-tool path-utils normalize_path_copy 'dir' >actual &&
test_cmp expect actual
ok 13 - normalize path: dir => dir
expecting success of 0060.14 'normalize path: dir// => dir/':
echo 'dir/' >expect &&
test-tool path-utils normalize_path_copy 'dir//' >actual &&
test_cmp expect actual
ok 14 - normalize path: dir// => dir/
expecting success of 0060.15 'normalize path: ./dir => dir':
echo 'dir' >expect &&
test-tool path-utils normalize_path_copy './dir' >actual &&
test_cmp expect actual
ok 15 - normalize path: ./dir => dir
expecting success of 0060.16 'normalize path: dir/. => dir/':
echo 'dir/' >expect &&
test-tool path-utils normalize_path_copy 'dir/.' >actual &&
test_cmp expect actual
ok 16 - normalize path: dir/. => dir/
expecting success of 0060.17 'normalize path: dir///./ => dir/':
echo 'dir/' >expect &&
test-tool path-utils normalize_path_copy 'dir///./' >actual &&
test_cmp expect actual
ok 17 - normalize path: dir///./ => dir/
expecting success of 0060.18 'normalize path: dir//sub/.. => dir/':
echo 'dir/' >expect &&
test-tool path-utils normalize_path_copy 'dir//sub/..' >actual &&
test_cmp expect actual
ok 18 - normalize path: dir//sub/.. => dir/
expecting success of 0060.19 'normalize path: dir/sub/../ => dir/':
echo 'dir/' >expect &&
test-tool path-utils normalize_path_copy 'dir/sub/../' >actual &&
test_cmp expect actual
ok 19 - normalize path: dir/sub/../ => dir/
expecting success of 0060.20 'normalize path: dir/sub/../. => dir/':
echo 'dir/' >expect &&
test-tool path-utils normalize_path_copy 'dir/sub/../.' >actual &&
test_cmp expect actual
ok 20 - normalize path: dir/sub/../. => dir/
expecting success of 0060.21 'normalize path: dir/s1/../s2/ => dir/s2/':
echo 'dir/s2/' >expect &&
test-tool path-utils normalize_path_copy 'dir/s1/../s2/' >actual &&
test_cmp expect actual
ok 21 - normalize path: dir/s1/../s2/ => dir/s2/
expecting success of 0060.22 'normalize path: d1/s1///s2/..//../s3/ => d1/s3/':
echo 'd1/s3/' >expect &&
test-tool path-utils normalize_path_copy 'd1/s1///s2/..//../s3/' >actual &&
test_cmp expect actual
ok 22 - normalize path: d1/s1///s2/..//../s3/ => d1/s3/
expecting success of 0060.23 'normalize path: d1/s1//../s2/../../d2 => d2':
echo 'd2' >expect &&
test-tool path-utils normalize_path_copy 'd1/s1//../s2/../../d2' >actual &&
test_cmp expect actual
ok 23 - normalize path: d1/s1//../s2/../../d2 => d2
expecting success of 0060.24 'normalize path: d1/.../d2 => d1/.../d2':
echo 'd1/.../d2' >expect &&
test-tool path-utils normalize_path_copy 'd1/.../d2' >actual &&
test_cmp expect actual
ok 24 - normalize path: d1/.../d2 => d1/.../d2
expecting success of 0060.25 'normalize path: d1/..././../d2 => d1/d2':
echo 'd1/d2' >expect &&
test-tool path-utils normalize_path_copy 'd1/..././../d2' >actual &&
test_cmp expect actual
ok 25 - normalize path: d1/..././../d2 => d1/d2
expecting success of 0060.26 'normalize path: / => /':
echo '/' >expect &&
test-tool path-utils normalize_path_copy '/' >actual &&
test_cmp expect actual
ok 26 - normalize path: / => /
expecting success of 0060.27 'normalize path: // => /':
echo '/' >expect &&
test-tool path-utils normalize_path_copy '//' >actual &&
test_cmp expect actual
ok 27 - normalize path: // => /
expecting success of 0060.28 'normalize path: /// => /':
echo '/' >expect &&
test-tool path-utils normalize_path_copy '///' >actual &&
test_cmp expect actual
ok 28 - normalize path: /// => /
expecting success of 0060.29 'normalize path: /. => /':
echo '/' >expect &&
test-tool path-utils normalize_path_copy '/.' >actual &&
test_cmp expect actual
ok 29 - normalize path: /. => /
expecting success of 0060.30 'normalize path: /./ => /':
echo '/' >expect &&
test-tool path-utils normalize_path_copy '/./' >actual &&
test_cmp expect actual
ok 30 - normalize path: /./ => /
expecting success of 0060.31 'normalize path: /./.. => ++failed++':
echo '++failed++' >expect &&
test-tool path-utils normalize_path_copy '/./..' >actual &&
test_cmp expect actual
ok 31 - normalize path: /./.. => ++failed++
expecting success of 0060.32 'normalize path: /../. => ++failed++':
echo '++failed++' >expect &&
test-tool path-utils normalize_path_copy '/../.' >actual &&
test_cmp expect actual
ok 32 - normalize path: /../. => ++failed++
expecting success of 0060.33 'normalize path: /./../.// => ++failed++':
echo '++failed++' >expect &&
test-tool path-utils normalize_path_copy '/./.././/' >actual &&
test_cmp expect actual
ok 33 - normalize path: /./../.// => ++failed++
expecting success of 0060.34 'normalize path: /dir/.. => /':
echo '/' >expect &&
test-tool path-utils normalize_path_copy '/dir/..' >actual &&
test_cmp expect actual
ok 34 - normalize path: /dir/.. => /
expecting success of 0060.35 'normalize path: /dir/sub/../.. => /':
echo '/' >expect &&
test-tool path-utils normalize_path_copy '/dir/sub/../..' >actual &&
test_cmp expect actual
ok 35 - normalize path: /dir/sub/../.. => /
expecting success of 0060.36 'normalize path: /dir/sub/../../.. => ++failed++':
echo '++failed++' >expect &&
test-tool path-utils normalize_path_copy '/dir/sub/../../..' >actual &&
test_cmp expect actual
ok 36 - normalize path: /dir/sub/../../.. => ++failed++
expecting success of 0060.37 'normalize path: /dir => /dir':
echo '/dir' >expect &&
test-tool path-utils normalize_path_copy '/dir' >actual &&
test_cmp expect actual
ok 37 - normalize path: /dir => /dir
expecting success of 0060.38 'normalize path: /dir// => /dir/':
echo '/dir/' >expect &&
test-tool path-utils normalize_path_copy '/dir//' >actual &&
test_cmp expect actual
ok 38 - normalize path: /dir// => /dir/
expecting success of 0060.39 'normalize path: /./dir => /dir':
echo '/dir' >expect &&
test-tool path-utils normalize_path_copy '/./dir' >actual &&
test_cmp expect actual
ok 39 - normalize path: /./dir => /dir
expecting success of 0060.40 'normalize path: /dir/. => /dir/':
echo '/dir/' >expect &&
test-tool path-utils normalize_path_copy '/dir/.' >actual &&
test_cmp expect actual
ok 40 - normalize path: /dir/. => /dir/
expecting success of 0060.41 'normalize path: /dir///./ => /dir/':
echo '/dir/' >expect &&
test-tool path-utils normalize_path_copy '/dir///./' >actual &&
test_cmp expect actual
ok 41 - normalize path: /dir///./ => /dir/
expecting success of 0060.42 'normalize path: /dir//sub/.. => /dir/':
echo '/dir/' >expect &&
test-tool path-utils normalize_path_copy '/dir//sub/..' >actual &&
test_cmp expect actual
ok 42 - normalize path: /dir//sub/.. => /dir/
expecting success of 0060.43 'normalize path: /dir/sub/../ => /dir/':
echo '/dir/' >expect &&
test-tool path-utils normalize_path_copy '/dir/sub/../' >actual &&
test_cmp expect actual
ok 43 - normalize path: /dir/sub/../ => /dir/
expecting success of 0060.44 'normalize path: //dir/sub/../. => /dir/':
echo '/dir/' >expect &&
test-tool path-utils normalize_path_copy '//dir/sub/../.' >actual &&
test_cmp expect actual
ok 44 - normalize path: //dir/sub/../. => /dir/
expecting success of 0060.45 'normalize path: /dir/s1/../s2/ => /dir/s2/':
echo '/dir/s2/' >expect &&
test-tool path-utils normalize_path_copy '/dir/s1/../s2/' >actual &&
test_cmp expect actual
ok 45 - normalize path: /dir/s1/../s2/ => /dir/s2/
expecting success of 0060.46 'normalize path: /d1/s1///s2/..//../s3/ => /d1/s3/':
echo '/d1/s3/' >expect &&
test-tool path-utils normalize_path_copy '/d1/s1///s2/..//../s3/' >actual &&
test_cmp expect actual
ok 46 - normalize path: /d1/s1///s2/..//../s3/ => /d1/s3/
expecting success of 0060.47 'normalize path: /d1/s1//../s2/../../d2 => /d2':
echo '/d2' >expect &&
test-tool path-utils normalize_path_copy '/d1/s1//../s2/../../d2' >actual &&
test_cmp expect actual
ok 47 - normalize path: /d1/s1//../s2/../../d2 => /d2
expecting success of 0060.48 'normalize path: /d1/.../d2 => /d1/.../d2':
echo '/d1/.../d2' >expect &&
test-tool path-utils normalize_path_copy '/d1/.../d2' >actual &&
test_cmp expect actual
ok 48 - normalize path: /d1/.../d2 => /d1/.../d2
expecting success of 0060.49 'normalize path: /d1/..././../d2 => /d1/d2':
echo '/d1/d2' >expect &&
test-tool path-utils normalize_path_copy '/d1/..././../d2' >actual &&
test_cmp expect actual
ok 49 - normalize path: /d1/..././../d2 => /d1/d2
expecting success of 0060.50 'longest ancestor: / / => -1':
echo '-1' >expect &&
test-tool path-utils longest_ancestor_length '/' '/' >actual &&
test_cmp expect actual
ok 50 - longest ancestor: / / => -1
expecting success of 0060.51 'longest ancestor: /foo / => 0':
echo '0' >expect &&
test-tool path-utils longest_ancestor_length '/foo' '/' >actual &&
test_cmp expect actual
ok 51 - longest ancestor: /foo / => 0
expecting success of 0060.52 'longest ancestor: /foo /fo => -1':
echo '-1' >expect &&
test-tool path-utils longest_ancestor_length '/foo' '/fo' >actual &&
test_cmp expect actual
ok 52 - longest ancestor: /foo /fo => -1
expecting success of 0060.53 'longest ancestor: /foo /foo => -1':
echo '-1' >expect &&
test-tool path-utils longest_ancestor_length '/foo' '/foo' >actual &&
test_cmp expect actual
ok 53 - longest ancestor: /foo /foo => -1
expecting success of 0060.54 'longest ancestor: /foo /bar => -1':
echo '-1' >expect &&
test-tool path-utils longest_ancestor_length '/foo' '/bar' >actual &&
test_cmp expect actual
ok 54 - longest ancestor: /foo /bar => -1
expecting success of 0060.55 'longest ancestor: /foo /foo/bar => -1':
echo '-1' >expect &&
test-tool path-utils longest_ancestor_length '/foo' '/foo/bar' >actual &&
test_cmp expect actual
ok 55 - longest ancestor: /foo /foo/bar => -1
expecting success of 0060.56 'longest ancestor: /foo /foo:/bar => -1':
echo '-1' >expect &&
test-tool path-utils longest_ancestor_length '/foo' '/foo:/bar' >actual &&
test_cmp expect actual
ok 56 - longest ancestor: /foo /foo:/bar => -1
expecting success of 0060.57 'longest ancestor: /foo /:/foo:/bar => 0':
echo '0' >expect &&
test-tool path-utils longest_ancestor_length '/foo' '/:/foo:/bar' >actual &&
test_cmp expect actual
ok 57 - longest ancestor: /foo /:/foo:/bar => 0
expecting success of 0060.58 'longest ancestor: /foo /foo:/:/bar => 0':
echo '0' >expect &&
test-tool path-utils longest_ancestor_length '/foo' '/foo:/:/bar' >actual &&
test_cmp expect actual
ok 58 - longest ancestor: /foo /foo:/:/bar => 0
expecting success of 0060.59 'longest ancestor: /foo /:/bar:/foo => 0':
echo '0' >expect &&
test-tool path-utils longest_ancestor_length '/foo' '/:/bar:/foo' >actual &&
test_cmp expect actual
ok 59 - longest ancestor: /foo /:/bar:/foo => 0
expecting success of 0060.60 'longest ancestor: /foo/bar / => 0':
echo '0' >expect &&
test-tool path-utils longest_ancestor_length '/foo/bar' '/' >actual &&
test_cmp expect actual
ok 60 - longest ancestor: /foo/bar / => 0
expecting success of 0060.61 'longest ancestor: /foo/bar /fo => -1':
echo '-1' >expect &&
test-tool path-utils longest_ancestor_length '/foo/bar' '/fo' >actual &&
test_cmp expect actual
ok 61 - longest ancestor: /foo/bar /fo => -1
expecting success of 0060.62 'longest ancestor: /foo/bar /foo => 4':
echo '4' >expect &&
test-tool path-utils longest_ancestor_length '/foo/bar' '/foo' >actual &&
test_cmp expect actual
ok 62 - longest ancestor: /foo/bar /foo => 4
expecting success of 0060.63 'longest ancestor: /foo/bar /foo/ba => -1':
echo '-1' >expect &&
test-tool path-utils longest_ancestor_length '/foo/bar' '/foo/ba' >actual &&
test_cmp expect actual
ok 63 - longest ancestor: /foo/bar /foo/ba => -1
expecting success of 0060.64 'longest ancestor: /foo/bar /:/fo => 0':
echo '0' >expect &&
test-tool path-utils longest_ancestor_length '/foo/bar' '/:/fo' >actual &&
test_cmp expect actual
ok 64 - longest ancestor: /foo/bar /:/fo => 0
expecting success of 0060.65 'longest ancestor: /foo/bar /foo:/foo/ba => 4':
echo '4' >expect &&
test-tool path-utils longest_ancestor_length '/foo/bar' '/foo:/foo/ba' >actual &&
test_cmp expect actual
ok 65 - longest ancestor: /foo/bar /foo:/foo/ba => 4
expecting success of 0060.66 'longest ancestor: /foo/bar /bar => -1':
echo '-1' >expect &&
test-tool path-utils longest_ancestor_length '/foo/bar' '/bar' >actual &&
test_cmp expect actual
ok 66 - longest ancestor: /foo/bar /bar => -1
expecting success of 0060.67 'longest ancestor: /foo/bar /fo => -1':
echo '-1' >expect &&
test-tool path-utils longest_ancestor_length '/foo/bar' '/fo' >actual &&
test_cmp expect actual
ok 67 - longest ancestor: /foo/bar /fo => -1
expecting success of 0060.68 'longest ancestor: /foo/bar /foo:/bar => 4':
echo '4' >expect &&
test-tool path-utils longest_ancestor_length '/foo/bar' '/foo:/bar' >actual &&
test_cmp expect actual
ok 68 - longest ancestor: /foo/bar /foo:/bar => 4
expecting success of 0060.69 'longest ancestor: /foo/bar /:/foo:/bar => 4':
echo '4' >expect &&
test-tool path-utils longest_ancestor_length '/foo/bar' '/:/foo:/bar' >actual &&
test_cmp expect actual
ok 69 - longest ancestor: /foo/bar /:/foo:/bar => 4
expecting success of 0060.70 'longest ancestor: /foo/bar /foo:/:/bar => 4':
echo '4' >expect &&
test-tool path-utils longest_ancestor_length '/foo/bar' '/foo:/:/bar' >actual &&
test_cmp expect actual
ok 70 - longest ancestor: /foo/bar /foo:/:/bar => 4
expecting success of 0060.71 'longest ancestor: /foo/bar /:/bar:/fo => 0':
echo '0' >expect &&
test-tool path-utils longest_ancestor_length '/foo/bar' '/:/bar:/fo' >actual &&
test_cmp expect actual
ok 71 - longest ancestor: /foo/bar /:/bar:/fo => 0
expecting success of 0060.72 'longest ancestor: /foo/bar /:/bar => 0':
echo '0' >expect &&
test-tool path-utils longest_ancestor_length '/foo/bar' '/:/bar' >actual &&
test_cmp expect actual
ok 72 - longest ancestor: /foo/bar /:/bar => 0
expecting success of 0060.73 'longest ancestor: /foo/bar /foo => 4':
echo '4' >expect &&
test-tool path-utils longest_ancestor_length '/foo/bar' '/foo' >actual &&
test_cmp expect actual
ok 73 - longest ancestor: /foo/bar /foo => 4
expecting success of 0060.74 'longest ancestor: /foo/bar /foo:/bar => 4':
echo '4' >expect &&
test-tool path-utils longest_ancestor_length '/foo/bar' '/foo:/bar' >actual &&
test_cmp expect actual
ok 74 - longest ancestor: /foo/bar /foo:/bar => 4
expecting success of 0060.75 'longest ancestor: /foo/bar /bar => -1':
echo '-1' >expect &&
test-tool path-utils longest_ancestor_length '/foo/bar' '/bar' >actual &&
test_cmp expect actual
ok 75 - longest ancestor: /foo/bar /bar => -1
ok 76 # skip longest ancestor: C:/Users/me C:/ => 2 (missing MINGW)
ok 77 # skip longest ancestor: D:/Users/me C:/ => -1 (missing MINGW)
ok 78 # skip longest ancestor: //server/share/my-directory //server/share/ => 14 (missing MINGW)
expecting success of 0060.79 'strip_path_suffix':
echo c:/msysgit >expect &&
test-tool path-utils strip_path_suffix \
c:/msysgit/libexec//git-core libexec/git-core >actual &&
test_cmp expect actual
ok 79 - strip_path_suffix
expecting success of 0060.80 'absolute path rejects the empty string':
test_must_fail test-tool path-utils absolute_path ""
fatal: The empty string is not a valid path
ok 80 - absolute path rejects the empty string
ok 81 # skip <drive-letter>:\\abc is an absolute path (missing MINGW)
expecting success of 0060.82 'real path rejects the empty string':
test_must_fail test-tool path-utils real_path ""
fatal: The empty string is not a valid path
ok 82 - real path rejects the empty string
expecting success of 0060.83 'real path works on absolute paths 1':
echo / >expect &&
test-tool path-utils real_path "/" >actual &&
test_cmp expect actual &&
nopath="hopefully-absent-path" &&
echo "/$nopath" >expect &&
test-tool path-utils real_path "/$nopath" >actual &&
test_cmp expect actual
ok 83 - real path works on absolute paths 1
expecting success of 0060.84 'real path works on absolute paths 2':
# Find an existing top-level directory for the remaining tests:
d=$(pwd -P | sed -e "s|^\([^/]*/[^/]*\)/.*|\1|") &&
echo "$d" >expect &&
test-tool path-utils real_path "$d" >actual &&
test_cmp expect actual &&
nopath="hopefully-absent-path" &&
echo "$d/$nopath" >expect &&
test-tool path-utils real_path "$d/$nopath" >actual &&
test_cmp expect actual
ok 84 - real path works on absolute paths 2
expecting success of 0060.85 'real path removes extra leading slashes':
echo "/" >expect &&
test-tool path-utils real_path "///" >actual &&
test_cmp expect actual &&
nopath="hopefully-absent-path" &&
echo "/$nopath" >expect &&
test-tool path-utils real_path "///$nopath" >actual &&
test_cmp expect actual &&
# Find an existing top-level directory for the remaining tests:
d=$(pwd -P | sed -e "s|^\([^/]*/[^/]*\)/.*|\1|") &&
echo "$d" >expect &&
test-tool path-utils real_path "//$d" >actual &&
test_cmp expect actual &&
echo "$d/$nopath" >expect &&
test-tool path-utils real_path "//$d/$nopath" >actual &&
test_cmp expect actual
ok 85 - real path removes extra leading slashes
expecting success of 0060.86 'real path removes other extra slashes':
# Find an existing top-level directory for the remaining tests:
d=$(pwd -P | sed -e "s|^\([^/]*/[^/]*\)/.*|\1|") &&
echo "$d" >expect &&
test-tool path-utils real_path "$d///" >actual &&
test_cmp expect actual &&
nopath="hopefully-absent-path" &&
echo "$d/$nopath" >expect &&
test-tool path-utils real_path "$d///$nopath" >actual &&
test_cmp expect actual
ok 86 - real path removes other extra slashes
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
expecting success of 0060.87 'real path works on symlinks':
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 &&
echo "$dir" >expect &&
test-tool path-utils real_path $dir2 >actual &&
test_cmp expect actual &&
file="$dir"/index &&
echo "$file" >expect &&
test-tool path-utils real_path $dir2/index >actual &&
test_cmp expect actual &&
basename=blub &&
echo "$dir/$basename" >expect &&
test-tool -C .git path-utils real_path "$basename" >actual &&
test_cmp expect actual &&
ln -s ../first/file .git/syml &&
sym="$(cd first && pwd -P)"/file &&
echo "$sym" >expect &&
test-tool path-utils real_path "$dir2/syml" >actual &&
test_cmp expect actual
ok 87 - real path works on symlinks
expecting success of 0060.88 'prefix_path works with absolute paths to work tree symlinks':
ln -s target symlink &&
echo "symlink" >expect &&
test-tool path-utils prefix_path prefix "$(pwd)/symlink" >actual &&
test_cmp expect actual
ok 88 - prefix_path works with absolute paths to work tree symlinks
expecting success of 0060.89 'prefix_path works with only absolute path to work tree':
echo "" >expected &&
test-tool path-utils prefix_path prefix "$(pwd)" >actual &&
test_cmp expected actual
ok 89 - prefix_path works with only absolute path to work tree
expecting success of 0060.90 'prefix_path rejects absolute path to dir with same beginning as work tree':
test_must_fail test-tool path-utils prefix_path prefix "$(pwd)a"
fatal: '/<<PKGBUILDDIR>>/t/trash directory.t0060-path-utilsa' is outside repository at '/<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils'
ok 90 - prefix_path rejects absolute path to dir with same beginning as work tree
expecting success of 0060.91 'prefix_path works with absolute path to a symlink to work tree having same beginning as work tree':
git init repo &&
ln -s repo repolink &&
echo "a" >expect &&
repo_path="$(cd repo && pwd)" &&
test-tool -C repo path-utils prefix_path prefix "$repo_path/../repolink/a" >actual &&
test_cmp expect actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/repo/.git/
ok 91 - prefix_path works with absolute path to a symlink to work tree having same beginning as work tree
expecting success of 0060.92 'relative path: /foo/a/b/c/ /foo/a/b/ => c/':
echo 'c/' >expect &&
test-tool path-utils relative_path '/foo/a/b/c/' '/foo/a/b/' >actual &&
test_cmp expect actual
ok 92 - relative path: /foo/a/b/c/ /foo/a/b/ => c/
expecting success of 0060.93 'relative path: /foo/a/b/c/ /foo/a/b => c/':
echo 'c/' >expect &&
test-tool path-utils relative_path '/foo/a/b/c/' '/foo/a/b' >actual &&
test_cmp expect actual
ok 93 - relative path: /foo/a/b/c/ /foo/a/b => c/
expecting success of 0060.94 'relative path: /foo/a//b//c/ ///foo/a/b// => c/':
echo 'c/' >expect &&
test-tool path-utils relative_path '/foo/a//b//c/' '///foo/a/b//' >actual &&
test_cmp expect actual
ok 94 - relative path: /foo/a//b//c/ ///foo/a/b// => c/
expecting success of 0060.95 'relative path: /foo/a/b /foo/a/b => ./':
echo './' >expect &&
test-tool path-utils relative_path '/foo/a/b' '/foo/a/b' >actual &&
test_cmp expect actual
ok 95 - relative path: /foo/a/b /foo/a/b => ./
expecting success of 0060.96 'relative path: /foo/a/b/ /foo/a/b => ./':
echo './' >expect &&
test-tool path-utils relative_path '/foo/a/b/' '/foo/a/b' >actual &&
test_cmp expect actual
ok 96 - relative path: /foo/a/b/ /foo/a/b => ./
expecting success of 0060.97 'relative path: /foo/a /foo/a/b => ../':
echo '../' >expect &&
test-tool path-utils relative_path '/foo/a' '/foo/a/b' >actual &&
test_cmp expect actual
ok 97 - relative path: /foo/a /foo/a/b => ../
expecting success of 0060.98 'relative path: / /foo/a/b/ => ../../../':
echo '../../../' >expect &&
test-tool path-utils relative_path '/' '/foo/a/b/' >actual &&
test_cmp expect actual
ok 98 - relative path: / /foo/a/b/ => ../../../
expecting success of 0060.99 'relative path: /foo/a/c /foo/a/b/ => ../c':
echo '../c' >expect &&
test-tool path-utils relative_path '/foo/a/c' '/foo/a/b/' >actual &&
test_cmp expect actual
ok 99 - relative path: /foo/a/c /foo/a/b/ => ../c
expecting success of 0060.100 'relative path: /foo/a/c /foo/a/b => ../c':
echo '../c' >expect &&
test-tool path-utils relative_path '/foo/a/c' '/foo/a/b' >actual &&
test_cmp expect actual
ok 100 - relative path: /foo/a/c /foo/a/b => ../c
expecting success of 0060.101 'relative path: /foo/x/y /foo/a/b/ => ../../x/y':
echo '../../x/y' >expect &&
test-tool path-utils relative_path '/foo/x/y' '/foo/a/b/' >actual &&
test_cmp expect actual
ok 101 - relative path: /foo/x/y /foo/a/b/ => ../../x/y
expecting success of 0060.102 'relative path: /foo/a/b <empty> => /foo/a/b':
echo '/foo/a/b' >expect &&
test-tool path-utils relative_path '/foo/a/b' '<empty>' >actual &&
test_cmp expect actual
ok 102 - relative path: /foo/a/b <empty> => /foo/a/b
expecting success of 0060.103 'relative path: /foo/a/b <null> => /foo/a/b':
echo '/foo/a/b' >expect &&
test-tool path-utils relative_path '/foo/a/b' '<null>' >actual &&
test_cmp expect actual
ok 103 - relative path: /foo/a/b <null> => /foo/a/b
expecting success of 0060.104 'relative path: foo/a/b/c/ foo/a/b/ => c/':
echo 'c/' >expect &&
test-tool path-utils relative_path 'foo/a/b/c/' 'foo/a/b/' >actual &&
test_cmp expect actual
ok 104 - relative path: foo/a/b/c/ foo/a/b/ => c/
expecting success of 0060.105 'relative path: foo/a/b/c/ foo/a/b => c/':
echo 'c/' >expect &&
test-tool path-utils relative_path 'foo/a/b/c/' 'foo/a/b' >actual &&
test_cmp expect actual
ok 105 - relative path: foo/a/b/c/ foo/a/b => c/
expecting success of 0060.106 'relative path: foo/a/b//c foo/a//b => c':
echo 'c' >expect &&
test-tool path-utils relative_path 'foo/a/b//c' 'foo/a//b' >actual &&
test_cmp expect actual
ok 106 - relative path: foo/a/b//c foo/a//b => c
expecting success of 0060.107 'relative path: foo/a/b/ foo/a/b/ => ./':
echo './' >expect &&
test-tool path-utils relative_path 'foo/a/b/' 'foo/a/b/' >actual &&
test_cmp expect actual
ok 107 - relative path: foo/a/b/ foo/a/b/ => ./
expecting success of 0060.108 'relative path: foo/a/b/ foo/a/b => ./':
echo './' >expect &&
test-tool path-utils relative_path 'foo/a/b/' 'foo/a/b' >actual &&
test_cmp expect actual
ok 108 - relative path: foo/a/b/ foo/a/b => ./
expecting success of 0060.109 'relative path: foo/a foo/a/b => ../':
echo '../' >expect &&
test-tool path-utils relative_path 'foo/a' 'foo/a/b' >actual &&
test_cmp expect actual
ok 109 - relative path: foo/a foo/a/b => ../
expecting success of 0060.110 'relative path: foo/x/y foo/a/b => ../../x/y':
echo '../../x/y' >expect &&
test-tool path-utils relative_path 'foo/x/y' 'foo/a/b' >actual &&
test_cmp expect actual
ok 110 - relative path: foo/x/y foo/a/b => ../../x/y
expecting success of 0060.111 'relative path: foo/a/c foo/a/b => ../c':
echo '../c' >expect &&
test-tool path-utils relative_path 'foo/a/c' 'foo/a/b' >actual &&
test_cmp expect actual
ok 111 - relative path: foo/a/c foo/a/b => ../c
expecting success of 0060.112 'relative path: foo/a/b /foo/x/y => foo/a/b':
echo 'foo/a/b' >expect &&
test-tool path-utils relative_path 'foo/a/b' '/foo/x/y' >actual &&
test_cmp expect actual
ok 112 - relative path: foo/a/b /foo/x/y => foo/a/b
expecting success of 0060.113 'relative path: /foo/a/b foo/x/y => /foo/a/b':
echo '/foo/a/b' >expect &&
test-tool path-utils relative_path '/foo/a/b' 'foo/x/y' >actual &&
test_cmp expect actual
ok 113 - relative path: /foo/a/b foo/x/y => /foo/a/b
ok 114 # skip relative path: d:/a/b D:/a/c => ../b (missing MINGW)
ok 115 # skip relative path: C:/a/b D:/a/c => C:/a/b (missing MINGW)
expecting success of 0060.116 'relative path: foo/a/b <empty> => foo/a/b':
echo 'foo/a/b' >expect &&
test-tool path-utils relative_path 'foo/a/b' '<empty>' >actual &&
test_cmp expect actual
ok 116 - relative path: foo/a/b <empty> => foo/a/b
expecting success of 0060.117 'relative path: foo/a/b <null> => foo/a/b':
echo 'foo/a/b' >expect &&
test-tool path-utils relative_path 'foo/a/b' '<null>' >actual &&
test_cmp expect actual
ok 117 - relative path: foo/a/b <null> => foo/a/b
expecting success of 0060.118 'relative path: <empty> /foo/a/b => ./':
echo './' >expect &&
test-tool path-utils relative_path '<empty>' '/foo/a/b' >actual &&
test_cmp expect actual
ok 118 - relative path: <empty> /foo/a/b => ./
expecting success of 0060.119 'relative path: <empty> <empty> => ./':
echo './' >expect &&
test-tool path-utils relative_path '<empty>' '<empty>' >actual &&
test_cmp expect actual
ok 119 - relative path: <empty> <empty> => ./
expecting success of 0060.120 'relative path: <empty> <null> => ./':
echo './' >expect &&
test-tool path-utils relative_path '<empty>' '<null>' >actual &&
test_cmp expect actual
ok 120 - relative path: <empty> <null> => ./
expecting success of 0060.121 'relative path: <null> <empty> => ./':
echo './' >expect &&
test-tool path-utils relative_path '<null>' '<empty>' >actual &&
test_cmp expect actual
ok 121 - relative path: <null> <empty> => ./
expecting success of 0060.122 'relative path: <null> <null> => ./':
echo './' >expect &&
test-tool path-utils relative_path '<null>' '<null>' >actual &&
test_cmp expect actual
ok 122 - relative path: <null> <null> => ./
expecting success of 0060.123 'relative path: <null> /foo/a/b => ./':
echo './' >expect &&
test-tool path-utils relative_path '<null>' '/foo/a/b' >actual &&
test_cmp expect actual
ok 123 - relative path: <null> /foo/a/b => ./
expecting success of 0060.124 'git-path A=B info/grafts => .git/info/grafts':
A=B git rev-parse --git-path info/grafts >actual &&
echo .git/info/grafts >expect &&
test_cmp expect actual
ok 124 - git-path A=B info/grafts => .git/info/grafts
expecting success of 0060.125 'git-path GIT_GRAFT_FILE=foo info/grafts => foo':
GIT_GRAFT_FILE=foo git rev-parse --git-path info/grafts >actual &&
echo foo >expect &&
test_cmp expect actual
ok 125 - git-path GIT_GRAFT_FILE=foo info/grafts => foo
expecting success of 0060.126 'git-path GIT_GRAFT_FILE=foo info/////grafts => foo':
GIT_GRAFT_FILE=foo git rev-parse --git-path info/////grafts >actual &&
echo foo >expect &&
test_cmp expect actual
ok 126 - git-path GIT_GRAFT_FILE=foo info/////grafts => foo
expecting success of 0060.127 'git-path GIT_INDEX_FILE=foo index => foo':
GIT_INDEX_FILE=foo git rev-parse --git-path index >actual &&
echo foo >expect &&
test_cmp expect actual
ok 127 - git-path GIT_INDEX_FILE=foo index => foo
expecting success of 0060.128 'git-path GIT_INDEX_FILE=foo index/foo => .git/index/foo':
GIT_INDEX_FILE=foo git rev-parse --git-path index/foo >actual &&
echo .git/index/foo >expect &&
test_cmp expect actual
ok 128 - git-path GIT_INDEX_FILE=foo index/foo => .git/index/foo
expecting success of 0060.129 'git-path GIT_INDEX_FILE=foo index2 => .git/index2':
GIT_INDEX_FILE=foo git rev-parse --git-path index2 >actual &&
echo .git/index2 >expect &&
test_cmp expect actual
ok 129 - git-path GIT_INDEX_FILE=foo index2 => .git/index2
expecting success of 0060.130 'setup fake objects directory foo': mkdir foo
ok 130 - setup fake objects directory foo
expecting success of 0060.131 'git-path GIT_OBJECT_DIRECTORY=foo objects => foo':
GIT_OBJECT_DIRECTORY=foo git rev-parse --git-path objects >actual &&
echo foo >expect &&
test_cmp expect actual
ok 131 - git-path GIT_OBJECT_DIRECTORY=foo objects => foo
expecting success of 0060.132 'git-path GIT_OBJECT_DIRECTORY=foo objects/foo => foo/foo':
GIT_OBJECT_DIRECTORY=foo git rev-parse --git-path objects/foo >actual &&
echo foo/foo >expect &&
test_cmp expect actual
ok 132 - git-path GIT_OBJECT_DIRECTORY=foo objects/foo => foo/foo
expecting success of 0060.133 'git-path GIT_OBJECT_DIRECTORY=foo objects2 => .git/objects2':
GIT_OBJECT_DIRECTORY=foo git rev-parse --git-path objects2 >actual &&
echo .git/objects2 >expect &&
test_cmp expect actual
ok 133 - git-path GIT_OBJECT_DIRECTORY=foo objects2 => .git/objects2
expecting success of 0060.134 'setup common repository': git --git-dir=bar init
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/bar/
ok 134 - setup common repository
expecting success of 0060.135 'git-path GIT_COMMON_DIR=bar index => .git/index':
GIT_COMMON_DIR=bar git rev-parse --git-path index >actual &&
echo .git/index >expect &&
test_cmp expect actual
ok 135 - git-path GIT_COMMON_DIR=bar index => .git/index
expecting success of 0060.136 'git-path GIT_COMMON_DIR=bar index.lock => .git/index.lock':
GIT_COMMON_DIR=bar git rev-parse --git-path index.lock >actual &&
echo .git/index.lock >expect &&
test_cmp expect actual
ok 136 - git-path GIT_COMMON_DIR=bar index.lock => .git/index.lock
expecting success of 0060.137 'git-path GIT_COMMON_DIR=bar HEAD => .git/HEAD':
GIT_COMMON_DIR=bar git rev-parse --git-path HEAD >actual &&
echo .git/HEAD >expect &&
test_cmp expect actual
ok 137 - git-path GIT_COMMON_DIR=bar HEAD => .git/HEAD
expecting success of 0060.138 'git-path GIT_COMMON_DIR=bar logs/HEAD => .git/logs/HEAD':
GIT_COMMON_DIR=bar git rev-parse --git-path logs/HEAD >actual &&
echo .git/logs/HEAD >expect &&
test_cmp expect actual
ok 138 - git-path GIT_COMMON_DIR=bar logs/HEAD => .git/logs/HEAD
expecting success of 0060.139 'git-path GIT_COMMON_DIR=bar logs/HEAD.lock => .git/logs/HEAD.lock':
GIT_COMMON_DIR=bar git rev-parse --git-path logs/HEAD.lock >actual &&
echo .git/logs/HEAD.lock >expect &&
test_cmp expect actual
ok 139 - git-path GIT_COMMON_DIR=bar logs/HEAD.lock => .git/logs/HEAD.lock
expecting success of 0060.140 'git-path GIT_COMMON_DIR=bar logs/refs/bisect/foo => .git/logs/refs/bisect/foo':
GIT_COMMON_DIR=bar git rev-parse --git-path logs/refs/bisect/foo >actual &&
echo .git/logs/refs/bisect/foo >expect &&
test_cmp expect actual
ok 140 - git-path GIT_COMMON_DIR=bar logs/refs/bisect/foo => .git/logs/refs/bisect/foo
expecting success of 0060.141 'git-path GIT_COMMON_DIR=bar logs/refs => bar/logs/refs':
GIT_COMMON_DIR=bar git rev-parse --git-path logs/refs >actual &&
echo bar/logs/refs >expect &&
test_cmp expect actual
ok 141 - git-path GIT_COMMON_DIR=bar logs/refs => bar/logs/refs
expecting success of 0060.142 'git-path GIT_COMMON_DIR=bar logs/refs/ => bar/logs/refs/':
GIT_COMMON_DIR=bar git rev-parse --git-path logs/refs/ >actual &&
echo bar/logs/refs/ >expect &&
test_cmp expect actual
ok 142 - git-path GIT_COMMON_DIR=bar logs/refs/ => bar/logs/refs/
expecting success of 0060.143 'git-path GIT_COMMON_DIR=bar logs/refs/bisec/foo => bar/logs/refs/bisec/foo':
GIT_COMMON_DIR=bar git rev-parse --git-path logs/refs/bisec/foo >actual &&
echo bar/logs/refs/bisec/foo >expect &&
test_cmp expect actual
ok 143 - git-path GIT_COMMON_DIR=bar logs/refs/bisec/foo => bar/logs/refs/bisec/foo
expecting success of 0060.144 'git-path GIT_COMMON_DIR=bar logs/refs/bisec => bar/logs/refs/bisec':
GIT_COMMON_DIR=bar git rev-parse --git-path logs/refs/bisec >actual &&
echo bar/logs/refs/bisec >expect &&
test_cmp expect actual
ok 144 - git-path GIT_COMMON_DIR=bar logs/refs/bisec => bar/logs/refs/bisec
expecting success of 0060.145 'git-path GIT_COMMON_DIR=bar logs/refs/bisectfoo => bar/logs/refs/bisectfoo':
GIT_COMMON_DIR=bar git rev-parse --git-path logs/refs/bisectfoo >actual &&
echo bar/logs/refs/bisectfoo >expect &&
test_cmp expect actual
ok 145 - git-path GIT_COMMON_DIR=bar logs/refs/bisectfoo => bar/logs/refs/bisectfoo
expecting success of 0060.146 'git-path GIT_COMMON_DIR=bar objects => bar/objects':
GIT_COMMON_DIR=bar git rev-parse --git-path objects >actual &&
echo bar/objects >expect &&
test_cmp expect actual
ok 146 - git-path GIT_COMMON_DIR=bar objects => bar/objects
expecting success of 0060.147 'git-path GIT_COMMON_DIR=bar objects/bar => bar/objects/bar':
GIT_COMMON_DIR=bar git rev-parse --git-path objects/bar >actual &&
echo bar/objects/bar >expect &&
test_cmp expect actual
ok 147 - git-path GIT_COMMON_DIR=bar objects/bar => bar/objects/bar
expecting success of 0060.148 'git-path GIT_COMMON_DIR=bar info/exclude => bar/info/exclude':
GIT_COMMON_DIR=bar git rev-parse --git-path info/exclude >actual &&
echo bar/info/exclude >expect &&
test_cmp expect actual
ok 148 - git-path GIT_COMMON_DIR=bar info/exclude => bar/info/exclude
expecting success of 0060.149 'git-path GIT_COMMON_DIR=bar info/grafts => bar/info/grafts':
GIT_COMMON_DIR=bar git rev-parse --git-path info/grafts >actual &&
echo bar/info/grafts >expect &&
test_cmp expect actual
ok 149 - git-path GIT_COMMON_DIR=bar info/grafts => bar/info/grafts
expecting success of 0060.150 'git-path GIT_COMMON_DIR=bar info/sparse-checkout => .git/info/sparse-checkout':
GIT_COMMON_DIR=bar git rev-parse --git-path info/sparse-checkout >actual &&
echo .git/info/sparse-checkout >expect &&
test_cmp expect actual
ok 150 - git-path GIT_COMMON_DIR=bar info/sparse-checkout => .git/info/sparse-checkout
expecting success of 0060.151 'git-path GIT_COMMON_DIR=bar info//sparse-checkout => .git/info//sparse-checkout':
GIT_COMMON_DIR=bar git rev-parse --git-path info//sparse-checkout >actual &&
echo .git/info//sparse-checkout >expect &&
test_cmp expect actual
ok 151 - git-path GIT_COMMON_DIR=bar info//sparse-checkout => .git/info//sparse-checkout
expecting success of 0060.152 'git-path GIT_COMMON_DIR=bar remotes/bar => bar/remotes/bar':
GIT_COMMON_DIR=bar git rev-parse --git-path remotes/bar >actual &&
echo bar/remotes/bar >expect &&
test_cmp expect actual
ok 152 - git-path GIT_COMMON_DIR=bar remotes/bar => bar/remotes/bar
expecting success of 0060.153 'git-path GIT_COMMON_DIR=bar branches/bar => bar/branches/bar':
GIT_COMMON_DIR=bar git rev-parse --git-path branches/bar >actual &&
echo bar/branches/bar >expect &&
test_cmp expect actual
ok 153 - git-path GIT_COMMON_DIR=bar branches/bar => bar/branches/bar
expecting success of 0060.154 'git-path GIT_COMMON_DIR=bar logs/refs/heads/main => bar/logs/refs/heads/main':
GIT_COMMON_DIR=bar git rev-parse --git-path logs/refs/heads/main >actual &&
echo bar/logs/refs/heads/main >expect &&
test_cmp expect actual
ok 154 - git-path GIT_COMMON_DIR=bar logs/refs/heads/main => bar/logs/refs/heads/main
expecting success of 0060.155 'git-path GIT_COMMON_DIR=bar refs/heads/main => bar/refs/heads/main':
GIT_COMMON_DIR=bar git rev-parse --git-path refs/heads/main >actual &&
echo bar/refs/heads/main >expect &&
test_cmp expect actual
ok 155 - git-path GIT_COMMON_DIR=bar refs/heads/main => bar/refs/heads/main
expecting success of 0060.156 'git-path GIT_COMMON_DIR=bar refs/bisect/foo => .git/refs/bisect/foo':
GIT_COMMON_DIR=bar git rev-parse --git-path refs/bisect/foo >actual &&
echo .git/refs/bisect/foo >expect &&
test_cmp expect actual
ok 156 - git-path GIT_COMMON_DIR=bar refs/bisect/foo => .git/refs/bisect/foo
expecting success of 0060.157 'git-path GIT_COMMON_DIR=bar hooks/me => bar/hooks/me':
GIT_COMMON_DIR=bar git rev-parse --git-path hooks/me >actual &&
echo bar/hooks/me >expect &&
test_cmp expect actual
ok 157 - git-path GIT_COMMON_DIR=bar hooks/me => bar/hooks/me
expecting success of 0060.158 'git-path GIT_COMMON_DIR=bar config => bar/config':
GIT_COMMON_DIR=bar git rev-parse --git-path config >actual &&
echo bar/config >expect &&
test_cmp expect actual
ok 158 - git-path GIT_COMMON_DIR=bar config => bar/config
expecting success of 0060.159 'git-path GIT_COMMON_DIR=bar packed-refs => bar/packed-refs':
GIT_COMMON_DIR=bar git rev-parse --git-path packed-refs >actual &&
echo bar/packed-refs >expect &&
test_cmp expect actual
ok 159 - git-path GIT_COMMON_DIR=bar packed-refs => bar/packed-refs
expecting success of 0060.160 'git-path GIT_COMMON_DIR=bar shallow => bar/shallow':
GIT_COMMON_DIR=bar git rev-parse --git-path shallow >actual &&
echo bar/shallow >expect &&
test_cmp expect actual
ok 160 - git-path GIT_COMMON_DIR=bar shallow => bar/shallow
expecting success of 0060.161 'git-path GIT_COMMON_DIR=bar common => bar/common':
GIT_COMMON_DIR=bar git rev-parse --git-path common >actual &&
echo bar/common >expect &&
test_cmp expect actual
ok 161 - git-path GIT_COMMON_DIR=bar common => bar/common
expecting success of 0060.162 'git-path GIT_COMMON_DIR=bar common/file => bar/common/file':
GIT_COMMON_DIR=bar git rev-parse --git-path common/file >actual &&
echo bar/common/file >expect &&
test_cmp expect actual
ok 162 - git-path GIT_COMMON_DIR=bar common/file => bar/common/file
expecting success of 0060.163 'test_submodule_relative_url: ../ ../foo ../submodule => ../../submodule':
echo '../../submodule' >expect &&
test-tool submodule resolve-relative-url '../' '../foo' '../submodule' >actual &&
test_cmp expect actual
ok 163 - test_submodule_relative_url: ../ ../foo ../submodule => ../../submodule
expecting success of 0060.164 'test_submodule_relative_url: ../ ../foo/bar ../submodule => ../../foo/submodule':
echo '../../foo/submodule' >expect &&
test-tool submodule resolve-relative-url '../' '../foo/bar' '../submodule' >actual &&
test_cmp expect actual
ok 164 - test_submodule_relative_url: ../ ../foo/bar ../submodule => ../../foo/submodule
expecting success of 0060.165 'test_submodule_relative_url: ../ ../foo/submodule ../submodule => ../../foo/submodule':
echo '../../foo/submodule' >expect &&
test-tool submodule resolve-relative-url '../' '../foo/submodule' '../submodule' >actual &&
test_cmp expect actual
ok 165 - test_submodule_relative_url: ../ ../foo/submodule ../submodule => ../../foo/submodule
expecting success of 0060.166 'test_submodule_relative_url: ../ ./foo ../submodule => ../submodule':
echo '../submodule' >expect &&
test-tool submodule resolve-relative-url '../' './foo' '../submodule' >actual &&
test_cmp expect actual
ok 166 - test_submodule_relative_url: ../ ./foo ../submodule => ../submodule
expecting success of 0060.167 'test_submodule_relative_url: ../ ./foo/bar ../submodule => ../foo/submodule':
echo '../foo/submodule' >expect &&
test-tool submodule resolve-relative-url '../' './foo/bar' '../submodule' >actual &&
test_cmp expect actual
ok 167 - test_submodule_relative_url: ../ ./foo/bar ../submodule => ../foo/submodule
expecting success of 0060.168 'test_submodule_relative_url: ../../../ ../foo/bar ../sub/a/b/c => ../../../../foo/sub/a/b/c':
echo '../../../../foo/sub/a/b/c' >expect &&
test-tool submodule resolve-relative-url '../../../' '../foo/bar' '../sub/a/b/c' >actual &&
test_cmp expect actual
ok 168 - test_submodule_relative_url: ../../../ ../foo/bar ../sub/a/b/c => ../../../../foo/sub/a/b/c
expecting success of 0060.169 'test_submodule_relative_url: ../ /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/addtest ../repo => /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/repo':
echo '/<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/repo' >expect &&
test-tool submodule resolve-relative-url '../' '/<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/addtest' '../repo' >actual &&
test_cmp expect actual
ok 169 - test_submodule_relative_url: ../ /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/addtest ../repo => /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/repo
expecting success of 0060.170 'test_submodule_relative_url: ../ foo/bar ../submodule => ../foo/submodule':
echo '../foo/submodule' >expect &&
test-tool submodule resolve-relative-url '../' 'foo/bar' '../submodule' >actual &&
test_cmp expect actual
ok 170 - test_submodule_relative_url: ../ foo/bar ../submodule => ../foo/submodule
expecting success of 0060.171 'test_submodule_relative_url: ../ foo ../submodule => ../submodule':
echo '../submodule' >expect &&
test-tool submodule resolve-relative-url '../' 'foo' '../submodule' >actual &&
test_cmp expect actual
ok 171 - test_submodule_relative_url: ../ foo ../submodule => ../submodule
expecting success of 0060.172 'test_submodule_relative_url: (null) ../foo/bar ../sub/a/b/c => ../foo/sub/a/b/c':
echo '../foo/sub/a/b/c' >expect &&
test-tool submodule resolve-relative-url '(null)' '../foo/bar' '../sub/a/b/c' >actual &&
test_cmp expect actual
ok 172 - test_submodule_relative_url: (null) ../foo/bar ../sub/a/b/c => ../foo/sub/a/b/c
expecting success of 0060.173 'test_submodule_relative_url: (null) ../foo/bar ../sub/a/b/c/ => ../foo/sub/a/b/c':
echo '../foo/sub/a/b/c' >expect &&
test-tool submodule resolve-relative-url '(null)' '../foo/bar' '../sub/a/b/c/' >actual &&
test_cmp expect actual
ok 173 - test_submodule_relative_url: (null) ../foo/bar ../sub/a/b/c/ => ../foo/sub/a/b/c
expecting success of 0060.174 'test_submodule_relative_url: (null) ../foo/bar/ ../sub/a/b/c => ../foo/sub/a/b/c':
echo '../foo/sub/a/b/c' >expect &&
test-tool submodule resolve-relative-url '(null)' '../foo/bar/' '../sub/a/b/c' >actual &&
test_cmp expect actual
ok 174 - test_submodule_relative_url: (null) ../foo/bar/ ../sub/a/b/c => ../foo/sub/a/b/c
expecting success of 0060.175 'test_submodule_relative_url: (null) ../foo/bar ../submodule => ../foo/submodule':
echo '../foo/submodule' >expect &&
test-tool submodule resolve-relative-url '(null)' '../foo/bar' '../submodule' >actual &&
test_cmp expect actual
ok 175 - test_submodule_relative_url: (null) ../foo/bar ../submodule => ../foo/submodule
expecting success of 0060.176 'test_submodule_relative_url: (null) ../foo/submodule ../submodule => ../foo/submodule':
echo '../foo/submodule' >expect &&
test-tool submodule resolve-relative-url '(null)' '../foo/submodule' '../submodule' >actual &&
test_cmp expect actual
ok 176 - test_submodule_relative_url: (null) ../foo/submodule ../submodule => ../foo/submodule
expecting success of 0060.177 'test_submodule_relative_url: (null) ../foo ../submodule => ../submodule':
echo '../submodule' >expect &&
test-tool submodule resolve-relative-url '(null)' '../foo' '../submodule' >actual &&
test_cmp expect actual
ok 177 - test_submodule_relative_url: (null) ../foo ../submodule => ../submodule
expecting success of 0060.178 'test_submodule_relative_url: (null) ./foo/bar ../submodule => foo/submodule':
echo 'foo/submodule' >expect &&
test-tool submodule resolve-relative-url '(null)' './foo/bar' '../submodule' >actual &&
test_cmp expect actual
ok 178 - test_submodule_relative_url: (null) ./foo/bar ../submodule => foo/submodule
expecting success of 0060.179 'test_submodule_relative_url: (null) ./foo ../submodule => submodule':
echo 'submodule' >expect &&
test-tool submodule resolve-relative-url '(null)' './foo' '../submodule' >actual &&
test_cmp expect actual
ok 179 - test_submodule_relative_url: (null) ./foo ../submodule => submodule
expecting success of 0060.180 'test_submodule_relative_url: (null) //somewhere else/repo ../subrepo => //somewhere else/subrepo':
echo '//somewhere else/subrepo' >expect &&
test-tool submodule resolve-relative-url '(null)' '//somewhere else/repo' '../subrepo' >actual &&
test_cmp expect actual
ok 180 - test_submodule_relative_url: (null) //somewhere else/repo ../subrepo => //somewhere else/subrepo
expecting success of 0060.181 'test_submodule_relative_url: (null) //somewhere else/repo ../../subrepo => //subrepo':
echo '//subrepo' >expect &&
test-tool submodule resolve-relative-url '(null)' '//somewhere else/repo' '../../subrepo' >actual &&
test_cmp expect actual
ok 181 - test_submodule_relative_url: (null) //somewhere else/repo ../../subrepo => //subrepo
expecting success of 0060.182 'test_submodule_relative_url: (null) //somewhere else/repo ../../../subrepo => /subrepo':
echo '/subrepo' >expect &&
test-tool submodule resolve-relative-url '(null)' '//somewhere else/repo' '../../../subrepo' >actual &&
test_cmp expect actual
ok 182 - test_submodule_relative_url: (null) //somewhere else/repo ../../../subrepo => /subrepo
expecting success of 0060.183 'test_submodule_relative_url: (null) //somewhere else/repo ../../../../subrepo => subrepo':
echo 'subrepo' >expect &&
test-tool submodule resolve-relative-url '(null)' '//somewhere else/repo' '../../../../subrepo' >actual &&
test_cmp expect actual
ok 183 - test_submodule_relative_url: (null) //somewhere else/repo ../../../../subrepo => subrepo
expecting success of 0060.184 'test_submodule_relative_url: (null) /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/subsuper_update_r ../subsubsuper_update_r => /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/subsubsuper_update_r':
echo '/<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/subsubsuper_update_r' >expect &&
test-tool submodule resolve-relative-url '(null)' '/<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/subsuper_update_r' '../subsubsuper_update_r' >actual &&
test_cmp expect actual
ok 184 - test_submodule_relative_url: (null) /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/subsuper_update_r ../subsubsuper_update_r => /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/subsubsuper_update_r
expecting success of 0060.185 'test_submodule_relative_url: (null) /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/super_update_r2 ../subsuper_update_r => /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/subsuper_update_r':
echo '/<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/subsuper_update_r' >expect &&
test-tool submodule resolve-relative-url '(null)' '/<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/super_update_r2' '../subsuper_update_r' >actual &&
test_cmp expect actual
ok 185 - test_submodule_relative_url: (null) /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/super_update_r2 ../subsuper_update_r => /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/subsuper_update_r
expecting success of 0060.186 'test_submodule_relative_url: (null) /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/. ../. => /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/.':
echo '/<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/.' >expect &&
test-tool submodule resolve-relative-url '(null)' '/<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/.' '../.' >actual &&
test_cmp expect actual
ok 186 - test_submodule_relative_url: (null) /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/. ../. => /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/.
expecting success of 0060.187 'test_submodule_relative_url: (null) /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils ./. => /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/.':
echo '/<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/.' >expect &&
test-tool submodule resolve-relative-url '(null)' '/<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils' './.' >actual &&
test_cmp expect actual
ok 187 - test_submodule_relative_url: (null) /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils ./. => /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/.
expecting success of 0060.188 'test_submodule_relative_url: (null) /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/addtest ../repo => /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/repo':
echo '/<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/repo' >expect &&
test-tool submodule resolve-relative-url '(null)' '/<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/addtest' '../repo' >actual &&
test_cmp expect actual
ok 188 - test_submodule_relative_url: (null) /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/addtest ../repo => /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/repo
expecting success of 0060.189 'test_submodule_relative_url: (null) /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils ./å äö => /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/å äö':
echo '/<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/å äö' >expect &&
test-tool submodule resolve-relative-url '(null)' '/<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils' './å äö' >actual &&
test_cmp expect actual
ok 189 - test_submodule_relative_url: (null) /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils ./å äö => /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/å äö
expecting success of 0060.190 'test_submodule_relative_url: (null) /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/. ../submodule => /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/submodule':
echo '/<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/submodule' >expect &&
test-tool submodule resolve-relative-url '(null)' '/<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/.' '../submodule' >actual &&
test_cmp expect actual
ok 190 - test_submodule_relative_url: (null) /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/. ../submodule => /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/submodule
expecting success of 0060.191 'test_submodule_relative_url: (null) /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/submodule ../submodule => /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/submodule':
echo '/<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/submodule' >expect &&
test-tool submodule resolve-relative-url '(null)' '/<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/submodule' '../submodule' >actual &&
test_cmp expect actual
ok 191 - test_submodule_relative_url: (null) /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/submodule ../submodule => /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/submodule
expecting success of 0060.192 'test_submodule_relative_url: (null) /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/home2/../remote ../bundle1 => /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/home2/../bundle1':
echo '/<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/home2/../bundle1' >expect &&
test-tool submodule resolve-relative-url '(null)' '/<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/home2/../remote' '../bundle1' >actual &&
test_cmp expect actual
ok 192 - test_submodule_relative_url: (null) /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/home2/../remote ../bundle1 => /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/home2/../bundle1
expecting success of 0060.193 'test_submodule_relative_url: (null) /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/submodule_update_repo ./. => /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/submodule_update_repo/.':
echo '/<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/submodule_update_repo/.' >expect &&
test-tool submodule resolve-relative-url '(null)' '/<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/submodule_update_repo' './.' >actual &&
test_cmp expect actual
ok 193 - test_submodule_relative_url: (null) /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/submodule_update_repo ./. => /<<PKGBUILDDIR>>/t/trash directory.t0060-path-utils/submodule_update_repo/.
expecting success of 0060.194 'test_submodule_relative_url: (null) file:///tmp/repo ../subrepo => file:///tmp/subrepo':
echo 'file:///tmp/subrepo' >expect &&
test-tool submodule resolve-relative-url '(null)' 'file:///tmp/repo' '../subrepo' >actual &&
test_cmp expect actual
ok 194 - test_submodule_relative_url: (null) file:///tmp/repo ../subrepo => file:///tmp/subrepo
expecting success of 0060.195 'test_submodule_relative_url: (null) foo/bar ../submodule => foo/submodule':
echo 'foo/submodule' >expect &&
test-tool submodule resolve-relative-url '(null)' 'foo/bar' '../submodule' >actual &&
test_cmp expect actual
ok 195 - test_submodule_relative_url: (null) foo/bar ../submodule => foo/submodule
expecting success of 0060.196 'test_submodule_relative_url: (null) foo ../submodule => submodule':
echo 'submodule' >expect &&
test-tool submodule resolve-relative-url '(null)' 'foo' '../submodule' >actual &&
test_cmp expect actual
ok 196 - test_submodule_relative_url: (null) foo ../submodule => submodule
expecting success of 0060.197 'test_submodule_relative_url: (null) helper:://hostname/repo ../subrepo => helper:://hostname/subrepo':
echo 'helper:://hostname/subrepo' >expect &&
test-tool submodule resolve-relative-url '(null)' 'helper:://hostname/repo' '../subrepo' >actual &&
test_cmp expect actual
ok 197 - test_submodule_relative_url: (null) helper:://hostname/repo ../subrepo => helper:://hostname/subrepo
expecting success of 0060.198 'test_submodule_relative_url: (null) helper:://hostname/repo ../../subrepo => helper:://subrepo':
echo 'helper:://subrepo' >expect &&
test-tool submodule resolve-relative-url '(null)' 'helper:://hostname/repo' '../../subrepo' >actual &&
test_cmp expect actual
ok 198 - test_submodule_relative_url: (null) helper:://hostname/repo ../../subrepo => helper:://subrepo
expecting success of 0060.199 'test_submodule_relative_url: (null) helper:://hostname/repo ../../../subrepo => helper::/subrepo':
echo 'helper::/subrepo' >expect &&
test-tool submodule resolve-relative-url '(null)' 'helper:://hostname/repo' '../../../subrepo' >actual &&
test_cmp expect actual
ok 199 - test_submodule_relative_url: (null) helper:://hostname/repo ../../../subrepo => helper::/subrepo
expecting success of 0060.200 'test_submodule_relative_url: (null) helper:://hostname/repo ../../../../subrepo => helper::subrepo':
echo 'helper::subrepo' >expect &&
test-tool submodule resolve-relative-url '(null)' 'helper:://hostname/repo' '../../../../subrepo' >actual &&
test_cmp expect actual
ok 200 - test_submodule_relative_url: (null) helper:://hostname/repo ../../../../subrepo => helper::subrepo
expecting success of 0060.201 'test_submodule_relative_url: (null) helper:://hostname/repo ../../../../../subrepo => helper:subrepo':
echo 'helper:subrepo' >expect &&
test-tool submodule resolve-relative-url '(null)' 'helper:://hostname/repo' '../../../../../subrepo' >actual &&
test_cmp expect actual
ok 201 - test_submodule_relative_url: (null) helper:://hostname/repo ../../../../../subrepo => helper:subrepo
expecting success of 0060.202 'test_submodule_relative_url: (null) helper:://hostname/repo ../../../../../../subrepo => .:subrepo':
echo '.:subrepo' >expect &&
test-tool submodule resolve-relative-url '(null)' 'helper:://hostname/repo' '../../../../../../subrepo' >actual &&
test_cmp expect actual
ok 202 - test_submodule_relative_url: (null) helper:://hostname/repo ../../../../../../subrepo => .:subrepo
expecting success of 0060.203 'test_submodule_relative_url: (null) ssh://hostname/repo ../subrepo => ssh://hostname/subrepo':
echo 'ssh://hostname/subrepo' >expect &&
test-tool submodule resolve-relative-url '(null)' 'ssh://hostname/repo' '../subrepo' >actual &&
test_cmp expect actual
ok 203 - test_submodule_relative_url: (null) ssh://hostname/repo ../subrepo => ssh://hostname/subrepo
expecting success of 0060.204 'test_submodule_relative_url: (null) ssh://hostname/repo ../../subrepo => ssh://subrepo':
echo 'ssh://subrepo' >expect &&
test-tool submodule resolve-relative-url '(null)' 'ssh://hostname/repo' '../../subrepo' >actual &&
test_cmp expect actual
ok 204 - test_submodule_relative_url: (null) ssh://hostname/repo ../../subrepo => ssh://subrepo
expecting success of 0060.205 'test_submodule_relative_url: (null) ssh://hostname/repo ../../../subrepo => ssh:/subrepo':
echo 'ssh:/subrepo' >expect &&
test-tool submodule resolve-relative-url '(null)' 'ssh://hostname/repo' '../../../subrepo' >actual &&
test_cmp expect actual
ok 205 - test_submodule_relative_url: (null) ssh://hostname/repo ../../../subrepo => ssh:/subrepo
expecting success of 0060.206 'test_submodule_relative_url: (null) ssh://hostname/repo ../../../../subrepo => ssh:subrepo':
echo 'ssh:subrepo' >expect &&
test-tool submodule resolve-relative-url '(null)' 'ssh://hostname/repo' '../../../../subrepo' >actual &&
test_cmp expect actual
ok 206 - test_submodule_relative_url: (null) ssh://hostname/repo ../../../../subrepo => ssh:subrepo
expecting success of 0060.207 'test_submodule_relative_url: (null) ssh://hostname/repo ../../../../../subrepo => .:subrepo':
echo '.:subrepo' >expect &&
test-tool submodule resolve-relative-url '(null)' 'ssh://hostname/repo' '../../../../../subrepo' >actual &&
test_cmp expect actual
ok 207 - test_submodule_relative_url: (null) ssh://hostname/repo ../../../../../subrepo => .:subrepo
expecting success of 0060.208 'test_submodule_relative_url: (null) ssh://hostname:22/repo ../subrepo => ssh://hostname:22/subrepo':
echo 'ssh://hostname:22/subrepo' >expect &&
test-tool submodule resolve-relative-url '(null)' 'ssh://hostname:22/repo' '../subrepo' >actual &&
test_cmp expect actual
ok 208 - test_submodule_relative_url: (null) ssh://hostname:22/repo ../subrepo => ssh://hostname:22/subrepo
expecting success of 0060.209 'test_submodule_relative_url: (null) user@host:path/to/repo ../subrepo => user@host:path/to/subrepo':
echo 'user@host:path/to/subrepo' >expect &&
test-tool submodule resolve-relative-url '(null)' 'user@host:path/to/repo' '../subrepo' >actual &&
test_cmp expect actual
ok 209 - test_submodule_relative_url: (null) user@host:path/to/repo ../subrepo => user@host:path/to/subrepo
expecting success of 0060.210 'test_submodule_relative_url: (null) user@host:repo ../subrepo => user@host:subrepo':
echo 'user@host:subrepo' >expect &&
test-tool submodule resolve-relative-url '(null)' 'user@host:repo' '../subrepo' >actual &&
test_cmp expect actual
ok 210 - test_submodule_relative_url: (null) user@host:repo ../subrepo => user@host:subrepo
expecting success of 0060.211 'test_submodule_relative_url: (null) user@host:repo ../../subrepo => .:subrepo':
echo '.:subrepo' >expect &&
test-tool submodule resolve-relative-url '(null)' 'user@host:repo' '../../subrepo' >actual &&
test_cmp expect actual
ok 211 - test_submodule_relative_url: (null) user@host:repo ../../subrepo => .:subrepo
expecting success of 0060.212 'match .gitmodules':
test-tool path-utils is_dotgitmodules \
.gitmodules \
\
.git${u200c}modules \
\
.Gitmodules \
.gitmoduleS \
\
".gitmodules " \
".gitmodules." \
".gitmodules " \
".gitmodules. " \
".gitmodules ." \
".gitmodules.." \
".gitmodules " \
".gitmodules. " \
".gitmodules . " \
".gitmodules ." \
\
".Gitmodules " \
".Gitmodules." \
".Gitmodules " \
".Gitmodules. " \
".Gitmodules ." \
".Gitmodules.." \
".Gitmodules " \
".Gitmodules. " \
".Gitmodules . " \
".Gitmodules ." \
\
GITMOD~1 \
gitmod~1 \
GITMOD~2 \
gitmod~3 \
GITMOD~4 \
\
"GITMOD~1 " \
"gitmod~2." \
"GITMOD~3 " \
"gitmod~4. " \
"GITMOD~1 ." \
"gitmod~2 " \
"GITMOD~3. " \
"gitmod~4 . " \
\
GI7EBA~1 \
gi7eba~9 \
\
GI7EB~10 \
GI7EB~11 \
GI7EB~99 \
GI7EB~10 \
GI7E~100 \
GI7E~101 \
GI7E~999 \
~1000000 \
~9999999 \
\
.gitmodules:\$DATA \
"gitmod~4 . :\$DATA" \
\
--not \
".gitmodules x" \
".gitmodules .x" \
\
" .gitmodules" \
\
..gitmodules \
\
gitmodules \
\
.gitmodule \
\
".gitmodules x " \
".gitmodules .x" \
\
GI7EBA~ \
GI7EBA~0 \
GI7EBA~~1 \
GI7EBA~X \
Gx7EBA~1 \
GI7EBX~1 \
\
GI7EB~1 \
GI7EB~01 \
GI7EB~1X \
\
.gitmodules,:\$DATA
ok: '.gitmodules' is .gitmodules
ok: '.gitmodules' is .gitmodules
ok: '.Gitmodules' is .gitmodules
ok: '.gitmoduleS' is .gitmodules
ok: '.gitmodules ' is .gitmodules
ok: '.gitmodules.' is .gitmodules
ok: '.gitmodules ' is .gitmodules
ok: '.gitmodules. ' is .gitmodules
ok: '.gitmodules .' is .gitmodules
ok: '.gitmodules..' is .gitmodules
ok: '.gitmodules ' is .gitmodules
ok: '.gitmodules. ' is .gitmodules
ok: '.gitmodules . ' is .gitmodules
ok: '.gitmodules .' is .gitmodules
ok: '.Gitmodules ' is .gitmodules
ok: '.Gitmodules.' is .gitmodules
ok: '.Gitmodules ' is .gitmodules
ok: '.Gitmodules. ' is .gitmodules
ok: '.Gitmodules .' is .gitmodules
ok: '.Gitmodules..' is .gitmodules
ok: '.Gitmodules ' is .gitmodules
ok: '.Gitmodules. ' is .gitmodules
ok: '.Gitmodules . ' is .gitmodules
ok: '.Gitmodules .' is .gitmodules
ok: 'GITMOD~1' is .gitmodules
ok: 'gitmod~1' is .gitmodules
ok: 'GITMOD~2' is .gitmodules
ok: 'gitmod~3' is .gitmodules
ok: 'GITMOD~4' is .gitmodules
ok: 'GITMOD~1 ' is .gitmodules
ok: 'gitmod~2.' is .gitmodules
ok: 'GITMOD~3 ' is .gitmodules
ok: 'gitmod~4. ' is .gitmodules
ok: 'GITMOD~1 .' is .gitmodules
ok: 'gitmod~2 ' is .gitmodules
ok: 'GITMOD~3. ' is .gitmodules
ok: 'gitmod~4 . ' is .gitmodules
ok: 'GI7EBA~1' is .gitmodules
ok: 'gi7eba~9' is .gitmodules
ok: 'GI7EB~10' is .gitmodules
ok: 'GI7EB~11' is .gitmodules
ok: 'GI7EB~99' is .gitmodules
ok: 'GI7EB~10' is .gitmodules
ok: 'GI7E~100' is .gitmodules
ok: 'GI7E~101' is .gitmodules
ok: 'GI7E~999' is .gitmodules
ok: '~1000000' is .gitmodules
ok: '~9999999' is .gitmodules
ok: '.gitmodules:$DATA' is .gitmodules
ok: 'gitmod~4 . :$DATA' is .gitmodules
ok: '.gitmodules x' is not .gitmodules
ok: '.gitmodules .x' is not .gitmodules
ok: ' .gitmodules' is not .gitmodules
ok: '..gitmodules' is not .gitmodules
ok: 'gitmodules' is not .gitmodules
ok: '.gitmodule' is not .gitmodules
ok: '.gitmodules x ' is not .gitmodules
ok: '.gitmodules .x' is not .gitmodules
ok: 'GI7EBA~' is not .gitmodules
ok: 'GI7EBA~0' is not .gitmodules
ok: 'GI7EBA~~1' is not .gitmodules
ok: 'GI7EBA~X' is not .gitmodules
ok: 'Gx7EBA~1' is not .gitmodules
ok: 'GI7EBX~1' is not .gitmodules
ok: 'GI7EB~1' is not .gitmodules
ok: 'GI7EB~01' is not .gitmodules
ok: 'GI7EB~1X' is not .gitmodules
ok: '.gitmodules,:$DATA' is not .gitmodules
ok 212 - match .gitmodules
expecting success of 0060.213 'match .gitattributes':
test-tool path-utils is_dotgitattributes \
.gitattributes \
.git${u200c}attributes \
.Gitattributes \
.gitattributeS \
GITATT~1 \
GI7D29~1
ok: '.gitattributes' is .gitattributes
ok: '.gitattributes' is .gitattributes
ok: '.Gitattributes' is .gitattributes
ok: '.gitattributeS' is .gitattributes
ok: 'GITATT~1' is .gitattributes
ok: 'GI7D29~1' is .gitattributes
ok 213 - match .gitattributes
expecting success of 0060.214 'match .gitignore':
test-tool path-utils is_dotgitignore \
.gitignore \
.git${u200c}ignore \
.Gitignore \
.gitignorE \
GITIGN~1 \
GI250A~1
ok: '.gitignore' is .gitignore
ok: '.gitignore' is .gitignore
ok: '.Gitignore' is .gitignore
ok: '.gitignorE' is .gitignore
ok: 'GITIGN~1' is .gitignore
ok: 'GI250A~1' is .gitignore
ok 214 - match .gitignore
expecting success of 0060.215 'match .mailmap':
test-tool path-utils is_dotmailmap \
.mailmap \
.mail${u200c}map \
.Mailmap \
.mailmaP \
MAILMA~1 \
MABA30~1
ok: '.mailmap' is .gitmailmap
ok: '.mailmap' is .gitmailmap
ok: '.Mailmap' is .gitmailmap
ok: '.mailmaP' is .gitmailmap
ok: 'MAILMA~1' is .gitmailmap
ok: 'MABA30~1' is .gitmailmap
ok 215 - match .mailmap
ok 216 # skip is_valid_path() on Windows (missing MINGW)
checking prerequisite: RUNTIME_PREFIX
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-RUNTIME_PREFIX" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-RUNTIME_PREFIX" &&
test true = "$RUNTIME_PREFIX"
)
prerequisite RUNTIME_PREFIX not satisfied
checking prerequisite: CAN_EXEC_IN_PWD
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-CAN_EXEC_IN_PWD" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-CAN_EXEC_IN_PWD" &&
cp "$GIT_EXEC_PATH"/git$X ./ &&
./git rev-parse
)
prerequisite CAN_EXEC_IN_PWD ok
ok 217 # skip RUNTIME_PREFIX works (missing RUNTIME_PREFIX of !VALGRIND,RUNTIME_PREFIX,CAN_EXEC_IN_PWD)
ok 218 # skip %(prefix)/ works (missing RUNTIME_PREFIX of !VALGRIND,RUNTIME_PREFIX,CAN_EXEC_IN_PWD)
# passed all 218 test(s)
1..218
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0066-dir-iterator.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0066-dir-iterator/.git/
expecting success of 0066.1 'setup':
mkdir -p dir &&
mkdir -p dir/a/b/c/ &&
>dir/b &&
>dir/c &&
mkdir -p dir/d/e/d/ &&
>dir/a/b/c/d &&
>dir/a/e &&
>dir/d/e/d/a &&
mkdir -p dir2/a/b/c/ &&
>dir2/a/b/c/d
ok 1 - setup
expecting success of 0066.2 'dir-iterator should iterate through all files':
cat >expected-iteration-sorted-output <<-EOF &&
[d] (a) [a] ./dir/a
[d] (a/b) [b] ./dir/a/b
[d] (a/b/c) [c] ./dir/a/b/c
[d] (d) [d] ./dir/d
[d] (d/e) [e] ./dir/d/e
[d] (d/e/d) [d] ./dir/d/e/d
[f] (a/b/c/d) [d] ./dir/a/b/c/d
[f] (a/e) [e] ./dir/a/e
[f] (b) [b] ./dir/b
[f] (c) [c] ./dir/c
[f] (d/e/d/a) [a] ./dir/d/e/d/a
EOF
test-tool dir-iterator ./dir >out &&
sort out >./actual-iteration-sorted-output &&
test_cmp expected-iteration-sorted-output actual-iteration-sorted-output
ok 2 - dir-iterator should iterate through all files
expecting success of 0066.3 'dir-iterator should list files in the correct order':
cat >expected-pre-order-output <<-EOF &&
[d] (a) [a] ./dir2/a
[d] (a/b) [b] ./dir2/a/b
[d] (a/b/c) [c] ./dir2/a/b/c
[f] (a/b/c/d) [d] ./dir2/a/b/c/d
EOF
test-tool dir-iterator ./dir2 >actual-pre-order-output &&
test_cmp expected-pre-order-output actual-pre-order-output
ok 3 - dir-iterator should list files in the correct order
expecting success of 0066.4 'begin should fail upon inexistent paths':
test_must_fail test-tool dir-iterator ./inexistent-path \
>actual-inexistent-path-output &&
echo "dir_iterator_begin failure: ENOENT" >expected-inexistent-path-output &&
test_cmp expected-inexistent-path-output actual-inexistent-path-output
ok 4 - begin should fail upon inexistent paths
expecting success of 0066.5 'begin should fail upon non directory paths':
test_must_fail test-tool dir-iterator ./dir/b >actual-non-dir-output &&
echo "dir_iterator_begin failure: ENOTDIR" >expected-non-dir-output &&
test_cmp expected-non-dir-output actual-non-dir-output
ok 5 - begin should fail upon non directory paths
checking prerequisite: SANITY
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SANITY" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SANITY" &&
mkdir SANETESTD.1 SANETESTD.2 &&
chmod +w SANETESTD.1 SANETESTD.2 &&
>SANETESTD.1/x 2>SANETESTD.2/x &&
chmod -w SANETESTD.1 &&
chmod -r SANETESTD.1/x &&
chmod -rx SANETESTD.2 ||
BUG "cannot prepare SANETESTD"
! test -r SANETESTD.1/x &&
! rm SANETESTD.1/x && ! test -f SANETESTD.2/x
status=$?
chmod +rwx SANETESTD.1 SANETESTD.2 &&
rm -rf SANETESTD.1 SANETESTD.2 ||
BUG "cannot clean SANETESTD"
return $status
)
rm: cannot remove 'SANETESTD.1/x': Permission denied
prerequisite SANITY ok
expecting success of 0066.6 'advance should not fail on errors by default':
cat >expected-no-permissions-output <<-EOF &&
[d] (a) [a] ./dir3/a
EOF
mkdir -p dir3/a &&
>dir3/a/b &&
chmod 0 dir3/a &&
test-tool dir-iterator ./dir3 >actual-no-permissions-output &&
test_cmp expected-no-permissions-output actual-no-permissions-output &&
chmod 755 dir3/a &&
rm -rf dir3
warning: error opening directory './dir3/a/': Permission denied
ok 6 - advance should not fail on errors by default
expecting success of 0066.7 'advance should fail on errors, w/ pedantic flag':
cat >expected-no-permissions-pedantic-output <<-EOF &&
[d] (a) [a] ./dir3/a
dir_iterator_advance failure
EOF
mkdir -p dir3/a &&
>dir3/a/b &&
chmod 0 dir3/a &&
test_must_fail test-tool dir-iterator --pedantic ./dir3 \
>actual-no-permissions-pedantic-output &&
test_cmp expected-no-permissions-pedantic-output \
actual-no-permissions-pedantic-output &&
chmod 755 dir3/a &&
rm -rf dir3
warning: error opening directory './dir3/a/': Permission denied
ok 7 - advance should fail on errors, w/ pedantic flag
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
expecting success of 0066.8 'setup dirs with symlinks':
mkdir -p dir4/a &&
mkdir -p dir4/b/c &&
>dir4/a/d &&
ln -s d dir4/a/e &&
ln -s ../b dir4/a/f &&
ln -s dir4 dir5
ok 8 - setup dirs with symlinks
expecting success of 0066.9 'dir-iterator should not follow symlinks by default':
cat >expected-no-follow-sorted-output <<-EOF &&
[d] (a) [a] ./dir4/a
[d] (b) [b] ./dir4/b
[d] (b/c) [c] ./dir4/b/c
[f] (a/d) [d] ./dir4/a/d
[s] (a/e) [e] ./dir4/a/e
[s] (a/f) [f] ./dir4/a/f
EOF
test-tool dir-iterator ./dir4 >out &&
sort out >actual-no-follow-sorted-output &&
test_cmp expected-no-follow-sorted-output actual-no-follow-sorted-output
ok 9 - dir-iterator should not follow symlinks by default
expecting success of 0066.10 'dir-iterator does not resolve top-level symlinks':
test_must_fail test-tool dir-iterator ./dir5 >out &&
grep "ENOTDIR" out
dir_iterator_begin failure: ENOTDIR
ok 10 - dir-iterator does not resolve top-level symlinks
# passed all 10 test(s)
1..10
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0067-parse_pathspec_file.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0067-parse_pathspec_file/.git/
expecting success of 0067.1 'one item from stdin':
cat >expect <<-\EOF &&
fileA.t
EOF
echo fileA.t |
test-tool parse-pathspec-file --pathspec-from-file=- >actual &&
test_cmp expect actual
ok 1 - one item from stdin
expecting success of 0067.2 'one item from file':
cat >expect <<-\EOF &&
fileA.t
EOF
echo fileA.t >list &&
test-tool parse-pathspec-file --pathspec-from-file=list >actual &&
test_cmp expect actual
ok 2 - one item from file
expecting success of 0067.3 'NUL delimiters':
cat >expect <<-\EOF &&
fileA.t
fileB.t
EOF
printf "fileA.t\0fileB.t\0" |
test-tool parse-pathspec-file --pathspec-from-file=- --pathspec-file-nul >actual &&
test_cmp expect actual
ok 3 - NUL delimiters
expecting success of 0067.4 'LF delimiters':
cat >expect <<-\EOF &&
fileA.t
fileB.t
EOF
printf "fileA.t\nfileB.t\n" |
test-tool parse-pathspec-file --pathspec-from-file=- >actual &&
test_cmp expect actual
ok 4 - LF delimiters
expecting success of 0067.5 'no trailing delimiter':
cat >expect <<-\EOF &&
fileA.t
fileB.t
EOF
printf "fileA.t\nfileB.t" |
test-tool parse-pathspec-file --pathspec-from-file=- >actual &&
test_cmp expect actual
ok 5 - no trailing delimiter
expecting success of 0067.6 'CRLF delimiters':
cat >expect <<-\EOF &&
fileA.t
fileB.t
EOF
printf "fileA.t\r\nfileB.t\r\n" |
test-tool parse-pathspec-file --pathspec-from-file=- >actual &&
test_cmp expect actual
ok 6 - CRLF delimiters
expecting success of 0067.7 'quotes':
cat >expect <<-\EOF &&
fileA.t
EOF
cat >list <<-\EOF &&
"file\101.t"
EOF
test-tool parse-pathspec-file --pathspec-from-file=list >actual &&
test_cmp expect actual
ok 7 - quotes
expecting success of 0067.8 '--pathspec-file-nul takes quotes literally':
# Note: there is an extra newline because --pathspec-file-nul takes
# input \n literally, too
cat >expect <<-\EOF &&
"file\101.t"
EOF
cat >list <<-\EOF &&
"file\101.t"
EOF
test-tool parse-pathspec-file --pathspec-from-file=list --pathspec-file-nul >actual &&
test_cmp expect actual
ok 8 - --pathspec-file-nul takes quotes literally
# passed all 8 test(s)
1..8
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0069-oidtree.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0069-oidtree/.git/
expecting success of 0069.1 'oidtree insert and contains':
cat >expect <<-\EOF &&
0
0
0
1
1
0
EOF
{
echoid insert 444 1 2 3 4 5 a b c d e &&
echoid contains 44 441 440 444 4440 4444 &&
echo clear
} | test-tool oidtree >actual &&
test_cmp expect actual
ok 1 - oidtree insert and contains
expecting success of 0069.2 'oidtree each':
echoid "" 123 321 321 >expect &&
{
echoid insert f 9 8 123 321 a b c d e &&
echo each 12300 &&
echo each 3211 &&
echo each 3210 &&
echo each 32100 &&
echo clear
} | test-tool oidtree >actual &&
test_cmp expect actual
ok 2 - oidtree each
# passed all 2 test(s)
1..2
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0070-fundamental.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0070-fundamental/.git/
expecting success of 0070.1 'character classes (isspace, isalpha etc.)':
test-tool ctype
ok 1 - character classes (isspace, isalpha etc.)
expecting success of 0070.2 'mktemp to nonexistent directory prints filename':
test_must_fail test-tool mktemp doesnotexist/testXXXXXX 2>err &&
grep "doesnotexist/test" err
fatal: Unable to create temporary file '/<<PKGBUILDDIR>>/t/trash directory.t0070-fundamental/doesnotexist/testmRi1q6': No such file or directory
ok 2 - mktemp to nonexistent directory prints filename
checking prerequisite: SANITY
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SANITY" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SANITY" &&
mkdir SANETESTD.1 SANETESTD.2 &&
chmod +w SANETESTD.1 SANETESTD.2 &&
>SANETESTD.1/x 2>SANETESTD.2/x &&
chmod -w SANETESTD.1 &&
chmod -r SANETESTD.1/x &&
chmod -rx SANETESTD.2 ||
BUG "cannot prepare SANETESTD"
! test -r SANETESTD.1/x &&
! rm SANETESTD.1/x && ! test -f SANETESTD.2/x
status=$?
chmod +rwx SANETESTD.1 SANETESTD.2 &&
rm -rf SANETESTD.1 SANETESTD.2 ||
BUG "cannot clean SANETESTD"
return $status
)
rm: cannot remove 'SANETESTD.1/x': Permission denied
prerequisite SANITY ok
expecting success of 0070.3 'mktemp to unwritable directory prints filename':
mkdir cannotwrite &&
test_when_finished "chmod +w cannotwrite" &&
chmod -w cannotwrite &&
test_must_fail test-tool mktemp cannotwrite/testXXXXXX 2>err &&
grep "cannotwrite/test" err
fatal: Unable to create temporary file '/<<PKGBUILDDIR>>/t/trash directory.t0070-fundamental/cannotwrite/test5oZR0z': Permission denied
ok 3 - mktemp to unwritable directory prints filename
expecting success of 0070.4 'git_mkstemps_mode does not fail if fd 0 is not open':
git commit --allow-empty -m message <&-
[master (root-commit) b293b08] message
Author: A U Thor <author@example.com>
ok 4 - git_mkstemps_mode does not fail if fd 0 is not open
expecting success of 0070.5 'check for a bug in the regex routines':
# if this test fails, re-build git with NO_REGEX=1
test-tool regex --bug
ok 5 - check for a bug in the regex routines
expecting success of 0070.6 'incomplete sideband messages are reassembled':
test-tool pkt-line send-split-sideband >split-sideband &&
test-tool pkt-line receive-sideband <split-sideband 2>err &&
grep "Hello, world" err
primary: regular output
remote: Hello, world!
ok 6 - incomplete sideband messages are reassembled
expecting success of 0070.7 'eof on sideband message is reported':
printf 1234 >input &&
test-tool pkt-line receive-sideband <input 2>err &&
test_i18ngrep "unexpected disconnect" err
sideband: unexpected disconnect while reading sideband packet
ok 7 - eof on sideband message is reported
expecting success of 0070.8 'missing sideband designator is reported':
printf 0004 >input &&
test-tool pkt-line receive-sideband <input 2>err &&
test_i18ngrep "missing sideband" err
sideband: protocol error: missing sideband designator
ok 8 - missing sideband designator is reported
# passed all 8 test(s)
1..8
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0068-for-each-repo.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0068-for-each-repo/.git/
expecting success of 0068.1 'run based on configured value':
git init one &&
git init two &&
git init three &&
git init ~/four &&
git -C two commit --allow-empty -m "DID NOT RUN" &&
git config run.key "$TRASH_DIRECTORY/one" &&
git config --add run.key "$TRASH_DIRECTORY/three" &&
git config --add run.key "~/four" &&
git for-each-repo --config=run.key commit --allow-empty -m "ran" &&
git -C one log -1 --pretty=format:%s >message &&
grep ran message &&
git -C two log -1 --pretty=format:%s >message &&
! grep ran message &&
git -C three log -1 --pretty=format:%s >message &&
grep ran message &&
git -C ~/four log -1 --pretty=format:%s >message &&
grep ran message &&
git for-each-repo --config=run.key -- commit --allow-empty -m "ran again" &&
git -C one log -1 --pretty=format:%s >message &&
grep again message &&
git -C two log -1 --pretty=format:%s >message &&
! grep again message &&
git -C three log -1 --pretty=format:%s >message &&
grep again message &&
git -C ~/four log -1 --pretty=format:%s >message &&
grep again message
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0068-for-each-repo/one/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0068-for-each-repo/two/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0068-for-each-repo/three/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0068-for-each-repo/four/.git/
[master (root-commit) 20fd2df] DID NOT RUN
Author: A U Thor <author@example.com>
[master (root-commit) 3c2529d] ran
Author: A U Thor <author@example.com>
[master (root-commit) 3c2529d] ran
Author: A U Thor <author@example.com>
[master (root-commit) 3c2529d] ran
Author: A U Thor <author@example.com>
ran
ran
ran
[master 3fc5dd1] ran again
Author: A U Thor <author@example.com>
[master 3fc5dd1] ran again
Author: A U Thor <author@example.com>
[master 3fc5dd1] ran again
Author: A U Thor <author@example.com>
ran again
ran again
ran again
ok 1 - run based on configured value
expecting success of 0068.2 'do nothing on empty config':
# the whole thing would fail if for-each-ref iterated even
# once, because "git help --no-such-option" would fail
git for-each-repo --config=bogus.config -- help --no-such-option
ok 2 - do nothing on empty config
expecting success of 0068.3 'error on bad config keys':
test_expect_code 129 git for-each-repo --config=a &&
test_expect_code 129 git for-each-repo --config=a.b. &&
test_expect_code 129 git for-each-repo --config="'.b"
error: key does not contain a section: a
fatal: got bad config --config=a
usage: git for-each-repo --config=<config> [--] <arguments>
--config <config> config key storing a list of repository paths
error: key does not contain variable name: a.b.
fatal: got bad config --config=a.b.
usage: git for-each-repo --config=<config> [--] <arguments>
--config <config> config key storing a list of repository paths
error: invalid key: '.b
fatal: got bad config --config='.b
usage: git for-each-repo --config=<config> [--] <arguments>
--config <config> config key storing a list of repository paths
ok 3 - error on bad config keys
expecting success of 0068.4 'error on NULL value for config keys':
cat >>.git/config <<-\EOF &&
[empty]
key
EOF
cat >expect <<-\EOF &&
error: missing value for 'empty.key'
EOF
test_expect_code 129 git for-each-repo --config=empty.key 2>actual.raw &&
grep ^error actual.raw >actual &&
test_cmp expect actual
ok 4 - error on NULL value for config keys
# passed all 4 test(s)
1..4
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0071-sort.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0071-sort/.git/
expecting success of 0071.1 'DEFINE_LIST_SORT_DEBUG':
test-tool mergesort test
distribut mode n m get_next set_next compare verdict
sawtooth copy 100 1 472 198 372 OK
sawtooth copy 100 2 605 296 505 OK
sawtooth copy 100 4 634 342 534 OK
sawtooth copy 100 8 604 359 504 OK
sawtooth copy 100 16 561 355 461 OK
sawtooth copy 100 32 514 329 414 OK
sawtooth copy 100 64 480 269 380 OK
sawtooth copy 100 128 472 198 372 OK
sawtooth reverse 100 1 472 198 372 OK
sawtooth reverse 100 2 605 296 505 OK
sawtooth reverse 100 4 634 342 534 OK
sawtooth reverse 100 8 604 359 504 OK
sawtooth reverse 100 16 585 361 485 OK
sawtooth reverse 100 32 538 335 438 OK
sawtooth reverse 100 64 464 272 364 OK
sawtooth reverse 100 128 416 198 316 OK
sawtooth reverse_1st_half 100 1 472 198 372 OK
sawtooth reverse_1st_half 100 2 605 296 505 OK
sawtooth reverse_1st_half 100 4 634 342 534 OK
sawtooth reverse_1st_half 100 8 616 365 516 OK
sawtooth reverse_1st_half 100 16 573 361 473 OK
sawtooth reverse_1st_half 100 32 522 333 422 OK
sawtooth reverse_1st_half 100 64 500 271 400 OK
sawtooth reverse_1st_half 100 128 492 200 392 OK
sawtooth reverse_2nd_half 100 1 472 198 372 OK
sawtooth reverse_2nd_half 100 2 605 296 505 OK
sawtooth reverse_2nd_half 100 4 634 342 534 OK
sawtooth reverse_2nd_half 100 8 624 364 524 OK
sawtooth reverse_2nd_half 100 16 589 360 489 OK
sawtooth reverse_2nd_half 100 32 558 334 458 OK
sawtooth reverse_2nd_half 100 64 525 273 425 OK
sawtooth reverse_2nd_half 100 128 470 201 370 OK
sawtooth sort 100 1 472 198 372 OK
sawtooth sort 100 2 472 198 372 OK
sawtooth sort 100 4 472 198 372 OK
sawtooth sort 100 8 472 198 372 OK
sawtooth sort 100 16 472 198 372 OK
sawtooth sort 100 32 472 198 372 OK
sawtooth sort 100 64 472 198 372 OK
sawtooth sort 100 128 472 198 372 OK
sawtooth dither 100 1 652 374 552 OK
sawtooth dither 100 2 663 367 563 OK
sawtooth dither 100 4 672 421 572 OK
sawtooth dither 100 8 642 418 542 OK
sawtooth dither 100 16 594 416 494 OK
sawtooth dither 100 32 547 389 447 OK
sawtooth dither 100 64 514 333 414 OK
sawtooth dither 100 128 505 264 405 OK
sawtooth unriffle 100 1 472 198 372 OK
sawtooth unriffle 100 2 472 198 372 OK
sawtooth unriffle 100 4 519 205 419 OK
sawtooth unriffle 100 8 570 221 470 OK
sawtooth unriffle 100 16 585 261 485 OK
sawtooth unriffle 100 32 630 322 530 OK
sawtooth unriffle 100 64 658 418 558 OK
sawtooth unriffle 100 128 672 520 572 OK
sawtooth unriffle_skewed 100 1 472 198 372 OK
sawtooth unriffle_skewed 100 2 509 226 409 OK
sawtooth unriffle_skewed 100 4 539 246 439 OK
sawtooth unriffle_skewed 100 8 609 268 509 OK
sawtooth unriffle_skewed 100 16 627 301 527 OK
sawtooth unriffle_skewed 100 32 631 369 531 OK
sawtooth unriffle_skewed 100 64 674 533 574 OK
sawtooth unriffle_skewed 100 128 689 632 589 OK
rand copy 100 1 472 198 372 OK
rand copy 100 2 581 264 481 OK
rand copy 100 4 627 315 527 OK
rand copy 100 8 647 351 547 OK
rand copy 100 16 640 381 540 OK
rand copy 100 32 648 398 548 OK
rand copy 100 64 641 403 541 OK
rand copy 100 128 649 422 549 OK
rand reverse 100 1 472 198 372 OK
rand reverse 100 2 568 266 468 OK
rand reverse 100 4 623 312 523 OK
rand reverse 100 8 649 349 549 OK
rand reverse 100 16 651 376 551 OK
rand reverse 100 32 654 399 554 OK
rand reverse 100 64 659 415 559 OK
rand reverse 100 128 661 421 561 OK
rand reverse_1st_half 100 1 472 198 372 OK
rand reverse_1st_half 100 2 576 266 476 OK
rand reverse_1st_half 100 4 623 320 523 OK
rand reverse_1st_half 100 8 646 357 546 OK
rand reverse_1st_half 100 16 639 390 539 OK
rand reverse_1st_half 100 32 652 423 552 OK
rand reverse_1st_half 100 64 644 422 544 OK
rand reverse_1st_half 100 128 649 418 549 OK
rand reverse_2nd_half 100 1 472 198 372 OK
rand reverse_2nd_half 100 2 581 264 481 OK
rand reverse_2nd_half 100 4 631 320 531 OK
rand reverse_2nd_half 100 8 643 364 543 OK
rand reverse_2nd_half 100 16 651 390 551 OK
rand reverse_2nd_half 100 32 652 402 552 OK
rand reverse_2nd_half 100 64 647 416 547 OK
rand reverse_2nd_half 100 128 660 434 560 OK
rand sort 100 1 472 198 372 OK
rand sort 100 2 472 198 372 OK
rand sort 100 4 472 198 372 OK
rand sort 100 8 472 198 372 OK
rand sort 100 16 472 198 372 OK
rand sort 100 32 472 198 372 OK
rand sort 100 64 472 198 372 OK
rand sort 100 128 472 198 372 OK
rand dither 100 1 652 374 552 OK
rand dither 100 2 658 338 558 OK
rand dither 100 4 653 347 553 OK
rand dither 100 8 649 359 549 OK
rand dither 100 16 643 398 543 OK
rand dither 100 32 653 397 553 OK
rand dither 100 64 641 395 541 OK
rand dither 100 128 651 425 551 OK
rand unriffle 100 1 472 198 372 OK
rand unriffle 100 2 578 264 478 OK
rand unriffle 100 4 621 320 521 OK
rand unriffle 100 8 649 371 549 OK
rand unriffle 100 16 664 403 564 OK
rand unriffle 100 32 656 419 556 OK
rand unriffle 100 64 656 441 556 OK
rand unriffle 100 128 665 450 565 OK
rand unriffle_skewed 100 1 472 198 372 OK
rand unriffle_skewed 100 2 581 268 481 OK
rand unriffle_skewed 100 4 625 312 525 OK
rand unriffle_skewed 100 8 648 356 548 OK
rand unriffle_skewed 100 16 660 398 560 OK
rand unriffle_skewed 100 32 654 417 554 OK
rand unriffle_skewed 100 64 667 435 567 OK
rand unriffle_skewed 100 128 662 431 562 OK
stagger copy 100 1 543 299 443 OK
stagger copy 100 2 582 335 482 OK
stagger copy 100 4 586 354 486 OK
stagger copy 100 8 627 368 527 OK
stagger copy 100 16 653 458 553 OK
stagger copy 100 32 618 315 518 OK
stagger copy 100 64 673 480 573 OK
stagger copy 100 128 666 501 566 OK
stagger reverse 100 1 489 299 389 OK
stagger reverse 100 2 522 335 422 OK
stagger reverse 100 4 562 350 462 OK
stagger reverse 100 8 613 366 513 OK
stagger reverse 100 16 643 457 543 OK
stagger reverse 100 32 633 312 533 OK
stagger reverse 100 64 680 496 580 OK
stagger reverse 100 128 669 498 569 OK
stagger reverse_1st_half 100 1 520 294 420 OK
stagger reverse_1st_half 100 2 561 331 461 OK
stagger reverse_1st_half 100 4 596 353 496 OK
stagger reverse_1st_half 100 8 630 368 530 OK
stagger reverse_1st_half 100 16 652 451 552 OK
stagger reverse_1st_half 100 32 622 314 522 OK
stagger reverse_1st_half 100 64 670 480 570 OK
stagger reverse_1st_half 100 128 668 490 568 OK
stagger reverse_2nd_half 100 1 464 293 364 OK
stagger reverse_2nd_half 100 2 563 335 463 OK
stagger reverse_2nd_half 100 4 590 355 490 OK
stagger reverse_2nd_half 100 8 627 367 527 OK
stagger reverse_2nd_half 100 16 651 453 551 OK
stagger reverse_2nd_half 100 32 633 316 533 OK
stagger reverse_2nd_half 100 64 678 482 578 OK
stagger reverse_2nd_half 100 128 665 493 565 OK
stagger sort 100 1 472 198 372 OK
stagger sort 100 2 472 198 372 OK
stagger sort 100 4 472 198 372 OK
stagger sort 100 8 472 198 372 OK
stagger sort 100 16 472 198 372 OK
stagger sort 100 32 472 198 372 OK
stagger sort 100 64 472 198 372 OK
stagger sort 100 128 472 198 372 OK
stagger dither 100 1 551 315 451 OK
stagger dither 100 2 589 328 489 OK
stagger dither 100 4 586 354 486 OK
stagger dither 100 8 633 363 533 OK
stagger dither 100 16 653 436 553 OK
stagger dither 100 32 631 374 531 OK
stagger dither 100 64 673 480 573 OK
stagger dither 100 128 668 465 568 OK
stagger unriffle 100 1 662 447 562 OK
stagger unriffle 100 2 643 429 543 OK
stagger unriffle 100 4 656 374 556 OK
stagger unriffle 100 8 662 487 562 OK
stagger unriffle 100 16 670 506 570 OK
stagger unriffle 100 32 669 503 569 OK
stagger unriffle 100 64 650 367 550 OK
stagger unriffle 100 128 662 498 562 OK
stagger unriffle_skewed 100 1 673 478 573 OK
stagger unriffle_skewed 100 2 650 450 550 OK
stagger unriffle_skewed 100 4 655 381 555 OK
stagger unriffle_skewed 100 8 663 500 563 OK
stagger unriffle_skewed 100 16 669 513 569 OK
stagger unriffle_skewed 100 32 655 554 555 OK
stagger unriffle_skewed 100 64 652 383 552 OK
stagger unriffle_skewed 100 128 658 447 558 OK
plateau copy 100 1 472 198 372 OK
plateau copy 100 2 472 198 372 OK
plateau copy 100 4 472 198 372 OK
plateau copy 100 8 472 198 372 OK
plateau copy 100 16 472 198 372 OK
plateau copy 100 32 472 198 372 OK
plateau copy 100 64 472 198 372 OK
plateau copy 100 128 472 198 372 OK
plateau reverse 100 1 475 201 375 OK
plateau reverse 100 2 476 200 376 OK
plateau reverse 100 4 448 199 348 OK
plateau reverse 100 8 460 201 360 OK
plateau reverse 100 16 472 200 372 OK
plateau reverse 100 32 476 199 376 OK
plateau reverse 100 64 444 199 344 OK
plateau reverse 100 128 416 198 316 OK
plateau reverse_1st_half 100 1 474 200 374 OK
plateau reverse_1st_half 100 2 476 200 376 OK
plateau reverse_1st_half 100 4 482 202 382 OK
plateau reverse_1st_half 100 8 488 201 388 OK
plateau reverse_1st_half 100 16 490 200 390 OK
plateau reverse_1st_half 100 32 506 201 406 OK
plateau reverse_1st_half 100 64 492 200 392 OK
plateau reverse_1st_half 100 128 492 200 392 OK
plateau reverse_2nd_half 100 1 472 198 372 OK
plateau reverse_2nd_half 100 2 472 198 372 OK
plateau reverse_2nd_half 100 4 472 198 372 OK
plateau reverse_2nd_half 100 8 472 198 372 OK
plateau reverse_2nd_half 100 16 472 198 372 OK
plateau reverse_2nd_half 100 32 472 198 372 OK
plateau reverse_2nd_half 100 64 470 202 370 OK
plateau reverse_2nd_half 100 128 470 201 370 OK
plateau sort 100 1 472 198 372 OK
plateau sort 100 2 472 198 372 OK
plateau sort 100 4 472 198 372 OK
plateau sort 100 8 472 198 372 OK
plateau sort 100 16 472 198 372 OK
plateau sort 100 32 472 198 372 OK
plateau sort 100 64 472 198 372 OK
plateau sort 100 128 472 198 372 OK
plateau dither 100 1 652 374 552 OK
plateau dither 100 2 652 372 552 OK
plateau dither 100 4 651 368 551 OK
plateau dither 100 8 646 365 546 OK
plateau dither 100 16 636 354 536 OK
plateau dither 100 32 602 337 502 OK
plateau dither 100 64 551 300 451 OK
plateau dither 100 128 505 264 405 OK
plateau unriffle 100 1 472 198 372 OK
plateau unriffle 100 2 475 202 375 OK
plateau unriffle 100 4 480 209 380 OK
plateau unriffle 100 8 490 220 390 OK
plateau unriffle 100 16 511 254 411 OK
plateau unriffle 100 32 553 316 453 OK
plateau unriffle 100 64 632 436 532 OK
plateau unriffle 100 128 672 520 572 OK
plateau unriffle_skewed 100 1 472 198 372 OK
plateau unriffle_skewed 100 2 473 200 373 OK
plateau unriffle_skewed 100 4 476 206 376 OK
plateau unriffle_skewed 100 8 484 222 384 OK
plateau unriffle_skewed 100 16 504 262 404 OK
plateau unriffle_skewed 100 32 546 346 446 OK
plateau unriffle_skewed 100 64 628 510 528 OK
plateau unriffle_skewed 100 128 689 632 589 OK
shuffle copy 100 1 472 198 372 OK
shuffle copy 100 2 580 336 480 OK
shuffle copy 100 4 538 291 438 OK
shuffle copy 100 8 501 239 401 OK
shuffle copy 100 16 496 231 396 OK
shuffle copy 100 32 479 207 379 OK
shuffle copy 100 64 472 198 372 OK
shuffle copy 100 128 472 198 372 OK
shuffle reverse 100 1 416 198 316 OK
shuffle reverse 100 2 526 335 426 OK
shuffle reverse 100 4 491 290 391 OK
shuffle reverse 100 8 449 239 349 OK
shuffle reverse 100 16 441 230 341 OK
shuffle reverse 100 32 425 210 325 OK
shuffle reverse 100 64 416 198 316 OK
shuffle reverse 100 128 416 198 316 OK
shuffle reverse_1st_half 100 1 492 200 392 OK
shuffle reverse_1st_half 100 2 591 338 491 OK
shuffle reverse_1st_half 100 4 550 291 450 OK
shuffle reverse_1st_half 100 8 519 240 419 OK
shuffle reverse_1st_half 100 16 515 233 415 OK
shuffle reverse_1st_half 100 32 499 207 399 OK
shuffle reverse_1st_half 100 64 492 200 392 OK
shuffle reverse_1st_half 100 128 492 200 392 OK
shuffle reverse_2nd_half 100 1 470 201 370 OK
shuffle reverse_2nd_half 100 2 571 337 471 OK
shuffle reverse_2nd_half 100 4 541 296 441 OK
shuffle reverse_2nd_half 100 8 503 241 403 OK
shuffle reverse_2nd_half 100 16 496 231 396 OK
shuffle reverse_2nd_half 100 32 477 208 377 OK
shuffle reverse_2nd_half 100 64 470 201 370 OK
shuffle reverse_2nd_half 100 128 470 201 370 OK
shuffle sort 100 1 472 198 372 OK
shuffle sort 100 2 472 198 372 OK
shuffle sort 100 4 472 198 372 OK
shuffle sort 100 8 472 198 372 OK
shuffle sort 100 16 472 198 372 OK
shuffle sort 100 32 472 198 372 OK
shuffle sort 100 64 472 198 372 OK
shuffle sort 100 128 472 198 372 OK
shuffle dither 100 1 481 216 381 OK
shuffle dither 100 2 588 330 488 OK
shuffle dither 100 4 547 295 447 OK
shuffle dither 100 8 513 261 413 OK
shuffle dither 100 16 507 252 407 OK
shuffle dither 100 32 488 226 388 OK
shuffle dither 100 64 481 216 381 OK
shuffle dither 100 128 481 216 381 OK
shuffle unriffle 100 1 672 520 572 OK
shuffle unriffle 100 2 663 429 563 OK
shuffle unriffle 100 4 665 451 565 OK
shuffle unriffle 100 8 669 487 569 OK
shuffle unriffle 100 16 670 498 570 OK
shuffle unriffle 100 32 671 514 571 OK
shuffle unriffle 100 64 672 520 572 OK
shuffle unriffle 100 128 672 520 572 OK
shuffle unriffle_skewed 100 1 689 632 589 OK
shuffle unriffle_skewed 100 2 678 443 578 OK
shuffle unriffle_skewed 100 4 677 492 577 OK
shuffle unriffle_skewed 100 8 681 564 581 OK
shuffle unriffle_skewed 100 16 683 580 583 OK
shuffle unriffle_skewed 100 32 687 617 587 OK
shuffle unriffle_skewed 100 64 689 632 589 OK
shuffle unriffle_skewed 100 128 689 632 589 OK
sawtooth copy 1023 1 6142 2044 5119 OK
sawtooth copy 1023 2 8445 3065 7422 OK
sawtooth copy 1023 4 9213 3573 8190 OK
sawtooth copy 1023 8 9277 3821 8254 OK
sawtooth copy 1023 16 9021 3933 7998 OK
sawtooth copy 1023 32 8621 3965 7598 OK
sawtooth copy 1023 64 8157 3933 7134 OK
sawtooth copy 1023 128 7665 3821 6642 OK
sawtooth copy 1023 256 7161 3573 6138 OK
sawtooth copy 1023 512 6652 3065 5629 OK
sawtooth copy 1023 1024 6142 2044 5119 OK
sawtooth reverse 1023 1 6142 2044 5119 OK
sawtooth reverse 1023 2 8445 3065 7422 OK
sawtooth reverse 1023 4 9467 3828 8444 OK
sawtooth reverse 1023 8 9783 4075 8760 OK
sawtooth reverse 1023 16 9711 4122 8688 OK
sawtooth reverse 1023 32 9423 4089 8400 OK
sawtooth reverse 1023 64 9007 4008 7984 OK
sawtooth reverse 1023 128 8499 3863 7476 OK
sawtooth reverse 1023 256 7895 3594 6872 OK
sawtooth reverse 1023 512 7146 3073 6123 OK
sawtooth reverse 1023 1024 6133 2044 5110 OK
sawtooth reverse_1st_half 1023 1 6142 2044 5119 OK
sawtooth reverse_1st_half 1023 2 8445 3065 7422 OK
sawtooth reverse_1st_half 1023 4 9341 3701 8318 OK
sawtooth reverse_1st_half 1023 8 9533 3949 8510 OK
sawtooth reverse_1st_half 1023 16 9373 4029 8350 OK
sawtooth reverse_1st_half 1023 32 9037 4029 8014 OK
sawtooth reverse_1st_half 1023 64 8613 3973 7590 OK
sawtooth reverse_1st_half 1023 128 8145 3845 7122 OK
sawtooth reverse_1st_half 1023 256 7655 3587 6632 OK
sawtooth reverse_1st_half 1023 512 7154 3073 6131 OK
sawtooth reverse_1st_half 1023 1024 6644 2052 5621 OK
sawtooth reverse_2nd_half 1023 1 6142 2044 5119 OK
sawtooth reverse_2nd_half 1023 2 8444 3063 7421 OK
sawtooth reverse_2nd_half 1023 4 9212 3571 8189 OK
sawtooth reverse_2nd_half 1023 8 9404 3883 8381 OK
sawtooth reverse_2nd_half 1023 16 9276 3995 8253 OK
sawtooth reverse_2nd_half 1023 32 8972 4011 7949 OK
sawtooth reverse_2nd_half 1023 64 8572 3963 7549 OK
sawtooth reverse_2nd_half 1023 128 8120 3839 7097 OK
sawtooth reverse_2nd_half 1023 256 7640 3583 6617 OK
sawtooth reverse_2nd_half 1023 512 7146 3071 6123 OK
sawtooth reverse_2nd_half 1023 1024 6644 2045 5621 OK
sawtooth sort 1023 1 6142 2044 5119 OK
sawtooth sort 1023 2 6142 2044 5119 OK
sawtooth sort 1023 4 6142 2044 5119 OK
sawtooth sort 1023 8 6142 2044 5119 OK
sawtooth sort 1023 16 6142 2044 5119 OK
sawtooth sort 1023 32 6142 2044 5119 OK
sawtooth sort 1023 64 6142 2044 5119 OK
sawtooth sort 1023 128 6142 2044 5119 OK
sawtooth sort 1023 256 6142 2044 5119 OK
sawtooth sort 1023 512 6142 2044 5119 OK
sawtooth sort 1023 1024 6142 2044 5119 OK
sawtooth dither 1023 1 9489 3928 8466 OK
sawtooth dither 1023 2 9805 3899 8782 OK
sawtooth dither 1023 4 9974 4499 8951 OK
sawtooth dither 1023 8 9794 4536 8771 OK
sawtooth dither 1023 16 9428 4683 8405 OK
sawtooth dither 1023 32 8990 4674 7967 OK
sawtooth dither 1023 64 8512 4651 7489 OK
sawtooth dither 1023 128 8019 4530 6996 OK
sawtooth dither 1023 256 7517 4285 6494 OK
sawtooth dither 1023 512 7009 3777 5986 OK
sawtooth dither 1023 1024 6499 2758 5476 OK
sawtooth unriffle 1023 1 6142 2044 5119 OK
sawtooth unriffle 1023 2 6142 2044 5119 OK
sawtooth unriffle 1023 4 6405 2054 5382 OK
sawtooth unriffle 1023 8 6928 2077 5905 OK
sawtooth unriffle 1023 16 7395 2127 6372 OK
sawtooth unriffle 1023 32 7874 2236 6851 OK
sawtooth unriffle 1023 64 8385 2472 7362 OK
sawtooth unriffle 1023 128 8928 2979 7905 OK
sawtooth unriffle 1023 256 9483 4061 8460 OK
sawtooth unriffle 1023 512 9982 6358 8959 OK
sawtooth unriffle 1023 1024 10202 9699 9179 OK
sawtooth unriffle_skewed 1023 1 6142 2044 5119 OK
sawtooth unriffle_skewed 1023 2 6142 2045 5119 OK
sawtooth unriffle_skewed 1023 4 6646 2055 5623 OK
sawtooth unriffle_skewed 1023 8 7023 2069 6000 OK
sawtooth unriffle_skewed 1023 16 7402 2097 6379 OK
sawtooth unriffle_skewed 1023 32 7815 2163 6792 OK
sawtooth unriffle_skewed 1023 64 8262 2323 7239 OK
sawtooth unriffle_skewed 1023 128 8735 2705 7712 OK
sawtooth unriffle_skewed 1023 256 9226 3597 8203 OK
sawtooth unriffle_skewed 1023 512 9729 5639 8706 OK
sawtooth unriffle_skewed 1023 1024 10230 10220 9207 OK
rand copy 1023 1 6142 2044 5119 OK
rand copy 1023 2 8195 2690 7172 OK
rand copy 1023 4 9206 3248 8183 OK
rand copy 1023 8 9596 3792 8573 OK
rand copy 1023 16 9837 4382 8814 OK
rand copy 1023 32 9912 4825 8889 OK
rand copy 1023 64 9904 5179 8881 OK
rand copy 1023 128 9934 5573 8911 OK
rand copy 1023 256 9962 5849 8939 OK
rand copy 1023 512 9937 6037 8914 OK
rand copy 1023 1024 9954 6035 8931 OK
rand reverse 1023 1 6142 2044 5119 OK
rand reverse 1023 2 8183 2696 7160 OK
rand reverse 1023 4 9157 3246 8134 OK
rand reverse 1023 8 9645 3811 8622 OK
rand reverse 1023 16 9818 4350 8795 OK
rand reverse 1023 32 9925 4818 8902 OK
rand reverse 1023 64 9940 5259 8917 OK
rand reverse 1023 128 9958 5650 8935 OK
rand reverse 1023 256 9958 5887 8935 OK
rand reverse 1023 512 9950 6036 8927 OK
rand reverse 1023 1024 9962 6067 8939 OK
rand reverse_1st_half 1023 1 6142 2044 5119 OK
rand reverse_1st_half 1023 2 8144 2690 7121 OK
rand reverse_1st_half 1023 4 9188 3229 8165 OK
rand reverse_1st_half 1023 8 9620 3786 8597 OK
rand reverse_1st_half 1023 16 9823 4359 8800 OK
rand reverse_1st_half 1023 32 9904 4805 8881 OK
rand reverse_1st_half 1023 64 9923 5230 8900 OK
rand reverse_1st_half 1023 128 9939 5601 8916 OK
rand reverse_1st_half 1023 256 9950 5844 8927 OK
rand reverse_1st_half 1023 512 9939 6045 8916 OK
rand reverse_1st_half 1023 1024 9963 6079 8940 OK
rand reverse_2nd_half 1023 1 6142 2044 5119 OK
rand reverse_2nd_half 1023 2 8206 2679 7183 OK
rand reverse_2nd_half 1023 4 9175 3261 8152 OK
rand reverse_2nd_half 1023 8 9603 3788 8580 OK
rand reverse_2nd_half 1023 16 9837 4367 8814 OK
rand reverse_2nd_half 1023 32 9905 4836 8882 OK
rand reverse_2nd_half 1023 64 9911 5215 8888 OK
rand reverse_2nd_half 1023 128 9937 5603 8914 OK
rand reverse_2nd_half 1023 256 9954 5843 8931 OK
rand reverse_2nd_half 1023 512 9946 5993 8923 OK
rand reverse_2nd_half 1023 1024 9966 6046 8943 OK
rand sort 1023 1 6142 2044 5119 OK
rand sort 1023 2 6142 2044 5119 OK
rand sort 1023 4 6142 2044 5119 OK
rand sort 1023 8 6142 2044 5119 OK
rand sort 1023 16 6142 2044 5119 OK
rand sort 1023 32 6142 2044 5119 OK
rand sort 1023 64 6142 2044 5119 OK
rand sort 1023 128 6142 2044 5119 OK
rand sort 1023 256 6142 2044 5119 OK
rand sort 1023 512 6142 2044 5119 OK
rand sort 1023 1024 6142 2044 5119 OK
rand dither 1023 1 9489 3928 8466 OK
rand dither 1023 2 9737 3633 8714 OK
rand dither 1023 4 9862 3780 8839 OK
rand dither 1023 8 9905 4048 8882 OK
rand dither 1023 16 9968 4471 8945 OK
rand dither 1023 32 9985 4884 8962 OK
rand dither 1023 64 9930 5288 8907 OK
rand dither 1023 128 9947 5611 8924 OK
rand dither 1023 256 9950 5888 8927 OK
rand dither 1023 512 9932 6002 8909 OK
rand dither 1023 1024 9953 6055 8930 OK
rand unriffle 1023 1 6142 2044 5119 OK
rand unriffle 1023 2 8210 2680 7187 OK
rand unriffle 1023 4 9188 3287 8165 OK
rand unriffle 1023 8 9612 3784 8589 OK
rand unriffle 1023 16 9802 4407 8779 OK
rand unriffle 1023 32 9915 4860 8892 OK
rand unriffle 1023 64 9945 5299 8922 OK
rand unriffle 1023 128 9989 5659 8966 OK
rand unriffle 1023 256 9919 5898 8896 OK
rand unriffle 1023 512 9960 6084 8937 OK
rand unriffle 1023 1024 9910 6009 8887 OK
rand unriffle_skewed 1023 1 6142 2044 5119 OK
rand unriffle_skewed 1023 2 8212 2683 7189 OK
rand unriffle_skewed 1023 4 9199 3270 8176 OK
rand unriffle_skewed 1023 8 9621 3855 8598 OK
rand unriffle_skewed 1023 16 9815 4403 8792 OK
rand unriffle_skewed 1023 32 9928 4895 8905 OK
rand unriffle_skewed 1023 64 9953 5302 8930 OK
rand unriffle_skewed 1023 128 9967 5622 8944 OK
rand unriffle_skewed 1023 256 9940 5918 8917 OK
rand unriffle_skewed 1023 512 9952 6070 8929 OK
rand unriffle_skewed 1023 1024 9917 6078 8894 OK
stagger copy 1023 1 6652 3065 5629 OK
stagger copy 1023 2 7335 3419 6312 OK
stagger copy 1023 4 7767 4108 6744 OK
stagger copy 1023 8 8221 4795 7198 OK
stagger copy 1023 16 8681 5191 7658 OK
stagger copy 1023 32 9044 4062 8021 OK
stagger copy 1023 64 9475 6711 8452 OK
stagger copy 1023 128 9740 6263 8717 OK
stagger copy 1023 256 9711 5691 8688 OK
stagger copy 1023 512 9040 4436 8017 OK
stagger copy 1023 1024 6652 3065 5629 OK
stagger reverse 1023 1 7145 3072 6122 OK
stagger reverse 1023 2 7316 3417 6293 OK
stagger reverse 1023 4 7738 4107 6715 OK
stagger reverse 1023 8 8187 4571 7164 OK
stagger reverse 1023 16 8610 5179 7587 OK
stagger reverse 1023 32 9029 4002 8006 OK
stagger reverse 1023 64 9498 6718 8475 OK
stagger reverse 1023 128 9788 6529 8765 OK
stagger reverse 1023 256 9752 5740 8729 OK
stagger reverse 1023 512 9029 4430 8006 OK
stagger reverse 1023 1024 7145 3072 6122 OK
stagger reverse_1st_half 1023 1 7154 3073 6131 OK
stagger reverse_1st_half 1023 2 7491 3423 6468 OK
stagger reverse_1st_half 1023 4 7851 4113 6828 OK
stagger reverse_1st_half 1023 8 8256 4683 7233 OK
stagger reverse_1st_half 1023 16 8673 5192 7650 OK
stagger reverse_1st_half 1023 32 9055 4036 8032 OK
stagger reverse_1st_half 1023 64 9492 6715 8469 OK
stagger reverse_1st_half 1023 128 9766 6396 8743 OK
stagger reverse_1st_half 1023 256 9732 5715 8709 OK
stagger reverse_1st_half 1023 512 9035 4434 8012 OK
stagger reverse_1st_half 1023 1024 7154 3073 6131 OK
stagger reverse_2nd_half 1023 1 7146 3071 6123 OK
stagger reverse_2nd_half 1023 2 7399 3416 6376 OK
stagger reverse_2nd_half 1023 4 7766 4106 6743 OK
stagger reverse_2nd_half 1023 8 8185 4679 7162 OK
stagger reverse_2nd_half 1023 16 8666 5184 7643 OK
stagger reverse_2nd_half 1023 32 9040 4032 8017 OK
stagger reverse_2nd_half 1023 64 9491 6710 8468 OK
stagger reverse_2nd_half 1023 128 9752 6386 8729 OK
stagger reverse_2nd_half 1023 256 9707 5691 8684 OK
stagger reverse_2nd_half 1023 512 9027 4431 8004 OK
stagger reverse_2nd_half 1023 1024 7146 3071 6123 OK
stagger sort 1023 1 6142 2044 5119 OK
stagger sort 1023 2 6142 2044 5119 OK
stagger sort 1023 4 6142 2044 5119 OK
stagger sort 1023 8 6142 2044 5119 OK
stagger sort 1023 16 6142 2044 5119 OK
stagger sort 1023 32 6142 2044 5119 OK
stagger sort 1023 64 6142 2044 5119 OK
stagger sort 1023 128 6142 2044 5119 OK
stagger sort 1023 256 6142 2044 5119 OK
stagger sort 1023 512 6142 2044 5119 OK
stagger sort 1023 1024 6142 2044 5119 OK
stagger dither 1023 1 6754 3064 5731 OK
stagger dither 1023 2 7436 3350 6413 OK
stagger dither 1023 4 7767 3784 6744 OK
stagger dither 1023 8 8221 4479 7198 OK
stagger dither 1023 16 8680 4974 7657 OK
stagger dither 1023 32 9085 5227 8062 OK
stagger dither 1023 64 9474 6300 8451 OK
stagger dither 1023 128 9740 6305 8717 OK
stagger dither 1023 256 9712 5224 8689 OK
stagger dither 1023 512 9040 3893 8017 OK
stagger dither 1023 1024 6754 3064 5731 OK
stagger unriffle 1023 1 9982 6358 8959 OK
stagger unriffle 1023 2 10095 8347 9072 OK
stagger unriffle 1023 4 10024 8213 9001 OK
stagger unriffle 1023 8 10106 8423 9083 OK
stagger unriffle 1023 16 10092 8643 9069 OK
stagger unriffle 1023 32 10026 6285 9003 OK
stagger unriffle 1023 64 10061 8542 9038 OK
stagger unriffle 1023 128 10054 8456 9031 OK
stagger unriffle 1023 256 10042 7781 9019 OK
stagger unriffle 1023 512 10050 7574 9027 OK
stagger unriffle 1023 1024 9982 6358 8959 OK
stagger unriffle_skewed 1023 1 9729 5639 8706 OK
stagger unriffle_skewed 1023 2 10227 9515 9204 OK
stagger unriffle_skewed 1023 4 10226 9370 9203 OK
stagger unriffle_skewed 1023 8 10226 9279 9203 OK
stagger unriffle_skewed 1023 16 10223 9462 9200 OK
stagger unriffle_skewed 1023 32 10172 6960 9149 OK
stagger unriffle_skewed 1023 64 10223 9240 9200 OK
stagger unriffle_skewed 1023 128 10217 9057 9194 OK
stagger unriffle_skewed 1023 256 10197 8156 9174 OK
stagger unriffle_skewed 1023 512 10103 7619 9080 OK
stagger unriffle_skewed 1023 1024 9729 5639 8706 OK
plateau copy 1023 1 6142 2044 5119 OK
plateau copy 1023 2 6142 2044 5119 OK
plateau copy 1023 4 6142 2044 5119 OK
plateau copy 1023 8 6142 2044 5119 OK
plateau copy 1023 16 6142 2044 5119 OK
plateau copy 1023 32 6142 2044 5119 OK
plateau copy 1023 64 6142 2044 5119 OK
plateau copy 1023 128 6142 2044 5119 OK
plateau copy 1023 256 6142 2044 5119 OK
plateau copy 1023 512 6142 2044 5119 OK
plateau copy 1023 1024 6142 2044 5119 OK
plateau reverse 1023 1 6149 2052 5126 OK
plateau reverse 1023 2 6157 2052 5134 OK
plateau reverse 1023 4 6169 2052 5146 OK
plateau reverse 1023 8 6189 2052 5166 OK
plateau reverse 1023 16 6221 2052 5198 OK
plateau reverse 1023 32 6269 2052 5246 OK
plateau reverse 1023 64 6333 2052 5310 OK
plateau reverse 1023 128 6397 2052 5374 OK
plateau reverse 1023 256 6397 2052 5374 OK
plateau reverse 1023 512 6141 2052 5118 OK
plateau reverse 1023 1024 6133 2044 5110 OK
plateau reverse_1st_half 1023 1 6150 2052 5127 OK
plateau reverse_1st_half 1023 2 6157 2052 5134 OK
plateau reverse_1st_half 1023 4 6171 2053 5148 OK
plateau reverse_1st_half 1023 8 6195 2054 5172 OK
plateau reverse_1st_half 1023 16 6235 2055 5212 OK
plateau reverse_1st_half 1023 32 6299 2056 5276 OK
plateau reverse_1st_half 1023 64 6395 2057 5372 OK
plateau reverse_1st_half 1023 128 6523 2058 5500 OK
plateau reverse_1st_half 1023 256 6651 2059 5628 OK
plateau reverse_1st_half 1023 512 6644 2052 5621 OK
plateau reverse_1st_half 1023 1024 6644 2052 5621 OK
plateau reverse_2nd_half 1023 1 6142 2044 5119 OK
plateau reverse_2nd_half 1023 2 6142 2044 5119 OK
plateau reverse_2nd_half 1023 4 6142 2044 5119 OK
plateau reverse_2nd_half 1023 8 6142 2044 5119 OK
plateau reverse_2nd_half 1023 16 6142 2044 5119 OK
plateau reverse_2nd_half 1023 32 6142 2044 5119 OK
plateau reverse_2nd_half 1023 64 6142 2044 5119 OK
plateau reverse_2nd_half 1023 128 6142 2044 5119 OK
plateau reverse_2nd_half 1023 256 6142 2044 5119 OK
plateau reverse_2nd_half 1023 512 6149 2053 5126 OK
plateau reverse_2nd_half 1023 1024 6644 2045 5621 OK
plateau sort 1023 1 6142 2044 5119 OK
plateau sort 1023 2 6142 2044 5119 OK
plateau sort 1023 4 6142 2044 5119 OK
plateau sort 1023 8 6142 2044 5119 OK
plateau sort 1023 16 6142 2044 5119 OK
plateau sort 1023 32 6142 2044 5119 OK
plateau sort 1023 64 6142 2044 5119 OK
plateau sort 1023 128 6142 2044 5119 OK
plateau sort 1023 256 6142 2044 5119 OK
plateau sort 1023 512 6142 2044 5119 OK
plateau sort 1023 1024 6142 2044 5119 OK
plateau dither 1023 1 9489 3928 8466 OK
plateau dither 1023 2 9489 3926 8466 OK
plateau dither 1023 4 9488 3922 8465 OK
plateau dither 1023 8 9483 3919 8460 OK
plateau dither 1023 16 9473 3908 8450 OK
plateau dither 1023 32 9439 3891 8416 OK
plateau dither 1023 64 9377 3854 8354 OK
plateau dither 1023 128 9190 3781 8167 OK
plateau dither 1023 256 8841 3632 7818 OK
plateau dither 1023 512 7888 3339 6865 OK
plateau dither 1023 1024 6499 2758 5476 OK
plateau unriffle 1023 1 6142 2044 5119 OK
plateau unriffle 1023 2 6150 2053 5127 OK
plateau unriffle 1023 4 6164 2069 5141 OK
plateau unriffle 1023 8 6190 2100 5167 OK
plateau unriffle 1023 16 6239 2162 5216 OK
plateau unriffle 1023 32 6331 2287 5308 OK
plateau unriffle 1023 64 6502 2539 5479 OK
plateau unriffle 1023 128 6816 3046 5793 OK
plateau unriffle 1023 256 7385 4064 6362 OK
plateau unriffle 1023 512 8410 6114 7387 OK
plateau unriffle 1023 1024 10202 9699 9179 OK
plateau unriffle_skewed 1023 1 6142 2044 5119 OK
plateau unriffle_skewed 1023 2 6143 2046 5120 OK
plateau unriffle_skewed 1023 4 6145 2050 5122 OK
plateau unriffle_skewed 1023 8 6152 2064 5129 OK
plateau unriffle_skewed 1023 16 6171 2102 5148 OK
plateau unriffle_skewed 1023 32 6218 2196 5195 OK
plateau unriffle_skewed 1023 64 6329 2418 5306 OK
plateau unriffle_skewed 1023 128 6584 2928 5561 OK
plateau unriffle_skewed 1023 256 7159 4078 6136 OK
plateau unriffle_skewed 1023 512 8437 6634 7414 OK
plateau unriffle_skewed 1023 1024 10230 10220 9207 OK
shuffle copy 1023 1 6142 2044 5119 OK
shuffle copy 1023 2 7497 3576 6474 OK
shuffle copy 1023 4 7244 3040 6221 OK
shuffle copy 1023 8 6612 2523 5589 OK
shuffle copy 1023 16 6379 2307 5356 OK
shuffle copy 1023 32 6270 2195 5247 OK
shuffle copy 1023 64 6210 2130 5187 OK
shuffle copy 1023 128 6171 2080 5148 OK
shuffle copy 1023 256 6153 2055 5130 OK
shuffle copy 1023 512 6153 2055 5130 OK
shuffle copy 1023 1024 6153 2055 5130 OK
shuffle reverse 1023 1 6133 2044 5110 OK
shuffle reverse 1023 2 7496 3577 6473 OK
shuffle reverse 1023 4 7221 3022 6198 OK
shuffle reverse 1023 8 6612 2528 5589 OK
shuffle reverse 1023 16 6376 2315 5353 OK
shuffle reverse 1023 32 6263 2199 5240 OK
shuffle reverse 1023 64 6204 2133 5181 OK
shuffle reverse 1023 128 6163 2081 5140 OK
shuffle reverse 1023 256 6144 2055 5121 OK
shuffle reverse 1023 512 6144 2055 5121 OK
shuffle reverse 1023 1024 6144 2055 5121 OK
shuffle reverse_1st_half 1023 1 6644 2052 5621 OK
shuffle reverse_1st_half 1023 2 7894 3589 6871 OK
shuffle reverse_1st_half 1023 4 7362 3038 6339 OK
shuffle reverse_1st_half 1023 8 7062 2533 6039 OK
shuffle reverse_1st_half 1023 16 6857 2322 5834 OK
shuffle reverse_1st_half 1023 32 6760 2205 5737 OK
shuffle reverse_1st_half 1023 64 6708 2139 5685 OK
shuffle reverse_1st_half 1023 128 6669 2088 5646 OK
shuffle reverse_1st_half 1023 256 6653 2063 5630 OK
shuffle reverse_1st_half 1023 512 6653 2063 5630 OK
shuffle reverse_1st_half 1023 1024 6653 2063 5630 OK
shuffle reverse_2nd_half 1023 1 6644 2045 5621 OK
shuffle reverse_2nd_half 1023 2 7996 3584 6973 OK
shuffle reverse_2nd_half 1023 4 7634 3048 6611 OK
shuffle reverse_2nd_half 1023 8 7079 2535 6056 OK
shuffle reverse_2nd_half 1023 16 6862 2314 5839 OK
shuffle reverse_2nd_half 1023 32 6759 2197 5736 OK
shuffle reverse_2nd_half 1023 64 6706 2133 5683 OK
shuffle reverse_2nd_half 1023 128 6673 2083 5650 OK
shuffle reverse_2nd_half 1023 256 6655 2056 5632 OK
shuffle reverse_2nd_half 1023 512 6655 2056 5632 OK
shuffle reverse_2nd_half 1023 1024 6655 2056 5632 OK
shuffle sort 1023 1 6142 2044 5119 OK
shuffle sort 1023 2 6142 2044 5119 OK
shuffle sort 1023 4 6142 2044 5119 OK
shuffle sort 1023 8 6142 2044 5119 OK
shuffle sort 1023 16 6142 2044 5119 OK
shuffle sort 1023 32 6142 2044 5119 OK
shuffle sort 1023 64 6142 2044 5119 OK
shuffle sort 1023 128 6142 2044 5119 OK
shuffle sort 1023 256 6142 2044 5119 OK
shuffle sort 1023 512 6142 2044 5119 OK
shuffle sort 1023 1024 6142 2044 5119 OK
shuffle dither 1023 1 6244 2248 5221 OK
shuffle dither 1023 2 7567 3486 6544 OK
shuffle dither 1023 4 7334 3098 6311 OK
shuffle dither 1023 8 6717 2690 5694 OK
shuffle dither 1023 16 6481 2488 5458 OK
shuffle dither 1023 32 6369 2385 5346 OK
shuffle dither 1023 64 6312 2329 5289 OK
shuffle dither 1023 128 6274 2285 5251 OK
shuffle dither 1023 256 6255 2260 5232 OK
shuffle dither 1023 512 6255 2260 5232 OK
shuffle dither 1023 1024 6255 2260 5232 OK
shuffle unriffle 1023 1 10202 9699 9179 OK
shuffle unriffle 1023 2 10186 7254 9163 OK
shuffle unriffle 1023 4 10130 7475 9107 OK
shuffle unriffle 1023 8 10164 8557 9141 OK
shuffle unriffle 1023 16 10181 9100 9158 OK
shuffle unriffle 1023 32 10196 9393 9173 OK
shuffle unriffle 1023 64 10198 9542 9175 OK
shuffle unriffle 1023 128 10202 9642 9179 OK
shuffle unriffle 1023 256 10202 9684 9179 OK
shuffle unriffle 1023 512 10202 9684 9179 OK
shuffle unriffle 1023 1024 10202 9684 9179 OK
shuffle unriffle_skewed 1023 1 10230 10220 9207 OK
shuffle unriffle_skewed 1023 2 10201 7717 9178 OK
shuffle unriffle_skewed 1023 4 10132 7614 9109 OK
shuffle unriffle_skewed 1023 8 10187 8860 9164 OK
shuffle unriffle_skewed 1023 16 10205 9501 9182 OK
shuffle unriffle_skewed 1023 32 10217 9842 9194 OK
shuffle unriffle_skewed 1023 64 10221 10019 9198 OK
shuffle unriffle_skewed 1023 128 10228 10137 9205 OK
shuffle unriffle_skewed 1023 256 10230 10199 9207 OK
shuffle unriffle_skewed 1023 512 10230 10199 9207 OK
shuffle unriffle_skewed 1023 1024 10230 10199 9207 OK
sawtooth copy 1024 1 6144 2046 5120 OK
sawtooth copy 1024 2 8448 3068 7424 OK
sawtooth copy 1024 4 9216 3576 8192 OK
sawtooth copy 1024 8 9280 3824 8256 OK
sawtooth copy 1024 16 9024 3936 8000 OK
sawtooth copy 1024 32 8624 3968 7600 OK
sawtooth copy 1024 64 8160 3936 7136 OK
sawtooth copy 1024 128 7668 3824 6644 OK
sawtooth copy 1024 256 7164 3576 6140 OK
sawtooth copy 1024 512 6655 3068 5631 OK
sawtooth copy 1024 1024 6144 2046 5120 OK
sawtooth reverse 1024 1 6144 2046 5120 OK
sawtooth reverse 1024 2 8448 3068 7424 OK
sawtooth reverse 1024 4 9216 3576 8192 OK
sawtooth reverse 1024 8 9280 3824 8256 OK
sawtooth reverse 1024 16 9024 3936 8000 OK
sawtooth reverse 1024 32 8624 3968 7600 OK
sawtooth reverse 1024 64 8160 3936 7136 OK
sawtooth reverse 1024 128 7668 3824 6644 OK
sawtooth reverse 1024 256 7164 3576 6140 OK
sawtooth reverse 1024 512 6655 3068 5631 OK
sawtooth reverse 1024 1024 6144 2046 5120 OK
sawtooth reverse_1st_half 1024 1 6144 2046 5120 OK
sawtooth reverse_1st_half 1024 2 8448 3068 7424 OK
sawtooth reverse_1st_half 1024 4 9216 3576 8192 OK
sawtooth reverse_1st_half 1024 8 9280 3824 8256 OK
sawtooth reverse_1st_half 1024 16 9024 3936 8000 OK
sawtooth reverse_1st_half 1024 32 8624 3968 7600 OK
sawtooth reverse_1st_half 1024 64 8160 3936 7136 OK
sawtooth reverse_1st_half 1024 128 7668 3824 6644 OK
sawtooth reverse_1st_half 1024 256 7164 3576 6140 OK
sawtooth reverse_1st_half 1024 512 6655 3068 5631 OK
sawtooth reverse_1st_half 1024 1024 6144 2046 5120 OK
sawtooth reverse_2nd_half 1024 1 6144 2046 5120 OK
sawtooth reverse_2nd_half 1024 2 8448 3068 7424 OK
sawtooth reverse_2nd_half 1024 4 9216 3576 8192 OK
sawtooth reverse_2nd_half 1024 8 9280 3824 8256 OK
sawtooth reverse_2nd_half 1024 16 9024 3936 8000 OK
sawtooth reverse_2nd_half 1024 32 8624 3968 7600 OK
sawtooth reverse_2nd_half 1024 64 8160 3936 7136 OK
sawtooth reverse_2nd_half 1024 128 7668 3824 6644 OK
sawtooth reverse_2nd_half 1024 256 7164 3576 6140 OK
sawtooth reverse_2nd_half 1024 512 6655 3068 5631 OK
sawtooth reverse_2nd_half 1024 1024 6144 2046 5120 OK
sawtooth sort 1024 1 6144 2046 5120 OK
sawtooth sort 1024 2 6144 2046 5120 OK
sawtooth sort 1024 4 6144 2046 5120 OK
sawtooth sort 1024 8 6144 2046 5120 OK
sawtooth sort 1024 16 6144 2046 5120 OK
sawtooth sort 1024 32 6144 2046 5120 OK
sawtooth sort 1024 64 6144 2046 5120 OK
sawtooth sort 1024 128 6144 2046 5120 OK
sawtooth sort 1024 256 6144 2046 5120 OK
sawtooth sort 1024 512 6144 2046 5120 OK
sawtooth sort 1024 1024 6144 2046 5120 OK
sawtooth dither 1024 1 9500 3932 8476 OK
sawtooth dither 1024 2 9817 3905 8793 OK
sawtooth dither 1024 4 9984 4503 8960 OK
sawtooth dither 1024 8 9802 4539 8778 OK
sawtooth dither 1024 16 9436 4687 8412 OK
sawtooth dither 1024 32 8997 4679 7973 OK
sawtooth dither 1024 64 8518 4655 7494 OK
sawtooth dither 1024 128 8023 4533 6999 OK
sawtooth dither 1024 256 7521 4289 6497 OK
sawtooth dither 1024 512 7012 3780 5988 OK
sawtooth dither 1024 1024 6501 2760 5477 OK
sawtooth unriffle 1024 1 6144 2046 5120 OK
sawtooth unriffle 1024 2 6144 2046 5120 OK
sawtooth unriffle 1024 4 6400 2048 5376 OK
sawtooth unriffle 1024 8 6784 2056 5760 OK
sawtooth unriffle 1024 16 7232 2080 6208 OK
sawtooth unriffle 1024 32 7712 2144 6688 OK
sawtooth unriffle 1024 64 8208 2304 7184 OK
sawtooth unriffle 1024 128 8712 2688 7688 OK
sawtooth unriffle 1024 256 9220 3584 8196 OK
sawtooth unriffle 1024 512 9730 5632 8706 OK
sawtooth unriffle 1024 1024 10241 10240 9217 OK
sawtooth unriffle_skewed 1024 1 6144 2046 5120 OK
sawtooth unriffle_skewed 1024 2 6144 2046 5120 OK
sawtooth unriffle_skewed 1024 4 6400 2048 5376 OK
sawtooth unriffle_skewed 1024 8 6784 2056 5760 OK
sawtooth unriffle_skewed 1024 16 7232 2080 6208 OK
sawtooth unriffle_skewed 1024 32 7712 2144 6688 OK
sawtooth unriffle_skewed 1024 64 8208 2304 7184 OK
sawtooth unriffle_skewed 1024 128 8712 2688 7688 OK
sawtooth unriffle_skewed 1024 256 9220 3584 8196 OK
sawtooth unriffle_skewed 1024 512 9730 5632 8706 OK
sawtooth unriffle_skewed 1024 1024 10241 10240 9217 OK
rand copy 1024 1 6144 2046 5120 OK
rand copy 1024 2 8197 2692 7173 OK
rand copy 1024 4 9211 3252 8187 OK
rand copy 1024 8 9607 3796 8583 OK
rand copy 1024 16 9849 4388 8825 OK
rand copy 1024 32 9924 4831 8900 OK
rand copy 1024 64 9914 5184 8890 OK
rand copy 1024 128 9945 5580 8921 OK
rand copy 1024 256 9973 5856 8949 OK
rand copy 1024 512 9948 6043 8924 OK
rand copy 1024 1024 9965 6041 8941 OK
rand reverse 1024 1 6144 2046 5120 OK
rand reverse 1024 2 8197 2694 7173 OK
rand reverse 1024 4 9139 3247 8115 OK
rand reverse 1024 8 9624 3844 8600 OK
rand reverse 1024 16 9846 4386 8822 OK
rand reverse 1024 32 9948 4801 8924 OK
rand reverse 1024 64 9941 5244 8917 OK
rand reverse 1024 128 9946 5603 8922 OK
rand reverse 1024 256 9973 5843 8949 OK
rand reverse 1024 512 9949 6011 8925 OK
rand reverse 1024 1024 9965 6025 8941 OK
rand reverse_1st_half 1024 1 6144 2046 5120 OK
rand reverse_1st_half 1024 2 8149 2693 7125 OK
rand reverse_1st_half 1024 4 9171 3229 8147 OK
rand reverse_1st_half 1024 8 9613 3800 8589 OK
rand reverse_1st_half 1024 16 9840 4379 8816 OK
rand reverse_1st_half 1024 32 9923 4802 8899 OK
rand reverse_1st_half 1024 64 9913 5200 8889 OK
rand reverse_1st_half 1024 128 9936 5574 8912 OK
rand reverse_1st_half 1024 256 9973 5834 8949 OK
rand reverse_1st_half 1024 512 9945 6036 8921 OK
rand reverse_1st_half 1024 1024 9963 6044 8939 OK
rand reverse_2nd_half 1024 1 6144 2046 5120 OK
rand reverse_2nd_half 1024 2 8243 2693 7219 OK
rand reverse_2nd_half 1024 4 9197 3270 8173 OK
rand reverse_2nd_half 1024 8 9620 3840 8596 OK
rand reverse_2nd_half 1024 16 9861 4395 8837 OK
rand reverse_2nd_half 1024 32 9940 4830 8916 OK
rand reverse_2nd_half 1024 64 9938 5228 8914 OK
rand reverse_2nd_half 1024 128 9950 5609 8926 OK
rand reverse_2nd_half 1024 256 9971 5860 8947 OK
rand reverse_2nd_half 1024 512 9950 6019 8926 OK
rand reverse_2nd_half 1024 1024 9966 6033 8942 OK
rand sort 1024 1 6144 2046 5120 OK
rand sort 1024 2 6144 2046 5120 OK
rand sort 1024 4 6144 2046 5120 OK
rand sort 1024 8 6144 2046 5120 OK
rand sort 1024 16 6144 2046 5120 OK
rand sort 1024 32 6144 2046 5120 OK
rand sort 1024 64 6144 2046 5120 OK
rand sort 1024 128 6144 2046 5120 OK
rand sort 1024 256 6144 2046 5120 OK
rand sort 1024 512 6144 2046 5120 OK
rand sort 1024 1024 6144 2046 5120 OK
rand dither 1024 1 9500 3932 8476 OK
rand dither 1024 2 9747 3637 8723 OK
rand dither 1024 4 9872 3784 8848 OK
rand dither 1024 8 9915 4054 8891 OK
rand dither 1024 16 9980 4474 8956 OK
rand dither 1024 32 9997 4889 8973 OK
rand dither 1024 64 9940 5293 8916 OK
rand dither 1024 128 9957 5616 8933 OK
rand dither 1024 256 9961 5895 8937 OK
rand dither 1024 512 9943 6006 8919 OK
rand dither 1024 1024 9964 6059 8940 OK
rand unriffle 1024 1 6144 2046 5120 OK
rand unriffle 1024 2 8192 2687 7168 OK
rand unriffle 1024 4 9200 3272 8176 OK
rand unriffle 1024 8 9630 3851 8606 OK
rand unriffle 1024 16 9816 4400 8792 OK
rand unriffle 1024 32 9939 4898 8915 OK
rand unriffle 1024 64 9960 5298 8936 OK
rand unriffle 1024 128 9977 5638 8953 OK
rand unriffle 1024 256 9955 5956 8931 OK
rand unriffle 1024 512 9965 6078 8941 OK
rand unriffle 1024 1024 9933 6100 8909 OK
rand unriffle_skewed 1024 1 6144 2046 5120 OK
rand unriffle_skewed 1024 2 8192 2687 7168 OK
rand unriffle_skewed 1024 4 9200 3272 8176 OK
rand unriffle_skewed 1024 8 9630 3851 8606 OK
rand unriffle_skewed 1024 16 9816 4400 8792 OK
rand unriffle_skewed 1024 32 9939 4898 8915 OK
rand unriffle_skewed 1024 64 9960 5298 8936 OK
rand unriffle_skewed 1024 128 9977 5638 8953 OK
rand unriffle_skewed 1024 256 9955 5956 8931 OK
rand unriffle_skewed 1024 512 9965 6078 8941 OK
rand unriffle_skewed 1024 1024 9933 6100 8909 OK
stagger copy 1024 1 6655 3068 5631 OK
stagger copy 1024 2 7327 3421 6303 OK
stagger copy 1024 4 7760 3702 6736 OK
stagger copy 1024 8 8207 4575 7183 OK
stagger copy 1024 16 8652 5064 7628 OK
stagger copy 1024 32 9040 4009 8016 OK
stagger copy 1024 64 9472 5486 8448 OK
stagger copy 1024 128 9716 5653 8692 OK
stagger copy 1024 256 9596 5212 8572 OK
stagger copy 1024 512 8703 4087 7679 OK
stagger copy 1024 1024 6144 2046 5120 OK
stagger reverse 1024 1 6655 3068 5631 OK
stagger reverse 1024 2 7327 3421 6303 OK
stagger reverse 1024 4 7760 3702 6736 OK
stagger reverse 1024 8 8207 4575 7183 OK
stagger reverse 1024 16 8652 5064 7628 OK
stagger reverse 1024 32 9040 4009 8016 OK
stagger reverse 1024 64 9472 5486 8448 OK
stagger reverse 1024 128 9716 5653 8692 OK
stagger reverse 1024 256 9596 5212 8572 OK
stagger reverse 1024 512 8703 4087 7679 OK
stagger reverse 1024 1024 6144 2046 5120 OK
stagger reverse_1st_half 1024 1 6655 3068 5631 OK
stagger reverse_1st_half 1024 2 7327 3421 6303 OK
stagger reverse_1st_half 1024 4 7760 3702 6736 OK
stagger reverse_1st_half 1024 8 8207 4575 7183 OK
stagger reverse_1st_half 1024 16 8652 5064 7628 OK
stagger reverse_1st_half 1024 32 9040 4009 8016 OK
stagger reverse_1st_half 1024 64 9472 5486 8448 OK
stagger reverse_1st_half 1024 128 9716 5653 8692 OK
stagger reverse_1st_half 1024 256 9596 5212 8572 OK
stagger reverse_1st_half 1024 512 8703 4087 7679 OK
stagger reverse_1st_half 1024 1024 6144 2046 5120 OK
stagger reverse_2nd_half 1024 1 6655 3068 5631 OK
stagger reverse_2nd_half 1024 2 7327 3421 6303 OK
stagger reverse_2nd_half 1024 4 7760 3702 6736 OK
stagger reverse_2nd_half 1024 8 8207 4575 7183 OK
stagger reverse_2nd_half 1024 16 8652 5064 7628 OK
stagger reverse_2nd_half 1024 32 9040 4009 8016 OK
stagger reverse_2nd_half 1024 64 9472 5486 8448 OK
stagger reverse_2nd_half 1024 128 9716 5653 8692 OK
stagger reverse_2nd_half 1024 256 9596 5212 8572 OK
stagger reverse_2nd_half 1024 512 8703 4087 7679 OK
stagger reverse_2nd_half 1024 1024 6144 2046 5120 OK
stagger sort 1024 1 6144 2046 5120 OK
stagger sort 1024 2 6144 2046 5120 OK
stagger sort 1024 4 6144 2046 5120 OK
stagger sort 1024 8 6144 2046 5120 OK
stagger sort 1024 16 6144 2046 5120 OK
stagger sort 1024 32 6144 2046 5120 OK
stagger sort 1024 64 6144 2046 5120 OK
stagger sort 1024 128 6144 2046 5120 OK
stagger sort 1024 256 6144 2046 5120 OK
stagger sort 1024 512 6144 2046 5120 OK
stagger sort 1024 1024 6144 2046 5120 OK
stagger dither 1024 1 6757 3068 5733 OK
stagger dither 1024 2 7428 3353 6404 OK
stagger dither 1024 4 7760 3382 6736 OK
stagger dither 1024 8 8207 4575 7183 OK
stagger dither 1024 16 8651 5326 7627 OK
stagger dither 1024 32 9067 4079 8043 OK
stagger dither 1024 64 9477 5817 8453 OK
stagger dither 1024 128 9717 5726 8693 OK
stagger dither 1024 256 9596 5212 8572 OK
stagger dither 1024 512 8806 4193 7782 OK
stagger dither 1024 1024 6501 2760 5477 OK
stagger unriffle 1024 1 9730 5632 8706 OK
stagger unriffle 1024 2 10241 10240 9217 OK
stagger unriffle 1024 4 10241 10240 9217 OK
stagger unriffle 1024 8 10241 10240 9217 OK
stagger unriffle 1024 16 10241 10240 9217 OK
stagger unriffle 1024 32 10241 10240 9217 OK
stagger unriffle 1024 64 10241 10240 9217 OK
stagger unriffle 1024 128 10241 10240 9217 OK
stagger unriffle 1024 256 10241 10240 9217 OK
stagger unriffle 1024 512 10241 10240 9217 OK
stagger unriffle 1024 1024 10241 10240 9217 OK
stagger unriffle_skewed 1024 1 9730 5632 8706 OK
stagger unriffle_skewed 1024 2 10241 10240 9217 OK
stagger unriffle_skewed 1024 4 10241 10240 9217 OK
stagger unriffle_skewed 1024 8 10241 10240 9217 OK
stagger unriffle_skewed 1024 16 10241 10240 9217 OK
stagger unriffle_skewed 1024 32 10241 10240 9217 OK
stagger unriffle_skewed 1024 64 10241 10240 9217 OK
stagger unriffle_skewed 1024 128 10241 10240 9217 OK
stagger unriffle_skewed 1024 256 10241 10240 9217 OK
stagger unriffle_skewed 1024 512 10241 10240 9217 OK
stagger unriffle_skewed 1024 1024 10241 10240 9217 OK
plateau copy 1024 1 6144 2046 5120 OK
plateau copy 1024 2 6144 2046 5120 OK
plateau copy 1024 4 6144 2046 5120 OK
plateau copy 1024 8 6144 2046 5120 OK
plateau copy 1024 16 6144 2046 5120 OK
plateau copy 1024 32 6144 2046 5120 OK
plateau copy 1024 64 6144 2046 5120 OK
plateau copy 1024 128 6144 2046 5120 OK
plateau copy 1024 256 6144 2046 5120 OK
plateau copy 1024 512 6144 2046 5120 OK
plateau copy 1024 1024 6144 2046 5120 OK
plateau reverse 1024 1 6153 2055 5129 OK
plateau reverse 1024 2 6160 2054 5136 OK
plateau reverse 1024 4 6172 2053 5148 OK
plateau reverse 1024 8 6192 2052 5168 OK
plateau reverse 1024 16 6224 2051 5200 OK
plateau reverse 1024 32 6272 2050 5248 OK
plateau reverse 1024 64 6336 2049 5312 OK
plateau reverse 1024 128 6400 2048 5376 OK
plateau reverse 1024 256 6400 2047 5376 OK
plateau reverse 1024 512 6144 2046 5120 OK
plateau reverse 1024 1024 6144 2046 5120 OK
plateau reverse_1st_half 1024 1 6152 2054 5128 OK
plateau reverse_1st_half 1024 2 6158 2053 5134 OK
plateau reverse_1st_half 1024 4 6168 2052 5144 OK
plateau reverse_1st_half 1024 8 6184 2051 5160 OK
plateau reverse_1st_half 1024 16 6208 2050 5184 OK
plateau reverse_1st_half 1024 32 6240 2049 5216 OK
plateau reverse_1st_half 1024 64 6272 2048 5248 OK
plateau reverse_1st_half 1024 128 6272 2047 5248 OK
plateau reverse_1st_half 1024 256 6144 2046 5120 OK
plateau reverse_1st_half 1024 512 6144 2046 5120 OK
plateau reverse_1st_half 1024 1024 6144 2046 5120 OK
plateau reverse_2nd_half 1024 1 6144 2046 5120 OK
plateau reverse_2nd_half 1024 2 6144 2046 5120 OK
plateau reverse_2nd_half 1024 4 6144 2046 5120 OK
plateau reverse_2nd_half 1024 8 6144 2046 5120 OK
plateau reverse_2nd_half 1024 16 6144 2046 5120 OK
plateau reverse_2nd_half 1024 32 6144 2046 5120 OK
plateau reverse_2nd_half 1024 64 6144 2046 5120 OK
plateau reverse_2nd_half 1024 128 6144 2046 5120 OK
plateau reverse_2nd_half 1024 256 6144 2046 5120 OK
plateau reverse_2nd_half 1024 512 6144 2046 5120 OK
plateau reverse_2nd_half 1024 1024 6144 2046 5120 OK
plateau sort 1024 1 6144 2046 5120 OK
plateau sort 1024 2 6144 2046 5120 OK
plateau sort 1024 4 6144 2046 5120 OK
plateau sort 1024 8 6144 2046 5120 OK
plateau sort 1024 16 6144 2046 5120 OK
plateau sort 1024 32 6144 2046 5120 OK
plateau sort 1024 64 6144 2046 5120 OK
plateau sort 1024 128 6144 2046 5120 OK
plateau sort 1024 256 6144 2046 5120 OK
plateau sort 1024 512 6144 2046 5120 OK
plateau sort 1024 1024 6144 2046 5120 OK
plateau dither 1024 1 9500 3932 8476 OK
plateau dither 1024 2 9500 3930 8476 OK
plateau dither 1024 4 9499 3926 8475 OK
plateau dither 1024 8 9494 3923 8470 OK
plateau dither 1024 16 9484 3912 8460 OK
plateau dither 1024 32 9450 3895 8426 OK
plateau dither 1024 64 9388 3858 8364 OK
plateau dither 1024 128 9201 3785 8177 OK
plateau dither 1024 256 8852 3636 7828 OK
plateau dither 1024 512 7898 3343 6874 OK
plateau dither 1024 1024 6501 2760 5477 OK
plateau unriffle 1024 1 6144 2046 5120 OK
plateau unriffle 1024 2 6145 2048 5121 OK
plateau unriffle 1024 4 6148 2054 5124 OK
plateau unriffle 1024 8 6156 2070 5132 OK
plateau unriffle 1024 16 6176 2110 5152 OK
plateau unriffle 1024 32 6224 2206 5200 OK
plateau unriffle 1024 64 6336 2430 5312 OK
plateau unriffle 1024 128 6592 2942 5568 OK
plateau unriffle 1024 256 7168 4094 6144 OK
plateau unriffle 1024 512 8448 6654 7424 OK
plateau unriffle 1024 1024 10241 10240 9217 OK
plateau unriffle_skewed 1024 1 6144 2046 5120 OK
plateau unriffle_skewed 1024 2 6145 2048 5121 OK
plateau unriffle_skewed 1024 4 6148 2054 5124 OK
plateau unriffle_skewed 1024 8 6156 2070 5132 OK
plateau unriffle_skewed 1024 16 6176 2110 5152 OK
plateau unriffle_skewed 1024 32 6224 2206 5200 OK
plateau unriffle_skewed 1024 64 6336 2430 5312 OK
plateau unriffle_skewed 1024 128 6592 2942 5568 OK
plateau unriffle_skewed 1024 256 7168 4094 6144 OK
plateau unriffle_skewed 1024 512 8448 6654 7424 OK
plateau unriffle_skewed 1024 1024 10241 10240 9217 OK
shuffle copy 1024 1 6144 2046 5120 OK
shuffle copy 1024 2 7499 3578 6475 OK
shuffle copy 1024 4 7246 3042 6222 OK
shuffle copy 1024 8 6614 2525 5590 OK
shuffle copy 1024 16 6381 2309 5357 OK
shuffle copy 1024 32 6272 2197 5248 OK
shuffle copy 1024 64 6212 2132 5188 OK
shuffle copy 1024 128 6173 2082 5149 OK
shuffle copy 1024 256 6155 2057 5131 OK
shuffle copy 1024 512 6155 2057 5131 OK
shuffle copy 1024 1024 6155 2057 5131 OK
shuffle reverse 1024 1 6144 2046 5120 OK
shuffle reverse 1024 2 7499 3578 6475 OK
shuffle reverse 1024 4 7246 3042 6222 OK
shuffle reverse 1024 8 6614 2525 5590 OK
shuffle reverse 1024 16 6381 2309 5357 OK
shuffle reverse 1024 32 6272 2197 5248 OK
shuffle reverse 1024 64 6212 2132 5188 OK
shuffle reverse 1024 128 6173 2082 5149 OK
shuffle reverse 1024 256 6155 2057 5131 OK
shuffle reverse 1024 512 6155 2057 5131 OK
shuffle reverse 1024 1024 6155 2057 5131 OK
shuffle reverse_1st_half 1024 1 6144 2046 5120 OK
shuffle reverse_1st_half 1024 2 7499 3578 6475 OK
shuffle reverse_1st_half 1024 4 7246 3042 6222 OK
shuffle reverse_1st_half 1024 8 6614 2525 5590 OK
shuffle reverse_1st_half 1024 16 6381 2309 5357 OK
shuffle reverse_1st_half 1024 32 6272 2197 5248 OK
shuffle reverse_1st_half 1024 64 6212 2132 5188 OK
shuffle reverse_1st_half 1024 128 6173 2082 5149 OK
shuffle reverse_1st_half 1024 256 6155 2057 5131 OK
shuffle reverse_1st_half 1024 512 6155 2057 5131 OK
shuffle reverse_1st_half 1024 1024 6155 2057 5131 OK
shuffle reverse_2nd_half 1024 1 6144 2046 5120 OK
shuffle reverse_2nd_half 1024 2 7499 3578 6475 OK
shuffle reverse_2nd_half 1024 4 7246 3042 6222 OK
shuffle reverse_2nd_half 1024 8 6614 2525 5590 OK
shuffle reverse_2nd_half 1024 16 6381 2309 5357 OK
shuffle reverse_2nd_half 1024 32 6272 2197 5248 OK
shuffle reverse_2nd_half 1024 64 6212 2132 5188 OK
shuffle reverse_2nd_half 1024 128 6173 2082 5149 OK
shuffle reverse_2nd_half 1024 256 6155 2057 5131 OK
shuffle reverse_2nd_half 1024 512 6155 2057 5131 OK
shuffle reverse_2nd_half 1024 1024 6155 2057 5131 OK
shuffle sort 1024 1 6144 2046 5120 OK
shuffle sort 1024 2 6144 2046 5120 OK
shuffle sort 1024 4 6144 2046 5120 OK
shuffle sort 1024 8 6144 2046 5120 OK
shuffle sort 1024 16 6144 2046 5120 OK
shuffle sort 1024 32 6144 2046 5120 OK
shuffle sort 1024 64 6144 2046 5120 OK
shuffle sort 1024 128 6144 2046 5120 OK
shuffle sort 1024 256 6144 2046 5120 OK
shuffle sort 1024 512 6144 2046 5120 OK
shuffle sort 1024 1024 6144 2046 5120 OK
shuffle dither 1024 1 6246 2250 5222 OK
shuffle dither 1024 2 7569 3488 6545 OK
shuffle dither 1024 4 7336 3100 6312 OK
shuffle dither 1024 8 6719 2692 5695 OK
shuffle dither 1024 16 6483 2490 5459 OK
shuffle dither 1024 32 6371 2387 5347 OK
shuffle dither 1024 64 6314 2331 5290 OK
shuffle dither 1024 128 6276 2287 5252 OK
shuffle dither 1024 256 6257 2262 5233 OK
shuffle dither 1024 512 6257 2262 5233 OK
shuffle dither 1024 1024 6257 2262 5233 OK
shuffle unriffle 1024 1 10241 10240 9217 OK
shuffle unriffle 1024 2 10210 7732 9186 OK
shuffle unriffle 1024 4 10144 7630 9120 OK
shuffle unriffle 1024 8 10198 8872 9174 OK
shuffle unriffle 1024 16 10216 9512 9192 OK
shuffle unriffle 1024 32 10228 9856 9204 OK
shuffle unriffle 1024 64 10232 10036 9208 OK
shuffle unriffle 1024 128 10239 10154 9215 OK
shuffle unriffle 1024 256 10241 10216 9217 OK
shuffle unriffle 1024 512 10241 10216 9217 OK
shuffle unriffle 1024 1024 10241 10216 9217 OK
shuffle unriffle_skewed 1024 1 10241 10240 9217 OK
shuffle unriffle_skewed 1024 2 10210 7732 9186 OK
shuffle unriffle_skewed 1024 4 10144 7630 9120 OK
shuffle unriffle_skewed 1024 8 10198 8872 9174 OK
shuffle unriffle_skewed 1024 16 10216 9512 9192 OK
shuffle unriffle_skewed 1024 32 10228 9856 9204 OK
shuffle unriffle_skewed 1024 64 10232 10036 9208 OK
shuffle unriffle_skewed 1024 128 10239 10154 9215 OK
shuffle unriffle_skewed 1024 256 10241 10216 9217 OK
shuffle unriffle_skewed 1024 512 10241 10216 9217 OK
shuffle unriffle_skewed 1024 1024 10241 10216 9217 OK
sawtooth copy 1025 1 7169 2048 6144 OK
sawtooth copy 1025 2 8962 3071 7937 OK
sawtooth copy 1025 4 9474 3579 8449 OK
sawtooth copy 1025 8 9410 3827 8385 OK
sawtooth copy 1025 16 9090 3939 8065 OK
sawtooth copy 1025 32 8658 3971 7633 OK
sawtooth copy 1025 64 8178 3939 7153 OK
sawtooth copy 1025 128 7678 3827 6653 OK
sawtooth copy 1025 256 7170 3579 6145 OK
sawtooth copy 1025 512 6659 3071 5634 OK
sawtooth copy 1025 1024 6147 2049 5122 OK
sawtooth copy 1025 2048 7169 2048 6144 OK
sawtooth reverse 1025 1 7169 2048 6144 OK
sawtooth reverse 1025 2 8962 3071 7937 OK
sawtooth reverse 1025 4 9730 3835 8705 OK
sawtooth reverse 1025 8 9666 4083 8641 OK
sawtooth reverse 1025 16 9282 4131 8257 OK
sawtooth reverse 1025 32 8786 4099 7761 OK
sawtooth reverse 1025 64 8258 4019 7233 OK
sawtooth reverse 1025 128 7726 3875 6701 OK
sawtooth reverse 1025 256 7198 3607 6173 OK
sawtooth reverse 1025 512 6675 3087 5650 OK
sawtooth reverse 1025 1024 6156 2058 5131 OK
sawtooth reverse 1025 2048 6146 2048 5121 OK
sawtooth reverse_1st_half 1025 1 7169 2048 6144 OK
sawtooth reverse_1st_half 1025 2 8962 3071 7937 OK
sawtooth reverse_1st_half 1025 4 9474 3579 8449 OK
sawtooth reverse_1st_half 1025 8 9410 3827 8385 OK
sawtooth reverse_1st_half 1025 16 9090 3939 8065 OK
sawtooth reverse_1st_half 1025 32 8658 3971 7633 OK
sawtooth reverse_1st_half 1025 64 8178 3939 7153 OK
sawtooth reverse_1st_half 1025 128 7678 3827 6653 OK
sawtooth reverse_1st_half 1025 256 7170 3579 6145 OK
sawtooth reverse_1st_half 1025 512 6659 3071 5634 OK
sawtooth reverse_1st_half 1025 1024 6147 2049 5122 OK
sawtooth reverse_1st_half 1025 2048 7169 2048 6144 OK
sawtooth reverse_2nd_half 1025 1 7169 2048 6144 OK
sawtooth reverse_2nd_half 1025 2 8962 3071 7937 OK
sawtooth reverse_2nd_half 1025 4 9602 3707 8577 OK
sawtooth reverse_2nd_half 1025 8 9538 3955 8513 OK
sawtooth reverse_2nd_half 1025 16 9186 4035 8161 OK
sawtooth reverse_2nd_half 1025 32 8722 4035 7697 OK
sawtooth reverse_2nd_half 1025 64 8218 3979 7193 OK
sawtooth reverse_2nd_half 1025 128 7702 3851 6677 OK
sawtooth reverse_2nd_half 1025 256 7184 3593 6159 OK
sawtooth reverse_2nd_half 1025 512 6667 3079 5642 OK
sawtooth reverse_2nd_half 1025 1024 6668 2059 5643 OK
sawtooth reverse_2nd_half 1025 2048 6658 2049 5633 OK
sawtooth sort 1025 1 7169 2048 6144 OK
sawtooth sort 1025 2 7169 2048 6144 OK
sawtooth sort 1025 4 7169 2048 6144 OK
sawtooth sort 1025 8 7169 2048 6144 OK
sawtooth sort 1025 16 7169 2048 6144 OK
sawtooth sort 1025 32 7169 2048 6144 OK
sawtooth sort 1025 64 7169 2048 6144 OK
sawtooth sort 1025 128 7169 2048 6144 OK
sawtooth sort 1025 256 7169 2048 6144 OK
sawtooth sort 1025 512 7169 2048 6144 OK
sawtooth sort 1025 1024 7169 2048 6144 OK
sawtooth sort 1025 2048 7169 2048 6144 OK
sawtooth dither 1025 1 10525 3934 9500 OK
sawtooth dither 1025 2 10741 3908 9716 OK
sawtooth dither 1025 4 10703 4506 9678 OK
sawtooth dither 1025 8 10188 4542 9163 OK
sawtooth dither 1025 16 9630 4690 8605 OK
sawtooth dither 1025 32 9095 4682 8070 OK
sawtooth dither 1025 64 8568 4658 7543 OK
sawtooth dither 1025 128 8049 4536 7024 OK
sawtooth dither 1025 256 7535 4292 6510 OK
sawtooth dither 1025 512 7020 3783 5995 OK
sawtooth dither 1025 1024 6506 2763 5481 OK
sawtooth dither 1025 2048 7526 2762 6501 OK
sawtooth unriffle 1025 1 7169 2048 6144 OK
sawtooth unriffle 1025 2 7169 2048 6144 OK
sawtooth unriffle 1025 4 7416 2060 6391 OK
sawtooth unriffle 1025 8 7537 2076 6512 OK
sawtooth unriffle 1025 16 7724 2106 6699 OK
sawtooth unriffle 1025 32 8009 2174 6984 OK
sawtooth unriffle 1025 64 8376 2336 7351 OK
sawtooth unriffle 1025 128 8801 2720 7776 OK
sawtooth unriffle 1025 256 9264 3614 8239 OK
sawtooth unriffle 1025 512 9751 5658 8726 OK
sawtooth unriffle 1025 1024 10244 10234 9219 OK
sawtooth unriffle 1025 2048 10243 10233 9218 OK
sawtooth unriffle_skewed 1025 1 7169 2048 6144 OK
sawtooth unriffle_skewed 1025 2 6658 2049 5633 OK
sawtooth unriffle_skewed 1025 4 6658 2051 5633 OK
sawtooth unriffle_skewed 1025 8 6914 2059 5889 OK
sawtooth unriffle_skewed 1025 16 7298 2083 6273 OK
sawtooth unriffle_skewed 1025 32 7746 2147 6721 OK
sawtooth unriffle_skewed 1025 64 8226 2307 7201 OK
sawtooth unriffle_skewed 1025 128 8722 2691 7697 OK
sawtooth unriffle_skewed 1025 256 9226 3587 8201 OK
sawtooth unriffle_skewed 1025 512 9734 5635 8709 OK
sawtooth unriffle_skewed 1025 1024 10244 10243 9219 OK
sawtooth unriffle_skewed 1025 2048 11266 10242 10241 OK
rand copy 1025 1 7169 2048 6144 OK
rand copy 1025 2 8689 2695 7664 OK
rand copy 1025 4 9463 3255 8438 OK
rand copy 1025 8 9714 3799 8689 OK
rand copy 1025 16 9904 4391 8879 OK
rand copy 1025 32 10453 4834 9428 OK
rand copy 1025 64 10692 5187 9667 OK
rand copy 1025 128 10347 5583 9322 OK
rand copy 1025 256 10695 5859 9670 OK
rand copy 1025 512 10824 6046 9799 OK
rand copy 1025 1024 10910 6044 9885 OK
rand copy 1025 2048 10945 6116 9920 OK
rand reverse 1025 1 7169 2048 6144 OK
rand reverse 1025 2 9242 2700 8217 OK
rand reverse 1025 4 10181 3253 9156 OK
rand reverse 1025 8 10669 3834 9644 OK
rand reverse 1025 16 10852 4384 9827 OK
rand reverse 1025 32 10420 4829 9395 OK
rand reverse 1025 64 10209 5273 9184 OK
rand reverse 1025 128 10093 5621 9068 OK
rand reverse 1025 256 10561 5895 9536 OK
rand reverse 1025 512 10245 6070 9220 OK
rand reverse 1025 1024 10117 6092 9092 OK
rand reverse 1025 2048 10576 6149 9551 OK
rand reverse_1st_half 1025 1 7169 2048 6144 OK
rand reverse_1st_half 1025 2 8641 2696 7616 OK
rand reverse_1st_half 1025 4 9423 3232 8398 OK
rand reverse_1st_half 1025 8 9720 3803 8695 OK
rand reverse_1st_half 1025 16 9895 4382 8870 OK
rand reverse_1st_half 1025 32 10452 4805 9427 OK
rand reverse_1st_half 1025 64 10691 5203 9666 OK
rand reverse_1st_half 1025 128 10338 5577 9313 OK
rand reverse_1st_half 1025 256 10695 5837 9670 OK
rand reverse_1st_half 1025 512 10821 6039 9796 OK
rand reverse_1st_half 1025 1024 10908 6047 9883 OK
rand reverse_1st_half 1025 2048 10943 6132 9918 OK
rand reverse_2nd_half 1025 1 7169 2048 6144 OK
rand reverse_2nd_half 1025 2 8743 2700 7718 OK
rand reverse_2nd_half 1025 4 9948 3258 8923 OK
rand reverse_2nd_half 1025 8 9997 3823 8972 OK
rand reverse_2nd_half 1025 16 10028 4401 9003 OK
rand reverse_2nd_half 1025 32 10516 4841 9491 OK
rand reverse_2nd_half 1025 64 10234 5237 9209 OK
rand reverse_2nd_half 1025 128 10619 5628 9594 OK
rand reverse_2nd_half 1025 256 10317 5883 9292 OK
rand reverse_2nd_half 1025 512 10642 6043 9617 OK
rand reverse_2nd_half 1025 1024 10826 6063 9801 OK
rand reverse_2nd_half 1025 2048 10417 6098 9392 OK
rand sort 1025 1 7169 2048 6144 OK
rand sort 1025 2 7169 2048 6144 OK
rand sort 1025 4 7169 2048 6144 OK
rand sort 1025 8 7169 2048 6144 OK
rand sort 1025 16 7169 2048 6144 OK
rand sort 1025 32 7169 2048 6144 OK
rand sort 1025 64 7169 2048 6144 OK
rand sort 1025 128 7169 2048 6144 OK
rand sort 1025 256 7169 2048 6144 OK
rand sort 1025 512 7169 2048 6144 OK
rand sort 1025 1024 7169 2048 6144 OK
rand sort 1025 2048 7169 2048 6144 OK
rand dither 1025 1 10525 3934 9500 OK
rand dither 1025 2 10669 3640 9644 OK
rand dither 1025 4 10590 3787 9565 OK
rand dither 1025 8 10285 4057 9260 OK
rand dither 1025 16 10163 4477 9138 OK
rand dither 1025 32 10586 4892 9561 OK
rand dither 1025 64 10743 5296 9718 OK
rand dither 1025 128 10372 5619 9347 OK
rand dither 1025 256 10690 5898 9665 OK
rand dither 1025 512 10823 6009 9798 OK
rand dither 1025 1024 10911 6062 9886 OK
rand dither 1025 2048 10947 6123 9922 OK
rand unriffle 1025 1 7169 2048 6144 OK
rand unriffle 1025 2 8718 2689 7693 OK
rand unriffle 1025 4 9980 3275 8955 OK
rand unriffle 1025 8 10033 3850 9008 OK
rand unriffle 1025 16 10015 4403 8990 OK
rand unriffle 1025 32 10035 4896 9010 OK
rand unriffle 1025 64 10524 5303 9499 OK
rand unriffle 1025 128 10764 5624 9739 OK
rand unriffle 1025 256 10867 5945 9842 OK
rand unriffle 1025 512 10927 6090 9902 OK
rand unriffle 1025 1024 10923 6102 9898 OK
rand unriffle 1025 2048 10960 6121 9935 OK
rand unriffle_skewed 1025 1 7169 2048 6144 OK
rand unriffle_skewed 1025 2 8684 2690 7659 OK
rand unriffle_skewed 1025 4 9452 3275 8427 OK
rand unriffle_skewed 1025 8 9737 3854 8712 OK
rand unriffle_skewed 1025 16 9871 4403 8846 OK
rand unriffle_skewed 1025 32 10468 4901 9443 OK
rand unriffle_skewed 1025 64 10738 5301 9713 OK
rand unriffle_skewed 1025 128 10379 5641 9354 OK
rand unriffle_skewed 1025 256 10677 5959 9652 OK
rand unriffle_skewed 1025 512 10841 6081 9816 OK
rand unriffle_skewed 1025 1024 10878 6103 9853 OK
rand unriffle_skewed 1025 2048 10931 6136 9906 OK
stagger copy 1025 1 8182 3079 7157 OK
stagger copy 1025 2 8343 3423 7318 OK
stagger copy 1025 4 8785 3704 7760 OK
stagger copy 1025 8 9198 3887 8173 OK
stagger copy 1025 16 9655 5313 8630 OK
stagger copy 1025 32 10049 4943 9024 OK
stagger copy 1025 64 10435 6344 9410 OK
stagger copy 1025 128 10614 6238 9589 OK
stagger copy 1025 256 10367 5030 9342 OK
stagger copy 1025 512 8962 3071 7937 OK
stagger copy 1025 1024 7169 2048 6144 OK
stagger copy 1025 2048 6156 2058 5131 OK
stagger reverse 1025 1 6657 3070 5632 OK
stagger reverse 1025 2 7337 3426 6312 OK
stagger reverse 1025 4 7784 3698 6759 OK
stagger reverse 1025 8 8230 3902 7205 OK
stagger reverse 1025 16 8667 5306 7642 OK
stagger reverse 1025 32 9057 4938 8032 OK
stagger reverse 1025 64 9524 6761 8499 OK
stagger reverse 1025 128 9794 6278 8769 OK
stagger reverse 1025 256 9683 5114 8658 OK
stagger reverse 1025 512 8450 3070 7425 OK
stagger reverse 1025 1024 7169 2048 6144 OK
stagger reverse 1025 2048 6146 2048 5121 OK
stagger reverse_1st_half 1025 1 8182 3079 7157 OK
stagger reverse_1st_half 1025 2 8343 3423 7318 OK
stagger reverse_1st_half 1025 4 8785 3701 7760 OK
stagger reverse_1st_half 1025 8 9198 3887 8173 OK
stagger reverse_1st_half 1025 16 9655 5313 8630 OK
stagger reverse_1st_half 1025 32 10049 4943 9024 OK
stagger reverse_1st_half 1025 64 10436 6546 9411 OK
stagger reverse_1st_half 1025 128 10614 6238 9589 OK
stagger reverse_1st_half 1025 256 10367 5030 9342 OK
stagger reverse_1st_half 1025 512 8962 3071 7937 OK
stagger reverse_1st_half 1025 1024 7169 2048 6144 OK
stagger reverse_1st_half 1025 2048 6156 2058 5131 OK
stagger reverse_2nd_half 1025 1 7680 3070 6655 OK
stagger reverse_2nd_half 1025 2 7840 3425 6815 OK
stagger reverse_2nd_half 1025 4 8285 3702 7260 OK
stagger reverse_2nd_half 1025 8 8714 3895 7689 OK
stagger reverse_2nd_half 1025 16 9161 5313 8136 OK
stagger reverse_2nd_half 1025 32 9553 4943 8528 OK
stagger reverse_2nd_half 1025 64 9982 6555 8957 OK
stagger reverse_2nd_half 1025 128 10204 6258 9179 OK
stagger reverse_2nd_half 1025 256 10025 5072 9000 OK
stagger reverse_2nd_half 1025 512 8706 3071 7681 OK
stagger reverse_2nd_half 1025 1024 7169 2048 6144 OK
stagger reverse_2nd_half 1025 2048 6668 2058 5643 OK
stagger sort 1025 1 7169 2048 6144 OK
stagger sort 1025 2 7169 2048 6144 OK
stagger sort 1025 4 7169 2048 6144 OK
stagger sort 1025 8 7169 2048 6144 OK
stagger sort 1025 16 7169 2048 6144 OK
stagger sort 1025 32 7169 2048 6144 OK
stagger sort 1025 64 7169 2048 6144 OK
stagger sort 1025 128 7169 2048 6144 OK
stagger sort 1025 256 7169 2048 6144 OK
stagger sort 1025 512 7169 2048 6144 OK
stagger sort 1025 1024 7169 2048 6144 OK
stagger sort 1025 2048 7169 2048 6144 OK
stagger dither 1025 1 8281 2872 7256 OK
stagger dither 1025 2 8446 3353 7421 OK
stagger dither 1025 4 8785 3704 7760 OK
stagger dither 1025 8 9202 4023 8177 OK
stagger dither 1025 16 9657 5529 8632 OK
stagger dither 1025 32 10050 4221 9025 OK
stagger dither 1025 64 10435 6344 9410 OK
stagger dither 1025 128 10615 5581 9590 OK
stagger dither 1025 256 10368 4757 9343 OK
stagger dither 1025 512 9142 3581 8117 OK
stagger dither 1025 1024 10525 3934 9500 OK
stagger dither 1025 2048 6744 2516 5719 OK
stagger unriffle 1025 1 9743 5644 8718 OK
stagger unriffle 1025 2 10237 9540 9212 OK
stagger unriffle 1025 4 10245 9198 9220 OK
stagger unriffle 1025 8 10238 9293 9213 OK
stagger unriffle 1025 16 10254 8894 9229 OK
stagger unriffle 1025 32 10262 8172 9237 OK
stagger unriffle 1025 64 10304 9066 9279 OK
stagger unriffle 1025 128 10351 9199 9326 OK
stagger unriffle 1025 256 10413 9543 9388 OK
stagger unriffle 1025 512 10244 9212 9219 OK
stagger unriffle 1025 1024 7169 2048 6144 OK
stagger unriffle 1025 2048 11266 10233 10241 OK
stagger unriffle_skewed 1025 1 10764 5644 9739 OK
stagger unriffle_skewed 1025 2 11264 9561 10239 OK
stagger unriffle_skewed 1025 4 11265 9224 10240 OK
stagger unriffle_skewed 1025 8 11252 9333 10227 OK
stagger unriffle_skewed 1025 16 11247 8922 10222 OK
stagger unriffle_skewed 1025 32 11222 8200 10197 OK
stagger unriffle_skewed 1025 64 11199 9099 10174 OK
stagger unriffle_skewed 1025 128 11119 9227 10094 OK
stagger unriffle_skewed 1025 256 10925 9559 9900 OK
stagger unriffle_skewed 1025 512 10244 9221 9219 OK
stagger unriffle_skewed 1025 1024 7169 2048 6144 OK
stagger unriffle_skewed 1025 2048 10244 10243 9219 OK
plateau copy 1025 1 7169 2048 6144 OK
plateau copy 1025 2 7169 2048 6144 OK
plateau copy 1025 4 7169 2048 6144 OK
plateau copy 1025 8 7169 2048 6144 OK
plateau copy 1025 16 7169 2048 6144 OK
plateau copy 1025 32 7169 2048 6144 OK
plateau copy 1025 64 7169 2048 6144 OK
plateau copy 1025 128 7169 2048 6144 OK
plateau copy 1025 256 7169 2048 6144 OK
plateau copy 1025 512 7169 2048 6144 OK
plateau copy 1025 1024 7169 2048 6144 OK
plateau copy 1025 2048 7169 2048 6144 OK
plateau reverse 1025 1 6146 2048 5121 OK
plateau reverse 1025 2 6155 2057 5130 OK
plateau reverse 1025 4 6170 2056 5145 OK
plateau reverse 1025 8 6195 2055 5170 OK
plateau reverse 1025 16 6236 2054 5211 OK
plateau reverse 1025 32 6301 2053 5276 OK
plateau reverse 1025 64 6398 2052 5373 OK
plateau reverse 1025 128 6527 2051 5502 OK
plateau reverse 1025 256 6656 2050 5631 OK
plateau reverse 1025 512 6657 2049 5632 OK
plateau reverse 1025 1024 6146 2048 5121 OK
plateau reverse 1025 2048 6146 2048 5121 OK
plateau reverse_1st_half 1025 1 7177 2056 6152 OK
plateau reverse_1st_half 1025 2 7183 2055 6158 OK
plateau reverse_1st_half 1025 4 7193 2054 6168 OK
plateau reverse_1st_half 1025 8 7209 2053 6184 OK
plateau reverse_1st_half 1025 16 7233 2052 6208 OK
plateau reverse_1st_half 1025 32 7265 2051 6240 OK
plateau reverse_1st_half 1025 64 7297 2050 6272 OK
plateau reverse_1st_half 1025 128 7297 2049 6272 OK
plateau reverse_1st_half 1025 256 7169 2048 6144 OK
plateau reverse_1st_half 1025 512 7169 2048 6144 OK
plateau reverse_1st_half 1025 1024 7169 2048 6144 OK
plateau reverse_1st_half 1025 2048 7169 2048 6144 OK
plateau reverse_2nd_half 1025 1 7169 2048 6144 OK
plateau reverse_2nd_half 1025 2 7169 2048 6144 OK
plateau reverse_2nd_half 1025 4 7169 2048 6144 OK
plateau reverse_2nd_half 1025 8 7169 2048 6144 OK
plateau reverse_2nd_half 1025 16 7169 2048 6144 OK
plateau reverse_2nd_half 1025 32 7169 2048 6144 OK
plateau reverse_2nd_half 1025 64 7169 2048 6144 OK
plateau reverse_2nd_half 1025 128 7169 2048 6144 OK
plateau reverse_2nd_half 1025 256 7169 2048 6144 OK
plateau reverse_2nd_half 1025 512 7169 2048 6144 OK
plateau reverse_2nd_half 1025 1024 6658 2049 5633 OK
plateau reverse_2nd_half 1025 2048 6658 2049 5633 OK
plateau sort 1025 1 7169 2048 6144 OK
plateau sort 1025 2 7169 2048 6144 OK
plateau sort 1025 4 7169 2048 6144 OK
plateau sort 1025 8 7169 2048 6144 OK
plateau sort 1025 16 7169 2048 6144 OK
plateau sort 1025 32 7169 2048 6144 OK
plateau sort 1025 64 7169 2048 6144 OK
plateau sort 1025 128 7169 2048 6144 OK
plateau sort 1025 256 7169 2048 6144 OK
plateau sort 1025 512 7169 2048 6144 OK
plateau sort 1025 1024 7169 2048 6144 OK
plateau sort 1025 2048 7169 2048 6144 OK
plateau dither 1025 1 10525 3934 9500 OK
plateau dither 1025 2 10525 3932 9500 OK
plateau dither 1025 4 10524 3928 9499 OK
plateau dither 1025 8 10519 3925 9494 OK
plateau dither 1025 16 10509 3914 9484 OK
plateau dither 1025 32 10475 3897 9450 OK
plateau dither 1025 64 10413 3860 9388 OK
plateau dither 1025 128 10226 3787 9201 OK
plateau dither 1025 256 9877 3638 8852 OK
plateau dither 1025 512 8923 3345 7898 OK
plateau dither 1025 1024 7526 2762 6501 OK
plateau dither 1025 2048 7526 2762 6501 OK
plateau unriffle 1025 1 7169 2048 6144 OK
plateau unriffle 1025 2 6147 2049 5122 OK
plateau unriffle 1025 4 6150 2054 5125 OK
plateau unriffle 1025 8 6158 2068 5133 OK
plateau unriffle 1025 16 6178 2105 5153 OK
plateau unriffle 1025 32 6226 2197 5201 OK
plateau unriffle 1025 64 6338 2416 5313 OK
plateau unriffle 1025 128 6594 2922 5569 OK
plateau unriffle 1025 256 7170 4067 6145 OK
plateau unriffle 1025 512 8442 6611 7417 OK
plateau unriffle 1025 1024 10243 10233 9218 OK
plateau unriffle 1025 2048 10243 10233 9218 OK
plateau unriffle_skewed 1025 1 7169 2048 6144 OK
plateau unriffle_skewed 1025 2 7170 2050 6145 OK
plateau unriffle_skewed 1025 4 7173 2056 6148 OK
plateau unriffle_skewed 1025 8 7181 2072 6156 OK
plateau unriffle_skewed 1025 16 7201 2112 6176 OK
plateau unriffle_skewed 1025 32 7249 2208 6224 OK
plateau unriffle_skewed 1025 64 7361 2432 6336 OK
plateau unriffle_skewed 1025 128 7617 2944 6592 OK
plateau unriffle_skewed 1025 256 8193 4096 7168 OK
plateau unriffle_skewed 1025 512 9473 6656 8448 OK
plateau unriffle_skewed 1025 1024 11266 10242 10241 OK
plateau unriffle_skewed 1025 2048 11266 10242 10241 OK
shuffle copy 1025 1 7169 2048 6144 OK
shuffle copy 1025 2 8482 3581 7457 OK
shuffle copy 1025 4 7749 3045 6724 OK
shuffle copy 1025 8 6827 2528 5802 OK
shuffle copy 1025 16 6490 2312 5465 OK
shuffle copy 1025 32 7297 2199 6272 OK
shuffle copy 1025 64 7237 2134 6212 OK
shuffle copy 1025 128 7198 2084 6173 OK
shuffle copy 1025 256 7180 2059 6155 OK
shuffle copy 1025 512 7180 2059 6155 OK
shuffle copy 1025 1024 7180 2059 6155 OK
shuffle copy 1025 2048 7174 2054 6149 OK
shuffle reverse 1025 1 6146 2048 5121 OK
shuffle reverse 1025 2 7508 3586 6483 OK
shuffle reverse 1025 4 7244 3021 6219 OK
shuffle reverse 1025 8 6623 2522 5598 OK
shuffle reverse 1025 16 6386 2313 5361 OK
shuffle reverse 1025 32 6265 2190 5240 OK
shuffle reverse 1025 64 6210 2129 5185 OK
shuffle reverse 1025 128 6173 2081 5148 OK
shuffle reverse 1025 256 6155 2056 5130 OK
shuffle reverse 1025 512 6155 2056 5130 OK
shuffle reverse 1025 1024 6155 2056 5130 OK
shuffle reverse 1025 2048 6150 2052 5125 OK
shuffle reverse_1st_half 1025 1 7169 2048 6144 OK
shuffle reverse_1st_half 1025 2 8482 3581 7457 OK
shuffle reverse_1st_half 1025 4 7749 3045 6724 OK
shuffle reverse_1st_half 1025 8 6827 2528 5802 OK
shuffle reverse_1st_half 1025 16 6490 2312 5465 OK
shuffle reverse_1st_half 1025 32 7297 2199 6272 OK
shuffle reverse_1st_half 1025 64 7237 2134 6212 OK
shuffle reverse_1st_half 1025 128 7198 2084 6173 OK
shuffle reverse_1st_half 1025 256 7180 2059 6155 OK
shuffle reverse_1st_half 1025 512 7180 2059 6155 OK
shuffle reverse_1st_half 1025 1024 7180 2059 6155 OK
shuffle reverse_1st_half 1025 2048 7174 2054 6149 OK
shuffle reverse_2nd_half 1025 1 6658 2049 5633 OK
shuffle reverse_2nd_half 1025 2 7995 3578 6970 OK
shuffle reverse_2nd_half 1025 4 7865 3026 6840 OK
shuffle reverse_2nd_half 1025 8 7185 2532 6160 OK
shuffle reverse_2nd_half 1025 16 6926 2314 5901 OK
shuffle reverse_2nd_half 1025 32 6796 2198 5771 OK
shuffle reverse_2nd_half 1025 64 6733 2133 5708 OK
shuffle reverse_2nd_half 1025 128 6689 2085 5664 OK
shuffle reverse_2nd_half 1025 256 6669 2060 5644 OK
shuffle reverse_2nd_half 1025 512 6669 2060 5644 OK
shuffle reverse_2nd_half 1025 1024 6669 2060 5644 OK
shuffle reverse_2nd_half 1025 2048 6663 2055 5638 OK
shuffle sort 1025 1 7169 2048 6144 OK
shuffle sort 1025 2 7169 2048 6144 OK
shuffle sort 1025 4 7169 2048 6144 OK
shuffle sort 1025 8 7169 2048 6144 OK
shuffle sort 1025 16 7169 2048 6144 OK
shuffle sort 1025 32 7169 2048 6144 OK
shuffle sort 1025 64 7169 2048 6144 OK
shuffle sort 1025 128 7169 2048 6144 OK
shuffle sort 1025 256 7169 2048 6144 OK
shuffle sort 1025 512 7169 2048 6144 OK
shuffle sort 1025 1024 7169 2048 6144 OK
shuffle sort 1025 2048 7169 2048 6144 OK
shuffle dither 1025 1 7271 2252 6246 OK
shuffle dither 1025 2 8553 3491 7528 OK
shuffle dither 1025 4 7841 3103 6816 OK
shuffle dither 1025 8 6933 2695 5908 OK
shuffle dither 1025 16 6593 2493 5568 OK
shuffle dither 1025 32 7396 2389 6371 OK
shuffle dither 1025 64 7339 2333 6314 OK
shuffle dither 1025 128 7301 2289 6276 OK
shuffle dither 1025 256 7282 2264 6257 OK
shuffle dither 1025 512 7282 2264 6257 OK
shuffle dither 1025 1024 7282 2264 6257 OK
shuffle dither 1025 2048 7276 2259 6251 OK
shuffle unriffle 1025 1 10243 10233 9218 OK
shuffle unriffle 1025 2 10216 7736 9191 OK
shuffle unriffle 1025 4 10146 7630 9121 OK
shuffle unriffle 1025 8 10201 8866 9176 OK
shuffle unriffle 1025 16 10219 9506 9194 OK
shuffle unriffle 1025 32 10231 9854 9206 OK
shuffle unriffle 1025 64 10235 10030 9210 OK
shuffle unriffle 1025 128 10242 10148 9217 OK
shuffle unriffle 1025 256 10244 10209 9219 OK
shuffle unriffle 1025 512 10244 10209 9219 OK
shuffle unriffle 1025 1024 10244 10209 9219 OK
shuffle unriffle 1025 2048 10244 10219 9219 OK
shuffle unriffle_skewed 1025 1 11266 10242 10241 OK
shuffle unriffle_skewed 1025 2 11193 7735 10168 OK
shuffle unriffle_skewed 1025 4 10647 7633 9622 OK
shuffle unriffle_skewed 1025 8 10411 8875 9386 OK
shuffle unriffle_skewed 1025 16 10325 9515 9300 OK
shuffle unriffle_skewed 1025 32 11253 9858 10228 OK
shuffle unriffle_skewed 1025 64 11257 10038 10232 OK
shuffle unriffle_skewed 1025 128 11264 10156 10239 OK
shuffle unriffle_skewed 1025 256 11266 10218 10241 OK
shuffle unriffle_skewed 1025 512 11266 10218 10241 OK
shuffle unriffle_skewed 1025 1024 11266 10218 10241 OK
shuffle unriffle_skewed 1025 2048 11266 10228 10241 OK
ok 1 - DEFINE_LIST_SORT_DEBUG
# passed all 1 test(s)
1..1
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0091-bugreport.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0091-bugreport/.git/
expecting success of 0091.1 'create a report':
git bugreport -s format &&
test_file_not_empty git-bugreport-format.txt
Created new report at 'git-bugreport-format.txt'.
ok 1 - create a report
expecting success of 0091.2 'report contains wanted template (before first section)':
sed -ne "/^\[/q;p" git-bugreport-format.txt >actual &&
cat >expect <<-\EOF &&
Thank you for filling out a Git bug report!
Please answer the following questions to help us understand your issue.
What did you do before the bug happened? (Steps to reproduce your issue)
What did you expect to happen? (Expected behavior)
What happened instead? (Actual behavior)
What's different between what you expected and what actually happened?
Anything else you want to add:
Please review the rest of the bug report below.
You can delete any lines you don't wish to share.
EOF
test_cmp expect actual
ok 2 - report contains wanted template (before first section)
expecting success of 0091.3 'sanity check "System Info" section':
test_when_finished rm -f git-bugreport-format.txt &&
sed -ne "/^\[System Info\]$/,/^$/p" <git-bugreport-format.txt >system &&
# The beginning should match "git version --build-info" verbatim,
# but rather than checking bit-for-bit equality, just test some basics.
grep "git version [0-9]." system &&
grep "shell-path: ." system &&
# After the version, there should be some more info.
# This is bound to differ from environment to environment,
# so we just do some rather high-level checks.
grep "uname: ." system &&
grep "compiler info: ." system
git version 2.42.0
shell-path: /bin/sh
uname: Linux 6.1.47-v8+ #1 SMP PREEMPT Fri Sep 1 07:05:33 BST 2023 aarch64
compiler info: gnuc: 12.2
ok 3 - sanity check "System Info" section
expecting success of 0091.4 'dies if file with same name as report already exists':
test_when_finished rm git-bugreport-duplicate.txt &&
>>git-bugreport-duplicate.txt &&
test_must_fail git bugreport --suffix duplicate
fatal: unable to create 'git-bugreport-duplicate.txt': File exists
ok 4 - dies if file with same name as report already exists
expecting success of 0091.5 '--output-directory puts the report in the provided dir':
test_when_finished rm -fr foo/ &&
git bugreport -o foo/ &&
test_path_is_file foo/git-bugreport-*
Created new report at 'foo/git-bugreport-2023-10-09-0217.txt'.
ok 5 - --output-directory puts the report in the provided dir
expecting success of 0091.6 'incorrect arguments abort with usage':
test_must_fail git bugreport --false 2>output &&
test_i18ngrep usage output &&
test_path_is_missing git-bugreport-*
usage: git bugreport [(-o | --output-directory) <path>] [(-s | --suffix) <format>]
ok 6 - incorrect arguments abort with usage
expecting success of 0091.7 'runs outside of a git dir':
test_when_finished rm non-repo/git-bugreport-* &&
nongit git bugreport
Created new report at 'git-bugreport-2023-10-09-0217.txt'.
ok 7 - runs outside of a git dir
expecting success of 0091.8 'can create leading directories outside of a git dir':
test_when_finished rm -fr foo/bar/baz &&
nongit git bugreport -o foo/bar/baz
Created new report at 'foo/bar/baz/git-bugreport-2023-10-09-0217.txt'.
ok 8 - can create leading directories outside of a git dir
expecting success of 0091.9 'indicates populated hooks':
test_when_finished rm git-bugreport-hooks.txt &&
test_hook applypatch-msg <<-\EOF &&
true
EOF
test_hook unknown-hook <<-\EOF &&
true
EOF
git bugreport -s hooks &&
sort >expect <<-\EOF &&
[Enabled Hooks]
applypatch-msg
EOF
sed -ne "/^\[Enabled Hooks\]$/,/^$/p" <git-bugreport-hooks.txt >actual &&
test_cmp expect actual
Created new report at 'git-bugreport-hooks.txt'.
ok 9 - indicates populated hooks
checking prerequisite: UNZIP
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-UNZIP" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-UNZIP" &&
"$GIT_UNZIP" -v
test $? -ne 127
)
UnZip 6.00 of 20 April 2009, by Debian. Original by Info-ZIP.
Latest sources and executables are at ftp://ftp.info-zip.org/pub/infozip/ ;
see ftp://ftp.info-zip.org/pub/infozip/UnZip.html for other sites.
Compiled with gcc 12.2.0 for Unix (Linux ELF).
UnZip special compilation options:
ACORN_FTYPE_NFS
COPYRIGHT_CLEAN (PKZIP 0.9x unreducing method not supported)
SET_DIR_ATTRIB
SYMLINKS (symbolic links supported, if RTL and file system permit)
TIMESTAMP
UNIXBACKUP
USE_EF_UT_TIME
USE_UNSHRINK (PKZIP/Zip 1.x unshrinking method supported)
USE_DEFLATE64 (PKZIP 4.x Deflate64(tm) supported)
UNICODE_SUPPORT [wide-chars, char coding: other] (handle UTF-8 paths)
LARGE_FILE_SUPPORT (large files over 2 GiB supported)
ZIP64_SUPPORT (archives using Zip64 for large files supported)
USE_BZIP2 (PKZIP 4.6+, using bzip2 lib version 1.0.8, 13-Jul-2019)
VMS_TEXT_CONV
WILD_STOP_AT_DIR
[decryption, version 2.11 of 05 Jan 2007]
UnZip and ZipInfo environment options:
UNZIP: [none]
UNZIPOPT: [none]
ZIPINFO: [none]
ZIPINFOOPT: [none]
prerequisite UNZIP ok
expecting success of 0091.10 '--diagnose creates diagnostics zip archive':
test_when_finished rm -rf report &&
git bugreport --diagnose -o report -s test >out &&
zip_path=report/git-diagnostics-test.zip &&
grep "Available space" out &&
test_path_is_file "$zip_path" &&
# Check zipped archive content
"$GIT_UNZIP" -p "$zip_path" diagnostics.log >out &&
test_file_not_empty out &&
"$GIT_UNZIP" -p "$zip_path" packs-local.txt >out &&
grep ".git/objects" out &&
"$GIT_UNZIP" -p "$zip_path" objects-local.txt >out &&
grep "^Total: [0-9][0-9]*" out &&
# Should not include .git directory contents by default
! "$GIT_UNZIP" -l "$zip_path" | grep ".git/"
Diagnostics complete.
All of the gathered info is captured in 'report/git-diagnostics-test.zip'
Created new report at 'report/git-bugreport-test.txt'.
Available space on '/<<PKGBUILDDIR>>/t/trash directory.t0091-bugreport': 443.22 GiB (mount flags 0x1000)
Contents of .git/objects:
Total: 0 loose objects
ok 10 - --diagnose creates diagnostics zip archive
expecting success of 0091.11 '--diagnose=stats excludes .git dir contents':
test_when_finished rm -rf report &&
git bugreport --diagnose=stats -o report -s test >out &&
# Includes pack quantity/size info
"$GIT_UNZIP" -p "$zip_path" packs-local.txt >out &&
grep ".git/objects" out &&
# Does not include .git directory contents
! "$GIT_UNZIP" -l "$zip_path" | grep ".git/"
Diagnostics complete.
All of the gathered info is captured in 'report/git-diagnostics-test.zip'
Created new report at 'report/git-bugreport-test.txt'.
Contents of .git/objects:
ok 11 - --diagnose=stats excludes .git dir contents
expecting success of 0091.12 '--diagnose=all includes .git dir contents':
test_when_finished rm -rf report &&
git bugreport --diagnose=all -o report -s test >out &&
# Includes .git directory contents
"$GIT_UNZIP" -l "$zip_path" | grep ".git/" &&
"$GIT_UNZIP" -p "$zip_path" .git/HEAD >out &&
test_file_not_empty out
warning: could not archive missing directory '.git/logs'
Diagnostics complete.
All of the gathered info is captured in 'report/git-diagnostics-test.zip'
Created new report at 'report/git-bugreport-test.txt'.
73 2023-10-09 02:17 .git/description
23 2023-10-09 02:17 .git/HEAD
92 2023-10-09 02:17 .git/config
478 2023-10-09 02:17 .git/hooks/applypatch-msg.sample
896 2023-10-09 02:17 .git/hooks/commit-msg.sample
4726 2023-10-09 02:17 .git/hooks/fsmonitor-watchman.sample
189 2023-10-09 02:17 .git/hooks/post-update.sample
424 2023-10-09 02:17 .git/hooks/pre-applypatch.sample
1643 2023-10-09 02:17 .git/hooks/pre-commit.sample
416 2023-10-09 02:17 .git/hooks/pre-merge-commit.sample
1374 2023-10-09 02:17 .git/hooks/pre-push.sample
4898 2023-10-09 02:17 .git/hooks/pre-rebase.sample
544 2023-10-09 02:17 .git/hooks/pre-receive.sample
1492 2023-10-09 02:17 .git/hooks/prepare-commit-msg.sample
2783 2023-10-09 02:17 .git/hooks/push-to-checkout.sample
2308 2023-10-09 02:17 .git/hooks/sendemail-validate.sample
3650 2023-10-09 02:17 .git/hooks/update.sample
240 2023-10-09 02:17 .git/info/exclude
ok 12 - --diagnose=all includes .git dir contents
# passed all 12 test(s)
1..12
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0092-diagnose.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0092-diagnose/.git/
checking prerequisite: UNZIP
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-UNZIP" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-UNZIP" &&
"$GIT_UNZIP" -v
test $? -ne 127
)
UnZip 6.00 of 20 April 2009, by Debian. Original by Info-ZIP.
Latest sources and executables are at ftp://ftp.info-zip.org/pub/infozip/ ;
see ftp://ftp.info-zip.org/pub/infozip/UnZip.html for other sites.
Compiled with gcc 12.2.0 for Unix (Linux ELF).
UnZip special compilation options:
ACORN_FTYPE_NFS
COPYRIGHT_CLEAN (PKZIP 0.9x unreducing method not supported)
SET_DIR_ATTRIB
SYMLINKS (symbolic links supported, if RTL and file system permit)
TIMESTAMP
UNIXBACKUP
USE_EF_UT_TIME
USE_UNSHRINK (PKZIP/Zip 1.x unshrinking method supported)
USE_DEFLATE64 (PKZIP 4.x Deflate64(tm) supported)
UNICODE_SUPPORT [wide-chars, char coding: other] (handle UTF-8 paths)
LARGE_FILE_SUPPORT (large files over 2 GiB supported)
ZIP64_SUPPORT (archives using Zip64 for large files supported)
USE_BZIP2 (PKZIP 4.6+, using bzip2 lib version 1.0.8, 13-Jul-2019)
VMS_TEXT_CONV
WILD_STOP_AT_DIR
[decryption, version 2.11 of 05 Jan 2007]
UnZip and ZipInfo environment options:
UNZIP: [none]
UNZIPOPT: [none]
ZIPINFO: [none]
ZIPINFOOPT: [none]
prerequisite UNZIP ok
expecting success of 0092.1 'creates diagnostics zip archive':
test_when_finished rm -rf report &&
git diagnose -o report -s test >out &&
grep "Available space" out &&
zip_path=report/git-diagnostics-test.zip &&
test_path_is_file "$zip_path" &&
# Check zipped archive content
"$GIT_UNZIP" -p "$zip_path" diagnostics.log >out &&
test_file_not_empty out &&
"$GIT_UNZIP" -p "$zip_path" packs-local.txt >out &&
grep ".git/objects" out &&
"$GIT_UNZIP" -p "$zip_path" objects-local.txt >out &&
grep "^Total: [0-9][0-9]*" out &&
# Should not include .git directory contents by default
! "$GIT_UNZIP" -l "$zip_path" | grep ".git/"
Diagnostics complete.
All of the gathered info is captured in 'report/git-diagnostics-test.zip'
Available space on '/<<PKGBUILDDIR>>/t/trash directory.t0092-diagnose': 443.22 GiB (mount flags 0x1000)
Contents of .git/objects:
Total: 0 loose objects
ok 1 - creates diagnostics zip archive
expecting success of 0092.2 'counts loose objects':
test_commit A &&
# After committing, should have non-zero loose objects
git diagnose -o test-count -s 1 >out &&
zip_path=test-count/git-diagnostics-1.zip &&
"$GIT_UNZIP" -p "$zip_path" objects-local.txt >out &&
grep "^Total: [1-9][0-9]* loose objects" out
[master (root-commit) 0ddfaf1] A
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 A.t
Diagnostics complete.
All of the gathered info is captured in 'test-count/git-diagnostics-1.zip'
Total: 3 loose objects
ok 2 - counts loose objects
expecting success of 0092.3 '--mode=stats excludes .git dir contents':
test_when_finished rm -rf report &&
git diagnose -o report -s test --mode=stats >out &&
# Includes pack quantity/size info
zip_path=report/git-diagnostics-test.zip &&
"$GIT_UNZIP" -p "$zip_path" packs-local.txt >out &&
grep ".git/objects" out &&
# Does not include .git directory contents
! "$GIT_UNZIP" -l "$zip_path" | grep ".git/"
Diagnostics complete.
All of the gathered info is captured in 'report/git-diagnostics-test.zip'
Contents of .git/objects:
ok 3 - --mode=stats excludes .git dir contents
expecting success of 0092.4 '--mode=all includes .git dir contents':
test_when_finished rm -rf report &&
git diagnose -o report -s test --mode=all >out &&
# Includes pack quantity/size info
zip_path=report/git-diagnostics-test.zip &&
"$GIT_UNZIP" -p "$zip_path" packs-local.txt >out &&
grep ".git/objects" out &&
# Includes .git directory contents
"$GIT_UNZIP" -l "$zip_path" | grep ".git/" &&
"$GIT_UNZIP" -p "$zip_path" .git/HEAD >out &&
test_file_not_empty out
Diagnostics complete.
All of the gathered info is captured in 'report/git-diagnostics-test.zip'
Contents of .git/objects:
73 2023-10-09 02:17 .git/description
23 2023-10-09 02:17 .git/HEAD
92 2023-10-09 02:17 .git/config
137 2023-10-09 02:17 .git/index
2 2023-10-09 02:17 .git/COMMIT_EDITMSG
478 2023-10-09 02:17 .git/hooks/applypatch-msg.sample
896 2023-10-09 02:17 .git/hooks/commit-msg.sample
4726 2023-10-09 02:17 .git/hooks/fsmonitor-watchman.sample
189 2023-10-09 02:17 .git/hooks/post-update.sample
424 2023-10-09 02:17 .git/hooks/pre-applypatch.sample
1643 2023-10-09 02:17 .git/hooks/pre-commit.sample
416 2023-10-09 02:17 .git/hooks/pre-merge-commit.sample
1374 2023-10-09 02:17 .git/hooks/pre-push.sample
4898 2023-10-09 02:17 .git/hooks/pre-rebase.sample
544 2023-10-09 02:17 .git/hooks/pre-receive.sample
1492 2023-10-09 02:17 .git/hooks/prepare-commit-msg.sample
2783 2023-10-09 02:17 .git/hooks/push-to-checkout.sample
2308 2023-10-09 02:17 .git/hooks/sendemail-validate.sample
3650 2023-10-09 02:17 .git/hooks/update.sample
240 2023-10-09 02:17 .git/info/exclude
154 2023-10-09 02:17 .git/logs/HEAD
154 2023-10-09 02:17 .git/logs/refs/heads/master
ok 4 - --mode=all includes .git dir contents
# passed all 4 test(s)
1..4
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0095-bloom.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0095-bloom/.git/
expecting success of 0095.1 'compute unseeded murmur3 hash for empty string':
cat >expect <<-\EOF &&
Murmur3 Hash with seed=0:0x00000000
EOF
test-tool bloom get_murmur3 "" >actual &&
test_cmp expect actual
ok 1 - compute unseeded murmur3 hash for empty string
expecting success of 0095.2 'compute unseeded murmur3 hash for test string 1':
cat >expect <<-\EOF &&
Murmur3 Hash with seed=0:0x627b0c2c
EOF
test-tool bloom get_murmur3 "Hello world!" >actual &&
test_cmp expect actual
ok 2 - compute unseeded murmur3 hash for test string 1
expecting success of 0095.3 'compute unseeded murmur3 hash for test string 2':
cat >expect <<-\EOF &&
Murmur3 Hash with seed=0:0x2e4ff723
EOF
test-tool bloom get_murmur3 "The quick brown fox jumps over the lazy dog" >actual &&
test_cmp expect actual
ok 3 - compute unseeded murmur3 hash for test string 2
expecting success of 0095.4 'compute bloom key for empty string':
cat >expect <<-\EOF &&
Hashes:0x5615800c|0x5b966560|0x61174ab4|0x66983008|0x6c19155c|0x7199fab0|0x771ae004|
Filter_Length:2
Filter_Data:11|11|
EOF
test-tool bloom generate_filter "" >actual &&
test_cmp expect actual
ok 4 - compute bloom key for empty string
expecting success of 0095.5 'compute bloom key for whitespace':
cat >expect <<-\EOF &&
Hashes:0xf178874c|0x5f3d6eb6|0xcd025620|0x3ac73d8a|0xa88c24f4|0x16510c5e|0x8415f3c8|
Filter_Length:2
Filter_Data:51|55|
EOF
test-tool bloom generate_filter " " >actual &&
test_cmp expect actual
ok 5 - compute bloom key for whitespace
expecting success of 0095.6 'compute bloom key for test string 1':
cat >expect <<-\EOF &&
Hashes:0xb270de9b|0x1bb6f26e|0x84fd0641|0xee431a14|0x57892de7|0xc0cf41ba|0x2a15558d|
Filter_Length:2
Filter_Data:92|6c|
EOF
test-tool bloom generate_filter "Hello world!" >actual &&
test_cmp expect actual
ok 6 - compute bloom key for test string 1
expecting success of 0095.7 'compute bloom key for test string 2':
cat >expect <<-\EOF &&
Hashes:0x20ab385b|0xf5237fe2|0xc99bc769|0x9e140ef0|0x728c5677|0x47049dfe|0x1b7ce585|
Filter_Length:2
Filter_Data:a5|4a|
EOF
test-tool bloom generate_filter "file.txt" >actual &&
test_cmp expect actual
ok 7 - compute bloom key for test string 2
expecting success of 0095.8 'get bloom filters for commit with no changes':
git init &&
git commit --allow-empty -m "c0" &&
cat >expect <<-\EOF &&
Filter_Length:1
Filter_Data:00|
EOF
test-tool bloom get_filter_for_commit "$(git rev-parse HEAD)" >actual &&
test_cmp expect actual
Reinitialized existing Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0095-bloom/.git/
[master (root-commit) c7bd1a3] c0
Author: A U Thor <author@example.com>
ok 8 - get bloom filters for commit with no changes
expecting success of 0095.9 'get bloom filter for commit with 10 changes':
rm actual &&
rm expect &&
mkdir smallDir &&
for i in $(test_seq 0 9)
do
echo $i >smallDir/$i || return 1
done &&
git add smallDir &&
git commit -m "commit with 10 changes" &&
cat >expect <<-\EOF &&
Filter_Length:14
Filter_Data:02|b3|c4|a0|34|e7|fe|eb|cb|47|fe|a0|e8|72|
EOF
test-tool bloom get_filter_for_commit "$(git rev-parse HEAD)" >actual &&
test_cmp expect actual
[master 2444bb6] commit with 10 changes
Author: A U Thor <author@example.com>
10 files changed, 10 insertions(+)
create mode 100644 smallDir/0
create mode 100644 smallDir/1
create mode 100644 smallDir/2
create mode 100644 smallDir/3
create mode 100644 smallDir/4
create mode 100644 smallDir/5
create mode 100644 smallDir/6
create mode 100644 smallDir/7
create mode 100644 smallDir/8
create mode 100644 smallDir/9
ok 9 - get bloom filter for commit with 10 changes
checking prerequisite: EXPENSIVE
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-EXPENSIVE" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-EXPENSIVE" &&
test -n "$GIT_TEST_LONG"
)
prerequisite EXPENSIVE not satisfied
ok 10 # skip get bloom filter for commit with 513 changes (missing EXPENSIVE)
# passed all 10 test(s)
1..10
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0090-cache-tree.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0090-cache-tree/.git/
expecting success of 0090.1 'initial commit has cache-tree':
test_commit foo &&
test_cache_tree
[master (root-commit) ddd63c9] foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo.t
ok 1 - initial commit has cache-tree
expecting success of 0090.2 'read-tree HEAD establishes cache-tree':
git read-tree HEAD &&
test_cache_tree
ok 2 - read-tree HEAD establishes cache-tree
expecting success of 0090.3 'git-add invalidates cache-tree':
test_when_finished "git reset --hard; git read-tree HEAD" &&
echo "I changed this file" >foo &&
git add foo &&
test_invalid_cache_tree
HEAD is now at ddd63c9 foo
ok 3 - git-add invalidates cache-tree
expecting success of 0090.4 'git-add in subdir invalidates cache-tree':
test_when_finished "git reset --hard; git read-tree HEAD" &&
mkdir dirx &&
echo "I changed this file" >dirx/foo &&
git add dirx/foo &&
test_invalid_cache_tree
error: invalid object 040000 59d259507ddf2acc00997a8b70c61d7bdc240440 for 'dirx'
HEAD is now at ddd63c9 foo
ok 4 - git-add in subdir invalidates cache-tree
expecting success of 0090.5 'git-add in subdir does not invalidate sibling cache-tree':
git tag no-children &&
test_when_finished "git reset --hard no-children; git read-tree HEAD" &&
mkdir dir1 dir2 &&
test_commit dir1/a &&
test_commit dir2/b &&
echo "I changed this file" >dir1/a &&
test_when_finished "rm before" &&
cat >before <<-\EOF &&
SHA (3 entries, 2 subtrees)
SHA dir1/ (1 entries, 0 subtrees)
SHA dir2/ (1 entries, 0 subtrees)
EOF
cmp_cache_tree before &&
echo "I changed this file" >dir1/a &&
git add dir1/a &&
cat >expect <<-\EOF &&
invalid (2 subtrees)
invalid dir1/ (0 subtrees)
SHA dir2/ (1 entries, 0 subtrees)
EOF
cmp_cache_tree expect
[master 365c8fc] dir1/a
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 dir1/a.t
[master 8be4607] dir2/b
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 dir2/b.t
error: invalid object 040000 3b5b859722b671676295bf3795f34b8c6f2393f5 for 'dir1'
HEAD is now at ddd63c9 foo
ok 5 - git-add in subdir does not invalidate sibling cache-tree
expecting success of 0090.6 'update-index invalidates cache-tree':
test_when_finished "git reset --hard; git read-tree HEAD" &&
echo "I changed this file" >foo &&
git update-index --add foo &&
test_invalid_cache_tree
HEAD is now at ddd63c9 foo
ok 6 - update-index invalidates cache-tree
expecting success of 0090.7 'write-tree establishes cache-tree':
test-tool scrap-cache-tree &&
git write-tree &&
test_cache_tree
64fd3796c57084e7b8cbae358ce37970b8e954f6
ok 7 - write-tree establishes cache-tree
expecting success of 0090.8 'test-tool scrap-cache-tree works':
git read-tree HEAD &&
test-tool scrap-cache-tree &&
test_no_cache_tree
ok 8 - test-tool scrap-cache-tree works
expecting success of 0090.9 'second commit has cache-tree':
test_commit bar &&
test_cache_tree
[master eeeeed8] bar
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 bar.t
ok 9 - second commit has cache-tree
expecting success of 0090.10 'commit --interactive gives cache-tree on partial commit':
test_when_finished "git reset --hard" &&
cat <<-\EOT >foo.c &&
int foo()
{
return 42;
}
int bar()
{
return 42;
}
EOT
git add foo.c &&
test_invalid_cache_tree &&
git commit -m "add a file" &&
test_cache_tree &&
cat <<-\EOT >foo.c &&
int foo()
{
return 43;
}
int bar()
{
return 44;
}
EOT
test_write_lines p 1 "" s n y q |
git commit --interactive -m foo &&
cat <<-\EOF >expected.status &&
M foo.c
EOF
test_cache_tree expected.status
[master d1075a6] add a file
Author: A U Thor <author@example.com>
1 file changed, 8 insertions(+)
create mode 100644 foo.c
staged unstaged path
1: unchanged +2/-2 foo.c
*** Commands ***
1: [s]tatus 2: [u]pdate 3: [r]evert 4: [a]dd untracked
5: [p]atch 6: [d]iff 7: [q]uit 8: [h]elp
What now> staged unstaged path
1: unchanged +2/-2 [f]oo.c
Patch update>> staged unstaged path
* 1: unchanged +2/-2 [f]oo.c
Patch update>> diff --git a/foo.c b/foo.c
index 75522e2..3f7f049 100644
--- a/foo.c
+++ b/foo.c
@@ -1,8 +1,8 @@
int foo()
{
-return 42;
+return 43;
}
int bar()
{
-return 42;
+return 44;
}
(1/1) Stage this hunk [y,n,q,a,d,s,e,?]? Split into 2 hunks.
@@ -1,6 +1,6 @@
int foo()
{
-return 42;
+return 43;
}
int bar()
{
(1/2) Stage this hunk [y,n,q,a,d,j,J,g,/,e,?]? @@ -4,5 +4,5 @@
}
int bar()
{
-return 42;
+return 44;
}
(2/2) Stage this hunk [y,n,q,a,d,K,g,/,e,?]?
*** Commands ***
1: [s]tatus 2: [u]pdate 3: [r]evert 4: [a]dd untracked
5: [p]atch 6: [d]iff 7: [q]uit 8: [h]elp
What now> Bye.
[master 65d7dde] foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
HEAD is now at 65d7dde foo
ok 10 - commit --interactive gives cache-tree on partial commit
expecting success of 0090.11 'commit -p with shrinking cache-tree':
mkdir -p deep/very-long-subdir &&
echo content >deep/very-long-subdir/file &&
git add deep &&
git commit -m add &&
git rm -r deep &&
before=$(wc -c <.git/index) &&
git commit -m delete -p &&
after=$(wc -c <.git/index) &&
# double check that the index shrank
test $before -gt $after &&
# and that our index was not corrupted
git fsck
[master 10c383a] add
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 deep/very-long-subdir/file
rm 'deep/very-long-subdir/file'
No changes.
[master 73c66c3] delete
Author: A U Thor <author@example.com>
1 file changed, 1 deletion(-)
delete mode 100644 deep/very-long-subdir/file
dangling blob d238b40d1657b1cc3ebd9a3c55ef04f303c694ae
ok 11 - commit -p with shrinking cache-tree
expecting success of 0090.12 'commit in child dir has cache-tree':
mkdir dir &&
>dir/child.t &&
git add dir/child.t &&
git commit -m dir/child.t &&
test_cache_tree
[master d3413ee] dir/child.t
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 dir/child.t
ok 12 - commit in child dir has cache-tree
expecting success of 0090.13 'reset --hard gives cache-tree':
test-tool scrap-cache-tree &&
git reset --hard &&
test_cache_tree
HEAD is now at d3413ee dir/child.t
ok 13 - reset --hard gives cache-tree
expecting success of 0090.14 'reset --hard without index gives cache-tree':
rm -f .git/index &&
git clean -fd &&
git reset --hard &&
test_cache_tree
Removing bar.t
Removing dir/
Removing expected.status
Removing foo.c
Removing foo.t
Removing status
HEAD is now at d3413ee dir/child.t
ok 14 - reset --hard without index gives cache-tree
expecting success of 0090.15 'checkout gives cache-tree':
git tag current &&
git checkout HEAD^ &&
test_cache_tree
Note: switching to 'HEAD^'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 73c66c3 delete
ok 15 - checkout gives cache-tree
expecting success of 0090.16 'checkout -b gives cache-tree':
git checkout current &&
git checkout -b prev HEAD^ &&
test_cache_tree
Previous HEAD position was 73c66c3 delete
HEAD is now at d3413ee dir/child.t
Previous HEAD position was d3413ee dir/child.t
Switched to a new branch 'prev'
ok 16 - checkout -b gives cache-tree
expecting success of 0090.17 'checkout -B gives cache-tree':
git checkout current &&
git checkout -B prev HEAD^ &&
test_cache_tree
Note: switching to 'current'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at d3413ee dir/child.t
Previous HEAD position was d3413ee dir/child.t
Switched to and reset branch 'prev'
ok 17 - checkout -B gives cache-tree
expecting success of 0090.18 'merge --ff-only maintains cache-tree':
git checkout current &&
git checkout -b changes &&
test_commit llamas &&
test_commit pachyderm &&
test_cache_tree &&
git checkout current &&
test_cache_tree &&
git merge --ff-only changes &&
test_cache_tree
Note: switching to 'current'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at d3413ee dir/child.t
Switched to a new branch 'changes'
[changes 229c856] llamas
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 llamas.t
[changes f10d9f3] pachyderm
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 pachyderm.t
Note: switching to 'current'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at d3413ee dir/child.t
Updating d3413ee..f10d9f3
Fast-forward
llamas.t | 1 +
pachyderm.t | 1 +
2 files changed, 2 insertions(+)
create mode 100644 llamas.t
create mode 100644 pachyderm.t
ok 18 - merge --ff-only maintains cache-tree
expecting success of 0090.19 'merge maintains cache-tree':
git checkout current &&
git checkout -b changes2 &&
test_commit alpacas &&
test_cache_tree &&
git checkout current &&
test_commit struthio &&
test_cache_tree &&
git merge changes2 &&
test_cache_tree
Previous HEAD position was f10d9f3 pachyderm
HEAD is now at d3413ee dir/child.t
Switched to a new branch 'changes2'
[changes2 4b1575a] alpacas
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 alpacas.t
Note: switching to 'current'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at d3413ee dir/child.t
[detached HEAD 5a63c6d] struthio
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 struthio.t
Merge made by the 'ort' strategy.
alpacas.t | 1 +
1 file changed, 1 insertion(+)
create mode 100644 alpacas.t
ok 19 - merge maintains cache-tree
expecting success of 0090.20 'partial commit gives cache-tree':
git checkout -b partial no-children &&
test_commit one &&
test_commit two &&
echo "some change" >one.t &&
git add one.t &&
echo "some other change" >two.t &&
git commit two.t -m partial &&
cat <<-\EOF >expected.status &&
M one.t
EOF
test_cache_tree expected.status
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
e104fa1 Merge branch 'changes2' into HEAD
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> e104fa1
Switched to a new branch 'partial'
[partial 6771940] one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 one.t
[partial cd7fad9] two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 two.t
[partial f24c7c2] partial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 20 - partial commit gives cache-tree
expecting success of 0090.21 'no phantom error when switching trees':
mkdir newdir &&
>newdir/one &&
git add newdir/one &&
git checkout 2>errors &&
test_must_be_empty errors
A newdir/one
M one.t
ok 21 - no phantom error when switching trees
expecting success of 0090.22 'switching trees does not invalidate shared index':
(
sane_unset GIT_TEST_SPLIT_INDEX &&
git update-index --split-index &&
>split &&
git add split &&
test-tool dump-split-index .git/index | grep -v ^own >before &&
git commit -m "as-is" &&
test-tool dump-split-index .git/index | grep -v ^own >after &&
test_cmp before after
)
[partial dc7a831] as-is
Author: A U Thor <author@example.com>
3 files changed, 1 insertion(+), 1 deletion(-)
create mode 100644 newdir/one
create mode 100644 split
ok 22 - switching trees does not invalidate shared index
# passed all 22 test(s)
1..22
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0100-previous.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0100-previous/.git/
expecting success of 0100.1 'branch -d @{-1}':
test_commit A &&
git checkout -b junk &&
git checkout - &&
echo refs/heads/main >expect &&
git symbolic-ref HEAD >actual &&
test_cmp expect actual &&
git branch -d @{-1} &&
test_must_fail git rev-parse --verify refs/heads/junk
[main (root-commit) 0ddfaf1] A
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 A.t
Switched to a new branch 'junk'
Switched to branch 'main'
Deleted branch junk (was 0ddfaf1).
fatal: Needed a single revision
ok 1 - branch -d @{-1}
expecting success of 0100.2 'branch -d @{-12} when there is not enough switches yet':
git reflog expire --expire=now &&
git checkout -b junk2 &&
git checkout - &&
echo refs/heads/main >expect &&
git symbolic-ref HEAD >actual &&
test_cmp expect actual &&
test_must_fail git branch -d @{-12} &&
git rev-parse --verify refs/heads/main
Switched to a new branch 'junk2'
Switched to branch 'main'
error: branch '@{-12}' not found.
0ddfaf193ff13d6ab39b7cbd9eed645e3ee2f050
ok 2 - branch -d @{-12} when there is not enough switches yet
expecting success of 0100.3 'merge @{-1}':
git checkout A &&
test_commit B &&
git checkout A &&
test_commit C &&
test_commit D &&
git branch -f main B &&
git branch -f other &&
git checkout other &&
git checkout main &&
git merge @{-1} &&
git cat-file commit HEAD | grep "Merge branch 'other'"
Note: switching to 'A'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 0ddfaf1 A
[detached HEAD d9df450] B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 B.t
Previous HEAD position was d9df450 B
HEAD is now at 0ddfaf1 A
[detached HEAD 5dee784] C
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 C.t
[detached HEAD 12bd07b] D
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 D.t
Switched to branch 'other'
Switched to branch 'main'
Merge made by the 'ort' strategy.
C.t | 1 +
D.t | 1 +
2 files changed, 2 insertions(+)
create mode 100644 C.t
create mode 100644 D.t
Merge branch 'other'
ok 3 - merge @{-1}
expecting success of 0100.4 'merge @{-1}~1':
git checkout main &&
git reset --hard B &&
git checkout other &&
git checkout main &&
git merge @{-1}~1 &&
git cat-file commit HEAD >actual &&
grep "Merge branch 'other'" actual
Already on 'main'
HEAD is now at d9df450 B
Switched to branch 'other'
Switched to branch 'main'
Merge made by the 'ort' strategy.
C.t | 1 +
1 file changed, 1 insertion(+)
create mode 100644 C.t
Merge branch 'other' (early part)
ok 4 - merge @{-1}~1
expecting success of 0100.5 'merge @{-100} before checking out that many branches yet':
git reflog expire --expire=now &&
git checkout -f main &&
git reset --hard B &&
git branch -f other C &&
git checkout other &&
git checkout main &&
test_must_fail git merge @{-100}
Already on 'main'
HEAD is now at d9df450 B
Switched to branch 'other'
Switched to branch 'main'
merge: @{-100} - not something we can merge
ok 5 - merge @{-100} before checking out that many branches yet
expecting success of 0100.6 'log -g @{-1}':
git checkout -b last_branch &&
git checkout -b new_branch &&
echo "last_branch@{0}" >expect &&
git log -g --format=%gd @{-1} >actual &&
test_cmp expect actual
Switched to a new branch 'last_branch'
Switched to a new branch 'new_branch'
ok 6 - log -g @{-1}
# passed all 6 test(s)
1..6
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0101-at-syntax.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0101-at-syntax/.git/
expecting success of 0101.1 'setup':
test_commit one &&
test_commit two
[master (root-commit) d79ce16] one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 one.t
[master 139b20d] two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 two.t
ok 1 - setup
expecting success of 0101.2 '@{0} shows current':
check_at @{0} two
ok 2 - @{0} shows current
expecting success of 0101.3 '@{1} shows old':
check_at @{1} one
ok 3 - @{1} shows old
expecting success of 0101.4 '@{now} shows current':
check_at @{now} two
ok 4 - @{now} shows current
expecting success of 0101.5 '@{2001-09-17} (before the first commit) shows old':
check_at @{2001-09-17} one
warning: log for 'master' only goes back to Thu, 7 Apr 2005 15:13:13 -0700
ok 5 - @{2001-09-17} (before the first commit) shows old
expecting success of 0101.6 'silly approxidates work':
check_at @{3.hot.dogs.on.2001-09-17} one
warning: log for 'master' only goes back to Thu, 7 Apr 2005 15:13:13 -0700
ok 6 - silly approxidates work
expecting success of 0101.7 'notice misspelled upstream':
test_must_fail git log -1 --format=%s @{usptream}
fatal: ambiguous argument '@{usptream}': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
ok 7 - notice misspelled upstream
expecting success of 0101.8 'complain about total nonsense':
test_must_fail git log -1 --format=%s @{utter.bogosity}
fatal: ambiguous argument '@{utter.bogosity}': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
ok 8 - complain about total nonsense
# passed all 8 test(s)
1..8
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0200-gettext-basic.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0200-gettext-basic/.git/
# lib-gettext: No is_IS UTF-8 locale available
# lib-gettext: No is_IS ISO-8859-1 locale available
expecting success of 0200.1 'sanity: $GIT_INTERNAL_GETTEXT_SH_SCHEME is set (to gnu)':
test -n "$GIT_INTERNAL_GETTEXT_SH_SCHEME"
ok 1 - sanity: $GIT_INTERNAL_GETTEXT_SH_SCHEME is set (to gnu)
expecting success of 0200.2 'sanity: $TEXTDOMAIN is git':
test $TEXTDOMAIN = "git"
ok 2 - sanity: $TEXTDOMAIN is git
expecting success of 0200.3 'xgettext sanity: Perl _() strings are not extracted':
! grep "A Perl string xgettext will not get" "$GIT_PO_PATH"/is.po
ok 3 - xgettext sanity: Perl _() strings are not extracted
expecting success of 0200.4 'xgettext sanity: Comment extraction with --add-comments':
grep "TRANSLATORS: This is a test" "$TEST_DIRECTORY"/t0200/* | wc -l >expect &&
grep "TRANSLATORS: This is a test" "$GIT_PO_PATH"/is.po | wc -l >actual &&
test_cmp expect actual
ok 4 - xgettext sanity: Comment extraction with --add-comments
expecting success of 0200.5 'xgettext sanity: Comment extraction with --add-comments stops at statements':
! grep "This is a phony" "$GIT_PO_PATH"/is.po &&
! grep "the above comment" "$GIT_PO_PATH"/is.po
ok 5 - xgettext sanity: Comment extraction with --add-comments stops at statements
expecting success of 0200.6 'sanity: $TEXTDOMAINDIR exists without NO_GETTEXT=YesPlease':
test -d "$TEXTDOMAINDIR" &&
test "$TEXTDOMAINDIR" = "$GIT_TEXTDOMAINDIR"
ok 6 - sanity: $TEXTDOMAINDIR exists without NO_GETTEXT=YesPlease
expecting success of 0200.7 'sanity: Icelandic locale was compiled':
test -f "$TEXTDOMAINDIR/is/LC_MESSAGES/git.mo"
ok 7 - sanity: Icelandic locale was compiled
ok 8 # skip sanity: gettext("") metadata is OK (missing GETTEXT_LOCALE)
ok 9 # skip sanity: gettext(unknown) is passed through (missing GETTEXT_LOCALE)
ok 10 # skip xgettext: C extraction of _() and N_() strings (missing GETTEXT_LOCALE)
ok 11 # skip xgettext: C extraction with %s (missing GETTEXT_LOCALE)
ok 12 # skip xgettext: Shell extraction (missing GETTEXT_LOCALE)
ok 13 # skip xgettext: Shell extraction with $variable (missing GETTEXT_LOCALE)
ok 14 # skip xgettext: Perl extraction (missing GETTEXT_LOCALE)
ok 15 # skip xgettext: Perl extraction with %s (missing GETTEXT_LOCALE)
ok 16 # skip sanity: Some gettext("") data for real locale (missing GETTEXT_LOCALE)
# passed all 16 test(s)
1..16
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0201-gettext-fallbacks.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0201-gettext-fallbacks/.git/
# lib-gettext: No is_IS UTF-8 locale available
# lib-gettext: No is_IS ISO-8859-1 locale available
expecting success of 0201.1 'sanity: $GIT_INTERNAL_GETTEXT_SH_SCHEME is set (to fallthrough)':
test -n "$GIT_INTERNAL_GETTEXT_SH_SCHEME"
ok 1 - sanity: $GIT_INTERNAL_GETTEXT_SH_SCHEME is set (to fallthrough)
expecting success of 0201.2 'sanity: $GIT_INTERNAL_GETTEXT_TEST_FALLBACKS is set':
test -n "$GIT_INTERNAL_GETTEXT_TEST_FALLBACKS"
ok 2 - sanity: $GIT_INTERNAL_GETTEXT_TEST_FALLBACKS is set
expecting success of 0201.3 'sanity: $GIT_INTERNAL_GETTEXT_SH_SCHEME" is fallthrough':
echo fallthrough >expect &&
echo $GIT_INTERNAL_GETTEXT_SH_SCHEME >actual &&
test_cmp expect actual
ok 3 - sanity: $GIT_INTERNAL_GETTEXT_SH_SCHEME" is fallthrough
expecting success of 0201.4 'gettext: our gettext() fallback has pass-through semantics':
printf "test" >expect &&
gettext "test" >actual &&
test_cmp expect actual &&
printf "test more words" >expect &&
gettext "test more words" >actual &&
test_cmp expect actual
ok 4 - gettext: our gettext() fallback has pass-through semantics
expecting success of 0201.5 'eval_gettext: our eval_gettext() fallback has pass-through semantics':
printf "test" >expect &&
eval_gettext "test" >actual &&
test_cmp expect actual &&
printf "test more words" >expect &&
eval_gettext "test more words" >actual &&
test_cmp expect actual
ok 5 - eval_gettext: our eval_gettext() fallback has pass-through semantics
expecting success of 0201.6 'eval_gettext: our eval_gettext() fallback can interpolate variables':
printf "test YesPlease" >expect &&
GIT_INTERNAL_GETTEXT_TEST_FALLBACKS=YesPlease eval_gettext "test \$GIT_INTERNAL_GETTEXT_TEST_FALLBACKS" >actual &&
test_cmp expect actual
ok 6 - eval_gettext: our eval_gettext() fallback can interpolate variables
expecting success of 0201.7 'eval_gettext: our eval_gettext() fallback can interpolate variables with spaces':
cmdline="git am" &&
export cmdline &&
printf "When you have resolved this problem, run git am --resolved." >expect &&
eval_gettext "When you have resolved this problem, run \$cmdline --resolved." >actual &&
test_cmp expect actual
ok 7 - eval_gettext: our eval_gettext() fallback can interpolate variables with spaces
expecting success of 0201.8 'eval_gettext: our eval_gettext() fallback can interpolate variables with spaces and quotes':
cmdline="git am" &&
export cmdline &&
printf "When you have resolved this problem, run \"git am --resolved\"." >expect &&
eval_gettext "When you have resolved this problem, run \"\$cmdline --resolved\"." >actual &&
test_cmp expect actual
ok 8 - eval_gettext: our eval_gettext() fallback can interpolate variables with spaces and quotes
# passed all 8 test(s)
1..8
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0110-urlmatch-normalization.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0110-urlmatch-normalization/.git/
expecting success of 0110.1 'url scheme':
! test-tool urlmatch-normalization "" &&
! test-tool urlmatch-normalization "_" &&
! test-tool urlmatch-normalization "scheme" &&
! test-tool urlmatch-normalization "scheme:" &&
! test-tool urlmatch-normalization "scheme:/" &&
! test-tool urlmatch-normalization "scheme://" &&
! test-tool urlmatch-normalization "file" &&
! test-tool urlmatch-normalization "file:" &&
! test-tool urlmatch-normalization "file:/" &&
test-tool urlmatch-normalization "file://" &&
! test-tool urlmatch-normalization "://acme.co" &&
! test-tool urlmatch-normalization "x_test://acme.co" &&
! test-tool urlmatch-normalization "-test://acme.co" &&
! test-tool urlmatch-normalization "0test://acme.co" &&
! test-tool urlmatch-normalization "+test://acme.co" &&
! test-tool urlmatch-normalization ".test://acme.co" &&
! test-tool urlmatch-normalization "schem%6e://" &&
test-tool urlmatch-normalization "x-Test+v1.0://acme.co" &&
test "$(test-tool urlmatch-normalization -p "AbCdeF://x.Y")" = "abcdef://x.y/"
ok 1 - url scheme
expecting success of 0110.2 'url authority':
! test-tool urlmatch-normalization "scheme://user:pass@" &&
! test-tool urlmatch-normalization "scheme://?" &&
! test-tool urlmatch-normalization "scheme://#" &&
! test-tool urlmatch-normalization "scheme:///" &&
! test-tool urlmatch-normalization "scheme://:" &&
! test-tool urlmatch-normalization "scheme://:555" &&
test-tool urlmatch-normalization "file://user:pass@" &&
test-tool urlmatch-normalization "file://?" &&
test-tool urlmatch-normalization "file://#" &&
test-tool urlmatch-normalization "file:///" &&
test-tool urlmatch-normalization "file://:" &&
! test-tool urlmatch-normalization "file://:555" &&
test-tool urlmatch-normalization "scheme://user:pass@host" &&
test-tool urlmatch-normalization "scheme://@host" &&
test-tool urlmatch-normalization "scheme://%00@host" &&
! test-tool urlmatch-normalization "scheme://%%@host" &&
test-tool urlmatch-normalization "scheme://host_" &&
test-tool urlmatch-normalization "scheme://user:pass@host/" &&
test-tool urlmatch-normalization "scheme://@host/" &&
test-tool urlmatch-normalization "scheme://host/" &&
test-tool urlmatch-normalization "scheme://host?x" &&
test-tool urlmatch-normalization "scheme://host#x" &&
test-tool urlmatch-normalization "scheme://host/@" &&
test-tool urlmatch-normalization "scheme://host?@x" &&
test-tool urlmatch-normalization "scheme://host#@x" &&
test-tool urlmatch-normalization "scheme://[::1]" &&
test-tool urlmatch-normalization "scheme://[::1]/" &&
! test-tool urlmatch-normalization "scheme://hos%41/" &&
test-tool urlmatch-normalization "scheme://[invalid....:/" &&
test-tool urlmatch-normalization "scheme://invalid....:]/" &&
! test-tool urlmatch-normalization "scheme://invalid....:[/" &&
! test-tool urlmatch-normalization "scheme://invalid....:["
ok 2 - url authority
expecting success of 0110.3 'url port checks':
test-tool urlmatch-normalization "xyz://q@some.host:" &&
test-tool urlmatch-normalization "xyz://q@some.host:456/" &&
! test-tool urlmatch-normalization "xyz://q@some.host:0" &&
! test-tool urlmatch-normalization "xyz://q@some.host:0000000" &&
test-tool urlmatch-normalization "xyz://q@some.host:0000001?" &&
test-tool urlmatch-normalization "xyz://q@some.host:065535#" &&
test-tool urlmatch-normalization "xyz://q@some.host:65535" &&
! test-tool urlmatch-normalization "xyz://q@some.host:65536" &&
! test-tool urlmatch-normalization "xyz://q@some.host:99999" &&
! test-tool urlmatch-normalization "xyz://q@some.host:100000" &&
! test-tool urlmatch-normalization "xyz://q@some.host:100001" &&
test-tool urlmatch-normalization "http://q@some.host:80" &&
test-tool urlmatch-normalization "https://q@some.host:443" &&
test-tool urlmatch-normalization "http://q@some.host:80/" &&
test-tool urlmatch-normalization "https://q@some.host:443?" &&
! test-tool urlmatch-normalization "http://q@:8008" &&
! test-tool urlmatch-normalization "http://:8080" &&
! test-tool urlmatch-normalization "http://:" &&
test-tool urlmatch-normalization "xyz://q@some.host:456/" &&
test-tool urlmatch-normalization "xyz://[::1]:456/" &&
test-tool urlmatch-normalization "xyz://[::1]:/" &&
! test-tool urlmatch-normalization "xyz://[::1]:000/" &&
! test-tool urlmatch-normalization "xyz://[::1]:0%300/" &&
! test-tool urlmatch-normalization "xyz://[::1]:0x80/" &&
! test-tool urlmatch-normalization "xyz://[::1]:4294967297/" &&
! test-tool urlmatch-normalization "xyz://[::1]:030f/"
ok 3 - url port checks
expecting success of 0110.4 'url port normalization':
test "$(test-tool urlmatch-normalization -p "http://x:800")" = "http://x:800/" &&
test "$(test-tool urlmatch-normalization -p "http://x:0800")" = "http://x:800/" &&
test "$(test-tool urlmatch-normalization -p "http://x:00000800")" = "http://x:800/" &&
test "$(test-tool urlmatch-normalization -p "http://x:065535")" = "http://x:65535/" &&
test "$(test-tool urlmatch-normalization -p "http://x:1")" = "http://x:1/" &&
test "$(test-tool urlmatch-normalization -p "http://x:80")" = "http://x/" &&
test "$(test-tool urlmatch-normalization -p "http://x:080")" = "http://x/" &&
test "$(test-tool urlmatch-normalization -p "http://x:000000080")" = "http://x/" &&
test "$(test-tool urlmatch-normalization -p "https://x:443")" = "https://x/" &&
test "$(test-tool urlmatch-normalization -p "https://x:0443")" = "https://x/" &&
test "$(test-tool urlmatch-normalization -p "https://x:000000443")" = "https://x/"
ok 4 - url port normalization
expecting success of 0110.5 'url general escapes':
! test-tool urlmatch-normalization "http://x.y?%fg" &&
test "$(test-tool urlmatch-normalization -p "X://W/%7e%41^%3a")" = "x://w/~A%5E%3A" &&
test "$(test-tool urlmatch-normalization -p "X://W/:/?#[]@")" = "x://w/:/?#[]@" &&
test "$(test-tool urlmatch-normalization -p "X://W/$&()*+,;=")" = "x://w/$&()*+,;=" &&
test "$(test-tool urlmatch-normalization -p "X://W/'")" = "x://w/'" &&
test "$(test-tool urlmatch-normalization -p "X://W?!")" = "x://w/?!"
ok 5 - url general escapes
expecting success of 0110.6 'url high-bit escapes':
test "$(test-tool urlmatch-normalization -p "$(cat "$tu-1")")" = "x://q/%01%02%03%04%05%06%07%08%0E%0F%10%11%12" &&
test "$(test-tool urlmatch-normalization -p "$(cat "$tu-2")")" = "x://q/%13%14%15%16%17%18%19%1B%1C%1D%1E%1F%7F" &&
test "$(test-tool urlmatch-normalization -p "$(cat "$tu-3")")" = "x://q/%80%81%82%83%84%85%86%87%88%89%8A%8B%8C%8D%8E%8F" &&
test "$(test-tool urlmatch-normalization -p "$(cat "$tu-4")")" = "x://q/%90%91%92%93%94%95%96%97%98%99%9A%9B%9C%9D%9E%9F" &&
test "$(test-tool urlmatch-normalization -p "$(cat "$tu-5")")" = "x://q/%A0%A1%A2%A3%A4%A5%A6%A7%A8%A9%AA%AB%AC%AD%AE%AF" &&
test "$(test-tool urlmatch-normalization -p "$(cat "$tu-6")")" = "x://q/%B0%B1%B2%B3%B4%B5%B6%B7%B8%B9%BA%BB%BC%BD%BE%BF" &&
test "$(test-tool urlmatch-normalization -p "$(cat "$tu-7")")" = "x://q/%C0%C1%C2%C3%C4%C5%C6%C7%C8%C9%CA%CB%CC%CD%CE%CF" &&
test "$(test-tool urlmatch-normalization -p "$(cat "$tu-8")")" = "x://q/%D0%D1%D2%D3%D4%D5%D6%D7%D8%D9%DA%DB%DC%DD%DE%DF" &&
test "$(test-tool urlmatch-normalization -p "$(cat "$tu-9")")" = "x://q/%E0%E1%E2%E3%E4%E5%E6%E7%E8%E9%EA%EB%EC%ED%EE%EF" &&
test "$(test-tool urlmatch-normalization -p "$(cat "$tu-10")")" = "x://q/%F0%F1%F2%F3%F4%F5%F6%F7%F8%F9%FA%FB%FC%FD%FE%FF"
ok 6 - url high-bit escapes
expecting success of 0110.7 'url utf-8 escapes':
test "$(test-tool urlmatch-normalization -p "$(cat "$tu-11")")" = "x://q/%C2%80%DF%BF%E0%A0%80%EF%BF%BD%F0%90%80%80%F0%AF%BF%BD"
ok 7 - url utf-8 escapes
expecting success of 0110.8 'url username/password escapes':
test "$(test-tool urlmatch-normalization -p "x://%41%62(^):%70+d@foo")" = "x://Ab(%5E):p+d@foo/"
ok 8 - url username/password escapes
expecting success of 0110.9 'url normalized lengths':
test "$(test-tool urlmatch-normalization -l "Http://%4d%65:%4d^%70@The.Host")" = 25 &&
test "$(test-tool urlmatch-normalization -l "http://%41:%42@x.y/%61/")" = 17 &&
test "$(test-tool urlmatch-normalization -l "http://@x.y/^")" = 15
ok 9 - url normalized lengths
expecting success of 0110.10 'url . and .. segments':
test "$(test-tool urlmatch-normalization -p "x://y/.")" = "x://y/" &&
test "$(test-tool urlmatch-normalization -p "x://y/./")" = "x://y/" &&
test "$(test-tool urlmatch-normalization -p "x://y/a/.")" = "x://y/a" &&
test "$(test-tool urlmatch-normalization -p "x://y/a/./")" = "x://y/a/" &&
test "$(test-tool urlmatch-normalization -p "x://y/.?")" = "x://y/?" &&
test "$(test-tool urlmatch-normalization -p "x://y/./?")" = "x://y/?" &&
test "$(test-tool urlmatch-normalization -p "x://y/a/.?")" = "x://y/a?" &&
test "$(test-tool urlmatch-normalization -p "x://y/a/./?")" = "x://y/a/?" &&
test "$(test-tool urlmatch-normalization -p "x://y/a/./b/.././../c")" = "x://y/c" &&
test "$(test-tool urlmatch-normalization -p "x://y/a/./b/../.././c/")" = "x://y/c/" &&
test "$(test-tool urlmatch-normalization -p "x://y/a/./b/.././../c/././.././.")" = "x://y/" &&
! test-tool urlmatch-normalization "x://y/a/./b/.././../c/././.././.." &&
test "$(test-tool urlmatch-normalization -p "x://y/a/./?/././..")" = "x://y/a/?/././.." &&
test "$(test-tool urlmatch-normalization -p "x://y/%2e/")" = "x://y/" &&
test "$(test-tool urlmatch-normalization -p "x://y/%2E/")" = "x://y/" &&
test "$(test-tool urlmatch-normalization -p "x://y/a/%2e./")" = "x://y/" &&
test "$(test-tool urlmatch-normalization -p "x://y/b/.%2E/")" = "x://y/" &&
test "$(test-tool urlmatch-normalization -p "x://y/c/%2e%2E/")" = "x://y/"
ok 10 - url . and .. segments
expecting success of 0110.11 'url equivalents':
test-tool urlmatch-normalization "httP://x" "Http://X/" &&
test-tool urlmatch-normalization "Http://%4d%65:%4d^%70@The.Host" "hTTP://Me:%4D^p@the.HOST:80/" &&
! test-tool urlmatch-normalization "https://@x.y/^" "httpS://x.y:443/^" &&
test-tool urlmatch-normalization "https://@x.y/^" "httpS://@x.y:0443/^" &&
test-tool urlmatch-normalization "https://@x.y/^/../abc" "httpS://@x.y:0443/abc" &&
test-tool urlmatch-normalization "https://@x.y/^/.." "httpS://@x.y:0443/"
ok 11 - url equivalents
# passed all 11 test(s)
1..11
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0203-gettext-setlocale-sanity.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0203-gettext-setlocale-sanity/.git/
# lib-gettext: No is_IS UTF-8 locale available
# lib-gettext: No is_IS ISO-8859-1 locale available
expecting success of 0203.1 'git show a ISO-8859-1 commit under C locale':
. "$TEST_DIRECTORY"/t3901/8859-1.txt &&
test_commit "iso-c-commit" iso-under-c &&
git show >out 2>err &&
test_must_be_empty err &&
grep -q "iso-c-commit" out
Warning: commit message did not conform to UTF-8.
You may want to amend it after fixing the message, or set the config
variable i18n.commitEncoding to the encoding your project uses.
[master (root-commit) f2030b4] iso-c-commit
Author: Áéí óú <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 iso-under-c
ok 1 - git show a ISO-8859-1 commit under C locale
ok 2 # skip git show a ISO-8859-1 commit under a UTF-8 locale (missing GETTEXT_LOCALE)
# passed all 2 test(s)
1..2
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0204-gettext-reencode-sanity.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0204-gettext-reencode-sanity/.git/
# lib-gettext: No is_IS UTF-8 locale available
# lib-gettext: No is_IS ISO-8859-1 locale available
ok 1 # skip gettext: Emitting UTF-8 from our UTF-8 *.mo files / Icelandic (missing GETTEXT_LOCALE)
ok 2 # skip gettext: Emitting UTF-8 from our UTF-8 *.mo files / Runes (missing GETTEXT_LOCALE)
ok 3 # skip gettext: Emitting ISO-8859-1 from our UTF-8 *.mo files / Icelandic (missing GETTEXT_ISO_LOCALE)
ok 4 # skip gettext: impossible ISO-8859-1 output (missing GETTEXT_ISO_LOCALE)
ok 5 # skip gettext: Fetching a UTF-8 msgid -> UTF-8 (missing GETTEXT_LOCALE)
ok 6 # skip gettext: Fetching a UTF-8 msgid -> ISO-8859-1 (missing GETTEXT_ISO_LOCALE)
ok 7 # skip gettext.c: git init UTF-8 -> UTF-8 (missing GETTEXT_LOCALE)
ok 8 # skip gettext.c: git init UTF-8 -> ISO-8859-1 (missing GETTEXT_ISO_LOCALE)
# passed all 8 test(s)
1..8
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0202-gettext-perl.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0202-gettext-perl/.git/
# lib-gettext: No is_IS UTF-8 locale available
# lib-gettext: No is_IS ISO-8859-1 locale available
checking prerequisite: PERL_TEST_MORE
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-PERL_TEST_MORE" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-PERL_TEST_MORE" &&
perl -MTest::More -e 0
)
prerequisite PERL_TEST_MORE ok
expecting success of 0202.1 'run t0202/test.pl to test Git::I18N.pm':
"$PERL_PATH" "$TEST_DIRECTORY"/t0202/test.pl 2>stderr &&
test_must_be_empty stderr
1..13
ok 1 - Testing Git::I18N with NO Perl gettext library
ok 2 - Git::I18N is located at /<<PKGBUILDDIR>>/perl/build/lib/Git/I18N.pm
ok 3 - sanity: Git::I18N has 3 export(s)
ok 4 - sanity: Git::I18N exports everything by default
ok 5 - sanity: N__ has a $ prototype
ok 6 - sanity: __n has a $$$ prototype
ok 7 - sanity: __ has a $ prototype
ok 8 - Passing a string through __() in the C locale works
ok 9 - Get singular string through __n() in C locale
ok 10 - Get plural string through __n() in C locale
ok 11 - Passing a string through N__() in the C locale works
ok 12 # skip GETTEXT_LOCALE must be set by lib-gettext.sh for exhaustive Git::I18N tests
ok 13 # skip GETTEXT_LOCALE must be set by lib-gettext.sh for exhaustive Git::I18N tests
ok 1 - run t0202/test.pl to test Git::I18N.pm
# passed all 1 test(s)
1..1
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0210-trace2-normal.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0210-trace2-normal/.git/
expecting success of 0210.1 'normal stream, return code 0':
test_when_finished "rm trace.normal actual expect" &&
GIT_TRACE2="$(pwd)/trace.normal" test-tool trace2 001return 0 &&
perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" <trace.normal >actual &&
cat >expect <<-EOF &&
version $V
start _EXE_ trace2 001return 0
cmd_name trace2 (trace2)
exit elapsed:_TIME_ code:0
atexit elapsed:_TIME_ code:0
EOF
test_cmp expect actual
ok 1 - normal stream, return code 0
expecting success of 0210.2 'normal stream, return code 1':
test_when_finished "rm trace.normal actual expect" &&
test_must_fail env GIT_TRACE2="$(pwd)/trace.normal" test-tool trace2 001return 1 &&
perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" <trace.normal >actual &&
cat >expect <<-EOF &&
version $V
start _EXE_ trace2 001return 1
cmd_name trace2 (trace2)
exit elapsed:_TIME_ code:1
atexit elapsed:_TIME_ code:1
EOF
test_cmp expect actual
ok 2 - normal stream, return code 1
expecting success of 0210.3 'automatic filename':
test_when_finished "rm -r traces actual expect" &&
mkdir traces &&
GIT_TRACE2="$(pwd)/traces" test-tool trace2 001return 0 &&
perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" <"$(ls traces/*)" >actual &&
cat >expect <<-EOF &&
version $V
start _EXE_ trace2 001return 0
cmd_name trace2 (trace2)
exit elapsed:_TIME_ code:0
atexit elapsed:_TIME_ code:0
EOF
test_cmp expect actual
ok 3 - automatic filename
expecting success of 0210.4 'normal stream, exit code 0':
test_when_finished "rm trace.normal actual expect" &&
GIT_TRACE2="$(pwd)/trace.normal" test-tool trace2 002exit 0 &&
perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" <trace.normal >actual &&
cat >expect <<-EOF &&
version $V
start _EXE_ trace2 002exit 0
cmd_name trace2 (trace2)
exit elapsed:_TIME_ code:0
atexit elapsed:_TIME_ code:0
EOF
test_cmp expect actual
ok 4 - normal stream, exit code 0
expecting success of 0210.5 'normal stream, exit code 1':
test_when_finished "rm trace.normal actual expect" &&
test_must_fail env GIT_TRACE2="$(pwd)/trace.normal" test-tool trace2 002exit 1 &&
perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" <trace.normal >actual &&
cat >expect <<-EOF &&
version $V
start _EXE_ trace2 002exit 1
cmd_name trace2 (trace2)
exit elapsed:_TIME_ code:1
atexit elapsed:_TIME_ code:1
EOF
test_cmp expect actual
ok 5 - normal stream, exit code 1
expecting success of 0210.6 'normal stream, error event':
test_when_finished "rm trace.normal actual expect" &&
GIT_TRACE2="$(pwd)/trace.normal" test-tool trace2 003error "hello world" "this is a test" &&
perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" <trace.normal >actual &&
cat >expect <<-EOF &&
version $V
start _EXE_ trace2 003error 'hello world' 'this is a test'
cmd_name trace2 (trace2)
error hello world
error this is a test
exit elapsed:_TIME_ code:0
atexit elapsed:_TIME_ code:0
EOF
test_cmp expect actual
error: hello world
error: this is a test
ok 6 - normal stream, error event
expecting success of 0210.7 'BUG messages are written to trace2':
test_when_finished "rm trace.normal actual expect" &&
test_must_fail env GIT_TRACE2="$(pwd)/trace.normal" test-tool trace2 007bug &&
perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" <trace.normal >actual &&
cat >expect <<-EOF &&
version $V
start _EXE_ trace2 007bug
cmd_name trace2 (trace2)
error the bug message
exit elapsed:_TIME_ code:99
atexit elapsed:_TIME_ code:99
EOF
test_cmp expect actual
BUG: t/helper/test-trace2.c:209: the bug message
ok 7 - BUG messages are written to trace2
expecting success of 0210.8 'bug messages with BUG_if_bug() are written to trace2':
test_when_finished "rm trace.normal actual expect" &&
test_expect_code 99 env GIT_TRACE2="$(pwd)/trace.normal" \
test-tool trace2 008bug 2>err &&
cat >expect <<-\EOF &&
a bug message
another bug message
an explicit BUG_if_bug() following bug() call(s) is nice, but not required
EOF
sed "s/^.*: //" <err >actual &&
test_cmp expect actual &&
perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" <trace.normal >actual &&
cat >expect <<-EOF &&
version $V
start _EXE_ trace2 008bug
cmd_name trace2 (trace2)
error a bug message
error another bug message
error an explicit BUG_if_bug() following bug() call(s) is nice, but not required
exit elapsed:_TIME_ code:99
atexit elapsed:_TIME_ code:99
EOF
test_cmp expect actual
ok 8 - bug messages with BUG_if_bug() are written to trace2
expecting success of 0210.9 'bug messages without explicit BUG_if_bug() are written to trace2':
test_when_finished "rm trace.normal actual expect" &&
test_expect_code 99 env GIT_TRACE2="$(pwd)/trace.normal" \
test-tool trace2 009bug_BUG 2>err &&
cat >expect <<-\EOF &&
a bug message
another bug message
had bug() call(s) in this process without explicit BUG_if_bug()
EOF
sed "s/^.*: //" <err >actual &&
test_cmp expect actual &&
perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" <trace.normal >actual &&
cat >expect <<-EOF &&
version $V
start _EXE_ trace2 009bug_BUG
cmd_name trace2 (trace2)
error a bug message
error another bug message
error on exit(): had bug() call(s) in this process without explicit BUG_if_bug()
exit elapsed:_TIME_ code:99
atexit elapsed:_TIME_ code:99
EOF
test_cmp expect actual
ok 9 - bug messages without explicit BUG_if_bug() are written to trace2
expecting success of 0210.10 'bug messages followed by BUG() are written to trace2':
test_when_finished "rm trace.normal actual expect" &&
test_expect_code 99 env GIT_TRACE2="$(pwd)/trace.normal" \
test-tool trace2 010bug_BUG 2>err &&
cat >expect <<-\EOF &&
a bug message
a BUG message
EOF
sed "s/^.*: //" <err >actual &&
test_cmp expect actual &&
perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" <trace.normal >actual &&
cat >expect <<-EOF &&
version $V
start _EXE_ trace2 010bug_BUG
cmd_name trace2 (trace2)
error a bug message
error a BUG message
exit elapsed:_TIME_ code:99
atexit elapsed:_TIME_ code:99
EOF
test_cmp expect actual
ok 10 - bug messages followed by BUG() are written to trace2
expecting success of 0210.11 'using global config, normal stream, return code 0':
test_when_finished "rm trace.normal actual expect" &&
test_config_global trace2.normalBrief 1 &&
test_config_global trace2.normalTarget "$(pwd)/trace.normal" &&
test-tool trace2 001return 0 &&
perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" <trace.normal >actual &&
cat >expect <<-EOF &&
version $V
start _EXE_ trace2 001return 0
cmd_name trace2 (trace2)
exit elapsed:_TIME_ code:0
atexit elapsed:_TIME_ code:0
EOF
test_cmp expect actual
ok 11 - using global config, normal stream, return code 0
expecting success of 0210.12 'using global config with include':
test_when_finished "rm trace.normal actual expect real.gitconfig" &&
test_config_global trace2.normalBrief 1 &&
test_config_global trace2.normalTarget "$(pwd)/trace.normal" &&
mv "$(pwd)/.gitconfig" "$(pwd)/real.gitconfig" &&
test_config_global include.path "$(pwd)/real.gitconfig" &&
test-tool trace2 001return 0 &&
perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" <trace.normal >actual &&
cat >expect <<-EOF &&
version $V
start _EXE_ trace2 001return 0
cmd_name trace2 (trace2)
exit elapsed:_TIME_ code:0
atexit elapsed:_TIME_ code:0
EOF
test_cmp expect actual
ok 12 - using global config with include
# passed all 12 test(s)
1..12
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0211-trace2-perf.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0211-trace2-perf/.git/
expecting success of 0211.1 'perf stream, return code 0':
test_when_finished "rm trace.perf actual expect" &&
GIT_TRACE2_PERF="$(pwd)/trace.perf" test-tool trace2 001return 0 &&
perl "$TEST_DIRECTORY/t0211/scrub_perf.perl" <trace.perf >actual &&
cat >expect <<-EOF &&
d0|main|version|||||$V
d0|main|start||_T_ABS_|||_EXE_ trace2 001return 0
d0|main|cmd_name|||||trace2 (trace2)
d0|main|exit||_T_ABS_|||code:0
d0|main|atexit||_T_ABS_|||code:0
EOF
test_cmp expect actual
ok 1 - perf stream, return code 0
expecting success of 0211.2 'perf stream, return code 1':
test_when_finished "rm trace.perf actual expect" &&
test_must_fail env GIT_TRACE2_PERF="$(pwd)/trace.perf" test-tool trace2 001return 1 &&
perl "$TEST_DIRECTORY/t0211/scrub_perf.perl" <trace.perf >actual &&
cat >expect <<-EOF &&
d0|main|version|||||$V
d0|main|start||_T_ABS_|||_EXE_ trace2 001return 1
d0|main|cmd_name|||||trace2 (trace2)
d0|main|exit||_T_ABS_|||code:1
d0|main|atexit||_T_ABS_|||code:1
EOF
test_cmp expect actual
ok 2 - perf stream, return code 1
expecting success of 0211.3 'perf stream, error event':
test_when_finished "rm trace.perf actual expect" &&
GIT_TRACE2_PERF="$(pwd)/trace.perf" test-tool trace2 003error "hello world" "this is a test" &&
perl "$TEST_DIRECTORY/t0211/scrub_perf.perl" <trace.perf >actual &&
cat >expect <<-EOF &&
d0|main|version|||||$V
d0|main|start||_T_ABS_|||_EXE_ trace2 003error 'hello world' 'this is a test'
d0|main|cmd_name|||||trace2 (trace2)
d0|main|error|||||hello world
d0|main|error|||||this is a test
d0|main|exit||_T_ABS_|||code:0
d0|main|atexit||_T_ABS_|||code:0
EOF
test_cmp expect actual
error: hello world
error: this is a test
ok 3 - perf stream, error event
expecting success of 0211.4 'perf stream, child processes':
test_when_finished "rm trace.perf actual expect" &&
GIT_TRACE2_PERF="$(pwd)/trace.perf" test-tool trace2 004child test-tool trace2 004child test-tool trace2 001return 0 &&
perl "$TEST_DIRECTORY/t0211/scrub_perf.perl" <trace.perf >actual &&
cat >expect <<-EOF &&
d0|main|version|||||$V
d0|main|start||_T_ABS_|||_EXE_ trace2 004child test-tool trace2 004child test-tool trace2 001return 0
d0|main|cmd_name|||||trace2 (trace2)
d0|main|child_start||_T_ABS_|||[ch0] class:? argv:[test-tool trace2 004child test-tool trace2 001return 0]
d1|main|version|||||$V
d1|main|start||_T_ABS_|||_EXE_ trace2 004child test-tool trace2 001return 0
d1|main|cmd_name|||||trace2 (trace2/trace2)
d1|main|child_start||_T_ABS_|||[ch0] class:? argv:[test-tool trace2 001return 0]
d2|main|version|||||$V
d2|main|start||_T_ABS_|||_EXE_ trace2 001return 0
d2|main|cmd_name|||||trace2 (trace2/trace2/trace2)
d2|main|exit||_T_ABS_|||code:0
d2|main|atexit||_T_ABS_|||code:0
d1|main|child_exit||_T_ABS_|_T_REL_||[ch0] pid:_PID_ code:0
d1|main|exit||_T_ABS_|||code:0
d1|main|atexit||_T_ABS_|||code:0
d0|main|child_exit||_T_ABS_|_T_REL_||[ch0] pid:_PID_ code:0
d0|main|exit||_T_ABS_|||code:0
d0|main|atexit||_T_ABS_|||code:0
EOF
test_cmp expect actual
ok 4 - perf stream, child processes
expecting success of 0211.5 'using global config, perf stream, return code 0':
test_when_finished "rm trace.perf actual expect" &&
test_config_global trace2.perfBrief 1 &&
test_config_global trace2.perfTarget "$(pwd)/trace.perf" &&
test-tool trace2 001return 0 &&
perl "$TEST_DIRECTORY/t0211/scrub_perf.perl" <trace.perf >actual &&
cat >expect <<-EOF &&
d0|main|version|||||$V
d0|main|start||_T_ABS_|||_EXE_ trace2 001return 0
d0|main|cmd_name|||||trace2 (trace2)
d0|main|exit||_T_ABS_|||code:0
d0|main|atexit||_T_ABS_|||code:0
EOF
test_cmp expect actual
ok 5 - using global config, perf stream, return code 0
expecting success of 0211.6 'stopwatch timer test/test1':
test_when_finished "rm trace.perf actual" &&
test_config_global trace2.perfBrief 1 &&
test_config_global trace2.perfTarget "$(pwd)/trace.perf" &&
# Use the timer "test1" 5 times from "main".
test-tool trace2 100timer 5 10 &&
perl "$TEST_DIRECTORY/t0211/scrub_perf.perl" <trace.perf >actual &&
have_timer_event "main" "timer" "test" "test1" 5 actual
d0|main|timer||||test|name:test1 intervals:5 total:_T_TOTAL_ min:_T_MIN_ max:_T_MAX_
ok 6 - stopwatch timer test/test1
expecting success of 0211.7 'stopwatch timer test/test2':
test_when_finished "rm trace.perf actual" &&
test_config_global trace2.perfBrief 1 &&
test_config_global trace2.perfTarget "$(pwd)/trace.perf" &&
# Use the timer "test2" 5 times each in 3 threads.
test-tool trace2 101timer 5 10 3 &&
perl "$TEST_DIRECTORY/t0211/scrub_perf.perl" <trace.perf >actual &&
# So we should have 3 per-thread events of 5 each.
have_timer_event "th01:ut_101" "th_timer" "test" "test2" 5 actual &&
have_timer_event "th02:ut_101" "th_timer" "test" "test2" 5 actual &&
have_timer_event "th03:ut_101" "th_timer" "test" "test2" 5 actual &&
# And we should have 15 total uses.
have_timer_event "main" "timer" "test" "test2" 15 actual
d0|th01:ut_101|th_timer||||test|name:test2 intervals:5 total:_T_TOTAL_ min:_T_MIN_ max:_T_MAX_
d0|th02:ut_101|th_timer||||test|name:test2 intervals:5 total:_T_TOTAL_ min:_T_MIN_ max:_T_MAX_
d0|th03:ut_101|th_timer||||test|name:test2 intervals:5 total:_T_TOTAL_ min:_T_MIN_ max:_T_MAX_
d0|main|timer||||test|name:test2 intervals:15 total:_T_TOTAL_ min:_T_MIN_ max:_T_MAX_
ok 7 - stopwatch timer test/test2
expecting success of 0211.8 'global counter test/test1':
test_when_finished "rm trace.perf actual" &&
test_config_global trace2.perfBrief 1 &&
test_config_global trace2.perfTarget "$(pwd)/trace.perf" &&
# Use the counter "test1" and add n integers.
test-tool trace2 200counter 1 2 3 4 5 &&
perl "$TEST_DIRECTORY/t0211/scrub_perf.perl" <trace.perf >actual &&
have_counter_event "main" "counter" "test" "test1" 15 actual
d0|main|version|||||2.42.0
d0|main|start||_T_ABS_|||_EXE_ trace2 200counter 1 2 3 4 5
d0|main|cmd_name|||||trace2 (trace2)
d0|main|exit||_T_ABS_|||code:0
d0|main|counter||||test|name:test1 value:15
d0|main|atexit||_T_ABS_|||code:0
ok 8 - global counter test/test1
expecting success of 0211.9 'global counter test/test2':
test_when_finished "rm trace.perf actual" &&
test_config_global trace2.perfBrief 1 &&
test_config_global trace2.perfTarget "$(pwd)/trace.perf" &&
# Add 2 integers to the counter "test2" in each of 3 threads.
test-tool trace2 201counter 7 13 3 &&
perl "$TEST_DIRECTORY/t0211/scrub_perf.perl" <trace.perf >actual &&
# So we should have 3 per-thread events of 5 each.
have_counter_event "th01:ut_201" "th_counter" "test" "test2" 20 actual &&
have_counter_event "th02:ut_201" "th_counter" "test" "test2" 20 actual &&
have_counter_event "th03:ut_201" "th_counter" "test" "test2" 20 actual &&
# And we should have a single event with the total across all threads.
have_counter_event "main" "counter" "test" "test2" 60 actual
d0|main|version|||||2.42.0
d0|main|start||_T_ABS_|||_EXE_ trace2 201counter 7 13 3
d0|main|cmd_name|||||trace2 (trace2)
d0|th01:ut_201|thread_start||_T_ABS_|||
d0|th01:ut_201|th_counter||||test|name:test2 value:20
d0|th01:ut_201|thread_exit||_T_ABS_|_T_REL_||
d0|th02:ut_201|thread_start||_T_ABS_|||
d0|th03:ut_201|thread_start||_T_ABS_|||
d0|th02:ut_201|th_counter||||test|name:test2 value:20
d0|th03:ut_201|th_counter||||test|name:test2 value:20
d0|th02:ut_201|thread_exit||_T_ABS_|_T_REL_||
d0|th03:ut_201|thread_exit||_T_ABS_|_T_REL_||
d0|main|exit||_T_ABS_|||code:0
d0|main|counter||||test|name:test2 value:60
d0|main|atexit||_T_ABS_|||code:0
d0|main|version|||||2.42.0
d0|main|start||_T_ABS_|||_EXE_ trace2 201counter 7 13 3
d0|main|cmd_name|||||trace2 (trace2)
d0|th01:ut_201|thread_start||_T_ABS_|||
d0|th01:ut_201|th_counter||||test|name:test2 value:20
d0|th01:ut_201|thread_exit||_T_ABS_|_T_REL_||
d0|th02:ut_201|thread_start||_T_ABS_|||
d0|th03:ut_201|thread_start||_T_ABS_|||
d0|th02:ut_201|th_counter||||test|name:test2 value:20
d0|th03:ut_201|th_counter||||test|name:test2 value:20
d0|th02:ut_201|thread_exit||_T_ABS_|_T_REL_||
d0|th03:ut_201|thread_exit||_T_ABS_|_T_REL_||
d0|main|exit||_T_ABS_|||code:0
d0|main|counter||||test|name:test2 value:60
d0|main|atexit||_T_ABS_|||code:0
d0|main|version|||||2.42.0
d0|main|start||_T_ABS_|||_EXE_ trace2 201counter 7 13 3
d0|main|cmd_name|||||trace2 (trace2)
d0|th01:ut_201|thread_start||_T_ABS_|||
d0|th01:ut_201|th_counter||||test|name:test2 value:20
d0|th01:ut_201|thread_exit||_T_ABS_|_T_REL_||
d0|th02:ut_201|thread_start||_T_ABS_|||
d0|th03:ut_201|thread_start||_T_ABS_|||
d0|th02:ut_201|th_counter||||test|name:test2 value:20
d0|th03:ut_201|th_counter||||test|name:test2 value:20
d0|th02:ut_201|thread_exit||_T_ABS_|_T_REL_||
d0|th03:ut_201|thread_exit||_T_ABS_|_T_REL_||
d0|main|exit||_T_ABS_|||code:0
d0|main|counter||||test|name:test2 value:60
d0|main|atexit||_T_ABS_|||code:0
d0|main|version|||||2.42.0
d0|main|start||_T_ABS_|||_EXE_ trace2 201counter 7 13 3
d0|main|cmd_name|||||trace2 (trace2)
d0|th01:ut_201|thread_start||_T_ABS_|||
d0|th01:ut_201|th_counter||||test|name:test2 value:20
d0|th01:ut_201|thread_exit||_T_ABS_|_T_REL_||
d0|th02:ut_201|thread_start||_T_ABS_|||
d0|th03:ut_201|thread_start||_T_ABS_|||
d0|th02:ut_201|th_counter||||test|name:test2 value:20
d0|th03:ut_201|th_counter||||test|name:test2 value:20
d0|th02:ut_201|thread_exit||_T_ABS_|_T_REL_||
d0|th03:ut_201|thread_exit||_T_ABS_|_T_REL_||
d0|main|exit||_T_ABS_|||code:0
d0|main|counter||||test|name:test2 value:60
d0|main|atexit||_T_ABS_|||code:0
ok 9 - global counter test/test2
# passed all 9 test(s)
1..9
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0212-trace2-event.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0212-trace2-event/.git/
expecting success of 0212.1 'event stream, error event':
test_when_finished "rm trace.event actual expect" &&
GIT_TRACE2_EVENT="$(pwd)/trace.event" test-tool trace2 003error "hello world" "this is a test" &&
perl "$TEST_DIRECTORY/t0212/parse_events.perl" <trace.event >actual &&
sed -e "s/^|//" >expect <<-EOF &&
|VAR1 = {
| "_SID0_":{
| "argv":[
| "_EXE_",
| "trace2",
| "003error",
| "hello world",
| "this is a test"
| ],
| "errors":[
| "%s",
| "%s"
| ],
| "exit_code":0,
| "hierarchy":"trace2",
| "name":"trace2",
| "version":"$V"
| }
|};
EOF
test_cmp expect actual
error: hello world
error: this is a test
ok 1 - event stream, error event
expecting success of 0212.2 'event stream, return code 0':
test_when_finished "rm trace.event actual expect" &&
GIT_TRACE2_EVENT="$(pwd)/trace.event" test-tool trace2 004child test-tool trace2 004child test-tool trace2 001return 0 &&
perl "$TEST_DIRECTORY/t0212/parse_events.perl" <trace.event >actual &&
sed -e "s/^|//" >expect <<-EOF &&
|VAR1 = {
| "_SID0_":{
| "argv":[
| "_EXE_",
| "trace2",
| "004child",
| "test-tool",
| "trace2",
| "004child",
| "test-tool",
| "trace2",
| "001return",
| "0"
| ],
| "child":{
| "0":{
| "child_argv":[
| "_EXE_",
| "trace2",
| "004child",
| "test-tool",
| "trace2",
| "001return",
| "0"
| ],
| "child_class":"?",
| "child_code":0,
| "use_shell":0
| }
| },
| "exit_code":0,
| "hierarchy":"trace2",
| "name":"trace2",
| "version":"$V"
| },
| "_SID0_/_SID1_":{
| "argv":[
| "_EXE_",
| "trace2",
| "004child",
| "test-tool",
| "trace2",
| "001return",
| "0"
| ],
| "child":{
| "0":{
| "child_argv":[
| "_EXE_",
| "trace2",
| "001return",
| "0"
| ],
| "child_class":"?",
| "child_code":0,
| "use_shell":0
| }
| },
| "exit_code":0,
| "hierarchy":"trace2/trace2",
| "name":"trace2",
| "version":"$V"
| },
| "_SID0_/_SID1_/_SID2_":{
| "argv":[
| "_EXE_",
| "trace2",
| "001return",
| "0"
| ],
| "exit_code":0,
| "hierarchy":"trace2/trace2/trace2",
| "name":"trace2",
| "version":"$V"
| }
|};
EOF
test_cmp expect actual
ok 2 - event stream, return code 0
expecting success of 0212.3 'event stream, list config':
test_when_finished "rm trace.event actual expect" &&
git config --local t0212.abc 1 &&
git config --local t0212.def "hello world" &&
GIT_TRACE2_EVENT="$(pwd)/trace.event" GIT_TRACE2_CONFIG_PARAMS="t0212.*" test-tool trace2 001return 0 &&
perl "$TEST_DIRECTORY/t0212/parse_events.perl" <trace.event >actual &&
sed -e "s/^|//" >expect <<-EOF &&
|VAR1 = {
| "_SID0_":{
| "argv":[
| "_EXE_",
| "trace2",
| "001return",
| "0"
| ],
| "exit_code":0,
| "hierarchy":"trace2",
| "name":"trace2",
| "params":[
| {
| "param":"t0212.abc",
| "value":"1"
| },
| {
| "param":"t0212.def",
| "value":"hello world"
| }
| ],
| "version":"$V"
| }
|};
EOF
test_cmp expect actual
ok 3 - event stream, list config
expecting success of 0212.4 'event stream, list env vars':
test_when_finished "rm trace.event actual expect" &&
GIT_TRACE2_EVENT="$(pwd)/trace.event" \
GIT_TRACE2_ENV_VARS="A_VAR,OTHER_VAR,MISSING" \
A_VAR=1 OTHER_VAR="hello world" test-tool trace2 001return 0 &&
perl "$TEST_DIRECTORY/t0212/parse_events.perl" <trace.event >actual &&
sed -e "s/^|//" >expect <<-EOF &&
|VAR1 = {
| "_SID0_":{
| "argv":[
| "_EXE_",
| "trace2",
| "001return",
| "0"
| ],
| "exit_code":0,
| "hierarchy":"trace2",
| "name":"trace2",
| "params":[
| {
| "param":"A_VAR",
| "value":"1"
| },
| {
| "param":"OTHER_VAR",
| "value":"hello world"
| }
| ],
| "version":"$V"
| }
|};
EOF
test_cmp expect actual
ok 4 - event stream, list env vars
expecting success of 0212.5 'basic trace2_data':
test_when_finished "rm trace.event actual expect" &&
GIT_TRACE2_EVENT="$(pwd)/trace.event" test-tool trace2 006data test_category k1 v1 test_category k2 v2 &&
perl "$TEST_DIRECTORY/t0212/parse_events.perl" <trace.event >actual &&
sed -e "s/^|//" >expect <<-EOF &&
|VAR1 = {
| "_SID0_":{
| "argv":[
| "_EXE_",
| "trace2",
| "006data",
| "test_category",
| "k1",
| "v1",
| "test_category",
| "k2",
| "v2"
| ],
| "data":{
| "test_category":{
| "k1":"v1",
| "k2":"v2"
| }
| },
| "exit_code":0,
| "hierarchy":"trace2",
| "name":"trace2",
| "version":"$V"
| }
|};
EOF
test_cmp expect actual
ok 5 - basic trace2_data
expecting success of 0212.6 'using global config, event stream, error event':
test_when_finished "rm trace.event actual expect" &&
test_config_global trace2.eventTarget "$(pwd)/trace.event" &&
test-tool trace2 003error "hello world" "this is a test" &&
perl "$TEST_DIRECTORY/t0212/parse_events.perl" <trace.event >actual &&
sed -e "s/^|//" >expect <<-EOF &&
|VAR1 = {
| "_SID0_":{
| "argv":[
| "_EXE_",
| "trace2",
| "003error",
| "hello world",
| "this is a test"
| ],
| "errors":[
| "%s",
| "%s"
| ],
| "exit_code":0,
| "hierarchy":"trace2",
| "name":"trace2",
| "version":"$V"
| }
|};
EOF
test_cmp expect actual
error: hello world
error: this is a test
ok 6 - using global config, event stream, error event
expecting success of 0212.7 'discard traces when there are too many files':
mkdir trace_target_dir &&
test_when_finished "rm -r trace_target_dir" &&
(
GIT_TRACE2_MAX_FILES=5 &&
export GIT_TRACE2_MAX_FILES &&
cd trace_target_dir &&
test_seq $GIT_TRACE2_MAX_FILES >../expected_filenames.txt &&
xargs touch <../expected_filenames.txt &&
cd .. &&
GIT_TRACE2_EVENT="$(pwd)/trace_target_dir" test-tool trace2 001return 0
) &&
echo git-trace2-discard >>expected_filenames.txt &&
ls trace_target_dir >ls_output.txt &&
test_cmp expected_filenames.txt ls_output.txt &&
head -n1 trace_target_dir/git-trace2-discard | grep \"event\":\"version\" &&
head -n2 trace_target_dir/git-trace2-discard | tail -n1 | grep \"event\":\"too_many_files\"
{"event":"version","sid":"20231009T021744.274905Z-Hc7420fa0-P00169b08","thread":"main","time":"2023-10-09T02:17:44.275064Z","file":"common-main.c","line":55,"evt":"3","exe":"2.42.0"}
{"event":"too_many_files","sid":"20231009T021744.274905Z-Hc7420fa0-P00169b08","thread":"main","time":"2023-10-09T02:17:44.275105Z","file":"common-main.c","line":55}
ok 7 - discard traces when there are too many files
# passed all 7 test(s)
1..7
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0300-credentials.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0300-credentials/.git/
expecting success of 0300.1 'setup helper scripts':
cat >dump <<-\EOF &&
whoami=$(echo $0 | sed s/.*git-credential-//)
echo >&2 "$whoami: $*"
OIFS=$IFS
IFS==
while read key value; do
echo >&2 "$whoami: $key=$value"
eval "$key=$value"
done
IFS=$OIFS
EOF
write_script git-credential-useless <<-\EOF &&
. ./dump
exit 0
EOF
write_script git-credential-quit <<-\EOF &&
. ./dump
echo quit=1
EOF
write_script git-credential-verbatim <<-\EOF &&
user=$1; shift
pass=$1; shift
. ./dump
test -z "$user" || echo username=$user
test -z "$pass" || echo password=$pass
EOF
write_script git-credential-verbatim-with-expiry <<-\EOF &&
user=$1; shift
pass=$1; shift
pexpiry=$1; shift
. ./dump
test -z "$user" || echo username=$user
test -z "$pass" || echo password=$pass
test -z "$pexpiry" || echo password_expiry_utc=$pexpiry
EOF
PATH="$PWD:$PATH"
ok 1 - setup helper scripts
expecting success of 0300.2 'credential_fill invokes helper':
check fill "verbatim foo bar" <<-\EOF
protocol=http
host=example.com
--
protocol=http
host=example.com
username=foo
password=bar
--
verbatim: get
verbatim: protocol=http
verbatim: host=example.com
EOF
ok 2 - credential_fill invokes helper
expecting success of 0300.3 'credential_fill invokes multiple helpers':
check fill useless "verbatim foo bar" <<-\EOF
protocol=http
host=example.com
--
protocol=http
host=example.com
username=foo
password=bar
--
useless: get
useless: protocol=http
useless: host=example.com
verbatim: get
verbatim: protocol=http
verbatim: host=example.com
EOF
ok 3 - credential_fill invokes multiple helpers
expecting success of 0300.4 'credential_fill stops when we get a full response':
check fill "verbatim one two" "verbatim three four" <<-\EOF
protocol=http
host=example.com
--
protocol=http
host=example.com
username=one
password=two
--
verbatim: get
verbatim: protocol=http
verbatim: host=example.com
EOF
ok 4 - credential_fill stops when we get a full response
expecting success of 0300.5 'credential_fill continues through partial response':
check fill "verbatim one \"\"" "verbatim two three" <<-\EOF
protocol=http
host=example.com
--
protocol=http
host=example.com
username=two
password=three
--
verbatim: get
verbatim: protocol=http
verbatim: host=example.com
verbatim: get
verbatim: protocol=http
verbatim: host=example.com
verbatim: username=one
EOF
ok 5 - credential_fill continues through partial response
expecting success of 0300.6 'credential_fill populates password_expiry_utc':
check fill "verbatim-with-expiry one two 9999999999" <<-\EOF
protocol=http
host=example.com
--
protocol=http
host=example.com
username=one
password=two
password_expiry_utc=9999999999
--
verbatim-with-expiry: get
verbatim-with-expiry: protocol=http
verbatim-with-expiry: host=example.com
EOF
ok 6 - credential_fill populates password_expiry_utc
expecting success of 0300.7 'credential_fill ignores expired password':
check fill "verbatim-with-expiry one two 5" "verbatim three four" <<-\EOF
protocol=http
host=example.com
--
protocol=http
host=example.com
username=three
password=four
--
verbatim-with-expiry: get
verbatim-with-expiry: protocol=http
verbatim-with-expiry: host=example.com
verbatim: get
verbatim: protocol=http
verbatim: host=example.com
verbatim: username=one
EOF
ok 7 - credential_fill ignores expired password
expecting success of 0300.8 'credential_fill passes along metadata':
check fill "verbatim one two" <<-\EOF
protocol=ftp
host=example.com
path=foo.git
--
protocol=ftp
host=example.com
path=foo.git
username=one
password=two
--
verbatim: get
verbatim: protocol=ftp
verbatim: host=example.com
verbatim: path=foo.git
EOF
ok 8 - credential_fill passes along metadata
expecting success of 0300.9 'credential_approve calls all helpers':
check approve useless "verbatim one two" <<-\EOF
protocol=http
host=example.com
username=foo
password=bar
--
--
useless: store
useless: protocol=http
useless: host=example.com
useless: username=foo
useless: password=bar
verbatim: store
verbatim: protocol=http
verbatim: host=example.com
verbatim: username=foo
verbatim: password=bar
EOF
ok 9 - credential_approve calls all helpers
expecting success of 0300.10 'credential_approve stores password expiry':
check approve useless <<-\EOF
protocol=http
host=example.com
username=foo
password=bar
password_expiry_utc=9999999999
--
--
useless: store
useless: protocol=http
useless: host=example.com
useless: username=foo
useless: password=bar
useless: password_expiry_utc=9999999999
EOF
ok 10 - credential_approve stores password expiry
expecting success of 0300.11 'credential_approve stores oauth refresh token':
check approve useless <<-\EOF
protocol=http
host=example.com
username=foo
password=bar
oauth_refresh_token=xyzzy
--
--
useless: store
useless: protocol=http
useless: host=example.com
useless: username=foo
useless: password=bar
useless: oauth_refresh_token=xyzzy
EOF
ok 11 - credential_approve stores oauth refresh token
expecting success of 0300.12 'do not bother storing password-less credential':
check approve useless <<-\EOF
protocol=http
host=example.com
username=foo
--
--
EOF
ok 12 - do not bother storing password-less credential
expecting success of 0300.13 'credential_approve does not store expired password':
check approve useless <<-\EOF
protocol=http
host=example.com
username=foo
password=bar
password_expiry_utc=5
--
--
EOF
ok 13 - credential_approve does not store expired password
expecting success of 0300.14 'credential_reject calls all helpers':
check reject useless "verbatim one two" <<-\EOF
protocol=http
host=example.com
username=foo
password=bar
--
--
useless: erase
useless: protocol=http
useless: host=example.com
useless: username=foo
useless: password=bar
verbatim: erase
verbatim: protocol=http
verbatim: host=example.com
verbatim: username=foo
verbatim: password=bar
EOF
ok 14 - credential_reject calls all helpers
expecting success of 0300.15 'credential_reject erases credential regardless of expiry':
check reject useless <<-\EOF
protocol=http
host=example.com
username=foo
password=bar
password_expiry_utc=5
--
--
useless: erase
useless: protocol=http
useless: host=example.com
useless: username=foo
useless: password=bar
useless: password_expiry_utc=5
EOF
ok 15 - credential_reject erases credential regardless of expiry
expecting success of 0300.16 'usernames can be preserved':
check fill "verbatim \"\" three" <<-\EOF
protocol=http
host=example.com
username=one
--
protocol=http
host=example.com
username=one
password=three
--
verbatim: get
verbatim: protocol=http
verbatim: host=example.com
verbatim: username=one
EOF
ok 16 - usernames can be preserved
expecting success of 0300.17 'usernames can be overridden':
check fill "verbatim two three" <<-\EOF
protocol=http
host=example.com
username=one
--
protocol=http
host=example.com
username=two
password=three
--
verbatim: get
verbatim: protocol=http
verbatim: host=example.com
verbatim: username=one
EOF
ok 17 - usernames can be overridden
expecting success of 0300.18 'do not bother completing already-full credential':
check fill "verbatim three four" <<-\EOF
protocol=http
host=example.com
username=one
password=two
--
protocol=http
host=example.com
username=one
password=two
--
EOF
ok 18 - do not bother completing already-full credential
expecting success of 0300.19 'empty helper list falls back to internal getpass':
check fill <<-\EOF
protocol=http
host=example.com
--
protocol=http
host=example.com
username=askpass-username
password=askpass-password
--
askpass: Username for 'http://example.com':
askpass: Password for 'http://askpass-username@example.com':
EOF
ok 19 - empty helper list falls back to internal getpass
expecting success of 0300.20 'internal getpass does not ask for known username':
check fill <<-\EOF
protocol=http
host=example.com
username=foo
--
protocol=http
host=example.com
username=foo
password=askpass-password
--
askpass: Password for 'http://foo@example.com':
EOF
ok 20 - internal getpass does not ask for known username
expecting success of 0300.21 'git-credential respects core.askPass':
write_script alternate-askpass <<-\EOF &&
echo >&2 "alternate askpass invoked"
echo alternate-value
EOF
test_config core.askpass "$PWD/alternate-askpass" &&
(
# unset GIT_ASKPASS set by lib-credential.sh which would
# override our config, but do so in a subshell so that we do
# not interfere with other tests
sane_unset GIT_ASKPASS &&
check fill <<-\EOF
protocol=http
host=example.com
--
protocol=http
host=example.com
username=alternate-value
password=alternate-value
--
alternate askpass invoked
alternate askpass invoked
EOF
)
ok 21 - git-credential respects core.askPass
expecting success of 0300.22 'respect configured credentials':
test_config credential.helper "$HELPER" &&
check fill <<-\EOF
protocol=http
host=example.com
--
protocol=http
host=example.com
username=foo
password=bar
--
EOF
ok 22 - respect configured credentials
expecting success of 0300.23 'match configured credential':
test_config credential.https://example.com.helper "$HELPER" &&
check fill <<-\EOF
protocol=https
host=example.com
path=repo.git
--
protocol=https
host=example.com
username=foo
password=bar
--
EOF
ok 23 - match configured credential
expecting success of 0300.24 'do not match configured credential':
test_config credential.https://foo.helper "$HELPER" &&
check fill <<-\EOF
protocol=https
host=bar
--
protocol=https
host=bar
username=askpass-username
password=askpass-password
--
askpass: Username for 'https://bar':
askpass: Password for 'https://askpass-username@bar':
EOF
ok 24 - do not match configured credential
expecting success of 0300.25 'match multiple configured helpers':
test_config credential.helper "verbatim \"\" \"\"" &&
test_config credential.https://example.com.helper "$HELPER" &&
check fill <<-\EOF
protocol=https
host=example.com
path=repo.git
--
protocol=https
host=example.com
username=foo
password=bar
--
verbatim: get
verbatim: protocol=https
verbatim: host=example.com
EOF
ok 25 - match multiple configured helpers
expecting success of 0300.26 'match multiple configured helpers with URLs':
test_config credential.https://example.com/repo.git.helper "verbatim \"\" \"\"" &&
test_config credential.https://example.com.helper "$HELPER" &&
check fill <<-\EOF
protocol=https
host=example.com
path=repo.git
--
protocol=https
host=example.com
username=foo
password=bar
--
verbatim: get
verbatim: protocol=https
verbatim: host=example.com
EOF
ok 26 - match multiple configured helpers with URLs
expecting success of 0300.27 'match percent-encoded values':
test_config credential.https://example.com/%2566.git.helper "$HELPER" &&
check fill <<-\EOF
url=https://example.com/%2566.git
--
protocol=https
host=example.com
username=foo
password=bar
--
EOF
ok 27 - match percent-encoded values
expecting success of 0300.28 'match percent-encoded UTF-8 values in path':
test_config credential.https://example.com.useHttpPath true &&
test_config credential.https://example.com/perú.git.helper "$HELPER" &&
check fill <<-\EOF
url=https://example.com/per%C3%BA.git
--
protocol=https
host=example.com
path=perú.git
username=foo
password=bar
--
EOF
ok 28 - match percent-encoded UTF-8 values in path
expecting success of 0300.29 'match percent-encoded values in username':
test_config credential.https://user%2fname@example.com/foo/bar.git.helper "$HELPER" &&
check fill <<-\EOF
url=https://user%2fname@example.com/foo/bar.git
--
protocol=https
host=example.com
username=foo
password=bar
--
EOF
ok 29 - match percent-encoded values in username
expecting success of 0300.30 'fetch with multiple path components':
test_unconfig credential.helper &&
test_config credential.https://example.com/foo/repo.git.helper "verbatim foo bar" &&
check fill <<-\EOF
url=https://example.com/foo/repo.git
--
protocol=https
host=example.com
username=foo
password=bar
--
verbatim: get
verbatim: protocol=https
verbatim: host=example.com
EOF
ok 30 - fetch with multiple path components
expecting success of 0300.31 'pull username from config':
test_config credential.https://example.com.username foo &&
check fill <<-\EOF
protocol=https
host=example.com
--
protocol=https
host=example.com
username=foo
password=askpass-password
--
askpass: Password for 'https://foo@example.com':
EOF
ok 31 - pull username from config
expecting success of 0300.32 'honors username from URL over helper (URL)':
test_config credential.https://example.com.username bob &&
test_config credential.https://example.com.helper "verbatim \"\" bar" &&
check fill <<-\EOF
url=https://alice@example.com
--
protocol=https
host=example.com
username=alice
password=bar
--
verbatim: get
verbatim: protocol=https
verbatim: host=example.com
verbatim: username=alice
EOF
ok 32 - honors username from URL over helper (URL)
expecting success of 0300.33 'honors username from URL over helper (components)':
test_config credential.https://example.com.username bob &&
test_config credential.https://example.com.helper "verbatim \"\" bar" &&
check fill <<-\EOF
protocol=https
host=example.com
username=alice
--
protocol=https
host=example.com
username=alice
password=bar
--
verbatim: get
verbatim: protocol=https
verbatim: host=example.com
verbatim: username=alice
EOF
ok 33 - honors username from URL over helper (components)
expecting success of 0300.34 'last matching username wins':
test_config credential.https://example.com/path.git.username bob &&
test_config credential.https://example.com.username alice &&
test_config credential.https://example.com.helper "verbatim \"\" bar" &&
check fill <<-\EOF
url=https://example.com/path.git
--
protocol=https
host=example.com
username=alice
password=bar
--
verbatim: get
verbatim: protocol=https
verbatim: host=example.com
verbatim: username=alice
EOF
ok 34 - last matching username wins
expecting success of 0300.35 'http paths can be part of context':
check fill "verbatim foo bar" <<-\EOF &&
protocol=https
host=example.com
path=foo.git
--
protocol=https
host=example.com
username=foo
password=bar
--
verbatim: get
verbatim: protocol=https
verbatim: host=example.com
EOF
test_config credential.https://example.com.useHttpPath true &&
check fill "verbatim foo bar" <<-\EOF
protocol=https
host=example.com
path=foo.git
--
protocol=https
host=example.com
path=foo.git
username=foo
password=bar
--
verbatim: get
verbatim: protocol=https
verbatim: host=example.com
verbatim: path=foo.git
EOF
ok 35 - http paths can be part of context
expecting success of 0300.36 'context uses urlmatch':
test_config "credential.https://*.org.useHttpPath" true &&
check fill "verbatim foo bar" <<-\EOF
protocol=https
host=example.org
path=foo.git
--
protocol=https
host=example.org
path=foo.git
username=foo
password=bar
--
verbatim: get
verbatim: protocol=https
verbatim: host=example.org
verbatim: path=foo.git
EOF
ok 36 - context uses urlmatch
expecting success of 0300.37 'helpers can abort the process':
test_must_fail git \
-c credential.helper=quit \
-c credential.helper="verbatim foo bar" \
credential fill >stdout 2>stderr <<-\EOF &&
protocol=http
host=example.com
EOF
test_must_be_empty stdout &&
cat >expect <<-\EOF &&
quit: get
quit: protocol=http
quit: host=example.com
fatal: credential helper 'quit' told us to quit
EOF
test_cmp expect stderr
ok 37 - helpers can abort the process
expecting success of 0300.38 'empty helper spec resets helper list':
test_config credential.helper "verbatim file file" &&
check fill "" "verbatim cmdline cmdline" <<-\EOF
protocol=http
host=example.com
--
protocol=http
host=example.com
username=cmdline
password=cmdline
--
verbatim: get
verbatim: protocol=http
verbatim: host=example.com
EOF
ok 38 - empty helper spec resets helper list
expecting success of 0300.39 'url parser rejects embedded newlines':
test_must_fail git credential fill 2>stderr <<-\EOF &&
url=https://one.example.com?%0ahost=two.example.com/
EOF
cat >expect <<-\EOF &&
warning: url contains a newline in its path component: https://one.example.com?%0ahost=two.example.com/
fatal: credential url cannot be parsed: https://one.example.com?%0ahost=two.example.com/
EOF
test_cmp expect stderr
ok 39 - url parser rejects embedded newlines
expecting success of 0300.40 'host-less URLs are parsed as empty host':
check fill "verbatim foo bar" <<-\EOF
url=cert:///path/to/cert.pem
--
protocol=cert
host=
path=path/to/cert.pem
username=foo
password=bar
--
verbatim: get
verbatim: protocol=cert
verbatim: host=
verbatim: path=path/to/cert.pem
EOF
ok 40 - host-less URLs are parsed as empty host
expecting success of 0300.41 'credential system refuses to work with missing host':
test_must_fail git credential fill 2>stderr <<-\EOF &&
protocol=http
EOF
cat >expect <<-\EOF &&
fatal: refusing to work with credential missing host field
EOF
test_cmp expect stderr
ok 41 - credential system refuses to work with missing host
expecting success of 0300.42 'credential system refuses to work with missing protocol':
test_must_fail git credential fill 2>stderr <<-\EOF &&
host=example.com
EOF
cat >expect <<-\EOF &&
fatal: refusing to work with credential missing protocol field
EOF
test_cmp expect stderr
ok 42 - credential system refuses to work with missing protocol
expecting success of 0300.43 'url parser handles bare query marker':
check_host_and_path https://example.com?foo.git example.com ?foo.git
ok 43 - url parser handles bare query marker
expecting success of 0300.44 'url parser handles bare fragment marker':
check_host_and_path https://example.com#foo.git example.com "#foo.git"
ok 44 - url parser handles bare fragment marker
expecting success of 0300.45 'url parser not confused by encoded markers':
check_host_and_path https://example.com%23%3f%2f/foo.git \
"example.com#?/" foo.git
ok 45 - url parser not confused by encoded markers
expecting success of 0300.46 'credential config with partial URLs':
echo "echo password=yep" | write_script git-credential-yep &&
test_write_lines url=https://user@example.com/repo.git >stdin &&
for partial in \
example.com \
user@example.com \
https:// \
https://example.com \
https://example.com/ \
https://user@example.com \
https://user@example.com/ \
https://example.com/repo.git \
https://user@example.com/repo.git \
/repo.git
do
git -c credential.$partial.helper=yep \
credential fill <stdin >stdout &&
grep yep stdout ||
return 1
done &&
for partial in \
dont.use.this \
http:// \
/repo
do
git -c credential.$partial.helper=yep \
credential fill <stdin >stdout &&
! grep yep stdout ||
return 1
done &&
git -c credential.$partial.helper=yep \
-c credential.with%0anewline.username=uh-oh \
credential fill <stdin 2>stderr &&
test_i18ngrep "skipping credential lookup for key" stderr
password=yep
password=yep
password=yep
password=yep
password=yep
password=yep
password=yep
password=yep
password=yep
password=yep
askpass: Password for 'https://user@example.com':
askpass: Password for 'https://user@example.com':
askpass: Password for 'https://user@example.com':
protocol=https
host=example.com
username=user
password=askpass-password
warning: skipping credential lookup for key: credential.with%0anewline
ok 46 - credential config with partial URLs
# passed all 46 test(s)
1..46
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0302-credential-store.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0302-credential-store/.git/
expecting success of 0302.1 'helper (store) has no existing data':
check fill $HELPER <<-\EOF
protocol=https
host=example.com
--
protocol=https
host=example.com
username=askpass-username
password=askpass-password
--
askpass: Username for 'https://example.com':
askpass: Password for 'https://askpass-username@example.com':
EOF
ok 1 - helper (store) has no existing data
expecting success of 0302.2 'helper (store) stores password':
check approve $HELPER <<-\EOF
protocol=https
host=example.com
username=store-user
password=store-pass
EOF
ok 2 - helper (store) stores password
expecting success of 0302.3 'helper (store) can retrieve password':
check fill $HELPER <<-\EOF
protocol=https
host=example.com
--
protocol=https
host=example.com
username=store-user
password=store-pass
--
EOF
ok 3 - helper (store) can retrieve password
expecting success of 0302.4 'helper (store) requires matching protocol':
check fill $HELPER <<-\EOF
protocol=http
host=example.com
--
protocol=http
host=example.com
username=askpass-username
password=askpass-password
--
askpass: Username for 'http://example.com':
askpass: Password for 'http://askpass-username@example.com':
EOF
ok 4 - helper (store) requires matching protocol
expecting success of 0302.5 'helper (store) requires matching host':
check fill $HELPER <<-\EOF
protocol=https
host=other.tld
--
protocol=https
host=other.tld
username=askpass-username
password=askpass-password
--
askpass: Username for 'https://other.tld':
askpass: Password for 'https://askpass-username@other.tld':
EOF
ok 5 - helper (store) requires matching host
expecting success of 0302.6 'helper (store) requires matching username':
check fill $HELPER <<-\EOF
protocol=https
host=example.com
username=other
--
protocol=https
host=example.com
username=other
password=askpass-password
--
askpass: Password for 'https://other@example.com':
EOF
ok 6 - helper (store) requires matching username
expecting success of 0302.7 'helper (store) requires matching path':
test_config credential.usehttppath true &&
check approve $HELPER <<-\EOF &&
protocol=http
host=path.tld
path=foo.git
username=user
password=pass
EOF
check fill $HELPER <<-\EOF
protocol=http
host=path.tld
path=bar.git
--
protocol=http
host=path.tld
path=bar.git
username=askpass-username
password=askpass-password
--
askpass: Username for 'http://path.tld/bar.git':
askpass: Password for 'http://askpass-username@path.tld/bar.git':
EOF
ok 7 - helper (store) requires matching path
expecting success of 0302.8 'helper (store) overwrites on store':
check approve $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user-overwrite
password=pass1
EOF
check approve $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user-overwrite
password=pass2
EOF
check fill $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user-overwrite
--
protocol=https
host=example.com
username=user-overwrite
password=pass2
EOF
check reject $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user-overwrite
password=pass2
EOF
check fill $HELPER <<-\EOF
protocol=https
host=example.com
username=user-overwrite
--
protocol=https
host=example.com
username=user-overwrite
password=askpass-password
--
askpass: Password for 'https://user-overwrite@example.com':
EOF
ok 8 - helper (store) overwrites on store
expecting success of 0302.9 'helper (store) can forget host':
check reject $HELPER <<-\EOF &&
protocol=https
host=example.com
EOF
check fill $HELPER <<-\EOF
protocol=https
host=example.com
--
protocol=https
host=example.com
username=askpass-username
password=askpass-password
--
askpass: Username for 'https://example.com':
askpass: Password for 'https://askpass-username@example.com':
EOF
ok 9 - helper (store) can forget host
expecting success of 0302.10 'helper (store) can store multiple users':
check approve $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user1
password=pass1
EOF
check approve $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user2
password=pass2
EOF
check fill $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user1
--
protocol=https
host=example.com
username=user1
password=pass1
EOF
check fill $HELPER <<-\EOF
protocol=https
host=example.com
username=user2
--
protocol=https
host=example.com
username=user2
password=pass2
EOF
ok 10 - helper (store) can store multiple users
expecting success of 0302.11 'helper (store) does not erase a password distinct from input':
check approve $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user-distinct-pass
password=pass1
EOF
check reject $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user-distinct-pass
password=pass2
EOF
check fill $HELPER <<-\EOF
protocol=https
host=example.com
username=user-distinct-pass
--
protocol=https
host=example.com
username=user-distinct-pass
password=pass1
EOF
ok 11 - helper (store) does not erase a password distinct from input
expecting success of 0302.12 'helper (store) can forget user':
check reject $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user1
EOF
check fill $HELPER <<-\EOF
protocol=https
host=example.com
username=user1
--
protocol=https
host=example.com
username=user1
password=askpass-password
--
askpass: Password for 'https://user1@example.com':
EOF
ok 12 - helper (store) can forget user
expecting success of 0302.13 'helper (store) remembers other user':
check fill $HELPER <<-\EOF
protocol=https
host=example.com
username=user2
--
protocol=https
host=example.com
username=user2
password=pass2
EOF
ok 13 - helper (store) remembers other user
expecting success of 0302.14 'helper (store) can store empty username':
check approve $HELPER <<-\EOF &&
protocol=https
host=sso.tld
username=
password=
EOF
check fill $HELPER <<-\EOF
protocol=https
host=sso.tld
--
protocol=https
host=sso.tld
username=
password=
EOF
ok 14 - helper (store) can store empty username
expecting success of 0302.15 'helper (store) erases all matching credentials':
check approve $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user-erase1
password=pass1
EOF
check approve $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user-erase2
password=pass1
EOF
check reject $HELPER <<-\EOF &&
protocol=https
host=example.com
EOF
check fill $HELPER <<-\EOF
protocol=https
host=example.com
--
protocol=https
host=example.com
username=askpass-username
password=askpass-password
--
askpass: Username for 'https://example.com':
askpass: Password for 'https://askpass-username@example.com':
EOF
ok 15 - helper (store) erases all matching credentials
expecting success of 0302.16 'helper (store) not confused by long header':
check approve $HELPER <<-\EOF &&
protocol=https
host=victim.example.com
username=user
password=to-be-stolen
EOF
check fill $HELPER <<-EOF
protocol=https
host=badguy.example.com
wwwauth[]=basic realm=${LONG_VALUE}host=victim.example.com
--
protocol=https
host=badguy.example.com
username=askpass-username
password=askpass-password
wwwauth[]=basic realm=${LONG_VALUE}host=victim.example.com
--
askpass: Username for 'https://badguy.example.com':
askpass: Password for 'https://askpass-username@badguy.example.com':
EOF
ok 16 - helper (store) not confused by long header
expecting success of 0302.17 'when xdg file does not exist, xdg file not created':
test_path_is_missing "$HOME/.config/git/credentials" &&
test -s "$HOME/.git-credentials"
ok 17 - when xdg file does not exist, xdg file not created
expecting success of 0302.18 'setup xdg file':
rm -f "$HOME/.git-credentials" &&
mkdir -p "$HOME/.config/git" &&
>"$HOME/.config/git/credentials"
ok 18 - setup xdg file
expecting success of 0302.19 'helper (store) has no existing data':
check fill $HELPER <<-\EOF
protocol=https
host=example.com
--
protocol=https
host=example.com
username=askpass-username
password=askpass-password
--
askpass: Username for 'https://example.com':
askpass: Password for 'https://askpass-username@example.com':
EOF
ok 19 - helper (store) has no existing data
expecting success of 0302.20 'helper (store) stores password':
check approve $HELPER <<-\EOF
protocol=https
host=example.com
username=store-user
password=store-pass
EOF
ok 20 - helper (store) stores password
expecting success of 0302.21 'helper (store) can retrieve password':
check fill $HELPER <<-\EOF
protocol=https
host=example.com
--
protocol=https
host=example.com
username=store-user
password=store-pass
--
EOF
ok 21 - helper (store) can retrieve password
expecting success of 0302.22 'helper (store) requires matching protocol':
check fill $HELPER <<-\EOF
protocol=http
host=example.com
--
protocol=http
host=example.com
username=askpass-username
password=askpass-password
--
askpass: Username for 'http://example.com':
askpass: Password for 'http://askpass-username@example.com':
EOF
ok 22 - helper (store) requires matching protocol
expecting success of 0302.23 'helper (store) requires matching host':
check fill $HELPER <<-\EOF
protocol=https
host=other.tld
--
protocol=https
host=other.tld
username=askpass-username
password=askpass-password
--
askpass: Username for 'https://other.tld':
askpass: Password for 'https://askpass-username@other.tld':
EOF
ok 23 - helper (store) requires matching host
expecting success of 0302.24 'helper (store) requires matching username':
check fill $HELPER <<-\EOF
protocol=https
host=example.com
username=other
--
protocol=https
host=example.com
username=other
password=askpass-password
--
askpass: Password for 'https://other@example.com':
EOF
ok 24 - helper (store) requires matching username
expecting success of 0302.25 'helper (store) requires matching path':
test_config credential.usehttppath true &&
check approve $HELPER <<-\EOF &&
protocol=http
host=path.tld
path=foo.git
username=user
password=pass
EOF
check fill $HELPER <<-\EOF
protocol=http
host=path.tld
path=bar.git
--
protocol=http
host=path.tld
path=bar.git
username=askpass-username
password=askpass-password
--
askpass: Username for 'http://path.tld/bar.git':
askpass: Password for 'http://askpass-username@path.tld/bar.git':
EOF
ok 25 - helper (store) requires matching path
expecting success of 0302.26 'helper (store) overwrites on store':
check approve $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user-overwrite
password=pass1
EOF
check approve $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user-overwrite
password=pass2
EOF
check fill $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user-overwrite
--
protocol=https
host=example.com
username=user-overwrite
password=pass2
EOF
check reject $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user-overwrite
password=pass2
EOF
check fill $HELPER <<-\EOF
protocol=https
host=example.com
username=user-overwrite
--
protocol=https
host=example.com
username=user-overwrite
password=askpass-password
--
askpass: Password for 'https://user-overwrite@example.com':
EOF
ok 26 - helper (store) overwrites on store
expecting success of 0302.27 'helper (store) can forget host':
check reject $HELPER <<-\EOF &&
protocol=https
host=example.com
EOF
check fill $HELPER <<-\EOF
protocol=https
host=example.com
--
protocol=https
host=example.com
username=askpass-username
password=askpass-password
--
askpass: Username for 'https://example.com':
askpass: Password for 'https://askpass-username@example.com':
EOF
ok 27 - helper (store) can forget host
expecting success of 0302.28 'helper (store) can store multiple users':
check approve $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user1
password=pass1
EOF
check approve $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user2
password=pass2
EOF
check fill $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user1
--
protocol=https
host=example.com
username=user1
password=pass1
EOF
check fill $HELPER <<-\EOF
protocol=https
host=example.com
username=user2
--
protocol=https
host=example.com
username=user2
password=pass2
EOF
ok 28 - helper (store) can store multiple users
expecting success of 0302.29 'helper (store) does not erase a password distinct from input':
check approve $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user-distinct-pass
password=pass1
EOF
check reject $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user-distinct-pass
password=pass2
EOF
check fill $HELPER <<-\EOF
protocol=https
host=example.com
username=user-distinct-pass
--
protocol=https
host=example.com
username=user-distinct-pass
password=pass1
EOF
ok 29 - helper (store) does not erase a password distinct from input
expecting success of 0302.30 'helper (store) can forget user':
check reject $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user1
EOF
check fill $HELPER <<-\EOF
protocol=https
host=example.com
username=user1
--
protocol=https
host=example.com
username=user1
password=askpass-password
--
askpass: Password for 'https://user1@example.com':
EOF
ok 30 - helper (store) can forget user
expecting success of 0302.31 'helper (store) remembers other user':
check fill $HELPER <<-\EOF
protocol=https
host=example.com
username=user2
--
protocol=https
host=example.com
username=user2
password=pass2
EOF
ok 31 - helper (store) remembers other user
expecting success of 0302.32 'helper (store) can store empty username':
check approve $HELPER <<-\EOF &&
protocol=https
host=sso.tld
username=
password=
EOF
check fill $HELPER <<-\EOF
protocol=https
host=sso.tld
--
protocol=https
host=sso.tld
username=
password=
EOF
ok 32 - helper (store) can store empty username
expecting success of 0302.33 'helper (store) erases all matching credentials':
check approve $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user-erase1
password=pass1
EOF
check approve $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user-erase2
password=pass1
EOF
check reject $HELPER <<-\EOF &&
protocol=https
host=example.com
EOF
check fill $HELPER <<-\EOF
protocol=https
host=example.com
--
protocol=https
host=example.com
username=askpass-username
password=askpass-password
--
askpass: Username for 'https://example.com':
askpass: Password for 'https://askpass-username@example.com':
EOF
ok 33 - helper (store) erases all matching credentials
expecting success of 0302.34 'helper (store) not confused by long header':
check approve $HELPER <<-\EOF &&
protocol=https
host=victim.example.com
username=user
password=to-be-stolen
EOF
check fill $HELPER <<-EOF
protocol=https
host=badguy.example.com
wwwauth[]=basic realm=${LONG_VALUE}host=victim.example.com
--
protocol=https
host=badguy.example.com
username=askpass-username
password=askpass-password
wwwauth[]=basic realm=${LONG_VALUE}host=victim.example.com
--
askpass: Username for 'https://badguy.example.com':
askpass: Password for 'https://askpass-username@badguy.example.com':
EOF
ok 34 - helper (store) not confused by long header
expecting success of 0302.35 'when xdg file exists, home file not created':
test -s "$HOME/.config/git/credentials" &&
test_path_is_missing "$HOME/.git-credentials"
ok 35 - when xdg file exists, home file not created
expecting success of 0302.36 'setup custom xdg file':
rm -f "$HOME/.git-credentials" &&
rm -f "$HOME/.config/git/credentials" &&
mkdir -p "$HOME/xdg/git" &&
>"$HOME/xdg/git/credentials"
ok 36 - setup custom xdg file
expecting success of 0302.37 'helper (store) has no existing data':
check fill $HELPER <<-\EOF
protocol=https
host=example.com
--
protocol=https
host=example.com
username=askpass-username
password=askpass-password
--
askpass: Username for 'https://example.com':
askpass: Password for 'https://askpass-username@example.com':
EOF
ok 37 - helper (store) has no existing data
expecting success of 0302.38 'helper (store) stores password':
check approve $HELPER <<-\EOF
protocol=https
host=example.com
username=store-user
password=store-pass
EOF
ok 38 - helper (store) stores password
expecting success of 0302.39 'helper (store) can retrieve password':
check fill $HELPER <<-\EOF
protocol=https
host=example.com
--
protocol=https
host=example.com
username=store-user
password=store-pass
--
EOF
ok 39 - helper (store) can retrieve password
expecting success of 0302.40 'helper (store) requires matching protocol':
check fill $HELPER <<-\EOF
protocol=http
host=example.com
--
protocol=http
host=example.com
username=askpass-username
password=askpass-password
--
askpass: Username for 'http://example.com':
askpass: Password for 'http://askpass-username@example.com':
EOF
ok 40 - helper (store) requires matching protocol
expecting success of 0302.41 'helper (store) requires matching host':
check fill $HELPER <<-\EOF
protocol=https
host=other.tld
--
protocol=https
host=other.tld
username=askpass-username
password=askpass-password
--
askpass: Username for 'https://other.tld':
askpass: Password for 'https://askpass-username@other.tld':
EOF
ok 41 - helper (store) requires matching host
expecting success of 0302.42 'helper (store) requires matching username':
check fill $HELPER <<-\EOF
protocol=https
host=example.com
username=other
--
protocol=https
host=example.com
username=other
password=askpass-password
--
askpass: Password for 'https://other@example.com':
EOF
ok 42 - helper (store) requires matching username
expecting success of 0302.43 'helper (store) requires matching path':
test_config credential.usehttppath true &&
check approve $HELPER <<-\EOF &&
protocol=http
host=path.tld
path=foo.git
username=user
password=pass
EOF
check fill $HELPER <<-\EOF
protocol=http
host=path.tld
path=bar.git
--
protocol=http
host=path.tld
path=bar.git
username=askpass-username
password=askpass-password
--
askpass: Username for 'http://path.tld/bar.git':
askpass: Password for 'http://askpass-username@path.tld/bar.git':
EOF
ok 43 - helper (store) requires matching path
expecting success of 0302.44 'helper (store) overwrites on store':
check approve $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user-overwrite
password=pass1
EOF
check approve $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user-overwrite
password=pass2
EOF
check fill $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user-overwrite
--
protocol=https
host=example.com
username=user-overwrite
password=pass2
EOF
check reject $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user-overwrite
password=pass2
EOF
check fill $HELPER <<-\EOF
protocol=https
host=example.com
username=user-overwrite
--
protocol=https
host=example.com
username=user-overwrite
password=askpass-password
--
askpass: Password for 'https://user-overwrite@example.com':
EOF
ok 44 - helper (store) overwrites on store
expecting success of 0302.45 'helper (store) can forget host':
check reject $HELPER <<-\EOF &&
protocol=https
host=example.com
EOF
check fill $HELPER <<-\EOF
protocol=https
host=example.com
--
protocol=https
host=example.com
username=askpass-username
password=askpass-password
--
askpass: Username for 'https://example.com':
askpass: Password for 'https://askpass-username@example.com':
EOF
ok 45 - helper (store) can forget host
expecting success of 0302.46 'helper (store) can store multiple users':
check approve $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user1
password=pass1
EOF
check approve $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user2
password=pass2
EOF
check fill $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user1
--
protocol=https
host=example.com
username=user1
password=pass1
EOF
check fill $HELPER <<-\EOF
protocol=https
host=example.com
username=user2
--
protocol=https
host=example.com
username=user2
password=pass2
EOF
ok 46 - helper (store) can store multiple users
expecting success of 0302.47 'helper (store) does not erase a password distinct from input':
check approve $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user-distinct-pass
password=pass1
EOF
check reject $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user-distinct-pass
password=pass2
EOF
check fill $HELPER <<-\EOF
protocol=https
host=example.com
username=user-distinct-pass
--
protocol=https
host=example.com
username=user-distinct-pass
password=pass1
EOF
ok 47 - helper (store) does not erase a password distinct from input
expecting success of 0302.48 'helper (store) can forget user':
check reject $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user1
EOF
check fill $HELPER <<-\EOF
protocol=https
host=example.com
username=user1
--
protocol=https
host=example.com
username=user1
password=askpass-password
--
askpass: Password for 'https://user1@example.com':
EOF
ok 48 - helper (store) can forget user
expecting success of 0302.49 'helper (store) remembers other user':
check fill $HELPER <<-\EOF
protocol=https
host=example.com
username=user2
--
protocol=https
host=example.com
username=user2
password=pass2
EOF
ok 49 - helper (store) remembers other user
expecting success of 0302.50 'helper (store) can store empty username':
check approve $HELPER <<-\EOF &&
protocol=https
host=sso.tld
username=
password=
EOF
check fill $HELPER <<-\EOF
protocol=https
host=sso.tld
--
protocol=https
host=sso.tld
username=
password=
EOF
ok 50 - helper (store) can store empty username
expecting success of 0302.51 'helper (store) erases all matching credentials':
check approve $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user-erase1
password=pass1
EOF
check approve $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user-erase2
password=pass1
EOF
check reject $HELPER <<-\EOF &&
protocol=https
host=example.com
EOF
check fill $HELPER <<-\EOF
protocol=https
host=example.com
--
protocol=https
host=example.com
username=askpass-username
password=askpass-password
--
askpass: Username for 'https://example.com':
askpass: Password for 'https://askpass-username@example.com':
EOF
ok 51 - helper (store) erases all matching credentials
expecting success of 0302.52 'helper (store) not confused by long header':
check approve $HELPER <<-\EOF &&
protocol=https
host=victim.example.com
username=user
password=to-be-stolen
EOF
check fill $HELPER <<-EOF
protocol=https
host=badguy.example.com
wwwauth[]=basic realm=${LONG_VALUE}host=victim.example.com
--
protocol=https
host=badguy.example.com
username=askpass-username
password=askpass-password
wwwauth[]=basic realm=${LONG_VALUE}host=victim.example.com
--
askpass: Username for 'https://badguy.example.com':
askpass: Password for 'https://askpass-username@badguy.example.com':
EOF
ok 52 - helper (store) not confused by long header
expecting success of 0302.53 'if custom xdg file exists, home and xdg files not created':
test_when_finished "rm -f \"$HOME/xdg/git/credentials\"" &&
test -s "$HOME/xdg/git/credentials" &&
test_path_is_missing "$HOME/.git-credentials" &&
test_path_is_missing "$HOME/.config/git/credentials"
ok 53 - if custom xdg file exists, home and xdg files not created
expecting success of 0302.54 'get: use home file if both home and xdg files have matches':
echo "https://home-user:home-pass@example.com" >"$HOME/.git-credentials" &&
mkdir -p "$HOME/.config/git" &&
echo "https://xdg-user:xdg-pass@example.com" >"$HOME/.config/git/credentials" &&
check fill store <<-\EOF
protocol=https
host=example.com
--
protocol=https
host=example.com
username=home-user
password=home-pass
--
EOF
ok 54 - get: use home file if both home and xdg files have matches
expecting success of 0302.55 'get: use xdg file if home file has no matches':
>"$HOME/.git-credentials" &&
mkdir -p "$HOME/.config/git" &&
echo "https://xdg-user:xdg-pass@example.com" >"$HOME/.config/git/credentials" &&
check fill store <<-\EOF
protocol=https
host=example.com
--
protocol=https
host=example.com
username=xdg-user
password=xdg-pass
--
EOF
ok 55 - get: use xdg file if home file has no matches
checking prerequisite: SANITY
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SANITY" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SANITY" &&
mkdir SANETESTD.1 SANETESTD.2 &&
chmod +w SANETESTD.1 SANETESTD.2 &&
>SANETESTD.1/x 2>SANETESTD.2/x &&
chmod -w SANETESTD.1 &&
chmod -r SANETESTD.1/x &&
chmod -rx SANETESTD.2 ||
BUG "cannot prepare SANETESTD"
! test -r SANETESTD.1/x &&
! rm SANETESTD.1/x && ! test -f SANETESTD.2/x
status=$?
chmod +rwx SANETESTD.1 SANETESTD.2 &&
rm -rf SANETESTD.1 SANETESTD.2 ||
BUG "cannot clean SANETESTD"
return $status
)
rm: cannot remove 'SANETESTD.1/x': Permission denied
prerequisite SANITY ok
expecting success of 0302.56 'get: use xdg file if home file is unreadable':
echo "https://home-user:home-pass@example.com" >"$HOME/.git-credentials" &&
chmod -r "$HOME/.git-credentials" &&
mkdir -p "$HOME/.config/git" &&
echo "https://xdg-user:xdg-pass@example.com" >"$HOME/.config/git/credentials" &&
check fill store <<-\EOF
protocol=https
host=example.com
--
protocol=https
host=example.com
username=xdg-user
password=xdg-pass
--
EOF
ok 56 - get: use xdg file if home file is unreadable
expecting success of 0302.57 'store: if both xdg and home files exist, only store in home file':
>"$HOME/.git-credentials" &&
mkdir -p "$HOME/.config/git" &&
>"$HOME/.config/git/credentials" &&
check approve store <<-\EOF &&
protocol=https
host=example.com
username=store-user
password=store-pass
EOF
echo "https://store-user:store-pass@example.com" >expected &&
test_cmp expected "$HOME/.git-credentials" &&
test_must_be_empty "$HOME/.config/git/credentials"
ok 57 - store: if both xdg and home files exist, only store in home file
expecting success of 0302.58 'erase: erase matching credentials from both xdg and home files':
echo "https://home-user:home-pass@example.com" >"$HOME/.git-credentials" &&
mkdir -p "$HOME/.config/git" &&
echo "https://xdg-user:xdg-pass@example.com" >"$HOME/.config/git/credentials" &&
check reject store <<-\EOF &&
protocol=https
host=example.com
EOF
test_must_be_empty "$HOME/.git-credentials" &&
test_must_be_empty "$HOME/.config/git/credentials"
ok 58 - erase: erase matching credentials from both xdg and home files
expecting success of 0302.59 'get: ignore credentials without scheme as invalid':
echo "$2" >"$HOME/.git-credentials" &&
check fill store <<-\EOF
protocol=https
host=example.com
--
protocol=https
host=example.com
username=askpass-username
password=askpass-password
--
askpass: Username for 'https://example.com':
askpass: Password for 'https://askpass-username@example.com':
--
EOF
ok 59 - get: ignore credentials without scheme as invalid
expecting success of 0302.60 'get: ignore credentials without valid host/path as invalid':
echo "$2" >"$HOME/.git-credentials" &&
check fill store <<-\EOF
protocol=https
host=example.com
--
protocol=https
host=example.com
username=askpass-username
password=askpass-password
--
askpass: Username for 'https://example.com':
askpass: Password for 'https://askpass-username@example.com':
--
EOF
ok 60 - get: ignore credentials without valid host/path as invalid
expecting success of 0302.61 'get: ignore credentials without username/password as invalid':
echo "$2" >"$HOME/.git-credentials" &&
check fill store <<-\EOF
protocol=https
host=example.com
--
protocol=https
host=example.com
username=askpass-username
password=askpass-password
--
askpass: Username for 'https://example.com':
askpass: Password for 'https://askpass-username@example.com':
--
EOF
ok 61 - get: ignore credentials without username/password as invalid
expecting success of 0302.62 'get: credentials with DOS line endings are invalid':
printf "https://user:pass@example.com\r\n" >"$HOME/.git-credentials" &&
check fill store <<-\EOF
protocol=https
host=example.com
--
protocol=https
host=example.com
username=askpass-username
password=askpass-password
--
askpass: Username for 'https://example.com':
askpass: Password for 'https://askpass-username@example.com':
--
EOF
ok 62 - get: credentials with DOS line endings are invalid
expecting success of 0302.63 'get: credentials with path and DOS line endings are valid':
printf "https://user:pass@example.com/repo.git\r\n" >"$HOME/.git-credentials" &&
check fill store <<-\EOF
url=https://example.com/repo.git
--
protocol=https
host=example.com
username=user
password=pass
--
EOF
ok 63 - get: credentials with path and DOS line endings are valid
expecting success of 0302.64 'get: credentials with DOS line endings are invalid if path is relevant':
printf "https://user:pass@example.com/repo.git\r\n" >"$HOME/.git-credentials" &&
test_config credential.useHttpPath true &&
check fill store <<-\EOF
url=https://example.com/repo.git
--
protocol=https
host=example.com
path=repo.git
username=askpass-username
password=askpass-password
--
askpass: Username for 'https://example.com/repo.git':
askpass: Password for 'https://askpass-username@example.com/repo.git':
--
EOF
ok 64 - get: credentials with DOS line endings are invalid if path is relevant
expecting success of 0302.65 'get: store file can contain empty/bogus lines':
echo "" >"$HOME/.git-credentials" &&
q_to_tab <<-\CREDENTIAL >>"$HOME/.git-credentials" &&
#comment
Q
https://user:pass@example.com
CREDENTIAL
check fill store <<-\EOF
protocol=https
host=example.com
--
protocol=https
host=example.com
username=user
password=pass
--
EOF
ok 65 - get: store file can contain empty/bogus lines
# passed all 65 test(s)
1..65
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0303-credential-external.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0303-credential-external/.git/
1..0 # SKIP used to test external credential helpers
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0301-credential-cache.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0301-credential-cache/.git/
expecting success of 0301.1 'helper (cache) has no existing data':
check fill $HELPER <<-\EOF
protocol=https
host=example.com
--
protocol=https
host=example.com
username=askpass-username
password=askpass-password
--
askpass: Username for 'https://example.com':
askpass: Password for 'https://askpass-username@example.com':
EOF
ok 1 - helper (cache) has no existing data
expecting success of 0301.2 'helper (cache) stores password':
check approve $HELPER <<-\EOF
protocol=https
host=example.com
username=store-user
password=store-pass
EOF
ok 2 - helper (cache) stores password
expecting success of 0301.3 'helper (cache) can retrieve password':
check fill $HELPER <<-\EOF
protocol=https
host=example.com
--
protocol=https
host=example.com
username=store-user
password=store-pass
--
EOF
ok 3 - helper (cache) can retrieve password
expecting success of 0301.4 'helper (cache) requires matching protocol':
check fill $HELPER <<-\EOF
protocol=http
host=example.com
--
protocol=http
host=example.com
username=askpass-username
password=askpass-password
--
askpass: Username for 'http://example.com':
askpass: Password for 'http://askpass-username@example.com':
EOF
ok 4 - helper (cache) requires matching protocol
expecting success of 0301.5 'helper (cache) requires matching host':
check fill $HELPER <<-\EOF
protocol=https
host=other.tld
--
protocol=https
host=other.tld
username=askpass-username
password=askpass-password
--
askpass: Username for 'https://other.tld':
askpass: Password for 'https://askpass-username@other.tld':
EOF
ok 5 - helper (cache) requires matching host
expecting success of 0301.6 'helper (cache) requires matching username':
check fill $HELPER <<-\EOF
protocol=https
host=example.com
username=other
--
protocol=https
host=example.com
username=other
password=askpass-password
--
askpass: Password for 'https://other@example.com':
EOF
ok 6 - helper (cache) requires matching username
expecting success of 0301.7 'helper (cache) requires matching path':
test_config credential.usehttppath true &&
check approve $HELPER <<-\EOF &&
protocol=http
host=path.tld
path=foo.git
username=user
password=pass
EOF
check fill $HELPER <<-\EOF
protocol=http
host=path.tld
path=bar.git
--
protocol=http
host=path.tld
path=bar.git
username=askpass-username
password=askpass-password
--
askpass: Username for 'http://path.tld/bar.git':
askpass: Password for 'http://askpass-username@path.tld/bar.git':
EOF
ok 7 - helper (cache) requires matching path
expecting success of 0301.8 'helper (cache) overwrites on store':
check approve $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user-overwrite
password=pass1
EOF
check approve $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user-overwrite
password=pass2
EOF
check fill $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user-overwrite
--
protocol=https
host=example.com
username=user-overwrite
password=pass2
EOF
check reject $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user-overwrite
password=pass2
EOF
check fill $HELPER <<-\EOF
protocol=https
host=example.com
username=user-overwrite
--
protocol=https
host=example.com
username=user-overwrite
password=askpass-password
--
askpass: Password for 'https://user-overwrite@example.com':
EOF
ok 8 - helper (cache) overwrites on store
expecting success of 0301.9 'helper (cache) can forget host':
check reject $HELPER <<-\EOF &&
protocol=https
host=example.com
EOF
check fill $HELPER <<-\EOF
protocol=https
host=example.com
--
protocol=https
host=example.com
username=askpass-username
password=askpass-password
--
askpass: Username for 'https://example.com':
askpass: Password for 'https://askpass-username@example.com':
EOF
ok 9 - helper (cache) can forget host
expecting success of 0301.10 'helper (cache) can store multiple users':
check approve $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user1
password=pass1
EOF
check approve $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user2
password=pass2
EOF
check fill $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user1
--
protocol=https
host=example.com
username=user1
password=pass1
EOF
check fill $HELPER <<-\EOF
protocol=https
host=example.com
username=user2
--
protocol=https
host=example.com
username=user2
password=pass2
EOF
ok 10 - helper (cache) can store multiple users
expecting success of 0301.11 'helper (cache) does not erase a password distinct from input':
check approve $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user-distinct-pass
password=pass1
EOF
check reject $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user-distinct-pass
password=pass2
EOF
check fill $HELPER <<-\EOF
protocol=https
host=example.com
username=user-distinct-pass
--
protocol=https
host=example.com
username=user-distinct-pass
password=pass1
EOF
ok 11 - helper (cache) does not erase a password distinct from input
expecting success of 0301.12 'helper (cache) can forget user':
check reject $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user1
EOF
check fill $HELPER <<-\EOF
protocol=https
host=example.com
username=user1
--
protocol=https
host=example.com
username=user1
password=askpass-password
--
askpass: Password for 'https://user1@example.com':
EOF
ok 12 - helper (cache) can forget user
expecting success of 0301.13 'helper (cache) remembers other user':
check fill $HELPER <<-\EOF
protocol=https
host=example.com
username=user2
--
protocol=https
host=example.com
username=user2
password=pass2
EOF
ok 13 - helper (cache) remembers other user
expecting success of 0301.14 'helper (cache) can store empty username':
check approve $HELPER <<-\EOF &&
protocol=https
host=sso.tld
username=
password=
EOF
check fill $HELPER <<-\EOF
protocol=https
host=sso.tld
--
protocol=https
host=sso.tld
username=
password=
EOF
ok 14 - helper (cache) can store empty username
expecting success of 0301.15 'helper (cache) erases all matching credentials':
check approve $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user-erase1
password=pass1
EOF
check approve $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user-erase2
password=pass1
EOF
check reject $HELPER <<-\EOF &&
protocol=https
host=example.com
EOF
check fill $HELPER <<-\EOF
protocol=https
host=example.com
--
protocol=https
host=example.com
username=askpass-username
password=askpass-password
--
askpass: Username for 'https://example.com':
askpass: Password for 'https://askpass-username@example.com':
EOF
ok 15 - helper (cache) erases all matching credentials
expecting success of 0301.16 'helper (cache) not confused by long header':
check approve $HELPER <<-\EOF &&
protocol=https
host=victim.example.com
username=user
password=to-be-stolen
EOF
check fill $HELPER <<-EOF
protocol=https
host=badguy.example.com
wwwauth[]=basic realm=${LONG_VALUE}host=victim.example.com
--
protocol=https
host=badguy.example.com
username=askpass-username
password=askpass-password
wwwauth[]=basic realm=${LONG_VALUE}host=victim.example.com
--
askpass: Username for 'https://badguy.example.com':
askpass: Password for 'https://askpass-username@badguy.example.com':
EOF
ok 16 - helper (cache) not confused by long header
expecting success of 0301.17 'helper (cache) stores oauth_refresh_token':
check approve $HELPER <<-\EOF
protocol=https
host=example.com
username=user4
password=pass
oauth_refresh_token=xyzzy
EOF
ok 17 - helper (cache) stores oauth_refresh_token
expecting success of 0301.18 'helper (cache) gets oauth_refresh_token':
check fill $HELPER <<-\EOF
protocol=https
host=example.com
username=user4
--
protocol=https
host=example.com
username=user4
password=pass
oauth_refresh_token=xyzzy
--
EOF
ok 18 - helper (cache) gets oauth_refresh_token
expecting success of 0301.19 'socket defaults to ~/.cache/git/credential/socket':
test_when_finished "
git credential-cache exit &&
rmdir -p .cache/git/credential/
" &&
test_path_is_missing "$HOME/.git-credential-cache" &&
test_path_is_socket "$HOME/.cache/git/credential/socket"
ok 19 - socket defaults to ~/.cache/git/credential/socket
expecting success of 0301.20 'helper (cache) has no existing data':
check fill $HELPER <<-\EOF
protocol=https
host=example.com
--
protocol=https
host=example.com
username=askpass-username
password=askpass-password
--
askpass: Username for 'https://example.com':
askpass: Password for 'https://askpass-username@example.com':
EOF
ok 20 - helper (cache) has no existing data
expecting success of 0301.21 'helper (cache) stores password':
check approve $HELPER <<-\EOF
protocol=https
host=example.com
username=store-user
password=store-pass
EOF
ok 21 - helper (cache) stores password
expecting success of 0301.22 'helper (cache) can retrieve password':
check fill $HELPER <<-\EOF
protocol=https
host=example.com
--
protocol=https
host=example.com
username=store-user
password=store-pass
--
EOF
ok 22 - helper (cache) can retrieve password
expecting success of 0301.23 'helper (cache) requires matching protocol':
check fill $HELPER <<-\EOF
protocol=http
host=example.com
--
protocol=http
host=example.com
username=askpass-username
password=askpass-password
--
askpass: Username for 'http://example.com':
askpass: Password for 'http://askpass-username@example.com':
EOF
ok 23 - helper (cache) requires matching protocol
expecting success of 0301.24 'helper (cache) requires matching host':
check fill $HELPER <<-\EOF
protocol=https
host=other.tld
--
protocol=https
host=other.tld
username=askpass-username
password=askpass-password
--
askpass: Username for 'https://other.tld':
askpass: Password for 'https://askpass-username@other.tld':
EOF
ok 24 - helper (cache) requires matching host
expecting success of 0301.25 'helper (cache) requires matching username':
check fill $HELPER <<-\EOF
protocol=https
host=example.com
username=other
--
protocol=https
host=example.com
username=other
password=askpass-password
--
askpass: Password for 'https://other@example.com':
EOF
ok 25 - helper (cache) requires matching username
expecting success of 0301.26 'helper (cache) requires matching path':
test_config credential.usehttppath true &&
check approve $HELPER <<-\EOF &&
protocol=http
host=path.tld
path=foo.git
username=user
password=pass
EOF
check fill $HELPER <<-\EOF
protocol=http
host=path.tld
path=bar.git
--
protocol=http
host=path.tld
path=bar.git
username=askpass-username
password=askpass-password
--
askpass: Username for 'http://path.tld/bar.git':
askpass: Password for 'http://askpass-username@path.tld/bar.git':
EOF
ok 26 - helper (cache) requires matching path
expecting success of 0301.27 'helper (cache) overwrites on store':
check approve $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user-overwrite
password=pass1
EOF
check approve $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user-overwrite
password=pass2
EOF
check fill $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user-overwrite
--
protocol=https
host=example.com
username=user-overwrite
password=pass2
EOF
check reject $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user-overwrite
password=pass2
EOF
check fill $HELPER <<-\EOF
protocol=https
host=example.com
username=user-overwrite
--
protocol=https
host=example.com
username=user-overwrite
password=askpass-password
--
askpass: Password for 'https://user-overwrite@example.com':
EOF
ok 27 - helper (cache) overwrites on store
expecting success of 0301.28 'helper (cache) can forget host':
check reject $HELPER <<-\EOF &&
protocol=https
host=example.com
EOF
check fill $HELPER <<-\EOF
protocol=https
host=example.com
--
protocol=https
host=example.com
username=askpass-username
password=askpass-password
--
askpass: Username for 'https://example.com':
askpass: Password for 'https://askpass-username@example.com':
EOF
ok 28 - helper (cache) can forget host
expecting success of 0301.29 'helper (cache) can store multiple users':
check approve $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user1
password=pass1
EOF
check approve $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user2
password=pass2
EOF
check fill $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user1
--
protocol=https
host=example.com
username=user1
password=pass1
EOF
check fill $HELPER <<-\EOF
protocol=https
host=example.com
username=user2
--
protocol=https
host=example.com
username=user2
password=pass2
EOF
ok 29 - helper (cache) can store multiple users
expecting success of 0301.30 'helper (cache) does not erase a password distinct from input':
check approve $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user-distinct-pass
password=pass1
EOF
check reject $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user-distinct-pass
password=pass2
EOF
check fill $HELPER <<-\EOF
protocol=https
host=example.com
username=user-distinct-pass
--
protocol=https
host=example.com
username=user-distinct-pass
password=pass1
EOF
ok 30 - helper (cache) does not erase a password distinct from input
expecting success of 0301.31 'helper (cache) can forget user':
check reject $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user1
EOF
check fill $HELPER <<-\EOF
protocol=https
host=example.com
username=user1
--
protocol=https
host=example.com
username=user1
password=askpass-password
--
askpass: Password for 'https://user1@example.com':
EOF
ok 31 - helper (cache) can forget user
expecting success of 0301.32 'helper (cache) remembers other user':
check fill $HELPER <<-\EOF
protocol=https
host=example.com
username=user2
--
protocol=https
host=example.com
username=user2
password=pass2
EOF
ok 32 - helper (cache) remembers other user
expecting success of 0301.33 'helper (cache) can store empty username':
check approve $HELPER <<-\EOF &&
protocol=https
host=sso.tld
username=
password=
EOF
check fill $HELPER <<-\EOF
protocol=https
host=sso.tld
--
protocol=https
host=sso.tld
username=
password=
EOF
ok 33 - helper (cache) can store empty username
expecting success of 0301.34 'helper (cache) erases all matching credentials':
check approve $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user-erase1
password=pass1
EOF
check approve $HELPER <<-\EOF &&
protocol=https
host=example.com
username=user-erase2
password=pass1
EOF
check reject $HELPER <<-\EOF &&
protocol=https
host=example.com
EOF
check fill $HELPER <<-\EOF
protocol=https
host=example.com
--
protocol=https
host=example.com
username=askpass-username
password=askpass-password
--
askpass: Username for 'https://example.com':
askpass: Password for 'https://askpass-username@example.com':
EOF
ok 34 - helper (cache) erases all matching credentials
expecting success of 0301.35 'helper (cache) not confused by long header':
check approve $HELPER <<-\EOF &&
protocol=https
host=victim.example.com
username=user
password=to-be-stolen
EOF
check fill $HELPER <<-EOF
protocol=https
host=badguy.example.com
wwwauth[]=basic realm=${LONG_VALUE}host=victim.example.com
--
protocol=https
host=badguy.example.com
username=askpass-username
password=askpass-password
wwwauth[]=basic realm=${LONG_VALUE}host=victim.example.com
--
askpass: Username for 'https://badguy.example.com':
askpass: Password for 'https://askpass-username@badguy.example.com':
EOF
ok 35 - helper (cache) not confused by long header
expecting success of 0301.36 'use custom XDG_CACHE_HOME if set and default sockets are not created':
test_when_finished "git credential-cache exit" &&
test_path_is_socket "$XDG_CACHE_HOME/git/credential/socket" &&
test_path_is_missing "$HOME/.git-credential-cache/socket" &&
test_path_is_missing "$HOME/.cache/git/credential/socket"
ok 36 - use custom XDG_CACHE_HOME if set and default sockets are not created
expecting success of 0301.37 'credential-cache --socket option overrides default location':
test_when_finished "
git credential-cache exit --socket \"\$HOME/dir/socket\" &&
rmdir \"\$HOME/dir\"
" &&
check approve "cache --socket \"\$HOME/dir/socket\"" <<-\EOF &&
protocol=https
host=example.com
username=store-user
password=store-pass
EOF
test_path_is_socket "$HOME/dir/socket"
ok 37 - credential-cache --socket option overrides default location
expecting success of 0301.38 'use custom XDG_CACHE_HOME even if xdg socket exists':
test_when_finished "
git credential-cache exit &&
sane_unset XDG_CACHE_HOME
" &&
check approve cache <<-\EOF &&
protocol=https
host=example.com
username=store-user
password=store-pass
EOF
test_path_is_socket "$HOME/.cache/git/credential/socket" &&
XDG_CACHE_HOME="$HOME/xdg" &&
export XDG_CACHE_HOME &&
check approve cache <<-\EOF &&
protocol=https
host=example.com
username=store-user
password=store-pass
EOF
test_path_is_socket "$XDG_CACHE_HOME/git/credential/socket"
ok 38 - use custom XDG_CACHE_HOME even if xdg socket exists
expecting success of 0301.39 'use user socket if user directory exists':
test_when_finished "
git credential-cache exit &&
rmdir \"\$HOME/.git-credential-cache/\"
" &&
mkdir -p "$HOME/.git-credential-cache/" &&
chmod 700 "$HOME/.git-credential-cache/" &&
check approve cache <<-\EOF &&
protocol=https
host=example.com
username=store-user
password=store-pass
EOF
test_path_is_socket "$HOME/.git-credential-cache/socket"
ok 39 - use user socket if user directory exists
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
expecting success of 0301.40 'use user socket if user directory is a symlink to a directory':
test_when_finished "
git credential-cache exit &&
rmdir \"\$HOME/dir/\" &&
rm \"\$HOME/.git-credential-cache\"
" &&
mkdir -p -m 700 "$HOME/dir/" &&
ln -s "$HOME/dir" "$HOME/.git-credential-cache" &&
check approve cache <<-\EOF &&
protocol=https
host=example.com
username=store-user
password=store-pass
EOF
test_path_is_socket "$HOME/.git-credential-cache/socket"
ok 40 - use user socket if user directory is a symlink to a directory
expecting success of 0301.41 'helper (cache --timeout=1) times out':
check approve "$HELPER" <<-\EOF &&
protocol=https
host=timeout.tld
username=user
password=pass
EOF
sleep 2 &&
check fill "$HELPER" <<-\EOF
protocol=https
host=timeout.tld
--
protocol=https
host=timeout.tld
username=askpass-username
password=askpass-password
--
askpass: Username for 'https://timeout.tld':
askpass: Password for 'https://askpass-username@timeout.tld':
EOF
ok 41 - helper (cache --timeout=1) times out
# passed all 41 test(s)
1..41
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0410-partial-clone.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0410-partial-clone/.git/
expecting success of 0410.1 'extensions.partialclone without filter':
test_create_repo server &&
git clone --filter="blob:none" "file://$(pwd)/server" client &&
git -C client config --unset remote.origin.partialclonefilter &&
git -C client fetch origin
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0410-partial-clone/server/.git/
Cloning into 'client'...
warning: You appear to have cloned an empty repository.
ok 1 - extensions.partialclone without filter
expecting success of 0410.2 'convert shallow clone to partial clone':
rm -fr server client &&
test_create_repo server &&
test_commit -C server my_commit 1 &&
test_commit -C server my_commit2 1 &&
git clone --depth=1 "file://$(pwd)/server" client &&
git -C client fetch --unshallow --filter="blob:none" &&
test_cmp_config -C client true remote.origin.promisor &&
test_cmp_config -C client blob:none remote.origin.partialclonefilter &&
test_cmp_config -C client 1 core.repositoryformatversion
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0410-partial-clone/server/.git/
[master (root-commit) 282d88a] my_commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 1
[master b56a127] my_commit2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Cloning into 'client'...
warning: filtering not recognized by server, ignoring
warning: filtering not recognized by server, ignoring
From file:///<<PKGBUILDDIR>>/t/trash directory.t0410-partial-clone/server
* [new tag] my_commit -> my_commit
ok 2 - convert shallow clone to partial clone
checking prerequisite: SHA1
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SHA1" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SHA1" &&
case "$GIT_DEFAULT_HASH" in
sha1) true ;;
"") test $(git hash-object /dev/null) = e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 ;;
*) false ;;
esac
)
prerequisite SHA1 ok
expecting success of 0410.3 'convert to partial clone with noop extension':
rm -fr server client &&
test_create_repo server &&
test_commit -C server my_commit 1 &&
test_commit -C server my_commit2 1 &&
git clone --depth=1 "file://$(pwd)/server" client &&
test_cmp_config -C client 0 core.repositoryformatversion &&
git -C client config extensions.noop true &&
git -C client fetch --unshallow --filter="blob:none"
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0410-partial-clone/server/.git/
[master (root-commit) 593c6ee] my_commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 1
[master 639877a] my_commit2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Cloning into 'client'...
warning: filtering not recognized by server, ignoring
warning: filtering not recognized by server, ignoring
From file:///<<PKGBUILDDIR>>/t/trash directory.t0410-partial-clone/server
* [new tag] my_commit -> my_commit
ok 3 - convert to partial clone with noop extension
expecting success of 0410.4 'converting to partial clone fails with unrecognized extension':
rm -fr server client &&
test_create_repo server &&
test_commit -C server my_commit 1 &&
test_commit -C server my_commit2 1 &&
git clone --depth=1 "file://$(pwd)/server" client &&
test_cmp_config -C client 0 core.repositoryformatversion &&
git -C client config extensions.nonsense true &&
test_must_fail git -C client fetch --unshallow --filter="blob:none"
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0410-partial-clone/server/.git/
[master (root-commit) 6114aba] my_commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 1
[master 743b332] my_commit2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Cloning into 'client'...
error: cannot upgrade repository format: unknown extension nonsense
fatal: unable to upgrade repository format to support partial clone
ok 4 - converting to partial clone fails with unrecognized extension
expecting success of 0410.5 'missing reflog object, but promised by a commit, passes fsck':
rm -rf repo &&
test_create_repo repo &&
test_commit -C repo my_commit &&
A=$(git -C repo commit-tree -m a HEAD^{tree}) &&
C=$(git -C repo commit-tree -m c -p $A HEAD^{tree}) &&
# Reference $A only from reflog, and delete it
git -C repo branch my_branch "$A" &&
git -C repo branch -f my_branch my_commit &&
delete_object repo "$A" &&
# State that we got $C, which refers to $A, from promisor
printf "$C\n" | pack_as_from_promisor &&
# Normally, it fails
test_must_fail git -C repo fsck &&
# But with the extension, it succeeds
git -C repo config core.repositoryformatversion 1 &&
git -C repo config extensions.partialclone "arbitrary string" &&
git -C repo fsck
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0410-partial-clone/repo/.git/
[master (root-commit) 645f0a1] my_commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 my_commit.t
b3b4322753142630efe6237cb5ef6cdc9d672d66
error: refs/heads/my_branch: invalid reflog entry 7fcb8777d818dca542e59d6eec4b069c2142b35e
error: refs/heads/my_branch: invalid reflog entry 7fcb8777d818dca542e59d6eec4b069c2142b35e
dangling commit fe174b3c23f972b6c7ba26ed4c372380fc6d8deb
dangling commit fe174b3c23f972b6c7ba26ed4c372380fc6d8deb
ok 5 - missing reflog object, but promised by a commit, passes fsck
expecting success of 0410.6 'missing reflog object, but promised by a tag, passes fsck':
rm -rf repo &&
test_create_repo repo &&
test_commit -C repo my_commit &&
A=$(git -C repo commit-tree -m a HEAD^{tree}) &&
git -C repo tag -a -m d my_tag_name $A &&
T=$(git -C repo rev-parse my_tag_name) &&
git -C repo tag -d my_tag_name &&
# Reference $A only from reflog, and delete it
git -C repo branch my_branch "$A" &&
git -C repo branch -f my_branch my_commit &&
delete_object repo "$A" &&
# State that we got $T, which refers to $A, from promisor
printf "$T\n" | pack_as_from_promisor &&
git -C repo config core.repositoryformatversion 1 &&
git -C repo config extensions.partialclone "arbitrary string" &&
git -C repo fsck
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0410-partial-clone/repo/.git/
[master (root-commit) da2e7de] my_commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 my_commit.t
Deleted tag 'my_tag_name' (was 34fac6a)
c5475378ca2e78834b400c9d937a6a162caee84e
dangling tag 34fac6a88cc545a8f8a17584908f0390550dbdb0
ok 6 - missing reflog object, but promised by a tag, passes fsck
expecting success of 0410.7 'missing reflog object alone fails fsck, even with extension set':
rm -rf repo &&
test_create_repo repo &&
test_commit -C repo my_commit &&
A=$(git -C repo commit-tree -m a HEAD^{tree}) &&
B=$(git -C repo commit-tree -m b HEAD^{tree}) &&
# Reference $A only from reflog, and delete it
git -C repo branch my_branch "$A" &&
git -C repo branch -f my_branch my_commit &&
delete_object repo "$A" &&
git -C repo config core.repositoryformatversion 1 &&
git -C repo config extensions.partialclone "arbitrary string" &&
test_must_fail git -C repo fsck
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0410-partial-clone/repo/.git/
[master (root-commit) b45c342] my_commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 my_commit.t
error: refs/heads/my_branch: invalid reflog entry f1a8c2dbb0668e21bdaf6b739b0910c11c02cd4e
error: refs/heads/my_branch: invalid reflog entry f1a8c2dbb0668e21bdaf6b739b0910c11c02cd4e
dangling commit 2a85d5935b4dc1c093280877f8358ac27008115b
ok 7 - missing reflog object alone fails fsck, even with extension set
expecting success of 0410.8 'missing ref object, but promised, passes fsck':
rm -rf repo &&
test_create_repo repo &&
test_commit -C repo my_commit &&
A=$(git -C repo commit-tree -m a HEAD^{tree}) &&
# Reference $A only from ref
git -C repo branch my_branch "$A" &&
promise_and_delete "$A" &&
git -C repo config core.repositoryformatversion 1 &&
git -C repo config extensions.partialclone "arbitrary string" &&
git -C repo fsck
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0410-partial-clone/repo/.git/
[master (root-commit) 64a3647] my_commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 my_commit.t
07990eb35a674c00ed95208ed2ad46a96b92b75e
dangling tag 549fe140e3a312e3c41eddbd806b0489252b5987
ok 8 - missing ref object, but promised, passes fsck
expecting success of 0410.9 'missing object, but promised, passes fsck':
rm -rf repo &&
test_create_repo repo &&
test_commit -C repo 1 &&
test_commit -C repo 2 &&
test_commit -C repo 3 &&
git -C repo tag -a annotated_tag -m "annotated tag" &&
C=$(git -C repo rev-parse 1) &&
T=$(git -C repo rev-parse 2^{tree}) &&
B=$(git hash-object repo/3.t) &&
AT=$(git -C repo rev-parse annotated_tag) &&
promise_and_delete "$C" &&
promise_and_delete "$T" &&
promise_and_delete "$B" &&
promise_and_delete "$AT" &&
git -C repo config core.repositoryformatversion 1 &&
git -C repo config extensions.partialclone "arbitrary string" &&
git -C repo fsck
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0410-partial-clone/repo/.git/
[master (root-commit) 105d4e4] 1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 1.t
[master 6e1a67a] 2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 2.t
[master b8c6625] 3
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 3.t
2485aac98d1c3225c271e3af5e766f4367310b3a
777e8eb59ffb5b5722c8cd4f7d423cf3cd5ba1c8
31d0fc16a061bb21781c4c8359676a24cc34001e
hint: You have created a nested tag. The object referred to by your new tag is
hint: already a tag. If you meant to tag the object that it points to, use:
hint:
hint: git tag -f my_annotated_tag f68fb4566316e272a308917d081de51a218993a2^{}
hint: Disable this message with "git config advice.nestedTag false"
4a50c8bde259d424ffcf127903fe9d554cac6b7d
dangling tag 2683b267061c97bcc34e7140acb2a6275e5b30d1
dangling tag 34bbb6f6e07e9726facfc8fa6af2c0b91c7d5958
dangling tag 5cbb9b35329a5b70b793ba9577acb379e91b1e55
dangling tree dcf3d5d7c6d10fb961287ca9bc59a5bf8a4b2afc
dangling tag 9fcc2c2e5cb1b8f6435735dde34bf7cb9effe69d
ok 9 - missing object, but promised, passes fsck
expecting success of 0410.10 'missing CLI object, but promised, passes fsck':
rm -rf repo &&
test_create_repo repo &&
test_commit -C repo my_commit &&
A=$(git -C repo commit-tree -m a HEAD^{tree}) &&
promise_and_delete "$A" &&
git -C repo config core.repositoryformatversion 1 &&
git -C repo config extensions.partialclone "arbitrary string" &&
git -C repo fsck "$A"
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0410-partial-clone/repo/.git/
[master (root-commit) 1a8f860] my_commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 my_commit.t
492fcaedcae5f38e5d43847baf9ad7f322583322
dangling tag 2b9e4c52199b033af01a67d4508ef14ad7cf61f0
dangling commit 1a8f8606ad20bf122ef5b7c5a44b64bc32833be8
ok 10 - missing CLI object, but promised, passes fsck
expecting success of 0410.11 'fetching of missing objects':
rm -rf repo err &&
test_create_repo server &&
test_commit -C server foo &&
git -C server repack -a -d --write-bitmap-index &&
git clone "file://$(pwd)/server" repo &&
HASH=$(git -C repo rev-parse foo) &&
rm -rf repo/.git/objects/* &&
git -C repo config core.repositoryformatversion 1 &&
git -C repo config extensions.partialclone "origin" &&
git -C repo cat-file -p "$HASH" 2>err &&
# Ensure that no spurious FETCH_HEAD messages are written
! grep FETCH_HEAD err &&
# Ensure that the .promisor file is written, and check that its
# associated packfile contains the object
ls repo/.git/objects/pack/pack-*.promisor >promisorlist &&
test_line_count = 1 promisorlist &&
IDX=$(sed "s/promisor$/idx/" promisorlist) &&
git verify-pack --verbose "$IDX" >out &&
grep "$HASH" out
Reinitialized existing Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0410-partial-clone/server/.git/
[master b704ccc] foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo.t
Cloning into 'repo'...
tree e36fba6ed8261dd9be2ee0232186fc8ed7b73cdf
parent 743b332bcde964fd77f8834b760ab10e4e6a878e
author A U Thor <author@example.com> 1112912833 -0700
committer C O Mitter <committer@example.com> 1112912833 -0700
foo
b704ccc22db3053176e94aafda84b62a9f092a25 commit 215 155 12
ok 11 - fetching of missing objects
expecting success of 0410.12 'fetching of a promised object that promisor remote no longer has':
rm -f err &&
test_create_repo unreliable-server &&
git -C unreliable-server config uploadpack.allowanysha1inwant 1 &&
git -C unreliable-server config uploadpack.allowfilter 1 &&
test_commit -C unreliable-server foo &&
git clone --filter=blob:none --no-checkout "file://$(pwd)/unreliable-server" unreliable-client &&
rm -rf unreliable-server/.git/objects/* &&
test_must_fail git -C unreliable-client checkout HEAD 2>err &&
grep "could not fetch.*from promisor remote" err
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0410-partial-clone/unreliable-server/.git/
[master (root-commit) 179b371] foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo.t
Cloning into 'unreliable-client'...
fatal: could not fetch 257cc5642cb1a054f08cc83f2d943e56fd3ebe99 from promisor remote
ok 12 - fetching of a promised object that promisor remote no longer has
expecting success of 0410.13 'fetching of missing objects works with ref-in-want enabled':
# ref-in-want requires protocol version 2
git -C server config protocol.version 2 &&
git -C server config uploadpack.allowrefinwant 1 &&
git -C repo config protocol.version 2 &&
rm -rf repo/.git/objects/* &&
rm -f trace &&
GIT_TRACE_PACKET="$(pwd)/trace" git -C repo cat-file -p "$HASH" &&
grep "fetch< fetch=.*ref-in-want" trace
warning: filtering not recognized by server, ignoring
tree e36fba6ed8261dd9be2ee0232186fc8ed7b73cdf
parent 743b332bcde964fd77f8834b760ab10e4e6a878e
author A U Thor <author@example.com> 1112912833 -0700
committer C O Mitter <committer@example.com> 1112912833 -0700
foo
packet: fetch< fetch=shallow wait-for-done ref-in-want
ok 13 - fetching of missing objects works with ref-in-want enabled
expecting success of 0410.14 'fetching of missing objects from another promisor remote':
git clone "file://$(pwd)/server" server2 &&
test_commit -C server2 bar &&
git -C server2 repack -a -d --write-bitmap-index &&
HASH2=$(git -C server2 rev-parse bar) &&
git -C repo remote add server2 "file://$(pwd)/server2" &&
git -C repo config remote.server2.promisor true &&
git -C repo cat-file -p "$HASH2" &&
git -C repo fetch server2 &&
rm -rf repo/.git/objects/* &&
git -C repo cat-file -p "$HASH2" &&
# Ensure that the .promisor file is written, and check that its
# associated packfile contains the object
ls repo/.git/objects/pack/pack-*.promisor >promisorlist &&
test_line_count = 1 promisorlist &&
IDX=$(sed "s/promisor$/idx/" promisorlist) &&
git verify-pack --verbose "$IDX" >out &&
grep "$HASH2" out
Cloning into 'server2'...
[master e31237c] bar
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 bar.t
warning: filtering not recognized by server, ignoring
tree 71baac54afb804ff6a25aae0730b2466d066a704
parent b704ccc22db3053176e94aafda84b62a9f092a25
author A U Thor <author@example.com> 1112912953 -0700
committer C O Mitter <committer@example.com> 1112912953 -0700
bar
From file:///<<PKGBUILDDIR>>/t/trash directory.t0410-partial-clone/server2
* [new branch] master -> server2/master
* [new tag] bar -> bar
warning: filtering not recognized by server, ignoring
tree 71baac54afb804ff6a25aae0730b2466d066a704
parent b704ccc22db3053176e94aafda84b62a9f092a25
author A U Thor <author@example.com> 1112912953 -0700
committer C O Mitter <committer@example.com> 1112912953 -0700
bar
e31237c4c7797ac5ccee8f6eca69c5a52b78be41 commit 215 154 12
ok 14 - fetching of missing objects from another promisor remote
expecting success of 0410.15 'fetching of missing objects configures a promisor remote':
git clone "file://$(pwd)/server" server3 &&
test_commit -C server3 baz &&
git -C server3 repack -a -d --write-bitmap-index &&
HASH3=$(git -C server3 rev-parse baz) &&
git -C server3 config uploadpack.allowfilter 1 &&
rm repo/.git/objects/pack/pack-*.promisor &&
git -C repo remote add server3 "file://$(pwd)/server3" &&
git -C repo fetch --filter="blob:none" server3 $HASH3 &&
test_cmp_config -C repo true remote.server3.promisor &&
# Ensure that the .promisor file is written, and check that its
# associated packfile contains the object
ls repo/.git/objects/pack/pack-*.promisor >promisorlist &&
test_line_count = 1 promisorlist &&
IDX=$(sed "s/promisor$/idx/" promisorlist) &&
git verify-pack --verbose "$IDX" >out &&
grep "$HASH3" out
Cloning into 'server3'...
[master 564c63c] baz
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 baz.t
From file:///<<PKGBUILDDIR>>/t/trash directory.t0410-partial-clone/server3
* branch 564c63c3fd2eb60f09ddde009d238b8ea1732504 -> FETCH_HEAD
564c63c3fd2eb60f09ddde009d238b8ea1732504 commit 215 156 12
ok 15 - fetching of missing objects configures a promisor remote
expecting success of 0410.16 'fetching of missing blobs works':
rm -rf server server2 repo &&
rm -rf server server3 repo &&
test_create_repo server &&
test_commit -C server foo &&
git -C server repack -a -d --write-bitmap-index &&
git clone "file://$(pwd)/server" repo &&
git hash-object repo/foo.t >blobhash &&
rm -rf repo/.git/objects/* &&
git -C server config uploadpack.allowanysha1inwant 1 &&
git -C server config uploadpack.allowfilter 1 &&
git -C repo config core.repositoryformatversion 1 &&
git -C repo config extensions.partialclone "origin" &&
git -C repo cat-file -p $(cat blobhash)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0410-partial-clone/server/.git/
[master (root-commit) bbef54c] foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo.t
Cloning into 'repo'...
foo
ok 16 - fetching of missing blobs works
expecting success of 0410.17 'fetching of missing trees does not fetch blobs':
rm -rf server repo &&
test_create_repo server &&
test_commit -C server foo &&
git -C server repack -a -d --write-bitmap-index &&
git clone "file://$(pwd)/server" repo &&
git -C repo rev-parse foo^{tree} >treehash &&
git hash-object repo/foo.t >blobhash &&
rm -rf repo/.git/objects/* &&
git -C server config uploadpack.allowanysha1inwant 1 &&
git -C server config uploadpack.allowfilter 1 &&
git -C repo config core.repositoryformatversion 1 &&
git -C repo config extensions.partialclone "origin" &&
git -C repo cat-file -p $(cat treehash) &&
# Ensure that the tree, but not the blob, is fetched
git -C repo rev-list --objects --missing=print $(cat treehash) >objects &&
grep "^$(cat treehash)" objects &&
grep "^[?]$(cat blobhash)" objects
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0410-partial-clone/server/.git/
[master (root-commit) 6aab15f] foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo.t
Cloning into 'repo'...
100644 blob 257cc5642cb1a054f08cc83f2d943e56fd3ebe99 foo.t
64fd3796c57084e7b8cbae358ce37970b8e954f6
?257cc5642cb1a054f08cc83f2d943e56fd3ebe99
ok 17 - fetching of missing trees does not fetch blobs
expecting success of 0410.18 'rev-list stops traversal at missing and promised commit':
rm -rf repo &&
test_create_repo repo &&
test_commit -C repo foo &&
test_commit -C repo bar &&
FOO=$(git -C repo rev-parse foo) &&
promise_and_delete "$FOO" &&
git -C repo config core.repositoryformatversion 1 &&
git -C repo config extensions.partialclone "arbitrary string" &&
git -C repo rev-list --exclude-promisor-objects --objects bar >out &&
grep $(git -C repo rev-parse bar) out &&
! grep $FOO out
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0410-partial-clone/repo/.git/
[master (root-commit) 9221471] foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo.t
[master ff8c8be] bar
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 bar.t
b811da665b3347533d28e754783c731dd3be8fc0
ff8c8bee78de1035f43b9046635cf3173c80847d
ok 18 - rev-list stops traversal at missing and promised commit
expecting success of 0410.19 'missing tree objects with --missing=allow-promisor and --exclude-promisor-objects':
rm -rf repo &&
test_create_repo repo &&
test_commit -C repo foo &&
test_commit -C repo bar &&
test_commit -C repo baz &&
promise_and_delete $(git -C repo rev-parse bar^{tree}) &&
promise_and_delete $(git -C repo rev-parse foo^{tree}) &&
git -C repo config core.repositoryformatversion 1 &&
git -C repo config extensions.partialclone "arbitrary string" &&
git -C repo rev-list --missing=allow-promisor --objects HEAD >objs 2>rev_list_err &&
test_must_be_empty rev_list_err &&
# 3 commits, 3 blobs, and 1 tree
test_line_count = 7 objs &&
# Do the same for --exclude-promisor-objects, but with all trees gone.
promise_and_delete $(git -C repo rev-parse baz^{tree}) &&
git -C repo rev-list --exclude-promisor-objects --objects HEAD >objs 2>rev_list_err &&
test_must_be_empty rev_list_err &&
# 3 commits, no blobs or trees
test_line_count = 3 objs
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0410-partial-clone/repo/.git/
[master (root-commit) da360a9] foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo.t
[master 8e63723] bar
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 bar.t
[master 9f4b2de] baz
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 baz.t
6550f6c14e11be8aa8fd4775f1cbac8a86d3c020
21f60db37d541c539ce18abed9c34cca08275e75
a0897ff0dc3d6258c3e2e9b672280c8c67afe5a6
ok 19 - missing tree objects with --missing=allow-promisor and --exclude-promisor-objects
expecting success of 0410.20 'missing non-root tree object and rev-list':
rm -rf repo &&
test_create_repo repo &&
mkdir repo/dir &&
echo foo >repo/dir/foo &&
git -C repo add dir/foo &&
git -C repo commit -m "commit dir/foo" &&
promise_and_delete $(git -C repo rev-parse HEAD:dir) &&
git -C repo config core.repositoryformatversion 1 &&
git -C repo config extensions.partialclone "arbitrary string" &&
git -C repo rev-list --missing=allow-any --objects HEAD >objs 2>rev_list_err &&
test_must_be_empty rev_list_err &&
# 1 commit and 1 tree
test_line_count = 2 objs
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0410-partial-clone/repo/.git/
[master (root-commit) 19805d4] commit dir/foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 dir/foo
83b1345e23463e491d63e0b738b32737ae12b14e
ok 20 - missing non-root tree object and rev-list
expecting success of 0410.21 'rev-list stops traversal at missing and promised tree':
rm -rf repo &&
test_create_repo repo &&
test_commit -C repo foo &&
mkdir repo/a_dir &&
echo something >repo/a_dir/something &&
git -C repo add a_dir/something &&
git -C repo commit -m bar &&
# foo^{tree} (tree referenced from commit)
TREE=$(git -C repo rev-parse foo^{tree}) &&
# a tree referenced by HEAD^{tree} (tree referenced from tree)
TREE2=$(git -C repo ls-tree HEAD^{tree} | grep " tree " | head -1 | cut -b13-52) &&
promise_and_delete "$TREE" &&
promise_and_delete "$TREE2" &&
git -C repo config core.repositoryformatversion 1 &&
git -C repo config extensions.partialclone "arbitrary string" &&
git -C repo rev-list --exclude-promisor-objects --objects HEAD >out &&
grep $(git -C repo rev-parse foo) out &&
! grep $TREE out &&
grep $(git -C repo rev-parse HEAD) out &&
! grep $TREE2 out
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0410-partial-clone/repo/.git/
[master (root-commit) 17fbdf8] foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo.t
[master ad093f3] bar
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 a_dir/something
5ef11270e2d2fd2bc3855f6dd86c6c55e98b89e4
979cf6fb4e13711d7be586e5be27a045f17cf7ab
17fbdf8e8f2cd984906bc16944e7b642a041bd09
ad093f3bd66a91b34d8a8c0ad31fb2b14216feee
ok 21 - rev-list stops traversal at missing and promised tree
expecting success of 0410.22 'rev-list stops traversal at missing and promised blob':
rm -rf repo &&
test_create_repo repo &&
echo something >repo/something &&
git -C repo add something &&
git -C repo commit -m foo &&
BLOB=$(git -C repo hash-object -w something) &&
promise_and_delete "$BLOB" &&
git -C repo config core.repositoryformatversion 1 &&
git -C repo config extensions.partialclone "arbitrary string" &&
git -C repo rev-list --exclude-promisor-objects --objects HEAD >out &&
grep $(git -C repo rev-parse HEAD) out &&
! grep $BLOB out
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0410-partial-clone/repo/.git/
[master (root-commit) 53e2498] foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 something
1bd387dfff2cd70c81fc24a57da1423e7646d0ac
53e249869c30b2797cba2e4262d1403822bd6f27
ok 22 - rev-list stops traversal at missing and promised blob
expecting success of 0410.23 'rev-list stops traversal at promisor commit, tree, and blob':
rm -rf repo &&
test_create_repo repo &&
test_commit -C repo foo &&
test_commit -C repo bar &&
test_commit -C repo baz &&
COMMIT=$(git -C repo rev-parse foo) &&
TREE=$(git -C repo rev-parse bar^{tree}) &&
BLOB=$(git hash-object repo/baz.t) &&
printf "%s\n%s\n%s\n" $COMMIT $TREE $BLOB | pack_as_from_promisor &&
git -C repo config core.repositoryformatversion 1 &&
git -C repo config extensions.partialclone "arbitrary string" &&
git -C repo rev-list --exclude-promisor-objects --objects HEAD >out &&
! grep $COMMIT out &&
! grep $TREE out &&
! grep $BLOB out &&
grep $(git -C repo rev-parse bar) out # sanity check that some walking was done
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0410-partial-clone/repo/.git/
[master (root-commit) 551a204] foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo.t
[master 3c09622] bar
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 bar.t
[master 114e46f] baz
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 baz.t
6ccf2e85bb4fbea4379d5abce112fd85bb65c461
3c09622014b3efcccde9c022644ac33a55ecd125
ok 23 - rev-list stops traversal at promisor commit, tree, and blob
expecting success of 0410.24 'rev-list dies for missing objects on cmd line':
rm -rf repo &&
test_create_repo repo &&
test_commit -C repo foo &&
test_commit -C repo bar &&
test_commit -C repo baz &&
COMMIT=$(git -C repo rev-parse foo) &&
TREE=$(git -C repo rev-parse bar^{tree}) &&
BLOB=$(git hash-object repo/baz.t) &&
promise_and_delete $COMMIT &&
promise_and_delete $TREE &&
promise_and_delete $BLOB &&
git -C repo config core.repositoryformatversion 1 &&
git -C repo config extensions.partialclone "arbitrary string" &&
for OBJ in "$COMMIT" "$TREE" "$BLOB"; do
test_must_fail git -C repo rev-list --objects \
--exclude-promisor-objects "$OBJ" &&
test_must_fail git -C repo rev-list --objects-edge-aggressive \
--exclude-promisor-objects "$OBJ" &&
# Do not die or crash when --ignore-missing is passed.
git -C repo rev-list --ignore-missing --objects \
--exclude-promisor-objects "$OBJ" &&
git -C repo rev-list --ignore-missing --objects-edge-aggressive \
--exclude-promisor-objects "$OBJ" || return 1
done
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0410-partial-clone/repo/.git/
[master (root-commit) bf98c57] foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo.t
[master 9768ca4] bar
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 bar.t
[master 1980c58] baz
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 baz.t
cc034486f116f4a2da237cfb31d7f52d7493d39a
ec1dec6a75446df8471b40065154383df5d8be54
911d478da9923de08ad2da390153ab87072d89b5
fatal: ambiguous argument 'bf98c5722fd23396766e1a68ef49284bac9f34d3': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
fatal: ambiguous argument 'bf98c5722fd23396766e1a68ef49284bac9f34d3': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
fatal: ambiguous argument '12e519f9839344d0202cbb4a0286099ef31e2196': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
fatal: ambiguous argument '12e519f9839344d0202cbb4a0286099ef31e2196': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
fatal: ambiguous argument '76018072e09c5d31c8c6e3113b8aa0fe625195ca': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
fatal: ambiguous argument '76018072e09c5d31c8c6e3113b8aa0fe625195ca': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
ok 24 - rev-list dies for missing objects on cmd line
expecting success of 0410.25 'single promisor remote can be re-initialized gracefully':
# ensure one promisor is in the promisors list
rm -rf repo &&
test_create_repo repo &&
test_create_repo other &&
git -C repo remote add foo "file://$(pwd)/other" &&
git -C repo config remote.foo.promisor true &&
git -C repo config extensions.partialclone foo &&
# reinitialize the promisors list
git -C repo fetch --filter=blob:none foo
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0410-partial-clone/repo/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0410-partial-clone/other/.git/
ok 25 - single promisor remote can be re-initialized gracefully
expecting success of 0410.26 'gc repacks promisor objects separately from non-promisor objects':
rm -rf repo &&
test_create_repo repo &&
test_commit -C repo one &&
test_commit -C repo two &&
TREE_ONE=$(git -C repo rev-parse one^{tree}) &&
printf "$TREE_ONE\n" | pack_as_from_promisor &&
TREE_TWO=$(git -C repo rev-parse two^{tree}) &&
printf "$TREE_TWO\n" | pack_as_from_promisor &&
git -C repo config core.repositoryformatversion 1 &&
git -C repo config extensions.partialclone "arbitrary string" &&
git -C repo gc &&
# Ensure that exactly one promisor packfile exists, and that it
# contains the trees but not the commits
ls repo/.git/objects/pack/pack-*.promisor >promisorlist &&
test_line_count = 1 promisorlist &&
PROMISOR_PACKFILE=$(sed "s/.promisor/.pack/" <promisorlist) &&
git verify-pack $PROMISOR_PACKFILE -v >out &&
grep "$TREE_ONE" out &&
grep "$TREE_TWO" out &&
! grep "$(git -C repo rev-parse one)" out &&
! grep "$(git -C repo rev-parse two)" out &&
# Remove the promisor packfile and associated files
rm $(sed "s/.promisor//" <promisorlist).* &&
# Ensure that the single other pack contains the commits, but not the
# trees
ls repo/.git/objects/pack/pack-*.pack >packlist &&
test_line_count = 1 packlist &&
git verify-pack repo/.git/objects/pack/pack-*.pack -v >out &&
grep "$(git -C repo rev-parse one)" out &&
grep "$(git -C repo rev-parse two)" out &&
! grep "$TREE_ONE" out &&
! grep "$TREE_TWO" out
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0410-partial-clone/repo/.git/
[master (root-commit) ef23b68] one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 one.t
[master b399ab2] two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 two.t
80b0d61182f42d417d3f1080999c86acd16276f7
4f4b1c441e35611dff006a309fbda4370b40fc90
a7cddf35737959e1438bc929b665619e9e79bfee tree 33 44 85
2f00a404aed7e63d867313d504bd0fccea53fd25 tree 66 73 12
ef23b68d4e6487c3b82203365a1ad71966a7c795 commit 167 127 168
b399ab2167d8b39d1885d639c028321b5d84b0da commit 215 156 12
ok 26 - gc repacks promisor objects separately from non-promisor objects
expecting success of 0410.27 'gc does not repack promisor objects if there are none':
rm -rf repo &&
test_create_repo repo &&
test_commit -C repo one &&
git -C repo config core.repositoryformatversion 1 &&
git -C repo config extensions.partialclone "arbitrary string" &&
git -C repo gc &&
# Ensure that only one pack exists
ls repo/.git/objects/pack/pack-*.pack >packlist &&
test_line_count = 1 packlist
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0410-partial-clone/repo/.git/
[master (root-commit) 772c775] one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 one.t
ok 27 - gc does not repack promisor objects if there are none
expecting success of 0410.28 'repack -d does not irreversibly delete promisor objects':
rm -rf repo &&
test_create_repo repo &&
git -C repo config core.repositoryformatversion 1 &&
git -C repo config extensions.partialclone "arbitrary string" &&
git -C repo commit --allow-empty -m one &&
git -C repo commit --allow-empty -m two &&
git -C repo commit --allow-empty -m three &&
git -C repo commit --allow-empty -m four &&
ONE=$(git -C repo rev-parse HEAD^^^) &&
TWO=$(git -C repo rev-parse HEAD^^) &&
THREE=$(git -C repo rev-parse HEAD^) &&
printf "$TWO\n" | pack_as_from_promisor &&
printf "$THREE\n" | pack_as_from_promisor &&
delete_object repo "$ONE" &&
repack_and_check --must-fail -ab "$TWO" "$THREE" &&
repack_and_check -a "$TWO" "$THREE" &&
repack_and_check -A "$TWO" "$THREE" &&
repack_and_check -l "$TWO" "$THREE"
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0410-partial-clone/repo/.git/
[master (root-commit) 855c7a9] one
Author: A U Thor <author@example.com>
[master 2a4d010] two
Author: A U Thor <author@example.com>
[master 35fd646] three
Author: A U Thor <author@example.com>
[master 6be7a1a] four
Author: A U Thor <author@example.com>
2a4f85dde21d39cdf91c12b1cabc70b22e331e87
daf9f3011efc4e7873d073475188dc321f1033f9
warning: reflog of 'HEAD' references pruned commits
warning: reflog of 'refs/heads/master' references pruned commits
warning: Failed to write bitmap index. Packfile doesn't have full closure (object 35fd6460acd56684efbfd2c8e3afd7ee8f3b80f1 is missing)
fatal: failed to write bitmap index
warning: reflog of 'HEAD' references pruned commits
warning: reflog of 'refs/heads/master' references pruned commits
warning: reflog of 'HEAD' references pruned commits
warning: reflog of 'refs/heads/master' references pruned commits
warning: reflog of 'HEAD' references pruned commits
warning: reflog of 'refs/heads/master' references pruned commits
ok 28 - repack -d does not irreversibly delete promisor objects
expecting success of 0410.29 'gc stops traversal when a missing but promised object is reached':
rm -rf repo &&
test_create_repo repo &&
test_commit -C repo my_commit &&
TREE_HASH=$(git -C repo rev-parse HEAD^{tree}) &&
HASH=$(promise_and_delete $TREE_HASH) &&
git -C repo config core.repositoryformatversion 1 &&
git -C repo config extensions.partialclone "arbitrary string" &&
git -C repo gc &&
# Ensure that the promisor packfile still exists, and remove it
test -e repo/.git/objects/pack/pack-$HASH.pack &&
rm repo/.git/objects/pack/pack-$HASH.* &&
# Ensure that the single other pack contains the commit, but not the tree
ls repo/.git/objects/pack/pack-*.pack >packlist &&
test_line_count = 1 packlist &&
git verify-pack repo/.git/objects/pack/pack-*.pack -v >out &&
grep "$(git -C repo rev-parse HEAD)" out &&
! grep "$TREE_HASH" out
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0410-partial-clone/repo/.git/
[master (root-commit) 52a9f42] my_commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 my_commit.t
52a9f4290c16cfcf35d767283a0965b6a04864e8 commit 173 128 12
ok 29 - gc stops traversal when a missing but promised object is reached
expecting success of 0410.30 'do not fetch when checking existence of tree we construct ourselves':
rm -rf repo &&
test_create_repo repo &&
test_commit -C repo base &&
test_commit -C repo side1 &&
git -C repo checkout base &&
test_commit -C repo side2 &&
git -C repo config core.repositoryformatversion 1 &&
git -C repo config extensions.partialclone "arbitrary string" &&
git -C repo cherry-pick side1
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0410-partial-clone/repo/.git/
[master (root-commit) 5d33c08] base
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 base.t
[master d575dc7] side1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 side1.t
Note: switching to 'base'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 5d33c08 base
[detached HEAD 5ac9e13] side2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 side2.t
[detached HEAD fa37d98] side1
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:50:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 side1.t
ok 30 - do not fetch when checking existence of tree we construct ourselves
expecting success of 0410.31 'exact rename does not need to fetch the blob lazily':
rm -rf repo partial.git &&
test_create_repo repo &&
content="some dummy content" &&
test_commit -C repo create-a-file file.txt "$content" &&
git -C repo mv file.txt new-file.txt &&
git -C repo commit -m rename-the-file &&
FILE_HASH=$(git -C repo rev-parse HEAD:new-file.txt) &&
test_config -C repo uploadpack.allowfilter 1 &&
test_config -C repo uploadpack.allowanysha1inwant 1 &&
git clone --filter=blob:none --bare "file://$(pwd)/repo" partial.git &&
git -C partial.git rev-list --objects --missing=print HEAD >out &&
grep "[?]$FILE_HASH" out &&
git -C partial.git log --follow -- new-file.txt &&
git -C partial.git rev-list --objects --missing=print HEAD >out &&
grep "[?]$FILE_HASH" out
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0410-partial-clone/repo/.git/
[master (root-commit) 7ac4eca] create-a-file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file.txt
[master b8362fb] rename-the-file
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
rename file.txt => new-file.txt (100%)
Cloning into bare repository 'partial.git'...
?62d06a966bf6dc792f2877492ae19ad68622d978
commit b8362fbe7536ff7fea31c5374c3cda4baf9b3ee0
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:52:13 2005 -0700
rename-the-file
commit 7ac4ecae96a92bab0cc7f88a2d2d88598ddca71b
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:52:13 2005 -0700
create-a-file
?62d06a966bf6dc792f2877492ae19ad68622d978
ok 31 - exact rename does not need to fetch the blob lazily
expecting success of 0410.32 'lazy-fetch when accessing object not in the_repository':
rm -rf full partial.git &&
test_create_repo full &&
test_commit -C full create-a-file file.txt &&
test_config -C full uploadpack.allowfilter 1 &&
test_config -C full uploadpack.allowanysha1inwant 1 &&
git clone --filter=blob:none --bare "file://$(pwd)/full" partial.git &&
FILE_HASH=$(git -C full rev-parse HEAD:file.txt) &&
# Sanity check that the file is missing
git -C partial.git rev-list --objects --missing=print HEAD >out &&
grep "[?]$FILE_HASH" out &&
git -C full cat-file -s "$FILE_HASH" >expect &&
test-tool partial-clone object-info partial.git "$FILE_HASH" >actual &&
test_cmp expect actual &&
# Sanity check that the file is now present
git -C partial.git rev-list --objects --missing=print HEAD >out &&
! grep "[?]$FILE_HASH" out
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0410-partial-clone/full/.git/
[master (root-commit) fc5fa02] create-a-file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file.txt
Cloning into bare repository 'partial.git'...
?aa94997042a27f4d6c4b4556031df55155e02559
ok 32 - lazy-fetch when accessing object not in the_repository
checking prerequisite: NOT_ROOT
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-NOT_ROOT" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-NOT_ROOT" &&
uid=$(id -u) &&
test "$uid" != 0
)
prerequisite NOT_ROOT ok
# passed all 32 test(s)
# SKIP no web server found at '/usr/sbin/apache2'
1..32
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0500-progress-display.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0500-progress-display/.git/
expecting success of 0500.1 'simple progress display':
cat >expect <<-\EOF &&
Working hard: 1<CR>
Working hard: 2<CR>
Working hard: 5<CR>
Working hard: 5, done.
EOF
cat >in <<-\EOF &&
start 0
update
progress 1
update
progress 2
progress 3
progress 4
update
progress 5
stop
EOF
test-tool progress <in 2>stderr &&
show_cr <stderr >out &&
test_cmp expect out
ok 1 - simple progress display
expecting success of 0500.2 'progress display with total':
cat >expect <<-\EOF &&
Working hard: 33% (1/3)<CR>
Working hard: 66% (2/3)<CR>
Working hard: 100% (3/3)<CR>
Working hard: 100% (3/3), done.
EOF
cat >in <<-\EOF &&
start 3
progress 1
progress 2
progress 3
stop
EOF
test-tool progress <in 2>stderr &&
show_cr <stderr >out &&
test_cmp expect out
ok 2 - progress display with total
expecting success of 0500.3 'progress display breaks long lines #1':
sed -e "s/Z$//" >expect <<\EOF &&
Working hard.......2.........3.........4.........5.........6: 0% (100/100000)<CR>
Working hard.......2.........3.........4.........5.........6: 1% (1000/100000)<CR>
Working hard.......2.........3.........4.........5.........6: Z
10% (10000/100000)<CR>
100% (100000/100000)<CR>
100% (100000/100000), done.
EOF
cat >in <<-\EOF &&
start 100000 Working hard.......2.........3.........4.........5.........6
progress 100
progress 1000
progress 10000
progress 100000
stop
EOF
test-tool progress <in 2>stderr &&
show_cr <stderr >out &&
test_cmp expect out
ok 3 - progress display breaks long lines #1
expecting success of 0500.4 'progress display breaks long lines #2':
# Note: we do not need that many spaces after the title to cover up
# the last line before breaking the progress line.
sed -e "s/Z$//" >expect <<\EOF &&
Working hard.......2.........3.........4.........5.........6: 0% (1/100000)<CR>
Working hard.......2.........3.........4.........5.........6: 0% (2/100000)<CR>
Working hard.......2.........3.........4.........5.........6: Z
10% (10000/100000)<CR>
100% (100000/100000)<CR>
100% (100000/100000), done.
EOF
cat >in <<-\EOF &&
start 100000 Working hard.......2.........3.........4.........5.........6
update
progress 1
update
progress 2
progress 10000
progress 100000
stop
EOF
test-tool progress <in 2>stderr &&
show_cr <stderr >out &&
test_cmp expect out
ok 4 - progress display breaks long lines #2
expecting success of 0500.5 'progress display breaks long lines #3 - even the first is too long':
# Note: we do not actually need any spaces at the end of the title
# line, because there is no previous progress line to cover up.
sed -e "s/Z$//" >expect <<\EOF &&
Working hard.......2.........3.........4.........5.........6: Z
25% (25000/100000)<CR>
50% (50000/100000)<CR>
75% (75000/100000)<CR>
100% (100000/100000)<CR>
100% (100000/100000), done.
EOF
cat >in <<-\EOF &&
start 100000 Working hard.......2.........3.........4.........5.........6
progress 25000
progress 50000
progress 75000
progress 100000
stop
EOF
test-tool progress <in 2>stderr &&
show_cr <stderr >out &&
test_cmp expect out
ok 5 - progress display breaks long lines #3 - even the first is too long
expecting success of 0500.6 'progress display breaks long lines #4 - title line matches terminal width':
cat >expect <<\EOF &&
Working hard.......2.........3.........4.........5.........6.........7.........:
25% (25000/100000)<CR>
50% (50000/100000)<CR>
75% (75000/100000)<CR>
100% (100000/100000)<CR>
100% (100000/100000), done.
EOF
cat >in <<-\EOF &&
start 100000 Working hard.......2.........3.........4.........5.........6.........7.........
progress 25000
progress 50000
progress 75000
progress 100000
stop
EOF
test-tool progress <in 2>stderr &&
show_cr <stderr >out &&
test_cmp expect out
ok 6 - progress display breaks long lines #4 - title line matches terminal width
expecting success of 0500.7 'progress shortens - crazy caller':
cat >expect <<-\EOF &&
Working hard: 10% (100/1000)<CR>
Working hard: 20% (200/1000)<CR>
Working hard: 0% (1/1000) <CR>
Working hard: 100% (1000/1000)<CR>
Working hard: 100% (1000/1000), done.
EOF
cat >in <<-\EOF &&
start 1000
progress 100
progress 200
progress 1
progress 1000
stop
EOF
test-tool progress <in 2>stderr &&
show_cr <stderr >out &&
test_cmp expect out
ok 7 - progress shortens - crazy caller
expecting success of 0500.8 'progress display with throughput':
cat >expect <<-\EOF &&
Working hard: 10<CR>
Working hard: 20, 200.00 KiB | 100.00 KiB/s<CR>
Working hard: 30, 300.00 KiB | 100.00 KiB/s<CR>
Working hard: 40, 400.00 KiB | 100.00 KiB/s<CR>
Working hard: 40, 400.00 KiB | 100.00 KiB/s, done.
EOF
cat >in <<-\EOF &&
start 0
throughput 102400 1000
update
progress 10
throughput 204800 2000
update
progress 20
throughput 307200 3000
update
progress 30
throughput 409600 4000
update
progress 40
stop
EOF
test-tool progress <in 2>stderr &&
show_cr <stderr >out &&
test_cmp expect out
ok 8 - progress display with throughput
expecting success of 0500.9 'progress display with throughput and total':
cat >expect <<-\EOF &&
Working hard: 25% (10/40)<CR>
Working hard: 50% (20/40), 200.00 KiB | 100.00 KiB/s<CR>
Working hard: 75% (30/40), 300.00 KiB | 100.00 KiB/s<CR>
Working hard: 100% (40/40), 400.00 KiB | 100.00 KiB/s<CR>
Working hard: 100% (40/40), 400.00 KiB | 100.00 KiB/s, done.
EOF
cat >in <<-\EOF &&
start 40
throughput 102400 1000
progress 10
throughput 204800 2000
progress 20
throughput 307200 3000
progress 30
throughput 409600 4000
progress 40
stop
EOF
test-tool progress <in 2>stderr &&
show_cr <stderr >out &&
test_cmp expect out
ok 9 - progress display with throughput and total
expecting success of 0500.10 'cover up after throughput shortens':
cat >expect <<-\EOF &&
Working hard: 1<CR>
Working hard: 2, 800.00 KiB | 400.00 KiB/s<CR>
Working hard: 3, 1.17 MiB | 400.00 KiB/s <CR>
Working hard: 4, 1.56 MiB | 400.00 KiB/s<CR>
Working hard: 4, 1.56 MiB | 400.00 KiB/s, done.
EOF
cat >in <<-\EOF &&
start 0
throughput 409600 1000
update
progress 1
throughput 819200 2000
update
progress 2
throughput 1228800 3000
update
progress 3
throughput 1638400 4000
update
progress 4
stop
EOF
test-tool progress <in 2>stderr &&
show_cr <stderr >out &&
test_cmp expect out
ok 10 - cover up after throughput shortens
expecting success of 0500.11 'cover up after throughput shortens a lot':
cat >expect <<-\EOF &&
Working hard: 1<CR>
Working hard: 2, 1000.00 KiB | 1000.00 KiB/s<CR>
Working hard: 3, 3.00 MiB | 1.50 MiB/s <CR>
Working hard: 3, 3.00 MiB | 1024.00 KiB/s, done.
EOF
cat >in <<-\EOF &&
start 0
throughput 1 1000
update
progress 1
throughput 1024000 2000
update
progress 2
throughput 3145728 3000
update
progress 3
stop
EOF
test-tool progress <in 2>stderr &&
show_cr <stderr >out &&
test_cmp expect out
ok 11 - cover up after throughput shortens a lot
expecting success of 0500.12 'progress generates traces':
cat >in <<-\EOF &&
start 40
throughput 102400 1000
update
progress 10
throughput 204800 2000
update
progress 20
throughput 307200 3000
update
progress 30
throughput 409600 4000
update
progress 40
stop
EOF
GIT_TRACE2_EVENT="$(pwd)/trace.event" test-tool progress \
<in 2>stderr &&
# t0212/parse_events.perl intentionally omits regions and data.
test_region progress "Working hard" trace.event &&
grep "\"key\":\"total_objects\",\"value\":\"40\"" trace.event &&
grep "\"key\":\"total_bytes\",\"value\":\"409600\"" trace.event
{"event":"region_enter","sid":"20231009T021749.769171Z-Hc7420fa0-P0016c2d1","thread":"main","time":"2023-10-09T02:17:49.769730Z","file":"progress.c","line":270,"repo":0,"nesting":1,"category":"progress","label":"Working hard"}
{"event":"region_leave","sid":"20231009T021749.769171Z-Hc7420fa0-P0016c2d1","thread":"main","time":"2023-10-09T02:17:49.769883Z","file":"progress.c","line":348,"repo":0,"t_rel":0.000155,"nesting":1,"category":"progress","label":"Working hard"}
{"event":"data","sid":"20231009T021749.769171Z-Hc7420fa0-P0016c2d1","thread":"main","time":"2023-10-09T02:17:49.769844Z","file":"progress.c","line":341,"repo":0,"t_abs":0.000924,"t_rel":0.000114,"nesting":2,"category":"progress","key":"total_objects","value":"40"}
{"event":"data","sid":"20231009T021749.769171Z-Hc7420fa0-P0016c2d1","thread":"main","time":"2023-10-09T02:17:49.769868Z","file":"progress.c","line":345,"repo":0,"t_abs":0.000950,"t_rel":0.000140,"nesting":2,"category":"progress","key":"total_bytes","value":"409600"}
ok 12 - progress generates traces
expecting success of 0500.13 'progress generates traces: stop / start':
cat >in <<-\EOF &&
start 0
stop
EOF
GIT_TRACE2_EVENT="$PWD/trace-startstop.event" test-tool progress \
<in 2>stderr &&
test_region progress "Working hard" trace-startstop.event
{"event":"region_enter","sid":"20231009T021749.778796Z-Hc7420fa0-P0016c2ef","thread":"main","time":"2023-10-09T02:17:49.779296Z","file":"progress.c","line":270,"repo":0,"nesting":1,"category":"progress","label":"Working hard"}
{"event":"region_leave","sid":"20231009T021749.778796Z-Hc7420fa0-P0016c2ef","thread":"main","time":"2023-10-09T02:17:49.779496Z","file":"progress.c","line":348,"repo":0,"t_rel":0.000199,"nesting":1,"category":"progress","label":"Working hard"}
ok 13 - progress generates traces: stop / start
expecting success of 0500.14 'progress generates traces: start without stop':
cat >in <<-\EOF &&
start 0
EOF
GIT_TRACE2_EVENT="$PWD/trace-start.event" \
LSAN_OPTIONS=detect_leaks=0 \
test-tool progress \
<in 2>stderr &&
grep region_enter.*progress trace-start.event &&
! grep region_leave.*progress trace-start.event
{"event":"region_enter","sid":"20231009T021749.786884Z-Hc7420fa0-P0016c306","thread":"main","time":"2023-10-09T02:17:49.787412Z","file":"progress.c","line":270,"repo":0,"nesting":1,"category":"progress","label":"Working hard"}
ok 14 - progress generates traces: start without stop
expecting success of 0500.15 'progress generates traces: stop without start':
cat >in <<-\EOF &&
stop
EOF
GIT_TRACE2_EVENT="$PWD/trace-stop.event" test-tool progress \
<in 2>stderr &&
! grep region_enter.*progress trace-stop.event &&
! grep region_leave.*progress trace-stop.event
ok 15 - progress generates traces: stop without start
expecting success of 0500.16 'progress generates traces: start with active progress bar (no stops)':
cat >in <<-\EOF &&
start 0 One
start 0 Two
EOF
GIT_TRACE2_EVENT="$PWD/trace-2start.event" \
LSAN_OPTIONS=detect_leaks=0 \
test-tool progress \
<in 2>stderr &&
grep region_enter.*progress.*One trace-2start.event &&
grep region_enter.*progress.*Two trace-2start.event &&
! grep region_leave trace-2start.event
{"event":"region_enter","sid":"20231009T021749.808993Z-Hc7420fa0-P0016c32d","thread":"main","time":"2023-10-09T02:17:49.809656Z","file":"progress.c","line":270,"repo":0,"nesting":1,"category":"progress","label":"One"}
{"event":"region_enter","sid":"20231009T021749.808993Z-Hc7420fa0-P0016c32d","thread":"main","time":"2023-10-09T02:17:49.809692Z","file":"progress.c","line":270,"repo":0,"nesting":2,"category":"progress","label":"Two"}
ok 16 - progress generates traces: start with active progress bar (no stops)
# passed all 16 test(s)
1..16
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0052-simple-ipc.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0052-simple-ipc/.git/
expecting success of 0052.1 'start simple command server':
test_atexit stop_simple_IPC_server &&
test-tool simple-ipc start-daemon --threads=8 &&
test-tool simple-ipc is-active
ok 1 - start simple command server
expecting success of 0052.2 'simple command server':
test-tool simple-ipc send --token=ping >actual &&
echo pong >expect &&
test_cmp expect actual
ok 2 - simple command server
expecting success of 0052.3 'servers cannot share the same path':
test_must_fail test-tool simple-ipc run-daemon &&
test-tool simple-ipc is-active
error: socket/pipe already in use: 'ipc-test'
ok 3 - servers cannot share the same path
expecting success of 0052.4 'big response':
test-tool simple-ipc send --token=big >actual &&
test_line_count -ge 10000 actual &&
grep -q "big: [0]*9999\$" actual
ok 4 - big response
expecting success of 0052.5 'chunk response':
test-tool simple-ipc send --token=chunk >actual &&
test_line_count -ge 10000 actual &&
grep -q "big: [0]*9999\$" actual
ok 5 - chunk response
expecting success of 0052.6 'slow response':
test-tool simple-ipc send --token=slow >actual &&
test_line_count -ge 100 actual &&
grep -q "big: [0]*99\$" actual
ok 6 - slow response
expecting success of 0052.7 'sendbytes':
test-tool simple-ipc sendbytes --bytecount=100000 --byte=A >actual &&
grep "sent:A00100000 rcvd:A00100000" actual
sent:A00100000 rcvd:A00100000
ok 7 - sendbytes
expecting success of 0052.8 'stress test threads':
test-tool simple-ipc multiple \
--threads=7 \
--bytecount=19 \
--batchsize=13 \
>actual &&
test_line_count = 92 actual &&
grep "good 91" actual &&
grep "sent:A" <actual >actual_a &&
cat >expect_a <<-EOF &&
sent:A00000019 rcvd:A00000019
sent:A00000020 rcvd:A00000020
sent:A00000021 rcvd:A00000021
sent:A00000022 rcvd:A00000022
sent:A00000023 rcvd:A00000023
sent:A00000024 rcvd:A00000024
sent:A00000025 rcvd:A00000025
sent:A00000026 rcvd:A00000026
sent:A00000027 rcvd:A00000027
sent:A00000028 rcvd:A00000028
sent:A00000029 rcvd:A00000029
sent:A00000030 rcvd:A00000030
sent:A00000031 rcvd:A00000031
EOF
test_cmp expect_a actual_a
client (good 91) (join 0), (errors 0)
ok 8 - stress test threads
expecting success of 0052.9 'stop-daemon works':
test-tool simple-ipc stop-daemon &&
test_must_fail test-tool simple-ipc is-active &&
test_must_fail test-tool simple-ipc send --token=ping
error: no server listening at 'ipc-test'
error: no server listening at 'ipc-test'
ok 9 - stop-daemon works
error: no server listening at 'ipc-test'
# passed all 9 test(s)
1..9
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1001-read-tree-m-2way.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1001-read-tree-m-2way/.git/
expecting success of 1001.1 'setup':
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 ca3aa9e6ee09349df7db6f0de15016afcdf5d9e4
100644 blob 3e8d9abb979a4fbdc93309f457a5496bc41ba6ab bozbar
100644 blob dca6b92303befc93086aa025d90a5facd7eb2812 nitfol
100644 blob 766498d93a4b06057a8e49d23f4068f1170ff38f rezrov
treeM d2c045ead2ecb56f2632385a395918bf21816c12
100644 blob 346d4e61f111336a1443ef6b2e834aa5b1a7f91a bozbar
100644 blob 8e4020bb5a8d8c873b25de15933e75cc0fc275df frotz
100644 blob dca6b92303befc93086aa025d90a5facd7eb2812 nitfol
:100644 100644 3e8d9abb979a4fbdc93309f457a5496bc41ba6ab 346d4e61f111336a1443ef6b2e834aa5b1a7f91a M bozbar
:000000 100644 0000000000000000000000000000000000000000 8e4020bb5a8d8c873b25de15933e75cc0fc275df A frotz
:100644 000000 766498d93a4b06057a8e49d23f4068f1170ff38f 0000000000000000000000000000000000000000 D rezrov
ok 1 - setup
expecting success of 1001.2 '1, 2, 3 - no carry forward':
rm -f .git/index &&
read_tree_twoway $treeH $treeM &&
git ls-files --stage >1-3.out &&
test_cmp M.out 1-3.out &&
check_cache_at bozbar dirty &&
check_cache_at frotz dirty &&
check_cache_at nitfol dirty
100644 346d4e61f111336a1443ef6b2e834aa5b1a7f91a 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 of 1001.3 '4 - carry forward local addition.':
rm -f .git/index &&
read_tree_must_succeed $treeH &&
git checkout-index -u -f -q -a &&
git update-index --add yomin &&
read_tree_twoway $treeH $treeM &&
git ls-files --stage >4.out &&
test_must_fail git diff --no-index M.out 4.out >4diff.out &&
compare_change 4diff.out expected &&
check_cache_at yomin clean
100644 346d4e61f111336a1443ef6b2e834aa5b1a7f91a 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 of 1001.4 '5 - carry forward local addition.':
rm -f .git/index &&
read_tree_must_succeed $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 &&
test_must_fail git diff --no-index M.out 5.out >5diff.out &&
compare_change 5diff.out expected &&
check_cache_at yomin dirty
100644 346d4e61f111336a1443ef6b2e834aa5b1a7f91a 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 of 1001.5 '6 - local addition already has the same.':
rm -f .git/index &&
read_tree_must_succeed $treeH &&
git checkout-index -u -f -q -a &&
git update-index --add frotz &&
read_tree_twoway $treeH $treeM &&
git ls-files --stage >6.out &&
test_cmp M.out 6.out &&
check_cache_at frotz clean
100644 346d4e61f111336a1443ef6b2e834aa5b1a7f91a 0 bozbar
100644 8e4020bb5a8d8c873b25de15933e75cc0fc275df 0 frotz
100644 dca6b92303befc93086aa025d90a5facd7eb2812 0 nitfol
frotz: clean
ok 5 - 6 - local addition already has the same.
expecting success of 1001.6 '7 - local addition already has the same.':
rm -f .git/index &&
read_tree_must_succeed $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 &&
test_cmp M.out 7.out &&
check_cache_at frotz dirty
100644 346d4e61f111336a1443ef6b2e834aa5b1a7f91a 0 bozbar
100644 8e4020bb5a8d8c873b25de15933e75cc0fc275df 0 frotz
100644 dca6b92303befc93086aa025d90a5facd7eb2812 0 nitfol
frotz: dirty
ok 6 - 7 - local addition already has the same.
expecting success of 1001.7 '8 - conflicting addition.':
rm -f .git/index &&
read_tree_must_succeed $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
error: Entry 'frotz' would be overwritten by merge. Cannot merge.
ok 7 - 8 - conflicting addition.
expecting success of 1001.8 '9 - conflicting addition.':
rm -f .git/index &&
read_tree_must_succeed $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
error: Entry 'frotz' would be overwritten by merge. Cannot merge.
ok 8 - 9 - conflicting addition.
expecting success of 1001.9 '10 - path removed.':
rm -f .git/index &&
read_tree_must_succeed $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 &&
test_cmp M.out 10.out
100644 346d4e61f111336a1443ef6b2e834aa5b1a7f91a 0 bozbar
100644 8e4020bb5a8d8c873b25de15933e75cc0fc275df 0 frotz
100644 dca6b92303befc93086aa025d90a5facd7eb2812 0 nitfol
ok 9 - 10 - path removed.
expecting success of 1001.10 '11 - dirty path removed.':
rm -f .git/index &&
read_tree_must_succeed $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
error: Entry 'rezrov' not uptodate. Cannot merge.
ok 10 - 11 - dirty path removed.
expecting success of 1001.11 '12 - unmatching local changes being removed.':
rm -f .git/index &&
read_tree_must_succeed $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
error: Entry 'rezrov' would be overwritten by merge. Cannot merge.
ok 11 - 12 - unmatching local changes being removed.
expecting success of 1001.12 '13 - unmatching local changes being removed.':
rm -f .git/index &&
read_tree_must_succeed $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
error: Entry 'rezrov' would be overwritten by merge. Cannot merge.
ok 12 - 13 - unmatching local changes being removed.
expecting success of 1001.13 '14 - unchanged in two heads.':
rm -f .git/index &&
read_tree_must_succeed $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 &&
test_must_fail git diff --no-index M.out 14.out >14diff.out &&
compare_change 14diff.out expected &&
check_cache_at nitfol clean
100644 346d4e61f111336a1443ef6b2e834aa5b1a7f91a 0 bozbar
100644 8e4020bb5a8d8c873b25de15933e75cc0fc275df 0 frotz
100644 7e1bf714fb103c778a21dd67411666901222425a 0 nitfol
nitfol: clean
ok 13 - 14 - unchanged in two heads.
expecting success of 1001.14 '15 - unchanged in two heads.':
rm -f .git/index &&
read_tree_must_succeed $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 &&
test_must_fail git diff --no-index M.out 15.out >15diff.out &&
compare_change 15diff.out expected &&
check_cache_at nitfol dirty
100644 346d4e61f111336a1443ef6b2e834aa5b1a7f91a 0 bozbar
100644 8e4020bb5a8d8c873b25de15933e75cc0fc275df 0 frotz
100644 7e1bf714fb103c778a21dd67411666901222425a 0 nitfol
nitfol: dirty
ok 14 - 15 - unchanged in two heads.
expecting success of 1001.15 '16 - conflicting local change.':
rm -f .git/index &&
read_tree_must_succeed $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
error: Entry 'bozbar' would be overwritten by merge. Cannot merge.
ok 15 - 16 - conflicting local change.
expecting success of 1001.16 '17 - conflicting local change.':
rm -f .git/index &&
read_tree_must_succeed $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
error: Entry 'bozbar' would be overwritten by merge. Cannot merge.
ok 16 - 17 - conflicting local change.
expecting success of 1001.17 '18 - local change already having a good result.':
rm -f .git/index &&
read_tree_must_succeed $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 &&
test_cmp M.out 18.out &&
check_cache_at bozbar clean
100644 346d4e61f111336a1443ef6b2e834aa5b1a7f91a 0 bozbar
100644 8e4020bb5a8d8c873b25de15933e75cc0fc275df 0 frotz
100644 dca6b92303befc93086aa025d90a5facd7eb2812 0 nitfol
bozbar: clean
ok 17 - 18 - local change already having a good result.
expecting success of 1001.18 '19 - local change already having a good result, further modified.':
rm -f .git/index &&
read_tree_must_succeed $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 &&
test_cmp M.out 19.out &&
check_cache_at bozbar dirty
100644 346d4e61f111336a1443ef6b2e834aa5b1a7f91a 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 of 1001.19 '20 - no local change, use new tree.':
rm -f .git/index &&
read_tree_must_succeed $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 &&
test_cmp M.out 20.out &&
check_cache_at bozbar dirty
100644 346d4e61f111336a1443ef6b2e834aa5b1a7f91a 0 bozbar
100644 8e4020bb5a8d8c873b25de15933e75cc0fc275df 0 frotz
100644 dca6b92303befc93086aa025d90a5facd7eb2812 0 nitfol
bozbar: dirty
ok 19 - 20 - no local change, use new tree.
expecting success of 1001.20 '21 - no local change, dirty cache.':
rm -f .git/index &&
read_tree_must_succeed $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
error: Entry 'bozbar' not uptodate. Cannot merge.
ok 20 - 21 - no local change, dirty cache.
expecting success of 1001.21 '22 - local change cache updated.':
rm -f .git/index &&
read_tree_must_succeed $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
error: Entry 'bozbar' would be overwritten by merge. Cannot merge.
ok 21 - 22 - local change cache updated.
expecting success of 1001.22 'DF vs DF/DF case setup.':
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 of 1001.23 'DF vs DF/DF case test.':
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 &&
test_cmp 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.
expecting success of 1001.24 'a/b (untracked) vs a case setup.':
rm -f .git/index &&
: >a &&
git update-index --add a &&
treeM=$(git write-tree) &&
echo treeM $treeM &&
git ls-tree $treeM &&
git ls-files --stage >treeM.out &&
rm -f a &&
git update-index --remove a &&
mkdir a &&
: >a/b &&
treeH=$(git write-tree) &&
echo treeH $treeH &&
git ls-tree $treeH
treeM 496d6428b9cf92981dc9495211e6e1120fb6f2ba
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 a
treeH 4b825dc642cb6eb9a060e54bf8d69288fbee4904
ok 24 - a/b (untracked) vs a case setup.
expecting success of 1001.25 'a/b (untracked) vs a, plus c/d case test.':
read_tree_u_must_fail -u -m "$treeH" "$treeM" &&
git ls-files --stage &&
test -f a/b
error: Updating 'a' would lose untracked files in it
error: Updating 'a' would lose untracked files in it
ok 25 - a/b (untracked) vs a, plus c/d case test.
expecting success of 1001.26 'read-tree supports the super-prefix':
cat <<-EOF >expect &&
error: Updating 'fictional/a' would lose untracked files in it
EOF
test_must_fail git read-tree --super-prefix fictional/ -u -m "$treeH" "$treeM" 2>actual &&
test_cmp expect actual
ok 26 - read-tree supports the super-prefix
expecting success of 1001.27 'a/b vs a, plus c/d case setup.':
rm -f .git/index &&
rm -fr a &&
: >a &&
mkdir c &&
: >c/d &&
git update-index --add a c/d &&
treeM=$(git write-tree) &&
echo treeM $treeM &&
git ls-tree $treeM &&
git ls-files --stage >treeM.out &&
rm -f a &&
mkdir a &&
: >a/b &&
git update-index --add --remove a a/b &&
treeH=$(git write-tree) &&
echo treeH $treeH &&
git ls-tree $treeH
treeM 3e82e8b9894d6c7982dcd25a6dad66400d52735f
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 a
040000 tree 2a26db49a6962700da5bd4084ae0e5a22d6583ee c
treeH 02c6f058fb950781e5b773c21e4c237db1ff4d5a
040000 tree 4277b6e69d25e5efa77c455340557b384a4c018a a
040000 tree 2a26db49a6962700da5bd4084ae0e5a22d6583ee c
ok 27 - a/b vs a, plus c/d case setup.
expecting success of 1001.28 'a/b vs a, plus c/d case test.':
read_tree_u_must_succeed -u -m "$treeH" "$treeM" &&
git ls-files --stage | tee >treeMcheck.out &&
test_cmp treeM.out treeMcheck.out
ok 28 - a/b vs a, plus c/d case test.
expecting success of 1001.29 '-m references the correct modified tree':
echo >file-a &&
echo >file-b &&
git add file-a file-b &&
git commit -a -m "test for correct modified tree" &&
git branch initial-mod &&
echo b >file-b &&
git commit -a -m "B" &&
echo a >file-a &&
git add file-a &&
git ls-tree $(git write-tree) file-a >expect &&
read_tree_must_succeed -m HEAD initial-mod &&
git ls-tree $(git write-tree) file-a >actual &&
test_cmp expect actual
[master (root-commit) 0d16b8a] test for correct modified tree
Author: A U Thor <author@example.com>
4 files changed, 2 insertions(+)
create mode 100644 a
create mode 100644 c/d
create mode 100644 file-a
create mode 100644 file-b
[master 9f64e7b] B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 29 - -m references the correct modified tree
# passed all 29 test(s)
1..29
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1000-read-tree-m-3way.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1000-read-tree-m-3way/.git/
expecting success of 1000.1 'adding test file NN and Z/NN':
git update-index --add $p &&
git update-index --add Z/$p
ok 1 - adding test file NN and Z/NN
expecting success of 1000.2 'adding test file ND and Z/ND':
git update-index --add $p &&
git update-index --add Z/$p
ok 2 - adding test file ND and Z/ND
expecting success of 1000.3 'adding test file NM and Z/NM':
git update-index --add $p &&
git update-index --add Z/$p
ok 3 - adding test file NM and Z/NM
expecting success of 1000.4 'adding test file DN and Z/DN':
git update-index --add $p &&
git update-index --add Z/$p
ok 4 - adding test file DN and Z/DN
expecting success of 1000.5 'adding test file DD and Z/DD':
git update-index --add $p &&
git update-index --add Z/$p
ok 5 - adding test file DD and Z/DD
expecting success of 1000.6 'adding test file DM and Z/DM':
git update-index --add $p &&
git update-index --add Z/$p
ok 6 - adding test file DM and Z/DM
expecting success of 1000.7 'adding test file MN and Z/MN':
git update-index --add $p &&
git update-index --add Z/$p
ok 7 - adding test file MN and Z/MN
expecting success of 1000.8 'adding test file MD and Z/MD':
git update-index --add $p &&
git update-index --add Z/$p
ok 8 - adding test file MD and Z/MD
expecting success of 1000.9 'adding test file MM and Z/MM':
git update-index --add $p &&
git update-index --add Z/$p
ok 9 - adding test file MM and Z/MM
expecting success of 1000.10 'adding test file SS':
git update-index --add SS
ok 10 - adding test file SS
expecting success of 1000.11 'adding test file TT':
git update-index --add TT
ok 11 - adding test file TT
expecting success of 1000.12 'prepare initial tree':
tree_O=$(git write-tree)
ok 12 - prepare initial tree
expecting success of 1000.13 'change in branch A (removal)':
git update-index --remove $to_remove
ok 13 - change in branch A (removal)
expecting success of 1000.14 'change in branch A (modification)':
git update-index $p
ok 14 - change in branch A (modification)
expecting success of 1000.15 'change in branch A (modification)':
git update-index $p
ok 15 - change in branch A (modification)
expecting success of 1000.16 'change in branch A (modification)':
git update-index $p
ok 16 - change in branch A (modification)
expecting success of 1000.17 'change in branch A (modification)':
git update-index $p
ok 17 - change in branch A (modification)
expecting success of 1000.18 'change in branch A (modification)':
git update-index $p
ok 18 - change in branch A (modification)
expecting success of 1000.19 'change in branch A (modification)':
git update-index $p
ok 19 - change in branch A (modification)
expecting success of 1000.20 'change in branch A (addition)':
git update-index --add $p
ok 20 - change in branch A (addition)
expecting success of 1000.21 'change in branch A (addition)':
git update-index --add $p
ok 21 - change in branch A (addition)
expecting success of 1000.22 'change in branch A (addition)':
git update-index --add $p
ok 22 - change in branch A (addition)
expecting success of 1000.23 'change in branch A (addition)':
git update-index --add $p
ok 23 - change in branch A (addition)
expecting success of 1000.24 'change in branch A (addition)':
git update-index --add LL &&
git update-index SS
ok 24 - change in branch A (addition)
expecting success of 1000.25 'change in branch A (edit)':
git update-index TT
ok 25 - change in branch A (edit)
expecting success of 1000.26 'change in branch A (change file to directory)':
git update-index --add DF/DF
ok 26 - change in branch A (change file to directory)
expecting success of 1000.27 'recording branch A tree':
tree_A=$(git write-tree)
ok 27 - recording branch A tree
expecting success of 1000.28 'reading original tree and checking out':
git read-tree $tree_O &&
git checkout-index -a
ok 28 - reading original tree and checking out
expecting success of 1000.29 'change in branch B (removal)':
git update-index --remove $to_remove
ok 29 - change in branch B (removal)
expecting success of 1000.30 'change in branch B (modification)':
git update-index $p
ok 30 - change in branch B (modification)
expecting success of 1000.31 'change in branch B (modification)':
git update-index $p
ok 31 - change in branch B (modification)
expecting success of 1000.32 'change in branch B (modification)':
git update-index $p
ok 32 - change in branch B (modification)
expecting success of 1000.33 'change in branch B (modification)':
git update-index $p
ok 33 - change in branch B (modification)
expecting success of 1000.34 'change in branch B (modification)':
git update-index $p
ok 34 - change in branch B (modification)
expecting success of 1000.35 'change in branch B (modification)':
git update-index $p
ok 35 - change in branch B (modification)
expecting success of 1000.36 'change in branch B (addition)':
git update-index --add $p
ok 36 - change in branch B (addition)
expecting success of 1000.37 'change in branch B (addition)':
git update-index --add $p
ok 37 - change in branch B (addition)
expecting success of 1000.38 'change in branch B (addition)':
git update-index --add $p
ok 38 - change in branch B (addition)
expecting success of 1000.39 'change in branch B (addition)':
git update-index --add $p
ok 39 - change in branch B (addition)
expecting success of 1000.40 'change in branch B (addition and modification)':
git update-index --add LL &&
git update-index SS
ok 40 - change in branch B (addition and modification)
expecting success of 1000.41 'change in branch B (modification)':
git update-index TT
ok 41 - change in branch B (modification)
expecting success of 1000.42 'change in branch B (addition of a file to conflict with directory)':
git update-index --add DF
ok 42 - change in branch B (addition of a file to conflict with directory)
expecting success of 1000.43 'recording branch B tree':
tree_B=$(git write-tree)
ok 43 - recording branch B tree
expecting success of 1000.44 'keep contents of 3 trees for easy access':
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 of 1000.45 '3-way merge with git read-tree -m, empty cache':
rm -fr [NDMALTS][NDMALTSF] Z &&
rm .git/index &&
read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
check_result
ok 45 - 3-way merge with git read-tree -m, empty cache
expecting success of 1000.46 '3-way merge with git read-tree -m, match H':
rm -fr [NDMALTS][NDMALTSF] Z &&
rm .git/index &&
read_tree_must_succeed $tree_A &&
git checkout-index -f -u -a &&
read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
check_result
ok 46 - 3-way merge with git read-tree -m, match H
expecting success of 1000.47 '1 - must not have an entry not in A.':
rm -f .git/index XX &&
echo XX >XX &&
git update-index --add XX &&
read_tree_must_fail -m $tree_O $tree_A $tree_B
error: Entry 'XX' would be overwritten by merge. Cannot merge.
error: Entry 'XX' would be overwritten by merge. Cannot merge.
ok 47 - 1 - must not have an entry not in A.
expecting success of 1000.48 '2 - must match B in !O && !A && B case.':
rm -f .git/index NA &&
cp .orig-B/NA NA &&
git update-index --add NA &&
read_tree_must_succeed -m $tree_O $tree_A $tree_B
ok 48 - 2 - must match B in !O && !A && B case.
expecting success of 1000.49 '2 - matching B alone is OK in !O && !A && B case.':
rm -f .git/index NA &&
cp .orig-B/NA NA &&
git update-index --add NA &&
echo extra >>NA &&
read_tree_must_succeed -m $tree_O $tree_A $tree_B
ok 49 - 2 - matching B alone is OK in !O && !A && B case.
expecting success of 1000.50 '3 - must match A in !O && A && !B case.':
rm -f .git/index AN &&
cp .orig-A/AN AN &&
git update-index --add AN &&
read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
check_result
ok 50 - 3 - must match A in !O && A && !B case.
expecting success of 1000.51 '3 - matching A alone is OK in !O && A && !B case.':
rm -f .git/index AN &&
cp .orig-A/AN AN &&
git update-index --add AN &&
echo extra >>AN &&
read_tree_must_succeed -m $tree_O $tree_A $tree_B
ok 51 - 3 - matching A alone is OK in !O && A && !B case.
expecting success of 1000.52 '3 (fail) - must match A in !O && A && !B case.':
rm -f .git/index AN &&
cp .orig-A/AN AN &&
echo extra >>AN &&
git update-index --add AN &&
read_tree_must_fail -m $tree_O $tree_A $tree_B
error: Entry 'AN' would be overwritten by merge. Cannot merge.
error: Entry 'AN' would be overwritten by merge. Cannot merge.
ok 52 - 3 (fail) - must match A in !O && A && !B case.
expecting success of 1000.53 '4 - must match and be up-to-date in !O && A && B && A!=B case.':
rm -f .git/index AA &&
cp .orig-A/AA AA &&
git update-index --add AA &&
read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
check_result
ok 53 - 4 - must match and be up-to-date in !O && A && B && A!=B case.
expecting success of 1000.54 '4 (fail) - must match and be up-to-date in !O && A && B && A!=B case.':
rm -f .git/index AA &&
cp .orig-A/AA AA &&
git update-index --add AA &&
echo extra >>AA &&
read_tree_must_fail -m $tree_O $tree_A $tree_B
error: Entry 'AA' not uptodate. Cannot merge.
error: 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 success of 1000.55 '4 (fail) - must match and be up-to-date in !O && A && B && A!=B case.':
rm -f .git/index AA &&
cp .orig-A/AA AA &&
echo extra >>AA &&
git update-index --add AA &&
read_tree_must_fail -m $tree_O $tree_A $tree_B
error: Entry 'AA' would be overwritten by merge. Cannot merge.
error: 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 of 1000.56 '5 - must match in !O && A && B && A==B case.':
rm -f .git/index LL &&
cp .orig-A/LL LL &&
git update-index --add LL &&
read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
check_result
ok 56 - 5 - must match in !O && A && B && A==B case.
expecting success of 1000.57 '5 - must match in !O && A && B && A==B case.':
rm -f .git/index LL &&
cp .orig-A/LL LL &&
git update-index --add LL &&
echo extra >>LL &&
read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
check_result
ok 57 - 5 - must match in !O && A && B && A==B case.
expecting success of 1000.58 '5 (fail) - must match A in !O && A && B && A==B case.':
rm -f .git/index LL &&
cp .orig-A/LL LL &&
echo extra >>LL &&
git update-index --add LL &&
read_tree_must_fail -m $tree_O $tree_A $tree_B
error: Entry 'LL' would be overwritten by merge. Cannot merge.
error: Entry 'LL' would be overwritten by merge. Cannot merge.
ok 58 - 5 (fail) - must match A in !O && A && B && A==B case.
expecting success of 1000.59 '6 - must not exist in O && !A && !B case':
rm -f .git/index DD &&
echo DD >DD &&
git update-index --add DD &&
read_tree_must_fail -m $tree_O $tree_A $tree_B
error: Entry 'DD' would be overwritten by merge. Cannot merge.
error: Entry 'DD' would be overwritten by merge. Cannot merge.
ok 59 - 6 - must not exist in O && !A && !B case
expecting success of 1000.60 '7 - must not exist in O && !A && B && O!=B case':
rm -f .git/index DM &&
cp .orig-B/DM DM &&
git update-index --add DM &&
read_tree_must_fail -m $tree_O $tree_A $tree_B
error: Entry 'DM' would be overwritten by merge. Cannot merge.
error: Entry 'DM' would be overwritten by merge. Cannot merge.
ok 60 - 7 - must not exist in O && !A && B && O!=B case
expecting success of 1000.61 '8 - must not exist in O && !A && B && O==B case':
rm -f .git/index DN &&
cp .orig-B/DN DN &&
git update-index --add DN &&
read_tree_must_fail -m $tree_O $tree_A $tree_B
error: Entry 'DN' would be overwritten by merge. Cannot merge.
error: Entry 'DN' would be overwritten by merge. Cannot merge.
ok 61 - 8 - must not exist in O && !A && B && O==B case
expecting success of 1000.62 '9 - must match and be up-to-date in O && A && !B && O!=A case':
rm -f .git/index MD &&
cp .orig-A/MD MD &&
git update-index --add MD &&
read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
check_result
ok 62 - 9 - must match and be up-to-date in O && A && !B && O!=A case
expecting success of 1000.63 '9 (fail) - must match and be up-to-date in O && A && !B && O!=A case':
rm -f .git/index MD &&
cp .orig-A/MD MD &&
git update-index --add MD &&
echo extra >>MD &&
read_tree_must_fail -m $tree_O $tree_A $tree_B
error: Entry 'MD' not uptodate. Cannot merge.
error: 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 success of 1000.64 '9 (fail) - must match and be up-to-date in O && A && !B && O!=A case':
rm -f .git/index MD &&
cp .orig-A/MD MD &&
echo extra >>MD &&
git update-index --add MD &&
read_tree_must_fail -m $tree_O $tree_A $tree_B
error: Entry 'MD' would be overwritten by merge. Cannot merge.
error: 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 of 1000.65 '10 - must match and be up-to-date in O && A && !B && O==A case':
rm -f .git/index ND &&
cp .orig-A/ND ND &&
git update-index --add ND &&
read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
check_result
ok 65 - 10 - must match and be up-to-date in O && A && !B && O==A case
expecting success of 1000.66 '10 (fail) - must match and be up-to-date in O && A && !B && O==A case':
rm -f .git/index ND &&
cp .orig-A/ND ND &&
git update-index --add ND &&
echo extra >>ND &&
read_tree_must_fail -m $tree_O $tree_A $tree_B
error: Entry 'ND' not uptodate. Cannot merge.
error: 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 success of 1000.67 '10 (fail) - must match and be up-to-date in O && A && !B && O==A case':
rm -f .git/index ND &&
cp .orig-A/ND ND &&
echo extra >>ND &&
git update-index --add ND &&
read_tree_must_fail -m $tree_O $tree_A $tree_B
error: Entry 'ND' would be overwritten by merge. Cannot merge.
error: 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 of 1000.68 '11 - must match and be up-to-date in O && A && B && O!=A && O!=B && A!=B case':
rm -f .git/index MM &&
cp .orig-A/MM MM &&
git update-index --add MM &&
read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
check_result
ok 68 - 11 - must match and be up-to-date in O && A && B && O!=A && O!=B && A!=B case
expecting success of 1000.69 '11 (fail) - must match and be up-to-date in O && A && B && O!=A && O!=B && A!=B case':
rm -f .git/index MM &&
cp .orig-A/MM MM &&
git update-index --add MM &&
echo extra >>MM &&
read_tree_must_fail -m $tree_O $tree_A $tree_B
error: Entry 'MM' not uptodate. Cannot merge.
error: 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 success of 1000.70 '11 (fail) - must match and be up-to-date in O && A && B && O!=A && O!=B && A!=B case':
rm -f .git/index MM &&
cp .orig-A/MM MM &&
echo extra >>MM &&
git update-index --add MM &&
read_tree_must_fail -m $tree_O $tree_A $tree_B
error: Entry 'MM' would be overwritten by merge. Cannot merge.
error: 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 of 1000.71 '12 - must match A in O && A && B && O!=A && A==B case':
rm -f .git/index SS &&
cp .orig-A/SS SS &&
git update-index --add SS &&
read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
check_result
ok 71 - 12 - must match A in O && A && B && O!=A && A==B case
expecting success of 1000.72 '12 - must match A in O && A && B && O!=A && A==B case':
rm -f .git/index SS &&
cp .orig-A/SS SS &&
git update-index --add SS &&
echo extra >>SS &&
read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
check_result
ok 72 - 12 - must match A in O && A && B && O!=A && A==B case
expecting success of 1000.73 '12 (fail) - must match A in O && A && B && O!=A && A==B case':
rm -f .git/index SS &&
cp .orig-A/SS SS &&
echo extra >>SS &&
git update-index --add SS &&
read_tree_must_fail -m $tree_O $tree_A $tree_B
error: Entry 'SS' would be overwritten by merge. Cannot merge.
error: 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 of 1000.74 '13 - must match A in O && A && B && O!=A && O==B case':
rm -f .git/index MN &&
cp .orig-A/MN MN &&
git update-index --add MN &&
read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
check_result
ok 74 - 13 - must match A in O && A && B && O!=A && O==B case
expecting success of 1000.75 '13 - must match A in O && A && B && O!=A && O==B case':
rm -f .git/index MN &&
cp .orig-A/MN MN &&
git update-index --add MN &&
echo extra >>MN &&
read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
check_result
ok 75 - 13 - must match A in O && A && B && O!=A && O==B case
expecting success of 1000.76 '14 - must match and be up-to-date in O && A && B && O==A && O!=B case':
rm -f .git/index NM &&
cp .orig-A/NM NM &&
git update-index --add NM &&
read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
check_result
ok 76 - 14 - must match and be up-to-date in O && A && B && O==A && O!=B case
expecting success of 1000.77 '14 - may match B in O && A && B && O==A && O!=B case':
rm -f .git/index NM &&
cp .orig-B/NM NM &&
git update-index --add NM &&
echo extra >>NM &&
read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
check_result
ok 77 - 14 - may match B in O && A && B && O==A && O!=B case
expecting success of 1000.78 '14 (fail) - must match and be up-to-date in O && A && B && O==A && O!=B case':
rm -f .git/index NM &&
cp .orig-A/NM NM &&
git update-index --add NM &&
echo extra >>NM &&
read_tree_must_fail -m $tree_O $tree_A $tree_B
error: Entry 'NM' not uptodate. Cannot merge.
error: 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 success of 1000.79 '14 (fail) - must match and be up-to-date in O && A && B && O==A && O!=B case':
rm -f .git/index NM &&
cp .orig-A/NM NM &&
echo extra >>NM &&
git update-index --add NM &&
read_tree_must_fail -m $tree_O $tree_A $tree_B
error: Entry 'NM' would be overwritten by merge. Cannot merge.
error: 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 of 1000.80 '15 - must match A in O && A && B && O==A && O==B case':
rm -f .git/index NN &&
cp .orig-A/NN NN &&
git update-index --add NN &&
read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
check_result
ok 80 - 15 - must match A in O && A && B && O==A && O==B case
expecting success of 1000.81 '15 - must match A in O && A && B && O==A && O==B case':
rm -f .git/index NN &&
cp .orig-A/NN NN &&
git update-index --add NN &&
echo extra >>NN &&
read_tree_must_succeed -m $tree_O $tree_A $tree_B &&
check_result
ok 81 - 15 - must match A in O && A && B && O==A && O==B case
expecting success of 1000.82 '15 (fail) - must match A in O && A && B && O==A && O==B case':
rm -f .git/index NN &&
cp .orig-A/NN NN &&
echo extra >>NN &&
git update-index --add NN &&
read_tree_must_fail -m $tree_O $tree_A $tree_B
error: Entry 'NN' would be overwritten by merge. Cannot merge.
error: 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 of 1000.83 '16 - A matches in one and B matches in another.':
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) &&
read_tree_must_succeed -m $tree0 $tree1 $tree1 $tree0 &&
git ls-files --stage
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)
1..83
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1003-read-tree-prefix.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1003-read-tree-prefix/.git/
expecting success of 1003.1 'setup':
echo hello >one &&
git update-index --add one &&
tree=$(git write-tree) &&
echo tree is $tree
tree is 700196ec4e5b1c75e9f5481e5b545d78533ff917
ok 1 - setup
expecting success of 1003.2 'read-tree --prefix':
git read-tree --prefix=two/ $tree &&
git ls-files >actual &&
cmp expect actual
ok 2 - read-tree --prefix
expecting success of 1003.3 'read-tree --prefix with leading slash exits with error':
git rm -rf . &&
test_must_fail git read-tree --prefix=/two/ $tree &&
git read-tree --prefix=two/ $tree &&
git rm -rf . &&
test_must_fail git read-tree --prefix=/ $tree &&
git read-tree --prefix= $tree
rm 'one'
rm 'two/one'
fatal: Invalid prefix, prefix cannot start with '/'
rm 'two/one'
fatal: Invalid prefix, prefix cannot start with '/'
ok 3 - read-tree --prefix with leading slash exits with error
# passed all 3 test(s)
1..3
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1004-read-tree-m-u-wf.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1004-read-tree-m-u-wf/.git/
expecting success of 1004.1 'two-way setup':
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 main branch anymore &&
rm -f file2 subdir/file2 &&
git update-index --remove file2 subdir/file2 &&
git commit -a -m "main removes file2 and subdir/file2"
[main (root-commit) eb5336a] initial
Author: A U Thor <author@example.com>
4 files changed, 4 insertions(+)
create mode 100644 file1
create mode 100644 file2
create mode 100644 subdir/file1
create mode 100644 subdir/file2
file2 is not tracked on the main branch anymore
[main dbb6421] main removes file2 and subdir/file2
Author: A U Thor <author@example.com>
2 files changed, 2 deletions(-)
delete mode 100644 file2
delete mode 100644 subdir/file2
ok 1 - two-way setup
expecting success of 1004.2 'two-way not clobbering':
echo >file2 main creates untracked file2 &&
echo >subdir/file2 main creates untracked subdir/file2 &&
if err=$(read_tree_u_must_succeed -m -u main side 2>&1)
then
echo should have complained
false
else
echo "happy to see $err"
fi
happy to see error: Untracked working tree file 'file2' would be overwritten by merge.
ok 2 - two-way not clobbering
expecting success of 1004.3 'two-way with incorrect --exclude-per-directory (1)':
if err=$(read_tree_u_must_succeed -m --exclude-per-directory=.gitignore main 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 of 1004.4 'two-way with incorrect --exclude-per-directory (2)':
if err=$(read_tree_u_must_succeed -m -u --exclude-per-directory=foo --exclude-per-directory=.gitignore main side 2>&1)
then
echo should have complained
false
else
echo "happy to see $err"
fi
happy to see fatal: --exclude-per-directory argument must be .gitignore
ok 4 - two-way with incorrect --exclude-per-directory (2)
expecting success of 1004.5 'two-way clobbering a ignored file':
read_tree_u_must_succeed -m -u --exclude-per-directory=.gitignore main side
ok 5 - two-way clobbering a ignored file
expecting success of 1004.6 'three-way not complaining on an untracked path in both':
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 main &&
echo >file2 file two is untracked on the main side &&
echo >subdir/file2 file two is untracked on the main side &&
read_tree_u_must_succeed -m -u branch-point main side
Switched to branch 'side'
D file2
D subdir/file2
[side 4be225f] side adds file3 and removes file2
Author: A U Thor <author@example.com>
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 'main'
ok 6 - three-way not complaining on an untracked path in both
expecting success of 1004.7 'three-way not clobbering a working tree file':
git reset --hard &&
rm -f file2 subdir/file2 file3 subdir/file3 &&
git checkout main &&
echo >file3 file three created in main, untracked &&
echo >subdir/file3 file three created in main, untracked &&
if err=$(read_tree_u_must_succeed -m -u branch-point main side 2>&1)
then
echo should have complained
false
else
echo "happy to see $err"
fi
HEAD is now at dbb6421 main removes file2 and subdir/file2
Already on 'main'
happy to see error: Untracked working tree file 'file3' would be overwritten by merge.
ok 7 - three-way not clobbering a working tree file
expecting success of 1004.8 'three-way not complaining on an untracked file':
git reset --hard &&
rm -f file2 subdir/file2 file3 subdir/file3 &&
git checkout main &&
echo >file3 file three created in main, untracked &&
echo >subdir/file3 file three created in main, untracked &&
read_tree_u_must_succeed -m -u --exclude-per-directory=.gitignore branch-point main side
HEAD is now at dbb6421 main removes file2 and subdir/file2
Already on 'main'
ok 8 - three-way not complaining on an untracked file
expecting success of 1004.9 '3-way not overwriting local changes (setup)':
git reset --hard &&
git checkout -b side-a branch-point &&
echo >>file1 "new line to be kept in the merge result" &&
git commit -a -m "side-a changes file1" &&
git checkout -b side-b branch-point &&
echo >>file2 "new line to be kept in the merge result" &&
git commit -a -m "side-b changes file2" &&
git checkout side-a
HEAD is now at dbb6421 main removes file2 and subdir/file2
Switched to a new branch 'side-a'
[side-a 67c0594] side-a changes file1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
Switched to a new branch 'side-b'
[side-b 3ad988a] side-b changes file2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
Switched to branch 'side-a'
ok 9 - 3-way not overwriting local changes (setup)
expecting success of 1004.10 '3-way not overwriting local changes (our side)':
# At this point, file1 from side-a should be kept as side-b
# did not touch it.
git reset --hard &&
echo >>file1 "local changes" &&
read_tree_u_must_succeed -m -u branch-point side-a side-b &&
grep "new line to be kept" file1 &&
grep "local changes" file1
HEAD is now at 67c0594 side-a changes file1
new line to be kept in the merge result
local changes
ok 10 - 3-way not overwriting local changes (our side)
expecting success of 1004.11 '3-way not overwriting local changes (their side)':
# At this point, file2 from side-b should be taken as side-a
# did not touch it.
git reset --hard &&
echo >>file2 "local changes" &&
read_tree_u_must_fail -m -u branch-point side-a side-b &&
! grep "new line to be kept" file2 &&
grep "local changes" file2
HEAD is now at 67c0594 side-a changes file1
error: Entry 'file2' not uptodate. Cannot merge.
error: Entry 'file2' not uptodate. Cannot merge.
local changes
ok 11 - 3-way not overwriting local changes (their side)
expecting success of 1004.12 'funny symlink in work tree':
git reset --hard &&
git checkout -b sym-b side-b &&
mkdir -p a &&
>a/b &&
git add a/b &&
git commit -m "side adds a/b" &&
rm -fr a &&
git checkout -b sym-a side-a &&
mkdir -p a &&
test_ln_s_add ../b a/b &&
git commit -m "we add a/b" &&
read_tree_u_must_succeed -m -u sym-a sym-a sym-b
HEAD is now at 67c0594 side-a changes file1
Switched to a new branch 'sym-b'
[sym-b b05f19b] side adds a/b
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 a/b
Switched to a new branch 'sym-a'
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
[sym-a c4bc40b] we add a/b
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 120000 a/b
ok 12 - funny symlink in work tree
checking prerequisite: SANITY
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SANITY" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SANITY" &&
mkdir SANETESTD.1 SANETESTD.2 &&
chmod +w SANETESTD.1 SANETESTD.2 &&
>SANETESTD.1/x 2>SANETESTD.2/x &&
chmod -w SANETESTD.1 &&
chmod -r SANETESTD.1/x &&
chmod -rx SANETESTD.2 ||
BUG "cannot prepare SANETESTD"
! test -r SANETESTD.1/x &&
! rm SANETESTD.1/x && ! test -f SANETESTD.2/x
status=$?
chmod +rwx SANETESTD.1 SANETESTD.2 &&
rm -rf SANETESTD.1 SANETESTD.2 ||
BUG "cannot clean SANETESTD"
return $status
)
rm: cannot remove 'SANETESTD.1/x': Permission denied
prerequisite SANITY ok
expecting success of 1004.13 'funny symlink in work tree, un-unlink-able':
test_when_finished "chmod u+w a 2>/dev/null; rm -fr a b" &&
rm -fr a b &&
git reset --hard &&
git checkout sym-a &&
chmod a-w a &&
test_must_fail git read-tree -m -u sym-a sym-a sym-b
HEAD is now at c4bc40b we add a/b
Already on 'sym-a'
error: unable to unlink old 'a/b': Permission denied
ok 13 - funny symlink in work tree, un-unlink-able
expecting success of 1004.14 'D/F setup':
git reset --hard &&
git checkout side-a &&
rm -f subdir/file2 &&
mkdir subdir/file2 &&
echo qfwfq >subdir/file2/another &&
git add subdir/file2/another &&
test_tick &&
git commit -m "side-a changes file2 to directory"
HEAD is now at c4bc40b we add a/b
Switched to branch 'side-a'
[side-a d094fd2] side-a changes file2 to directory
Author: A U Thor <author@example.com>
2 files changed, 1 insertion(+), 1 deletion(-)
delete mode 100644 subdir/file2
create mode 100644 subdir/file2/another
ok 14 - D/F setup
expecting success of 1004.15 'D/F':
git checkout side-b &&
read_tree_u_must_succeed -m -u branch-point side-b side-a &&
git ls-files -u >actual &&
(
a=$(git rev-parse branch-point:subdir/file2) &&
b=$(git rev-parse side-a:subdir/file2/another) &&
echo "100644 $a 1 subdir/file2" &&
echo "100644 $a 2 subdir/file2" &&
echo "100644 $b 3 subdir/file2/another"
) >expect &&
test_cmp expect actual
Switched to branch 'side-b'
ok 15 - D/F
expecting success of 1004.16 'D/F resolve':
git reset --hard &&
git checkout side-b &&
git merge-resolve branch-point -- side-b side-a
HEAD is now at 3ad988a side-b changes file2
Already on 'side-b'
Trying simple merge.
Simple merge failed, trying Automatic merge.
Adding subdir/file2/another
ok 16 - D/F resolve
expecting success of 1004.17 'D/F recursive':
git reset --hard &&
git checkout side-b &&
git merge-recursive branch-point -- side-b side-a
HEAD is now at 3ad988a side-b changes file2
Already on 'side-b'
Merging side-b with side-a
Merging:
3ad988a side-b changes file2
d094fd2 side-a changes file2 to directory
found 1 common ancestor:
eb5336a initial
Adding subdir/file2/another
Removing subdir/file2 to make room for subdirectory
Removing subdir/file2
ok 17 - D/F recursive
# passed all 17 test(s)
1..17
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1002-read-tree-m-u-2way.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1002-read-tree-m-u-2way/.git/
expecting success of 1002.1 'setup':
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 &&
cp bozbar bozbar.M &&
cp frotz frotz.M &&
cp nitfol nitfol.M &&
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 of 1002.2 '1, 2, 3 - no carry forward':
rm -f .git/index nitfol bozbar rezrov frotz &&
read_tree_u_must_succeed --reset -u $treeH &&
read_tree_u_must_succeed -m -u $treeH $treeM &&
git ls-files --stage >1-3.out &&
cmp M.out 1-3.out &&
test_cmp bozbar.M bozbar &&
test_cmp frotz.M frotz &&
test_cmp nitfol.M nitfol &&
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 of 1002.3 '4 - carry forward local addition.':
rm -f .git/index nitfol bozbar rezrov frotz &&
read_tree_u_must_succeed --reset -u $treeH &&
echo "+100644 X 0 yomin" >expected &&
echo yomin >yomin &&
git update-index --add yomin &&
read_tree_u_must_succeed -m -u $treeH $treeM &&
git ls-files --stage >4.out &&
test_might_fail git diff -U0 --no-index M.out 4.out >4diff.out &&
compare_change 4diff.out expected &&
check_cache_at yomin clean &&
test_cmp bozbar.M bozbar &&
test_cmp frotz.M frotz &&
test_cmp nitfol.M nitfol &&
echo yomin >yomin1 &&
diff yomin yomin1 &&
rm -f yomin1
yomin: clean
ok 3 - 4 - carry forward local addition.
expecting success of 1002.4 '5 - carry forward local addition.':
rm -f .git/index nitfol bozbar rezrov frotz &&
read_tree_u_must_succeed --reset -u $treeH &&
read_tree_u_must_succeed -m -u $treeH &&
echo yomin >yomin &&
git update-index --add yomin &&
echo yomin yomin >yomin &&
read_tree_u_must_succeed -m -u $treeH $treeM &&
git ls-files --stage >5.out &&
test_might_fail git diff -U0 --no-index M.out 5.out >5diff.out &&
compare_change 5diff.out expected &&
check_cache_at yomin dirty &&
test_cmp bozbar.M bozbar &&
test_cmp frotz.M frotz &&
test_cmp nitfol.M nitfol &&
: 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 of 1002.5 '6 - local addition already has the same.':
rm -f .git/index nitfol bozbar rezrov frotz &&
read_tree_u_must_succeed --reset -u $treeH &&
echo frotz >frotz &&
git update-index --add frotz &&
read_tree_u_must_succeed -m -u $treeH $treeM &&
git ls-files --stage >6.out &&
test_cmp M.out 6.out &&
check_cache_at frotz clean &&
test_cmp bozbar.M bozbar &&
test_cmp frotz.M frotz &&
test_cmp nitfol.M nitfol &&
echo frotz >frotz1 &&
diff frotz frotz1 &&
rm -f frotz1
frotz: clean
ok 5 - 6 - local addition already has the same.
expecting success of 1002.6 '7 - local addition already has the same.':
rm -f .git/index nitfol bozbar rezrov frotz &&
read_tree_u_must_succeed --reset -u $treeH &&
echo frotz >frotz &&
git update-index --add frotz &&
echo frotz frotz >frotz &&
read_tree_u_must_succeed -m -u $treeH $treeM &&
git ls-files --stage >7.out &&
test_cmp M.out 7.out &&
check_cache_at frotz dirty &&
test_cmp bozbar.M bozbar &&
test_cmp nitfol.M nitfol &&
: dirty index should have prevented -u from checking it out. &&
echo frotz frotz >frotz1 &&
diff frotz frotz1 &&
rm -f frotz1
frotz: dirty
ok 6 - 7 - local addition already has the same.
expecting success of 1002.7 '8 - conflicting addition.':
rm -f .git/index nitfol bozbar rezrov frotz &&
read_tree_u_must_succeed --reset -u $treeH &&
echo frotz frotz >frotz &&
git update-index --add frotz &&
! read_tree_u_must_succeed -m -u $treeH $treeM
error: Entry 'frotz' would be overwritten by merge. Cannot merge.
ok 7 - 8 - conflicting addition.
expecting success of 1002.8 '9 - conflicting addition.':
rm -f .git/index nitfol bozbar rezrov frotz &&
read_tree_u_must_succeed --reset -u $treeH &&
echo frotz frotz >frotz &&
git update-index --add frotz &&
echo frotz >frotz &&
! read_tree_u_must_succeed -m -u $treeH $treeM
error: Entry 'frotz' would be overwritten by merge. Cannot merge.
ok 8 - 9 - conflicting addition.
expecting success of 1002.9 '10 - path removed.':
rm -f .git/index nitfol bozbar rezrov frotz &&
read_tree_u_must_succeed --reset -u $treeH &&
echo rezrov >rezrov &&
git update-index --add rezrov &&
read_tree_u_must_succeed -m -u $treeH $treeM &&
git ls-files --stage >10.out &&
cmp M.out 10.out &&
test_cmp bozbar.M bozbar &&
test_cmp frotz.M frotz &&
test_cmp nitfol.M nitfol
ok 9 - 10 - path removed.
expecting success of 1002.10 '11 - dirty path removed.':
rm -f .git/index nitfol bozbar rezrov frotz &&
read_tree_u_must_succeed --reset -u $treeH &&
echo rezrov >rezrov &&
git update-index --add rezrov &&
echo rezrov rezrov >rezrov &&
! read_tree_u_must_succeed -m -u $treeH $treeM
error: Entry 'rezrov' not uptodate. Cannot merge.
ok 10 - 11 - dirty path removed.
expecting success of 1002.11 '12 - unmatching local changes being removed.':
rm -f .git/index nitfol bozbar rezrov frotz &&
read_tree_u_must_succeed --reset -u $treeH &&
echo rezrov rezrov >rezrov &&
git update-index --add rezrov &&
! read_tree_u_must_succeed -m -u $treeH $treeM
error: Entry 'rezrov' would be overwritten by merge. Cannot merge.
ok 11 - 12 - unmatching local changes being removed.
expecting success of 1002.12 '13 - unmatching local changes being removed.':
rm -f .git/index nitfol bozbar rezrov frotz &&
read_tree_u_must_succeed --reset -u $treeH &&
echo rezrov rezrov >rezrov &&
git update-index --add rezrov &&
echo rezrov >rezrov &&
! read_tree_u_must_succeed -m -u $treeH $treeM
error: Entry 'rezrov' would be overwritten by merge. Cannot merge.
ok 12 - 13 - unmatching local changes being removed.
expecting success of 1002.13 '14 - unchanged in two heads.':
rm -f .git/index nitfol bozbar rezrov frotz &&
read_tree_u_must_succeed --reset -u $treeH &&
echo nitfol nitfol >nitfol &&
git update-index --add nitfol &&
read_tree_u_must_succeed -m -u $treeH $treeM &&
git ls-files --stage >14.out &&
test_must_fail git diff -U0 --no-index M.out 14.out >14diff.out &&
compare_change 14diff.out expected &&
test_cmp bozbar.M bozbar &&
test_cmp frotz.M frotz &&
check_cache_at nitfol clean &&
echo nitfol nitfol >nitfol1 &&
diff nitfol nitfol1 &&
rm -f nitfol1
nitfol: clean
ok 13 - 14 - unchanged in two heads.
expecting success of 1002.14 '15 - unchanged in two heads.':
rm -f .git/index nitfol bozbar rezrov frotz &&
read_tree_u_must_succeed --reset -u $treeH &&
echo nitfol nitfol >nitfol &&
git update-index --add nitfol &&
echo nitfol nitfol nitfol >nitfol &&
read_tree_u_must_succeed -m -u $treeH $treeM &&
git ls-files --stage >15.out &&
test_must_fail git diff -U0 --no-index M.out 15.out >15diff.out &&
compare_change 15diff.out expected &&
check_cache_at nitfol dirty &&
test_cmp bozbar.M bozbar &&
test_cmp frotz.M frotz &&
echo nitfol nitfol nitfol >nitfol1 &&
diff nitfol nitfol1 &&
rm -f nitfol1
nitfol: dirty
ok 14 - 15 - unchanged in two heads.
expecting success of 1002.15 '16 - conflicting local change.':
rm -f .git/index nitfol bozbar rezrov frotz &&
read_tree_u_must_succeed --reset -u $treeH &&
echo bozbar bozbar >bozbar &&
git update-index --add bozbar &&
! read_tree_u_must_succeed -m -u $treeH $treeM
error: Entry 'bozbar' would be overwritten by merge. Cannot merge.
ok 15 - 16 - conflicting local change.
expecting success of 1002.16 '17 - conflicting local change.':
rm -f .git/index nitfol bozbar rezrov frotz &&
read_tree_u_must_succeed --reset -u $treeH &&
echo bozbar bozbar >bozbar &&
git update-index --add bozbar &&
echo bozbar bozbar bozbar >bozbar &&
! read_tree_u_must_succeed -m -u $treeH $treeM
error: Entry 'bozbar' would be overwritten by merge. Cannot merge.
ok 16 - 17 - conflicting local change.
expecting success of 1002.17 '18 - local change already having a good result.':
rm -f .git/index nitfol bozbar rezrov frotz &&
read_tree_u_must_succeed --reset -u $treeH &&
echo gnusto >bozbar &&
git update-index --add bozbar &&
read_tree_u_must_succeed -m -u $treeH $treeM &&
git ls-files --stage >18.out &&
test_cmp M.out 18.out &&
check_cache_at bozbar clean &&
test_cmp bozbar.M bozbar &&
test_cmp frotz.M frotz &&
test_cmp nitfol.M nitfol
bozbar: clean
ok 17 - 18 - local change already having a good result.
expecting success of 1002.18 '19 - local change already having a good result, further modified.':
rm -f .git/index nitfol bozbar rezrov frotz &&
read_tree_u_must_succeed --reset -u $treeH &&
echo gnusto >bozbar &&
git update-index --add bozbar &&
echo gnusto gnusto >bozbar &&
read_tree_u_must_succeed -m -u $treeH $treeM &&
git ls-files --stage >19.out &&
test_cmp M.out 19.out &&
check_cache_at bozbar dirty &&
test_cmp frotz.M frotz &&
test_cmp nitfol.M nitfol &&
echo gnusto gnusto >bozbar1 &&
diff bozbar bozbar1 &&
rm -f bozbar1
bozbar: dirty
ok 18 - 19 - local change already having a good result, further modified.
expecting success of 1002.19 '20 - no local change, use new tree.':
rm -f .git/index nitfol bozbar rezrov frotz &&
read_tree_u_must_succeed --reset -u $treeH &&
echo bozbar >bozbar &&
git update-index --add bozbar &&
read_tree_u_must_succeed -m -u $treeH $treeM &&
git ls-files --stage >20.out &&
test_cmp M.out 20.out &&
check_cache_at bozbar clean &&
test_cmp bozbar.M bozbar &&
test_cmp frotz.M frotz &&
test_cmp nitfol.M nitfol
bozbar: clean
ok 19 - 20 - no local change, use new tree.
expecting success of 1002.20 '21 - no local change, dirty cache.':
rm -f .git/index nitfol bozbar rezrov frotz &&
read_tree_u_must_succeed --reset -u $treeH &&
echo bozbar >bozbar &&
git update-index --add bozbar &&
echo gnusto gnusto >bozbar &&
! read_tree_u_must_succeed -m -u $treeH $treeM
error: Entry 'bozbar' not uptodate. Cannot merge.
ok 20 - 21 - no local change, dirty cache.
expecting success of 1002.21 'DF vs DF/DF case setup.':
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 of 1002.22 'DF vs DF/DF case test.':
rm -f .git/index &&
rm -fr DF &&
echo DF >DF &&
git update-index --add DF &&
read_tree_u_must_succeed -m -u $treeDF $treeDFDF &&
git ls-files --stage >DFDFcheck.out &&
test_cmp 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)
1..22
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0450-txt-doc-vs-help.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0450-txt-doc-vs-help/.git/
expecting success of 0450.1 'setup: list of builtins':
git --list-cmds=builtins >builtins
ok 1 - setup: list of builtins
expecting success of 0450.2 'list of txt and help mismatches is sorted':
sort -u "$TEST_DIRECTORY"/t0450/txt-help-mismatches >expect &&
if ! test_cmp expect "$TEST_DIRECTORY"/t0450/txt-help-mismatches
then
BUG "please keep the list of txt and help mismatches sorted"
fi
ok 2 - list of txt and help mismatches is sorted
expecting success of 0450.3 'add -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 3 - add -h output has no \t
expecting success of 0450.4 'add -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 4 - add -h output has dashed labels
expecting success of 0450.5 'add -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 5 - add -h output has consistent spacing
expecting success of 0450.6 'add *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 6 - add *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.7 'add -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:47.333216120 +0000
+++ help 2023-10-09 02:17:47.341216075 +0000
@@ -1,5 +1 @@
-git add [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | -i] [--patch | -p]
- [--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]] [--sparse]
- [--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing] [--renormalize]
- [--chmod=(+|-)x] [--pathspec-from-file=<file> [--pathspec-file-nul]]
- [--] [<pathspec>...]
+git add [<options>] [--] <pathspec>...
not ok 7 - add -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.8 'am -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 8 - am -h output has no \t
expecting success of 0450.9 'am -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 9 - am -h output has dashed labels
expecting success of 0450.10 'am -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 10 - am -h output has consistent spacing
expecting success of 0450.11 'am *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 11 - am *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.12 'am -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:47.377215873 +0000
+++ help 2023-10-09 02:17:47.381215851 +0000
@@ -1,10 +1,2 @@
-git am [--signoff] [--keep] [--[no-]keep-cr] [--[no-]utf8] [--no-verify]
- [--[no-]3way] [--interactive] [--committer-date-is-author-date]
- [--ignore-date] [--ignore-space-change | --ignore-whitespace]
- [--whitespace=<option>] [-C<n>] [-p<n>] [--directory=<dir>]
- [--exclude=<path>] [--include=<path>] [--reject] [-q | --quiet]
- [--[no-]scissors] [-S[<keyid>]] [--patch-format=<format>]
- [--quoted-cr=<action>]
- [--empty=(stop|drop|keep)]
- [(<mbox> | <Maildir>)...]
-git am (--continue | --skip | --abort | --quit | --show-current-patch[=(diff|raw)] | --allow-empty)
+git am [<options>] [(<mbox> | <Maildir>)...]
+git am [<options>] (--continue | --skip | --abort)
not ok 12 - am -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.13 'annotate -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 13 - annotate -h output has no \t
expecting success of 0450.14 'annotate -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 14 - annotate -h output has dashed labels
expecting success of 0450.15 'annotate -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 15 - annotate -h output has consistent spacing
expecting success of 0450.16 'annotate *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 16 - annotate *.txt SYNOPSIS has dashed labels
expecting success of 0450.17 'annotate -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 17 - annotate -h output and SYNOPSIS agree
expecting success of 0450.18 'apply -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 18 - apply -h output has no \t
expecting success of 0450.19 'apply -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 19 - apply -h output has dashed labels
expecting success of 0450.20 'apply -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 20 - apply -h output has consistent spacing
expecting success of 0450.21 'apply *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 21 - apply *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.22 'apply -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:47.453215447 +0000
+++ help 2023-10-09 02:17:47.457215425 +0000
@@ -1,8 +1 @@
-git apply [--stat] [--numstat] [--summary] [--check] [--index | --intent-to-add] [--3way]
- [--apply] [--no-add] [--build-fake-ancestor=<file>] [-R | --reverse]
- [--allow-binary-replacement | --binary] [--reject] [-z]
- [-p<n>] [-C<n>] [--inaccurate-eof] [--recount] [--cached]
- [--ignore-space-change | --ignore-whitespace]
- [--whitespace=(nowarn|warn|fix|error|error-all)]
- [--exclude=<path>] [--include=<path>] [--directory=<root>]
- [--verbose | --quiet] [--unsafe-paths] [--allow-empty] [<patch>...]
+git apply [<options>] [<patch>...]
not ok 22 - apply -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.23 'archive -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 23 - archive -h output has no \t
expecting success of 0450.24 'archive -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 24 - archive -h output has dashed labels
expecting success of 0450.25 'archive -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 25 - archive -h output has consistent spacing
expecting success of 0450.26 'archive *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 26 - archive *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.27 'archive -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:47.493215223 +0000
+++ help 2023-10-09 02:17:47.497215200 +0000
@@ -1,4 +1,4 @@
-git archive [--format=<fmt>] [--list] [--prefix=<prefix>/] [<extra>]
- [-o <file> | --output=<file>] [--worktree-attributes]
- [--remote=<repo> [--exec=<git-upload-archive>]] <tree-ish>
- [<path>...]
+git archive [<options>] <tree-ish> [<path>...]
+git archive --list
+git archive --remote <repo> [--exec <cmd>] [<options>] <tree-ish> [<path>...]
+git archive --remote <repo> [--exec <cmd>] --list
not ok 27 - archive -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.28 'bisect -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 28 - bisect -h output has no \t
expecting success of 0450.29 'bisect -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 29 - bisect -h output has dashed labels
expecting success of 0450.30 'bisect -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 30 - bisect -h output has consistent spacing
expecting success of 0450.31 'bisect *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 31 - bisect *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.32 'bisect -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:47.529215021 +0000
+++ help 2023-10-09 02:17:47.533214999 +0000
@@ -1 +1,10 @@
-git bisect <subcommand> <options>
+git bisect start [--term-{new,bad}=<term> --term-{old,good}=<term>] [--no-checkout] [--first-parent] [<bad> [<good>...]] [--] [<pathspec>...]
+git bisect (good|bad) [<rev>...]
+git bisect terms [--term-good | --term-bad]
+git bisect skip [(<rev>|<range>)...]
+git bisect next
+git bisect reset [<commit>]
+git bisect visualize
+git bisect replay <logfile>
+git bisect log
+git bisect run <cmd>...
not ok 32 - bisect -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.33 'blame -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 33 - blame -h output has no \t
expecting success of 0450.34 'blame -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 34 - blame -h output has dashed labels
expecting success of 0450.35 'blame -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 35 - blame -h output has consistent spacing
expecting success of 0450.36 'blame *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 36 - blame *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.37 'blame -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:47.569214797 +0000
+++ help 2023-10-09 02:17:47.573214774 +0000
@@ -1,5 +1 @@
-git blame [-c] [-b] [-l] [--root] [-t] [-f] [-n] [-s] [-e] [-p] [-w] [--incremental]
- [-L <range>] [-S <revs-file>] [-M] [-C] [-C] [-C] [--since=<date>]
- [--ignore-rev <rev>] [--ignore-revs-file <file>]
- [--color-lines] [--color-by-age] [--progress] [--abbrev=<n>]
- [ --contents <file> ] [<rev> | --reverse <rev>..<rev>] [--] <file>
+git blame [<options>] [<rev-opts>] [<rev>] [--] <file>
not ok 37 - blame -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.38 'branch -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 38 - branch -h output has no \t
expecting success of 0450.39 'branch -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 39 - branch -h output has dashed labels
expecting success of 0450.40 'branch -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 40 - branch -h output has consistent spacing
expecting success of 0450.41 'branch *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 41 - branch *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.42 'branch -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:47.605214595 +0000
+++ help 2023-10-09 02:17:47.609214572 +0000
@@ -1,16 +1,8 @@
-git branch [--color[=<when>] | --no-color] [--show-current]
- [-v [--abbrev=<n> | --no-abbrev]]
- [--column[=<options>] | --no-column] [--sort=<key>]
- [--merged [<commit>]] [--no-merged [<commit>]]
- [--contains [<commit>]] [--no-contains [<commit>]]
- [--points-at <object>] [--format=<format>]
- [(-r | --remotes) | (-a | --all)]
- [--list] [<pattern>...]
-git branch [--track[=(direct|inherit)] | --no-track] [-f]
- [--recurse-submodules] <branchname> [<start-point>]
-git branch (--set-upstream-to=<upstream> | -u <upstream>) [<branchname>]
-git branch --unset-upstream [<branchname>]
-git branch (-m | -M) [<oldbranch>] <newbranch>
-git branch (-c | -C) [<oldbranch>] <newbranch>
-git branch (-d | -D) [-r] <branchname>...
-git branch --edit-description [<branchname>]
+git branch [<options>] [-r | -a] [--merged] [--no-merged]
+git branch [<options>] [-f] [--recurse-submodules] <branch-name> [<start-point>]
+git branch [<options>] [-l] [<pattern>...]
+git branch [<options>] [-r] (-d | -D) <branch-name>...
+git branch [<options>] (-m | -M) [<old-branch>] <new-branch>
+git branch [<options>] (-c | -C) [<old-branch>] <new-branch>
+git branch [<options>] [-r | -a] [--points-at]
+git branch [<options>] [-r | -a] [--format]
not ok 42 - branch -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.43 'bugreport -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 43 - bugreport -h output has no \t
expecting success of 0450.44 'bugreport -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 44 - bugreport -h output has dashed labels
expecting success of 0450.45 'bugreport -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 45 - bugreport -h output has consistent spacing
expecting success of 0450.46 'bugreport *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 46 - bugreport *.txt SYNOPSIS has dashed labels
expecting success of 0450.47 'bugreport -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 47 - bugreport -h output and SYNOPSIS agree
expecting success of 0450.48 'bundle -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 48 - bundle -h output has no \t
expecting success of 0450.49 'bundle -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 49 - bundle -h output has dashed labels
expecting success of 0450.50 'bundle -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 50 - bundle -h output has consistent spacing
expecting success of 0450.51 'bundle *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 51 - bundle *.txt SYNOPSIS has dashed labels
expecting success of 0450.52 'bundle -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 52 - bundle -h output and SYNOPSIS agree
expecting success of 0450.53 'cat-file -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 53 - cat-file -h output has no \t
expecting success of 0450.54 'cat-file -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 54 - cat-file -h output has dashed labels
expecting success of 0450.55 'cat-file -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 55 - cat-file -h output has consistent spacing
expecting success of 0450.56 'cat-file *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 56 - cat-file *.txt SYNOPSIS has dashed labels
expecting success of 0450.57 'cat-file -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 57 - cat-file -h output and SYNOPSIS agree
expecting success of 0450.58 'check-attr -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 58 - check-attr -h output has no \t
expecting success of 0450.59 'check-attr -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 59 - check-attr -h output has dashed labels
expecting success of 0450.60 'check-attr -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 60 - check-attr -h output has consistent spacing
expecting success of 0450.61 'check-attr *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 61 - check-attr *.txt SYNOPSIS has dashed labels
expecting success of 0450.62 'check-attr -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 62 - check-attr -h output and SYNOPSIS agree
expecting success of 0450.63 'check-ignore -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 63 - check-ignore -h output has no \t
expecting success of 0450.64 'check-ignore -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 64 - check-ignore -h output has dashed labels
expecting success of 0450.65 'check-ignore -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 65 - check-ignore -h output has consistent spacing
expecting success of 0450.66 'check-ignore *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 66 - check-ignore *.txt SYNOPSIS has dashed labels
expecting success of 0450.67 'check-ignore -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 67 - check-ignore -h output and SYNOPSIS agree
expecting success of 0450.68 'check-mailmap -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 68 - check-mailmap -h output has no \t
expecting success of 0450.69 'check-mailmap -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 69 - check-mailmap -h output has dashed labels
expecting success of 0450.70 'check-mailmap -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 70 - check-mailmap -h output has consistent spacing
expecting success of 0450.71 'check-mailmap *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 71 - check-mailmap *.txt SYNOPSIS has dashed labels
expecting success of 0450.72 'check-mailmap -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 72 - check-mailmap -h output and SYNOPSIS agree
expecting success of 0450.73 'check-ref-format -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 73 - check-ref-format -h output has no \t
expecting success of 0450.74 'check-ref-format -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 74 - check-ref-format -h output has dashed labels
expecting success of 0450.75 'check-ref-format -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 75 - check-ref-format -h output has consistent spacing
expecting success of 0450.76 'check-ref-format *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 76 - check-ref-format *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.77 'check-ref-format -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:47.869213115 +0000
+++ help 2023-10-09 02:17:47.869213115 +0000
@@ -1,4 +1,2 @@
-git check-ref-format [--normalize]
- [--[no-]allow-onelevel] [--refspec-pattern]
- <refname>
+git check-ref-format [--normalize] [<options>] <refname>
git check-ref-format --branch <branchname-shorthand>
not ok 77 - check-ref-format -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.78 'checkout -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 78 - checkout -h output has no \t
expecting success of 0450.79 'checkout -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 79 - checkout -h output has dashed labels
expecting success of 0450.80 'checkout -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 80 - checkout -h output has consistent spacing
expecting success of 0450.81 'checkout *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 81 - checkout *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.82 'checkout -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:47.909212890 +0000
+++ help 2023-10-09 02:17:47.913212868 +0000
@@ -1,7 +1,2 @@
-git checkout [-q] [-f] [-m] [<branch>]
-git checkout [-q] [-f] [-m] --detach [<branch>]
-git checkout [-q] [-f] [-m] [--detach] <commit>
-git checkout [-q] [-f] [-m] [[-b|-B|--orphan] <new-branch>] [<start-point>]
-git checkout [-f|--ours|--theirs|-m|--conflict=<style>] [<tree-ish>] [--] <pathspec>...
-git checkout [-f|--ours|--theirs|-m|--conflict=<style>] [<tree-ish>] --pathspec-from-file=<file> [--pathspec-file-nul]
-git checkout (-p|--patch) [<tree-ish>] [--] [<pathspec>...]
+git checkout [<options>] <branch>
+git checkout [<options>] [<branch>] -- <file>...
not ok 82 - checkout -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.83 'checkout--worker -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 83 - checkout--worker -h output has no \t
expecting success of 0450.84 'checkout--worker -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 84 - checkout--worker -h output has dashed labels
expecting success of 0450.85 'checkout--worker -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 85 - checkout--worker -h output has consistent spacing
ok 86 # skip checkout--worker *.txt SYNOPSIS has dashed labels (missing BUILTIN_TXT_CHECKOUT__WORKER)
ok 87 # skip checkout--worker -h output and SYNOPSIS agree (missing BUILTIN_TXT_CHECKOUT__WORKER)
expecting success of 0450.88 'checkout-index -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 88 - checkout-index -h output has no \t
expecting success of 0450.89 'checkout-index -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 89 - checkout-index -h output has dashed labels
expecting success of 0450.90 'checkout-index -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 90 - checkout-index -h output has consistent spacing
expecting success of 0450.91 'checkout-index *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 91 - checkout-index *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.92 'checkout-index -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:47.969212554 +0000
+++ help 2023-10-09 02:17:47.973212531 +0000
@@ -1,6 +1 @@
-git checkout-index [-u] [-q] [-a] [-f] [-n] [--prefix=<string>]
- [--stage=<number>|all]
- [--temp]
- [--ignore-skip-worktree-bits]
- [-z] [--stdin]
- [--] [<file>...]
+git checkout-index [<options>] [--] [<file>...]
not ok 92 - checkout-index -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.93 'cherry -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 93 - cherry -h output has no \t
expecting success of 0450.94 'cherry -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 94 - cherry -h output has dashed labels
expecting success of 0450.95 'cherry -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 95 - cherry -h output has consistent spacing
expecting success of 0450.96 'cherry *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 96 - cherry *.txt SYNOPSIS has dashed labels
expecting success of 0450.97 'cherry -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 97 - cherry -h output and SYNOPSIS agree
expecting success of 0450.98 'cherry-pick -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 98 - cherry-pick -h output has no \t
expecting success of 0450.99 'cherry-pick -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 99 - cherry-pick -h output has dashed labels
expecting success of 0450.100 'cherry-pick -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 100 - cherry-pick -h output has consistent spacing
expecting success of 0450.101 'cherry-pick *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 101 - cherry-pick *.txt SYNOPSIS has dashed labels
expecting success of 0450.102 'cherry-pick -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 102 - cherry-pick -h output and SYNOPSIS agree
expecting success of 0450.103 'clean -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 103 - clean -h output has no \t
expecting success of 0450.104 'clean -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 104 - clean -h output has dashed labels
expecting success of 0450.105 'clean -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 105 - clean -h output has consistent spacing
expecting success of 0450.106 'clean *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 106 - clean *.txt SYNOPSIS has dashed labels
expecting success of 0450.107 'clean -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 107 - clean -h output and SYNOPSIS agree
expecting success of 0450.108 'clone -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 108 - clone -h output has no \t
expecting success of 0450.109 'clone -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 109 - clone -h output has dashed labels
expecting success of 0450.110 'clone -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 110 - clone -h output has consistent spacing
expecting success of 0450.111 'clone *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 111 - clone *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.112 'clone -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:48.121211702 +0000
+++ help 2023-10-09 02:17:48.125211679 +0000
@@ -1,9 +1 @@
-git clone [--template=<template-directory>]
- [-l] [-s] [--no-hardlinks] [-q] [-n] [--bare] [--mirror]
- [-o <name>] [-b <name>] [-u <upload-pack>] [--reference <repository>]
- [--dissociate] [--separate-git-dir <git-dir>]
- [--depth <depth>] [--[no-]single-branch] [--no-tags]
- [--recurse-submodules[=<pathspec>]] [--[no-]shallow-submodules]
- [--[no-]remote-submodules] [--jobs <n>] [--sparse] [--[no-]reject-shallow]
- [--filter=<filter> [--also-filter-submodules]] [--] <repository>
- [<directory>]
+git clone [<options>] [--] <repo> [<dir>]
not ok 112 - clone -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.113 'column -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 113 - column -h output has no \t
expecting success of 0450.114 'column -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 114 - column -h output has dashed labels
expecting success of 0450.115 'column -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 115 - column -h output has consistent spacing
expecting success of 0450.116 'column *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 116 - column *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.117 'column -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:48.153211522 +0000
+++ help 2023-10-09 02:17:48.157211500 +0000
@@ -1,2 +1 @@
-git column [--command=<name>] [--[raw-]mode=<mode>] [--width=<width>]
- [--indent=<string>] [--nl=<string>] [--padding=<n>]
+git column [<options>]
not ok 117 - column -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.118 'commit -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 118 - commit -h output has no \t
expecting success of 0450.119 'commit -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 119 - commit -h output has dashed labels
expecting success of 0450.120 'commit -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 120 - commit -h output has consistent spacing
expecting success of 0450.121 'commit *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 121 - commit *.txt SYNOPSIS has dashed labels
expecting success of 0450.122 'commit -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 122 - commit -h output and SYNOPSIS agree
expecting success of 0450.123 'commit-graph -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 123 - commit-graph -h output has no \t
expecting success of 0450.124 'commit-graph -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 124 - commit-graph -h output has dashed labels
expecting success of 0450.125 'commit-graph -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 125 - commit-graph -h output has consistent spacing
expecting success of 0450.126 'commit-graph *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 126 - commit-graph *.txt SYNOPSIS has dashed labels
expecting success of 0450.127 'commit-graph -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 127 - commit-graph -h output and SYNOPSIS agree
expecting success of 0450.128 'commit-tree -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 128 - commit-tree -h output has no \t
expecting success of 0450.129 'commit-tree -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 129 - commit-tree -h output has dashed labels
expecting success of 0450.130 'commit-tree -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 130 - commit-tree -h output has consistent spacing
expecting success of 0450.131 'commit-tree *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 131 - commit-tree *.txt SYNOPSIS has dashed labels
expecting success of 0450.132 'commit-tree -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 132 - commit-tree -h output and SYNOPSIS agree
expecting success of 0450.133 'config -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 133 - config -h output has no \t
expecting success of 0450.134 'config -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 134 - config -h output has dashed labels
expecting success of 0450.135 'config -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 135 - config -h output has consistent spacing
expecting success of 0450.136 'config *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 136 - config *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.137 'config -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:48.305210670 +0000
+++ help 2023-10-09 02:17:48.309210647 +0000
@@ -1,15 +1 @@
-git config [<file-option>] [--type=<type>] [--fixed-value] [--show-origin] [--show-scope] [-z|--null] <name> [<value> [<value-pattern>]]
-git config [<file-option>] [--type=<type>] --add <name> <value>
-git config [<file-option>] [--type=<type>] [--fixed-value] --replace-all <name> <value> [<value-pattern>]
-git config [<file-option>] [--type=<type>] [--show-origin] [--show-scope] [-z|--null] [--fixed-value] --get <name> [<value-pattern>]
-git config [<file-option>] [--type=<type>] [--show-origin] [--show-scope] [-z|--null] [--fixed-value] --get-all <name> [<value-pattern>]
-git config [<file-option>] [--type=<type>] [--show-origin] [--show-scope] [-z|--null] [--fixed-value] [--name-only] --get-regexp <name-regex> [<value-pattern>]
-git config [<file-option>] [--type=<type>] [-z|--null] --get-urlmatch <name> <URL>
-git config [<file-option>] [--fixed-value] --unset <name> [<value-pattern>]
-git config [<file-option>] [--fixed-value] --unset-all <name> [<value-pattern>]
-git config [<file-option>] --rename-section <old-name> <new-name>
-git config [<file-option>] --remove-section <name>
-git config [<file-option>] [--show-origin] [--show-scope] [-z|--null] [--name-only] -l | --list
-git config [<file-option>] --get-color <name> [<default>]
-git config [<file-option>] --get-colorbool <name> [<stdout-is-tty>]
-git config [<file-option>] -e | --edit
+git config [<options>]
not ok 137 - config -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.138 'count-objects -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 138 - count-objects -h output has no \t
expecting success of 0450.139 'count-objects -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 139 - count-objects -h output has dashed labels
expecting success of 0450.140 'count-objects -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 140 - count-objects -h output has consistent spacing
expecting success of 0450.141 'count-objects *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 141 - count-objects *.txt SYNOPSIS has dashed labels
expecting success of 0450.142 'count-objects -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 142 - count-objects -h output and SYNOPSIS agree
expecting success of 0450.143 'credential -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 143 - credential -h output has no \t
expecting success of 0450.144 'credential -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 144 - credential -h output has dashed labels
expecting success of 0450.145 'credential -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 145 - credential -h output has consistent spacing
expecting success of 0450.146 'credential *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 146 - credential *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.147 'credential -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:48.381210244 +0000
+++ help 2023-10-09 02:17:48.389210199 +0000
@@ -0,0 +1 @@
+git credential (fill|approve|reject)
not ok 147 - credential -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.148 'credential-cache -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 148 - credential-cache -h output has no \t
expecting success of 0450.149 'credential-cache -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 149 - credential-cache -h output has dashed labels
expecting success of 0450.150 'credential-cache -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 150 - credential-cache -h output has consistent spacing
expecting success of 0450.151 'credential-cache *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 151 - credential-cache *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.152 'credential-cache -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:48.417210042 +0000
+++ help 2023-10-09 02:17:48.425209997 +0000
@@ -0,0 +1 @@
+git credential-cache [<options>] <action>
not ok 152 - credential-cache -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.153 'credential-cache--daemon -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 153 - credential-cache--daemon -h output has no \t
expecting success of 0450.154 'credential-cache--daemon -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 154 - credential-cache--daemon -h output has dashed labels
expecting success of 0450.155 'credential-cache--daemon -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 155 - credential-cache--daemon -h output has consistent spacing
expecting success of 0450.156 'credential-cache--daemon *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 156 - credential-cache--daemon *.txt SYNOPSIS has dashed labels
expecting success of 0450.157 'credential-cache--daemon -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 157 - credential-cache--daemon -h output and SYNOPSIS agree
expecting success of 0450.158 'credential-store -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 158 - credential-store -h output has no \t
expecting success of 0450.159 'credential-store -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 159 - credential-store -h output has dashed labels
expecting success of 0450.160 'credential-store -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 160 - credential-store -h output has consistent spacing
expecting success of 0450.161 'credential-store *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 161 - credential-store *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.162 'credential-store -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:48.493209616 +0000
+++ help 2023-10-09 02:17:48.501209571 +0000
@@ -0,0 +1 @@
+git credential-store [<options>] <action>
not ok 162 - credential-store -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.163 'describe -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 163 - describe -h output has no \t
expecting success of 0450.164 'describe -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 164 - describe -h output has dashed labels
expecting success of 0450.165 'describe -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 165 - describe -h output has consistent spacing
expecting success of 0450.166 'describe *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 166 - describe *.txt SYNOPSIS has dashed labels
expecting success of 0450.167 'describe -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 167 - describe -h output and SYNOPSIS agree
expecting success of 0450.168 'diagnose -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 168 - diagnose -h output has no \t
expecting success of 0450.169 'diagnose -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 169 - diagnose -h output has dashed labels
expecting success of 0450.170 'diagnose -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 170 - diagnose -h output has consistent spacing
expecting success of 0450.171 'diagnose *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 171 - diagnose *.txt SYNOPSIS has dashed labels
expecting success of 0450.172 'diagnose -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 172 - diagnose -h output and SYNOPSIS agree
expecting success of 0450.173 'diff -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 173 - diff -h output has no \t
expecting success of 0450.174 'diff -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 174 - diff -h output has dashed labels
expecting success of 0450.175 'diff -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 175 - diff -h output has consistent spacing
expecting success of 0450.176 'diff *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 176 - diff *.txt SYNOPSIS has dashed labels
expecting success of 0450.177 'diff -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 177 - diff -h output and SYNOPSIS agree
expecting success of 0450.178 'diff-files -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 178 - diff-files -h output has no \t
expecting success of 0450.179 'diff-files -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 179 - diff-files -h output has dashed labels
expecting success of 0450.180 'diff-files -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 180 - diff-files -h output has consistent spacing
expecting success of 0450.181 'diff-files *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 181 - diff-files *.txt SYNOPSIS has dashed labels
expecting success of 0450.182 'diff-files -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 182 - diff-files -h output and SYNOPSIS agree
expecting success of 0450.183 'diff-index -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 183 - diff-index -h output has no \t
expecting success of 0450.184 'diff-index -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 184 - diff-index -h output has dashed labels
expecting success of 0450.185 'diff-index -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 185 - diff-index -h output has consistent spacing
expecting success of 0450.186 'diff-index *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 186 - diff-index *.txt SYNOPSIS has dashed labels
expecting success of 0450.187 'diff-index -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 187 - diff-index -h output and SYNOPSIS agree
expecting success of 0450.188 'diff-tree -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 188 - diff-tree -h output has no \t
expecting success of 0450.189 'diff-tree -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 189 - diff-tree -h output has dashed labels
expecting success of 0450.190 'diff-tree -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 190 - diff-tree -h output has consistent spacing
expecting success of 0450.191 'diff-tree *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 191 - diff-tree *.txt SYNOPSIS has dashed labels
expecting success of 0450.192 'diff-tree -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 192 - diff-tree -h output and SYNOPSIS agree
expecting success of 0450.193 'difftool -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 193 - difftool -h output has no \t
expecting success of 0450.194 'difftool -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 194 - difftool -h output has dashed labels
expecting success of 0450.195 'difftool -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 195 - difftool -h output has consistent spacing
expecting success of 0450.196 'difftool *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 196 - difftool *.txt SYNOPSIS has dashed labels
expecting success of 0450.197 'difftool -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 197 - difftool -h output and SYNOPSIS agree
expecting success of 0450.198 'fast-export -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 198 - fast-export -h output has no \t
expecting success of 0450.199 'fast-export -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 199 - fast-export -h output has dashed labels
expecting success of 0450.200 'fast-export -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 200 - fast-export -h output has consistent spacing
expecting success of 0450.201 'fast-export *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 201 - fast-export *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.202 'fast-export -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:48.797207911 +0000
+++ help 2023-10-09 02:17:48.801207889 +0000
@@ -1 +1 @@
-git fast-export [<options>] | git fast-import
+git fast-export [<rev-list-opts>]
not ok 202 - fast-export -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.203 'fast-import -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 203 - fast-import -h output has no \t
expecting success of 0450.204 'fast-import -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 204 - fast-import -h output has dashed labels
expecting success of 0450.205 'fast-import -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 205 - fast-import -h output has consistent spacing
expecting success of 0450.206 'fast-import *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 206 - fast-import *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.207 'fast-import -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:48.829207732 +0000
+++ help 2023-10-09 02:17:48.833207709 +0000
@@ -1 +1 @@
-frontend | git fast-import [<options>]
+git fast-import [--date-format=<f>] [--max-pack-size=<n>] [--big-file-threshold=<n>] [--depth=<n>] [--active-branches=<n>] [--export-marks=<marks.file>]
not ok 207 - fast-import -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.208 'fetch -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 208 - fetch -h output has no \t
expecting success of 0450.209 'fetch -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 209 - fetch -h output has dashed labels
expecting success of 0450.210 'fetch -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 210 - fetch -h output has consistent spacing
expecting success of 0450.211 'fetch *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 211 - fetch *.txt SYNOPSIS has dashed labels
expecting success of 0450.212 'fetch -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 212 - fetch -h output and SYNOPSIS agree
expecting success of 0450.213 'fetch-pack -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 213 - fetch-pack -h output has no \t
expecting success of 0450.214 'fetch-pack -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 214 - fetch-pack -h output has dashed labels
expecting success of 0450.215 'fetch-pack -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 215 - fetch-pack -h output has consistent spacing
expecting success of 0450.216 'fetch-pack *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 216 - fetch-pack *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.217 'fetch-pack -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:48.905207305 +0000
+++ help 2023-10-09 02:17:48.909207283 +0000
@@ -1,4 +1 @@
-git fetch-pack [--all] [--quiet|-q] [--keep|-k] [--thin] [--include-tag]
- [--upload-pack=<git-upload-pack>]
- [--depth=<n>] [--no-progress]
- [-v] <repository> [<refs>...]
+git fetch-pack [--all] [--stdin] [--quiet | -q] [--keep | -k] [--thin] [--include-tag] [--upload-pack=<git-upload-pack>] [--depth=<n>] [--no-progress] [--diag-url] [-v] [<host>:]<directory> [<refs>...]
not ok 217 - fetch-pack -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.218 'fmt-merge-msg -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 218 - fmt-merge-msg -h output has no \t
expecting success of 0450.219 'fmt-merge-msg -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 219 - fmt-merge-msg -h output has dashed labels
expecting success of 0450.220 'fmt-merge-msg -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 220 - fmt-merge-msg -h output has consistent spacing
expecting success of 0450.221 'fmt-merge-msg *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 221 - fmt-merge-msg *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.222 'fmt-merge-msg -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:48.945207081 +0000
+++ help 2023-10-09 02:17:48.949207059 +0000
@@ -1,2 +1 @@
-git fmt-merge-msg [-m <message>] [--into-name <branch>] [--log[=<n>] | --no-log]
-git fmt-merge-msg [-m <message>] [--log[=<n>] | --no-log] -F <file>
+git fmt-merge-msg [-m <message>] [--log[=<n>] | --no-log] [--file <file>]
not ok 222 - fmt-merge-msg -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.223 'for-each-ref -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 223 - for-each-ref -h output has no \t
expecting success of 0450.224 'for-each-ref -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 224 - for-each-ref -h output has dashed labels
expecting success of 0450.225 'for-each-ref -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 225 - for-each-ref -h output has consistent spacing
expecting success of 0450.226 'for-each-ref *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 226 - for-each-ref *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.227 'for-each-ref -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:48.985206857 +0000
+++ help 2023-10-09 02:17:48.989206834 +0000
@@ -1,7 +1,4 @@
-git for-each-ref [--count=<count>] [--shell|--perl|--python|--tcl]
- [(--sort=<key>)...] [--format=<format>]
- [ --stdin | <pattern>... ]
- [--points-at=<object>]
- [--merged[=<object>]] [--no-merged[=<object>]]
- [--contains[=<object>]] [--no-contains[=<object>]]
- [--exclude=<pattern> ...]
+git for-each-ref [<options>] [<pattern>]
+git for-each-ref [--points-at <object>]
+git for-each-ref [--merged [<commit>]] [--no-merged [<commit>]]
+git for-each-ref [--contains [<commit>]] [--no-contains [<commit>]]
not ok 227 - for-each-ref -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.228 'for-each-repo -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 228 - for-each-repo -h output has no \t
expecting success of 0450.229 'for-each-repo -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 229 - for-each-repo -h output has dashed labels
expecting success of 0450.230 'for-each-repo -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 230 - for-each-repo -h output has consistent spacing
expecting success of 0450.231 'for-each-repo *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 231 - for-each-repo *.txt SYNOPSIS has dashed labels
expecting success of 0450.232 'for-each-repo -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 232 - for-each-repo -h output and SYNOPSIS agree
expecting success of 0450.233 'format-patch -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 233 - format-patch -h output has no \t
expecting success of 0450.234 'format-patch -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 234 - format-patch -h output has dashed labels
expecting success of 0450.235 'format-patch -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 235 - format-patch -h output has consistent spacing
expecting success of 0450.236 'format-patch *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 236 - format-patch *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.237 'format-patch -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:49.057206453 +0000
+++ help 2023-10-09 02:17:49.061206431 +0000
@@ -1,23 +1 @@
-git format-patch [-k] [(-o|--output-directory) <dir> | --stdout]
- [--no-thread | --thread[=<style>]]
- [(--attach|--inline)[=<boundary>] | --no-attach]
- [-s | --signoff]
- [--signature=<signature> | --no-signature]
- [--signature-file=<file>]
- [-n | --numbered | -N | --no-numbered]
- [--start-number <n>] [--numbered-files]
- [--in-reply-to=<message id>] [--suffix=.<sfx>]
- [--ignore-if-in-upstream] [--always]
- [--cover-from-description=<mode>]
- [--rfc] [--subject-prefix=<subject prefix>]
- [(--reroll-count|-v) <n>]
- [--to=<email>] [--cc=<email>]
- [--[no-]cover-letter] [--quiet]
- [--[no-]encode-email-headers]
- [--no-notes | --notes[=<ref>]]
- [--interdiff=<previous>]
- [--range-diff=<previous> [--creation-factor=<percent>]]
- [--filename-max-length=<n>]
- [--progress]
- [<common diff options>]
- [ <since> | <revision range> ]
+git format-patch [<options>] [<since> | <revision-range>]
not ok 237 - format-patch -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.238 'fsck -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 238 - fsck -h output has no \t
expecting success of 0450.239 'fsck -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 239 - fsck -h output has dashed labels
expecting success of 0450.240 'fsck -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 240 - fsck -h output has consistent spacing
expecting success of 0450.241 'fsck *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 241 - fsck *.txt SYNOPSIS has dashed labels
expecting success of 0450.242 'fsck -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 242 - fsck -h output and SYNOPSIS agree
expecting success of 0450.243 'fsck-objects -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 243 - fsck-objects -h output has no \t
expecting success of 0450.244 'fsck-objects -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 244 - fsck-objects -h output has dashed labels
expecting success of 0450.245 'fsck-objects -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 245 - fsck-objects -h output has consistent spacing
expecting success of 0450.246 'fsck-objects *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 246 - fsck-objects *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.247 'fsck-objects -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:49.133206027 +0000
+++ help 2023-10-09 02:17:49.137206004 +0000
@@ -1 +1,4 @@
-git fsck-objects ...
+git fsck [--tags] [--root] [--unreachable] [--cache] [--no-reflogs]
+ [--[no-]full] [--strict] [--verbose] [--lost-found]
+ [--[no-]dangling] [--[no-]progress] [--connectivity-only]
+ [--[no-]name-objects] [<object>...]
not ok 247 - fsck-objects -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.248 'fsmonitor--daemon -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 248 - fsmonitor--daemon -h output has no \t
expecting success of 0450.249 'fsmonitor--daemon -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 249 - fsmonitor--daemon -h output has dashed labels
expecting success of 0450.250 'fsmonitor--daemon -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 250 - fsmonitor--daemon -h output has consistent spacing
expecting success of 0450.251 'fsmonitor--daemon *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 251 - fsmonitor--daemon *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.252 'fsmonitor--daemon -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:49.173205803 +0000
+++ help 2023-10-09 02:17:49.177205780 +0000
@@ -1,4 +1,4 @@
-git fsmonitor--daemon start
-git fsmonitor--daemon run
+git fsmonitor--daemon start [<options>]
+git fsmonitor--daemon run [<options>]
git fsmonitor--daemon stop
git fsmonitor--daemon status
not ok 252 - fsmonitor--daemon -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.253 'gc -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 253 - gc -h output has no \t
expecting success of 0450.254 'gc -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 254 - gc -h output has dashed labels
expecting success of 0450.255 'gc -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 255 - gc -h output has consistent spacing
expecting success of 0450.256 'gc *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 256 - gc *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.257 'gc -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:49.213205578 +0000
+++ help 2023-10-09 02:17:49.217205556 +0000
@@ -1 +1 @@
-git gc [--aggressive] [--auto] [--quiet] [--prune=<date> | --no-prune] [--force] [--keep-largest-pack]
+git gc [<options>]
not ok 257 - gc -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.258 'get-tar-commit-id -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 258 - get-tar-commit-id -h output has no \t
expecting success of 0450.259 'get-tar-commit-id -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 259 - get-tar-commit-id -h output has dashed labels
expecting success of 0450.260 'get-tar-commit-id -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 260 - get-tar-commit-id -h output has consistent spacing
expecting success of 0450.261 'get-tar-commit-id *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 261 - get-tar-commit-id *.txt SYNOPSIS has dashed labels
expecting success of 0450.262 'get-tar-commit-id -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 262 - get-tar-commit-id -h output and SYNOPSIS agree
expecting success of 0450.263 'grep -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 263 - grep -h output has no \t
expecting success of 0450.264 'grep -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 264 - grep -h output has dashed labels
expecting success of 0450.265 'grep -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 265 - grep -h output has consistent spacing
expecting success of 0450.266 'grep *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 266 - grep *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.267 'grep -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:49.289205152 +0000
+++ help 2023-10-09 02:17:49.293205130 +0000
@@ -1,21 +1 @@
-git grep [-a | --text] [-I] [--textconv] [-i | --ignore-case] [-w | --word-regexp]
- [-v | --invert-match] [-h|-H] [--full-name]
- [-E | --extended-regexp] [-G | --basic-regexp]
- [-P | --perl-regexp]
- [-F | --fixed-strings] [-n | --line-number] [--column]
- [-l | --files-with-matches] [-L | --files-without-match]
- [(-O | --open-files-in-pager) [<pager>]]
- [-z | --null]
- [ -o | --only-matching ] [-c | --count] [--all-match] [-q | --quiet]
- [--max-depth <depth>] [--[no-]recursive]
- [--color[=<when>] | --no-color]
- [--break] [--heading] [-p | --show-function]
- [-A <post-context>] [-B <pre-context>] [-C <context>]
- [-W | --function-context]
- [(-m | --max-count) <num>]
- [--threads <num>]
- [-f <file>] [-e] <pattern>
- [--and|--or|--not|(|)|-e <pattern>...]
- [--recurse-submodules] [--parent-basename <basename>]
- [ [--[no-]exclude-standard] [--cached | --no-index | --untracked] | <tree>...]
- [--] [<pathspec>...]
+git grep [<options>] [-e] <pattern> [<rev>...] [[--] <path>...]
not ok 267 - grep -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.268 'hash-object -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 268 - hash-object -h output has no \t
expecting success of 0450.269 'hash-object -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 269 - hash-object -h output has dashed labels
expecting success of 0450.270 'hash-object -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 270 - hash-object -h output has consistent spacing
expecting success of 0450.271 'hash-object *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 271 - hash-object *.txt SYNOPSIS has dashed labels
expecting success of 0450.272 'hash-object -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 272 - hash-object -h output and SYNOPSIS agree
expecting success of 0450.273 'help -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 273 - help -h output has no \t
expecting success of 0450.274 'help -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 274 - help -h output has dashed labels
expecting success of 0450.275 'help -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 275 - help -h output has consistent spacing
expecting success of 0450.276 'help *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 276 - help *.txt SYNOPSIS has dashed labels
expecting success of 0450.277 'help -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 277 - help -h output and SYNOPSIS agree
expecting success of 0450.278 'hook -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 278 - hook -h output has no \t
expecting success of 0450.279 'hook -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 279 - hook -h output has dashed labels
expecting success of 0450.280 'hook -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 280 - hook -h output has consistent spacing
expecting success of 0450.281 'hook *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 281 - hook *.txt SYNOPSIS has dashed labels
expecting success of 0450.282 'hook -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 282 - hook -h output and SYNOPSIS agree
expecting success of 0450.283 'index-pack -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 283 - index-pack -h output has no \t
expecting success of 0450.284 'index-pack -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 284 - index-pack -h output has dashed labels
expecting success of 0450.285 'index-pack -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 285 - index-pack -h output has consistent spacing
expecting success of 0450.286 'index-pack *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 286 - index-pack *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.287 'index-pack -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:49.445204277 +0000
+++ help 2023-10-09 02:17:49.449204255 +0000
@@ -1,3 +1 @@
-git index-pack [-v] [-o <index-file>] [--[no-]rev-index] <pack-file>
-git index-pack --stdin [--fix-thin] [--keep] [-v] [-o <index-file>]
- [--[no-]rev-index] [<pack-file>]
+git index-pack [-v] [-o <index-file>] [--keep | --keep=<msg>] [--[no-]rev-index] [--verify] [--strict] (<pack-file> | --stdin [--fix-thin] [<pack-file>])
not ok 287 - index-pack -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.288 'init -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 288 - init -h output has no \t
expecting success of 0450.289 'init -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 289 - init -h output has dashed labels
expecting success of 0450.290 'init -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 290 - init -h output has consistent spacing
expecting success of 0450.291 'init *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 291 - init *.txt SYNOPSIS has dashed labels
expecting success of 0450.292 'init -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 292 - init -h output and SYNOPSIS agree
expecting success of 0450.293 'init-db -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 293 - init-db -h output has no \t
expecting success of 0450.294 'init-db -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 294 - init-db -h output has dashed labels
expecting success of 0450.295 'init-db -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 295 - init-db -h output has consistent spacing
expecting success of 0450.296 'init-db *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 296 - init-db *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.297 'init-db -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:49.525203829 +0000
+++ help 2023-10-09 02:17:49.525203829 +0000
@@ -1 +1,4 @@
-git init-db [-q | --quiet] [--bare] [--template=<template-directory>] [--separate-git-dir <git-dir>] [--shared[=<permissions>]]
+git init [-q | --quiet] [--bare] [--template=<template-directory>]
+ [--separate-git-dir <git-dir>] [--object-format=<format>]
+ [-b <branch-name> | --initial-branch=<branch-name>]
+ [--shared[=<permissions>]] [<directory>]
not ok 297 - init-db -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.298 'interpret-trailers -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 298 - interpret-trailers -h output has no \t
expecting success of 0450.299 'interpret-trailers -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 299 - interpret-trailers -h output has dashed labels
expecting success of 0450.300 'interpret-trailers -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 300 - interpret-trailers -h output has consistent spacing
expecting success of 0450.301 'interpret-trailers *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 301 - interpret-trailers *.txt SYNOPSIS has dashed labels
expecting success of 0450.302 'interpret-trailers -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 302 - interpret-trailers -h output and SYNOPSIS agree
expecting success of 0450.303 'log -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 303 - log -h output has no \t
expecting success of 0450.304 'log -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 304 - log -h output has dashed labels
expecting success of 0450.305 'log -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 305 - log -h output has consistent spacing
expecting success of 0450.306 'log *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 306 - log *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.307 'log -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:49.593203447 +0000
+++ help 2023-10-09 02:17:49.597203425 +0000
@@ -1 +1,2 @@
git log [<options>] [<revision-range>] [[--] <path>...]
+git show [<options>] <object>...
not ok 307 - log -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.308 'ls-files -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 308 - ls-files -h output has no \t
expecting success of 0450.309 'ls-files -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 309 - ls-files -h output has dashed labels
expecting success of 0450.310 'ls-files -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 310 - ls-files -h output has consistent spacing
expecting success of 0450.311 'ls-files *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 311 - ls-files *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.312 'ls-files -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:49.633203223 +0000
+++ help 2023-10-09 02:17:49.637203201 +0000
@@ -1,13 +1 @@
-git ls-files [-z] [-t] [-v] [-f]
- [-c|--cached] [-d|--deleted] [-o|--others] [-i|--ignored]
- [-s|--stage] [-u|--unmerged] [-k|--killed] [-m|--modified]
- [--resolve-undo]
- [--directory [--no-empty-directory]] [--eol]
- [--deduplicate]
- [-x <pattern>|--exclude=<pattern>]
- [-X <file>|--exclude-from=<file>]
- [--exclude-per-directory=<file>]
- [--exclude-standard]
- [--error-unmatch] [--with-tree=<tree-ish>]
- [--full-name] [--recurse-submodules]
- [--abbrev[=<n>]] [--format=<format>] [--] [<file>...]
+git ls-files [<options>] [<file>...]
not ok 312 - ls-files -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.313 'ls-remote -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 313 - ls-remote -h output has no \t
expecting success of 0450.314 'ls-remote -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 314 - ls-remote -h output has dashed labels
expecting success of 0450.315 'ls-remote -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 315 - ls-remote -h output has consistent spacing
expecting success of 0450.316 'ls-remote *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 316 - ls-remote *.txt SYNOPSIS has dashed labels
expecting success of 0450.317 'ls-remote -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 317 - ls-remote -h output and SYNOPSIS agree
expecting success of 0450.318 'ls-tree -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 318 - ls-tree -h output has no \t
expecting success of 0450.319 'ls-tree -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 319 - ls-tree -h output has dashed labels
expecting success of 0450.320 'ls-tree -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 320 - ls-tree -h output has consistent spacing
expecting success of 0450.321 'ls-tree *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 321 - ls-tree *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.322 'ls-tree -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:49.701202842 +0000
+++ help 2023-10-09 02:17:49.705202819 +0000
@@ -1,3 +1 @@
-git ls-tree [-d] [-r] [-t] [-l] [-z]
- [--name-only] [--name-status] [--object-only] [--full-name] [--full-tree] [--abbrev[=<n>]] [--format=<format>]
- <tree-ish> [<path>...]
+git ls-tree [<options>] <tree-ish> [<path>...]
not ok 322 - ls-tree -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.323 'mailinfo -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 323 - mailinfo -h output has no \t
expecting success of 0450.324 'mailinfo -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 324 - mailinfo -h output has dashed labels
expecting success of 0450.325 'mailinfo -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 325 - mailinfo -h output has consistent spacing
expecting success of 0450.326 'mailinfo *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 326 - mailinfo *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.327 'mailinfo -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:49.737202640 +0000
+++ help 2023-10-09 02:17:49.741202617 +0000
@@ -1,3 +1 @@
-git mailinfo [-k|-b] [-u | --encoding=<encoding> | -n]
- [--[no-]scissors] [--quoted-cr=<action>]
- <msg> <patch>
+git mailinfo [<options>] <msg> <patch> < mail >info
not ok 327 - mailinfo -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.328 'mailsplit -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 328 - mailsplit -h output has no \t
expecting success of 0450.329 'mailsplit -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 329 - mailsplit -h output has dashed labels
expecting success of 0450.330 'mailsplit -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 330 - mailsplit -h output has consistent spacing
expecting success of 0450.331 'mailsplit *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 331 - mailsplit *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.332 'mailsplit -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:49.769202460 +0000
+++ help 2023-10-09 02:17:49.773202438 +0000
@@ -1,2 +1 @@
-git mailsplit [-b] [-f<nn>] [-d<prec>] [--keep-cr] [--mboxrd]
- -o<directory> [--] [(<mbox>|<Maildir>)...]
+git mailsplit [-d<prec>] [-f<n>] [-b] [--keep-cr] -o<directory> [(<mbox>|<Maildir>)...]
not ok 332 - mailsplit -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.333 'maintenance -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 333 - maintenance -h output has no \t
expecting success of 0450.334 'maintenance -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 334 - maintenance -h output has dashed labels
expecting success of 0450.335 'maintenance -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 335 - maintenance -h output has consistent spacing
expecting success of 0450.336 'maintenance *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 336 - maintenance *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.337 'maintenance -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:49.817202191 +0000
+++ help 2023-10-09 02:17:49.821202169 +0000
@@ -1,3 +1 @@
-git maintenance run [<options>]
-git maintenance start [--scheduler=<scheduler>]
-git maintenance (stop|register|unregister) [<options>]
+git maintenance <subcommand> [<options>]
not ok 337 - maintenance -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.338 'merge -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 338 - merge -h output has no \t
expecting success of 0450.339 'merge -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 339 - merge -h output has dashed labels
expecting success of 0450.340 'merge -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 340 - merge -h output has consistent spacing
expecting success of 0450.341 'merge *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 341 - merge *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.342 'merge -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:49.861201945 +0000
+++ help 2023-10-09 02:17:49.865201922 +0000
@@ -1,6 +1,3 @@
-git merge [-n] [--stat] [--no-commit] [--squash] [--[no-]edit]
- [--no-verify] [-s <strategy>] [-X <strategy-option>] [-S[<keyid>]]
- [--[no-]allow-unrelated-histories]
- [--[no-]rerere-autoupdate] [-m <msg>] [-F <file>]
- [--into-name <branch>] [<commit>...]
-git merge (--continue | --abort | --quit)
+git merge [<options>] [<commit>...]
+git merge --abort
+git merge --continue
not ok 342 - merge -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.343 'merge-base -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 343 - merge-base -h output has no \t
expecting success of 0450.344 'merge-base -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 344 - merge-base -h output has dashed labels
expecting success of 0450.345 'merge-base -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 345 - merge-base -h output has consistent spacing
expecting success of 0450.346 'merge-base *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 346 - merge-base *.txt SYNOPSIS has dashed labels
expecting success of 0450.347 'merge-base -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 347 - merge-base -h output and SYNOPSIS agree
expecting success of 0450.348 'merge-file -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 348 - merge-file -h output has no \t
expecting success of 0450.349 'merge-file -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 349 - merge-file -h output has dashed labels
expecting success of 0450.350 'merge-file -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 350 - merge-file -h output has consistent spacing
expecting success of 0450.351 'merge-file *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 351 - merge-file *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.352 'merge-file -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:49.937201518 +0000
+++ help 2023-10-09 02:17:49.941201496 +0000
@@ -1,3 +1 @@
-git merge-file [-L <current-name> [-L <base-name> [-L <other-name>]]]
- [--ours|--theirs|--union] [-p|--stdout] [-q|--quiet] [--marker-size=<n>]
- [--[no-]diff3] <current-file> <base-file> <other-file>
+git merge-file [<options>] [-L <name1> [-L <orig> [-L <name2>]]] <file1> <orig-file> <file2>
not ok 352 - merge-file -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.353 'merge-index -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 353 - merge-index -h output has no \t
expecting success of 0450.354 'merge-index -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 354 - merge-index -h output has dashed labels
expecting success of 0450.355 'merge-index -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 355 - merge-index -h output has consistent spacing
expecting success of 0450.356 'merge-index *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 356 - merge-index *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.357 'merge-index -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:49.981201272 +0000
+++ help 2023-10-09 02:17:49.985201249 +0000
@@ -1 +1 @@
-git merge-index [-o] [-q] <merge-program> (-a | ( [--] <file>...) )
+git merge-index [-o] [-q] <merge-program> (-a | [--] [<filename>...])
not ok 357 - merge-index -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.358 'merge-ours -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 358 - merge-ours -h output has no \t
expecting success of 0450.359 'merge-ours -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 359 - merge-ours -h output has dashed labels
expecting success of 0450.360 'merge-ours -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 360 - merge-ours -h output has consistent spacing
ok 361 # skip merge-ours *.txt SYNOPSIS has dashed labels (missing BUILTIN_TXT_MERGE_OURS)
ok 362 # skip merge-ours -h output and SYNOPSIS agree (missing BUILTIN_TXT_MERGE_OURS)
expecting success of 0450.363 'merge-recursive -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 363 - merge-recursive -h output has no \t
expecting success of 0450.364 'merge-recursive -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 364 - merge-recursive -h output has dashed labels
expecting success of 0450.365 'merge-recursive -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 365 - merge-recursive -h output has consistent spacing
ok 366 # skip merge-recursive *.txt SYNOPSIS has dashed labels (missing BUILTIN_TXT_MERGE_RECURSIVE)
ok 367 # skip merge-recursive -h output and SYNOPSIS agree (missing BUILTIN_TXT_MERGE_RECURSIVE)
expecting success of 0450.368 'merge-recursive-ours -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 368 - merge-recursive-ours -h output has no \t
expecting success of 0450.369 'merge-recursive-ours -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 369 - merge-recursive-ours -h output has dashed labels
expecting success of 0450.370 'merge-recursive-ours -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 370 - merge-recursive-ours -h output has consistent spacing
ok 371 # skip merge-recursive-ours *.txt SYNOPSIS has dashed labels (missing BUILTIN_TXT_MERGE_RECURSIVE_OURS)
ok 372 # skip merge-recursive-ours -h output and SYNOPSIS agree (missing BUILTIN_TXT_MERGE_RECURSIVE_OURS)
expecting success of 0450.373 'merge-recursive-theirs -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 373 - merge-recursive-theirs -h output has no \t
expecting success of 0450.374 'merge-recursive-theirs -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 374 - merge-recursive-theirs -h output has dashed labels
expecting success of 0450.375 'merge-recursive-theirs -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 375 - merge-recursive-theirs -h output has consistent spacing
ok 376 # skip merge-recursive-theirs *.txt SYNOPSIS has dashed labels (missing BUILTIN_TXT_MERGE_RECURSIVE_THEIRS)
ok 377 # skip merge-recursive-theirs -h output and SYNOPSIS agree (missing BUILTIN_TXT_MERGE_RECURSIVE_THEIRS)
expecting success of 0450.378 'merge-subtree -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 378 - merge-subtree -h output has no \t
expecting success of 0450.379 'merge-subtree -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 379 - merge-subtree -h output has dashed labels
expecting success of 0450.380 'merge-subtree -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 380 - merge-subtree -h output has consistent spacing
ok 381 # skip merge-subtree *.txt SYNOPSIS has dashed labels (missing BUILTIN_TXT_MERGE_SUBTREE)
ok 382 # skip merge-subtree -h output and SYNOPSIS agree (missing BUILTIN_TXT_MERGE_SUBTREE)
expecting success of 0450.383 'merge-tree -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 383 - merge-tree -h output has no \t
expecting success of 0450.384 'merge-tree -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 384 - merge-tree -h output has dashed labels
expecting success of 0450.385 'merge-tree -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 385 - merge-tree -h output has consistent spacing
expecting success of 0450.386 'merge-tree *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 386 - merge-tree *.txt SYNOPSIS has dashed labels
expecting success of 0450.387 'merge-tree -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 387 - merge-tree -h output and SYNOPSIS agree
expecting success of 0450.388 'mktag -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 388 - mktag -h output has no \t
expecting success of 0450.389 'mktag -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 389 - mktag -h output has dashed labels
expecting success of 0450.390 'mktag -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 390 - mktag -h output has consistent spacing
expecting success of 0450.391 'mktag *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 391 - mktag *.txt SYNOPSIS has dashed labels
expecting success of 0450.392 'mktag -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 392 - mktag -h output and SYNOPSIS agree
expecting success of 0450.393 'mktree -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 393 - mktree -h output has no \t
expecting success of 0450.394 'mktree -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 394 - mktree -h output has dashed labels
expecting success of 0450.395 'mktree -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 395 - mktree -h output has consistent spacing
expecting success of 0450.396 'mktree *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 396 - mktree *.txt SYNOPSIS has dashed labels
expecting success of 0450.397 'mktree -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 397 - mktree -h output and SYNOPSIS agree
expecting success of 0450.398 'multi-pack-index -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 398 - multi-pack-index -h output has no \t
expecting success of 0450.399 'multi-pack-index -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 399 - multi-pack-index -h output has dashed labels
expecting success of 0450.400 'multi-pack-index -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 400 - multi-pack-index -h output has consistent spacing
expecting success of 0450.401 'multi-pack-index *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 401 - multi-pack-index *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.402 'multi-pack-index -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:50.261199702 +0000
+++ help 2023-10-09 02:17:50.265199679 +0000
@@ -1 +1,4 @@
-git multi-pack-index [--object-dir=<dir>] [--[no-]bitmap] <sub-command>
+git multi-pack-index [<options>] write [--preferred-pack=<pack>][--refs-snapshot=<path>]
+git multi-pack-index [<options>] verify
+git multi-pack-index [<options>] expire
+git multi-pack-index [<options>] repack [--batch-size=<size>]
not ok 402 - multi-pack-index -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.403 'mv -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 403 - mv -h output has no \t
expecting success of 0450.404 'mv -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 404 - mv -h output has dashed labels
expecting success of 0450.405 'mv -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 405 - mv -h output has consistent spacing
expecting success of 0450.406 'mv *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 406 - mv *.txt SYNOPSIS has dashed labels
expecting success of 0450.407 'mv -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 407 - mv -h output and SYNOPSIS agree
expecting success of 0450.408 'name-rev -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 408 - name-rev -h output has no \t
expecting success of 0450.409 'name-rev -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 409 - name-rev -h output has dashed labels
expecting success of 0450.410 'name-rev -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 410 - name-rev -h output has consistent spacing
expecting success of 0450.411 'name-rev *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 411 - name-rev *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.412 'name-rev -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:50.349199208 +0000
+++ help 2023-10-09 02:17:50.353199186 +0000
@@ -1,2 +1,3 @@
-git name-rev [--tags] [--refs=<pattern>]
- ( --all | --annotate-stdin | <commit-ish>... )
+git name-rev [<options>] <commit>...
+git name-rev [<options>] --all
+git name-rev [<options>] --annotate-stdin
not ok 412 - name-rev -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.413 'notes -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 413 - notes -h output has no \t
expecting success of 0450.414 'notes -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 414 - notes -h output has dashed labels
expecting success of 0450.415 'notes -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 415 - notes -h output has consistent spacing
expecting success of 0450.416 'notes *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 416 - notes *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.417 'notes -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:50.385199006 +0000
+++ help 2023-10-09 02:17:50.389198984 +0000
@@ -1,12 +1,12 @@
-git notes [list [<object>]]
-git notes add [-f] [--allow-empty] [--[no-]separator | --separator=<paragraph-break>] [--[no-]stripspace] [-F <file> | -m <msg> | (-c | -C) <object>] [<object>]
-git notes copy [-f] ( --stdin | <from-object> [<to-object>] )
-git notes append [--allow-empty] [--[no-]separator | --separator=<paragraph-break>] [--[no-]stripspace] [-F <file> | -m <msg> | (-c | -C) <object>] [<object>]
-git notes edit [--allow-empty] [<object>] [--[no-]stripspace]
-git notes show [<object>]
-git notes merge [-v | -q] [-s <strategy> ] <notes-ref>
+git notes [--ref <notes-ref>] [list [<object>]]
+git notes [--ref <notes-ref>] add [-f] [--allow-empty] [--[no-]separator|--separator=<paragraph-break>] [--[no-]stripspace] [-m <msg> | -F <file> | (-c | -C) <object>] [<object>]
+git notes [--ref <notes-ref>] copy [-f] <from-object> <to-object>
+git notes [--ref <notes-ref>] append [--allow-empty] [--[no-]separator|--separator=<paragraph-break>] [--[no-]stripspace] [-m <msg> | -F <file> | (-c | -C) <object>] [<object>]
+git notes [--ref <notes-ref>] edit [--allow-empty] [<object>]
+git notes [--ref <notes-ref>] show [<object>]
+git notes [--ref <notes-ref>] merge [-v | -q] [-s <strategy>] <notes-ref>
git notes merge --commit [-v | -q]
git notes merge --abort [-v | -q]
-git notes remove [--ignore-missing] [--stdin] [<object>...]
-git notes prune [-n] [-v]
-git notes get-ref
+git notes [--ref <notes-ref>] remove [<object>...]
+git notes [--ref <notes-ref>] prune [-n] [-v]
+git notes [--ref <notes-ref>] get-ref
not ok 417 - notes -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.418 'pack-objects -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 418 - pack-objects -h output has no \t
expecting success of 0450.419 'pack-objects -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 419 - pack-objects -h output has dashed labels
expecting success of 0450.420 'pack-objects -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 420 - pack-objects -h output has consistent spacing
expecting success of 0450.421 'pack-objects *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 421 - pack-objects *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.422 'pack-objects -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:50.429198759 +0000
+++ help 2023-10-09 02:17:50.433198737 +0000
@@ -1,7 +1,2 @@
-git pack-objects [-q | --progress | --all-progress] [--all-progress-implied]
- [--no-reuse-delta] [--delta-base-offset] [--non-empty]
- [--local] [--incremental] [--window=<n>] [--depth=<n>]
- [--revs [--unpacked | --all]] [--keep-pack=<pack-name>]
- [--cruft] [--cruft-expiration=<time>]
- [--stdout [--filter=<filter-spec>] | <base-name>]
- [--shallow] [--keep-true-parents] [--[no-]sparse] < <object-list>
+git pack-objects --stdout [<options>] [< <ref-list> | < <object-list>]
+git pack-objects [<options>] <base-name> [< <ref-list> | < <object-list>]
not ok 422 - pack-objects -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.423 'pack-redundant -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 423 - pack-redundant -h output has no \t
expecting success of 0450.424 'pack-redundant -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 424 - pack-redundant -h output has dashed labels
expecting success of 0450.425 'pack-redundant -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 425 - pack-redundant -h output has consistent spacing
expecting success of 0450.426 'pack-redundant *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 426 - pack-redundant *.txt SYNOPSIS has dashed labels
expecting success of 0450.427 'pack-redundant -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 427 - pack-redundant -h output and SYNOPSIS agree
expecting success of 0450.428 'pack-refs -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 428 - pack-refs -h output has no \t
expecting success of 0450.429 'pack-refs -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 429 - pack-refs -h output has dashed labels
expecting success of 0450.430 'pack-refs -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 430 - pack-refs -h output has consistent spacing
expecting success of 0450.431 'pack-refs *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 431 - pack-refs *.txt SYNOPSIS has dashed labels
expecting success of 0450.432 'pack-refs -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 432 - pack-refs -h output and SYNOPSIS agree
expecting success of 0450.433 'patch-id -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 433 - patch-id -h output has no \t
expecting success of 0450.434 'patch-id -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 434 - patch-id -h output has dashed labels
expecting success of 0450.435 'patch-id -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 435 - patch-id -h output has consistent spacing
expecting success of 0450.436 'patch-id *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 436 - patch-id *.txt SYNOPSIS has dashed labels
expecting success of 0450.437 'patch-id -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 437 - patch-id -h output and SYNOPSIS agree
expecting success of 0450.438 'pickaxe -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 438 - pickaxe -h output has no \t
expecting success of 0450.439 'pickaxe -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 439 - pickaxe -h output has dashed labels
expecting success of 0450.440 'pickaxe -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 440 - pickaxe -h output has consistent spacing
ok 441 # skip pickaxe *.txt SYNOPSIS has dashed labels (missing BUILTIN_TXT_PICKAXE)
ok 442 # skip pickaxe -h output and SYNOPSIS agree (missing BUILTIN_TXT_PICKAXE)
expecting success of 0450.443 'prune -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 443 - prune -h output has no \t
expecting success of 0450.444 'prune -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 444 - prune -h output has dashed labels
expecting success of 0450.445 'prune -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 445 - prune -h output has consistent spacing
expecting success of 0450.446 'prune *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 446 - prune *.txt SYNOPSIS has dashed labels
expecting success of 0450.447 'prune -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 447 - prune -h output and SYNOPSIS agree
expecting success of 0450.448 'prune-packed -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 448 - prune-packed -h output has no \t
expecting success of 0450.449 'prune-packed -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 449 - prune-packed -h output has dashed labels
expecting success of 0450.450 'prune-packed -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 450 - prune-packed -h output has consistent spacing
expecting success of 0450.451 'prune-packed *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 451 - prune-packed *.txt SYNOPSIS has dashed labels
expecting success of 0450.452 'prune-packed -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 452 - prune-packed -h output and SYNOPSIS agree
expecting success of 0450.453 'pull -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 453 - pull -h output has no \t
expecting success of 0450.454 'pull -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 454 - pull -h output has dashed labels
expecting success of 0450.455 'pull -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 455 - pull -h output has consistent spacing
expecting success of 0450.456 'pull *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 456 - pull *.txt SYNOPSIS has dashed labels
expecting success of 0450.457 'pull -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 457 - pull -h output and SYNOPSIS agree
expecting success of 0450.458 'push -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 458 - push -h output has no \t
expecting success of 0450.459 'push -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 459 - push -h output has dashed labels
expecting success of 0450.460 'push -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 460 - push -h output has consistent spacing
expecting success of 0450.461 'push *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 461 - push *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.462 'push -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:50.733197055 +0000
+++ help 2023-10-09 02:17:50.737197032 +0000
@@ -1,6 +1 @@
-git push [--all | --branches | --mirror | --tags] [--follow-tags] [--atomic] [-n | --dry-run] [--receive-pack=<git-receive-pack>]
- [--repo=<repository>] [-f | --force] [-d | --delete] [--prune] [-v | --verbose]
- [-u | --set-upstream] [-o <string> | --push-option=<string>]
- [--[no-]signed|--signed=(true|false|if-asked)]
- [--force-with-lease[=<refname>[:<expect>]] [--force-if-includes]]
- [--no-verify] [<repository> [<refspec>...]]
+git push [<options>] [<repository> [<refspec>...]]
not ok 462 - push -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.463 'range-diff -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 463 - range-diff -h output has no \t
expecting success of 0450.464 'range-diff -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 464 - range-diff -h output has dashed labels
expecting success of 0450.465 'range-diff -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 465 - range-diff -h output has consistent spacing
expecting success of 0450.466 'range-diff *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 466 - range-diff *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.467 'range-diff -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:50.773196830 +0000
+++ help 2023-10-09 02:17:50.777196808 +0000
@@ -1,5 +1,3 @@
-git range-diff [--color=[<when>]] [--no-color] [<diff-options>]
- [--no-dual-color] [--creation-factor=<factor>]
- [--left-only | --right-only]
- ( <range1> <range2> | <rev1>...<rev2> | <base> <rev1> <rev2> )
- [[--] <path>...]
+git range-diff [<options>] <old-base>..<old-tip> <new-base>..<new-tip>
+git range-diff [<options>] <old-tip>...<new-tip>
+git range-diff [<options>] <base> <old-tip> <new-tip>
not ok 467 - range-diff -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.468 'read-tree -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 468 - read-tree -h output has no \t
expecting success of 0450.469 'read-tree -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 469 - read-tree -h output has dashed labels
expecting success of 0450.470 'read-tree -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 470 - read-tree -h output has consistent spacing
expecting success of 0450.471 'read-tree *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 471 - read-tree *.txt SYNOPSIS has dashed labels
expecting success of 0450.472 'read-tree -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 472 - read-tree -h output and SYNOPSIS agree
expecting success of 0450.473 'rebase -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 473 - rebase -h output has no \t
expecting success of 0450.474 'rebase -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 474 - rebase -h output has dashed labels
expecting success of 0450.475 'rebase -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 475 - rebase -h output has consistent spacing
expecting success of 0450.476 'rebase *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 476 - rebase *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.477 'rebase -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:50.861196337 +0000
+++ help 2023-10-09 02:17:50.865196315 +0000
@@ -1,5 +1,3 @@
-git rebase [-i | --interactive] [<options>] [--exec <cmd>]
- [--onto <newbase> | --keep-base] [<upstream> [<branch>]]
-git rebase [-i | --interactive] [<options>] [--exec <cmd>] [--onto <newbase>]
- --root [<branch>]
-git rebase (--continue | --skip | --abort | --quit | --edit-todo | --show-current-patch)
+git rebase [-i] [options] [--exec <cmd>] [--onto <newbase> | --keep-base] [<upstream> [<branch>]]
+git rebase [-i] [options] [--exec <cmd>] [--onto <newbase>] --root [<branch>]
+git rebase --continue | --abort | --skip | --edit-todo
not ok 477 - rebase -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.478 'receive-pack -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 478 - receive-pack -h output has no \t
expecting success of 0450.479 'receive-pack -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 479 - receive-pack -h output has dashed labels
expecting success of 0450.480 'receive-pack -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 480 - receive-pack -h output has consistent spacing
expecting success of 0450.481 'receive-pack *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 481 - receive-pack *.txt SYNOPSIS has dashed labels
expecting success of 0450.482 'receive-pack -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 482 - receive-pack -h output and SYNOPSIS agree
expecting success of 0450.483 'reflog -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 483 - reflog -h output has no \t
expecting success of 0450.484 'reflog -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 484 - reflog -h output has dashed labels
expecting success of 0450.485 'reflog -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 485 - reflog -h output has consistent spacing
expecting success of 0450.486 'reflog *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 486 - reflog *.txt SYNOPSIS has dashed labels
expecting success of 0450.487 'reflog -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 487 - reflog -h output and SYNOPSIS agree
expecting success of 0450.488 'remote -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 488 - remote -h output has no \t
expecting success of 0450.489 'remote -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 489 - remote -h output has dashed labels
expecting success of 0450.490 'remote -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 490 - remote -h output has consistent spacing
expecting success of 0450.491 'remote *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 491 - remote *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.492 'remote -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:50.985195642 +0000
+++ help 2023-10-09 02:17:50.989195619 +0000
@@ -1,13 +1,13 @@
git remote [-v | --verbose]
-git remote add [-t <branch>] [-m <master>] [-f] [--[no-]tags] [--mirror=(fetch|push)] <name> <URL>
+git remote add [-t <branch>] [-m <master>] [-f] [--tags | --no-tags] [--mirror=<fetch|push>] <name> <url>
git remote rename [--[no-]progress] <old> <new>
git remote remove <name>
git remote set-head <name> (-a | --auto | -d | --delete | <branch>)
+git remote [-v | --verbose] show [-n] <name>
+git remote prune [-n | --dry-run] <name>
+git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)...]
git remote set-branches [--add] <name> <branch>...
git remote get-url [--push] [--all] <name>
git remote set-url [--push] <name> <newurl> [<oldurl>]
-git remote set-url --add [--push] <name> <newurl>
-git remote set-url --delete [--push] <name> <URL>
-git remote [-v | --verbose] 'show' [-n] <name>...
-git remote prune [-n | --dry-run] <name>...
-git remote [-v | --verbose] 'update' [-p | --prune] [(<group> | <remote>)...]
+git remote set-url --add <name> <newurl>
+git remote set-url --delete <name> <url>
not ok 492 - remote -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.493 'remote-ext -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 493 - remote-ext -h output has no \t
expecting success of 0450.494 'remote-ext -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 494 - remote-ext -h output has dashed labels
expecting success of 0450.495 'remote-ext -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 495 - remote-ext -h output has consistent spacing
expecting success of 0450.496 'remote-ext *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 496 - remote-ext *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.497 'remote-ext -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:51.025195417 +0000
+++ help 2023-10-09 02:17:51.029195395 +0000
@@ -1 +1 @@
-git remote add <nick> "ext::<command>[ <arguments>...]"
+git remote-ext <remote> <url>
not ok 497 - remote-ext -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.498 'remote-fd -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 498 - remote-fd -h output has no \t
expecting success of 0450.499 'remote-fd -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 499 - remote-fd -h output has dashed labels
expecting success of 0450.500 'remote-fd -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 500 - remote-fd -h output has consistent spacing
expecting success of 0450.501 'remote-fd *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 501 - remote-fd *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.502 'remote-fd -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:51.065195193 +0000
+++ help 2023-10-09 02:17:51.073195148 +0000
@@ -0,0 +1 @@
+git remote-fd <remote> <url>
not ok 502 - remote-fd -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.503 'repack -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 503 - repack -h output has no \t
expecting success of 0450.504 'repack -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 504 - repack -h output has dashed labels
expecting success of 0450.505 'repack -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 505 - repack -h output has consistent spacing
expecting success of 0450.506 'repack *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 506 - repack *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.507 'repack -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:51.105194969 +0000
+++ help 2023-10-09 02:17:51.109194946 +0000
@@ -1 +1 @@
-git repack [-a] [-A] [-d] [-f] [-F] [-l] [-n] [-q] [-b] [-m] [--window=<n>] [--depth=<n>] [--threads=<n>] [--keep-pack=<pack-name>] [--write-midx]
+git repack [<options>]
not ok 507 - repack -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.508 'replace -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 508 - replace -h output has no \t
expecting success of 0450.509 'replace -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 509 - replace -h output has dashed labels
expecting success of 0450.510 'replace -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 510 - replace -h output has consistent spacing
expecting success of 0450.511 'replace *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 511 - replace *.txt SYNOPSIS has dashed labels
expecting success of 0450.512 'replace -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 512 - replace -h output and SYNOPSIS agree
expecting success of 0450.513 'rerere -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 513 - rerere -h output has no \t
expecting success of 0450.514 'rerere -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 514 - rerere -h output has dashed labels
expecting success of 0450.515 'rerere -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 515 - rerere -h output has consistent spacing
expecting success of 0450.516 'rerere *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 516 - rerere *.txt SYNOPSIS has dashed labels
expecting success of 0450.517 'rerere -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 517 - rerere -h output and SYNOPSIS agree
expecting success of 0450.518 'reset -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 518 - reset -h output has no \t
expecting success of 0450.519 'reset -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 519 - reset -h output has dashed labels
expecting success of 0450.520 'reset -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 520 - reset -h output has consistent spacing
expecting success of 0450.521 'reset *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 521 - reset *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.522 'reset -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:51.229194273 +0000
+++ help 2023-10-09 02:17:51.233194251 +0000
@@ -1,4 +1,4 @@
+git reset [--mixed | --soft | --hard | --merge | --keep] [-q] [<commit>]
git reset [-q] [<tree-ish>] [--] <pathspec>...
-git reset [-q] [--pathspec-from-file=<file> [--pathspec-file-nul]] [<tree-ish>]
-git reset (--patch | -p) [<tree-ish>] [--] [<pathspec>...]
-git reset [--soft | --mixed [-N] | --hard | --merge | --keep] [-q] [<commit>]
+git reset [-q] [--pathspec-from-file [--pathspec-file-nul]] [<tree-ish>]
+git reset --patch [<tree-ish>] [--] [<pathspec>...]
not ok 522 - reset -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.523 'restore -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 523 - restore -h output has no \t
expecting success of 0450.524 'restore -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 524 - restore -h output has dashed labels
expecting success of 0450.525 'restore -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 525 - restore -h output has consistent spacing
expecting success of 0450.526 'restore *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 526 - restore *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.527 'restore -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:51.269194049 +0000
+++ help 2023-10-09 02:17:51.273194027 +0000
@@ -1,3 +1 @@
-git restore [<options>] [--source=<tree>] [--staged] [--worktree] [--] <pathspec>...
-git restore [<options>] [--source=<tree>] [--staged] [--worktree] --pathspec-from-file=<file> [--pathspec-file-nul]
-git restore (-p|--patch) [<options>] [--source=<tree>] [--staged] [--worktree] [--] [<pathspec>...]
+git restore [<options>] [--source=<branch>] <file>...
not ok 527 - restore -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.528 'rev-list -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 528 - rev-list -h output has no \t
expecting success of 0450.529 'rev-list -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 529 - rev-list -h output has dashed labels
expecting success of 0450.530 'rev-list -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 530 - rev-list -h output has consistent spacing
expecting success of 0450.531 'rev-list *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 531 - rev-list *.txt SYNOPSIS has dashed labels
expecting success of 0450.532 'rev-list -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 532 - rev-list -h output and SYNOPSIS agree
expecting success of 0450.533 'rev-parse -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 533 - rev-parse -h output has no \t
expecting success of 0450.534 'rev-parse -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 534 - rev-parse -h output has dashed labels
expecting success of 0450.535 'rev-parse -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 535 - rev-parse -h output has consistent spacing
expecting success of 0450.536 'rev-parse *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 536 - rev-parse *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.537 'rev-parse -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:51.353193578 +0000
+++ help 2023-10-09 02:17:51.357193555 +0000
@@ -1 +1,3 @@
-git rev-parse [<options>] <args>...
+git rev-parse --parseopt [<options>] -- [<args>...]
+git rev-parse --sq-quote [<arg>...]
+git rev-parse [<options>] [<arg>...]
not ok 537 - rev-parse -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.538 'revert -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 538 - revert -h output has no \t
expecting success of 0450.539 'revert -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 539 - revert -h output has dashed labels
expecting success of 0450.540 'revert -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 540 - revert -h output has consistent spacing
expecting success of 0450.541 'revert *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 541 - revert *.txt SYNOPSIS has dashed labels
expecting success of 0450.542 'revert -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 542 - revert -h output and SYNOPSIS agree
expecting success of 0450.543 'rm -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 543 - rm -h output has no \t
expecting success of 0450.544 'rm -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 544 - rm -h output has dashed labels
expecting success of 0450.545 'rm -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 545 - rm -h output has consistent spacing
expecting success of 0450.546 'rm *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 546 - rm *.txt SYNOPSIS has dashed labels
expecting success of 0450.547 'rm -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 547 - rm -h output and SYNOPSIS agree
expecting success of 0450.548 'send-pack -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 548 - send-pack -h output has no \t
expecting success of 0450.549 'send-pack -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 549 - send-pack -h output has dashed labels
expecting success of 0450.550 'send-pack -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 550 - send-pack -h output has consistent spacing
expecting success of 0450.551 'send-pack *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 551 - send-pack *.txt SYNOPSIS has dashed labels
expecting success of 0450.552 'send-pack -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 552 - send-pack -h output and SYNOPSIS agree
expecting success of 0450.553 'shortlog -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 553 - shortlog -h output has no \t
expecting success of 0450.554 'shortlog -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 554 - shortlog -h output has dashed labels
expecting success of 0450.555 'shortlog -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 555 - shortlog -h output has consistent spacing
expecting success of 0450.556 'shortlog *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 556 - shortlog *.txt SYNOPSIS has dashed labels
expecting success of 0450.557 'shortlog -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 557 - shortlog -h output and SYNOPSIS agree
expecting success of 0450.558 'show -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 558 - show -h output has no \t
expecting success of 0450.559 'show -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 559 - show -h output has dashed labels
expecting success of 0450.560 'show -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 560 - show -h output has consistent spacing
expecting success of 0450.561 'show *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 561 - show *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.562 'show -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:51.557192434 +0000
+++ help 2023-10-09 02:17:51.565192389 +0000
@@ -1 +1,2 @@
-git show [<options>] [<object>...]
+git log [<options>] [<revision-range>] [[--] <path>...]
+git show [<options>] <object>...
not ok 562 - show -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.563 'show-branch -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 563 - show-branch -h output has no \t
expecting success of 0450.564 'show-branch -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 564 - show-branch -h output has dashed labels
expecting success of 0450.565 'show-branch -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 565 - show-branch -h output has consistent spacing
expecting success of 0450.566 'show-branch *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 566 - show-branch *.txt SYNOPSIS has dashed labels
expecting success of 0450.567 'show-branch -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 567 - show-branch -h output and SYNOPSIS agree
expecting success of 0450.568 'show-index -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 568 - show-index -h output has no \t
expecting success of 0450.569 'show-index -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 569 - show-index -h output has dashed labels
expecting success of 0450.570 'show-index -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 570 - show-index -h output has consistent spacing
expecting success of 0450.571 'show-index *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 571 - show-index *.txt SYNOPSIS has dashed labels
expecting success of 0450.572 'show-index -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 572 - show-index -h output and SYNOPSIS agree
expecting success of 0450.573 'show-ref -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 573 - show-ref -h output has no \t
expecting success of 0450.574 'show-ref -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 574 - show-ref -h output has dashed labels
expecting success of 0450.575 'show-ref -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 575 - show-ref -h output has consistent spacing
expecting success of 0450.576 'show-ref *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 576 - show-ref *.txt SYNOPSIS has dashed labels
expecting success of 0450.577 'show-ref -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 577 - show-ref -h output and SYNOPSIS agree
expecting success of 0450.578 'sparse-checkout -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 578 - sparse-checkout -h output has no \t
expecting success of 0450.579 'sparse-checkout -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 579 - sparse-checkout -h output has dashed labels
expecting success of 0450.580 'sparse-checkout -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 580 - sparse-checkout -h output has consistent spacing
expecting success of 0450.581 'sparse-checkout *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 581 - sparse-checkout *.txt SYNOPSIS has dashed labels
expecting success of 0450.582 'sparse-checkout -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 582 - sparse-checkout -h output and SYNOPSIS agree
expecting success of 0450.583 'stage -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 583 - stage -h output has no \t
expecting success of 0450.584 'stage -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 584 - stage -h output has dashed labels
expecting success of 0450.585 'stage -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 585 - stage -h output has consistent spacing
expecting success of 0450.586 'stage *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 586 - stage *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.587 'stage -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:51.757191312 +0000
+++ help 2023-10-09 02:17:51.761191290 +0000
@@ -1 +1 @@
-git stage <arg>...
+git add [<options>] [--] <pathspec>...
not ok 587 - stage -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.588 'stash -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 588 - stash -h output has no \t
expecting success of 0450.589 'stash -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 589 - stash -h output has dashed labels
expecting success of 0450.590 'stash -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 590 - stash -h output has consistent spacing
expecting success of 0450.591 'stash *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 591 - stash *.txt SYNOPSIS has dashed labels
expecting success of 0450.592 'stash -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 592 - stash -h output and SYNOPSIS agree
expecting success of 0450.593 'status -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 593 - status -h output has no \t
expecting success of 0450.594 'status -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 594 - status -h output has dashed labels
expecting success of 0450.595 'status -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 595 - status -h output has consistent spacing
expecting success of 0450.596 'status *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 596 - status *.txt SYNOPSIS has dashed labels
expecting success of 0450.597 'status -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 597 - status -h output and SYNOPSIS agree
expecting success of 0450.598 'stripspace -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 598 - stripspace -h output has no \t
expecting success of 0450.599 'stripspace -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 599 - stripspace -h output has dashed labels
expecting success of 0450.600 'stripspace -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 600 - stripspace -h output has consistent spacing
expecting success of 0450.601 'stripspace *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 601 - stripspace *.txt SYNOPSIS has dashed labels
expecting success of 0450.602 'stripspace -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 602 - stripspace -h output and SYNOPSIS agree
expecting success of 0450.603 'submodule--helper -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 603 - submodule--helper -h output has no \t
expecting success of 0450.604 'submodule--helper -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 604 - submodule--helper -h output has dashed labels
expecting success of 0450.605 'submodule--helper -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 605 - submodule--helper -h output has consistent spacing
ok 606 # skip submodule--helper *.txt SYNOPSIS has dashed labels (missing BUILTIN_TXT_SUBMODULE__HELPER)
ok 607 # skip submodule--helper -h output and SYNOPSIS agree (missing BUILTIN_TXT_SUBMODULE__HELPER)
expecting success of 0450.608 'switch -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 608 - switch -h output has no \t
expecting success of 0450.609 'switch -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 609 - switch -h output has dashed labels
expecting success of 0450.610 'switch -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 610 - switch -h output has consistent spacing
expecting success of 0450.611 'switch *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 611 - switch *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.612 'switch -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:51.953190213 +0000
+++ help 2023-10-09 02:17:51.957190191 +0000
@@ -1,4 +1 @@
-git switch [<options>] [--no-guess] <branch>
-git switch [<options>] --detach [<start-point>]
-git switch [<options>] (-c|-C) <new-branch> [<start-point>]
-git switch [<options>] --orphan <new-branch>
+git switch [<options>] [<branch>]
not ok 612 - switch -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.613 'symbolic-ref -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 613 - symbolic-ref -h output has no \t
expecting success of 0450.614 'symbolic-ref -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 614 - symbolic-ref -h output has dashed labels
expecting success of 0450.615 'symbolic-ref -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 615 - symbolic-ref -h output has consistent spacing
expecting success of 0450.616 'symbolic-ref *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 616 - symbolic-ref *.txt SYNOPSIS has dashed labels
expecting success of 0450.617 'symbolic-ref -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 617 - symbolic-ref -h output and SYNOPSIS agree
expecting success of 0450.618 'tag -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 618 - tag -h output has no \t
expecting success of 0450.619 'tag -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 619 - tag -h output has dashed labels
expecting success of 0450.620 'tag -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 620 - tag -h output has consistent spacing
expecting success of 0450.621 'tag *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 621 - tag *.txt SYNOPSIS has dashed labels
expecting success of 0450.622 'tag -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 622 - tag -h output and SYNOPSIS agree
expecting success of 0450.623 'unpack-file -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 623 - unpack-file -h output has no \t
expecting success of 0450.624 'unpack-file -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 624 - unpack-file -h output has dashed labels
expecting success of 0450.625 'unpack-file -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 625 - unpack-file -h output has consistent spacing
expecting success of 0450.626 'unpack-file *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 626 - unpack-file *.txt SYNOPSIS has dashed labels
expecting success of 0450.627 'unpack-file -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 627 - unpack-file -h output and SYNOPSIS agree
expecting success of 0450.628 'unpack-objects -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 628 - unpack-objects -h output has no \t
expecting success of 0450.629 'unpack-objects -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 629 - unpack-objects -h output has dashed labels
expecting success of 0450.630 'unpack-objects -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 630 - unpack-objects -h output has consistent spacing
expecting success of 0450.631 'unpack-objects *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 631 - unpack-objects *.txt SYNOPSIS has dashed labels
expecting success of 0450.632 'unpack-objects -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 632 - unpack-objects -h output and SYNOPSIS agree
expecting success of 0450.633 'update-index -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 633 - update-index -h output has no \t
expecting success of 0450.634 'update-index -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 634 - update-index -h output has dashed labels
expecting success of 0450.635 'update-index -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 635 - update-index -h output has consistent spacing
expecting success of 0450.636 'update-index *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 636 - update-index *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.637 'update-index -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:52.157189069 +0000
+++ help 2023-10-09 02:17:52.165189024 +0000
@@ -1,18 +1 @@
-git update-index
- [--add] [--remove | --force-remove] [--replace]
- [--refresh] [-q] [--unmerged] [--ignore-missing]
- [(--cacheinfo <mode>,<object>,<file>)...]
- [--chmod=(+|-)x]
- [--[no-]assume-unchanged]
- [--[no-]skip-worktree]
- [--[no-]ignore-skip-worktree-entries]
- [--[no-]fsmonitor-valid]
- [--ignore-submodules]
- [--[no-]split-index]
- [--[no-|test-|force-]untracked-cache]
- [--[no-]fsmonitor]
- [--really-refresh] [--unresolve] [--again | -g]
- [--info-only] [--index-info]
- [-z] [--stdin] [--index-version <n>]
- [--verbose]
- [--] [<file>...]
+git update-index [<options>] [--] [<file>...]
not ok 637 - update-index -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.638 'update-ref -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 638 - update-ref -h output has no \t
expecting success of 0450.639 'update-ref -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 639 - update-ref -h output has dashed labels
expecting success of 0450.640 'update-ref -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 640 - update-ref -h output has consistent spacing
expecting success of 0450.641 'update-ref *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 641 - update-ref *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.642 'update-ref -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:52.201188822 +0000
+++ help 2023-10-09 02:17:52.205188800 +0000
@@ -1 +1,3 @@
-git update-ref [-m <reason>] [--no-deref] (-d <ref> [<oldvalue>] | [--create-reflog] <ref> <newvalue> [<oldvalue>] | --stdin [-z])
+git update-ref [<options>] -d <refname> [<old-val>]
+git update-ref [<options>] <refname> <new-val> [<old-val>]
+git update-ref [<options>] --stdin [-z]
not ok 642 - update-ref -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.643 'update-server-info -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 643 - update-server-info -h output has no \t
expecting success of 0450.644 'update-server-info -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 644 - update-server-info -h output has dashed labels
expecting success of 0450.645 'update-server-info -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 645 - update-server-info -h output has consistent spacing
expecting success of 0450.646 'update-server-info *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 646 - update-server-info *.txt SYNOPSIS has dashed labels
expecting success of 0450.647 'update-server-info -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 647 - update-server-info -h output and SYNOPSIS agree
expecting success of 0450.648 'upload-archive -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 648 - upload-archive -h output has no \t
expecting success of 0450.649 'upload-archive -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 649 - upload-archive -h output has dashed labels
expecting success of 0450.650 'upload-archive -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 650 - upload-archive -h output has consistent spacing
expecting success of 0450.651 'upload-archive *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 651 - upload-archive *.txt SYNOPSIS has dashed labels
expecting success of 0450.652 'upload-archive -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 652 - upload-archive -h output and SYNOPSIS agree
expecting success of 0450.653 'upload-archive--writer -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 653 - upload-archive--writer -h output has no \t
expecting success of 0450.654 'upload-archive--writer -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 654 - upload-archive--writer -h output has dashed labels
expecting success of 0450.655 'upload-archive--writer -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 655 - upload-archive--writer -h output has consistent spacing
ok 656 # skip upload-archive--writer *.txt SYNOPSIS has dashed labels (missing BUILTIN_TXT_UPLOAD_ARCHIVE__WRITER)
ok 657 # skip upload-archive--writer -h output and SYNOPSIS agree (missing BUILTIN_TXT_UPLOAD_ARCHIVE__WRITER)
expecting success of 0450.658 'upload-pack -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 658 - upload-pack -h output has no \t
expecting success of 0450.659 'upload-pack -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 659 - upload-pack -h output has dashed labels
expecting success of 0450.660 'upload-pack -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 660 - upload-pack -h output has consistent spacing
expecting success of 0450.661 'upload-pack *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 661 - upload-pack *.txt SYNOPSIS has dashed labels
expecting success of 0450.662 'upload-pack -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 662 - upload-pack -h output and SYNOPSIS agree
expecting success of 0450.663 'var -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 663 - var -h output has no \t
expecting success of 0450.664 'var -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 664 - var -h output has dashed labels
expecting success of 0450.665 'var -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 665 - var -h output has consistent spacing
expecting success of 0450.666 'var *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 666 - var *.txt SYNOPSIS has dashed labels
expecting success of 0450.667 'var -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 667 - var -h output and SYNOPSIS agree
expecting success of 0450.668 'verify-commit -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 668 - verify-commit -h output has no \t
expecting success of 0450.669 'verify-commit -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 669 - verify-commit -h output has dashed labels
expecting success of 0450.670 'verify-commit -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 670 - verify-commit -h output has consistent spacing
expecting success of 0450.671 'verify-commit *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 671 - verify-commit *.txt SYNOPSIS has dashed labels
expecting success of 0450.672 'verify-commit -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 672 - verify-commit -h output and SYNOPSIS agree
expecting success of 0450.673 'verify-pack -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 673 - verify-pack -h output has no \t
expecting success of 0450.674 'verify-pack -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 674 - verify-pack -h output has dashed labels
expecting success of 0450.675 'verify-pack -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 675 - verify-pack -h output has consistent spacing
expecting success of 0450.676 'verify-pack *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 676 - verify-pack *.txt SYNOPSIS has dashed labels
expecting success of 0450.677 'verify-pack -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 677 - verify-pack -h output and SYNOPSIS agree
expecting success of 0450.678 'verify-tag -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 678 - verify-tag -h output has no \t
expecting success of 0450.679 'verify-tag -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 679 - verify-tag -h output has dashed labels
expecting success of 0450.680 'verify-tag -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 680 - verify-tag -h output has consistent spacing
expecting success of 0450.681 'verify-tag *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 681 - verify-tag *.txt SYNOPSIS has dashed labels
expecting success of 0450.682 'verify-tag -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 682 - verify-tag -h output and SYNOPSIS agree
expecting success of 0450.683 'version -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 683 - version -h output has no \t
expecting success of 0450.684 'version -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 684 - version -h output has dashed labels
expecting success of 0450.685 'version -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 685 - version -h output has consistent spacing
expecting success of 0450.686 'version *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 686 - version *.txt SYNOPSIS has dashed labels
expecting success of 0450.687 'version -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 687 - version -h output and SYNOPSIS agree
expecting success of 0450.688 'whatchanged -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 688 - whatchanged -h output has no \t
expecting success of 0450.689 'whatchanged -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 689 - whatchanged -h output has dashed labels
expecting success of 0450.690 'whatchanged -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 690 - whatchanged -h output has consistent spacing
expecting success of 0450.691 'whatchanged *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 691 - whatchanged *.txt SYNOPSIS has dashed labels
checking known breakage of 0450.692 'whatchanged -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
--- txt 2023-10-09 02:17:52.657186265 +0000
+++ help 2023-10-09 02:17:52.661186243 +0000
@@ -1 +1,2 @@
-git whatchanged <option>...
+git log [<options>] [<revision-range>] [[--] <path>...]
+git show [<options>] <object>...
not ok 692 - whatchanged -h output and SYNOPSIS agree # TODO known breakage
expecting success of 0450.693 'worktree -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 693 - worktree -h output has no \t
expecting success of 0450.694 'worktree -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 694 - worktree -h output has dashed labels
expecting success of 0450.695 'worktree -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 695 - worktree -h output has consistent spacing
expecting success of 0450.696 'worktree *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 696 - worktree *.txt SYNOPSIS has dashed labels
expecting success of 0450.697 'worktree -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 697 - worktree -h output and SYNOPSIS agree
expecting success of 0450.698 'write-tree -h output has no \t':
h2s="$(help_to_synopsis "$builtin")" &&
! grep "$HT" "$h2s"
ok 698 - write-tree -h output has no \t
expecting success of 0450.699 'write-tree -h output has dashed labels':
check_dashed_labels "$(help_to_synopsis "$builtin")"
ok 699 - write-tree -h output has dashed labels
expecting success of 0450.700 'write-tree -h output has consistent spacing':
h2s="$(help_to_synopsis "$builtin")" &&
sed -n \
-e "/^ / {
s/[^ ].*//;
p;
}" \
<"$h2s" >help &&
sort -u help >help.ws &&
if test -s help.ws
then
test_line_count = 1 help.ws
fi
ok 700 - write-tree -h output has consistent spacing
expecting success of 0450.701 'write-tree *.txt SYNOPSIS has dashed labels':
check_dashed_labels "$(txt_to_synopsis "$builtin")"
ok 701 - write-tree *.txt SYNOPSIS has dashed labels
expecting success of 0450.702 'write-tree -h output and SYNOPSIS agree':
t2s="$(txt_to_synopsis "$builtin")" &&
if test "$builtin" = "merge-tree"
then
test_when_finished "rm -f t2s.new" &&
sed -e 's/ (deprecated)$//g' <"$t2s" >t2s.new
t2s=t2s.new
fi &&
h2s="$(help_to_synopsis "$builtin")" &&
# The *.txt and -h use different spacing for the
# alignment of continued usage output, normalize it.
align_after_nl "$builtin" <"$t2s" >txt &&
align_after_nl "$builtin" <"$h2s" >help &&
test_cmp txt help
ok 702 - write-tree -h output and SYNOPSIS agree
# still have 57 known breakage(s)
# passed all remaining 645 test(s)
1..702
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1005-read-tree-reset.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1005-read-tree-reset/.git/
expecting success of 1005.1 'setup':
git init &&
mkdir df &&
echo content >df/file &&
git add df/file &&
git commit -m one &&
git ls-files >expect &&
rm -rf df &&
echo content >df &&
git add df &&
echo content >new &&
git add new &&
git commit -m two
Reinitialized existing Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1005-read-tree-reset/.git/
[master (root-commit) 92e0c46] one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 df/file
[master 12f5e11] two
Author: A U Thor <author@example.com>
2 files changed, 1 insertion(+)
rename df/file => df (100%)
create mode 100644 new
ok 1 - setup
expecting success of 1005.2 'reset should work':
read_tree_u_must_succeed -u --reset HEAD^ &&
git ls-files >actual &&
test_cmp expect actual
ok 2 - reset should work
expecting success of 1005.3 'reset should remove remnants from a failed merge':
read_tree_u_must_succeed --reset -u HEAD &&
git ls-files -s >expect &&
sha1=$(git rev-parse :new) &&
(
echo "100644 $sha1 1 old" &&
echo "100644 $sha1 3 old"
) | git update-index --index-info &&
>old &&
git ls-files -s &&
read_tree_u_must_succeed --reset -u HEAD &&
git ls-files -s >actual &&
! test -f old &&
test_cmp expect actual
100644 d95f3ad14dee633a758d2e331151e950dd13e4ed 0 df
100644 d95f3ad14dee633a758d2e331151e950dd13e4ed 0 new
100644 d95f3ad14dee633a758d2e331151e950dd13e4ed 1 old
100644 d95f3ad14dee633a758d2e331151e950dd13e4ed 3 old
ok 3 - reset should remove remnants from a failed merge
expecting success of 1005.4 'two-way reset should remove remnants too':
read_tree_u_must_succeed --reset -u HEAD &&
git ls-files -s >expect &&
sha1=$(git rev-parse :new) &&
(
echo "100644 $sha1 1 old" &&
echo "100644 $sha1 3 old"
) | git update-index --index-info &&
>old &&
git ls-files -s &&
read_tree_u_must_succeed --reset -u HEAD HEAD &&
git ls-files -s >actual &&
! test -f old &&
test_cmp expect actual
100644 d95f3ad14dee633a758d2e331151e950dd13e4ed 0 df
100644 d95f3ad14dee633a758d2e331151e950dd13e4ed 0 new
100644 d95f3ad14dee633a758d2e331151e950dd13e4ed 1 old
100644 d95f3ad14dee633a758d2e331151e950dd13e4ed 3 old
ok 4 - two-way reset should remove remnants too
expecting success of 1005.5 'Porcelain reset should remove remnants too':
read_tree_u_must_succeed --reset -u HEAD &&
git ls-files -s >expect &&
sha1=$(git rev-parse :new) &&
(
echo "100644 $sha1 1 old" &&
echo "100644 $sha1 3 old"
) | git update-index --index-info &&
>old &&
git ls-files -s &&
git reset --hard &&
git ls-files -s >actual &&
! test -f old &&
test_cmp expect actual
100644 d95f3ad14dee633a758d2e331151e950dd13e4ed 0 df
100644 d95f3ad14dee633a758d2e331151e950dd13e4ed 0 new
100644 d95f3ad14dee633a758d2e331151e950dd13e4ed 1 old
100644 d95f3ad14dee633a758d2e331151e950dd13e4ed 3 old
HEAD is now at 12f5e11 two
ok 5 - Porcelain reset should remove remnants too
expecting success of 1005.6 'Porcelain checkout -f should remove remnants too':
read_tree_u_must_succeed --reset -u HEAD &&
git ls-files -s >expect &&
sha1=$(git rev-parse :new) &&
(
echo "100644 $sha1 1 old" &&
echo "100644 $sha1 3 old"
) | git update-index --index-info &&
>old &&
git ls-files -s &&
git checkout -f &&
git ls-files -s >actual &&
! test -f old &&
test_cmp expect actual
100644 d95f3ad14dee633a758d2e331151e950dd13e4ed 0 df
100644 d95f3ad14dee633a758d2e331151e950dd13e4ed 0 new
100644 d95f3ad14dee633a758d2e331151e950dd13e4ed 1 old
100644 d95f3ad14dee633a758d2e331151e950dd13e4ed 3 old
ok 6 - Porcelain checkout -f should remove remnants too
expecting success of 1005.7 'Porcelain checkout -f HEAD should remove remnants too':
read_tree_u_must_succeed --reset -u HEAD &&
git ls-files -s >expect &&
sha1=$(git rev-parse :new) &&
(
echo "100644 $sha1 1 old" &&
echo "100644 $sha1 3 old"
) | git update-index --index-info &&
>old &&
git ls-files -s &&
git checkout -f HEAD &&
git ls-files -s >actual &&
! test -f old &&
test_cmp expect actual
100644 d95f3ad14dee633a758d2e331151e950dd13e4ed 0 df
100644 d95f3ad14dee633a758d2e331151e950dd13e4ed 0 new
100644 d95f3ad14dee633a758d2e331151e950dd13e4ed 1 old
100644 d95f3ad14dee633a758d2e331151e950dd13e4ed 3 old
ok 7 - Porcelain checkout -f HEAD should remove remnants too
# passed all 7 test(s)
1..7
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1008-read-tree-overlay.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1008-read-tree-overlay/.git/
expecting success of 1008.1 'setup':
echo one >a &&
git add a &&
git commit -m initial &&
git tag initial &&
echo two >b &&
git add b &&
git commit -m second &&
git checkout -b side initial &&
echo three >a &&
mkdir b &&
echo four >b/c &&
git add b/c &&
git commit -m third
[main (root-commit) 4d54ff5] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 a
[main a9fb064] second
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 b
Switched to a new branch 'side'
[side 2be041c] third
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 b/c
ok 1 - setup
expecting success of 1008.2 'multi-read':
read_tree_must_succeed initial main side &&
test_write_lines a b/c >expect &&
git ls-files >actual &&
test_cmp expect actual
ok 2 - multi-read
# passed all 2 test(s)
1..2
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1009-read-tree-new-index.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1009-read-tree-new-index/.git/
expecting success of 1009.1 'setup':
echo one >a &&
git add a &&
git commit -m initial
[main (root-commit) 4d54ff5] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 a
ok 1 - setup
expecting success of 1009.2 'non-existent index file':
rm -f new-index &&
GIT_INDEX_FILE=new-index git read-tree main
ok 2 - non-existent index file
expecting success of 1009.3 'empty index file':
rm -f new-index &&
> new-index &&
GIT_INDEX_FILE=new-index git read-tree main
ok 3 - empty index file
# passed all 3 test(s)
1..3
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1007-hash-object.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1007-hash-object/.git/
expecting success of 1007.1 'setup':
setup_repo &&
test_oid_cache <<-EOF
hello sha1:5e1c309dae7f45e0f39b1bf3ac3cd9db12e7d689
hello sha256:1e3b6c04d2eeb2b3e45c8a330445404c0b7cc7b257e2b097167d26f5230090c4
example sha1:ddd3f836d3e3fbb7ae289aa9ae83536f76956399
example sha256:b44fe1fe65589848253737db859bd490453510719d7424daab03daf0767b85ae
EOF
ok 1 - setup
expecting success of 1007.2 'multiple '--stdin's are rejected':
echo example | test_must_fail git hash-object --stdin --stdin
error: Multiple --stdin arguments are not supported
usage: git hash-object [-t <type>] [-w] [--path=<file> | --no-filters]
[--stdin [--literally]] [--] <file>...
or: git hash-object [-t <type>] [-w] --stdin-paths [--no-filters]
-t <type> object type
-w write the object into the object database
--stdin read the object from stdin
--stdin-paths read file names from stdin
--no-filters store file as is without filters
--literally just hash any random garbage to create corrupt objects for debugging Git
--path <file> process file as it were from this path
ok 2 - multiple '--stdin's are rejected
expecting success of 1007.3 'Can't use --stdin and --stdin-paths together':
echo example | test_must_fail git hash-object --stdin --stdin-paths &&
echo example | test_must_fail git hash-object --stdin-paths --stdin
error: Can't use --stdin-paths with --stdin
usage: git hash-object [-t <type>] [-w] [--path=<file> | --no-filters]
[--stdin [--literally]] [--] <file>...
or: git hash-object [-t <type>] [-w] --stdin-paths [--no-filters]
-t <type> object type
-w write the object into the object database
--stdin read the object from stdin
--stdin-paths read file names from stdin
--no-filters store file as is without filters
--literally just hash any random garbage to create corrupt objects for debugging Git
--path <file> process file as it were from this path
error: Can't use --stdin-paths with --stdin
usage: git hash-object [-t <type>] [-w] [--path=<file> | --no-filters]
[--stdin [--literally]] [--] <file>...
or: git hash-object [-t <type>] [-w] --stdin-paths [--no-filters]
-t <type> object type
-w write the object into the object database
--stdin read the object from stdin
--stdin-paths read file names from stdin
--no-filters store file as is without filters
--literally just hash any random garbage to create corrupt objects for debugging Git
--path <file> process file as it were from this path
ok 3 - Can't use --stdin and --stdin-paths together
expecting success of 1007.4 'Can't pass filenames as arguments with --stdin-paths':
echo example | test_must_fail git hash-object --stdin-paths hello
error: Can't specify files with --stdin-paths
usage: git hash-object [-t <type>] [-w] [--path=<file> | --no-filters]
[--stdin [--literally]] [--] <file>...
or: git hash-object [-t <type>] [-w] --stdin-paths [--no-filters]
-t <type> object type
-w write the object into the object database
--stdin read the object from stdin
--stdin-paths read file names from stdin
--no-filters store file as is without filters
--literally just hash any random garbage to create corrupt objects for debugging Git
--path <file> process file as it were from this path
ok 4 - Can't pass filenames as arguments with --stdin-paths
expecting success of 1007.5 'Can't use --path with --stdin-paths':
echo example | test_must_fail git hash-object --stdin-paths --path=foo
error: Can't use --stdin-paths with --path
usage: git hash-object [-t <type>] [-w] [--path=<file> | --no-filters]
[--stdin [--literally]] [--] <file>...
or: git hash-object [-t <type>] [-w] --stdin-paths [--no-filters]
-t <type> object type
-w write the object into the object database
--stdin read the object from stdin
--stdin-paths read file names from stdin
--no-filters store file as is without filters
--literally just hash any random garbage to create corrupt objects for debugging Git
--path <file> process file as it were from this path
ok 5 - Can't use --path with --stdin-paths
expecting success of 1007.6 'Can't use --path with --no-filters':
test_must_fail git hash-object --no-filters --path=foo
error: Can't use --path with --no-filters
usage: git hash-object [-t <type>] [-w] [--path=<file> | --no-filters]
[--stdin [--literally]] [--] <file>...
or: git hash-object [-t <type>] [-w] --stdin-paths [--no-filters]
-t <type> object type
-w write the object into the object database
--stdin read the object from stdin
--stdin-paths read file names from stdin
--no-filters store file as is without filters
--literally just hash any random garbage to create corrupt objects for debugging Git
--path <file> process file as it were from this path
ok 6 - Can't use --path with --no-filters
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1007-hash-object/test/.git/
expecting success of 1007.7 'hash a file':
test "$(test_oid hello)" = $(git hash-object hello)
ok 7 - hash a file
expecting success of 1007.8 'blob does not exist in database':
test_must_fail git cat-file blob 5e1c309dae7f45e0f39b1bf3ac3cd9db12e7d689
fatal: git cat-file 5e1c309dae7f45e0f39b1bf3ac3cd9db12e7d689: bad file
ok 8 - blob does not exist in database
expecting success of 1007.9 'hash from stdin':
test "$(test_oid example)" = $(git hash-object --stdin < example)
ok 9 - hash from stdin
expecting success of 1007.10 'blob does not exist in database':
test_must_fail git cat-file blob ddd3f836d3e3fbb7ae289aa9ae83536f76956399
fatal: git cat-file ddd3f836d3e3fbb7ae289aa9ae83536f76956399: bad file
ok 10 - blob does not exist in database
expecting success of 1007.11 'hash a file and write to database':
test "$(test_oid hello)" = $(git hash-object -w hello)
ok 11 - hash a file and write to database
expecting success of 1007.12 'blob exists in database':
git cat-file blob 5e1c309dae7f45e0f39b1bf3ac3cd9db12e7d689
Hello Worldok 12 - blob exists in database
expecting success of 1007.13 'git hash-object --stdin file1 <file0 first operates on file0, then file1':
echo foo > file1 &&
obname0=$(echo bar | git hash-object --stdin) &&
obname1=$(git hash-object file1) &&
obname0new=$(echo bar | git hash-object --stdin file1 | sed -n -e 1p) &&
obname1new=$(echo bar | git hash-object --stdin file1 | sed -n -e 2p) &&
test "$obname0" = "$obname0new" &&
test "$obname1" = "$obname1new"
ok 13 - git hash-object --stdin file1 <file0 first operates on file0, then file1
expecting success of 1007.14 'set up crlf tests':
echo fooQ | tr Q "\\015" >file0 &&
cp file0 file1 &&
echo "file0 -crlf" >.gitattributes &&
echo "file1 crlf" >>.gitattributes &&
git config core.autocrlf true &&
file0_sha=$(git hash-object file0) &&
file1_sha=$(git hash-object file1) &&
test "$file0_sha" != "$file1_sha"
ok 14 - set up crlf tests
expecting success of 1007.15 'check that appropriate filter is invoke when --path is used':
path1_sha=$(git hash-object --path=file1 file0) &&
path0_sha=$(git hash-object --path=file0 file1) &&
test "$file0_sha" = "$path0_sha" &&
test "$file1_sha" = "$path1_sha" &&
path1_sha=$(cat file0 | git hash-object --path=file1 --stdin) &&
path0_sha=$(cat file1 | git hash-object --path=file0 --stdin) &&
test "$file0_sha" = "$path0_sha" &&
test "$file1_sha" = "$path1_sha"
ok 15 - check that appropriate filter is invoke when --path is used
expecting success of 1007.16 'gitattributes also work in a subdirectory':
mkdir subdir &&
(
cd subdir &&
subdir_sha0=$(git hash-object ../file0) &&
subdir_sha1=$(git hash-object ../file1) &&
test "$file0_sha" = "$subdir_sha0" &&
test "$file1_sha" = "$subdir_sha1"
)
ok 16 - gitattributes also work in a subdirectory
expecting success of 1007.17 '--path works in a subdirectory':
(
cd subdir &&
path1_sha=$(git hash-object --path=../file1 ../file0) &&
path0_sha=$(git hash-object --path=../file0 ../file1) &&
test "$file0_sha" = "$path0_sha" &&
test "$file1_sha" = "$path1_sha"
)
ok 17 - --path works in a subdirectory
expecting success of 1007.18 'check that --no-filters option works':
nofilters_file1=$(git hash-object --no-filters file1) &&
test "$file0_sha" = "$nofilters_file1" &&
nofilters_file1=$(cat file1 | git hash-object --stdin) &&
test "$file0_sha" = "$nofilters_file1"
ok 18 - check that --no-filters option works
expecting success of 1007.19 'check that --no-filters option works with --stdin-paths':
nofilters_file1=$(echo "file1" | git hash-object --stdin-paths --no-filters) &&
test "$file0_sha" = "$nofilters_file1"
ok 19 - check that --no-filters option works with --stdin-paths
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1007-hash-object/test/.git/
expecting success of 1007.20 'hash from stdin and write to database (-w --stdin)':
test "$(test_oid example)" = $(git hash-object $args < example)
ok 20 - hash from stdin and write to database (-w --stdin)
expecting success of 1007.21 'blob exists in database':
git cat-file blob ddd3f836d3e3fbb7ae289aa9ae83536f76956399
This is an exampleok 21 - blob exists in database
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1007-hash-object/test/.git/
expecting success of 1007.22 'hash from stdin and write to database (--stdin -w)':
test "$(test_oid example)" = $(git hash-object $args < example)
ok 22 - hash from stdin and write to database (--stdin -w)
expecting success of 1007.23 'blob exists in database':
git cat-file blob ddd3f836d3e3fbb7ae289aa9ae83536f76956399
This is an exampleok 23 - blob exists in database
expecting success of 1007.24 'hash two files with names on stdin':
test "$oids" = "$(echo_without_newline "$filenames" | git hash-object --stdin-paths)"
ok 24 - hash two files with names on stdin
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1007-hash-object/test/.git/
expecting success of 1007.25 'hash two files with names on stdin and write to database (-w --stdin-paths)':
test "$oids" = "$(echo_without_newline "$filenames" | git hash-object $args)"
ok 25 - hash two files with names on stdin and write to database (-w --stdin-paths)
expecting success of 1007.26 'blob exists in database':
git cat-file blob 5e1c309dae7f45e0f39b1bf3ac3cd9db12e7d689
Hello Worldok 26 - blob exists in database
expecting success of 1007.27 'blob exists in database':
git cat-file blob ddd3f836d3e3fbb7ae289aa9ae83536f76956399
This is an exampleok 27 - blob exists in database
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1007-hash-object/test/.git/
expecting success of 1007.28 'hash two files with names on stdin and write to database (--stdin-paths -w)':
test "$oids" = "$(echo_without_newline "$filenames" | git hash-object $args)"
ok 28 - hash two files with names on stdin and write to database (--stdin-paths -w)
expecting success of 1007.29 'blob exists in database':
git cat-file blob 5e1c309dae7f45e0f39b1bf3ac3cd9db12e7d689
Hello Worldok 29 - blob exists in database
expecting success of 1007.30 'blob exists in database':
git cat-file blob ddd3f836d3e3fbb7ae289aa9ae83536f76956399
This is an exampleok 30 - blob exists in database
expecting success of 1007.31 'too-short tree':
echo abc >malformed-tree &&
test_must_fail git hash-object -t tree malformed-tree 2>err &&
grep "too-short tree object" err
error: too-short tree object
ok 31 - too-short tree
expecting success of 1007.32 'malformed mode in tree':
hex_oid=$(echo foo | git hash-object --stdin -w) &&
bin_oid=$(echo $hex_oid | hex2oct) &&
printf "9100644 \0$bin_oid" >tree-with-malformed-mode &&
test_must_fail git hash-object -t tree tree-with-malformed-mode 2>err &&
grep "malformed mode in tree entry" err
error: malformed mode in tree entry
ok 32 - malformed mode in tree
expecting success of 1007.33 'empty filename in tree':
hex_oid=$(echo foo | git hash-object --stdin -w) &&
bin_oid=$(echo $hex_oid | hex2oct) &&
printf "100644 \0$bin_oid" >tree-with-empty-filename &&
test_must_fail git hash-object -t tree tree-with-empty-filename 2>err &&
grep "empty filename in tree entry" err
error: empty filename in tree entry
ok 33 - empty filename in tree
expecting success of 1007.34 'duplicate filename in tree':
hex_oid=$(echo foo | git hash-object --stdin -w) &&
bin_oid=$(echo $hex_oid | hex2oct) &&
{
printf "100644 file\0$bin_oid" &&
printf "100644 file\0$bin_oid"
} >tree-with-duplicate-filename &&
test_must_fail git hash-object -t tree tree-with-duplicate-filename 2>err &&
grep "duplicateEntries" err
error: object fails fsck: duplicateEntries: contains duplicate file entries
ok 34 - duplicate filename in tree
expecting success of 1007.35 'corrupt commit':
test_must_fail git hash-object -t commit --stdin </dev/null
error: object fails fsck: unterminatedHeader: unterminated header
fatal: refusing to create malformed object
ok 35 - corrupt commit
expecting success of 1007.36 'corrupt tag':
test_must_fail git hash-object -t tag --stdin </dev/null
error: object fails fsck: unterminatedHeader: unterminated header
fatal: refusing to create malformed object
ok 36 - corrupt tag
expecting success of 1007.37 'hash-object complains about bogus type name':
test_must_fail git hash-object -t bogus --stdin </dev/null
fatal: invalid object type "bogus"
ok 37 - hash-object complains about bogus type name
expecting success of 1007.38 'hash-object complains about truncated type name':
test_must_fail git hash-object -t bl --stdin </dev/null
fatal: invalid object type "bl"
ok 38 - hash-object complains about truncated type name
expecting success of 1007.39 '--literally':
t=1234567890 &&
echo example | git hash-object -t $t --literally --stdin
f78b23c3f872d473c764d5fcf4fb39af8bbf2123
ok 39 - --literally
expecting success of 1007.40 '--literally with extra-long type':
t=12345678901234567890123456789012345678901234567890 &&
t="$t$t$t$t$t$t$t$t$t$t$t$t$t$t$t$t$t$t$t$t$t$t$t$t$t$t$t$t$t$t" &&
echo example | git hash-object -t $t --literally --stdin
2a881776ee43e849175ee7158075560ca0ae7692
ok 40 - --literally with extra-long type
# passed all 40 test(s)
1..40
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1010-mktree.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1010-mktree/.git/
expecting success of 1010.1 'setup':
for d in a a- a0
do
mkdir "$d" && echo "$d/one" >"$d/one" &&
git add "$d" || return 1
done &&
echo zero >one &&
git update-index --add --info-only one &&
git write-tree --missing-ok >tree.missing &&
git ls-tree $(cat tree.missing) >top.missing &&
git ls-tree -r $(cat tree.missing) >all.missing &&
echo one >one &&
git add one &&
git write-tree >tree &&
git ls-tree $(cat tree) >top &&
git ls-tree -r $(cat tree) >all &&
test_tick &&
git commit -q -m one &&
H=$(git rev-parse HEAD) &&
git update-index --add --cacheinfo 160000 $H sub &&
test_tick &&
git commit -q -m two &&
git rev-parse HEAD^{tree} >tree.withsub &&
git ls-tree HEAD >top.withsub &&
git ls-tree -r HEAD >all.withsub
ok 1 - setup
expecting success of 1010.2 'ls-tree piped to mktree (1)':
git mktree <top >actual &&
test_cmp tree actual
ok 2 - ls-tree piped to mktree (1)
expecting success of 1010.3 'ls-tree piped to mktree (2)':
git mktree <top.withsub >actual &&
test_cmp tree.withsub actual
ok 3 - ls-tree piped to mktree (2)
expecting success of 1010.4 'ls-tree output in wrong order given to mktree (1)':
perl -e "print reverse <>" <top |
git mktree >actual &&
test_cmp tree actual
ok 4 - ls-tree output in wrong order given to mktree (1)
expecting success of 1010.5 'ls-tree output in wrong order given to mktree (2)':
perl -e "print reverse <>" <top.withsub |
git mktree >actual &&
test_cmp tree.withsub actual
ok 5 - ls-tree output in wrong order given to mktree (2)
expecting success of 1010.6 'allow missing object with --missing':
git mktree --missing <top.missing >actual &&
test_cmp tree.missing actual
ok 6 - allow missing object with --missing
expecting success of 1010.7 'mktree refuses to read ls-tree -r output (1)':
test_must_fail git mktree <all
fatal: path a-/one contains slash
ok 7 - mktree refuses to read ls-tree -r output (1)
expecting success of 1010.8 'mktree refuses to read ls-tree -r output (2)':
test_must_fail git mktree <all.withsub
fatal: path a-/one contains slash
ok 8 - mktree refuses to read ls-tree -r output (2)
# passed all 8 test(s)
1..8
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1012-read-tree-df.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1012-read-tree-df/.git/
expecting success of 1012.1 'setup':
maketree O-000 a/b-2/c/d a/b/c/d a/x &&
maketree A-000 a/b-2/c/d a/b/c/d a/x &&
maketree A-001 a/b-2/c/d a/b/c/d a/b/c/e a/x &&
maketree B-000 a/b-2/c/d a/b a/x &&
maketree O-010 t-0 t/1 t/2 t=3 &&
maketree A-010 t-0 t t=3 &&
maketree B-010 t/1: t=3: &&
maketree O-020 ds/dma/ioat.c ds/dma/ioat_dca.c &&
maketree A-020 ds/dma/ioat/Makefile ds/dma/ioat/registers.h &&
:
ok 1 - setup
expecting success of 1012.2 '3-way (1)':
settree A-000 &&
read_tree_u_must_succeed -m -u O-000 A-000 B-000 &&
checkindex <<-EOF
3 a/b
0 a/b-2/c/d
1 a/b/c/d
2 a/b/c/d
0 a/x
EOF
ok 2 - 3-way (1)
expecting success of 1012.3 '3-way (2)':
settree A-001 &&
read_tree_u_must_succeed -m -u O-000 A-001 B-000 &&
checkindex <<-EOF
3 a/b
0 a/b-2/c/d
1 a/b/c/d
2 a/b/c/d
2 a/b/c/e
0 a/x
EOF
ok 3 - 3-way (2)
expecting success of 1012.4 '3-way (3)':
settree A-010 &&
read_tree_u_must_succeed -m -u O-010 A-010 B-010 &&
checkindex <<-EOF
2 t
1 t-0
2 t-0
1 t/1
3 t/1
1 t/2
0 t=3
EOF
ok 4 - 3-way (3)
expecting success of 1012.5 '2-way (1)':
settree O-020 &&
read_tree_u_must_succeed -m -u O-020 A-020 &&
checkindex <<-EOF
0 ds/dma/ioat/Makefile
0 ds/dma/ioat/registers.h
EOF
ok 5 - 2-way (1)
# passed all 5 test(s)
1..5
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1011-read-tree-sparse-checkout.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1011-read-tree-sparse-checkout/.git/
expecting success of 1011.1 'setup':
test_commit init &&
echo modified >>init.t &&
cat >expected <<-EOF &&
100644 $(git hash-object init.t) 0 init.t
100644 $EMPTY_BLOB 0 sub/added
100644 $EMPTY_BLOB 0 sub/addedtoo
100644 $EMPTY_BLOB 0 subsub/added
EOF
cat >expected.swt <<-\EOF &&
H init.t
H sub/added
H sub/addedtoo
H subsub/added
EOF
mkdir sub subsub &&
touch sub/added sub/addedtoo subsub/added &&
git add init.t sub/added sub/addedtoo subsub/added &&
git commit -m "modified and added" &&
git tag top &&
git rm sub/added &&
git commit -m removed &&
git tag removed &&
git checkout top &&
git ls-files --stage >result &&
test_cmp expected result
[master (root-commit) 2519212] init
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 init.t
[master 9598e22] modified and added
Author: A U Thor <author@example.com>
4 files changed, 1 insertion(+)
create mode 100644 sub/added
create mode 100644 sub/addedtoo
create mode 100644 subsub/added
rm 'sub/added'
[master de70956] removed
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
delete mode 100644 sub/added
Note: switching to 'top'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 9598e22 modified and added
ok 1 - setup
expecting success of 1011.2 'read-tree without .git/info/sparse-checkout':
read_tree_u_must_succeed -m -u HEAD &&
git ls-files --stage >result &&
test_cmp expected result &&
git ls-files -t >result &&
test_cmp expected.swt result
ok 2 - read-tree without .git/info/sparse-checkout
expecting success of 1011.3 'read-tree with .git/info/sparse-checkout but disabled':
mkdir .git/info &&
echo >.git/info/sparse-checkout &&
read_tree_u_must_succeed -m -u HEAD &&
git ls-files -t >result &&
test_cmp expected.swt result &&
test_path_is_file init.t &&
test_path_is_file sub/added
ok 3 - read-tree with .git/info/sparse-checkout but disabled
expecting success of 1011.4 'read-tree --no-sparse-checkout with empty .git/info/sparse-checkout and enabled':
git config core.sparsecheckout true &&
echo >.git/info/sparse-checkout &&
read_tree_u_must_succeed --no-sparse-checkout -m -u HEAD &&
git ls-files -t >result &&
test_cmp expected.swt result &&
test_path_is_file init.t &&
test_path_is_file sub/added
ok 4 - read-tree --no-sparse-checkout with empty .git/info/sparse-checkout and enabled
expecting success of 1011.5 'read-tree with empty .git/info/sparse-checkout':
git config core.sparsecheckout true &&
echo >.git/info/sparse-checkout &&
read_tree_u_must_succeed -m -u HEAD &&
git ls-files --stage >result &&
test_cmp expected result &&
git ls-files -t >result &&
cat >expected.swt <<-\EOF &&
S init.t
S sub/added
S sub/addedtoo
S subsub/added
EOF
test_cmp expected.swt result &&
test_path_is_missing init.t &&
test_path_is_missing sub/added
ok 5 - read-tree with empty .git/info/sparse-checkout
expecting success of 1011.6 'match directories with trailing slash':
cat >expected.swt-noinit <<-\EOF &&
S init.t
H sub/added
H sub/addedtoo
S subsub/added
EOF
echo sub/ > .git/info/sparse-checkout &&
read_tree_u_must_succeed -m -u HEAD &&
git ls-files -t > result &&
test_cmp expected.swt-noinit result &&
test_path_is_missing init.t &&
test_path_is_file sub/added
ok 6 - match directories with trailing slash
expecting success of 1011.7 'match directories without trailing slash':
echo sub >.git/info/sparse-checkout &&
read_tree_u_must_succeed -m -u HEAD &&
git ls-files -t >result &&
test_cmp expected.swt-noinit result &&
test_path_is_missing init.t &&
test_path_is_file sub/added
ok 7 - match directories without trailing slash
expecting success of 1011.8 'match directories with negated patterns':
cat >expected.swt-negation <<\EOF &&
S init.t
S sub/added
H sub/addedtoo
S subsub/added
EOF
cat >.git/info/sparse-checkout <<\EOF &&
sub
!sub/added
EOF
git read-tree -m -u HEAD &&
git ls-files -t >result &&
test_cmp expected.swt-negation result &&
test_path_is_missing init.t &&
test_path_is_missing sub/added &&
test_path_is_file sub/addedtoo
ok 8 - match directories with negated patterns
expecting success of 1011.9 'match directories with negated patterns (2)':
cat >expected.swt-negation2 <<\EOF &&
H init.t
H sub/added
S sub/addedtoo
H subsub/added
EOF
cat >.git/info/sparse-checkout <<\EOF &&
/*
!sub
sub/added
EOF
git read-tree -m -u HEAD &&
git ls-files -t >result &&
test_cmp expected.swt-negation2 result &&
test_path_is_file init.t &&
test_path_is_file sub/added &&
test_path_is_missing sub/addedtoo
ok 9 - match directories with negated patterns (2)
expecting success of 1011.10 'match directory pattern':
echo "s?b" >.git/info/sparse-checkout &&
read_tree_u_must_succeed -m -u HEAD &&
git ls-files -t >result &&
test_cmp expected.swt-noinit result &&
test_path_is_missing init.t &&
test_path_is_file sub/added
ok 10 - match directory pattern
expecting success of 1011.11 'checkout area changes':
cat >expected.swt-nosub <<-\EOF &&
H init.t
S sub/added
S sub/addedtoo
S subsub/added
EOF
echo init.t >.git/info/sparse-checkout &&
read_tree_u_must_succeed -m -u HEAD &&
git ls-files -t >result &&
test_cmp expected.swt-nosub result &&
test_path_is_file init.t &&
test_path_is_missing sub/added
ok 11 - checkout area changes
expecting success of 1011.12 'read-tree updates worktree, absent case':
echo sub/added >.git/info/sparse-checkout &&
git checkout -f top &&
read_tree_u_must_succeed -m -u HEAD^ &&
test_path_is_missing init.t
HEAD is now at 9598e22 modified and added
ok 12 - read-tree updates worktree, absent case
expecting success of 1011.13 'read-tree will not throw away dirty changes, non-sparse':
echo "/*" >.git/info/sparse-checkout &&
read_tree_u_must_succeed -m -u HEAD &&
echo dirty >init.t &&
read_tree_u_must_fail -m -u HEAD^ &&
test_path_is_file init.t &&
grep -q dirty init.t
error: Entry 'init.t' not uptodate. Cannot merge.
error: Entry 'init.t' not uptodate. Cannot merge.
ok 13 - read-tree will not throw away dirty changes, non-sparse
expecting success of 1011.14 'read-tree will not throw away dirty changes, sparse':
echo "/*" >.git/info/sparse-checkout &&
read_tree_u_must_succeed -m -u HEAD &&
echo dirty >init.t &&
echo sub/added >.git/info/sparse-checkout &&
read_tree_u_must_fail -m -u HEAD^ &&
test_path_is_file init.t &&
grep -q dirty init.t
error: Entry 'init.t' not uptodate. Cannot merge.
error: Entry 'init.t' not uptodate. Cannot merge.
ok 14 - read-tree will not throw away dirty changes, sparse
expecting success of 1011.15 'read-tree updates worktree, dirty case':
echo sub/added >.git/info/sparse-checkout &&
git checkout -f top &&
echo dirty >init.t &&
read_tree_u_must_fail -m -u HEAD^ &&
grep -q dirty init.t &&
rm init.t
HEAD is now at 9598e22 modified and added
error: Entry 'init.t' not uptodate. Cannot merge.
error: Entry 'init.t' not uptodate. Cannot merge.
ok 15 - read-tree updates worktree, dirty case
expecting success of 1011.16 'read-tree removes worktree, dirty case':
echo init.t >.git/info/sparse-checkout &&
git checkout -f top &&
echo dirty >added &&
read_tree_u_must_succeed -m -u HEAD^ &&
grep -q dirty added
HEAD is now at 9598e22 modified and added
ok 16 - read-tree removes worktree, dirty case
expecting success of 1011.17 'read-tree adds to worktree, absent case':
echo init.t >.git/info/sparse-checkout &&
git checkout -f removed &&
read_tree_u_must_succeed -u -m HEAD^ &&
test_path_is_missing sub/added
Previous HEAD position was 9598e22 modified and added
HEAD is now at de70956 removed
ok 17 - read-tree adds to worktree, absent case
expecting success of 1011.18 'read-tree adds to worktree, dirty case':
echo init.t >.git/info/sparse-checkout &&
git checkout -f removed &&
mkdir sub &&
echo dirty >sub/added &&
read_tree_u_must_succeed -u -m HEAD^ &&
grep -q dirty sub/added
HEAD is now at de70956 removed
ok 18 - read-tree adds to worktree, dirty case
expecting success of 1011.19 'index removal and worktree narrowing at the same time':
echo init.t >.git/info/sparse-checkout &&
echo sub/added >>.git/info/sparse-checkout &&
git checkout -f top &&
echo init.t >.git/info/sparse-checkout &&
git checkout removed &&
git ls-files sub/added >result &&
test_path_is_missing sub/added &&
test_must_be_empty result
Previous HEAD position was de70956 removed
HEAD is now at 9598e22 modified and added
Previous HEAD position was 9598e22 modified and added
HEAD is now at de70956 removed
ok 19 - index removal and worktree narrowing at the same time
expecting success of 1011.20 'read-tree --reset removes outside worktree':
echo init.t >.git/info/sparse-checkout &&
git checkout -f top &&
git reset --hard removed &&
git ls-files sub/added >result &&
test_must_be_empty result
Previous HEAD position was de70956 removed
HEAD is now at 9598e22 modified and added
HEAD is now at de70956 removed
ok 20 - read-tree --reset removes outside worktree
expecting success of 1011.21 'print warnings when some worktree updates disabled':
echo sub >.git/info/sparse-checkout &&
git checkout -f init &&
mkdir sub &&
touch sub/added sub/addedtoo &&
# Use -q to suppress "Previous HEAD position" and "Head is now at" msgs
git checkout -q top 2>actual &&
cat >expected <<\EOF &&
warning: The following paths were already present and thus not updated despite sparse patterns:
sub/added
sub/addedtoo
After fixing the above paths, you may want to run `git sparse-checkout reapply`.
EOF
test_cmp expected actual
Previous HEAD position was de70956 removed
HEAD is now at 2519212 init
ok 21 - print warnings when some worktree updates disabled
expecting success of 1011.22 'checkout without --ignore-skip-worktree-bits':
echo "*" >.git/info/sparse-checkout &&
git checkout -f top &&
test_path_is_file init.t &&
echo sub >.git/info/sparse-checkout &&
git checkout &&
echo modified >> sub/added &&
git checkout . &&
test_path_is_missing init.t &&
git diff --exit-code HEAD
HEAD is now at 9598e22 modified and added
Updated 1 path from the index
ok 22 - checkout without --ignore-skip-worktree-bits
expecting success of 1011.23 'checkout with --ignore-skip-worktree-bits':
echo "*" >.git/info/sparse-checkout &&
git checkout -f top &&
test_path_is_file init.t &&
echo sub >.git/info/sparse-checkout &&
git checkout &&
echo modified >> sub/added &&
git checkout --ignore-skip-worktree-bits . &&
test_path_is_file init.t &&
git diff --exit-code HEAD
HEAD is now at 9598e22 modified and added
Updated 3 paths from the index
ok 23 - checkout with --ignore-skip-worktree-bits
# passed all 23 test(s)
1..23
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1014-read-tree-confusing.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1014-read-tree-confusing/.git/
expecting success of 1014.1 'create base tree':
echo content >file &&
git add file &&
git commit -m base &&
blob=$(git rev-parse HEAD:file) &&
tree=$(git rev-parse HEAD^{tree})
[master (root-commit) 5d770fe] base
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
ok 1 - create base tree
expecting success of 1014.2 'enable core.protectHFS for rejection tests':
git config core.protectHFS true
ok 2 - enable core.protectHFS for rejection tests
expecting success of 1014.3 'enable core.protectNTFS for rejection tests':
git config core.protectNTFS true
ok 3 - enable core.protectNTFS for rejection tests
expecting success of 1014.4 'reject . at end of path':
printf "100644 blob %s\t%s" "$blob" "$path" >tree &&
bogus=$(git mktree <tree) &&
test_must_fail git read-tree $bogus
error: invalid path '.'
ok 4 - reject . at end of path
expecting success of 1014.5 'reject . as subtree':
printf "040000 tree %s\t%s" "$tree" "$path" >tree &&
bogus=$(git mktree <tree) &&
test_must_fail git read-tree $bogus
error: invalid path './file'
ok 5 - reject . as subtree
expecting success of 1014.6 'reject .. at end of path':
printf "100644 blob %s\t%s" "$blob" "$path" >tree &&
bogus=$(git mktree <tree) &&
test_must_fail git read-tree $bogus
error: invalid path '..'
ok 6 - reject .. at end of path
expecting success of 1014.7 'reject .. as subtree':
printf "040000 tree %s\t%s" "$tree" "$path" >tree &&
bogus=$(git mktree <tree) &&
test_must_fail git read-tree $bogus
error: invalid path '../file'
ok 7 - reject .. as subtree
expecting success of 1014.8 'reject .git at end of path':
printf "100644 blob %s\t%s" "$blob" "$path" >tree &&
bogus=$(git mktree <tree) &&
test_must_fail git read-tree $bogus
error: invalid path '.git'
ok 8 - reject .git at end of path
expecting success of 1014.9 'reject .git as subtree':
printf "040000 tree %s\t%s" "$tree" "$path" >tree &&
bogus=$(git mktree <tree) &&
test_must_fail git read-tree $bogus
error: invalid path '.git/file'
ok 9 - reject .git as subtree
expecting success of 1014.10 'reject .GIT at end of path':
printf "100644 blob %s\t%s" "$blob" "$path" >tree &&
bogus=$(git mktree <tree) &&
test_must_fail git read-tree $bogus
error: invalid path '.GIT'
ok 10 - reject .GIT at end of path
expecting success of 1014.11 'reject .GIT as subtree':
printf "040000 tree %s\t%s" "$tree" "$path" >tree &&
bogus=$(git mktree <tree) &&
test_must_fail git read-tree $bogus
error: invalid path '.GIT/file'
ok 11 - reject .GIT as subtree
expecting success of 1014.12 'reject {u200c}.Git at end of path':
printf "100644 blob %s\t%s" "$blob" "$path" >tree &&
bogus=$(git mktree <tree) &&
test_must_fail git read-tree $bogus
error: invalid path '.Git'
ok 12 - reject {u200c}.Git at end of path
expecting success of 1014.13 'reject {u200c}.Git as subtree':
printf "040000 tree %s\t%s" "$tree" "$path" >tree &&
bogus=$(git mktree <tree) &&
test_must_fail git read-tree $bogus
error: invalid path '.Git/file'
ok 13 - reject {u200c}.Git as subtree
expecting success of 1014.14 'reject .gI{u200c}T at end of path':
printf "100644 blob %s\t%s" "$blob" "$path" >tree &&
bogus=$(git mktree <tree) &&
test_must_fail git read-tree $bogus
error: invalid path '.gIT'
ok 14 - reject .gI{u200c}T at end of path
expecting success of 1014.15 'reject .gI{u200c}T as subtree':
printf "040000 tree %s\t%s" "$tree" "$path" >tree &&
bogus=$(git mktree <tree) &&
test_must_fail git read-tree $bogus
error: invalid path '.gIT/file'
ok 15 - reject .gI{u200c}T as subtree
expecting success of 1014.16 'reject .GiT{u200c} at end of path':
printf "100644 blob %s\t%s" "$blob" "$path" >tree &&
bogus=$(git mktree <tree) &&
test_must_fail git read-tree $bogus
error: invalid path '.GiT'
ok 16 - reject .GiT{u200c} at end of path
expecting success of 1014.17 'reject .GiT{u200c} as subtree':
printf "040000 tree %s\t%s" "$tree" "$path" >tree &&
bogus=$(git mktree <tree) &&
test_must_fail git read-tree $bogus
error: invalid path '.GiT/file'
ok 17 - reject .GiT{u200c} as subtree
expecting success of 1014.18 'reject git~1 at end of path':
printf "100644 blob %s\t%s" "$blob" "$path" >tree &&
bogus=$(git mktree <tree) &&
test_must_fail git read-tree $bogus
error: invalid path 'git~1'
ok 18 - reject git~1 at end of path
expecting success of 1014.19 'reject git~1 as subtree':
printf "040000 tree %s\t%s" "$tree" "$path" >tree &&
bogus=$(git mktree <tree) &&
test_must_fail git read-tree $bogus
error: invalid path 'git~1/file'
ok 19 - reject git~1 as subtree
expecting success of 1014.20 'reject .git.{space} at end of path':
printf "100644 blob %s\t%s" "$blob" "$path" >tree &&
bogus=$(git mktree <tree) &&
test_must_fail git read-tree $bogus
error: invalid path '.git. '
ok 20 - reject .git.{space} at end of path
expecting success of 1014.21 'reject .git.{space} as subtree':
printf "040000 tree %s\t%s" "$tree" "$path" >tree &&
bogus=$(git mktree <tree) &&
test_must_fail git read-tree $bogus
error: invalid path '.git. /file'
ok 21 - reject .git.{space} as subtree
expecting success of 1014.22 'reject backslashes at end of path':
printf "100644 blob %s\t%s" "$blob" "$path" >tree &&
bogus=$(git mktree <tree) &&
test_must_fail git read-tree $bogus
error: invalid path '.\.GIT\foobar'
ok 22 - reject backslashes at end of path
expecting success of 1014.23 'reject backslashes as subtree':
printf "040000 tree %s\t%s" "$tree" "$path" >tree &&
bogus=$(git mktree <tree) &&
test_must_fail git read-tree $bogus
error: invalid path '.\.GIT\foobar/file'
ok 23 - reject backslashes as subtree
expecting success of 1014.24 'reject backslashes2 at end of path':
printf "100644 blob %s\t%s" "$blob" "$path" >tree &&
bogus=$(git mktree <tree) &&
test_must_fail git read-tree $bogus
error: invalid path '.git\foobar'
ok 24 - reject backslashes2 at end of path
expecting success of 1014.25 'reject backslashes2 as subtree':
printf "040000 tree %s\t%s" "$tree" "$path" >tree &&
bogus=$(git mktree <tree) &&
test_must_fail git read-tree $bogus
error: invalid path '.git\foobar/file'
ok 25 - reject backslashes2 as subtree
expecting success of 1014.26 'reject .git...:alternate-stream at end of path':
printf "100644 blob %s\t%s" "$blob" "$path" >tree &&
bogus=$(git mktree <tree) &&
test_must_fail git read-tree $bogus
error: invalid path '.git...:alternate-stream'
ok 26 - reject .git...:alternate-stream at end of path
expecting success of 1014.27 'reject .git...:alternate-stream as subtree':
printf "040000 tree %s\t%s" "$tree" "$path" >tree &&
bogus=$(git mktree <tree) &&
test_must_fail git read-tree $bogus
error: invalid path '.git...:alternate-stream/file'
ok 27 - reject .git...:alternate-stream as subtree
expecting success of 1014.28 'utf-8 paths allowed with core.protectHFS off':
test_when_finished "git read-tree HEAD" &&
test_config core.protectHFS false &&
printf "100644 blob %s\t%s" "$blob" ".gi${u200c}t" >tree &&
ok=$(git mktree <tree) &&
git read-tree $ok
ok 28 - utf-8 paths allowed with core.protectHFS off
# passed all 28 test(s)
1..28
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1006-cat-file.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1006-cat-file/.git/
expecting success of 1006.1 'usage: cmdmode -e -p':
test_cmdmode_usage git cat-file $switches
error: switch `p' is incompatible with -e
ok 1 - usage: cmdmode -e -p
expecting success of 1006.2 'usage: cmdmode -p -t':
test_cmdmode_usage git cat-file $switches
error: switch `t' is incompatible with -p
ok 2 - usage: cmdmode -p -t
expecting success of 1006.3 'usage: cmdmode -t -s':
test_cmdmode_usage git cat-file $switches
error: switch `s' is incompatible with -t
ok 3 - usage: cmdmode -t -s
expecting success of 1006.4 'usage: cmdmode -s --textconv':
test_cmdmode_usage git cat-file $switches
error: option `textconv' is incompatible with -s
ok 4 - usage: cmdmode -s --textconv
expecting success of 1006.5 'usage: cmdmode --textconv --filters':
test_cmdmode_usage git cat-file $switches
error: option `filters' is incompatible with --textconv
ok 5 - usage: cmdmode --textconv --filters
expecting success of 1006.6 'usage: cmdmode --batch-all-objects -e':
test_cmdmode_usage git cat-file $switches
error: switch `e' is incompatible with --batch-all-objects
ok 6 - usage: cmdmode --batch-all-objects -e
expecting success of 1006.7 'usage: incompatible options: --path with --batch':
test_incompatible_usage git cat-file --path=foo $opt
fatal: '--path=<path|tree-ish>' needs '--filters' or '--textconv'
ok 7 - usage: incompatible options: --path with --batch
expecting success of 1006.8 'usage: incompatible options: --path with --batch-check':
test_incompatible_usage git cat-file --path=foo $opt
fatal: '--path=<path|tree-ish>' needs '--filters' or '--textconv'
ok 8 - usage: incompatible options: --path with --batch-check
expecting success of 1006.9 'usage: --textconv requires another option':
test_missing_usage git cat-file $opt
fatal: <rev> required with '--textconv'
ok 9 - usage: --textconv requires another option
expecting success of 1006.10 'usage: --filters requires another option':
test_missing_usage git cat-file $opt
fatal: <rev> required with '--filters'
ok 10 - usage: --filters requires another option
expecting success of 1006.11 'usage: -e requires another option':
test_missing_usage git cat-file $opt
fatal: <object> required with '-e'
ok 11 - usage: -e requires another option
expecting success of 1006.12 'usage: incompatible options: -e and --batch':
test_incompatible_usage git cat-file $opt $opt2
fatal: '-e' is incompatible with batch mode
ok 12 - usage: incompatible options: -e and --batch
expecting success of 1006.13 'usage: incompatible options: -e and --batch-check':
test_incompatible_usage git cat-file $opt $opt2
fatal: '-e' is incompatible with batch mode
ok 13 - usage: incompatible options: -e and --batch-check
expecting success of 1006.14 'usage: incompatible options: -e and --follow-symlinks':
test_incompatible_usage git cat-file $opt $opt2
fatal: '--follow-symlinks' requires a batch mode
ok 14 - usage: incompatible options: -e and --follow-symlinks
expecting success of 1006.15 'usage: incompatible options: -e and --path=foo HEAD:some-path.txt':
test_incompatible_usage git cat-file $opt $opt2
fatal: '--path=<path|tree-ish>' needs '--filters' or '--textconv'
ok 15 - usage: incompatible options: -e and --path=foo HEAD:some-path.txt
expecting success of 1006.16 'usage: -p requires another option':
test_missing_usage git cat-file $opt
fatal: <object> required with '-p'
ok 16 - usage: -p requires another option
expecting success of 1006.17 'usage: incompatible options: -p and --batch':
test_incompatible_usage git cat-file $opt $opt2
fatal: '-p' is incompatible with batch mode
ok 17 - usage: incompatible options: -p and --batch
expecting success of 1006.18 'usage: incompatible options: -p and --batch-check':
test_incompatible_usage git cat-file $opt $opt2
fatal: '-p' is incompatible with batch mode
ok 18 - usage: incompatible options: -p and --batch-check
expecting success of 1006.19 'usage: incompatible options: -p and --follow-symlinks':
test_incompatible_usage git cat-file $opt $opt2
fatal: '--follow-symlinks' requires a batch mode
ok 19 - usage: incompatible options: -p and --follow-symlinks
expecting success of 1006.20 'usage: incompatible options: -p and --path=foo HEAD:some-path.txt':
test_incompatible_usage git cat-file $opt $opt2
fatal: '--path=<path|tree-ish>' needs '--filters' or '--textconv'
ok 20 - usage: incompatible options: -p and --path=foo HEAD:some-path.txt
expecting success of 1006.21 'usage: -t requires another option':
test_missing_usage git cat-file $opt
fatal: <object> required with '-t'
ok 21 - usage: -t requires another option
expecting success of 1006.22 'usage: incompatible options: -t and --batch':
test_incompatible_usage git cat-file $opt $opt2
fatal: '-t' is incompatible with batch mode
ok 22 - usage: incompatible options: -t and --batch
expecting success of 1006.23 'usage: incompatible options: -t and --batch-check':
test_incompatible_usage git cat-file $opt $opt2
fatal: '-t' is incompatible with batch mode
ok 23 - usage: incompatible options: -t and --batch-check
expecting success of 1006.24 'usage: incompatible options: -t and --follow-symlinks':
test_incompatible_usage git cat-file $opt $opt2
fatal: '--follow-symlinks' requires a batch mode
ok 24 - usage: incompatible options: -t and --follow-symlinks
expecting success of 1006.25 'usage: incompatible options: -t and --path=foo HEAD:some-path.txt':
test_incompatible_usage git cat-file $opt $opt2
fatal: '--path=<path|tree-ish>' needs '--filters' or '--textconv'
ok 25 - usage: incompatible options: -t and --path=foo HEAD:some-path.txt
expecting success of 1006.26 'usage: -s requires another option':
test_missing_usage git cat-file $opt
fatal: <object> required with '-s'
ok 26 - usage: -s requires another option
expecting success of 1006.27 'usage: incompatible options: -s and --batch':
test_incompatible_usage git cat-file $opt $opt2
fatal: '-s' is incompatible with batch mode
ok 27 - usage: incompatible options: -s and --batch
expecting success of 1006.28 'usage: incompatible options: -s and --batch-check':
test_incompatible_usage git cat-file $opt $opt2
fatal: '-s' is incompatible with batch mode
ok 28 - usage: incompatible options: -s and --batch-check
expecting success of 1006.29 'usage: incompatible options: -s and --follow-symlinks':
test_incompatible_usage git cat-file $opt $opt2
fatal: '--follow-symlinks' requires a batch mode
ok 29 - usage: incompatible options: -s and --follow-symlinks
expecting success of 1006.30 'usage: incompatible options: -s and --path=foo HEAD:some-path.txt':
test_incompatible_usage git cat-file $opt $opt2
fatal: '--path=<path|tree-ish>' needs '--filters' or '--textconv'
ok 30 - usage: incompatible options: -s and --path=foo HEAD:some-path.txt
expecting success of 1006.31 'usage: too many arguments: -e one two three':
test_too_many_arguments git cat-file $opt $args
fatal: too many arguments
ok 31 - usage: too many arguments: -e one two three
expecting success of 1006.32 'usage: incompatible arguments: -e with batch option --buffer':
test_incompatible_usage git cat-file $opt $opt2
fatal: '--buffer' requires a batch mode
ok 32 - usage: incompatible arguments: -e with batch option --buffer
expecting success of 1006.33 'usage: incompatible arguments: -e with batch option --follow-symlinks':
test_incompatible_usage git cat-file $opt $opt2
fatal: '--follow-symlinks' requires a batch mode
ok 33 - usage: incompatible arguments: -e with batch option --follow-symlinks
expecting success of 1006.34 'usage: too many arguments: -p one two three':
test_too_many_arguments git cat-file $opt $args
fatal: too many arguments
ok 34 - usage: too many arguments: -p one two three
expecting success of 1006.35 'usage: incompatible arguments: -p with batch option --buffer':
test_incompatible_usage git cat-file $opt $opt2
fatal: '--buffer' requires a batch mode
ok 35 - usage: incompatible arguments: -p with batch option --buffer
expecting success of 1006.36 'usage: incompatible arguments: -p with batch option --follow-symlinks':
test_incompatible_usage git cat-file $opt $opt2
fatal: '--follow-symlinks' requires a batch mode
ok 36 - usage: incompatible arguments: -p with batch option --follow-symlinks
expecting success of 1006.37 'usage: too many arguments: -t one two three':
test_too_many_arguments git cat-file $opt $args
fatal: too many arguments
ok 37 - usage: too many arguments: -t one two three
expecting success of 1006.38 'usage: incompatible arguments: -t with batch option --buffer':
test_incompatible_usage git cat-file $opt $opt2
fatal: '--buffer' requires a batch mode
ok 38 - usage: incompatible arguments: -t with batch option --buffer
expecting success of 1006.39 'usage: incompatible arguments: -t with batch option --follow-symlinks':
test_incompatible_usage git cat-file $opt $opt2
fatal: '--follow-symlinks' requires a batch mode
ok 39 - usage: incompatible arguments: -t with batch option --follow-symlinks
expecting success of 1006.40 'usage: too many arguments: -s one two three':
test_too_many_arguments git cat-file $opt $args
fatal: too many arguments
ok 40 - usage: too many arguments: -s one two three
expecting success of 1006.41 'usage: incompatible arguments: -s with batch option --buffer':
test_incompatible_usage git cat-file $opt $opt2
fatal: '--buffer' requires a batch mode
ok 41 - usage: incompatible arguments: -s with batch option --buffer
expecting success of 1006.42 'usage: incompatible arguments: -s with batch option --follow-symlinks':
test_incompatible_usage git cat-file $opt $opt2
fatal: '--follow-symlinks' requires a batch mode
ok 42 - usage: incompatible arguments: -s with batch option --follow-symlinks
expecting success of 1006.43 'usage: too many arguments: --textconv one two three':
test_too_many_arguments git cat-file $opt $args
fatal: too many arguments
ok 43 - usage: too many arguments: --textconv one two three
expecting success of 1006.44 'usage: incompatible arguments: --textconv with batch option --buffer':
test_incompatible_usage git cat-file $opt $opt2
fatal: '--buffer' requires a batch mode
ok 44 - usage: incompatible arguments: --textconv with batch option --buffer
expecting success of 1006.45 'usage: incompatible arguments: --textconv with batch option --follow-symlinks':
test_incompatible_usage git cat-file $opt $opt2
fatal: '--follow-symlinks' requires a batch mode
ok 45 - usage: incompatible arguments: --textconv with batch option --follow-symlinks
expecting success of 1006.46 'usage: too many arguments: --filters one two three':
test_too_many_arguments git cat-file $opt $args
fatal: too many arguments
ok 46 - usage: too many arguments: --filters one two three
expecting success of 1006.47 'usage: incompatible arguments: --filters with batch option --buffer':
test_incompatible_usage git cat-file $opt $opt2
fatal: '--buffer' requires a batch mode
ok 47 - usage: incompatible arguments: --filters with batch option --buffer
expecting success of 1006.48 'usage: incompatible arguments: --filters with batch option --follow-symlinks':
test_incompatible_usage git cat-file $opt $opt2
fatal: '--follow-symlinks' requires a batch mode
ok 48 - usage: incompatible arguments: --filters with batch option --follow-symlinks
expecting success of 1006.49 'usage: bad option combination: --buffer without batch mode':
test_incompatible_usage git cat-file $opt &&
test_incompatible_usage git cat-file $opt commit HEAD
fatal: '--buffer' requires a batch mode
fatal: '--buffer' requires a batch mode
ok 49 - usage: bad option combination: --buffer without batch mode
expecting success of 1006.50 'usage: bad option combination: --follow-symlinks without batch mode':
test_incompatible_usage git cat-file $opt &&
test_incompatible_usage git cat-file $opt commit HEAD
fatal: '--follow-symlinks' requires a batch mode
fatal: '--follow-symlinks' requires a batch mode
ok 50 - usage: bad option combination: --follow-symlinks without batch mode
expecting success of 1006.51 'usage: bad option combination: --batch-all-objects without batch mode':
test_incompatible_usage git cat-file $opt &&
test_incompatible_usage git cat-file $opt commit HEAD
fatal: '--batch-all-objects' requires a batch mode
fatal: '--batch-all-objects' requires a batch mode
ok 51 - usage: bad option combination: --batch-all-objects without batch mode
expecting success of 1006.52 'usage: bad option combination: -z without batch mode':
test_incompatible_usage git cat-file $opt &&
test_incompatible_usage git cat-file $opt commit HEAD
fatal: '-z' requires a batch mode
fatal: '-z' requires a batch mode
ok 52 - usage: bad option combination: -z without batch mode
expecting success of 1006.53 'usage: bad option combination: -Z without batch mode':
test_incompatible_usage git cat-file $opt &&
test_incompatible_usage git cat-file $opt commit HEAD
fatal: '-Z' requires a batch mode
fatal: '-Z' requires a batch mode
ok 53 - usage: bad option combination: -Z without batch mode
expecting success of 1006.54 'setup':
echo_without_newline "$hello_content" > hello &&
git update-index --add hello
ok 54 - setup
expecting success of 1006.55 'blob exists':
git cat-file -e $sha1
ok 55 - blob exists
expecting success of 1006.56 'Type of blob is correct':
echo $type >expect &&
git cat-file -t $sha1 >actual &&
test_cmp expect actual
ok 56 - Type of blob is correct
expecting success of 1006.57 'Size of blob is correct':
echo $size >expect &&
git cat-file -s $sha1 >actual &&
test_cmp expect actual
ok 57 - Size of blob is correct
expecting success of 1006.58 'Type of blob is correct using --allow-unknown-type':
echo $type >expect &&
git cat-file -t --allow-unknown-type $sha1 >actual &&
test_cmp expect actual
ok 58 - Type of blob is correct using --allow-unknown-type
expecting success of 1006.59 'Size of blob is correct using --allow-unknown-type':
echo $size >expect &&
git cat-file -s --allow-unknown-type $sha1 >actual &&
test_cmp expect actual
ok 59 - Size of blob is correct using --allow-unknown-type
expecting success of 1006.60 'Content of blob is correct':
echo_without_newline "$content" >expect &&
git cat-file $type $sha1 >actual &&
test_cmp expect actual
ok 60 - Content of blob is correct
expecting success of 1006.61 'Pretty content of blob is correct':
echo_without_newline "$pretty_content" >expect &&
git cat-file -p $sha1 >actual &&
test_cmp expect actual
ok 61 - Pretty content of blob is correct
expecting success of 1006.62 '--batch output of blob is correct':
echo "$batch_output" >expect &&
echo $sha1 | git cat-file --batch >actual &&
test_cmp expect actual
ok 62 - --batch output of blob is correct
expecting success of 1006.63 '--batch-check output of blob is correct':
echo "$sha1 $type $size" >expect &&
echo_without_newline $sha1 | git cat-file --batch-check >actual &&
test_cmp expect actual
ok 63 - --batch-check output of blob is correct
expecting success of 1006.64 '--batch-command --buffer output of blob content is correct':
echo "$batch_output" >expect &&
test_write_lines "contents $sha1" | git cat-file --batch-command $opt >actual &&
test_cmp expect actual
ok 64 - --batch-command --buffer output of blob content is correct
expecting success of 1006.65 '--batch-command --buffer output of blob info is correct':
echo "$sha1 $type $size" >expect &&
test_write_lines "info $sha1" |
git cat-file --batch-command $opt >actual &&
test_cmp expect actual
ok 65 - --batch-command --buffer output of blob info is correct
expecting success of 1006.66 '--batch-command --no-buffer output of blob content is correct':
echo "$batch_output" >expect &&
test_write_lines "contents $sha1" | git cat-file --batch-command $opt >actual &&
test_cmp expect actual
ok 66 - --batch-command --no-buffer output of blob content is correct
expecting success of 1006.67 '--batch-command --no-buffer output of blob info is correct':
echo "$sha1 $type $size" >expect &&
test_write_lines "info $sha1" |
git cat-file --batch-command $opt >actual &&
test_cmp expect actual
ok 67 - --batch-command --no-buffer output of blob info is correct
expecting success of 1006.68 'custom --batch-check format':
echo "$type $sha1" >expect &&
echo $sha1 | git cat-file --batch-check="%(objecttype) %(objectname)" >actual &&
test_cmp expect actual
ok 68 - custom --batch-check format
expecting success of 1006.69 'custom --batch-command format':
echo "$type $sha1" >expect &&
echo "info $sha1" | git cat-file --batch-command="%(objecttype) %(objectname)" >actual &&
test_cmp expect actual
ok 69 - custom --batch-command format
expecting success of 1006.70 '--batch-check with %(rest)':
echo "$type this is some extra content" >expect &&
echo "$sha1 this is some extra content" |
git cat-file --batch-check="%(objecttype) %(rest)" >actual &&
test_cmp expect actual
ok 70 - --batch-check with %(rest)
expecting success of 1006.71 '--batch without type (blob)':
{
echo "$size" &&
echo "$content"
} >expect &&
echo $sha1 | git cat-file --batch="%(objectsize)" >actual &&
test_cmp expect actual
ok 71 - --batch without type (blob)
expecting success of 1006.72 '--batch without size (blob)':
{
echo "$type" &&
echo "$content"
} >expect &&
echo $sha1 | git cat-file --batch="%(objecttype)" >actual &&
test_cmp expect actual
ok 72 - --batch without size (blob)
expecting success of 1006.73 '--batch-command --buffer with flush for blob info':
echo "$hello_sha1 blob $hello_size" >expect &&
test_write_lines "info $hello_sha1" "flush" |
GIT_TEST_CAT_FILE_NO_FLUSH_ON_EXIT=1 \
git cat-file --batch-command --buffer >actual &&
test_cmp expect actual
ok 73 - --batch-command --buffer with flush for blob info
expecting success of 1006.74 '--batch-command --buffer without flush for blob info':
touch output &&
test_write_lines "info $hello_sha1" |
GIT_TEST_CAT_FILE_NO_FLUSH_ON_EXIT=1 \
git cat-file --batch-command --buffer >>output &&
test_must_be_empty output
ok 74 - --batch-command --buffer without flush for blob info
expecting success of 1006.75 '--batch-check without %(rest) considers whole line':
echo "$hello_sha1 blob $hello_size" >expect &&
git update-index --add --cacheinfo 100644 $hello_sha1 "white space" &&
test_when_finished "git update-index --remove \"white space\"" &&
echo ":white space" | git cat-file --batch-check >actual &&
test_cmp expect actual
ok 75 - --batch-check without %(rest) considers whole line
expecting success of 1006.76 'tree exists':
git cat-file -e $sha1
ok 76 - tree exists
expecting success of 1006.77 'Type of tree is correct':
echo $type >expect &&
git cat-file -t $sha1 >actual &&
test_cmp expect actual
ok 77 - Type of tree is correct
expecting success of 1006.78 'Size of tree is correct':
echo $size >expect &&
git cat-file -s $sha1 >actual &&
test_cmp expect actual
ok 78 - Size of tree is correct
expecting success of 1006.79 'Type of tree is correct using --allow-unknown-type':
echo $type >expect &&
git cat-file -t --allow-unknown-type $sha1 >actual &&
test_cmp expect actual
ok 79 - Type of tree is correct using --allow-unknown-type
expecting success of 1006.80 'Size of tree is correct using --allow-unknown-type':
echo $size >expect &&
git cat-file -s --allow-unknown-type $sha1 >actual &&
test_cmp expect actual
ok 80 - Size of tree is correct using --allow-unknown-type
expecting success of 1006.81 'Pretty content of tree is correct':
echo_without_newline "$pretty_content" >expect &&
git cat-file -p $sha1 >actual &&
test_cmp expect actual
ok 81 - Pretty content of tree is correct
expecting success of 1006.82 '--batch-check output of tree is correct':
echo "$sha1 $type $size" >expect &&
echo_without_newline $sha1 | git cat-file --batch-check >actual &&
test_cmp expect actual
ok 82 - --batch-check output of tree is correct
expecting success of 1006.83 '--batch-command --buffer output of tree info is correct':
echo "$sha1 $type $size" >expect &&
test_write_lines "info $sha1" |
git cat-file --batch-command $opt >actual &&
test_cmp expect actual
ok 83 - --batch-command --buffer output of tree info is correct
expecting success of 1006.84 '--batch-command --no-buffer output of tree info is correct':
echo "$sha1 $type $size" >expect &&
test_write_lines "info $sha1" |
git cat-file --batch-command $opt >actual &&
test_cmp expect actual
ok 84 - --batch-command --no-buffer output of tree info is correct
expecting success of 1006.85 'custom --batch-check format':
echo "$type $sha1" >expect &&
echo $sha1 | git cat-file --batch-check="%(objecttype) %(objectname)" >actual &&
test_cmp expect actual
ok 85 - custom --batch-check format
expecting success of 1006.86 'custom --batch-command format':
echo "$type $sha1" >expect &&
echo "info $sha1" | git cat-file --batch-command="%(objecttype) %(objectname)" >actual &&
test_cmp expect actual
ok 86 - custom --batch-command format
expecting success of 1006.87 '--batch-check with %(rest)':
echo "$type this is some extra content" >expect &&
echo "$sha1 this is some extra content" |
git cat-file --batch-check="%(objecttype) %(rest)" >actual &&
test_cmp expect actual
ok 87 - --batch-check with %(rest)
expecting success of 1006.88 'commit exists':
git cat-file -e $sha1
ok 88 - commit exists
expecting success of 1006.89 'Type of commit is correct':
echo $type >expect &&
git cat-file -t $sha1 >actual &&
test_cmp expect actual
ok 89 - Type of commit is correct
expecting success of 1006.90 'Size of commit is correct':
echo $size >expect &&
git cat-file -s $sha1 >actual &&
test_cmp expect actual
ok 90 - Size of commit is correct
expecting success of 1006.91 'Type of commit is correct using --allow-unknown-type':
echo $type >expect &&
git cat-file -t --allow-unknown-type $sha1 >actual &&
test_cmp expect actual
ok 91 - Type of commit is correct using --allow-unknown-type
expecting success of 1006.92 'Size of commit is correct using --allow-unknown-type':
echo $size >expect &&
git cat-file -s --allow-unknown-type $sha1 >actual &&
test_cmp expect actual
ok 92 - Size of commit is correct using --allow-unknown-type
expecting success of 1006.93 'Content of commit is correct':
echo_without_newline "$content" >expect &&
git cat-file $type $sha1 >actual &&
test_cmp expect actual
ok 93 - Content of commit is correct
expecting success of 1006.94 'Pretty content of commit is correct':
echo_without_newline "$pretty_content" >expect &&
git cat-file -p $sha1 >actual &&
test_cmp expect actual
ok 94 - Pretty content of commit is correct
expecting success of 1006.95 '--batch output of commit is correct':
echo "$batch_output" >expect &&
echo $sha1 | git cat-file --batch >actual &&
test_cmp expect actual
ok 95 - --batch output of commit is correct
expecting success of 1006.96 '--batch-check output of commit is correct':
echo "$sha1 $type $size" >expect &&
echo_without_newline $sha1 | git cat-file --batch-check >actual &&
test_cmp expect actual
ok 96 - --batch-check output of commit is correct
expecting success of 1006.97 '--batch-command --buffer output of commit content is correct':
echo "$batch_output" >expect &&
test_write_lines "contents $sha1" | git cat-file --batch-command $opt >actual &&
test_cmp expect actual
ok 97 - --batch-command --buffer output of commit content is correct
expecting success of 1006.98 '--batch-command --buffer output of commit info is correct':
echo "$sha1 $type $size" >expect &&
test_write_lines "info $sha1" |
git cat-file --batch-command $opt >actual &&
test_cmp expect actual
ok 98 - --batch-command --buffer output of commit info is correct
expecting success of 1006.99 '--batch-command --no-buffer output of commit content is correct':
echo "$batch_output" >expect &&
test_write_lines "contents $sha1" | git cat-file --batch-command $opt >actual &&
test_cmp expect actual
ok 99 - --batch-command --no-buffer output of commit content is correct
expecting success of 1006.100 '--batch-command --no-buffer output of commit info is correct':
echo "$sha1 $type $size" >expect &&
test_write_lines "info $sha1" |
git cat-file --batch-command $opt >actual &&
test_cmp expect actual
ok 100 - --batch-command --no-buffer output of commit info is correct
expecting success of 1006.101 'custom --batch-check format':
echo "$type $sha1" >expect &&
echo $sha1 | git cat-file --batch-check="%(objecttype) %(objectname)" >actual &&
test_cmp expect actual
ok 101 - custom --batch-check format
expecting success of 1006.102 'custom --batch-command format':
echo "$type $sha1" >expect &&
echo "info $sha1" | git cat-file --batch-command="%(objecttype) %(objectname)" >actual &&
test_cmp expect actual
ok 102 - custom --batch-command format
expecting success of 1006.103 '--batch-check with %(rest)':
echo "$type this is some extra content" >expect &&
echo "$sha1 this is some extra content" |
git cat-file --batch-check="%(objecttype) %(rest)" >actual &&
test_cmp expect actual
ok 103 - --batch-check with %(rest)
expecting success of 1006.104 '--batch without type (commit)':
{
echo "$size" &&
echo "$content"
} >expect &&
echo $sha1 | git cat-file --batch="%(objectsize)" >actual &&
test_cmp expect actual
ok 104 - --batch without type (commit)
expecting success of 1006.105 '--batch without size (commit)':
{
echo "$type" &&
echo "$content"
} >expect &&
echo $sha1 | git cat-file --batch="%(objecttype)" >actual &&
test_cmp expect actual
ok 105 - --batch without size (commit)
expecting success of 1006.106 'tag exists':
git cat-file -e $sha1
ok 106 - tag exists
expecting success of 1006.107 'Type of tag is correct':
echo $type >expect &&
git cat-file -t $sha1 >actual &&
test_cmp expect actual
ok 107 - Type of tag is correct
expecting success of 1006.108 'Size of tag is correct':
echo $size >expect &&
git cat-file -s $sha1 >actual &&
test_cmp expect actual
ok 108 - Size of tag is correct
expecting success of 1006.109 'Type of tag is correct using --allow-unknown-type':
echo $type >expect &&
git cat-file -t --allow-unknown-type $sha1 >actual &&
test_cmp expect actual
ok 109 - Type of tag is correct using --allow-unknown-type
expecting success of 1006.110 'Size of tag is correct using --allow-unknown-type':
echo $size >expect &&
git cat-file -s --allow-unknown-type $sha1 >actual &&
test_cmp expect actual
ok 110 - Size of tag is correct using --allow-unknown-type
expecting success of 1006.111 'Content of tag is correct':
echo_without_newline "$content" >expect &&
git cat-file $type $sha1 >actual &&
test_cmp expect actual
ok 111 - Content of tag is correct
expecting success of 1006.112 'Pretty content of tag is correct':
echo_without_newline "$pretty_content" >expect &&
git cat-file -p $sha1 >actual &&
test_cmp expect actual
ok 112 - Pretty content of tag is correct
expecting success of 1006.113 '--batch output of tag is correct':
echo "$batch_output" >expect &&
echo $sha1 | git cat-file --batch >actual &&
test_cmp expect actual
ok 113 - --batch output of tag is correct
expecting success of 1006.114 '--batch-check output of tag is correct':
echo "$sha1 $type $size" >expect &&
echo_without_newline $sha1 | git cat-file --batch-check >actual &&
test_cmp expect actual
ok 114 - --batch-check output of tag is correct
expecting success of 1006.115 '--batch-command --buffer output of tag content is correct':
echo "$batch_output" >expect &&
test_write_lines "contents $sha1" | git cat-file --batch-command $opt >actual &&
test_cmp expect actual
ok 115 - --batch-command --buffer output of tag content is correct
expecting success of 1006.116 '--batch-command --buffer output of tag info is correct':
echo "$sha1 $type $size" >expect &&
test_write_lines "info $sha1" |
git cat-file --batch-command $opt >actual &&
test_cmp expect actual
ok 116 - --batch-command --buffer output of tag info is correct
expecting success of 1006.117 '--batch-command --no-buffer output of tag content is correct':
echo "$batch_output" >expect &&
test_write_lines "contents $sha1" | git cat-file --batch-command $opt >actual &&
test_cmp expect actual
ok 117 - --batch-command --no-buffer output of tag content is correct
expecting success of 1006.118 '--batch-command --no-buffer output of tag info is correct':
echo "$sha1 $type $size" >expect &&
test_write_lines "info $sha1" |
git cat-file --batch-command $opt >actual &&
test_cmp expect actual
ok 118 - --batch-command --no-buffer output of tag info is correct
expecting success of 1006.119 'custom --batch-check format':
echo "$type $sha1" >expect &&
echo $sha1 | git cat-file --batch-check="%(objecttype) %(objectname)" >actual &&
test_cmp expect actual
ok 119 - custom --batch-check format
expecting success of 1006.120 'custom --batch-command format':
echo "$type $sha1" >expect &&
echo "info $sha1" | git cat-file --batch-command="%(objecttype) %(objectname)" >actual &&
test_cmp expect actual
ok 120 - custom --batch-command format
expecting success of 1006.121 '--batch-check with %(rest)':
echo "$type this is some extra content" >expect &&
echo "$sha1 this is some extra content" |
git cat-file --batch-check="%(objecttype) %(rest)" >actual &&
test_cmp expect actual
ok 121 - --batch-check with %(rest)
expecting success of 1006.122 '--batch without type (tag)':
{
echo "$size" &&
echo "$content"
} >expect &&
echo $sha1 | git cat-file --batch="%(objectsize)" >actual &&
test_cmp expect actual
ok 122 - --batch without type (tag)
expecting success of 1006.123 '--batch without size (tag)':
{
echo "$type" &&
echo "$content"
} >expect &&
echo $sha1 | git cat-file --batch="%(objecttype)" >actual &&
test_cmp expect actual
ok 123 - --batch without size (tag)
expecting success of 1006.124 'Reach a blob from a tag pointing to it':
echo_without_newline "$hello_content" >expect &&
git cat-file blob $tag_sha1 >actual &&
test_cmp expect actual
ok 124 - Reach a blob from a tag pointing to it
expecting success of 1006.125 'Passing -t with --batch fails':
test_must_fail git cat-file --$batch -$opt $hello_sha1
fatal: '-t' is incompatible with batch mode
usage: git cat-file <type> <object>
or: git cat-file (-e | -p) <object>
or: git cat-file (-t | -s) [--allow-unknown-type] <object>
or: git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects]
[--buffer] [--follow-symlinks] [--unordered]
[--textconv | --filters] [-Z]
or: git cat-file (--textconv | --filters)
[<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]
Check object existence or emit object contents
-e check if <object> exists
-p pretty-print <object> content
Emit [broken] object attributes
-t show object type (one of 'blob', 'tree', 'commit', 'tag', ...)
-s show object size
--allow-unknown-type allow -s and -t to work with broken/corrupt objects
--use-mailmap use mail map file
--mailmap ... alias of --use-mailmap
Batch objects requested on stdin (or --batch-all-objects)
--batch[=<format>] show full <object> or <rev> contents
--batch-check[=<format>]
like --batch, but don't emit <contents>
-Z stdin and stdout is NUL-terminated
--batch-command[=<format>]
read commands from stdin
--batch-all-objects with --batch[-check]: ignores stdin, batches all known objects
Change or optimize batch output
--buffer buffer --batch output
--follow-symlinks follow in-tree symlinks
--unordered do not order objects before emitting them
Emit object (blob or tree) with conversion or filter (stand-alone, or with batch)
--textconv run textconv on object's content
--filters run filters on object's content
--path blob|tree use a <path> for (--textconv | --filters); Not with 'batch'
ok 125 - Passing -t with --batch fails
expecting success of 1006.126 'Passing --batch with -t fails':
test_must_fail git cat-file -$opt --$batch $hello_sha1
fatal: '-t' is incompatible with batch mode
usage: git cat-file <type> <object>
or: git cat-file (-e | -p) <object>
or: git cat-file (-t | -s) [--allow-unknown-type] <object>
or: git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects]
[--buffer] [--follow-symlinks] [--unordered]
[--textconv | --filters] [-Z]
or: git cat-file (--textconv | --filters)
[<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]
Check object existence or emit object contents
-e check if <object> exists
-p pretty-print <object> content
Emit [broken] object attributes
-t show object type (one of 'blob', 'tree', 'commit', 'tag', ...)
-s show object size
--allow-unknown-type allow -s and -t to work with broken/corrupt objects
--use-mailmap use mail map file
--mailmap ... alias of --use-mailmap
Batch objects requested on stdin (or --batch-all-objects)
--batch[=<format>] show full <object> or <rev> contents
--batch-check[=<format>]
like --batch, but don't emit <contents>
-Z stdin and stdout is NUL-terminated
--batch-command[=<format>]
read commands from stdin
--batch-all-objects with --batch[-check]: ignores stdin, batches all known objects
Change or optimize batch output
--buffer buffer --batch output
--follow-symlinks follow in-tree symlinks
--unordered do not order objects before emitting them
Emit object (blob or tree) with conversion or filter (stand-alone, or with batch)
--textconv run textconv on object's content
--filters run filters on object's content
--path blob|tree use a <path> for (--textconv | --filters); Not with 'batch'
ok 126 - Passing --batch with -t fails
expecting success of 1006.127 'Passing -s with --batch fails':
test_must_fail git cat-file --$batch -$opt $hello_sha1
fatal: '-s' is incompatible with batch mode
usage: git cat-file <type> <object>
or: git cat-file (-e | -p) <object>
or: git cat-file (-t | -s) [--allow-unknown-type] <object>
or: git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects]
[--buffer] [--follow-symlinks] [--unordered]
[--textconv | --filters] [-Z]
or: git cat-file (--textconv | --filters)
[<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]
Check object existence or emit object contents
-e check if <object> exists
-p pretty-print <object> content
Emit [broken] object attributes
-t show object type (one of 'blob', 'tree', 'commit', 'tag', ...)
-s show object size
--allow-unknown-type allow -s and -t to work with broken/corrupt objects
--use-mailmap use mail map file
--mailmap ... alias of --use-mailmap
Batch objects requested on stdin (or --batch-all-objects)
--batch[=<format>] show full <object> or <rev> contents
--batch-check[=<format>]
like --batch, but don't emit <contents>
-Z stdin and stdout is NUL-terminated
--batch-command[=<format>]
read commands from stdin
--batch-all-objects with --batch[-check]: ignores stdin, batches all known objects
Change or optimize batch output
--buffer buffer --batch output
--follow-symlinks follow in-tree symlinks
--unordered do not order objects before emitting them
Emit object (blob or tree) with conversion or filter (stand-alone, or with batch)
--textconv run textconv on object's content
--filters run filters on object's content
--path blob|tree use a <path> for (--textconv | --filters); Not with 'batch'
ok 127 - Passing -s with --batch fails
expecting success of 1006.128 'Passing --batch with -s fails':
test_must_fail git cat-file -$opt --$batch $hello_sha1
fatal: '-s' is incompatible with batch mode
usage: git cat-file <type> <object>
or: git cat-file (-e | -p) <object>
or: git cat-file (-t | -s) [--allow-unknown-type] <object>
or: git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects]
[--buffer] [--follow-symlinks] [--unordered]
[--textconv | --filters] [-Z]
or: git cat-file (--textconv | --filters)
[<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]
Check object existence or emit object contents
-e check if <object> exists
-p pretty-print <object> content
Emit [broken] object attributes
-t show object type (one of 'blob', 'tree', 'commit', 'tag', ...)
-s show object size
--allow-unknown-type allow -s and -t to work with broken/corrupt objects
--use-mailmap use mail map file
--mailmap ... alias of --use-mailmap
Batch objects requested on stdin (or --batch-all-objects)
--batch[=<format>] show full <object> or <rev> contents
--batch-check[=<format>]
like --batch, but don't emit <contents>
-Z stdin and stdout is NUL-terminated
--batch-command[=<format>]
read commands from stdin
--batch-all-objects with --batch[-check]: ignores stdin, batches all known objects
Change or optimize batch output
--buffer buffer --batch output
--follow-symlinks follow in-tree symlinks
--unordered do not order objects before emitting them
Emit object (blob or tree) with conversion or filter (stand-alone, or with batch)
--textconv run textconv on object's content
--filters run filters on object's content
--path blob|tree use a <path> for (--textconv | --filters); Not with 'batch'
ok 128 - Passing --batch with -s fails
expecting success of 1006.129 'Passing -e with --batch fails':
test_must_fail git cat-file --$batch -$opt $hello_sha1
fatal: '-e' is incompatible with batch mode
usage: git cat-file <type> <object>
or: git cat-file (-e | -p) <object>
or: git cat-file (-t | -s) [--allow-unknown-type] <object>
or: git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects]
[--buffer] [--follow-symlinks] [--unordered]
[--textconv | --filters] [-Z]
or: git cat-file (--textconv | --filters)
[<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]
Check object existence or emit object contents
-e check if <object> exists
-p pretty-print <object> content
Emit [broken] object attributes
-t show object type (one of 'blob', 'tree', 'commit', 'tag', ...)
-s show object size
--allow-unknown-type allow -s and -t to work with broken/corrupt objects
--use-mailmap use mail map file
--mailmap ... alias of --use-mailmap
Batch objects requested on stdin (or --batch-all-objects)
--batch[=<format>] show full <object> or <rev> contents
--batch-check[=<format>]
like --batch, but don't emit <contents>
-Z stdin and stdout is NUL-terminated
--batch-command[=<format>]
read commands from stdin
--batch-all-objects with --batch[-check]: ignores stdin, batches all known objects
Change or optimize batch output
--buffer buffer --batch output
--follow-symlinks follow in-tree symlinks
--unordered do not order objects before emitting them
Emit object (blob or tree) with conversion or filter (stand-alone, or with batch)
--textconv run textconv on object's content
--filters run filters on object's content
--path blob|tree use a <path> for (--textconv | --filters); Not with 'batch'
ok 129 - Passing -e with --batch fails
expecting success of 1006.130 'Passing --batch with -e fails':
test_must_fail git cat-file -$opt --$batch $hello_sha1
fatal: '-e' is incompatible with batch mode
usage: git cat-file <type> <object>
or: git cat-file (-e | -p) <object>
or: git cat-file (-t | -s) [--allow-unknown-type] <object>
or: git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects]
[--buffer] [--follow-symlinks] [--unordered]
[--textconv | --filters] [-Z]
or: git cat-file (--textconv | --filters)
[<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]
Check object existence or emit object contents
-e check if <object> exists
-p pretty-print <object> content
Emit [broken] object attributes
-t show object type (one of 'blob', 'tree', 'commit', 'tag', ...)
-s show object size
--allow-unknown-type allow -s and -t to work with broken/corrupt objects
--use-mailmap use mail map file
--mailmap ... alias of --use-mailmap
Batch objects requested on stdin (or --batch-all-objects)
--batch[=<format>] show full <object> or <rev> contents
--batch-check[=<format>]
like --batch, but don't emit <contents>
-Z stdin and stdout is NUL-terminated
--batch-command[=<format>]
read commands from stdin
--batch-all-objects with --batch[-check]: ignores stdin, batches all known objects
Change or optimize batch output
--buffer buffer --batch output
--follow-symlinks follow in-tree symlinks
--unordered do not order objects before emitting them
Emit object (blob or tree) with conversion or filter (stand-alone, or with batch)
--textconv run textconv on object's content
--filters run filters on object's content
--path blob|tree use a <path> for (--textconv | --filters); Not with 'batch'
ok 130 - Passing --batch with -e fails
expecting success of 1006.131 'Passing -p with --batch fails':
test_must_fail git cat-file --$batch -$opt $hello_sha1
fatal: '-p' is incompatible with batch mode
usage: git cat-file <type> <object>
or: git cat-file (-e | -p) <object>
or: git cat-file (-t | -s) [--allow-unknown-type] <object>
or: git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects]
[--buffer] [--follow-symlinks] [--unordered]
[--textconv | --filters] [-Z]
or: git cat-file (--textconv | --filters)
[<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]
Check object existence or emit object contents
-e check if <object> exists
-p pretty-print <object> content
Emit [broken] object attributes
-t show object type (one of 'blob', 'tree', 'commit', 'tag', ...)
-s show object size
--allow-unknown-type allow -s and -t to work with broken/corrupt objects
--use-mailmap use mail map file
--mailmap ... alias of --use-mailmap
Batch objects requested on stdin (or --batch-all-objects)
--batch[=<format>] show full <object> or <rev> contents
--batch-check[=<format>]
like --batch, but don't emit <contents>
-Z stdin and stdout is NUL-terminated
--batch-command[=<format>]
read commands from stdin
--batch-all-objects with --batch[-check]: ignores stdin, batches all known objects
Change or optimize batch output
--buffer buffer --batch output
--follow-symlinks follow in-tree symlinks
--unordered do not order objects before emitting them
Emit object (blob or tree) with conversion or filter (stand-alone, or with batch)
--textconv run textconv on object's content
--filters run filters on object's content
--path blob|tree use a <path> for (--textconv | --filters); Not with 'batch'
ok 131 - Passing -p with --batch fails
expecting success of 1006.132 'Passing --batch with -p fails':
test_must_fail git cat-file -$opt --$batch $hello_sha1
fatal: '-p' is incompatible with batch mode
usage: git cat-file <type> <object>
or: git cat-file (-e | -p) <object>
or: git cat-file (-t | -s) [--allow-unknown-type] <object>
or: git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects]
[--buffer] [--follow-symlinks] [--unordered]
[--textconv | --filters] [-Z]
or: git cat-file (--textconv | --filters)
[<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]
Check object existence or emit object contents
-e check if <object> exists
-p pretty-print <object> content
Emit [broken] object attributes
-t show object type (one of 'blob', 'tree', 'commit', 'tag', ...)
-s show object size
--allow-unknown-type allow -s and -t to work with broken/corrupt objects
--use-mailmap use mail map file
--mailmap ... alias of --use-mailmap
Batch objects requested on stdin (or --batch-all-objects)
--batch[=<format>] show full <object> or <rev> contents
--batch-check[=<format>]
like --batch, but don't emit <contents>
-Z stdin and stdout is NUL-terminated
--batch-command[=<format>]
read commands from stdin
--batch-all-objects with --batch[-check]: ignores stdin, batches all known objects
Change or optimize batch output
--buffer buffer --batch output
--follow-symlinks follow in-tree symlinks
--unordered do not order objects before emitting them
Emit object (blob or tree) with conversion or filter (stand-alone, or with batch)
--textconv run textconv on object's content
--filters run filters on object's content
--path blob|tree use a <path> for (--textconv | --filters); Not with 'batch'
ok 132 - Passing --batch with -p fails
expecting success of 1006.133 'Passing <type> with --batch fails':
test_must_fail git cat-file --$batch blob $hello_sha1
fatal: batch modes take no arguments
usage: git cat-file <type> <object>
or: git cat-file (-e | -p) <object>
or: git cat-file (-t | -s) [--allow-unknown-type] <object>
or: git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects]
[--buffer] [--follow-symlinks] [--unordered]
[--textconv | --filters] [-Z]
or: git cat-file (--textconv | --filters)
[<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]
Check object existence or emit object contents
-e check if <object> exists
-p pretty-print <object> content
Emit [broken] object attributes
-t show object type (one of 'blob', 'tree', 'commit', 'tag', ...)
-s show object size
--allow-unknown-type allow -s and -t to work with broken/corrupt objects
--use-mailmap use mail map file
--mailmap ... alias of --use-mailmap
Batch objects requested on stdin (or --batch-all-objects)
--batch[=<format>] show full <object> or <rev> contents
--batch-check[=<format>]
like --batch, but don't emit <contents>
-Z stdin and stdout is NUL-terminated
--batch-command[=<format>]
read commands from stdin
--batch-all-objects with --batch[-check]: ignores stdin, batches all known objects
Change or optimize batch output
--buffer buffer --batch output
--follow-symlinks follow in-tree symlinks
--unordered do not order objects before emitting them
Emit object (blob or tree) with conversion or filter (stand-alone, or with batch)
--textconv run textconv on object's content
--filters run filters on object's content
--path blob|tree use a <path> for (--textconv | --filters); Not with 'batch'
ok 133 - Passing <type> with --batch fails
expecting success of 1006.134 'Passing --batch with <type> fails':
test_must_fail git cat-file blob --$batch $hello_sha1
fatal: batch modes take no arguments
usage: git cat-file <type> <object>
or: git cat-file (-e | -p) <object>
or: git cat-file (-t | -s) [--allow-unknown-type] <object>
or: git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects]
[--buffer] [--follow-symlinks] [--unordered]
[--textconv | --filters] [-Z]
or: git cat-file (--textconv | --filters)
[<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]
Check object existence or emit object contents
-e check if <object> exists
-p pretty-print <object> content
Emit [broken] object attributes
-t show object type (one of 'blob', 'tree', 'commit', 'tag', ...)
-s show object size
--allow-unknown-type allow -s and -t to work with broken/corrupt objects
--use-mailmap use mail map file
--mailmap ... alias of --use-mailmap
Batch objects requested on stdin (or --batch-all-objects)
--batch[=<format>] show full <object> or <rev> contents
--batch-check[=<format>]
like --batch, but don't emit <contents>
-Z stdin and stdout is NUL-terminated
--batch-command[=<format>]
read commands from stdin
--batch-all-objects with --batch[-check]: ignores stdin, batches all known objects
Change or optimize batch output
--buffer buffer --batch output
--follow-symlinks follow in-tree symlinks
--unordered do not order objects before emitting them
Emit object (blob or tree) with conversion or filter (stand-alone, or with batch)
--textconv run textconv on object's content
--filters run filters on object's content
--path blob|tree use a <path> for (--textconv | --filters); Not with 'batch'
ok 134 - Passing --batch with <type> fails
expecting success of 1006.135 'Passing sha1 with --batch fails':
test_must_fail git cat-file --$batch $hello_sha1
fatal: batch modes take no arguments
usage: git cat-file <type> <object>
or: git cat-file (-e | -p) <object>
or: git cat-file (-t | -s) [--allow-unknown-type] <object>
or: git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects]
[--buffer] [--follow-symlinks] [--unordered]
[--textconv | --filters] [-Z]
or: git cat-file (--textconv | --filters)
[<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]
Check object existence or emit object contents
-e check if <object> exists
-p pretty-print <object> content
Emit [broken] object attributes
-t show object type (one of 'blob', 'tree', 'commit', 'tag', ...)
-s show object size
--allow-unknown-type allow -s and -t to work with broken/corrupt objects
--use-mailmap use mail map file
--mailmap ... alias of --use-mailmap
Batch objects requested on stdin (or --batch-all-objects)
--batch[=<format>] show full <object> or <rev> contents
--batch-check[=<format>]
like --batch, but don't emit <contents>
-Z stdin and stdout is NUL-terminated
--batch-command[=<format>]
read commands from stdin
--batch-all-objects with --batch[-check]: ignores stdin, batches all known objects
Change or optimize batch output
--buffer buffer --batch output
--follow-symlinks follow in-tree symlinks
--unordered do not order objects before emitting them
Emit object (blob or tree) with conversion or filter (stand-alone, or with batch)
--textconv run textconv on object's content
--filters run filters on object's content
--path blob|tree use a <path> for (--textconv | --filters); Not with 'batch'
ok 135 - Passing sha1 with --batch fails
expecting success of 1006.136 'Passing -t with --batch-check fails':
test_must_fail git cat-file --$batch -$opt $hello_sha1
fatal: '-t' is incompatible with batch mode
usage: git cat-file <type> <object>
or: git cat-file (-e | -p) <object>
or: git cat-file (-t | -s) [--allow-unknown-type] <object>
or: git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects]
[--buffer] [--follow-symlinks] [--unordered]
[--textconv | --filters] [-Z]
or: git cat-file (--textconv | --filters)
[<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]
Check object existence or emit object contents
-e check if <object> exists
-p pretty-print <object> content
Emit [broken] object attributes
-t show object type (one of 'blob', 'tree', 'commit', 'tag', ...)
-s show object size
--allow-unknown-type allow -s and -t to work with broken/corrupt objects
--use-mailmap use mail map file
--mailmap ... alias of --use-mailmap
Batch objects requested on stdin (or --batch-all-objects)
--batch[=<format>] show full <object> or <rev> contents
--batch-check[=<format>]
like --batch, but don't emit <contents>
-Z stdin and stdout is NUL-terminated
--batch-command[=<format>]
read commands from stdin
--batch-all-objects with --batch[-check]: ignores stdin, batches all known objects
Change or optimize batch output
--buffer buffer --batch output
--follow-symlinks follow in-tree symlinks
--unordered do not order objects before emitting them
Emit object (blob or tree) with conversion or filter (stand-alone, or with batch)
--textconv run textconv on object's content
--filters run filters on object's content
--path blob|tree use a <path> for (--textconv | --filters); Not with 'batch'
ok 136 - Passing -t with --batch-check fails
expecting success of 1006.137 'Passing --batch-check with -t fails':
test_must_fail git cat-file -$opt --$batch $hello_sha1
fatal: '-t' is incompatible with batch mode
usage: git cat-file <type> <object>
or: git cat-file (-e | -p) <object>
or: git cat-file (-t | -s) [--allow-unknown-type] <object>
or: git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects]
[--buffer] [--follow-symlinks] [--unordered]
[--textconv | --filters] [-Z]
or: git cat-file (--textconv | --filters)
[<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]
Check object existence or emit object contents
-e check if <object> exists
-p pretty-print <object> content
Emit [broken] object attributes
-t show object type (one of 'blob', 'tree', 'commit', 'tag', ...)
-s show object size
--allow-unknown-type allow -s and -t to work with broken/corrupt objects
--use-mailmap use mail map file
--mailmap ... alias of --use-mailmap
Batch objects requested on stdin (or --batch-all-objects)
--batch[=<format>] show full <object> or <rev> contents
--batch-check[=<format>]
like --batch, but don't emit <contents>
-Z stdin and stdout is NUL-terminated
--batch-command[=<format>]
read commands from stdin
--batch-all-objects with --batch[-check]: ignores stdin, batches all known objects
Change or optimize batch output
--buffer buffer --batch output
--follow-symlinks follow in-tree symlinks
--unordered do not order objects before emitting them
Emit object (blob or tree) with conversion or filter (stand-alone, or with batch)
--textconv run textconv on object's content
--filters run filters on object's content
--path blob|tree use a <path> for (--textconv | --filters); Not with 'batch'
ok 137 - Passing --batch-check with -t fails
expecting success of 1006.138 'Passing -s with --batch-check fails':
test_must_fail git cat-file --$batch -$opt $hello_sha1
fatal: '-s' is incompatible with batch mode
usage: git cat-file <type> <object>
or: git cat-file (-e | -p) <object>
or: git cat-file (-t | -s) [--allow-unknown-type] <object>
or: git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects]
[--buffer] [--follow-symlinks] [--unordered]
[--textconv | --filters] [-Z]
or: git cat-file (--textconv | --filters)
[<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]
Check object existence or emit object contents
-e check if <object> exists
-p pretty-print <object> content
Emit [broken] object attributes
-t show object type (one of 'blob', 'tree', 'commit', 'tag', ...)
-s show object size
--allow-unknown-type allow -s and -t to work with broken/corrupt objects
--use-mailmap use mail map file
--mailmap ... alias of --use-mailmap
Batch objects requested on stdin (or --batch-all-objects)
--batch[=<format>] show full <object> or <rev> contents
--batch-check[=<format>]
like --batch, but don't emit <contents>
-Z stdin and stdout is NUL-terminated
--batch-command[=<format>]
read commands from stdin
--batch-all-objects with --batch[-check]: ignores stdin, batches all known objects
Change or optimize batch output
--buffer buffer --batch output
--follow-symlinks follow in-tree symlinks
--unordered do not order objects before emitting them
Emit object (blob or tree) with conversion or filter (stand-alone, or with batch)
--textconv run textconv on object's content
--filters run filters on object's content
--path blob|tree use a <path> for (--textconv | --filters); Not with 'batch'
ok 138 - Passing -s with --batch-check fails
expecting success of 1006.139 'Passing --batch-check with -s fails':
test_must_fail git cat-file -$opt --$batch $hello_sha1
fatal: '-s' is incompatible with batch mode
usage: git cat-file <type> <object>
or: git cat-file (-e | -p) <object>
or: git cat-file (-t | -s) [--allow-unknown-type] <object>
or: git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects]
[--buffer] [--follow-symlinks] [--unordered]
[--textconv | --filters] [-Z]
or: git cat-file (--textconv | --filters)
[<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]
Check object existence or emit object contents
-e check if <object> exists
-p pretty-print <object> content
Emit [broken] object attributes
-t show object type (one of 'blob', 'tree', 'commit', 'tag', ...)
-s show object size
--allow-unknown-type allow -s and -t to work with broken/corrupt objects
--use-mailmap use mail map file
--mailmap ... alias of --use-mailmap
Batch objects requested on stdin (or --batch-all-objects)
--batch[=<format>] show full <object> or <rev> contents
--batch-check[=<format>]
like --batch, but don't emit <contents>
-Z stdin and stdout is NUL-terminated
--batch-command[=<format>]
read commands from stdin
--batch-all-objects with --batch[-check]: ignores stdin, batches all known objects
Change or optimize batch output
--buffer buffer --batch output
--follow-symlinks follow in-tree symlinks
--unordered do not order objects before emitting them
Emit object (blob or tree) with conversion or filter (stand-alone, or with batch)
--textconv run textconv on object's content
--filters run filters on object's content
--path blob|tree use a <path> for (--textconv | --filters); Not with 'batch'
ok 139 - Passing --batch-check with -s fails
expecting success of 1006.140 'Passing -e with --batch-check fails':
test_must_fail git cat-file --$batch -$opt $hello_sha1
fatal: '-e' is incompatible with batch mode
usage: git cat-file <type> <object>
or: git cat-file (-e | -p) <object>
or: git cat-file (-t | -s) [--allow-unknown-type] <object>
or: git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects]
[--buffer] [--follow-symlinks] [--unordered]
[--textconv | --filters] [-Z]
or: git cat-file (--textconv | --filters)
[<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]
Check object existence or emit object contents
-e check if <object> exists
-p pretty-print <object> content
Emit [broken] object attributes
-t show object type (one of 'blob', 'tree', 'commit', 'tag', ...)
-s show object size
--allow-unknown-type allow -s and -t to work with broken/corrupt objects
--use-mailmap use mail map file
--mailmap ... alias of --use-mailmap
Batch objects requested on stdin (or --batch-all-objects)
--batch[=<format>] show full <object> or <rev> contents
--batch-check[=<format>]
like --batch, but don't emit <contents>
-Z stdin and stdout is NUL-terminated
--batch-command[=<format>]
read commands from stdin
--batch-all-objects with --batch[-check]: ignores stdin, batches all known objects
Change or optimize batch output
--buffer buffer --batch output
--follow-symlinks follow in-tree symlinks
--unordered do not order objects before emitting them
Emit object (blob or tree) with conversion or filter (stand-alone, or with batch)
--textconv run textconv on object's content
--filters run filters on object's content
--path blob|tree use a <path> for (--textconv | --filters); Not with 'batch'
ok 140 - Passing -e with --batch-check fails
expecting success of 1006.141 'Passing --batch-check with -e fails':
test_must_fail git cat-file -$opt --$batch $hello_sha1
fatal: '-e' is incompatible with batch mode
usage: git cat-file <type> <object>
or: git cat-file (-e | -p) <object>
or: git cat-file (-t | -s) [--allow-unknown-type] <object>
or: git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects]
[--buffer] [--follow-symlinks] [--unordered]
[--textconv | --filters] [-Z]
or: git cat-file (--textconv | --filters)
[<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]
Check object existence or emit object contents
-e check if <object> exists
-p pretty-print <object> content
Emit [broken] object attributes
-t show object type (one of 'blob', 'tree', 'commit', 'tag', ...)
-s show object size
--allow-unknown-type allow -s and -t to work with broken/corrupt objects
--use-mailmap use mail map file
--mailmap ... alias of --use-mailmap
Batch objects requested on stdin (or --batch-all-objects)
--batch[=<format>] show full <object> or <rev> contents
--batch-check[=<format>]
like --batch, but don't emit <contents>
-Z stdin and stdout is NUL-terminated
--batch-command[=<format>]
read commands from stdin
--batch-all-objects with --batch[-check]: ignores stdin, batches all known objects
Change or optimize batch output
--buffer buffer --batch output
--follow-symlinks follow in-tree symlinks
--unordered do not order objects before emitting them
Emit object (blob or tree) with conversion or filter (stand-alone, or with batch)
--textconv run textconv on object's content
--filters run filters on object's content
--path blob|tree use a <path> for (--textconv | --filters); Not with 'batch'
ok 141 - Passing --batch-check with -e fails
expecting success of 1006.142 'Passing -p with --batch-check fails':
test_must_fail git cat-file --$batch -$opt $hello_sha1
fatal: '-p' is incompatible with batch mode
usage: git cat-file <type> <object>
or: git cat-file (-e | -p) <object>
or: git cat-file (-t | -s) [--allow-unknown-type] <object>
or: git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects]
[--buffer] [--follow-symlinks] [--unordered]
[--textconv | --filters] [-Z]
or: git cat-file (--textconv | --filters)
[<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]
Check object existence or emit object contents
-e check if <object> exists
-p pretty-print <object> content
Emit [broken] object attributes
-t show object type (one of 'blob', 'tree', 'commit', 'tag', ...)
-s show object size
--allow-unknown-type allow -s and -t to work with broken/corrupt objects
--use-mailmap use mail map file
--mailmap ... alias of --use-mailmap
Batch objects requested on stdin (or --batch-all-objects)
--batch[=<format>] show full <object> or <rev> contents
--batch-check[=<format>]
like --batch, but don't emit <contents>
-Z stdin and stdout is NUL-terminated
--batch-command[=<format>]
read commands from stdin
--batch-all-objects with --batch[-check]: ignores stdin, batches all known objects
Change or optimize batch output
--buffer buffer --batch output
--follow-symlinks follow in-tree symlinks
--unordered do not order objects before emitting them
Emit object (blob or tree) with conversion or filter (stand-alone, or with batch)
--textconv run textconv on object's content
--filters run filters on object's content
--path blob|tree use a <path> for (--textconv | --filters); Not with 'batch'
ok 142 - Passing -p with --batch-check fails
expecting success of 1006.143 'Passing --batch-check with -p fails':
test_must_fail git cat-file -$opt --$batch $hello_sha1
fatal: '-p' is incompatible with batch mode
usage: git cat-file <type> <object>
or: git cat-file (-e | -p) <object>
or: git cat-file (-t | -s) [--allow-unknown-type] <object>
or: git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects]
[--buffer] [--follow-symlinks] [--unordered]
[--textconv | --filters] [-Z]
or: git cat-file (--textconv | --filters)
[<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]
Check object existence or emit object contents
-e check if <object> exists
-p pretty-print <object> content
Emit [broken] object attributes
-t show object type (one of 'blob', 'tree', 'commit', 'tag', ...)
-s show object size
--allow-unknown-type allow -s and -t to work with broken/corrupt objects
--use-mailmap use mail map file
--mailmap ... alias of --use-mailmap
Batch objects requested on stdin (or --batch-all-objects)
--batch[=<format>] show full <object> or <rev> contents
--batch-check[=<format>]
like --batch, but don't emit <contents>
-Z stdin and stdout is NUL-terminated
--batch-command[=<format>]
read commands from stdin
--batch-all-objects with --batch[-check]: ignores stdin, batches all known objects
Change or optimize batch output
--buffer buffer --batch output
--follow-symlinks follow in-tree symlinks
--unordered do not order objects before emitting them
Emit object (blob or tree) with conversion or filter (stand-alone, or with batch)
--textconv run textconv on object's content
--filters run filters on object's content
--path blob|tree use a <path> for (--textconv | --filters); Not with 'batch'
ok 143 - Passing --batch-check with -p fails
expecting success of 1006.144 'Passing <type> with --batch-check fails':
test_must_fail git cat-file --$batch blob $hello_sha1
fatal: batch modes take no arguments
usage: git cat-file <type> <object>
or: git cat-file (-e | -p) <object>
or: git cat-file (-t | -s) [--allow-unknown-type] <object>
or: git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects]
[--buffer] [--follow-symlinks] [--unordered]
[--textconv | --filters] [-Z]
or: git cat-file (--textconv | --filters)
[<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]
Check object existence or emit object contents
-e check if <object> exists
-p pretty-print <object> content
Emit [broken] object attributes
-t show object type (one of 'blob', 'tree', 'commit', 'tag', ...)
-s show object size
--allow-unknown-type allow -s and -t to work with broken/corrupt objects
--use-mailmap use mail map file
--mailmap ... alias of --use-mailmap
Batch objects requested on stdin (or --batch-all-objects)
--batch[=<format>] show full <object> or <rev> contents
--batch-check[=<format>]
like --batch, but don't emit <contents>
-Z stdin and stdout is NUL-terminated
--batch-command[=<format>]
read commands from stdin
--batch-all-objects with --batch[-check]: ignores stdin, batches all known objects
Change or optimize batch output
--buffer buffer --batch output
--follow-symlinks follow in-tree symlinks
--unordered do not order objects before emitting them
Emit object (blob or tree) with conversion or filter (stand-alone, or with batch)
--textconv run textconv on object's content
--filters run filters on object's content
--path blob|tree use a <path> for (--textconv | --filters); Not with 'batch'
ok 144 - Passing <type> with --batch-check fails
expecting success of 1006.145 'Passing --batch-check with <type> fails':
test_must_fail git cat-file blob --$batch $hello_sha1
fatal: batch modes take no arguments
usage: git cat-file <type> <object>
or: git cat-file (-e | -p) <object>
or: git cat-file (-t | -s) [--allow-unknown-type] <object>
or: git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects]
[--buffer] [--follow-symlinks] [--unordered]
[--textconv | --filters] [-Z]
or: git cat-file (--textconv | --filters)
[<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]
Check object existence or emit object contents
-e check if <object> exists
-p pretty-print <object> content
Emit [broken] object attributes
-t show object type (one of 'blob', 'tree', 'commit', 'tag', ...)
-s show object size
--allow-unknown-type allow -s and -t to work with broken/corrupt objects
--use-mailmap use mail map file
--mailmap ... alias of --use-mailmap
Batch objects requested on stdin (or --batch-all-objects)
--batch[=<format>] show full <object> or <rev> contents
--batch-check[=<format>]
like --batch, but don't emit <contents>
-Z stdin and stdout is NUL-terminated
--batch-command[=<format>]
read commands from stdin
--batch-all-objects with --batch[-check]: ignores stdin, batches all known objects
Change or optimize batch output
--buffer buffer --batch output
--follow-symlinks follow in-tree symlinks
--unordered do not order objects before emitting them
Emit object (blob or tree) with conversion or filter (stand-alone, or with batch)
--textconv run textconv on object's content
--filters run filters on object's content
--path blob|tree use a <path> for (--textconv | --filters); Not with 'batch'
ok 145 - Passing --batch-check with <type> fails
expecting success of 1006.146 'Passing sha1 with --batch-check fails':
test_must_fail git cat-file --$batch $hello_sha1
fatal: batch modes take no arguments
usage: git cat-file <type> <object>
or: git cat-file (-e | -p) <object>
or: git cat-file (-t | -s) [--allow-unknown-type] <object>
or: git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects]
[--buffer] [--follow-symlinks] [--unordered]
[--textconv | --filters] [-Z]
or: git cat-file (--textconv | --filters)
[<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]
Check object existence or emit object contents
-e check if <object> exists
-p pretty-print <object> content
Emit [broken] object attributes
-t show object type (one of 'blob', 'tree', 'commit', 'tag', ...)
-s show object size
--allow-unknown-type allow -s and -t to work with broken/corrupt objects
--use-mailmap use mail map file
--mailmap ... alias of --use-mailmap
Batch objects requested on stdin (or --batch-all-objects)
--batch[=<format>] show full <object> or <rev> contents
--batch-check[=<format>]
like --batch, but don't emit <contents>
-Z stdin and stdout is NUL-terminated
--batch-command[=<format>]
read commands from stdin
--batch-all-objects with --batch[-check]: ignores stdin, batches all known objects
Change or optimize batch output
--buffer buffer --batch output
--follow-symlinks follow in-tree symlinks
--unordered do not order objects before emitting them
Emit object (blob or tree) with conversion or filter (stand-alone, or with batch)
--textconv run textconv on object's content
--filters run filters on object's content
--path blob|tree use a <path> for (--textconv | --filters); Not with 'batch'
ok 146 - Passing sha1 with --batch-check fails
expecting success of 1006.147 'Passing -t with --batch-command fails':
test_must_fail git cat-file --$batch -$opt $hello_sha1
fatal: '-t' is incompatible with batch mode
usage: git cat-file <type> <object>
or: git cat-file (-e | -p) <object>
or: git cat-file (-t | -s) [--allow-unknown-type] <object>
or: git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects]
[--buffer] [--follow-symlinks] [--unordered]
[--textconv | --filters] [-Z]
or: git cat-file (--textconv | --filters)
[<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]
Check object existence or emit object contents
-e check if <object> exists
-p pretty-print <object> content
Emit [broken] object attributes
-t show object type (one of 'blob', 'tree', 'commit', 'tag', ...)
-s show object size
--allow-unknown-type allow -s and -t to work with broken/corrupt objects
--use-mailmap use mail map file
--mailmap ... alias of --use-mailmap
Batch objects requested on stdin (or --batch-all-objects)
--batch[=<format>] show full <object> or <rev> contents
--batch-check[=<format>]
like --batch, but don't emit <contents>
-Z stdin and stdout is NUL-terminated
--batch-command[=<format>]
read commands from stdin
--batch-all-objects with --batch[-check]: ignores stdin, batches all known objects
Change or optimize batch output
--buffer buffer --batch output
--follow-symlinks follow in-tree symlinks
--unordered do not order objects before emitting them
Emit object (blob or tree) with conversion or filter (stand-alone, or with batch)
--textconv run textconv on object's content
--filters run filters on object's content
--path blob|tree use a <path> for (--textconv | --filters); Not with 'batch'
ok 147 - Passing -t with --batch-command fails
expecting success of 1006.148 'Passing --batch-command with -t fails':
test_must_fail git cat-file -$opt --$batch $hello_sha1
fatal: '-t' is incompatible with batch mode
usage: git cat-file <type> <object>
or: git cat-file (-e | -p) <object>
or: git cat-file (-t | -s) [--allow-unknown-type] <object>
or: git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects]
[--buffer] [--follow-symlinks] [--unordered]
[--textconv | --filters] [-Z]
or: git cat-file (--textconv | --filters)
[<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]
Check object existence or emit object contents
-e check if <object> exists
-p pretty-print <object> content
Emit [broken] object attributes
-t show object type (one of 'blob', 'tree', 'commit', 'tag', ...)
-s show object size
--allow-unknown-type allow -s and -t to work with broken/corrupt objects
--use-mailmap use mail map file
--mailmap ... alias of --use-mailmap
Batch objects requested on stdin (or --batch-all-objects)
--batch[=<format>] show full <object> or <rev> contents
--batch-check[=<format>]
like --batch, but don't emit <contents>
-Z stdin and stdout is NUL-terminated
--batch-command[=<format>]
read commands from stdin
--batch-all-objects with --batch[-check]: ignores stdin, batches all known objects
Change or optimize batch output
--buffer buffer --batch output
--follow-symlinks follow in-tree symlinks
--unordered do not order objects before emitting them
Emit object (blob or tree) with conversion or filter (stand-alone, or with batch)
--textconv run textconv on object's content
--filters run filters on object's content
--path blob|tree use a <path> for (--textconv | --filters); Not with 'batch'
ok 148 - Passing --batch-command with -t fails
expecting success of 1006.149 'Passing -s with --batch-command fails':
test_must_fail git cat-file --$batch -$opt $hello_sha1
fatal: '-s' is incompatible with batch mode
usage: git cat-file <type> <object>
or: git cat-file (-e | -p) <object>
or: git cat-file (-t | -s) [--allow-unknown-type] <object>
or: git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects]
[--buffer] [--follow-symlinks] [--unordered]
[--textconv | --filters] [-Z]
or: git cat-file (--textconv | --filters)
[<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]
Check object existence or emit object contents
-e check if <object> exists
-p pretty-print <object> content
Emit [broken] object attributes
-t show object type (one of 'blob', 'tree', 'commit', 'tag', ...)
-s show object size
--allow-unknown-type allow -s and -t to work with broken/corrupt objects
--use-mailmap use mail map file
--mailmap ... alias of --use-mailmap
Batch objects requested on stdin (or --batch-all-objects)
--batch[=<format>] show full <object> or <rev> contents
--batch-check[=<format>]
like --batch, but don't emit <contents>
-Z stdin and stdout is NUL-terminated
--batch-command[=<format>]
read commands from stdin
--batch-all-objects with --batch[-check]: ignores stdin, batches all known objects
Change or optimize batch output
--buffer buffer --batch output
--follow-symlinks follow in-tree symlinks
--unordered do not order objects before emitting them
Emit object (blob or tree) with conversion or filter (stand-alone, or with batch)
--textconv run textconv on object's content
--filters run filters on object's content
--path blob|tree use a <path> for (--textconv | --filters); Not with 'batch'
ok 149 - Passing -s with --batch-command fails
expecting success of 1006.150 'Passing --batch-command with -s fails':
test_must_fail git cat-file -$opt --$batch $hello_sha1
fatal: '-s' is incompatible with batch mode
usage: git cat-file <type> <object>
or: git cat-file (-e | -p) <object>
or: git cat-file (-t | -s) [--allow-unknown-type] <object>
or: git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects]
[--buffer] [--follow-symlinks] [--unordered]
[--textconv | --filters] [-Z]
or: git cat-file (--textconv | --filters)
[<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]
Check object existence or emit object contents
-e check if <object> exists
-p pretty-print <object> content
Emit [broken] object attributes
-t show object type (one of 'blob', 'tree', 'commit', 'tag', ...)
-s show object size
--allow-unknown-type allow -s and -t to work with broken/corrupt objects
--use-mailmap use mail map file
--mailmap ... alias of --use-mailmap
Batch objects requested on stdin (or --batch-all-objects)
--batch[=<format>] show full <object> or <rev> contents
--batch-check[=<format>]
like --batch, but don't emit <contents>
-Z stdin and stdout is NUL-terminated
--batch-command[=<format>]
read commands from stdin
--batch-all-objects with --batch[-check]: ignores stdin, batches all known objects
Change or optimize batch output
--buffer buffer --batch output
--follow-symlinks follow in-tree symlinks
--unordered do not order objects before emitting them
Emit object (blob or tree) with conversion or filter (stand-alone, or with batch)
--textconv run textconv on object's content
--filters run filters on object's content
--path blob|tree use a <path> for (--textconv | --filters); Not with 'batch'
ok 150 - Passing --batch-command with -s fails
expecting success of 1006.151 'Passing -e with --batch-command fails':
test_must_fail git cat-file --$batch -$opt $hello_sha1
fatal: '-e' is incompatible with batch mode
usage: git cat-file <type> <object>
or: git cat-file (-e | -p) <object>
or: git cat-file (-t | -s) [--allow-unknown-type] <object>
or: git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects]
[--buffer] [--follow-symlinks] [--unordered]
[--textconv | --filters] [-Z]
or: git cat-file (--textconv | --filters)
[<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]
Check object existence or emit object contents
-e check if <object> exists
-p pretty-print <object> content
Emit [broken] object attributes
-t show object type (one of 'blob', 'tree', 'commit', 'tag', ...)
-s show object size
--allow-unknown-type allow -s and -t to work with broken/corrupt objects
--use-mailmap use mail map file
--mailmap ... alias of --use-mailmap
Batch objects requested on stdin (or --batch-all-objects)
--batch[=<format>] show full <object> or <rev> contents
--batch-check[=<format>]
like --batch, but don't emit <contents>
-Z stdin and stdout is NUL-terminated
--batch-command[=<format>]
read commands from stdin
--batch-all-objects with --batch[-check]: ignores stdin, batches all known objects
Change or optimize batch output
--buffer buffer --batch output
--follow-symlinks follow in-tree symlinks
--unordered do not order objects before emitting them
Emit object (blob or tree) with conversion or filter (stand-alone, or with batch)
--textconv run textconv on object's content
--filters run filters on object's content
--path blob|tree use a <path> for (--textconv | --filters); Not with 'batch'
ok 151 - Passing -e with --batch-command fails
expecting success of 1006.152 'Passing --batch-command with -e fails':
test_must_fail git cat-file -$opt --$batch $hello_sha1
fatal: '-e' is incompatible with batch mode
usage: git cat-file <type> <object>
or: git cat-file (-e | -p) <object>
or: git cat-file (-t | -s) [--allow-unknown-type] <object>
or: git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects]
[--buffer] [--follow-symlinks] [--unordered]
[--textconv | --filters] [-Z]
or: git cat-file (--textconv | --filters)
[<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]
Check object existence or emit object contents
-e check if <object> exists
-p pretty-print <object> content
Emit [broken] object attributes
-t show object type (one of 'blob', 'tree', 'commit', 'tag', ...)
-s show object size
--allow-unknown-type allow -s and -t to work with broken/corrupt objects
--use-mailmap use mail map file
--mailmap ... alias of --use-mailmap
Batch objects requested on stdin (or --batch-all-objects)
--batch[=<format>] show full <object> or <rev> contents
--batch-check[=<format>]
like --batch, but don't emit <contents>
-Z stdin and stdout is NUL-terminated
--batch-command[=<format>]
read commands from stdin
--batch-all-objects with --batch[-check]: ignores stdin, batches all known objects
Change or optimize batch output
--buffer buffer --batch output
--follow-symlinks follow in-tree symlinks
--unordered do not order objects before emitting them
Emit object (blob or tree) with conversion or filter (stand-alone, or with batch)
--textconv run textconv on object's content
--filters run filters on object's content
--path blob|tree use a <path> for (--textconv | --filters); Not with 'batch'
ok 152 - Passing --batch-command with -e fails
expecting success of 1006.153 'Passing -p with --batch-command fails':
test_must_fail git cat-file --$batch -$opt $hello_sha1
fatal: '-p' is incompatible with batch mode
usage: git cat-file <type> <object>
or: git cat-file (-e | -p) <object>
or: git cat-file (-t | -s) [--allow-unknown-type] <object>
or: git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects]
[--buffer] [--follow-symlinks] [--unordered]
[--textconv | --filters] [-Z]
or: git cat-file (--textconv | --filters)
[<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]
Check object existence or emit object contents
-e check if <object> exists
-p pretty-print <object> content
Emit [broken] object attributes
-t show object type (one of 'blob', 'tree', 'commit', 'tag', ...)
-s show object size
--allow-unknown-type allow -s and -t to work with broken/corrupt objects
--use-mailmap use mail map file
--mailmap ... alias of --use-mailmap
Batch objects requested on stdin (or --batch-all-objects)
--batch[=<format>] show full <object> or <rev> contents
--batch-check[=<format>]
like --batch, but don't emit <contents>
-Z stdin and stdout is NUL-terminated
--batch-command[=<format>]
read commands from stdin
--batch-all-objects with --batch[-check]: ignores stdin, batches all known objects
Change or optimize batch output
--buffer buffer --batch output
--follow-symlinks follow in-tree symlinks
--unordered do not order objects before emitting them
Emit object (blob or tree) with conversion or filter (stand-alone, or with batch)
--textconv run textconv on object's content
--filters run filters on object's content
--path blob|tree use a <path> for (--textconv | --filters); Not with 'batch'
ok 153 - Passing -p with --batch-command fails
expecting success of 1006.154 'Passing --batch-command with -p fails':
test_must_fail git cat-file -$opt --$batch $hello_sha1
fatal: '-p' is incompatible with batch mode
usage: git cat-file <type> <object>
or: git cat-file (-e | -p) <object>
or: git cat-file (-t | -s) [--allow-unknown-type] <object>
or: git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects]
[--buffer] [--follow-symlinks] [--unordered]
[--textconv | --filters] [-Z]
or: git cat-file (--textconv | --filters)
[<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]
Check object existence or emit object contents
-e check if <object> exists
-p pretty-print <object> content
Emit [broken] object attributes
-t show object type (one of 'blob', 'tree', 'commit', 'tag', ...)
-s show object size
--allow-unknown-type allow -s and -t to work with broken/corrupt objects
--use-mailmap use mail map file
--mailmap ... alias of --use-mailmap
Batch objects requested on stdin (or --batch-all-objects)
--batch[=<format>] show full <object> or <rev> contents
--batch-check[=<format>]
like --batch, but don't emit <contents>
-Z stdin and stdout is NUL-terminated
--batch-command[=<format>]
read commands from stdin
--batch-all-objects with --batch[-check]: ignores stdin, batches all known objects
Change or optimize batch output
--buffer buffer --batch output
--follow-symlinks follow in-tree symlinks
--unordered do not order objects before emitting them
Emit object (blob or tree) with conversion or filter (stand-alone, or with batch)
--textconv run textconv on object's content
--filters run filters on object's content
--path blob|tree use a <path> for (--textconv | --filters); Not with 'batch'
ok 154 - Passing --batch-command with -p fails
expecting success of 1006.155 'Passing <type> with --batch-command fails':
test_must_fail git cat-file --$batch blob $hello_sha1
fatal: batch modes take no arguments
usage: git cat-file <type> <object>
or: git cat-file (-e | -p) <object>
or: git cat-file (-t | -s) [--allow-unknown-type] <object>
or: git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects]
[--buffer] [--follow-symlinks] [--unordered]
[--textconv | --filters] [-Z]
or: git cat-file (--textconv | --filters)
[<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]
Check object existence or emit object contents
-e check if <object> exists
-p pretty-print <object> content
Emit [broken] object attributes
-t show object type (one of 'blob', 'tree', 'commit', 'tag', ...)
-s show object size
--allow-unknown-type allow -s and -t to work with broken/corrupt objects
--use-mailmap use mail map file
--mailmap ... alias of --use-mailmap
Batch objects requested on stdin (or --batch-all-objects)
--batch[=<format>] show full <object> or <rev> contents
--batch-check[=<format>]
like --batch, but don't emit <contents>
-Z stdin and stdout is NUL-terminated
--batch-command[=<format>]
read commands from stdin
--batch-all-objects with --batch[-check]: ignores stdin, batches all known objects
Change or optimize batch output
--buffer buffer --batch output
--follow-symlinks follow in-tree symlinks
--unordered do not order objects before emitting them
Emit object (blob or tree) with conversion or filter (stand-alone, or with batch)
--textconv run textconv on object's content
--filters run filters on object's content
--path blob|tree use a <path> for (--textconv | --filters); Not with 'batch'
ok 155 - Passing <type> with --batch-command fails
expecting success of 1006.156 'Passing --batch-command with <type> fails':
test_must_fail git cat-file blob --$batch $hello_sha1
fatal: batch modes take no arguments
usage: git cat-file <type> <object>
or: git cat-file (-e | -p) <object>
or: git cat-file (-t | -s) [--allow-unknown-type] <object>
or: git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects]
[--buffer] [--follow-symlinks] [--unordered]
[--textconv | --filters] [-Z]
or: git cat-file (--textconv | --filters)
[<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]
Check object existence or emit object contents
-e check if <object> exists
-p pretty-print <object> content
Emit [broken] object attributes
-t show object type (one of 'blob', 'tree', 'commit', 'tag', ...)
-s show object size
--allow-unknown-type allow -s and -t to work with broken/corrupt objects
--use-mailmap use mail map file
--mailmap ... alias of --use-mailmap
Batch objects requested on stdin (or --batch-all-objects)
--batch[=<format>] show full <object> or <rev> contents
--batch-check[=<format>]
like --batch, but don't emit <contents>
-Z stdin and stdout is NUL-terminated
--batch-command[=<format>]
read commands from stdin
--batch-all-objects with --batch[-check]: ignores stdin, batches all known objects
Change or optimize batch output
--buffer buffer --batch output
--follow-symlinks follow in-tree symlinks
--unordered do not order objects before emitting them
Emit object (blob or tree) with conversion or filter (stand-alone, or with batch)
--textconv run textconv on object's content
--filters run filters on object's content
--path blob|tree use a <path> for (--textconv | --filters); Not with 'batch'
ok 156 - Passing --batch-command with <type> fails
expecting success of 1006.157 'Passing sha1 with --batch-command fails':
test_must_fail git cat-file --$batch $hello_sha1
fatal: batch modes take no arguments
usage: git cat-file <type> <object>
or: git cat-file (-e | -p) <object>
or: git cat-file (-t | -s) [--allow-unknown-type] <object>
or: git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects]
[--buffer] [--follow-symlinks] [--unordered]
[--textconv | --filters] [-Z]
or: git cat-file (--textconv | --filters)
[<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]
Check object existence or emit object contents
-e check if <object> exists
-p pretty-print <object> content
Emit [broken] object attributes
-t show object type (one of 'blob', 'tree', 'commit', 'tag', ...)
-s show object size
--allow-unknown-type allow -s and -t to work with broken/corrupt objects
--use-mailmap use mail map file
--mailmap ... alias of --use-mailmap
Batch objects requested on stdin (or --batch-all-objects)
--batch[=<format>] show full <object> or <rev> contents
--batch-check[=<format>]
like --batch, but don't emit <contents>
-Z stdin and stdout is NUL-terminated
--batch-command[=<format>]
read commands from stdin
--batch-all-objects with --batch[-check]: ignores stdin, batches all known objects
Change or optimize batch output
--buffer buffer --batch output
--follow-symlinks follow in-tree symlinks
--unordered do not order objects before emitting them
Emit object (blob or tree) with conversion or filter (stand-alone, or with batch)
--textconv run textconv on object's content
--filters run filters on object's content
--path blob|tree use a <path> for (--textconv | --filters); Not with 'batch'
ok 157 - Passing sha1 with --batch-command fails
expecting success of 1006.158 'Passing -t with --follow-symlinks fails':
test_must_fail git cat-file --follow-symlinks -$opt $hello_sha1
fatal: '--follow-symlinks' requires a batch mode
usage: git cat-file <type> <object>
or: git cat-file (-e | -p) <object>
or: git cat-file (-t | -s) [--allow-unknown-type] <object>
or: git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects]
[--buffer] [--follow-symlinks] [--unordered]
[--textconv | --filters] [-Z]
or: git cat-file (--textconv | --filters)
[<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]
Check object existence or emit object contents
-e check if <object> exists
-p pretty-print <object> content
Emit [broken] object attributes
-t show object type (one of 'blob', 'tree', 'commit', 'tag', ...)
-s show object size
--allow-unknown-type allow -s and -t to work with broken/corrupt objects
--use-mailmap use mail map file
--mailmap ... alias of --use-mailmap
Batch objects requested on stdin (or --batch-all-objects)
--batch[=<format>] show full <object> or <rev> contents
--batch-check[=<format>]
like --batch, but don't emit <contents>
-Z stdin and stdout is NUL-terminated
--batch-command[=<format>]
read commands from stdin
--batch-all-objects with --batch[-check]: ignores stdin, batches all known objects
Change or optimize batch output
--buffer buffer --batch output
--follow-symlinks follow in-tree symlinks
--unordered do not order objects before emitting them
Emit object (blob or tree) with conversion or filter (stand-alone, or with batch)
--textconv run textconv on object's content
--filters run filters on object's content
--path blob|tree use a <path> for (--textconv | --filters); Not with 'batch'
ok 158 - Passing -t with --follow-symlinks fails
expecting success of 1006.159 'Passing -s with --follow-symlinks fails':
test_must_fail git cat-file --follow-symlinks -$opt $hello_sha1
fatal: '--follow-symlinks' requires a batch mode
usage: git cat-file <type> <object>
or: git cat-file (-e | -p) <object>
or: git cat-file (-t | -s) [--allow-unknown-type] <object>
or: git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects]
[--buffer] [--follow-symlinks] [--unordered]
[--textconv | --filters] [-Z]
or: git cat-file (--textconv | --filters)
[<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]
Check object existence or emit object contents
-e check if <object> exists
-p pretty-print <object> content
Emit [broken] object attributes
-t show object type (one of 'blob', 'tree', 'commit', 'tag', ...)
-s show object size
--allow-unknown-type allow -s and -t to work with broken/corrupt objects
--use-mailmap use mail map file
--mailmap ... alias of --use-mailmap
Batch objects requested on stdin (or --batch-all-objects)
--batch[=<format>] show full <object> or <rev> contents
--batch-check[=<format>]
like --batch, but don't emit <contents>
-Z stdin and stdout is NUL-terminated
--batch-command[=<format>]
read commands from stdin
--batch-all-objects with --batch[-check]: ignores stdin, batches all known objects
Change or optimize batch output
--buffer buffer --batch output
--follow-symlinks follow in-tree symlinks
--unordered do not order objects before emitting them
Emit object (blob or tree) with conversion or filter (stand-alone, or with batch)
--textconv run textconv on object's content
--filters run filters on object's content
--path blob|tree use a <path> for (--textconv | --filters); Not with 'batch'
ok 159 - Passing -s with --follow-symlinks fails
expecting success of 1006.160 'Passing -e with --follow-symlinks fails':
test_must_fail git cat-file --follow-symlinks -$opt $hello_sha1
fatal: '--follow-symlinks' requires a batch mode
usage: git cat-file <type> <object>
or: git cat-file (-e | -p) <object>
or: git cat-file (-t | -s) [--allow-unknown-type] <object>
or: git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects]
[--buffer] [--follow-symlinks] [--unordered]
[--textconv | --filters] [-Z]
or: git cat-file (--textconv | --filters)
[<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]
Check object existence or emit object contents
-e check if <object> exists
-p pretty-print <object> content
Emit [broken] object attributes
-t show object type (one of 'blob', 'tree', 'commit', 'tag', ...)
-s show object size
--allow-unknown-type allow -s and -t to work with broken/corrupt objects
--use-mailmap use mail map file
--mailmap ... alias of --use-mailmap
Batch objects requested on stdin (or --batch-all-objects)
--batch[=<format>] show full <object> or <rev> contents
--batch-check[=<format>]
like --batch, but don't emit <contents>
-Z stdin and stdout is NUL-terminated
--batch-command[=<format>]
read commands from stdin
--batch-all-objects with --batch[-check]: ignores stdin, batches all known objects
Change or optimize batch output
--buffer buffer --batch output
--follow-symlinks follow in-tree symlinks
--unordered do not order objects before emitting them
Emit object (blob or tree) with conversion or filter (stand-alone, or with batch)
--textconv run textconv on object's content
--filters run filters on object's content
--path blob|tree use a <path> for (--textconv | --filters); Not with 'batch'
ok 160 - Passing -e with --follow-symlinks fails
expecting success of 1006.161 'Passing -p with --follow-symlinks fails':
test_must_fail git cat-file --follow-symlinks -$opt $hello_sha1
fatal: '--follow-symlinks' requires a batch mode
usage: git cat-file <type> <object>
or: git cat-file (-e | -p) <object>
or: git cat-file (-t | -s) [--allow-unknown-type] <object>
or: git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects]
[--buffer] [--follow-symlinks] [--unordered]
[--textconv | --filters] [-Z]
or: git cat-file (--textconv | --filters)
[<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]
Check object existence or emit object contents
-e check if <object> exists
-p pretty-print <object> content
Emit [broken] object attributes
-t show object type (one of 'blob', 'tree', 'commit', 'tag', ...)
-s show object size
--allow-unknown-type allow -s and -t to work with broken/corrupt objects
--use-mailmap use mail map file
--mailmap ... alias of --use-mailmap
Batch objects requested on stdin (or --batch-all-objects)
--batch[=<format>] show full <object> or <rev> contents
--batch-check[=<format>]
like --batch, but don't emit <contents>
-Z stdin and stdout is NUL-terminated
--batch-command[=<format>]
read commands from stdin
--batch-all-objects with --batch[-check]: ignores stdin, batches all known objects
Change or optimize batch output
--buffer buffer --batch output
--follow-symlinks follow in-tree symlinks
--unordered do not order objects before emitting them
Emit object (blob or tree) with conversion or filter (stand-alone, or with batch)
--textconv run textconv on object's content
--filters run filters on object's content
--path blob|tree use a <path> for (--textconv | --filters); Not with 'batch'
ok 161 - Passing -p with --follow-symlinks fails
expecting success of 1006.162 '--batch-check for a non-existent named object':
cat >expect <<-EOF &&
foobar42 missing
foobar84 missing
EOF
printf "foobar42\nfoobar84" >in &&
git cat-file --batch-check <in >actual &&
test_cmp expect actual
ok 162 - --batch-check for a non-existent named object
expecting success of 1006.163 '--batch-check for a non-existent hash':
cat >expect <<-EOF &&
0000000000000000000000000000000000000042 missing
0000000000000000000000000000000000000084 missing
EOF
printf "0000000000000000000000000000000000000042\n0000000000000000000000000000000000000084" >in &&
git cat-file --batch-check <in >actual &&
test_cmp expect actual
ok 163 - --batch-check for a non-existent hash
expecting success of 1006.164 '--batch for an existent and a non-existent hash':
cat >expect <<-EOF &&
$tag_sha1 tag $tag_size
$tag_content
0000000000000000000000000000000000000000 missing
EOF
printf "$tag_sha1\n0000000000000000000000000000000000000000" >in &&
git cat-file --batch <in >actual &&
test_cmp expect actual
ok 164 - --batch for an existent and a non-existent hash
expecting success of 1006.165 '--batch-check for an empty line':
cat >expect <<-EOF &&
missing
EOF
echo >in &&
git cat-file --batch-check <in >actual &&
test_cmp expect actual
ok 165 - --batch-check for an empty line
expecting success of 1006.166 'empty --batch-check notices missing object':
echo "$ZERO_OID missing" >expect &&
echo "$ZERO_OID" | git cat-file --batch-check="" >actual &&
test_cmp expect actual
ok 166 - empty --batch-check notices missing object
expecting success of 1006.167 '--batch with multiple sha1s gives correct format':
tr "\0" "\n" <batch_output >expect &&
echo_without_newline "$batch_input" >in &&
git cat-file --batch <in >actual &&
test_cmp expect actual
ok 167 - --batch with multiple sha1s gives correct format
expecting success of 1006.168 '--batch, -z with multiple sha1s gives correct format':
echo_without_newline_nul "$batch_input" >in &&
tr "\0" "\n" <batch_output >expect &&
git cat-file --batch -z <in >actual &&
test_cmp expect actual
ok 168 - --batch, -z with multiple sha1s gives correct format
expecting success of 1006.169 '--batch, -Z with multiple sha1s gives correct format':
echo_without_newline_nul "$batch_input" >in &&
git cat-file --batch -Z <in >actual &&
test_cmp batch_output actual
ok 169 - --batch, -Z with multiple sha1s gives correct format
expecting success of 1006.170 '--batch-check with multiple sha1s gives correct format':
tr "\0" "\n" <batch_check_output >expect &&
echo_without_newline "$batch_check_input" >in &&
git cat-file --batch-check <in >actual &&
test_cmp expect actual
ok 170 - --batch-check with multiple sha1s gives correct format
expecting success of 1006.171 '--batch-check, -z with multiple sha1s gives correct format':
tr "\0" "\n" <batch_check_output >expect &&
echo_without_newline_nul "$batch_check_input" >in &&
git cat-file --batch-check -z <in >actual &&
test_cmp expect actual
ok 171 - --batch-check, -z with multiple sha1s gives correct format
expecting success of 1006.172 '--batch-check, -Z with multiple sha1s gives correct format':
echo_without_newline_nul "$batch_check_input" >in &&
git cat-file --batch-check -Z <in >actual &&
test_cmp batch_check_output actual
ok 172 - --batch-check, -Z with multiple sha1s gives correct format
checking prerequisite: FUNNYNAMES
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-FUNNYNAMES" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-FUNNYNAMES" &&
test_have_prereq !MINGW &&
touch -- \
"FUNNYNAMES tab embedded" \
"FUNNYNAMES \"quote embedded\"" \
"FUNNYNAMES newline
embedded" 2>/dev/null &&
rm -- \
"FUNNYNAMES tab embedded" \
"FUNNYNAMES \"quote embedded\"" \
"FUNNYNAMES newline
embedded" 2>/dev/null
)
prerequisite FUNNYNAMES ok
expecting success of 1006.173 'setup with newline in input':
touch -- "newline${LF}embedded" &&
git add -- "newline${LF}embedded" &&
git commit -m "file with newline embedded" &&
test_tick &&
printf "HEAD:newline${LF}embedded" >in
[master (root-commit) a7561ce] file with newline embedded
Author: A U Thor <author@example.com>
2 files changed, 1 insertion(+)
create mode 100644 hello
create mode 100644 "newline\nembedded"
ok 173 - setup with newline in input
expecting success of 1006.174 '--batch-check, -z with newline in input':
git cat-file --batch-check -z <in >actual &&
echo "$(git rev-parse "HEAD:newline${LF}embedded") blob 0" >expect &&
test_cmp expect actual
ok 174 - --batch-check, -z with newline in input
expecting success of 1006.175 '--batch-check, -Z with newline in input':
git cat-file --batch-check -Z <in >actual &&
printf "%s\0" "$(git rev-parse "HEAD:newline${LF}embedded") blob 0" >expect &&
test_cmp expect actual
ok 175 - --batch-check, -Z with newline in input
expecting success of 1006.176 '--batch-command with multiple info calls gives correct format':
cat >expect <<-EOF &&
$hello_sha1 blob $hello_size
$tree_sha1 tree $tree_size
$commit_sha1 commit $commit_size
$tag_sha1 tag $tag_size
deadbeef missing
EOF
echo "$batch_command_multiple_info" >in &&
git cat-file --batch-command --buffer <in >actual &&
test_cmp expect actual &&
echo "$batch_command_multiple_info" | tr "\n" "\0" >in &&
git cat-file --batch-command --buffer -z <in >actual &&
test_cmp expect actual &&
echo "$batch_command_multiple_info" | tr "\n" "\0" >in &&
tr "\n" "\0" <expect >expect_nul &&
git cat-file --batch-command --buffer -Z <in >actual &&
test_cmp expect_nul actual
ok 176 - --batch-command with multiple info calls gives correct format
expecting success of 1006.177 '--batch-command with multiple command calls gives correct format':
printf "%s\0" \
"$hello_sha1 blob $hello_size" \
"$hello_content" \
"$commit_sha1 commit $commit_size" \
"$commit_content" \
"$tag_sha1 tag $tag_size" \
"$tag_content" \
"deadbeef missing" >expect_nul &&
tr "\0" "\n" <expect_nul >expect &&
echo "$batch_command_multiple_contents" >in &&
git cat-file --batch-command --buffer <in >actual &&
test_cmp expect actual &&
echo "$batch_command_multiple_contents" | tr "\n" "\0" >in &&
git cat-file --batch-command --buffer -z <in >actual &&
test_cmp expect actual &&
echo "$batch_command_multiple_contents" | tr "\n" "\0" >in &&
git cat-file --batch-command --buffer -Z <in >actual &&
test_cmp expect_nul actual
ok 177 - --batch-command with multiple command calls gives correct format
expecting success of 1006.178 'setup blobs which are likely to delta':
test-tool genrandom foo 10240 >foo &&
{ cat foo && echo plus; } >foo-plus &&
git add foo foo-plus &&
git commit -m foo &&
cat >blobs <<-\EOF
HEAD:foo
HEAD:foo-plus
EOF
[master 149611e] foo
Author: A U Thor <author@example.com>
2 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 foo
create mode 100644 foo-plus
ok 178 - setup blobs which are likely to delta
expecting success of 1006.179 'confirm that neither loose blob is a delta':
cat >expect <<-EOF &&
$ZERO_OID
$ZERO_OID
EOF
git cat-file --batch-check="%(deltabase)" <blobs >actual &&
test_cmp expect actual
ok 179 - confirm that neither loose blob is a delta
expecting success of 1006.180 '%(deltabase) reports packed delta bases':
git repack -ad &&
git cat-file --batch-check="%(deltabase)" <blobs >actual &&
{
grep "$(git rev-parse HEAD:foo)" actual ||
grep "$(git rev-parse HEAD:foo-plus)" actual
}
9b546ef00c80e00a1733cb882d607028fcd562fc
ok 180 - %(deltabase) reports packed delta bases
expecting success of 1006.181 'setup bogus data':
bogus_short_type="bogus" &&
bogus_short_content="bogus" &&
bogus_short_size=$(strlen "$bogus_short_content") &&
bogus_short_sha1=$(echo_without_newline "$bogus_short_content" | git hash-object -t $bogus_short_type --literally -w --stdin) &&
bogus_long_type="abcdefghijklmnopqrstuvwxyz1234679" &&
bogus_long_content="bogus" &&
bogus_long_size=$(strlen "$bogus_long_content") &&
bogus_long_sha1=$(echo_without_newline "$bogus_long_content" | git hash-object -t $bogus_long_type --literally -w --stdin)
ok 181 - setup bogus data
expecting success of 1006.182 'cat-file -s error on bogus short OID':
cat >expect <<-\EOF &&
fatal: invalid object type
EOF
if test "$arg1" = "--allow-unknown-type"
then
git cat-file $arg1 $arg2 $bogus_short_sha1
else
test_must_fail git cat-file $arg1 $arg2 $bogus_short_sha1 >out 2>actual &&
test_must_be_empty out &&
test_cmp expect actual
fi
ok 182 - cat-file -s error on bogus short OID
expecting success of 1006.183 'cat-file -s error on bogus full OID':
if test "$arg2" = "-p"
then
cat >expect <<-EOF
error: header for $bogus_long_sha1 too long, exceeds 32 bytes
fatal: Not a valid object name $bogus_long_sha1
EOF
else
cat >expect <<-EOF
error: header for $bogus_long_sha1 too long, exceeds 32 bytes
fatal: git cat-file: could not get object info
EOF
fi &&
if test "$arg1" = "--allow-unknown-type"
then
git cat-file $arg1 $arg2 $bogus_short_sha1
else
test_must_fail git cat-file $arg1 $arg2 $bogus_long_sha1 >out 2>actual &&
test_must_be_empty out &&
test_cmp expect actual
fi
ok 183 - cat-file -s error on bogus full OID
expecting success of 1006.184 'cat-file -s error on missing short OID':
cat >expect.err <<-EOF &&
fatal: Not a valid object name $(test_oid deadbeef_short)
EOF
test_must_fail git cat-file $arg1 $arg2 $(test_oid deadbeef_short) >out 2>err.actual &&
test_must_be_empty out &&
test_cmp expect.err err.actual
ok 184 - cat-file -s error on missing short OID
expecting success of 1006.185 'cat-file -s error on missing full OID':
if test "$arg2" = "-p"
then
cat >expect.err <<-EOF
fatal: Not a valid object name $(test_oid deadbeef)
EOF
else
cat >expect.err <<-\EOF
fatal: git cat-file: could not get object info
EOF
fi &&
test_must_fail git cat-file $arg1 $arg2 $(test_oid deadbeef) >out 2>err.actual &&
test_must_be_empty out &&
test_cmp expect.err err.actual
ok 185 - cat-file -s error on missing full OID
expecting success of 1006.186 'cat-file -t error on bogus short OID':
cat >expect <<-\EOF &&
fatal: invalid object type
EOF
if test "$arg1" = "--allow-unknown-type"
then
git cat-file $arg1 $arg2 $bogus_short_sha1
else
test_must_fail git cat-file $arg1 $arg2 $bogus_short_sha1 >out 2>actual &&
test_must_be_empty out &&
test_cmp expect actual
fi
ok 186 - cat-file -t error on bogus short OID
expecting success of 1006.187 'cat-file -t error on bogus full OID':
if test "$arg2" = "-p"
then
cat >expect <<-EOF
error: header for $bogus_long_sha1 too long, exceeds 32 bytes
fatal: Not a valid object name $bogus_long_sha1
EOF
else
cat >expect <<-EOF
error: header for $bogus_long_sha1 too long, exceeds 32 bytes
fatal: git cat-file: could not get object info
EOF
fi &&
if test "$arg1" = "--allow-unknown-type"
then
git cat-file $arg1 $arg2 $bogus_short_sha1
else
test_must_fail git cat-file $arg1 $arg2 $bogus_long_sha1 >out 2>actual &&
test_must_be_empty out &&
test_cmp expect actual
fi
ok 187 - cat-file -t error on bogus full OID
expecting success of 1006.188 'cat-file -t error on missing short OID':
cat >expect.err <<-EOF &&
fatal: Not a valid object name $(test_oid deadbeef_short)
EOF
test_must_fail git cat-file $arg1 $arg2 $(test_oid deadbeef_short) >out 2>err.actual &&
test_must_be_empty out &&
test_cmp expect.err err.actual
ok 188 - cat-file -t error on missing short OID
expecting success of 1006.189 'cat-file -t error on missing full OID':
if test "$arg2" = "-p"
then
cat >expect.err <<-EOF
fatal: Not a valid object name $(test_oid deadbeef)
EOF
else
cat >expect.err <<-\EOF
fatal: git cat-file: could not get object info
EOF
fi &&
test_must_fail git cat-file $arg1 $arg2 $(test_oid deadbeef) >out 2>err.actual &&
test_must_be_empty out &&
test_cmp expect.err err.actual
ok 189 - cat-file -t error on missing full OID
expecting success of 1006.190 'cat-file -p error on bogus short OID':
cat >expect <<-\EOF &&
fatal: invalid object type
EOF
if test "$arg1" = "--allow-unknown-type"
then
git cat-file $arg1 $arg2 $bogus_short_sha1
else
test_must_fail git cat-file $arg1 $arg2 $bogus_short_sha1 >out 2>actual &&
test_must_be_empty out &&
test_cmp expect actual
fi
ok 190 - cat-file -p error on bogus short OID
expecting success of 1006.191 'cat-file -p error on bogus full OID':
if test "$arg2" = "-p"
then
cat >expect <<-EOF
error: header for $bogus_long_sha1 too long, exceeds 32 bytes
fatal: Not a valid object name $bogus_long_sha1
EOF
else
cat >expect <<-EOF
error: header for $bogus_long_sha1 too long, exceeds 32 bytes
fatal: git cat-file: could not get object info
EOF
fi &&
if test "$arg1" = "--allow-unknown-type"
then
git cat-file $arg1 $arg2 $bogus_short_sha1
else
test_must_fail git cat-file $arg1 $arg2 $bogus_long_sha1 >out 2>actual &&
test_must_be_empty out &&
test_cmp expect actual
fi
ok 191 - cat-file -p error on bogus full OID
expecting success of 1006.192 'cat-file -p error on missing short OID':
cat >expect.err <<-EOF &&
fatal: Not a valid object name $(test_oid deadbeef_short)
EOF
test_must_fail git cat-file $arg1 $arg2 $(test_oid deadbeef_short) >out 2>err.actual &&
test_must_be_empty out &&
test_cmp expect.err err.actual
ok 192 - cat-file -p error on missing short OID
expecting success of 1006.193 'cat-file -p error on missing full OID':
if test "$arg2" = "-p"
then
cat >expect.err <<-EOF
fatal: Not a valid object name $(test_oid deadbeef)
EOF
else
cat >expect.err <<-\EOF
fatal: git cat-file: could not get object info
EOF
fi &&
test_must_fail git cat-file $arg1 $arg2 $(test_oid deadbeef) >out 2>err.actual &&
test_must_be_empty out &&
test_cmp expect.err err.actual
ok 193 - cat-file -p error on missing full OID
expecting success of 1006.194 'cat-file --allow-unknown-type -s error on bogus short OID':
cat >expect <<-\EOF &&
fatal: invalid object type
EOF
if test "$arg1" = "--allow-unknown-type"
then
git cat-file $arg1 $arg2 $bogus_short_sha1
else
test_must_fail git cat-file $arg1 $arg2 $bogus_short_sha1 >out 2>actual &&
test_must_be_empty out &&
test_cmp expect actual
fi
5
ok 194 - cat-file --allow-unknown-type -s error on bogus short OID
expecting success of 1006.195 'cat-file --allow-unknown-type -s error on bogus full OID':
if test "$arg2" = "-p"
then
cat >expect <<-EOF
error: header for $bogus_long_sha1 too long, exceeds 32 bytes
fatal: Not a valid object name $bogus_long_sha1
EOF
else
cat >expect <<-EOF
error: header for $bogus_long_sha1 too long, exceeds 32 bytes
fatal: git cat-file: could not get object info
EOF
fi &&
if test "$arg1" = "--allow-unknown-type"
then
git cat-file $arg1 $arg2 $bogus_short_sha1
else
test_must_fail git cat-file $arg1 $arg2 $bogus_long_sha1 >out 2>actual &&
test_must_be_empty out &&
test_cmp expect actual
fi
5
ok 195 - cat-file --allow-unknown-type -s error on bogus full OID
expecting success of 1006.196 'cat-file --allow-unknown-type -s error on missing short OID':
cat >expect.err <<-EOF &&
fatal: Not a valid object name $(test_oid deadbeef_short)
EOF
test_must_fail git cat-file $arg1 $arg2 $(test_oid deadbeef_short) >out 2>err.actual &&
test_must_be_empty out &&
test_cmp expect.err err.actual
ok 196 - cat-file --allow-unknown-type -s error on missing short OID
expecting success of 1006.197 'cat-file --allow-unknown-type -s error on missing full OID':
if test "$arg2" = "-p"
then
cat >expect.err <<-EOF
fatal: Not a valid object name $(test_oid deadbeef)
EOF
else
cat >expect.err <<-\EOF
fatal: git cat-file: could not get object info
EOF
fi &&
test_must_fail git cat-file $arg1 $arg2 $(test_oid deadbeef) >out 2>err.actual &&
test_must_be_empty out &&
test_cmp expect.err err.actual
ok 197 - cat-file --allow-unknown-type -s error on missing full OID
expecting success of 1006.198 'cat-file --allow-unknown-type -t error on bogus short OID':
cat >expect <<-\EOF &&
fatal: invalid object type
EOF
if test "$arg1" = "--allow-unknown-type"
then
git cat-file $arg1 $arg2 $bogus_short_sha1
else
test_must_fail git cat-file $arg1 $arg2 $bogus_short_sha1 >out 2>actual &&
test_must_be_empty out &&
test_cmp expect actual
fi
bogus
ok 198 - cat-file --allow-unknown-type -t error on bogus short OID
expecting success of 1006.199 'cat-file --allow-unknown-type -t error on bogus full OID':
if test "$arg2" = "-p"
then
cat >expect <<-EOF
error: header for $bogus_long_sha1 too long, exceeds 32 bytes
fatal: Not a valid object name $bogus_long_sha1
EOF
else
cat >expect <<-EOF
error: header for $bogus_long_sha1 too long, exceeds 32 bytes
fatal: git cat-file: could not get object info
EOF
fi &&
if test "$arg1" = "--allow-unknown-type"
then
git cat-file $arg1 $arg2 $bogus_short_sha1
else
test_must_fail git cat-file $arg1 $arg2 $bogus_long_sha1 >out 2>actual &&
test_must_be_empty out &&
test_cmp expect actual
fi
bogus
ok 199 - cat-file --allow-unknown-type -t error on bogus full OID
expecting success of 1006.200 'cat-file --allow-unknown-type -t error on missing short OID':
cat >expect.err <<-EOF &&
fatal: Not a valid object name $(test_oid deadbeef_short)
EOF
test_must_fail git cat-file $arg1 $arg2 $(test_oid deadbeef_short) >out 2>err.actual &&
test_must_be_empty out &&
test_cmp expect.err err.actual
ok 200 - cat-file --allow-unknown-type -t error on missing short OID
expecting success of 1006.201 'cat-file --allow-unknown-type -t error on missing full OID':
if test "$arg2" = "-p"
then
cat >expect.err <<-EOF
fatal: Not a valid object name $(test_oid deadbeef)
EOF
else
cat >expect.err <<-\EOF
fatal: git cat-file: could not get object info
EOF
fi &&
test_must_fail git cat-file $arg1 $arg2 $(test_oid deadbeef) >out 2>err.actual &&
test_must_be_empty out &&
test_cmp expect.err err.actual
ok 201 - cat-file --allow-unknown-type -t error on missing full OID
expecting success of 1006.202 '-e is OK with a broken object without --allow-unknown-type':
git cat-file -e $bogus_short_sha1
ok 202 - -e is OK with a broken object without --allow-unknown-type
expecting success of 1006.203 '-e can not be combined with --allow-unknown-type':
test_expect_code 128 git cat-file -e --allow-unknown-type $bogus_short_sha1
fatal: git cat-file --allow-unknown-type: use with -s or -t
ok 203 - -e can not be combined with --allow-unknown-type
expecting success of 1006.204 '-p cannot print a broken object even with --allow-unknown-type':
test_must_fail git cat-file -p $bogus_short_sha1 &&
test_expect_code 128 git cat-file -p --allow-unknown-type $bogus_short_sha1
fatal: invalid object type
fatal: git cat-file --allow-unknown-type: use with -s or -t
ok 204 - -p cannot print a broken object even with --allow-unknown-type
expecting success of 1006.205 '<type> <hash> does not work with objects of broken types':
cat >err.expect <<-\EOF &&
fatal: invalid object type "bogus"
EOF
test_must_fail git cat-file $bogus_short_type $bogus_short_sha1 2>err.actual &&
test_cmp err.expect err.actual
ok 205 - <type> <hash> does not work with objects of broken types
expecting success of 1006.206 'broken types combined with --batch and --batch-check':
echo $bogus_short_sha1 >bogus-oid &&
cat >err.expect <<-\EOF &&
fatal: invalid object type
EOF
test_must_fail git cat-file --batch <bogus-oid 2>err.actual &&
test_cmp err.expect err.actual &&
test_must_fail git cat-file --batch-check <bogus-oid 2>err.actual &&
test_cmp err.expect err.actual
ok 206 - broken types combined with --batch and --batch-check
expecting success of 1006.207 'the --batch and --batch-check options do not combine with --allow-unknown-type':
test_expect_code 128 git cat-file --batch --allow-unknown-type <bogus-oid &&
test_expect_code 128 git cat-file --batch-check --allow-unknown-type <bogus-oid
fatal: invalid object type
fatal: invalid object type
ok 207 - the --batch and --batch-check options do not combine with --allow-unknown-type
expecting success of 1006.208 'the --allow-unknown-type option does not consider replacement refs':
cat >expect <<-EOF &&
$bogus_short_type
EOF
git cat-file -t --allow-unknown-type $bogus_short_sha1 >actual &&
test_cmp expect actual &&
# Create it manually, as "git replace" will die on bogus
# types.
head=$(git rev-parse --verify HEAD) &&
test_when_finished "test-tool ref-store main delete-refs 0 msg refs/replace/$bogus_short_sha1" &&
test-tool ref-store main update-ref msg "refs/replace/$bogus_short_sha1" $head $ZERO_OID REF_SKIP_OID_VERIFICATION &&
cat >expect <<-EOF &&
commit
EOF
git cat-file -t --allow-unknown-type $bogus_short_sha1 >actual &&
test_cmp expect actual
ok 208 - the --allow-unknown-type option does not consider replacement refs
expecting success of 1006.209 'Type of broken object is correct':
echo $bogus_short_type >expect &&
git cat-file -t --allow-unknown-type $bogus_short_sha1 >actual &&
test_cmp expect actual
ok 209 - Type of broken object is correct
expecting success of 1006.210 'Size of broken object is correct':
echo $bogus_short_size >expect &&
git cat-file -s --allow-unknown-type $bogus_short_sha1 >actual &&
test_cmp expect actual
ok 210 - Size of broken object is correct
expecting success of 1006.211 'clean up broken object':
rm .git/objects/$(test_oid_to_path $bogus_short_sha1)
ok 211 - clean up broken object
expecting success of 1006.212 'Type of broken object is correct when type is large':
echo $bogus_long_type >expect &&
git cat-file -t --allow-unknown-type $bogus_long_sha1 >actual &&
test_cmp expect actual
ok 212 - Type of broken object is correct when type is large
expecting success of 1006.213 'Size of large broken object is correct when type is large':
echo $bogus_long_size >expect &&
git cat-file -s --allow-unknown-type $bogus_long_sha1 >actual &&
test_cmp expect actual
ok 213 - Size of large broken object is correct when type is large
expecting success of 1006.214 'clean up broken object':
rm .git/objects/$(test_oid_to_path $bogus_long_sha1)
ok 214 - clean up broken object
expecting success of 1006.215 'cat-file -t and -s on corrupt loose object':
git init --bare corrupt-loose.git &&
(
cd corrupt-loose.git &&
# Setup and create the empty blob and its path
empty_path=$(git rev-parse --git-path objects/$(test_oid_to_path "$EMPTY_BLOB")) &&
empty_blob=$(git hash-object -w --stdin </dev/null) &&
# Create another blob and its path
echo other >other.blob &&
other_blob=$(git hash-object -w --stdin <other.blob) &&
other_path=$(git rev-parse --git-path objects/$(test_oid_to_path "$other_blob")) &&
# Before the swap the size is 0
cat >out.expect <<-EOF &&
0
EOF
git cat-file -s "$EMPTY_BLOB" >out.actual 2>err.actual &&
test_must_be_empty err.actual &&
test_cmp out.expect out.actual &&
# Swap the two to corrupt the repository
mv -f "$other_path" "$empty_path" &&
test_must_fail git fsck 2>err.fsck &&
grep "hash-path mismatch" err.fsck &&
# confirm that cat-file is reading the new swapped-in
# blob...
cat >out.expect <<-EOF &&
blob
EOF
git cat-file -t "$EMPTY_BLOB" >out.actual 2>err.actual &&
test_must_be_empty err.actual &&
test_cmp out.expect out.actual &&
# ... since it has a different size now.
cat >out.expect <<-EOF &&
6
EOF
git cat-file -s "$EMPTY_BLOB" >out.actual 2>err.actual &&
test_must_be_empty err.actual &&
test_cmp out.expect out.actual &&
# So far "cat-file" has been happy to spew the found
# content out as-is. Try to make it zlib-invalid.
mv -f other.blob "$empty_path" &&
test_must_fail git fsck 2>err.fsck &&
cat >expect <<-EOF &&
error: inflate: data stream error (incorrect header check)
error: unable to unpack header of ./$empty_path
error: $empty_blob: object corrupt or missing: ./$empty_path
EOF
grep "^error: " err.fsck >actual &&
test_cmp expect actual
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1006-cat-file/corrupt-loose.git/
error: e45c9c2666d44e0327c1f9c239a74c508336053e: hash-path mismatch, found at: ./objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391
ok 215 - cat-file -t and -s on corrupt loose object
expecting success of 1006.216 'prep for symlink tests':
echo_without_newline "$hello_content" >morx &&
test_ln_s_add morx same-dir-link &&
test_ln_s_add dir link-to-dir &&
test_ln_s_add ../fleem out-of-repo-link &&
test_ln_s_add .. out-of-repo-link-dir &&
test_ln_s_add same-dir-link link-to-link &&
test_ln_s_add nope broken-same-dir-link &&
mkdir dir &&
test_ln_s_add ../morx dir/parent-dir-link &&
test_ln_s_add .. dir/link-dir &&
test_ln_s_add ../../escape dir/out-of-repo-link &&
test_ln_s_add ../.. dir/out-of-repo-link-dir &&
test_ln_s_add nope dir/broken-link-in-dir &&
mkdir dir/subdir &&
test_ln_s_add ../../morx dir/subdir/grandparent-dir-link &&
test_ln_s_add ../../../great-escape dir/subdir/out-of-repo-link &&
test_ln_s_add ../../.. dir/subdir/out-of-repo-link-dir &&
test_ln_s_add ../../../ dir/subdir/out-of-repo-link-dir-trailing &&
test_ln_s_add ../parent-dir-link dir/subdir/parent-dir-link-to-link &&
echo_without_newline "$hello_content" >dir/subdir/ind2 &&
echo_without_newline "$hello_content" >dir/ind1 &&
test_ln_s_add dir dirlink &&
test_ln_s_add dir/subdir subdirlink &&
test_ln_s_add subdir/ind2 dir/link-to-child &&
test_ln_s_add dir/link-to-child link-to-down-link &&
test_ln_s_add dir/.. up-down &&
test_ln_s_add dir/../ up-down-trailing &&
test_ln_s_add dir/../morx up-down-file &&
test_ln_s_add dir/../../morx up-up-down-file &&
test_ln_s_add subdirlink/../../morx up-two-down-file &&
test_ln_s_add loop1 loop2 &&
test_ln_s_add loop2 loop1 &&
git add morx dir/subdir/ind2 dir/ind1 &&
git commit -am "test" &&
echo $hello_sha1 blob $hello_size >found
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
[master 86a080e] test
Author: A U Thor <author@example.com>
30 files changed, 30 insertions(+)
create mode 120000 broken-same-dir-link
create mode 120000 dir/broken-link-in-dir
create mode 100644 dir/ind1
create mode 120000 dir/link-dir
create mode 120000 dir/link-to-child
create mode 120000 dir/out-of-repo-link
create mode 120000 dir/out-of-repo-link-dir
create mode 120000 dir/parent-dir-link
create mode 120000 dir/subdir/grandparent-dir-link
create mode 100644 dir/subdir/ind2
create mode 120000 dir/subdir/out-of-repo-link
create mode 120000 dir/subdir/out-of-repo-link-dir
create mode 120000 dir/subdir/out-of-repo-link-dir-trailing
create mode 120000 dir/subdir/parent-dir-link-to-link
create mode 120000 dirlink
create mode 120000 link-to-dir
create mode 120000 link-to-down-link
create mode 120000 link-to-link
create mode 120000 loop1
create mode 120000 loop2
create mode 100644 morx
create mode 120000 out-of-repo-link
create mode 120000 out-of-repo-link-dir
create mode 120000 same-dir-link
create mode 120000 subdirlink
create mode 120000 up-down
create mode 120000 up-down-file
create mode 120000 up-down-trailing
create mode 120000 up-two-down-file
create mode 120000 up-up-down-file
ok 216 - prep for symlink tests
expecting success of 1006.217 'git cat-file --batch-check --follow-symlinks works for non-links':
echo HEAD:morx | git cat-file --batch-check --follow-symlinks >actual &&
test_cmp found actual &&
echo HEAD:nope missing >expect &&
echo HEAD:nope | git cat-file --batch-check --follow-symlinks >actual &&
test_cmp expect actual
ok 217 - git cat-file --batch-check --follow-symlinks works for non-links
expecting success of 1006.218 'git cat-file --batch-check --follow-symlinks works for in-repo, same-dir links':
echo HEAD:same-dir-link | git cat-file --batch-check --follow-symlinks >actual &&
test_cmp found actual
ok 218 - git cat-file --batch-check --follow-symlinks works for in-repo, same-dir links
expecting success of 1006.219 'git cat-file --batch-check --follow-symlinks works for in-repo, links to dirs':
echo HEAD:link-to-dir/ind1 | git cat-file --batch-check --follow-symlinks >actual &&
test_cmp found actual
ok 219 - git cat-file --batch-check --follow-symlinks works for in-repo, links to dirs
expecting success of 1006.220 'git cat-file --batch-check --follow-symlinks works for broken in-repo, same-dir links':
echo dangling 25 >expect &&
echo HEAD:broken-same-dir-link >>expect &&
echo HEAD:broken-same-dir-link | git cat-file --batch-check --follow-symlinks >actual &&
test_cmp expect actual
ok 220 - git cat-file --batch-check --follow-symlinks works for broken in-repo, same-dir links
expecting success of 1006.221 'git cat-file --batch-check --follow-symlinks -Z works for broken in-repo, same-dir links':
printf "HEAD:broken-same-dir-link\0" >in &&
printf "dangling 25\0HEAD:broken-same-dir-link\0" >expect &&
git cat-file --batch-check --follow-symlinks -Z <in >actual &&
test_cmp expect actual
ok 221 - git cat-file --batch-check --follow-symlinks -Z works for broken in-repo, same-dir links
expecting success of 1006.222 'git cat-file --batch-check --follow-symlinks works for same-dir links-to-links':
echo HEAD:link-to-link | git cat-file --batch-check --follow-symlinks >actual &&
test_cmp found actual
ok 222 - git cat-file --batch-check --follow-symlinks works for same-dir links-to-links
expecting success of 1006.223 'git cat-file --batch-check --follow-symlinks works for parent-dir links':
echo HEAD:dir/parent-dir-link | git cat-file --batch-check --follow-symlinks >actual &&
test_cmp found actual &&
echo notdir 29 >expect &&
echo HEAD:dir/parent-dir-link/nope >>expect &&
echo HEAD:dir/parent-dir-link/nope | git cat-file --batch-check --follow-symlinks >actual &&
test_cmp expect actual
ok 223 - git cat-file --batch-check --follow-symlinks works for parent-dir links
expecting success of 1006.224 'git cat-file --batch-check --follow-symlinks -Z works for parent-dir links':
echo HEAD:dir/parent-dir-link | git cat-file --batch-check --follow-symlinks >actual &&
test_cmp found actual &&
printf "notdir 29\0HEAD:dir/parent-dir-link/nope\0" >expect &&
printf "HEAD:dir/parent-dir-link/nope\0" >in &&
git cat-file --batch-check --follow-symlinks -Z <in >actual &&
test_cmp expect actual
ok 224 - git cat-file --batch-check --follow-symlinks -Z works for parent-dir links
expecting success of 1006.225 'git cat-file --batch-check --follow-symlinks works for .. links':
echo dangling 22 >expect &&
echo HEAD:dir/link-dir/nope >>expect &&
echo HEAD:dir/link-dir/nope | git cat-file --batch-check --follow-symlinks >actual &&
test_cmp expect actual &&
echo HEAD:dir/link-dir/morx | git cat-file --batch-check --follow-symlinks >actual &&
test_cmp found actual &&
echo dangling 27 >expect &&
echo HEAD:dir/broken-link-in-dir >>expect &&
echo HEAD:dir/broken-link-in-dir | git cat-file --batch-check --follow-symlinks >actual &&
test_cmp expect actual
ok 225 - git cat-file --batch-check --follow-symlinks works for .. links
expecting success of 1006.226 'git cat-file --batch-check --follow-symlinks works for ../.. links':
echo notdir 41 >expect &&
echo HEAD:dir/subdir/grandparent-dir-link/nope >>expect &&
echo HEAD:dir/subdir/grandparent-dir-link/nope | git cat-file --batch-check --follow-symlinks >actual &&
test_cmp expect actual &&
echo HEAD:dir/subdir/grandparent-dir-link | git cat-file --batch-check --follow-symlinks >actual &&
test_cmp found actual &&
echo HEAD:dir/subdir/parent-dir-link-to-link | git cat-file --batch-check --follow-symlinks >actual &&
test_cmp found actual
ok 226 - git cat-file --batch-check --follow-symlinks works for ../.. links
expecting success of 1006.227 'git cat-file --batch-check --follow-symlinks works for dir/ links':
echo dangling 17 >expect &&
echo HEAD:dirlink/morx >>expect &&
echo HEAD:dirlink/morx | git cat-file --batch-check --follow-symlinks >actual &&
test_cmp expect actual &&
echo $hello_sha1 blob $hello_size >expect &&
echo HEAD:dirlink/ind1 | git cat-file --batch-check --follow-symlinks >actual &&
test_cmp expect actual
ok 227 - git cat-file --batch-check --follow-symlinks works for dir/ links
expecting success of 1006.228 'git cat-file --batch-check --follow-symlinks works for dir/subdir links':
echo dangling 20 >expect &&
echo HEAD:subdirlink/morx >>expect &&
echo HEAD:subdirlink/morx | git cat-file --batch-check --follow-symlinks >actual &&
test_cmp expect actual &&
echo HEAD:subdirlink/ind2 | git cat-file --batch-check --follow-symlinks >actual &&
test_cmp found actual
ok 228 - git cat-file --batch-check --follow-symlinks works for dir/subdir links
expecting success of 1006.229 'git cat-file --batch-check --follow-symlinks works for dir ->subdir links':
echo notdir 27 >expect &&
echo HEAD:dir/link-to-child/morx >>expect &&
echo HEAD:dir/link-to-child/morx | git cat-file --batch-check --follow-symlinks >actual &&
test_cmp expect actual &&
echo HEAD:dir/link-to-child | git cat-file --batch-check --follow-symlinks >actual &&
test_cmp found actual &&
echo HEAD:link-to-down-link | git cat-file --batch-check --follow-symlinks >actual &&
test_cmp found actual
ok 229 - git cat-file --batch-check --follow-symlinks works for dir ->subdir links
expecting success of 1006.230 'git cat-file --batch-check --follow-symlinks works for out-of-repo symlinks':
echo symlink 8 >expect &&
echo ../fleem >>expect &&
echo HEAD:out-of-repo-link | git cat-file --batch-check --follow-symlinks >actual &&
test_cmp expect actual &&
echo symlink 2 >expect &&
echo .. >>expect &&
echo HEAD:out-of-repo-link-dir | git cat-file --batch-check --follow-symlinks >actual &&
test_cmp expect actual
ok 230 - git cat-file --batch-check --follow-symlinks works for out-of-repo symlinks
expecting success of 1006.231 'git cat-file --batch-check --follow-symlinks works for out-of-repo symlinks in dirs':
echo symlink 9 >expect &&
echo ../escape >>expect &&
echo HEAD:dir/out-of-repo-link | git cat-file --batch-check --follow-symlinks >actual &&
test_cmp expect actual &&
echo symlink 2 >expect &&
echo .. >>expect &&
echo HEAD:dir/out-of-repo-link-dir | git cat-file --batch-check --follow-symlinks >actual &&
test_cmp expect actual
ok 231 - git cat-file --batch-check --follow-symlinks works for out-of-repo symlinks in dirs
expecting success of 1006.232 'git cat-file --batch-check --follow-symlinks works for out-of-repo symlinks in subdirs':
echo symlink 15 >expect &&
echo ../great-escape >>expect &&
echo HEAD:dir/subdir/out-of-repo-link | git cat-file --batch-check --follow-symlinks >actual &&
test_cmp expect actual &&
echo symlink 2 >expect &&
echo .. >>expect &&
echo HEAD:dir/subdir/out-of-repo-link-dir | git cat-file --batch-check --follow-symlinks >actual &&
test_cmp expect actual &&
echo symlink 3 >expect &&
echo ../ >>expect &&
echo HEAD:dir/subdir/out-of-repo-link-dir-trailing | git cat-file --batch-check --follow-symlinks >actual &&
test_cmp expect actual
ok 232 - git cat-file --batch-check --follow-symlinks works for out-of-repo symlinks in subdirs
expecting success of 1006.233 'git cat-file --batch-check --follow-symlinks works for symlinks with internal ..':
echo HEAD: | git cat-file --batch-check >expect &&
echo HEAD:up-down | git cat-file --batch-check --follow-symlinks >actual &&
test_cmp expect actual &&
echo HEAD:up-down-trailing | git cat-file --batch-check --follow-symlinks >actual &&
test_cmp expect actual &&
echo HEAD:up-down-file | git cat-file --batch-check --follow-symlinks >actual &&
test_cmp found actual &&
echo symlink 7 >expect &&
echo ../morx >>expect &&
echo HEAD:up-up-down-file | git cat-file --batch-check --follow-symlinks >actual &&
test_cmp expect actual &&
echo HEAD:up-two-down-file | git cat-file --batch-check --follow-symlinks >actual &&
test_cmp found actual
ok 233 - git cat-file --batch-check --follow-symlinks works for symlinks with internal ..
expecting success of 1006.234 'git cat-file --batch-check --follow-symlink breaks loops':
echo loop 10 >expect &&
echo HEAD:loop1 >>expect &&
echo HEAD:loop1 | git cat-file --batch-check --follow-symlinks >actual &&
test_cmp expect actual
ok 234 - git cat-file --batch-check --follow-symlink breaks loops
expecting success of 1006.235 'git cat-file --batch-check --follow-symlink -Z breaks loops':
printf "loop 10\0HEAD:loop1\0" >expect &&
printf "HEAD:loop1\0" >in &&
git cat-file --batch-check --follow-symlinks -Z <in >actual &&
test_cmp expect actual
ok 235 - git cat-file --batch-check --follow-symlink -Z breaks loops
expecting success of 1006.236 'git cat-file --batch --follow-symlink returns correct sha and mode':
echo HEAD:morx | git cat-file --batch >expect &&
echo HEAD:morx | git cat-file --batch --follow-symlinks >actual &&
test_cmp expect actual
ok 236 - git cat-file --batch --follow-symlink returns correct sha and mode
expecting success of 1006.237 'cat-file --batch-all-objects shows all objects':
# make new repos so we know the full set of objects; we will
# also make sure that there are some packed and some loose
# objects, some referenced and some not, some duplicates, and that
# there are some available only via alternates.
git init all-one &&
(
cd all-one &&
echo content >file &&
git add file &&
git commit -qm base &&
git rev-parse HEAD HEAD^{tree} HEAD:file &&
git repack -ad &&
echo not-cloned | git hash-object -w --stdin
) >expect.unsorted &&
git clone -s all-one all-two &&
(
cd all-two &&
echo local-unref | git hash-object -w --stdin
) >>expect.unsorted &&
git -C all-two rev-parse HEAD:file |
git -C all-two pack-objects .git/objects/pack/pack &&
sort <expect.unsorted >expect &&
git -C all-two cat-file --batch-all-objects \
--batch-check="%(objectname)" >actual &&
test_cmp expect actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1006-cat-file/all-one/.git/
Cloning into 'all-two'...
done.
2d40090ddd2c612f2679520aaab9f69d52e41628
ok 237 - cat-file --batch-all-objects shows all objects
expecting success of 1006.238 'cat-file --unordered works':
git -C all-two cat-file --batch-all-objects --unordered \
--batch-check="%(objectname)" >actual.unsorted &&
sort <actual.unsorted >actual &&
test_cmp expect actual
ok 238 - cat-file --unordered works
expecting success of 1006.239 'set up object list for --batch-all-objects tests':
git -C all-two cat-file --batch-all-objects --batch-check="%(objectname)" >objects
ok 239 - set up object list for --batch-all-objects tests
expecting success of 1006.240 'cat-file --batch="%(objectname)" with --batch-all-objects will work':
git -C all-two cat-file --batch="%(objectname)" <objects >expect &&
git -C all-two cat-file --batch-all-objects --batch="%(objectname)" >actual &&
cmp expect actual
ok 240 - cat-file --batch="%(objectname)" with --batch-all-objects will work
expecting success of 1006.241 'cat-file --batch="%(rest)" with --batch-all-objects will work':
git -C all-two cat-file --batch="%(rest)" <objects >expect &&
git -C all-two cat-file --batch-all-objects --batch="%(rest)" >actual &&
cmp expect actual
ok 241 - cat-file --batch="%(rest)" with --batch-all-objects will work
expecting success of 1006.242 'cat-file --batch="batman" with --batch-all-objects will work':
git -C all-two cat-file --batch="batman" <objects >expect &&
git -C all-two cat-file --batch-all-objects --batch="batman" >actual &&
cmp expect actual
ok 242 - cat-file --batch="batman" with --batch-all-objects will work
expecting success of 1006.243 'set up replacement object':
orig=$(git rev-parse HEAD) &&
git cat-file commit $orig >orig &&
{
cat orig &&
echo extra
} >fake &&
fake=$(git hash-object -t commit -w fake) &&
orig_size=$(git cat-file -s $orig) &&
fake_size=$(git cat-file -s $fake) &&
git replace $orig $fake
ok 243 - set up replacement object
expecting success of 1006.244 'cat-file --batch respects replace objects':
git cat-file --batch >actual <<-EOF &&
$orig
EOF
{
echo "$orig commit $fake_size" &&
cat fake &&
echo
} >expect &&
test_cmp expect actual
ok 244 - cat-file --batch respects replace objects
expecting success of 1006.245 'cat-file --batch-check respects replace objects':
git cat-file --batch-check >actual <<-EOF &&
$orig
EOF
echo "$orig commit $fake_size" >expect &&
test_cmp expect actual
ok 245 - cat-file --batch-check respects replace objects
expecting success of 1006.246 'cat-file --batch-all-objects --batch ignores replace':
git cat-file --batch-all-objects --batch >actual.raw &&
extract_batch_output $orig <actual.raw >actual &&
{
echo "$orig commit $orig_size" &&
cat orig &&
echo
} >expect &&
test_cmp expect actual
ok 246 - cat-file --batch-all-objects --batch ignores replace
expecting success of 1006.247 'cat-file --batch-all-objects --batch-check ignores replace':
git cat-file --batch-all-objects --batch-check >actual.raw &&
grep ^$orig actual.raw >actual &&
echo "$orig commit $orig_size" >expect &&
test_cmp expect actual
ok 247 - cat-file --batch-all-objects --batch-check ignores replace
expecting success of 1006.248 'batch-command empty command':
echo "" >cmd &&
test_expect_code 128 git cat-file --batch-command <cmd 2>err &&
grep "^fatal:.*empty command in input.*" err
fatal: empty command in input
ok 248 - batch-command empty command
expecting success of 1006.249 'batch-command whitespace before command':
echo " info deadbeef" >cmd &&
test_expect_code 128 git cat-file --batch-command <cmd 2>err &&
grep "^fatal:.*whitespace before command.*" err
fatal: whitespace before command: ' info deadbeef'
ok 249 - batch-command whitespace before command
expecting success of 1006.250 'batch-command unknown command':
echo unknown_command >cmd &&
test_expect_code 128 git cat-file --batch-command <cmd 2>err &&
grep "^fatal:.*unknown command.*" err
fatal: unknown command: 'unknown_command'
ok 250 - batch-command unknown command
expecting success of 1006.251 'batch-command missing arguments':
echo "info" >cmd &&
test_expect_code 128 git cat-file --batch-command <cmd 2>err &&
grep "^fatal:.*info requires arguments.*" err
fatal: info requires arguments
ok 251 - batch-command missing arguments
expecting success of 1006.252 'batch-command flush with arguments':
echo "flush arg" >cmd &&
test_expect_code 128 git cat-file --batch-command --buffer <cmd 2>err &&
grep "^fatal:.*flush takes no arguments.*" err
fatal: flush takes no arguments
ok 252 - batch-command flush with arguments
expecting success of 1006.253 'batch-command flush without --buffer':
echo "flush" >cmd &&
test_expect_code 128 git cat-file --batch-command <cmd 2>err &&
grep "^fatal:.*flush is only for --buffer mode.*" err
fatal: flush is only for --buffer mode
ok 253 - batch-command flush without --buffer
# passed all 253 test(s)
1..253
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1015-read-index-unmerged.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1015-read-index-unmerged/.git/
expecting success of 1015.1 'setup modify/delete + directory/file conflict':
test_create_repo df_plus_modify_delete &&
(
cd df_plus_modify_delete &&
test_write_lines a b c d e f g h >letters &&
git add letters &&
git commit -m initial &&
git checkout -b modify &&
# Throw in letters.txt for sorting order fun
# ("letters.txt" sorts between "letters" and "letters/file")
echo i >>letters &&
echo "version 2" >letters.txt &&
git add letters letters.txt &&
git commit -m modified &&
git checkout -b delete HEAD^ &&
git rm letters &&
mkdir letters &&
>letters/file &&
echo "version 1" >letters.txt &&
git add letters letters.txt &&
git commit -m deleted
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1015-read-index-unmerged/df_plus_modify_delete/.git/
[master (root-commit) 461649b] initial
Author: A U Thor <author@example.com>
1 file changed, 8 insertions(+)
create mode 100644 letters
Switched to a new branch 'modify'
[modify 4e26d91] modified
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 letters.txt
Switched to a new branch 'delete'
rm 'letters'
[delete 380ce95] deleted
Author: A U Thor <author@example.com>
3 files changed, 1 insertion(+), 8 deletions(-)
delete mode 100644 letters
create mode 100644 letters.txt
create mode 100644 letters/file
ok 1 - setup modify/delete + directory/file conflict
expecting success of 1015.2 'read-tree --reset cleans unmerged entries':
test_when_finished "git -C df_plus_modify_delete clean -f" &&
test_when_finished "git -C df_plus_modify_delete reset --hard" &&
(
cd df_plus_modify_delete &&
git checkout delete^0 &&
test_must_fail git merge modify &&
git read-tree --reset HEAD &&
git ls-files -u >conflicts &&
test_must_be_empty conflicts
)
Note: switching to 'delete^0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 380ce95 deleted
Auto-merging letters.txt
CONFLICT (add/add): Merge conflict in letters.txt
CONFLICT (file/directory): directory in the way of letters from modify; moving it to letters~modify instead.
CONFLICT (modify/delete): letters~modify deleted in HEAD and modified in modify. Version modify of letters~modify left in tree.
Automatic merge failed; fix conflicts and then commit the result.
HEAD is now at 380ce95 deleted
Removing conflicts
Removing letters~modify
ok 2 - read-tree --reset cleans unmerged entries
expecting success of 1015.3 'One reset --hard cleans unmerged entries':
test_when_finished "git -C df_plus_modify_delete clean -f" &&
test_when_finished "git -C df_plus_modify_delete reset --hard" &&
(
cd df_plus_modify_delete &&
git checkout delete^0 &&
test_must_fail git merge modify &&
git reset --hard &&
test_path_is_missing .git/MERGE_HEAD &&
git ls-files -u >conflicts &&
test_must_be_empty conflicts
)
HEAD is now at 380ce95 deleted
Auto-merging letters.txt
CONFLICT (add/add): Merge conflict in letters.txt
CONFLICT (file/directory): directory in the way of letters from modify; moving it to letters~modify instead.
CONFLICT (modify/delete): letters~modify deleted in HEAD and modified in modify. Version modify of letters~modify left in tree.
Automatic merge failed; fix conflicts and then commit the result.
HEAD is now at 380ce95 deleted
HEAD is now at 380ce95 deleted
Removing conflicts
ok 3 - One reset --hard cleans unmerged entries
expecting success of 1015.4 'setup directory/file conflict + simple edit/edit':
test_create_repo df_plus_edit_edit &&
(
cd df_plus_edit_edit &&
test_seq 1 10 >numbers &&
git add numbers &&
git commit -m initial &&
git checkout -b d-edit &&
mkdir foo &&
echo content >foo/bar &&
git add foo &&
echo 11 >>numbers &&
git add numbers &&
git commit -m "directory and edit" &&
git checkout -b f-edit d-edit^1 &&
echo content >foo &&
git add foo &&
echo eleven >>numbers &&
git add numbers &&
git commit -m "file and edit"
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1015-read-index-unmerged/df_plus_edit_edit/.git/
[master (root-commit) e5e228a] initial
Author: A U Thor <author@example.com>
1 file changed, 10 insertions(+)
create mode 100644 numbers
Switched to a new branch 'd-edit'
[d-edit 1997ecb] directory and edit
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 foo/bar
Switched to a new branch 'f-edit'
[f-edit ea28ef2] file and edit
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 foo
ok 4 - setup directory/file conflict + simple edit/edit
expecting success of 1015.5 'git merge --abort succeeds despite D/F conflict':
test_when_finished "git -C df_plus_edit_edit clean -f" &&
test_when_finished "git -C df_plus_edit_edit reset --hard" &&
(
cd df_plus_edit_edit &&
git checkout f-edit^0 &&
test_must_fail git merge d-edit^0 &&
git merge --abort &&
test_path_is_missing .git/MERGE_HEAD &&
git ls-files -u >conflicts &&
test_must_be_empty conflicts
)
Note: switching to 'f-edit^0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at ea28ef2 file and edit
CONFLICT (file/directory): directory in the way of foo from HEAD; moving it to foo~HEAD instead.
Auto-merging numbers
CONFLICT (content): Merge conflict in numbers
Automatic merge failed; fix conflicts and then commit the result.
HEAD is now at ea28ef2 file and edit
Removing conflicts
ok 5 - git merge --abort succeeds despite D/F conflict
expecting success of 1015.6 'git am --skip succeeds despite D/F conflict':
test_when_finished "git -C df_plus_edit_edit clean -f" &&
test_when_finished "git -C df_plus_edit_edit reset --hard" &&
(
cd df_plus_edit_edit &&
git checkout f-edit^0 &&
git format-patch -1 d-edit &&
test_must_fail git am -3 0001*.patch &&
git am --skip &&
test_path_is_missing .git/rebase-apply &&
git ls-files -u >conflicts &&
test_must_be_empty conflicts
)
HEAD is now at ea28ef2 file and edit
0001-directory-and-edit.patch
Applying: directory and edit
Using index info to reconstruct a base tree...
M numbers
Falling back to patching base and 3-way merge...
Merging:
ea28ef2 file and edit
virtual directory and edit
found 1 common ancestor:
virtual 75a3e2be4ba4a7062d21fba0206758f5518d6ead
Auto-merging numbers
CONFLICT (content): Merge conflict in numbers
Adding foo/bar
Removing foo to make room for subdirectory
CONFLICT (file/directory): There is a directory with name foo in directory and edit. Adding foo as foo~HEAD
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 directory and edit
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
HEAD is now at ea28ef2 file and edit
Removing 0001-directory-and-edit.patch
Removing conflicts
Removing foo~HEAD
ok 6 - git am --skip succeeds despite D/F conflict
# passed all 6 test(s)
1..6
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1020-subdirectory.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1020-subdirectory/.git/
expecting success of 1020.1 'setup':
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" &&
test_write_lines $long >one &&
mkdir dir &&
test_write_lines x y z $long a b c >dir/two &&
cp one original.one &&
cp dir/two original.two
ok 1 - setup
expecting success of 1020.2 'update-index and ls-files':
git update-index --add one &&
case "$(git ls-files)" in
one) echo pass one ;;
*) echo bad one; return 1 ;;
esac &&
(
cd dir &&
git update-index --add two &&
case "$(git ls-files)" in
two) echo pass two ;;
*) echo bad two; exit 1 ;;
esac
) &&
case "$(git ls-files)" in
dir/two"$LF"one) echo pass both ;;
*) echo bad; return 1 ;;
esac
pass one
pass two
pass both
ok 2 - update-index and ls-files
expecting success of 1020.3 'cat-file':
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 of 1020.4 'diff-files':
echo a >>one &&
echo d >>dir/two &&
case "$(git diff-files --name-only)" in
dir/two"$LF"one) echo pass top ;;
*) echo bad top; return 1 ;;
esac &&
# diff should not omit leading paths
(
cd dir &&
case "$(git diff-files --name-only)" in
dir/two"$LF"one) echo pass subdir ;;
*) echo bad subdir; exit 1 ;;
esac &&
case "$(git diff-files --name-only .)" in
dir/two) echo pass subdir limited ;;
*) echo bad subdir limited; exit 1 ;;
esac
)
pass top
pass subdir
pass subdir limited
ok 4 - diff-files
expecting success of 1020.5 'write-tree':
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 of 1020.6 'checkout-index':
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 of 1020.7 'read-tree':
rm -f one dir/two &&
tree=$(git write-tree) &&
read_tree_u_must_succeed --reset -u "$tree" &&
cmp one original.one &&
cmp dir/two original.two &&
(
cd dir &&
rm -f two &&
read_tree_u_must_succeed --reset -u "$tree" &&
cmp two ../original.two &&
cmp ../one ../original.one
)
ok 7 - read-tree
expecting success of 1020.8 'alias expansion':
(
git config alias.test-status-alias status &&
cd dir &&
git status &&
git test-status-alias
)
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: two
new file: ../one
Untracked files:
(use "git add <file>..." to include in what will be committed)
post-dry-run
post-dry-run-wt
pre-dry-run
pre-dry-run-wt
../original.one
../original.two
../post-dry-run
../post-dry-run-wt
../pre-dry-run
../pre-dry-run-wt
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: two
new file: ../one
Untracked files:
(use "git add <file>..." to include in what will be committed)
post-dry-run
post-dry-run-wt
pre-dry-run
pre-dry-run-wt
../original.one
../original.two
../post-dry-run
../post-dry-run-wt
../pre-dry-run
../pre-dry-run-wt
ok 8 - alias expansion
expecting success of 1020.9 '!alias expansion':
pwd >expect &&
(
git config alias.test-alias-directory !pwd &&
cd dir &&
git test-alias-directory >../actual
) &&
test_cmp expect actual
ok 9 - !alias expansion
expecting success of 1020.10 'GIT_PREFIX for !alias':
printf "dir/" >expect &&
(
git config alias.test-alias-directory "!sh -c \"printf \$GIT_PREFIX\"" &&
cd dir &&
git test-alias-directory >../actual
) &&
test_cmp expect actual
ok 10 - GIT_PREFIX for !alias
expecting success of 1020.11 'GIT_PREFIX for built-ins':
# Use GIT_EXTERNAL_DIFF to test that the "diff" built-in
# receives the GIT_PREFIX variable.
echo "dir/" >expect &&
write_script diff <<-\EOF &&
printf "%s\n" "$GIT_PREFIX"
EOF
(
cd dir &&
echo "change" >two &&
GIT_EXTERNAL_DIFF=./diff git diff >../actual &&
git checkout -- two
) &&
test_cmp expect actual
ok 11 - GIT_PREFIX for built-ins
expecting success of 1020.12 'no file/rev ambiguity check inside .git':
git commit -a -m 1 &&
(
cd .git &&
git show -s HEAD
)
[master (root-commit) 63e2ba9] 1
Author: A U Thor <author@example.com>
2 files changed, 58 insertions(+)
create mode 100644 dir/two
create mode 100644 one
commit 63e2ba96e88f4f612aaba03cc52a7db80cff1e0c
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1
ok 12 - no file/rev ambiguity check inside .git
expecting success of 1020.13 'no file/rev ambiguity check inside a bare repo (explicit GIT_DIR)':
test_when_finished "rm -fr foo.git" &&
git clone -s --bare .git foo.git &&
(
cd foo.git &&
# older Git needed help by exporting GIT_DIR=.
# to realize that it is inside a bare repository.
# We keep this test around for regression testing.
GIT_DIR=. git show -s HEAD
)
Cloning into bare repository 'foo.git'...
done.
commit 63e2ba96e88f4f612aaba03cc52a7db80cff1e0c
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1
ok 13 - no file/rev ambiguity check inside a bare repo (explicit GIT_DIR)
expecting success of 1020.14 'no file/rev ambiguity check inside a bare repo':
test_when_finished "rm -fr foo.git" &&
git clone -s --bare .git foo.git &&
(
cd foo.git &&
git show -s HEAD
)
Cloning into bare repository 'foo.git'...
done.
commit 63e2ba96e88f4f612aaba03cc52a7db80cff1e0c
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1
ok 14 - no file/rev ambiguity check inside a bare repo
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
expecting success of 1020.15 'detection should not be fooled by a symlink':
git clone -s .git another &&
ln -s another yetanother &&
(
cd yetanother/.git &&
git show -s HEAD
)
Cloning into 'another'...
done.
commit 63e2ba96e88f4f612aaba03cc52a7db80cff1e0c
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1
ok 15 - detection should not be fooled by a symlink
# passed all 15 test(s)
1..15
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1021-rerere-in-workdir.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1021-rerere-in-workdir/.git/
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
expecting success of 1021.1 'setup':
git config rerere.enabled true &&
>world &&
git add world &&
test_tick &&
git commit -m initial &&
echo hello >world &&
test_tick &&
git commit -a -m hello &&
git checkout -b side HEAD^ &&
echo goodbye >world &&
test_tick &&
git commit -a -m goodbye &&
git checkout main
[main (root-commit) 21975ff] initial
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 world
[main 02943d2] hello
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
Switched to a new branch 'side'
[side 5611ff9] goodbye
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
Switched to branch 'main'
ok 1 - setup
expecting success of 1021.2 'rerere in workdir':
rm -rf .git/rr-cache &&
"$SHELL_PATH" "$TEST_DIRECTORY/../contrib/workdir/git-new-workdir" . work &&
(
cd work &&
test_must_fail git merge side &&
git rerere status >actual &&
echo world >expect &&
test_cmp expect actual
)
Auto-merging world
CONFLICT (content): Merge conflict in world
Recorded preimage for 'world'
Automatic merge failed; fix conflicts and then commit the result.
ok 2 - rerere in workdir
checking known breakage of 1021.3 'rerere in workdir (relative)':
rm -rf .git/rr-cache &&
"$SHELL_PATH" "$TEST_DIRECTORY/../contrib/workdir/git-new-workdir" . krow &&
(
cd krow &&
rm -f .git/rr-cache &&
ln -s ../.git/rr-cache .git/rr-cache &&
test_must_fail git merge side &&
git rerere status >actual &&
echo world >expect &&
test_cmp expect actual
)
Auto-merging world
CONFLICT (content): Merge conflict in world
fatal: could not create directory '.git/rr-cache'
fatal: could not create directory '.git/rr-cache'
not ok 3 - rerere in workdir (relative) # TODO known breakage
# still have 1 known breakage(s)
# passed all remaining 2 test(s)
1..3
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1022-read-tree-partial-clone.sh ***
expecting success of 1022.1 'read-tree in partial clone prefetches in one batch':
test_when_finished "rm -rf server client trace" &&
git init server &&
echo foo >server/one &&
echo bar >server/two &&
git -C server add one two &&
git -C server commit -m "initial commit" &&
TREE=$(git -C server rev-parse HEAD^{tree}) &&
git -C server config uploadpack.allowfilter 1 &&
git -C server config uploadpack.allowanysha1inwant 1 &&
git clone --bare --filter=blob:none "file://$(pwd)/server" client &&
GIT_TRACE_PACKET="$(pwd)/trace" git -C client read-tree $TREE $TREE &&
# "done" marks the end of negotiation (once per fetch). Expect that
# only one fetch occurs.
grep "fetch> done" trace >donelines &&
test_line_count = 1 donelines
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1022-read-tree-partial-clone/server/.git/
[master (root-commit) a6fa93e] initial commit
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 one
create mode 100644 two
Cloning into bare repository 'client'...
ok 1 - read-tree in partial clone prefetches in one batch
# passed all 1 test(s)
1..1
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1051-large-conversion.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1051-large-conversion/.git/
expecting success of 1051.1 'setup input tests':
printf "\$Id: foo\$\\r\\n" >small &&
cat small small >large &&
git config core.bigfilethreshold 20 &&
git config filter.test.clean "sed s/.*/CLEAN/"
ok 1 - setup input tests
expecting success of 1051.2 'autocrlf=true converts on input':
test_config core.autocrlf true &&
check_input
ok 2 - autocrlf=true converts on input
expecting success of 1051.3 'eol=crlf converts on input':
set_attr eol=crlf &&
check_input
ok 3 - eol=crlf converts on input
expecting success of 1051.4 'ident converts on input':
set_attr ident &&
check_input
ok 4 - ident converts on input
expecting success of 1051.5 'user-defined filters convert on input':
set_attr filter=test &&
check_input
ok 5 - user-defined filters convert on input
expecting success of 1051.6 'setup output tests':
echo "\$Id\$" >small &&
cat small small >large &&
git add small large &&
git config core.bigfilethreshold 7 &&
git config filter.test.smudge "sed s/.*/SMUDGE/"
ok 6 - setup output tests
expecting success of 1051.7 'autocrlf=true converts on output':
test_config core.autocrlf true &&
check_output
Updated 2 paths from the index
ok 7 - autocrlf=true converts on output
expecting success of 1051.8 'eol=crlf converts on output':
set_attr eol=crlf &&
check_output
Updated 2 paths from the index
ok 8 - eol=crlf converts on output
expecting success of 1051.9 'user-defined filters convert on output':
set_attr filter=test &&
check_output
Updated 2 paths from the index
ok 9 - user-defined filters convert on output
expecting success of 1051.10 'ident converts on output':
set_attr ident &&
rm -f small large &&
git checkout small large &&
sed -n "s/Id: .*/Id: SHA/p" <small >small.clean &&
head -n 1 large >large.head &&
sed -n "s/Id: .*/Id: SHA/p" <large.head >large.clean &&
test_cmp small.clean large.clean
Updated 2 paths from the index
ok 10 - ident converts on output
checking prerequisite: EXPENSIVE
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-EXPENSIVE" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-EXPENSIVE" &&
test -n "$GIT_TEST_LONG"
)
prerequisite EXPENSIVE not satisfied
checking prerequisite: SIZE_T_IS_64BIT
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SIZE_T_IS_64BIT" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SIZE_T_IS_64BIT" &&
test 8 -eq "$(build_option sizeof-size_t)"
)
prerequisite SIZE_T_IS_64BIT not satisfied
checking prerequisite: LONG_IS_64BIT
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-LONG_IS_64BIT" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-LONG_IS_64BIT" &&
test 8 -le "$(build_option sizeof-long)"
)
prerequisite LONG_IS_64BIT not satisfied
ok 11 # skip files over 4GB convert on output (missing SIZE_T_IS_64BIT,EXPENSIVE of EXPENSIVE,SIZE_T_IS_64BIT,!LONG_IS_64BIT)
ok 12 # skip files over 4GB convert on input (missing SIZE_T_IS_64BIT,EXPENSIVE of EXPENSIVE,SIZE_T_IS_64BIT,!LONG_IS_64BIT)
# passed all 12 test(s)
1..12
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1060-object-corruption.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1060-object-corruption/.git/
expecting success of 1060.1 'setup corrupt repo':
git init bit-error &&
(
cd bit-error &&
test_commit content &&
corrupt_byte HEAD:content.t 10
) &&
git init no-bit-error &&
(
# distinct commit from bit-error, but containing a
# non-corrupted version of the same blob
cd no-bit-error &&
test_tick &&
test_commit content
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1060-object-corruption/bit-error/.git/
[master (root-commit) 0df6d69] content
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 content.t
1+0 records in
1+0 records out
1 byte copied, 9.587e-05 s, 10.4 kB/s
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1060-object-corruption/no-bit-error/.git/
[master (root-commit) f374eba] content
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 content.t
ok 1 - setup corrupt repo
expecting success of 1060.2 'setup repo with missing object':
git init missing &&
(
cd missing &&
test_commit content &&
rm -f "$(obj_to_file HEAD:content.t)"
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1060-object-corruption/missing/.git/
[master (root-commit) 0df6d69] content
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 content.t
ok 2 - setup repo with missing object
expecting success of 1060.3 'setup repo with misnamed object':
git init misnamed &&
(
cd misnamed &&
test_commit content &&
good=$(obj_to_file HEAD:content.t) &&
blob=$(echo corrupt | git hash-object -w --stdin) &&
bad=$(obj_to_file $blob) &&
rm -f "$good" &&
mv "$bad" "$good"
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1060-object-corruption/misnamed/.git/
[master (root-commit) 0df6d69] content
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 content.t
ok 3 - setup repo with misnamed object
expecting success of 1060.4 'streaming a corrupt blob fails':
(
cd bit-error &&
test_must_fail git cat-file blob HEAD:content.t
)
error: inflate: data stream error (invalid distance too far back)
error: unable to unpack d95f3ad14dee633a758d2e331151e950dd13e4ed header
error: inflate: data stream error (invalid distance too far back)
error: unable to unpack d95f3ad14dee633a758d2e331151e950dd13e4ed header
error: inflate: data stream error (invalid distance too far back)
error: unable to unpack d95f3ad14dee633a758d2e331151e950dd13e4ed header
fatal: loose object d95f3ad14dee633a758d2e331151e950dd13e4ed (stored in .git/objects/d9/5f3ad14dee633a758d2e331151e950dd13e4ed) is corrupt
ok 4 - streaming a corrupt blob fails
expecting success of 1060.5 'getting type of a corrupt blob fails':
(
cd bit-error &&
test_must_fail git cat-file -s HEAD:content.t
)
error: inflate: data stream error (invalid distance too far back)
error: unable to unpack d95f3ad14dee633a758d2e331151e950dd13e4ed header
fatal: git cat-file: could not get object info
ok 5 - getting type of a corrupt blob fails
expecting success of 1060.6 'read-tree -u detects bit-errors in blobs':
(
cd bit-error &&
rm -f content.t &&
test_must_fail git read-tree --reset -u HEAD
)
error: inflate: data stream error (invalid distance too far back)
error: unable to unpack d95f3ad14dee633a758d2e331151e950dd13e4ed header
error: inflate: data stream error (invalid distance too far back)
error: unable to unpack d95f3ad14dee633a758d2e331151e950dd13e4ed header
fatal: loose object d95f3ad14dee633a758d2e331151e950dd13e4ed (stored in .git/objects/d9/5f3ad14dee633a758d2e331151e950dd13e4ed) is corrupt
ok 6 - read-tree -u detects bit-errors in blobs
expecting success of 1060.7 'read-tree -u detects missing objects':
(
cd missing &&
rm -f content.t &&
test_must_fail git read-tree --reset -u HEAD
)
error: unable to read sha1 file of content.t (d95f3ad14dee633a758d2e331151e950dd13e4ed)
ok 7 - read-tree -u detects missing objects
expecting success of 1060.8 'clone --no-local --bare detects corruption':
test_must_fail git clone --no-local --bare bit-error corrupt-transport
Cloning into bare repository 'corrupt-transport'...
remote: error: inflate: data stream error (invalid distance too far back)
remote: error: unable to unpack d95f3ad14dee633a758d2e331151e950dd13e4ed header
remote: error: inflate: data stream error (invalid distance too far back)
remote: error: unable to unpack d95f3ad14dee633a758d2e331151e950dd13e4ed header
remote: fatal: loose object d95f3ad14dee633a758d2e331151e950dd13e4ed (stored in ./objects/d9/5f3ad14dee633a758d2e331151e950dd13e4ed) is corrupt
error: git upload-pack: git-pack-objects died with error.
fatal: git upload-pack: aborting due to possible repository corruption on the remote side.
remote: aborting due to possible repository corruption on the remote side.
fatal: early EOF
fatal: fetch-pack: invalid index-pack output
ok 8 - clone --no-local --bare detects corruption
expecting success of 1060.9 'clone --no-local --bare detects missing object':
test_must_fail git clone --no-local --bare missing missing-transport
Cloning into bare repository 'missing-transport'...
error: git upload-pack: git-pack-objects died with error.
fatal: git upload-pack: aborting due to possible repository corruption on the remote side.
remote: fatal: unable to read d95f3ad14dee633a758d2e331151e950dd13e4ed
remote: aborting due to possible repository corruption on the remote side.
fatal: early EOF
fatal: fetch-pack: invalid index-pack output
ok 9 - clone --no-local --bare detects missing object
expecting success of 1060.10 'clone --no-local --bare detects misnamed object':
test_must_fail git clone --no-local --bare misnamed misnamed-transport
Cloning into bare repository 'misnamed-transport'...
fatal: did not receive expected object d95f3ad14dee633a758d2e331151e950dd13e4ed
fatal: fetch-pack: invalid index-pack output
ok 10 - clone --no-local --bare detects misnamed object
expecting success of 1060.11 'clone --local detects corruption':
test_must_fail git clone --local bit-error corrupt-checkout
Cloning into 'corrupt-checkout'...
done.
error: inflate: data stream error (invalid distance too far back)
error: unable to unpack d95f3ad14dee633a758d2e331151e950dd13e4ed header
error: inflate: data stream error (invalid distance too far back)
error: unable to unpack d95f3ad14dee633a758d2e331151e950dd13e4ed header
fatal: loose object d95f3ad14dee633a758d2e331151e950dd13e4ed (stored in /<<PKGBUILDDIR>>/t/trash directory.t1060-object-corruption/corrupt-checkout/.git/objects/d9/5f3ad14dee633a758d2e331151e950dd13e4ed) is corrupt
warning: Clone succeeded, but checkout failed.
You can inspect what was checked out with 'git status'
and retry with 'git restore --source=HEAD :/'
ok 11 - clone --local detects corruption
expecting success of 1060.12 'error detected during checkout leaves repo intact':
test_path_is_dir corrupt-checkout/.git
ok 12 - error detected during checkout leaves repo intact
expecting success of 1060.13 'clone --local detects missing objects':
test_must_fail git clone --local missing missing-checkout
Cloning into 'missing-checkout'...
done.
error: unable to read sha1 file of content.t (d95f3ad14dee633a758d2e331151e950dd13e4ed)
fatal: unable to checkout working tree
warning: Clone succeeded, but checkout failed.
You can inspect what was checked out with 'git status'
and retry with 'git restore --source=HEAD :/'
ok 13 - clone --local detects missing objects
checking known breakage of 1060.14 'clone --local detects misnamed objects':
test_must_fail git clone --local misnamed misnamed-checkout
Cloning into 'misnamed-checkout'...
done.
test_must_fail: command succeeded: git clone --local misnamed misnamed-checkout
not ok 14 - clone --local detects misnamed objects # TODO known breakage
expecting success of 1060.15 'fetch into corrupted repo with index-pack':
cp -R bit-error bit-error-cp &&
test_when_finished "rm -rf bit-error-cp" &&
(
cd bit-error-cp &&
test_must_fail git -c transfer.unpackLimit=1 \
fetch ../no-bit-error 2>stderr &&
test_i18ngrep ! -i collision stderr
)
ok 15 - fetch into corrupted repo with index-pack
expecting success of 1060.16 'internal tree objects are not "missing"':
git init missing-empty &&
(
cd missing-empty &&
empty_tree=$(git hash-object -t tree /dev/null) &&
commit=$(echo foo | git commit-tree $empty_tree) &&
git rev-list --objects $commit
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1060-object-corruption/missing-empty/.git/
2093db06f424f426e05da2ca90f40d2663e89387
4b825dc642cb6eb9a060e54bf8d69288fbee4904
ok 16 - internal tree objects are not "missing"
expecting success of 1060.17 'partial clone of corrupted repository':
test_config -C misnamed uploadpack.allowFilter true &&
git clone --no-local --no-checkout --filter=blob:none \
misnamed corrupt-partial && \
test_must_fail git -C corrupt-partial checkout --force
Cloning into 'corrupt-partial'...
fatal: bad revision 'd95f3ad14dee633a758d2e331151e950dd13e4ed'
error: /<<PKGBUILDDIR>>/t/trash directory.t1060-object-corruption/misnamed did not send all necessary objects
fatal: could not fetch d95f3ad14dee633a758d2e331151e950dd13e4ed from promisor remote
ok 17 - partial clone of corrupted repository
# still have 1 known breakage(s)
# passed all remaining 16 test(s)
1..17
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1090-sparse-checkout-scope.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1090-sparse-checkout-scope/.git/
expecting success of 1090.1 'setup':
echo "initial" >a &&
echo "initial" >b &&
echo "initial" >c &&
git add a b c &&
git commit -m "initial commit"
[main (root-commit) 0b6cffd] initial commit
Author: A U Thor <author@example.com>
3 files changed, 3 insertions(+)
create mode 100644 a
create mode 100644 b
create mode 100644 c
ok 1 - setup
expecting success of 1090.2 'create feature branch':
git checkout -b feature &&
echo "modified" >b &&
echo "modified" >c &&
git add b c &&
git commit -m "modification"
Switched to a new branch 'feature'
[feature 96237bb] modification
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+), 2 deletions(-)
ok 2 - create feature branch
expecting success of 1090.3 'perform sparse checkout of main':
git config --local --bool core.sparsecheckout true &&
mkdir .git/info &&
echo "!/*" >.git/info/sparse-checkout &&
echo "/a" >>.git/info/sparse-checkout &&
echo "/c" >>.git/info/sparse-checkout &&
git checkout main &&
test_path_is_file a &&
test_path_is_missing b &&
test_path_is_file c
Switched to branch 'main'
ok 3 - perform sparse checkout of main
expecting success of 1090.4 'merge feature branch into sparse checkout of main':
git merge feature &&
test_path_is_file a &&
test_path_is_missing b &&
test_path_is_file c &&
test "$(cat c)" = "modified"
Updating 0b6cffd..96237bb
Fast-forward
b | 2 +-
c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
ok 4 - merge feature branch into sparse checkout of main
expecting success of 1090.5 'return to full checkout of main':
git checkout feature &&
echo "/*" >.git/info/sparse-checkout &&
git checkout main &&
test_path_is_file a &&
test_path_is_file b &&
test_path_is_file c &&
test "$(cat b)" = "modified"
Switched to branch 'feature'
Switched to branch 'main'
ok 5 - return to full checkout of main
expecting success of 1090.6 'skip-worktree on files outside sparse patterns':
git sparse-checkout disable &&
git sparse-checkout set --no-cone "a*" &&
git checkout-index --all --ignore-skip-worktree-bits &&
git ls-files -t >output &&
! grep ^S output >actual &&
test_must_be_empty actual &&
test_config sparse.expectFilesOutsideOfPatterns true &&
cat <<-\EOF >expect &&
S b
S c
EOF
git ls-files -t >output &&
grep ^S output >actual &&
test_cmp expect actual
ok 6 - skip-worktree on files outside sparse patterns
expecting success of 1090.7 'in partial clone, sparse checkout only fetches needed blobs':
test_create_repo server &&
git clone --template= "file://$(pwd)/server" client &&
test_config -C server uploadpack.allowfilter 1 &&
test_config -C server uploadpack.allowanysha1inwant 1 &&
echo a >server/a &&
echo bb >server/b &&
mkdir server/c &&
echo ccc >server/c/c &&
git -C server add a b c/c &&
git -C server commit -m message &&
test_config -C client core.sparsecheckout 1 &&
mkdir client/.git/info &&
echo "!/*" >client/.git/info/sparse-checkout &&
echo "/a" >>client/.git/info/sparse-checkout &&
git -C client fetch --filter=blob:none origin &&
git -C client checkout FETCH_HEAD &&
git -C client rev-list HEAD \
--quiet --objects --missing=print >unsorted_actual &&
(
printf "?" &&
git hash-object server/b &&
printf "?" &&
git hash-object server/c/c
) >unsorted_expect &&
sort unsorted_actual >actual &&
sort unsorted_expect >expect &&
test_cmp expect actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1090-sparse-checkout-scope/server/.git/
Cloning into 'client'...
warning: You appear to have cloned an empty repository.
[main (root-commit) ab14680] message
Author: A U Thor <author@example.com>
3 files changed, 3 insertions(+)
create mode 100644 a
create mode 100644 b
create mode 100644 c/c
From file:///<<PKGBUILDDIR>>/t/trash directory.t1090-sparse-checkout-scope/server
* [new branch] main -> origin/main
Note: switching to 'FETCH_HEAD'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at ab14680 message
ok 7 - in partial clone, sparse checkout only fetches needed blobs
# passed all 7 test(s)
1..7
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1050-large.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1050-large/.git/
expecting success of 1050.1 'core.bigFileThreshold must be non-negative':
test_must_fail git -c core.bigFileThreshold=-1 rev-parse >out 2>err &&
grep "bad numeric config value" err &&
test_must_be_empty out
fatal: bad numeric config value '-1' for 'core.bigfilethreshold': invalid unit
ok 1 - core.bigFileThreshold must be non-negative
expecting success of 1050.2 'setup':
# clone does not allow us to pass core.bigfilethreshold to
# new repos, so set core.bigfilethreshold globally
git config --global core.bigfilethreshold 200k &&
printf "%2000000s" X >large1 &&
cp large1 large2 &&
cp large1 large3 &&
printf "%2500000s" Y >huge &&
GIT_ALLOC_LIMIT=1500k &&
export GIT_ALLOC_LIMIT
ok 2 - setup
expecting success of 1050.3 'enter "large" codepath, with small core.bigFileThreshold':
test_when_finished "rm -rf repo" &&
git init --bare repo &&
echo large | git -C repo hash-object -w --stdin &&
git -C repo -c core.bigfilethreshold=4 fsck
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1050-large/repo/
f60ccf3732fd547d393fe12095261c4d49cc94be
notice: HEAD points to an unborn branch (master)
notice: No default references
dangling blob f60ccf3732fd547d393fe12095261c4d49cc94be
ok 3 - enter "large" codepath, with small core.bigFileThreshold
expecting success of 1050.4 'add with -c core.compression=0':
test_when_finished "rm -f .git/objects/pack/pack-*.* .git/index" &&
git $config add large1 &&
sz=$(test_file_size .git/objects/pack/pack-*.pack) &&
case "$expect" in
small) test "$sz" -le 100000 ;;
large) test "$sz" -ge 100000 ;;
esac
ok 4 - add with -c core.compression=0
expecting success of 1050.5 'add with -c core.compression=9':
test_when_finished "rm -f .git/objects/pack/pack-*.* .git/index" &&
git $config add large1 &&
sz=$(test_file_size .git/objects/pack/pack-*.pack) &&
case "$expect" in
small) test "$sz" -le 100000 ;;
large) test "$sz" -ge 100000 ;;
esac
ok 5 - add with -c core.compression=9
expecting success of 1050.6 'add with -c core.compression=0 -c pack.compression=0':
test_when_finished "rm -f .git/objects/pack/pack-*.* .git/index" &&
git $config add large1 &&
sz=$(test_file_size .git/objects/pack/pack-*.pack) &&
case "$expect" in
small) test "$sz" -le 100000 ;;
large) test "$sz" -ge 100000 ;;
esac
ok 6 - add with -c core.compression=0 -c pack.compression=0
expecting success of 1050.7 'add with -c core.compression=9 -c pack.compression=0':
test_when_finished "rm -f .git/objects/pack/pack-*.* .git/index" &&
git $config add large1 &&
sz=$(test_file_size .git/objects/pack/pack-*.pack) &&
case "$expect" in
small) test "$sz" -le 100000 ;;
large) test "$sz" -ge 100000 ;;
esac
ok 7 - add with -c core.compression=9 -c pack.compression=0
expecting success of 1050.8 'add with -c core.compression=0 -c pack.compression=9':
test_when_finished "rm -f .git/objects/pack/pack-*.* .git/index" &&
git $config add large1 &&
sz=$(test_file_size .git/objects/pack/pack-*.pack) &&
case "$expect" in
small) test "$sz" -le 100000 ;;
large) test "$sz" -ge 100000 ;;
esac
ok 8 - add with -c core.compression=0 -c pack.compression=9
expecting success of 1050.9 'add with -c core.compression=9 -c pack.compression=9':
test_when_finished "rm -f .git/objects/pack/pack-*.* .git/index" &&
git $config add large1 &&
sz=$(test_file_size .git/objects/pack/pack-*.pack) &&
case "$expect" in
small) test "$sz" -le 100000 ;;
large) test "$sz" -ge 100000 ;;
esac
ok 9 - add with -c core.compression=9 -c pack.compression=9
expecting success of 1050.10 'add with -c pack.compression=0':
test_when_finished "rm -f .git/objects/pack/pack-*.* .git/index" &&
git $config add large1 &&
sz=$(test_file_size .git/objects/pack/pack-*.pack) &&
case "$expect" in
small) test "$sz" -le 100000 ;;
large) test "$sz" -ge 100000 ;;
esac
ok 10 - add with -c pack.compression=0
expecting success of 1050.11 'add with -c pack.compression=9':
test_when_finished "rm -f .git/objects/pack/pack-*.* .git/index" &&
git $config add large1 &&
sz=$(test_file_size .git/objects/pack/pack-*.pack) &&
case "$expect" in
small) test "$sz" -le 100000 ;;
large) test "$sz" -ge 100000 ;;
esac
ok 11 - add with -c pack.compression=9
expecting success of 1050.12 'add a large file or two':
git add large1 huge large2 &&
# make sure we got a single packfile and no loose objects
count=0 idx= &&
for p in .git/objects/pack/pack-*.pack
do
count=$(( $count + 1 )) &&
test_path_is_file "$p" &&
idx=${p%.pack}.idx &&
test_path_is_file "$idx" || return 1
done &&
test $count = 1 &&
cnt=$(git show-index <"$idx" | wc -l) &&
test $cnt = 2 &&
for l in .git/objects/$OIDPATH_REGEX
do
test_path_is_missing "$l" || return 1
done &&
# attempt to add another copy of the same
git add large3 &&
bad= count=0 &&
for p in .git/objects/pack/pack-*.pack
do
count=$(( $count + 1 )) &&
test_path_is_file "$p" &&
idx=${p%.pack}.idx &&
test_path_is_file "$idx" || return 1
done &&
test $count = 1
ok 12 - add a large file or two
expecting success of 1050.13 'checkout a large file':
large1=$(git rev-parse :large1) &&
git update-index --add --cacheinfo 100644 $large1 another &&
git checkout another &&
test_cmp large1 another
Updated 1 path from the index
ok 13 - checkout a large file
expecting success of 1050.14 'packsize limit':
test_create_repo mid &&
(
cd mid &&
git config core.bigfilethreshold 64k &&
git config pack.packsizelimit 256k &&
# mid1 and mid2 will fit within 256k limit but
# appending mid3 will bust the limit and will
# result in a separate packfile.
test-tool genrandom "a" $(( 66 * 1024 )) >mid1 &&
test-tool genrandom "b" $(( 80 * 1024 )) >mid2 &&
test-tool genrandom "c" $(( 128 * 1024 )) >mid3 &&
git add mid1 mid2 mid3 &&
count=0 &&
for pi in .git/objects/pack/pack-*.idx
do
test_path_is_file "$pi" && count=$(( $count + 1 )) || return 1
done &&
test $count = 2 &&
(
git hash-object --stdin <mid1 &&
git hash-object --stdin <mid2 &&
git hash-object --stdin <mid3
) |
sort >expect &&
for pi in .git/objects/pack/pack-*.idx
do
git show-index <"$pi" || return 1
done |
sed -e "s/^[0-9]* \([0-9a-f]*\) .*/\1/" |
sort >actual &&
test_cmp expect actual
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1050-large/mid/.git/
ok 14 - packsize limit
expecting success of 1050.15 'diff --raw':
git commit -q -m initial &&
echo modified >>large1 &&
git add large1 &&
git commit -q -m modified &&
git diff --raw HEAD^
:100644 100644 6cef6d8 171a2cf M large1
ok 15 - diff --raw
expecting success of 1050.16 'diff --stat':
git diff --stat HEAD^ HEAD
large1 | Bin 2000000 -> 2000009 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
ok 16 - diff --stat
expecting success of 1050.17 'diff':
git diff HEAD^ HEAD >actual &&
grep "Binary files.*differ" actual
Binary files a/large1 and b/large1 differ
ok 17 - diff
expecting success of 1050.18 'diff --cached':
git diff --cached HEAD^ >actual &&
grep "Binary files.*differ" actual
Binary files a/large1 and b/large1 differ
ok 18 - diff --cached
expecting success of 1050.19 'hash-object':
git hash-object large1
171a2cf5cd75bd8d405266c986591716925e9712
ok 19 - hash-object
expecting success of 1050.20 'cat-file a large file':
git cat-file blob :large1 >/dev/null
ok 20 - cat-file a large file
expecting success of 1050.21 'cat-file a large file from a tag':
git tag -m largefile largefiletag :large1 &&
git cat-file blob largefiletag >/dev/null
ok 21 - cat-file a large file from a tag
expecting success of 1050.22 'git-show a large file':
git show :large1 >/dev/null
ok 22 - git-show a large file
expecting success of 1050.23 'index-pack':
git clone file://"$(pwd)"/.git foo &&
GIT_DIR=non-existent git index-pack --object-format=$(test_oid algo) \
--strict --verify foo/.git/objects/pack/*.pack
Cloning into 'foo'...
ok 23 - index-pack
expecting success of 1050.24 'repack':
git repack -ad
ok 24 - repack
expecting success of 1050.25 'pack-objects with large loose object':
SHA1=$(git hash-object huge) &&
test_create_repo loose &&
echo $SHA1 | git pack-objects --stdout |
GIT_ALLOC_LIMIT=0 GIT_DIR=loose/.git git unpack-objects &&
echo $SHA1 | GIT_DIR=loose/.git git pack-objects pack &&
test_create_repo packed &&
mv pack-* packed/.git/objects/pack &&
GIT_DIR=packed/.git git cat-file blob $SHA1 >actual &&
test_cmp huge actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1050-large/loose/.git/
dc5b4c5413c9a2a6ca4f121474e1c9c8ea086153
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1050-large/packed/.git/
ok 25 - pack-objects with large loose object
expecting success of 1050.26 'tar archiving':
git archive --format=tar HEAD >/dev/null
ok 26 - tar archiving
expecting success of 1050.27 'zip archiving, store only':
git archive --format=zip -0 HEAD >/dev/null
ok 27 - zip archiving, store only
expecting success of 1050.28 'zip archiving, deflate':
git archive --format=zip HEAD >/dev/null
ok 28 - zip archiving, deflate
expecting success of 1050.29 'fsck large blobs':
git fsck 2>err &&
test_must_be_empty err
ok 29 - fsck large blobs
# passed all 29 test(s)
1..29
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1091-sparse-checkout-builtin.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1091-sparse-checkout-builtin/.git/
expecting success of 1091.1 'setup':
git init repo &&
(
cd repo &&
echo "initial" >a &&
mkdir folder1 folder2 deep &&
mkdir deep/deeper1 deep/deeper2 &&
mkdir deep/deeper1/deepest &&
cp a folder1 &&
cp a folder2 &&
cp a deep &&
cp a deep/deeper1 &&
cp a deep/deeper2 &&
cp a deep/deeper1/deepest &&
git add . &&
git commit -m "initial commit"
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1091-sparse-checkout-builtin/repo/.git/
[main (root-commit) ebf8b57] initial commit
Author: A U Thor <author@example.com>
7 files changed, 7 insertions(+)
create mode 100644 a
create mode 100644 deep/a
create mode 100644 deep/deeper1/a
create mode 100644 deep/deeper1/deepest/a
create mode 100644 deep/deeper2/a
create mode 100644 folder1/a
create mode 100644 folder2/a
ok 1 - setup
expecting success of 1091.2 'git sparse-checkout list (not sparse)':
test_must_fail git -C repo sparse-checkout list >list 2>err &&
test_must_be_empty list &&
test_i18ngrep "this worktree is not sparse" err
fatal: this worktree is not sparse
ok 2 - git sparse-checkout list (not sparse)
expecting success of 1091.3 'git sparse-checkout list (not sparse)':
git -C repo sparse-checkout set &&
rm repo/.git/info/sparse-checkout &&
git -C repo sparse-checkout list >list 2>err &&
test_must_be_empty list &&
test_i18ngrep "this worktree is not sparse (sparse-checkout file may not exist)" err
warning: this worktree is not sparse (sparse-checkout file may not exist)
ok 3 - git sparse-checkout list (not sparse)
expecting success of 1091.4 'git sparse-checkout list (populated)':
test_when_finished rm -f repo/.git/info/sparse-checkout &&
cat >repo/.git/info/sparse-checkout <<-\EOF &&
/folder1/*
/deep/
**/a
!*bin*
EOF
cp repo/.git/info/sparse-checkout expect &&
git -C repo sparse-checkout list >list &&
test_cmp expect list
warning: unrecognized pattern: '/folder1/*'
warning: disabling cone pattern matching
ok 4 - git sparse-checkout list (populated)
expecting success of 1091.5 'git sparse-checkout init':
git -C repo sparse-checkout init --no-cone &&
cat >expect <<-\EOF &&
/*
!/*/
EOF
test_cmp expect repo/.git/info/sparse-checkout &&
test_cmp_config -C repo true core.sparsecheckout &&
check_files repo a
ok 5 - git sparse-checkout init
expecting success of 1091.6 'git sparse-checkout init in empty repo':
test_when_finished rm -rf empty-repo blank-template &&
git init --template= empty-repo &&
git -C empty-repo sparse-checkout init
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1091-sparse-checkout-builtin/empty-repo/.git/
ok 6 - git sparse-checkout init in empty repo
expecting success of 1091.7 'git sparse-checkout list after init':
git -C repo sparse-checkout list >actual &&
cat >expect <<-\EOF &&
/*
!/*/
EOF
test_cmp expect actual
ok 7 - git sparse-checkout list after init
expecting success of 1091.8 'init with existing sparse-checkout':
echo "*folder*" >> repo/.git/info/sparse-checkout &&
git -C repo sparse-checkout init &&
cat >expect <<-\EOF &&
/*
!/*/
*folder*
EOF
test_cmp expect repo/.git/info/sparse-checkout &&
check_files repo a folder1 folder2
ok 8 - init with existing sparse-checkout
expecting success of 1091.9 'clone --sparse':
git clone --sparse "file://$(pwd)/repo" clone &&
git -C clone sparse-checkout reapply --no-cone &&
git -C clone sparse-checkout list >actual &&
cat >expect <<-\EOF &&
/*
!/*/
EOF
test_cmp expect actual &&
check_files clone a
Cloning into 'clone'...
ok 9 - clone --sparse
expecting success of 1091.10 'switching to cone mode with non-cone mode patterns':
git init bad-patterns &&
(
cd bad-patterns &&
git sparse-checkout init --no-cone &&
git sparse-checkout add dir &&
git config --worktree core.sparseCheckoutCone true &&
test_must_fail git sparse-checkout add dir 2>err &&
grep "existing sparse-checkout patterns do not use cone mode" err
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1091-sparse-checkout-builtin/bad-patterns/.git/
fatal: existing sparse-checkout patterns do not use cone mode
ok 10 - switching to cone mode with non-cone mode patterns
expecting success of 1091.11 'interaction with clone --no-checkout (unborn index)':
git clone --no-checkout "file://$(pwd)/repo" clone_no_checkout &&
git -C clone_no_checkout sparse-checkout init --cone &&
git -C clone_no_checkout sparse-checkout set folder1 &&
git -C clone_no_checkout sparse-checkout list >actual &&
cat >expect <<-\EOF &&
folder1
EOF
test_cmp expect actual &&
# nothing checked out, expect "No such file or directory"
! ls clone_no_checkout/* >actual &&
test_must_be_empty actual &&
test_path_is_missing clone_no_checkout/.git/index &&
# No branch is checked out until we manually switch to one
git -C clone_no_checkout switch main &&
test_path_is_file clone_no_checkout/.git/index &&
check_files clone_no_checkout a folder1
Cloning into 'clone_no_checkout'...
ls: cannot access 'clone_no_checkout/*': No such file or directory
Already on 'main'
Your branch is up to date with 'origin/main'.
ok 11 - interaction with clone --no-checkout (unborn index)
expecting success of 1091.12 'set enables config':
git init worktree-config &&
(
cd worktree-config &&
test_commit test file &&
test_path_is_missing .git/config.worktree &&
git sparse-checkout set nothing &&
test_path_is_file .git/config.worktree &&
test_cmp_config true core.sparseCheckout
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1091-sparse-checkout-builtin/worktree-config/.git/
[main (root-commit) 236e830] test
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
ok 12 - set enables config
expecting success of 1091.13 'set sparse-checkout using builtin':
git -C repo sparse-checkout set "/*" "!/*/" "*folder*" &&
cat >expect <<-\EOF &&
/*
!/*/
*folder*
EOF
git -C repo sparse-checkout list >actual &&
test_cmp expect actual &&
test_cmp expect repo/.git/info/sparse-checkout &&
check_files repo a folder1 folder2
ok 13 - set sparse-checkout using builtin
expecting success of 1091.14 'set sparse-checkout using --stdin':
cat >expect <<-\EOF &&
/*
!/*/
/folder1/
/folder2/
EOF
git -C repo sparse-checkout set --stdin <expect &&
git -C repo sparse-checkout list >actual &&
test_cmp expect actual &&
test_cmp expect repo/.git/info/sparse-checkout &&
check_files repo "a folder1 folder2"
ok 14 - set sparse-checkout using --stdin
expecting success of 1091.15 'add to sparse-checkout':
cat repo/.git/info/sparse-checkout >old &&
test_when_finished cp old repo/.git/info/sparse-checkout &&
cat >add <<-\EOF &&
pattern1
/folder1/
pattern2
EOF
cat old >expect &&
cat add >>expect &&
git -C repo sparse-checkout add --stdin <add &&
git -C repo sparse-checkout list >actual &&
test_cmp expect actual &&
test_cmp expect repo/.git/info/sparse-checkout &&
check_files repo "a folder1 folder2"
ok 15 - add to sparse-checkout
expecting success of 1091.16 'worktree: add copies sparse-checkout patterns':
cat repo/.git/info/sparse-checkout >old &&
test_when_finished cp old repo/.git/info/sparse-checkout &&
test_when_finished git -C repo worktree remove ../worktree &&
git -C repo sparse-checkout set --no-cone "/*" &&
git -C repo worktree add --quiet ../worktree 2>err &&
test_must_be_empty err &&
new="$(git -C worktree rev-parse --git-path info/sparse-checkout)" &&
test_path_is_file "$new" &&
test_cmp repo/.git/info/sparse-checkout "$new" &&
git -C worktree sparse-checkout set --cone &&
test_cmp_config -C worktree true core.sparseCheckoutCone &&
test_must_fail git -C repo core.sparseCheckoutCone
git: 'core.sparseCheckoutCone' is not a git command. See 'git --help'.
ok 16 - worktree: add copies sparse-checkout patterns
expecting success of 1091.17 'cone mode: match patterns':
git -C repo config --worktree core.sparseCheckoutCone true &&
rm -rf repo/a repo/folder1 repo/folder2 &&
git -C repo read-tree -mu HEAD 2>err &&
test_i18ngrep ! "disabling cone patterns" err &&
git -C repo reset --hard &&
check_files repo a folder1 folder2
HEAD is now at ebf8b57 initial commit
ok 17 - cone mode: match patterns
expecting success of 1091.18 'cone mode: warn on bad pattern':
test_when_finished mv sparse-checkout repo/.git/info/ &&
cp repo/.git/info/sparse-checkout . &&
echo "!/deep/deeper/*/" >>repo/.git/info/sparse-checkout &&
git -C repo read-tree -mu HEAD 2>err &&
test_i18ngrep "unrecognized negative pattern" err
warning: unrecognized negative pattern: '/deep/deeper/*'
warning: unrecognized negative pattern: '/deep/deeper/*'
ok 18 - cone mode: warn on bad pattern
expecting success of 1091.19 'sparse-checkout disable':
test_when_finished rm -rf repo/.git/info/sparse-checkout &&
git -C repo sparse-checkout disable &&
test_path_is_file repo/.git/info/sparse-checkout &&
git -C repo config --list >config &&
test_must_fail git config core.sparseCheckout &&
check_files repo a deep folder1 folder2
ok 19 - sparse-checkout disable
expecting success of 1091.20 'sparse-index enabled and disabled':
git -C repo sparse-checkout init --cone --sparse-index &&
test_cmp_config -C repo true index.sparse &&
git -C repo ls-files --sparse >sparse &&
git -C repo sparse-checkout disable &&
git -C repo ls-files --sparse >full &&
cat >expect <<-\EOF &&
@@ -1,4 +1,7 @@
a
-deep/
-folder1/
-folder2/
+deep/a
+deep/deeper1/a
+deep/deeper1/deepest/a
+deep/deeper2/a
+folder1/a
+folder2/a
EOF
diff -u sparse full | tail -n +3 >actual &&
test_cmp expect actual &&
git -C repo config --list >config &&
test_cmp_config -C repo false index.sparse
ok 20 - sparse-index enabled and disabled
expecting success of 1091.21 'cone mode: init and set':
git -C repo sparse-checkout init --cone &&
git -C repo config --list >config &&
test_i18ngrep "core.sparsecheckoutcone=true" config &&
list_files repo >dir &&
echo a >expect &&
test_cmp expect dir &&
git -C repo sparse-checkout set deep/deeper1/deepest/ 2>err &&
test_must_be_empty err &&
check_files repo a deep &&
check_files repo/deep a deeper1 &&
check_files repo/deep/deeper1 a deepest &&
cat >expect <<-\EOF &&
/*
!/*/
/deep/
!/deep/*/
/deep/deeper1/
!/deep/deeper1/*/
/deep/deeper1/deepest/
EOF
test_cmp expect repo/.git/info/sparse-checkout &&
git -C repo sparse-checkout set --stdin 2>err <<-\EOF &&
folder1
folder2
EOF
test_must_be_empty err &&
check_files repo a folder1 folder2
core.sparsecheckoutcone=true
ok 21 - cone mode: init and set
expecting success of 1091.22 'cone mode: list':
cat >expect <<-\EOF &&
folder1
folder2
EOF
git -C repo sparse-checkout set --stdin <expect &&
git -C repo sparse-checkout list >actual 2>err &&
test_must_be_empty err &&
test_cmp expect actual
ok 22 - cone mode: list
expecting success of 1091.23 'cone mode: set with nested folders':
git -C repo sparse-checkout set deep deep/deeper1/deepest 2>err &&
test_line_count = 0 err &&
cat >expect <<-\EOF &&
/*
!/*/
/deep/
EOF
test_cmp repo/.git/info/sparse-checkout expect
ok 23 - cone mode: set with nested folders
expecting success of 1091.24 'cone mode: add independent path':
git -C repo sparse-checkout set deep/deeper1 &&
git -C repo sparse-checkout add folder1 &&
cat >expect <<-\EOF &&
/*
!/*/
/deep/
!/deep/*/
/deep/deeper1/
/folder1/
EOF
test_cmp expect repo/.git/info/sparse-checkout &&
check_files repo a deep folder1
ok 24 - cone mode: add independent path
expecting success of 1091.25 'cone mode: add sibling path':
git -C repo sparse-checkout set deep/deeper1 &&
git -C repo sparse-checkout add deep/deeper2 &&
cat >expect <<-\EOF &&
/*
!/*/
/deep/
!/deep/*/
/deep/deeper1/
/deep/deeper2/
EOF
test_cmp expect repo/.git/info/sparse-checkout &&
check_files repo a deep
ok 25 - cone mode: add sibling path
expecting success of 1091.26 'cone mode: add parent path':
git -C repo sparse-checkout set deep/deeper1 folder1 &&
git -C repo sparse-checkout add deep &&
cat >expect <<-\EOF &&
/*
!/*/
/deep/
/folder1/
EOF
test_cmp expect repo/.git/info/sparse-checkout &&
check_files repo a deep folder1
ok 26 - cone mode: add parent path
expecting success of 1091.27 'not-up-to-date does not block rest of sparsification':
test_when_finished git -C repo sparse-checkout disable &&
test_when_finished git -C repo reset --hard &&
git -C repo sparse-checkout set deep &&
echo update >repo/deep/deeper2/a &&
cp repo/.git/info/sparse-checkout expect &&
test_write_lines "!/deep/*/" "/deep/deeper1/" >>expect &&
git -C repo sparse-checkout set deep/deeper1 2>err &&
test_i18ngrep "The following paths are not up to date" err &&
test_cmp expect repo/.git/info/sparse-checkout &&
check_files repo/deep a deeper1 deeper2 &&
check_files repo/deep/deeper1 a deepest &&
check_files repo/deep/deeper1/deepest a &&
check_files repo/deep/deeper2 a
warning: The following paths are not up to date and were left despite sparse patterns:
HEAD is now at ebf8b57 initial commit
ok 27 - not-up-to-date does not block rest of sparsification
expecting success of 1091.28 'revert to old sparse-checkout on empty update':
git init empty-test &&
(
echo >file &&
git add file &&
git commit -m "test" &&
git sparse-checkout set nothing 2>err &&
test_i18ngrep ! "Sparse checkout leaves no entry on working directory" err &&
test_i18ngrep ! ".git/index.lock" err &&
git sparse-checkout set --no-cone file
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1091-sparse-checkout-builtin/empty-test/.git/
[main (root-commit) d402fe2] test
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
warning: pass a leading slash before paths such as 'file' if you want a single file (see NON-CONE PROBLEMS in the git-sparse-checkout manual).
ok 28 - revert to old sparse-checkout on empty update
expecting success of 1091.29 'fail when lock is taken':
test_when_finished rm -rf repo/.git/info/sparse-checkout.lock &&
touch repo/.git/info/sparse-checkout.lock &&
test_must_fail git -C repo sparse-checkout set deep 2>err &&
test_i18ngrep "Unable to create .*\.lock" err
fatal: Unable to create '/<<PKGBUILDDIR>>/t/trash directory.t1091-sparse-checkout-builtin/repo/.git/info/sparse-checkout.lock': File exists.
ok 29 - fail when lock is taken
expecting success of 1091.30 '.gitignore should not warn about cone mode':
git -C repo config --worktree core.sparseCheckoutCone true &&
echo "**/bin/*" >repo/.gitignore &&
git -C repo reset --hard 2>err &&
test_i18ngrep ! "disabling cone patterns" err
HEAD is now at ebf8b57 initial commit
ok 30 - .gitignore should not warn about cone mode
expecting success of 1091.31 'sparse-checkout (init|set|disable) warns with dirty status':
git clone repo dirty &&
echo dirty >dirty/folder1/a &&
git -C dirty sparse-checkout init --no-cone 2>err &&
test_i18ngrep "warning.*The following paths are not up to date" err &&
git -C dirty sparse-checkout set /folder2/* /deep/deeper1/* 2>err &&
test_i18ngrep "warning.*The following paths are not up to date" err &&
test_path_is_file dirty/folder1/a &&
git -C dirty sparse-checkout disable 2>err &&
test_must_be_empty err &&
git -C dirty reset --hard &&
git -C dirty sparse-checkout init --no-cone &&
git -C dirty sparse-checkout set /folder2/* /deep/deeper1/* &&
test_path_is_missing dirty/folder1/a &&
git -C dirty sparse-checkout disable &&
test_path_is_file dirty/folder1/a
Cloning into 'dirty'...
done.
warning: The following paths are not up to date and were left despite sparse patterns:
warning: The following paths are not up to date and were left despite sparse patterns:
HEAD is now at ebf8b57 initial commit
ok 31 - sparse-checkout (init|set|disable) warns with dirty status
expecting success of 1091.32 'sparse-checkout (init|set|disable) warns with unmerged status':
git clone repo unmerged &&
cat >input <<-EOF &&
0 $ZERO_OID folder1/a
100644 $(git -C unmerged rev-parse HEAD:folder1/a) 1 folder1/a
EOF
git -C unmerged update-index --index-info <input &&
git -C unmerged sparse-checkout init --no-cone 2>err &&
test_i18ngrep "warning.*The following paths are unmerged" err &&
git -C unmerged sparse-checkout set /folder2/* /deep/deeper1/* 2>err &&
test_i18ngrep "warning.*The following paths are unmerged" err &&
test_path_is_file dirty/folder1/a &&
git -C unmerged sparse-checkout disable 2>err &&
test_i18ngrep "warning.*The following paths are unmerged" err &&
git -C unmerged reset --hard &&
git -C unmerged sparse-checkout init --no-cone &&
git -C unmerged sparse-checkout set /folder2/* /deep/deeper1/* &&
git -C unmerged sparse-checkout disable
Cloning into 'unmerged'...
done.
warning: The following paths are unmerged and were left despite sparse patterns:
warning: The following paths are unmerged and were left despite sparse patterns:
warning: The following paths are unmerged and were left despite sparse patterns:
HEAD is now at ebf8b57 initial commit
ok 32 - sparse-checkout (init|set|disable) warns with unmerged status
checking known breakage of 1091.33 'sparse-checkout reapply':
git clone repo tweak &&
echo dirty >tweak/deep/deeper2/a &&
cat >input <<-EOF &&
0 $ZERO_OID folder1/a
100644 $(git -C tweak rev-parse HEAD:folder1/a) 1 folder1/a
EOF
git -C tweak update-index --index-info <input &&
git -C tweak sparse-checkout init --cone 2>err &&
test_i18ngrep "warning.*The following paths are not up to date" err &&
test_i18ngrep "warning.*The following paths are unmerged" err &&
git -C tweak sparse-checkout set folder2 deep/deeper1 2>err &&
test_i18ngrep "warning.*The following paths are not up to date" err &&
test_i18ngrep "warning.*The following paths are unmerged" err &&
git -C tweak sparse-checkout reapply 2>err &&
test_i18ngrep "warning.*The following paths are not up to date" err &&
test_path_is_file tweak/deep/deeper2/a &&
test_i18ngrep "warning.*The following paths are unmerged" err &&
test_path_is_file tweak/folder1/a &&
git -C tweak checkout HEAD deep/deeper2/a &&
git -C tweak sparse-checkout reapply 2>err &&
test_i18ngrep ! "warning.*The following paths are not up to date" err &&
test_path_is_missing tweak/deep/deeper2/a &&
test_i18ngrep "warning.*The following paths are unmerged" err &&
test_path_is_file tweak/folder1/a &&
# NEEDSWORK: We are asking to update a file outside of the
# sparse-checkout cone, but this is no longer allowed.
git -C tweak add folder1/a &&
git -C tweak sparse-checkout reapply 2>err &&
test_must_be_empty err &&
test_path_is_missing tweak/deep/deeper2/a &&
test_path_is_missing tweak/folder1/a &&
git -C tweak sparse-checkout disable
Cloning into 'tweak'...
done.
warning: The following paths are not up to date and were left despite sparse patterns:
warning: The following paths are unmerged and were left despite sparse patterns:
warning: The following paths are not up to date and were left despite sparse patterns:
warning: The following paths are unmerged and were left despite sparse patterns:
warning: The following paths are not up to date and were left despite sparse patterns:
warning: The following paths are unmerged and were left despite sparse patterns:
Updated 1 path from 5b6118d
warning: The following paths are unmerged and were left despite sparse patterns:
The following paths and/or pathspecs matched paths that exist
outside of your sparse-checkout definition, so will not be
updated in the index:
folder1/a
hint: If you intend to update such entries, try one of the following:
hint: * Use the --sparse option.
hint: * Disable or modify the sparsity rules.
hint: Disable this message with "git config advice.updateSparsePath false"
not ok 33 - sparse-checkout reapply # TODO known breakage
expecting success of 1091.34 'reapply can handle config options':
git -C repo sparse-checkout init --cone --no-sparse-index &&
git -C repo config --worktree --list >actual &&
cat >expect <<-\EOF &&
core.sparsecheckout=true
core.sparsecheckoutcone=true
index.sparse=false
EOF
test_cmp expect actual &&
git -C repo sparse-checkout reapply --no-cone --no-sparse-index &&
git -C repo config --worktree --list >actual &&
cat >expect <<-\EOF &&
core.sparsecheckout=true
core.sparsecheckoutcone=false
index.sparse=false
EOF
test_cmp expect actual &&
git -C repo sparse-checkout reapply --cone --sparse-index &&
git -C repo config --worktree --list >actual &&
cat >expect <<-\EOF &&
core.sparsecheckout=true
core.sparsecheckoutcone=true
index.sparse=true
EOF
test_cmp expect actual &&
git -C repo sparse-checkout disable
ok 34 - reapply can handle config options
expecting success of 1091.35 'cone mode: set with core.ignoreCase=true':
rm repo/.git/info/sparse-checkout &&
git -C repo sparse-checkout init --cone &&
git -C repo -c core.ignoreCase=true sparse-checkout set folder1 &&
cat >expect <<-\EOF &&
/*
!/*/
/folder1/
EOF
test_cmp expect repo/.git/info/sparse-checkout &&
check_files repo a folder1
ok 35 - cone mode: set with core.ignoreCase=true
expecting success of 1091.36 'setup submodules':
git clone repo super &&
(
cd super &&
mkdir modules &&
git -c protocol.file.allow=always \
submodule add ../repo modules/child &&
git add . &&
git commit -m "add submodule" &&
git sparse-checkout init --cone &&
git sparse-checkout set folder1
)
Cloning into 'super'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1091-sparse-checkout-builtin/super/modules/child'...
done.
[main 7bdd197] add submodule
Author: A U Thor <author@example.com>
2 files changed, 4 insertions(+)
create mode 100644 .gitmodules
create mode 160000 modules/child
warning: unable to rmdir 'modules/child': Directory not empty
warning: unable to rmdir 'modules/child': Directory not empty
ok 36 - setup submodules
expecting success of 1091.37 'interaction with submodules':
check_files super a folder1 modules &&
check_files super/modules/child a deep folder1 folder2
ok 37 - interaction with submodules
expecting success of 1091.38 'check-rules interaction with submodules':
git -C super ls-tree --name-only -r HEAD >all-files &&
git -C super sparse-checkout check-rules >check-rules-matches <all-files &&
test_i18ngrep ! "modules/" check-rules-matches &&
test_i18ngrep "folder1/" check-rules-matches
folder1/a
ok 38 - check-rules interaction with submodules
expecting success of 1091.39 'different sparse-checkouts with worktrees':
git -C repo sparse-checkout set --cone deep folder1 &&
git -C repo worktree add --detach ../worktree &&
check_files worktree "a deep folder1" &&
git -C repo sparse-checkout set --cone folder1 &&
git -C worktree sparse-checkout set --cone deep/deeper1 &&
check_files repo "a folder1" &&
check_files worktree "a deep"
Preparing worktree (detached HEAD ebf8b57)
HEAD is now at ebf8b57 initial commit
ok 39 - different sparse-checkouts with worktrees
expecting success of 1091.40 'set using filename keeps file on-disk':
git -C repo sparse-checkout set --skip-checks a deep &&
cat >expect <<-\EOF &&
/*
!/*/
/a/
/deep/
EOF
test_cmp expect repo/.git/info/sparse-checkout &&
check_files repo a deep
ok 40 - set using filename keeps file on-disk
expecting success of 1091.41 'pattern-checks: /A/**':
cat >repo/.git/info/sparse-checkout <<-\EOF &&
/*
!/*/
/folder1/**
EOF
check_read_tree_errors repo "a folder1" "disabling cone pattern matching"
warning: disabling cone pattern matching
warning: disabling cone pattern matching
ok 41 - pattern-checks: /A/**
expecting success of 1091.42 'pattern-checks: /A/**/B/':
cat >repo/.git/info/sparse-checkout <<-\EOF &&
/*
!/*/
/deep/**/deepest
EOF
check_read_tree_errors repo "a deep" "disabling cone pattern matching" &&
check_files repo/deep "deeper1" &&
check_files repo/deep/deeper1 "deepest"
warning: disabling cone pattern matching
warning: disabling cone pattern matching
ok 42 - pattern-checks: /A/**/B/
expecting success of 1091.43 'pattern-checks: too short':
cat >repo/.git/info/sparse-checkout <<-\EOF &&
/*
!/*/
/
EOF
check_read_tree_errors repo "a" "disabling cone pattern matching"
warning: disabling cone pattern matching
ok 43 - pattern-checks: too short
expecting success of 1091.44 'pattern-checks: not too short':
cat >repo/.git/info/sparse-checkout <<-\EOF &&
/*
!/*/
/b/
EOF
git -C repo read-tree -mu HEAD 2>err &&
test_must_be_empty err &&
check_files repo a
ok 44 - pattern-checks: not too short
expecting success of 1091.45 'pattern-checks: trailing "*"':
cat >repo/.git/info/sparse-checkout <<-\EOF &&
/*
!/*/
/a*
EOF
check_read_tree_errors repo "a" "disabling cone pattern matching"
warning: disabling cone pattern matching
ok 45 - pattern-checks: trailing "*"
expecting success of 1091.46 'pattern-checks: starting "*"':
cat >repo/.git/info/sparse-checkout <<-\EOF &&
/*
!/*/
*eep/
EOF
check_read_tree_errors repo "a deep" "disabling cone pattern matching"
warning: disabling cone pattern matching
warning: disabling cone pattern matching
ok 46 - pattern-checks: starting "*"
expecting success of 1091.47 'pattern-checks: non directory pattern':
cat >repo/.git/info/sparse-checkout <<-\EOF &&
/deep/deeper1/a
EOF
check_read_tree_errors repo deep "disabling cone pattern matching" &&
check_files repo/deep deeper1 &&
check_files repo/deep/deeper1 a
warning: disabling cone pattern matching
warning: disabling cone pattern matching
ok 47 - pattern-checks: non directory pattern
expecting success of 1091.48 'pattern-checks: contained glob characters':
for c in "[a]" "\\" "?" "*"
do
cat >repo/.git/info/sparse-checkout <<-EOF &&
/*
!/*/
something$c-else/
EOF
check_read_tree_errors repo "a" "disabling cone pattern matching" || return 1
done
warning: disabling cone pattern matching
warning: disabling cone pattern matching
warning: disabling cone pattern matching
warning: disabling cone pattern matching
warning: disabling cone pattern matching
warning: disabling cone pattern matching
warning: disabling cone pattern matching
warning: disabling cone pattern matching
ok 48 - pattern-checks: contained glob characters
expecting success of 1091.49 'pattern-checks: escaped characters':
git clone repo escaped &&
TREEOID=$(git -C escaped rev-parse HEAD:folder1) &&
NEWTREE=$(git -C escaped mktree <<-EOF
$(git -C escaped ls-tree HEAD)
040000 tree $TREEOID zbad\\dir
040000 tree $TREEOID zdoes*exist
040000 tree $TREEOID zglob[!a]?
EOF
) &&
COMMIT=$(git -C escaped commit-tree $NEWTREE -p HEAD) &&
git -C escaped reset --hard $COMMIT &&
check_files escaped "a deep folder1 folder2 zbad\\dir zdoes*exist" zglob[!a]? &&
git -C escaped sparse-checkout init --cone &&
git -C escaped sparse-checkout set --skip-checks zbad\\dir/bogus "zdoes*not*exist" "zdoes*exist" "zglob[!a]?" &&
cat >expect <<-\EOF &&
/*
!/*/
/zbad\\dir/
!/zbad\\dir/*/
/zbad\\dir/bogus/
/zdoes\*exist/
/zdoes\*not\*exist/
/zglob\[!a]\?/
EOF
test_cmp expect escaped/.git/info/sparse-checkout &&
check_read_tree_errors escaped "a zbad\\dir zdoes*exist zglob[!a]?" &&
git -C escaped ls-tree -d --name-only HEAD >list-expect &&
git -C escaped sparse-checkout set --stdin <list-expect &&
cat >expect <<-\EOF &&
/*
!/*/
/deep/
/folder1/
/folder2/
/zbad\\dir/
/zdoes\*exist/
/zglob\[!a]\?/
EOF
test_cmp expect escaped/.git/info/sparse-checkout &&
check_files escaped "a deep folder1 folder2 zbad\\dir zdoes*exist" zglob[!a]? &&
git -C escaped sparse-checkout list >list-actual &&
test_cmp list-expect list-actual
Cloning into 'escaped'...
done.
HEAD is now at deac45b
ok 49 - pattern-checks: escaped characters
ok 50 # skip cone mode replaces backslashes with slashes (missing MINGW)
expecting success of 1091.51 'cone mode clears ignored subdirectories':
rm repo/.git/info/sparse-checkout &&
git -C repo sparse-checkout init --cone &&
git -C repo sparse-checkout set deep/deeper1 &&
cat >repo/.gitignore <<-\EOF &&
obj/
*.o
EOF
git -C repo add .gitignore &&
git -C repo commit -m ".gitignore" &&
mkdir -p repo/obj repo/folder1/obj repo/deep/deeper2/obj &&
for file in folder1/obj/a obj/a folder1/file.o folder1.o \
deep/deeper2/obj/a deep/deeper2/file.o file.o
do
echo ignored >repo/$file || return 1
done &&
git -C repo status --porcelain=v2 >out &&
test_must_be_empty out &&
git -C repo sparse-checkout reapply &&
test_path_is_missing repo/folder1 &&
test_path_is_missing repo/deep/deeper2 &&
test_path_is_dir repo/obj &&
test_path_is_file repo/file.o &&
git -C repo status --porcelain=v2 >out &&
test_must_be_empty out &&
git -C repo sparse-checkout set deep/deeper2 &&
test_path_is_missing repo/deep/deeper1 &&
test_path_is_dir repo/deep/deeper2 &&
test_path_is_dir repo/obj &&
test_path_is_file repo/file.o &&
>repo/deep/deeper2/ignored.o &&
>repo/deep/deeper2/untracked &&
# When an untracked file is in the way, all untracked files
# (even ignored files) are preserved.
git -C repo sparse-checkout set folder1 2>err &&
grep "contains untracked files" err &&
test_path_is_file repo/deep/deeper2/ignored.o &&
test_path_is_file repo/deep/deeper2/untracked &&
# The rest of the cone matches expectation
test_path_is_missing repo/deep/deeper1 &&
test_path_is_dir repo/obj &&
test_path_is_file repo/file.o &&
git -C repo status --porcelain=v2 >out &&
echo "? deep/deeper2/untracked" >expect &&
test_cmp expect out
[main ab507a5] .gitignore
Author: A U Thor <author@example.com>
1 file changed, 2 insertions(+)
create mode 100644 .gitignore
warning: directory 'deep/' contains untracked files, but is not in the sparse-checkout cone
ok 51 - cone mode clears ignored subdirectories
expecting success of 1091.52 'malformed cone-mode patterns':
git -C repo sparse-checkout init --cone &&
mkdir -p repo/foo/bar &&
touch repo/foo/bar/x repo/foo/y &&
cat >repo/.git/info/sparse-checkout <<-\EOF &&
/*
!/*/
/foo/
!/foo/*/
/foo/\*/
EOF
# Listing the patterns will notice the duplicate pattern and
# emit a warning. It will list the patterns directly instead
# of using the cone-mode translation to a set of directories.
git -C repo sparse-checkout list >actual 2>err &&
test_cmp repo/.git/info/sparse-checkout actual &&
grep "warning: your sparse-checkout file may have issues: pattern .* is repeated" err &&
grep "warning: disabling cone pattern matching" err
warning: directory 'deep/' contains untracked files, but is not in the sparse-checkout cone
warning: your sparse-checkout file may have issues: pattern '/foo/\*' is repeated
warning: disabling cone pattern matching
ok 52 - malformed cone-mode patterns
expecting success of 1091.53 'set from subdir pays attention to prefix':
git -C repo sparse-checkout disable &&
git -C repo/deep sparse-checkout set --cone deeper2 ../folder1 &&
git -C repo sparse-checkout list >actual &&
cat >expect <<-\EOF &&
deep/deeper2
folder1
EOF
test_cmp expect actual
ok 53 - set from subdir pays attention to prefix
expecting success of 1091.54 'add from subdir pays attention to prefix':
git -C repo sparse-checkout set --cone deep/deeper2 &&
git -C repo/deep sparse-checkout add deeper1/deepest ../folder1 &&
git -C repo sparse-checkout list >actual &&
cat >expect <<-\EOF &&
deep/deeper1/deepest
deep/deeper2
folder1
EOF
test_cmp expect actual
ok 54 - add from subdir pays attention to prefix
expecting success of 1091.55 'set from subdir in non-cone mode throws an error':
git -C repo sparse-checkout disable &&
test_must_fail git -C repo/deep sparse-checkout set --no-cone deeper2 ../folder1 2>error &&
grep "run from the toplevel directory in non-cone mode" error
fatal: please run from the toplevel directory in non-cone mode
ok 55 - set from subdir in non-cone mode throws an error
expecting success of 1091.56 'set from subdir in non-cone mode throws an error':
git -C repo sparse-checkout set --no-cone deep/deeper2 &&
test_must_fail git -C repo/deep sparse-checkout add deeper1/deepest ../folder1 2>error &&
grep "run from the toplevel directory in non-cone mode" error
fatal: please run from the toplevel directory in non-cone mode
ok 56 - set from subdir in non-cone mode throws an error
expecting success of 1091.57 'by default, cone mode will error out when passed files':
git -C repo sparse-checkout reapply --cone &&
test_must_fail git -C repo sparse-checkout add .gitignore 2>error &&
grep ".gitignore.*is not a directory" error
warning: unrecognized pattern: 'deep/deeper2'
warning: disabling cone pattern matching
warning: unrecognized pattern: 'deep/deeper2'
warning: disabling cone pattern matching
fatal: '.gitignore' is not a directory; to treat it as a directory anyway, rerun with --skip-checks
ok 57 - by default, cone mode will error out when passed files
expecting success of 1091.58 'by default, non-cone mode will warn on individual files':
git -C repo sparse-checkout reapply --no-cone &&
git -C repo sparse-checkout add .gitignore 2>warning &&
grep "pass a leading slash before paths.*if you want a single file" warning
warning: pass a leading slash before paths such as '.gitignore' if you want a single file (see NON-CONE PROBLEMS in the git-sparse-checkout manual).
ok 58 - by default, non-cone mode will warn on individual files
expecting success of 1091.59 'setup bare repo':
git clone --bare "file://$(pwd)/repo" bare
Cloning into bare repository 'bare'...
ok 59 - setup bare repo
expecting success of 1091.60 'list fails outside work tree':
test_must_fail git -C bare sparse-checkout list 2>err &&
test_i18ngrep "this operation must be run in a work tree" err
fatal: this operation must be run in a work tree
ok 60 - list fails outside work tree
expecting success of 1091.61 'add fails outside work tree':
test_must_fail git -C bare sparse-checkout add deeper 2>err &&
test_i18ngrep "this operation must be run in a work tree" err
fatal: this operation must be run in a work tree
ok 61 - add fails outside work tree
expecting success of 1091.62 'set fails outside work tree':
test_must_fail git -C bare sparse-checkout set deeper 2>err &&
test_i18ngrep "this operation must be run in a work tree" err
fatal: this operation must be run in a work tree
ok 62 - set fails outside work tree
expecting success of 1091.63 'init fails outside work tree':
test_must_fail git -C bare sparse-checkout init 2>err &&
test_i18ngrep "this operation must be run in a work tree" err
fatal: this operation must be run in a work tree
ok 63 - init fails outside work tree
expecting success of 1091.64 'reapply fails outside work tree':
test_must_fail git -C bare sparse-checkout reapply 2>err &&
test_i18ngrep "this operation must be run in a work tree" err
fatal: this operation must be run in a work tree
ok 64 - reapply fails outside work tree
expecting success of 1091.65 'disable fails outside work tree':
test_must_fail git -C bare sparse-checkout disable 2>err &&
test_i18ngrep "this operation must be run in a work tree" err
fatal: this operation must be run in a work tree
ok 65 - disable fails outside work tree
expecting success of 1091.66 'setup clean':
git -C repo clean -fdx
Removing deep/deeper2/ignored.o
Removing deep/deeper2/untracked
Removing file.o
Removing folder1.o
Removing foo/
Removing obj/
ok 66 - setup clean
expecting success of 1091.67 'check-rules cone mode':
cat >rules <<-\EOF &&
folder1
deep/deeper1/deepest
EOF
git -C bare ls-tree -r --name-only HEAD >all-files &&
git -C bare sparse-checkout check-rules --cone \
--rules-file ../rules >check-rules-file <all-files &&
git -C repo sparse-checkout set --cone --stdin <rules&&
git -C repo ls-files -t >out &&
sed -n "/^S /!s/^. //p" out >ls-files &&
git -C repo sparse-checkout check-rules >check-rules-default <all-files &&
test_i18ngrep "deep/deeper1/deepest/a" check-rules-file &&
test_i18ngrep ! "deep/deeper2" check-rules-file &&
test_cmp check-rules-file ls-files &&
test_cmp check-rules-file check-rules-default
deep/deeper1/deepest/a
ok 67 - check-rules cone mode
expecting success of 1091.68 'check-rules non-cone mode':
cat >rules <<-\EOF &&
deep/deeper1/deepest/a
EOF
git -C bare ls-tree -r --name-only HEAD >all-files &&
git -C bare sparse-checkout check-rules --no-cone --rules-file ../rules\
>check-rules-file <all-files &&
cat rules | git -C repo sparse-checkout set --no-cone --stdin &&
git -C repo ls-files -t >out &&
sed -n "/^S /!s/^. //p" out >ls-files &&
git -C repo sparse-checkout check-rules >check-rules-default <all-files &&
cat >expect <<-\EOF &&
deep/deeper1/deepest/a
EOF
test_cmp expect check-rules-file &&
test_cmp check-rules-file ls-files &&
test_cmp check-rules-file check-rules-default
ok 68 - check-rules non-cone mode
expecting success of 1091.69 'check-rules cone mode is default':
cat >rules <<-\EOF &&
folder1
EOF
cat >all-files <<-\EOF &&
toplevel
folder2/file
folder1/file
EOF
cat >expect <<-\EOF &&
toplevel
folder1/file
EOF
git -C repo sparse-checkout set --no-cone &&
git -C repo sparse-checkout check-rules \
--rules-file ../rules >actual <all-files &&
git -C bare sparse-checkout check-rules \
--rules-file ../rules >actual-bare <all-files &&
test_cmp expect actual &&
test_cmp expect actual-bare
ok 69 - check-rules cone mode is default
expecting success of 1091.70 'check-rules quoting':
cat >rules <<-EOF &&
"folder\" a"
EOF
cat >files <<-EOF &&
"folder\" a/file"
"folder\" b/file"
EOF
cat >expect <<-EOF &&
"folder\" a/file"
EOF
git sparse-checkout check-rules --cone \
--rules-file rules >actual <files &&
test_cmp expect actual
ok 70 - check-rules quoting
expecting success of 1091.71 'check-rules null termination':
cat >rules <<-EOF &&
"folder\" a"
EOF
lf_to_nul >files <<-EOF &&
folder" a/a
folder" a/b
folder" b/fileQ
EOF
cat >expect <<-EOF &&
folder" a/aQfolder" a/bQ
EOF
git sparse-checkout check-rules --cone -z \
--rules-file rules >actual.nul <files &&
nul_to_q <actual.nul >actual &&
echo >>actual &&
test_cmp expect actual
ok 71 - check-rules null termination
# still have 1 known breakage(s)
# passed all remaining 70 test(s)
1..71
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1100-commit-tree-options.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1100-commit-tree-options/.git/
expecting success of 1100.1 'test preparation: write empty tree': git write-tree >treeid
ok 1 - test preparation: write empty tree
expecting success of 1100.2 'construct commit': echo comment text |
GIT_AUTHOR_NAME="Author Name" \
GIT_AUTHOR_EMAIL="author@email" \
GIT_AUTHOR_DATE="2005-05-26 23:00" \
GIT_COMMITTER_NAME="Committer Name" \
GIT_COMMITTER_EMAIL="committer@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 of 1100.3 'read commit': git cat-file commit $(cat commitid) >commit
ok 3 - read commit
expecting success of 1100.4 'compare commit': test_cmp expected commit
ok 4 - compare commit
expecting success of 1100.5 'flags and then non flags':
test_tick &&
echo comment text |
git commit-tree $(cat treeid) >commitid &&
echo comment text |
git commit-tree $(cat treeid) -p $(cat commitid) >childid-1 &&
echo comment text |
git commit-tree -p $(cat commitid) $(cat treeid) >childid-2 &&
test_cmp childid-1 childid-2 &&
git commit-tree $(cat treeid) -m foo >childid-3 &&
git commit-tree -m foo $(cat treeid) >childid-4 &&
test_cmp childid-3 childid-4
ok 5 - flags and then non flags
# passed all 5 test(s)
1..5
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1300-config.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1300-config/.git/
expecting success of 1300.1 'clear default config':
rm -f .git/config
ok 1 - clear default config
expecting success of 1300.2 'initial':
git config section.penguin "little blue" &&
test_cmp expect .git/config
ok 2 - initial
expecting success of 1300.3 'mixed case':
git config Section.Movie BadPhysics &&
test_cmp expect .git/config
ok 3 - mixed case
expecting success of 1300.4 'similar section':
git config Sections.WhatEver Second &&
test_cmp expect .git/config
ok 4 - similar section
expecting success of 1300.5 'uppercase section':
git config SECTION.UPPERCASE true &&
test_cmp expect .git/config
ok 5 - uppercase section
expecting success of 1300.6 'replace with non-match':
git config section.penguin kingpin !blue
ok 6 - replace with non-match
expecting success of 1300.7 'replace with non-match (actually matching)':
git config section.penguin "very blue" !kingpin
ok 7 - replace with non-match (actually matching)
expecting success of 1300.8 'non-match result': test_cmp expect .git/config
ok 8 - non-match result
expecting success of 1300.9 'find mixed-case key by canonical name':
test_cmp_config Second sections.whatever
ok 9 - find mixed-case key by canonical name
expecting success of 1300.10 'find mixed-case key by non-canonical name':
test_cmp_config Second SeCtIoNs.WhAtEvEr
ok 10 - find mixed-case key by non-canonical name
expecting success of 1300.11 'subsections are not canonicalized by git-config':
cat >>.git/config <<-\EOF &&
[section.SubSection]
key = one
[section "SubSection"]
key = two
EOF
test_cmp_config one section.subsection.key &&
test_cmp_config two section.SubSection.key
ok 11 - subsections are not canonicalized by git-config
expecting success of 1300.12 'value for missing section and missing key is not printed':
test_must_fail git config "$key" >out 2>err &&
test_must_be_empty out &&
test_must_be_empty err
ok 12 - value for missing section and missing key is not printed
expecting success of 1300.13 'value for missing section and existing key is not printed':
test_must_fail git config "$key" >out 2>err &&
test_must_be_empty out &&
test_must_be_empty err
ok 13 - value for missing section and existing key is not printed
expecting success of 1300.14 'value for existing section and missing key is not printed':
test_must_fail git config "$key" >out 2>err &&
test_must_be_empty out &&
test_must_be_empty err
ok 14 - value for existing section and missing key is not printed
expecting success of 1300.15 'value for missing subsection and missing key is not printed':
test_must_fail git config "$key" >out 2>err &&
test_must_be_empty out &&
test_must_be_empty err
ok 15 - value for missing subsection and missing key is not printed
expecting success of 1300.16 'value for existing subsection and missing key is not printed':
test_must_fail git config "$key" >out 2>err &&
test_must_be_empty out &&
test_must_be_empty err
ok 16 - value for existing subsection and missing key is not printed
expecting success of 1300.17 'value for missing subsection and existing key is not printed':
test_must_fail git config "$key" >out 2>err &&
test_must_be_empty out &&
test_must_be_empty err
ok 17 - value for missing subsection and existing key is not printed
expecting success of 1300.18 'unset with cont. lines':
git config --unset beta.baz
ok 18 - unset with cont. lines
expecting success of 1300.19 'unset with cont. lines is correct': test_cmp expect .git/config
ok 19 - unset with cont. lines is correct
expecting success of 1300.20 'multiple unset':
git config --unset-all beta.haha
ok 20 - multiple unset
expecting success of 1300.21 'multiple unset is correct':
test_cmp expect .git/config
ok 21 - multiple unset is correct
expecting success of 1300.22 '--replace-all missing value':
test_must_fail git config --replace-all beta.haha &&
test_cmp .git/config2 .git/config
error: wrong number of arguments, should be from 2 to 3
usage: git config [<options>]
Config file location
--global use global config file
--system use system config file
--local use repository config file
--worktree use per-worktree config file
-f, --file <file> use given config file
--blob <blob-id> read config from given blob object
Action
--get get value: name [value-pattern]
--get-all get all values: key [value-pattern]
--get-regexp get values for regexp: name-regex [value-pattern]
--get-urlmatch get value specific for the URL: section[.var] URL
--replace-all replace all matching variables: name value [value-pattern]
--add add a new variable: name value
--unset remove a variable: name [value-pattern]
--unset-all remove all matches: name [value-pattern]
--rename-section rename section: old-name new-name
--remove-section remove a section: name
-l, --list list all
--fixed-value use string equality when comparing values to 'value-pattern'
-e, --edit open an editor
--get-color find the color configured: slot [default]
--get-colorbool find the color setting: slot [stdout-is-tty]
Type
-t, --type <type> value is given this type
--bool value is "true" or "false"
--int value is decimal number
--bool-or-int value is --bool or --int
--bool-or-str value is --bool or string
--path value is a path (file or directory name)
--expiry-date value is an expiry date
Other
-z, --null terminate values with NUL byte
--name-only show variable names only
--includes respect include directives on lookup
--show-origin show origin of config (file, standard input, blob, command line)
--show-scope show scope of config (worktree, local, global, system, command)
--default <value> with --get, use default value when missing entry
ok 22 - --replace-all missing value
expecting success of 1300.23 '--replace-all':
git config --replace-all beta.haha gamma
ok 23 - --replace-all
expecting success of 1300.24 'all replaced':
test_cmp expect .git/config
ok 24 - all replaced
expecting success of 1300.25 'really mean test':
git config beta.haha alpha &&
test_cmp expect .git/config
ok 25 - really mean test
expecting success of 1300.26 'really really mean test':
git config nextsection.nonewline wow &&
test_cmp expect .git/config
ok 26 - really really mean test
expecting success of 1300.27 'get value':
test_cmp_config alpha beta.haha
ok 27 - get value
expecting success of 1300.28 'unset':
git config --unset beta.haha &&
test_cmp expect .git/config
ok 28 - unset
expecting success of 1300.29 'multivar':
git config nextsection.NoNewLine "wow2 for me" "for me$" &&
test_cmp expect .git/config
ok 29 - multivar
expecting success of 1300.30 'non-match':
git config --get nextsection.nonewline !for
wow
ok 30 - non-match
expecting success of 1300.31 'non-match value':
test_cmp_config wow --get nextsection.nonewline !for
ok 31 - non-match value
expecting success of 1300.32 'multi-valued get returns final one':
test_cmp_config "wow2 for me" --get nextsection.nonewline
ok 32 - multi-valued get returns final one
expecting success of 1300.33 'multi-valued get-all returns all':
cat >expect <<-\EOF &&
wow
wow2 for me
EOF
git config --get-all nextsection.nonewline >actual &&
test_cmp expect actual
ok 33 - multi-valued get-all returns all
expecting success of 1300.34 'multivar replace':
git config nextsection.nonewline "wow3" "wow$" &&
test_cmp expect .git/config
ok 34 - multivar replace
expecting success of 1300.35 'ambiguous unset':
test_must_fail git config --unset nextsection.nonewline
warning: nextsection.nonewline has multiple values
ok 35 - ambiguous unset
expecting success of 1300.36 'invalid unset':
test_must_fail git config --unset somesection.nonewline
ok 36 - invalid unset
expecting success of 1300.37 'multivar unset':
git config --unset nextsection.nonewline "wow3$" &&
test_cmp expect .git/config
ok 37 - multivar unset
expecting success of 1300.38 'invalid key': test_must_fail git config inval.2key blabla
error: invalid key: inval.2key
ok 38 - invalid key
expecting success of 1300.39 'correct key': git config 123456.a123 987
ok 39 - correct key
expecting success of 1300.40 'hierarchical section':
git config Version.1.2.3eX.Alpha beta
ok 40 - hierarchical section
expecting success of 1300.41 'hierarchical section value':
test_cmp expect .git/config
ok 41 - hierarchical section value
expecting success of 1300.42 'working --list':
git config --list > output &&
test_cmp expect output
ok 42 - working --list
expecting success of 1300.43 '--list without repo produces empty output':
git --git-dir=nonexistent config --list >output &&
test_must_be_empty output
ok 43 - --list without repo produces empty output
expecting success of 1300.44 '--name-only --list':
git config --name-only --list >output &&
test_cmp expect output
ok 44 - --name-only --list
expecting success of 1300.45 '--get-regexp':
git config --get-regexp in >output &&
test_cmp expect output
ok 45 - --get-regexp
expecting success of 1300.46 '--name-only --get-regexp':
git config --name-only --get-regexp in >output &&
test_cmp expect output
ok 46 - --name-only --get-regexp
expecting success of 1300.47 '--add':
git config --add nextsection.nonewline "wow4 for you" &&
git config --get-all nextsection.nonewline > output &&
test_cmp expect output
ok 47 - --add
expecting success of 1300.48 'get variable with no value':
git config --get novalue.variable ^$
ok 48 - get variable with no value
expecting success of 1300.49 'get variable with empty value':
git config --get emptyvalue.variable ^$
ok 49 - get variable with empty value
expecting success of 1300.50 'get-regexp variable with no value':
git config --get-regexp novalue > output &&
test_cmp expect output
ok 50 - get-regexp variable with no value
expecting success of 1300.51 'get-regexp --bool variable with no value':
git config --bool --get-regexp novalue > output &&
test_cmp expect output
ok 51 - get-regexp --bool variable with no value
expecting success of 1300.52 'get-regexp variable with empty value':
git config --get-regexp emptyvalue > output &&
test_cmp expect output
ok 52 - get-regexp variable with empty value
expecting success of 1300.53 'get bool variable with no value':
git config --bool novalue.variable > output &&
test_cmp expect output
ok 53 - get bool variable with no value
expecting success of 1300.54 'get bool variable with empty value':
git config --bool emptyvalue.variable > output &&
test_cmp expect output
ok 54 - get bool variable with empty value
expecting success of 1300.55 'no arguments, but no crash':
test_must_fail git config >output 2>&1 &&
test_i18ngrep usage output
usage: git config [<options>]
ok 55 - no arguments, but no crash
expecting success of 1300.56 'new section is partial match of another':
git config a.x y &&
test_cmp expect .git/config
ok 56 - new section is partial match of another
expecting success of 1300.57 'new variable inserts into proper section':
git config b.x y &&
git config a.b c &&
test_cmp expect .git/config
ok 57 - new variable inserts into proper section
expecting success of 1300.58 'alternative --file (non-existing file should fail)':
test_must_fail git config --file non-existing-config -l &&
test_must_fail git config --file non-existing-config test.xyzzy
fatal: unable to read config file 'non-existing-config': No such file or directory
ok 58 - alternative --file (non-existing file should fail)
expecting success of 1300.59 'alternative GIT_CONFIG':
GIT_CONFIG=other-config git config --list >output &&
test_cmp expect output
ok 59 - alternative GIT_CONFIG
expecting success of 1300.60 'alternative GIT_CONFIG (--file)':
git config --file other-config --list >output &&
test_cmp expect output
ok 60 - alternative GIT_CONFIG (--file)
expecting success of 1300.61 'alternative GIT_CONFIG (--file=-)':
git config --file - --list <other-config >output &&
test_cmp expect output
ok 61 - alternative GIT_CONFIG (--file=-)
expecting success of 1300.62 'setting a value in stdin is an error':
test_must_fail git config --file - some.value foo
fatal: writing to stdin is not supported
ok 62 - setting a value in stdin is an error
expecting success of 1300.63 'editing stdin is an error':
test_must_fail git config --file - --edit
fatal: editing stdin is not supported
ok 63 - editing stdin is an error
expecting success of 1300.64 'refer config from subdirectory':
mkdir x &&
test_cmp_config -C x strasse --file=../other-config --get ein.bahn
ok 64 - refer config from subdirectory
expecting success of 1300.65 '--set in alternative file':
git config --file=other-config anwohner.park ausweis &&
test_cmp expect other-config
ok 65 - --set in alternative file
expecting success of 1300.66 'rename section':
git config --rename-section branch.eins branch.zwei
ok 66 - rename section
expecting success of 1300.67 'rename succeeded':
test_cmp expect .git/config
ok 67 - rename succeeded
expecting success of 1300.68 'rename non-existing section':
test_must_fail git config --rename-section \
branch."world domination" branch.drei
fatal: no such section: branch.world domination
ok 68 - rename non-existing section
expecting success of 1300.69 'rename succeeded':
test_cmp expect .git/config
ok 69 - rename succeeded
expecting success of 1300.70 'rename another section':
git config --rename-section branch."1 234 blabl/a" branch.drei
ok 70 - rename another section
expecting success of 1300.71 'rename succeeded':
test_cmp expect .git/config
ok 71 - rename succeeded
expecting success of 1300.72 'rename a section with a var on the same line':
git config --rename-section branch.vier branch.zwei
ok 72 - rename a section with a var on the same line
expecting success of 1300.73 'rename succeeded':
test_cmp expect .git/config
ok 73 - rename succeeded
expecting success of 1300.74 'renaming empty section name is rejected':
test_must_fail git config --rename-section branch.zwei ""
error: invalid section name:
ok 74 - renaming empty section name is rejected
expecting success of 1300.75 'renaming to bogus section is rejected':
test_must_fail git config --rename-section branch.zwei "bogus name"
error: invalid section name: bogus name
ok 75 - renaming to bogus section is rejected
expecting success of 1300.76 'renaming a section with a long line':
{
printf "[b]\\n" &&
printf " c = d %1024s [a] e = f\\n" " " &&
printf "[a] g = h\\n"
} >y &&
git config -f y --rename-section a xyz &&
test_must_fail git config -f y b.e
ok 76 - renaming a section with a long line
expecting success of 1300.77 'renaming an embedded section with a long line':
{
printf "[b]\\n" &&
printf " c = d %1024s [a] [foo] e = f\\n" " " &&
printf "[a] g = h\\n"
} >y &&
git config -f y --rename-section a xyz &&
test_must_fail git config -f y foo.e
ok 77 - renaming an embedded section with a long line
expecting success of 1300.78 'renaming a section with an overly-long line':
{
printf "[b]\\n" &&
printf " c = d %525000s e" " " &&
printf "[a] g = h\\n"
} >y &&
test_must_fail git config -f y --rename-section a xyz 2>err &&
grep "refusing to work with overly long line in .y. on line 2" err
error: refusing to work with overly long line in 'y' on line 2
ok 78 - renaming a section with an overly-long line
expecting success of 1300.79 'remove section':
git config --remove-section branch.zwei
ok 79 - remove section
expecting success of 1300.80 'section was removed properly':
test_cmp expect .git/config
ok 80 - section was removed properly
expecting success of 1300.81 'section ending':
rm -f .git/config &&
git config gitcvs.enabled true &&
git config gitcvs.ext.dbname %Ggitcvs1.%a.%m.sqlite &&
git config gitcvs.dbname %Ggitcvs2.%a.%m.sqlite &&
test_cmp expect .git/config
ok 81 - section ending
expecting success of 1300.82 'numbers':
git config kilo.gram 1k &&
git config mega.ton 1m &&
echo 1024 >expect &&
echo 1048576 >>expect &&
git config --int --get kilo.gram >actual &&
git config --int --get mega.ton >>actual &&
test_cmp expect actual
ok 82 - numbers
expecting success of 1300.83 '--int is at least 64 bits':
git config giga.watts 121g &&
echo >expect &&
test_cmp_config 129922760704 --int --get giga.watts
ok 83 - --int is at least 64 bits
expecting success of 1300.84 'invalid unit':
git config aninvalid.unit "1auto" &&
test_cmp_config 1auto aninvalid.unit &&
test_must_fail git config --int --get aninvalid.unit 2>actual &&
test_i18ngrep "bad numeric config value .1auto. for .aninvalid.unit. in file .git/config: invalid unit" actual
fatal: bad numeric config value '1auto' for 'aninvalid.unit' in file .git/config: invalid unit
ok 84 - invalid unit
expecting success of 1300.85 'invalid unit boolean':
git config commit.gpgsign "1true" &&
test_cmp_config 1true commit.gpgsign &&
test_must_fail git config --bool --get commit.gpgsign 2>actual &&
test_i18ngrep "bad boolean config value .1true. for .commit.gpgsign." actual
fatal: bad boolean config value '1true' for 'commit.gpgsign'
ok 85 - invalid unit boolean
expecting success of 1300.86 'line number is reported correctly':
printf "[bool]\n\tvar\n" >invalid &&
test_must_fail git config -f invalid --path bool.var 2>actual &&
test_i18ngrep "line 2" actual
fatal: bad config line 2 in file invalid
ok 86 - line number is reported correctly
expecting success of 1300.87 'invalid stdin config':
echo "[broken" | test_must_fail git config --list --file - >output 2>&1 &&
test_i18ngrep "bad config line 1 in standard input" output
fatal: bad config line 1 in standard input
ok 87 - invalid stdin config
expecting success of 1300.88 'bool':
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 || return 1
done &&
test_cmp expect result
ok 88 - bool
expecting success of 1300.89 'invalid bool (--get)':
git config bool.nobool foobar &&
test_must_fail git config --bool --get bool.nobool
fatal: bad boolean config value 'foobar' for 'bool.nobool'
ok 89 - invalid bool (--get)
expecting success of 1300.90 'invalid bool (set)':
test_must_fail git config --bool bool.nobool foobar
fatal: bad boolean config value 'foobar' for 'bool.nobool'
ok 90 - invalid bool (set)
expecting success of 1300.91 'set --bool':
rm -f .git/config &&
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 &&
test_cmp expect .git/config
ok 91 - set --bool
expecting success of 1300.92 'set --int':
rm -f .git/config &&
git config --int int.val1 01 &&
git config --int int.val2 -1 &&
git config --int int.val3 5m &&
test_cmp expect .git/config
ok 92 - set --int
expecting success of 1300.93 'get --bool-or-int':
cat >.git/config <<-\EOF &&
[bool]
true1
true2 = true
false = false
[int]
int1 = 0
int2 = 1
int3 = -1
EOF
cat >expect <<-\EOF &&
true
true
false
0
1
-1
EOF
{
git config --bool-or-int bool.true1 &&
git config --bool-or-int bool.true2 &&
git config --bool-or-int bool.false &&
git config --bool-or-int int.int1 &&
git config --bool-or-int int.int2 &&
git config --bool-or-int int.int3
} >actual &&
test_cmp expect actual
ok 93 - get --bool-or-int
expecting success of 1300.94 'set --bool-or-int':
rm -f .git/config &&
git config --bool-or-int bool.true1 true &&
git config --bool-or-int bool.false1 false &&
git config --bool-or-int bool.true2 yes &&
git config --bool-or-int bool.false2 no &&
git config --bool-or-int int.int1 0 &&
git config --bool-or-int int.int2 1 &&
git config --bool-or-int int.int3 -1 &&
test_cmp expect .git/config
ok 94 - set --bool-or-int
expecting success of 1300.95 'set --path':
rm -f .git/config &&
git config --path path.home "~/" &&
git config --path path.normal "/dev/null" &&
git config --path path.trailingtilde "foo~" &&
test_cmp expect .git/config
ok 95 - set --path
expecting success of 1300.96 'get --path':
git config --get --path path.home > result &&
git config --get --path path.normal >> result &&
git config --get --path path.trailingtilde >> result &&
test_cmp expect result
ok 96 - get --path
expecting success of 1300.97 'get --path copes with unset $HOME':
(
sane_unset HOME &&
test_must_fail git config --get --path path.home \
>result 2>msg &&
git config --get --path path.normal >>result &&
git config --get --path path.trailingtilde >>result
) &&
test_i18ngrep "[Ff]ailed to expand.*~/" msg &&
test_cmp expect result
fatal: failed to expand user dir in: '~/'
ok 97 - get --path copes with unset $HOME
expecting success of 1300.98 'get --path barfs on boolean variable':
echo "[path]bool" >.git/config &&
test_must_fail git config --get --path path.bool
error: missing value for 'path.bool'
fatal: bad config line 1 in file .git/config
ok 98 - get --path barfs on boolean variable
expecting success of 1300.99 'get --expiry-date':
rel="3.weeks.5.days.00:00" &&
rel_out="$rel ->" &&
cat >.git/config <<-\EOF &&
[date]
valid1 = "3.weeks.5.days 00:00"
valid2 = "Fri Jun 4 15:46:55 2010"
valid3 = "2017/11/11 11:11:11PM"
valid4 = "2017/11/10 09:08:07 PM"
valid5 = "never"
invalid1 = "abc"
EOF
cat >expect <<-EOF &&
$(test-tool date timestamp $rel)
1275666415
1510441871
1510348087
0
EOF
: "work around heredoc parsing bug fixed in dash 0.5.7 (in ec2c84d)" &&
{
echo "$rel_out $(git config --expiry-date date.valid1)" &&
git config --expiry-date date.valid2 &&
git config --expiry-date date.valid3 &&
git config --expiry-date date.valid4 &&
git config --expiry-date date.valid5
} >actual &&
test_cmp expect actual &&
test_must_fail git config --expiry-date date.invalid1
error: 'abc' for 'date.invalid1' is not a valid timestamp
fatal: bad config line 7 in file .git/config
ok 99 - get --expiry-date
expecting success of 1300.100 'get --type=color':
rm .git/config &&
git config foo.color "red" &&
git config --get --type=color foo.color >actual.raw &&
test_decode_color <actual.raw >actual &&
echo "<RED>" >expect &&
test_cmp expect actual
ok 100 - get --type=color
expecting success of 1300.101 'set --type=color':
rm .git/config &&
git config --type=color foo.color "red" &&
test_cmp expect .git/config
ok 101 - set --type=color
expecting success of 1300.102 'get --type=color barfs on non-color':
echo "[foo]bar=not-a-color" >.git/config &&
test_must_fail git config --get --type=color foo.bar
error: invalid color value: not-a-color
fatal: bad config line 1 in file .git/config
ok 102 - get --type=color barfs on non-color
expecting success of 1300.103 'set --type=color barfs on non-color':
test_must_fail git config --type=color foo.color "not-a-color" 2>error &&
test_i18ngrep "cannot parse color" error
fatal: cannot parse color 'not-a-color'
ok 103 - set --type=color barfs on non-color
expecting success of 1300.104 'quoting':
rm -f .git/config &&
git config quote.leading " test" &&
git config quote.ending "test " &&
git config quote.semicolon "test;test" &&
git config quote.hash "test#test" &&
test_cmp expect .git/config
ok 104 - quoting
expecting success of 1300.105 'key with newline':
test_must_fail git config "key.with
newline" 123
error: invalid key: key.with
newline
ok 105 - key with newline
expecting success of 1300.106 'value with newline': git config key.sub value.with\\\
newline
ok 106 - value with newline
expecting success of 1300.107 'value continued on next line':
git config --list > result &&
test_cmp expect result
ok 107 - value continued on next line
expecting success of 1300.108 '--null --list':
git config --null --list >result.raw &&
nul_to_q <result.raw >result &&
echo >>result &&
test_cmp expect result
ok 108 - --null --list
expecting success of 1300.109 '--null --get-regexp':
git config --null --get-regexp "val[0-9]" >result.raw &&
nul_to_q <result.raw >result &&
echo >>result &&
test_cmp expect result
ok 109 - --null --get-regexp
expecting success of 1300.110 'inner whitespace kept verbatim':
git config section.val "foo bar" &&
test_cmp_config "foo bar" section.val
ok 110 - inner whitespace kept verbatim
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
expecting success of 1300.111 'symlinked configuration':
ln -s notyet myconfig &&
git config --file=myconfig test.frotz nitfol &&
test -h myconfig &&
test -f notyet &&
test "z$(git config --file=notyet test.frotz)" = znitfol &&
git config --file=myconfig test.xyzzy rezrov &&
test -h myconfig &&
test -f notyet &&
cat >expect <<-\EOF &&
nitfol
rezrov
EOF
{
git config --file=notyet test.frotz &&
git config --file=notyet test.xyzzy
} >actual &&
test_cmp expect actual
ok 111 - symlinked configuration
expecting success of 1300.112 'symlink to nonexistent configuration':
ln -s doesnotexist linktonada &&
ln -s linktonada linktolinktonada &&
test_must_fail git config --file=linktonada --list &&
test_must_fail git config --file=linktolinktonada --list
fatal: unable to read config file 'linktonada': No such file or directory
fatal: unable to read config file 'linktolinktonada': No such file or directory
ok 112 - symlink to nonexistent configuration
expecting success of 1300.113 'check split_cmdline return':
git config alias.split-cmdline-fix 'echo "' &&
test_must_fail git split-cmdline-fix &&
echo foo > foo &&
git add foo &&
git commit -m 'initial commit' &&
git config branch.main.mergeoptions 'echo "' &&
test_must_fail git merge main
fatal: bad alias.split-cmdline-fix string: unclosed quote
[main (root-commit) fecaf4f] initial commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo
fatal: Bad branch.main.mergeoptions string: unclosed quote
ok 113 - check split_cmdline return
expecting success of 1300.114 'git -c "key=value" support':
cat >expect <<-\EOF &&
value
value
true
EOF
{
git -c section.name=value config section.name &&
git -c foo.CamelCase=value config foo.camelcase &&
git -c foo.flag config --bool foo.flag
} >actual &&
test_cmp expect actual &&
test_must_fail git -c name=value config section.name
error: key does not contain a section: name
fatal: unable to parse command-line config
ok 114 - git -c "key=value" support
expecting success of 1300.115 'git -c can represent empty string':
echo >expect &&
git -c foo.empty= config --path foo.empty >actual &&
test_cmp expect actual
ok 115 - git -c can represent empty string
expecting success of 1300.116 'key sanity-checking':
test_must_fail git config foo=bar &&
test_must_fail git config foo=.bar &&
test_must_fail git config foo.ba=r &&
test_must_fail git config foo.1bar &&
test_must_fail git config foo."ba
z".bar &&
test_must_fail git config . false &&
test_must_fail git config .foo false &&
test_must_fail git config foo. false &&
test_must_fail git config .foo. false &&
git config foo.bar true &&
git config foo."ba =z".bar false
error: key does not contain a section: foo=bar
error: invalid key: foo=.bar
error: invalid key: foo.ba=r
error: invalid key: foo.1bar
error: invalid key (newline): foo.ba
z.bar
error: key does not contain a section: .
error: key does not contain a section: .foo
error: key does not contain variable name: foo.
error: key does not contain variable name: .foo.
ok 116 - key sanity-checking
expecting success of 1300.117 'git -c works with aliases of builtins':
git config alias.checkconfig "-c foo.check=bar config foo.check" &&
echo bar >expect &&
git checkconfig >actual &&
test_cmp expect actual
ok 117 - git -c works with aliases of builtins
expecting success of 1300.118 'aliases can be CamelCased':
test_config alias.CamelCased "rev-parse HEAD" &&
git CamelCased >out &&
git rev-parse HEAD >expect &&
test_cmp expect out
ok 118 - aliases can be CamelCased
expecting success of 1300.119 'git -c does not split values on equals':
echo "value with = in it" >expect &&
git -c section.foo="value with = in it" config section.foo >actual &&
test_cmp expect actual
ok 119 - git -c does not split values on equals
expecting success of 1300.120 'git -c dies on bogus config':
test_must_fail git -c core.bare=foo rev-parse
fatal: bad boolean config value 'foo' for 'core.bare'
ok 120 - git -c dies on bogus config
expecting success of 1300.121 'git -c complains about empty key':
test_must_fail git -c "=foo" rev-parse
error: empty config key
fatal: unable to parse command-line config
ok 121 - git -c complains about empty key
expecting success of 1300.122 'git -c complains about empty key and value':
test_must_fail git -c "" rev-parse
error: empty config key
fatal: unable to parse command-line config
ok 122 - git -c complains about empty key and value
expecting success of 1300.123 'multiple git -c appends config':
test_config alias.x "!git -c x.two=2 config --get-regexp ^x\.*" &&
cat >expect <<-\EOF &&
x.one 1
x.two 2
EOF
git -c x.one=1 x >actual &&
test_cmp expect actual
ok 123 - multiple git -c appends config
expecting success of 1300.124 'last one wins: two level vars':
# sec.var and sec.VAR are the same variable, as the first
# and the last level of a configuration variable name is
# case insensitive.
echo VAL >expect &&
git -c sec.var=val -c sec.VAR=VAL config --get sec.var >actual &&
test_cmp expect actual &&
git -c SEC.var=val -c sec.var=VAL config --get sec.var >actual &&
test_cmp expect actual &&
git -c sec.var=val -c sec.VAR=VAL config --get SEC.var >actual &&
test_cmp expect actual &&
git -c SEC.var=val -c sec.var=VAL config --get sec.VAR >actual &&
test_cmp expect actual
ok 124 - last one wins: two level vars
expecting success of 1300.125 'last one wins: three level vars':
# v.a.r and v.A.r are not the same variable, as the middle
# level of a three-level configuration variable name is
# case sensitive.
echo val >expect &&
git -c v.a.r=val -c v.A.r=VAL config --get v.a.r >actual &&
test_cmp expect actual &&
git -c v.a.r=val -c v.A.r=VAL config --get V.a.R >actual &&
test_cmp expect actual &&
# v.a.r and V.a.R are the same variable, as the first
# and the last level of a configuration variable name is
# case insensitive.
echo VAL >expect &&
git -c v.a.r=val -c v.a.R=VAL config --get v.a.r >actual &&
test_cmp expect actual &&
git -c v.a.r=val -c V.a.r=VAL config --get v.a.r >actual &&
test_cmp expect actual &&
git -c v.a.r=val -c v.a.R=VAL config --get V.a.R >actual &&
test_cmp expect actual &&
git -c v.a.r=val -c V.a.r=VAL config --get V.a.R >actual &&
test_cmp expect actual
ok 125 - last one wins: three level vars
expecting success of 1300.126 'old-fashioned settings are case insensitive':
test_when_finished "rm -f testConfig testConfig_expect testConfig_actual" &&
cat >testConfig_actual <<-EOF &&
[V.A]
r = value1
EOF
q_to_tab >testConfig_expect <<-EOF &&
[V.A]
Qr = value2
EOF
git config -f testConfig_actual "v.a.r" value2 &&
test_cmp testConfig_expect testConfig_actual &&
cat >testConfig_actual <<-EOF &&
[V.A]
r = value1
EOF
q_to_tab >testConfig_expect <<-EOF &&
[V.A]
QR = value2
EOF
git config -f testConfig_actual "V.a.R" value2 &&
test_cmp testConfig_expect testConfig_actual &&
cat >testConfig_actual <<-EOF &&
[V.A]
r = value1
EOF
q_to_tab >testConfig_expect <<-EOF &&
[V.A]
r = value1
Qr = value2
EOF
git config -f testConfig_actual "V.A.r" value2 &&
test_cmp testConfig_expect testConfig_actual &&
cat >testConfig_actual <<-EOF &&
[V.A]
r = value1
EOF
q_to_tab >testConfig_expect <<-EOF &&
[V.A]
r = value1
Qr = value2
EOF
git config -f testConfig_actual "v.A.r" value2 &&
test_cmp testConfig_expect testConfig_actual
ok 126 - old-fashioned settings are case insensitive
expecting success of 1300.127 'setting different case sensitive subsections ':
test_when_finished "rm -f testConfig testConfig_expect testConfig_actual" &&
cat >testConfig_actual <<-EOF &&
[V "A"]
R = v1
[K "E"]
Y = v1
[a "b"]
c = v1
[d "e"]
f = v1
EOF
q_to_tab >testConfig_expect <<-EOF &&
[V "A"]
Qr = v2
[K "E"]
Qy = v2
[a "b"]
Qc = v2
[d "e"]
f = v1
[d "E"]
Qf = v2
EOF
# exact match
git config -f testConfig_actual a.b.c v2 &&
# match section and subsection, key is cased differently.
git config -f testConfig_actual K.E.y v2 &&
# section and key are matched case insensitive, but subsection needs
# to match; When writing out new values only the key is adjusted
git config -f testConfig_actual v.A.r v2 &&
# subsection is not matched:
git config -f testConfig_actual d.E.f v2 &&
test_cmp testConfig_expect testConfig_actual
ok 127 - setting different case sensitive subsections
expecting success of 1300.128 'git -c a=VAL rejects invalid 'a'':
test_must_fail git -c "$VAR=VAL" config -l
error: key does not contain a section: a
fatal: unable to parse command-line config
ok 128 - git -c a=VAL rejects invalid 'a'
expecting success of 1300.129 'git -c .a=VAL rejects invalid '.a'':
test_must_fail git -c "$VAR=VAL" config -l
error: key does not contain a section: .a
fatal: unable to parse command-line config
ok 129 - git -c .a=VAL rejects invalid '.a'
expecting success of 1300.130 'git -c a.=VAL rejects invalid 'a.'':
test_must_fail git -c "$VAR=VAL" config -l
error: key does not contain variable name: a.
fatal: unable to parse command-line config
ok 130 - git -c a.=VAL rejects invalid 'a.'
expecting success of 1300.131 'git -c a.0b=VAL rejects invalid 'a.0b'':
test_must_fail git -c "$VAR=VAL" config -l
error: invalid key: a.0b
fatal: unable to parse command-line config
ok 131 - git -c a.0b=VAL rejects invalid 'a.0b'
expecting success of 1300.132 'git -c a.b c.=VAL rejects invalid 'a.b c.'':
test_must_fail git -c "$VAR=VAL" config -l
error: key does not contain variable name: a.b c.
fatal: unable to parse command-line config
ok 132 - git -c a.b c.=VAL rejects invalid 'a.b c.'
expecting success of 1300.133 'git -c a.b c.0d=VAL rejects invalid 'a.b c.0d'':
test_must_fail git -c "$VAR=VAL" config -l
error: invalid key: a.b c.0d
fatal: unable to parse command-line config
ok 133 - git -c a.b c.0d=VAL rejects invalid 'a.b c.0d'
expecting success of 1300.134 'git -c a.b=VAL works with valid 'a.b'':
echo VAL >expect &&
git -c "$VAR=VAL" config --get "$VAR" >actual &&
test_cmp expect actual
ok 134 - git -c a.b=VAL works with valid 'a.b'
expecting success of 1300.135 'git -c a.b c.d=VAL works with valid 'a.b c.d'':
echo VAL >expect &&
git -c "$VAR=VAL" config --get "$VAR" >actual &&
test_cmp expect actual
ok 135 - git -c a.b c.d=VAL works with valid 'a.b c.d'
expecting success of 1300.136 'git -c is not confused by empty environment':
GIT_CONFIG_PARAMETERS="" git -c x.one=1 config --list
section.sub=section.val1=foo=bar
section.sub=section.val2=foo
bar
section.sub=section.val3=
section.sub=section.val4=
section.sub=section.val5
section.val=foo bar
alias.split-cmdline-fix=echo "
alias.checkconfig=-c foo.check=bar config foo.check
branch.main.mergeoptions=echo "
foo.bar=true
foo.ba =z.bar=false
x.one=1
ok 136 - git -c is not confused by empty environment
expecting success of 1300.137 'GIT_CONFIG_PARAMETERS handles old-style entries':
v="${SQ}key.one=foo${SQ}" &&
v="$v ${SQ}key.two=bar${SQ}" &&
v="$v ${SQ}key.ambiguous=section.whatever=value${SQ}" &&
GIT_CONFIG_PARAMETERS=$v git config --get-regexp "key.*" >actual &&
cat >expect <<-EOF &&
key.one foo
key.two bar
key.ambiguous section.whatever=value
EOF
test_cmp expect actual
ok 137 - GIT_CONFIG_PARAMETERS handles old-style entries
expecting success of 1300.138 'GIT_CONFIG_PARAMETERS handles new-style entries':
v="${SQ}key.one${SQ}=${SQ}foo${SQ}" &&
v="$v ${SQ}key.two${SQ}=${SQ}bar${SQ}" &&
v="$v ${SQ}key.ambiguous=section.whatever${SQ}=${SQ}value${SQ}" &&
GIT_CONFIG_PARAMETERS=$v git config --get-regexp "key.*" >actual &&
cat >expect <<-EOF &&
key.one foo
key.two bar
key.ambiguous=section.whatever value
EOF
test_cmp expect actual
ok 138 - GIT_CONFIG_PARAMETERS handles new-style entries
expecting success of 1300.139 'old and new-style entries can mix':
v="${SQ}key.oldone=oldfoo${SQ}" &&
v="$v ${SQ}key.newone${SQ}=${SQ}newfoo${SQ}" &&
v="$v ${SQ}key.oldtwo=oldbar${SQ}" &&
v="$v ${SQ}key.newtwo${SQ}=${SQ}newbar${SQ}" &&
GIT_CONFIG_PARAMETERS=$v git config --get-regexp "key.*" >actual &&
cat >expect <<-EOF &&
key.oldone oldfoo
key.newone newfoo
key.oldtwo oldbar
key.newtwo newbar
EOF
test_cmp expect actual
ok 139 - old and new-style entries can mix
expecting success of 1300.140 'old and new bools with ambiguous subsection':
v="${SQ}key.with=equals.oldbool${SQ}" &&
v="$v ${SQ}key.with=equals.newbool${SQ}=" &&
GIT_CONFIG_PARAMETERS=$v git config --get-regexp "key.*" >actual &&
cat >expect <<-EOF &&
key.with equals.oldbool
key.with=equals.newbool
EOF
test_cmp expect actual
ok 140 - old and new bools with ambiguous subsection
expecting success of 1300.141 'detect bogus GIT_CONFIG_PARAMETERS':
cat >expect <<-\EOF &&
env.one one
env.two two
EOF
GIT_CONFIG_PARAMETERS="${SQ}env.one=one${SQ} ${SQ}env.two=two${SQ}" \
git config --get-regexp "env.*" >actual &&
test_cmp expect actual &&
cat >expect <<-EOF &&
env.one one${SQ}
env.two two
EOF
GIT_CONFIG_PARAMETERS="${SQ}env.one=one${SQ}\\$SQ$SQ$SQ ${SQ}env.two=two${SQ}" \
git config --get-regexp "env.*" >actual &&
test_cmp expect actual &&
test_must_fail env \
GIT_CONFIG_PARAMETERS="${SQ}env.one=one${SQ}\\$SQ ${SQ}env.two=two${SQ}" \
git config --get-regexp "env.*"
error: bogus format in GIT_CONFIG_PARAMETERS
fatal: unable to parse command-line config
ok 141 - detect bogus GIT_CONFIG_PARAMETERS
expecting success of 1300.142 'git --config-env=key=envvar support':
cat >expect <<-\EOF &&
value
value
value
value
false
false
EOF
{
ENVVAR=value git --config-env=core.name=ENVVAR config core.name &&
ENVVAR=value git --config-env core.name=ENVVAR config core.name &&
ENVVAR=value git --config-env=foo.CamelCase=ENVVAR config foo.camelcase &&
ENVVAR=value git --config-env foo.CamelCase=ENVVAR config foo.camelcase &&
ENVVAR= git --config-env=foo.flag=ENVVAR config --bool foo.flag &&
ENVVAR= git --config-env foo.flag=ENVVAR config --bool foo.flag
} >actual &&
test_cmp expect actual
ok 142 - git --config-env=key=envvar support
expecting success of 1300.143 'git --config-env with missing value':
test_must_fail env ENVVAR=value git --config-env 2>error &&
grep "no config key given for --config-env" error &&
test_must_fail env ENVVAR=value git --config-env config core.name 2>error &&
grep "invalid config format: config" error
no config key given for --config-env
fatal: invalid config format: config
ok 143 - git --config-env with missing value
expecting success of 1300.144 'git --config-env fails with invalid parameters':
test_must_fail git --config-env=foo.flag config --bool foo.flag 2>error &&
test_i18ngrep "invalid config format: foo.flag" error &&
test_must_fail git --config-env=foo.flag= config --bool foo.flag 2>error &&
test_i18ngrep "missing environment variable name for configuration ${SQ}foo.flag${SQ}" error &&
sane_unset NONEXISTENT &&
test_must_fail git --config-env=foo.flag=NONEXISTENT config --bool foo.flag 2>error &&
test_i18ngrep "missing environment variable ${SQ}NONEXISTENT${SQ} for configuration ${SQ}foo.flag${SQ}" error
fatal: invalid config format: foo.flag
fatal: missing environment variable name for configuration 'foo.flag'
fatal: missing environment variable 'NONEXISTENT' for configuration 'foo.flag'
ok 144 - git --config-env fails with invalid parameters
expecting success of 1300.145 'git -c and --config-env work together':
cat >expect <<-\EOF &&
bar.cmd cmd-value
bar.env env-value
EOF
ENVVAR=env-value git \
-c bar.cmd=cmd-value \
--config-env=bar.env=ENVVAR \
config --get-regexp "^bar.*" >actual &&
test_cmp expect actual
ok 145 - git -c and --config-env work together
expecting success of 1300.146 'git -c and --config-env override each other':
cat >expect <<-\EOF &&
env
cmd
EOF
{
ENVVAR=env git -c bar.bar=cmd --config-env=bar.bar=ENVVAR config bar.bar &&
ENVVAR=env git --config-env=bar.bar=ENVVAR -c bar.bar=cmd config bar.bar
} >actual &&
test_cmp expect actual
ok 146 - git -c and --config-env override each other
expecting success of 1300.147 '--config-env handles keys with equals':
echo value=with=equals >expect &&
ENVVAR=value=with=equals git \
--config-env=section.subsection=with=equals.key=ENVVAR \
config section.subsection=with=equals.key >actual &&
test_cmp expect actual
ok 147 - --config-env handles keys with equals
expecting success of 1300.148 'git config handles environment config pairs':
GIT_CONFIG_COUNT=2 \
GIT_CONFIG_KEY_0="pair.one" GIT_CONFIG_VALUE_0="foo" \
GIT_CONFIG_KEY_1="pair.two" GIT_CONFIG_VALUE_1="bar" \
git config --get-regexp "pair.*" >actual &&
cat >expect <<-EOF &&
pair.one foo
pair.two bar
EOF
test_cmp expect actual
ok 148 - git config handles environment config pairs
expecting success of 1300.149 'git config ignores pairs without count':
test_must_fail env GIT_CONFIG_KEY_0="pair.one" GIT_CONFIG_VALUE_0="value" \
git config pair.one 2>error &&
test_must_be_empty error
ok 149 - git config ignores pairs without count
expecting success of 1300.150 'git config ignores pairs exceeding count':
GIT_CONFIG_COUNT=1 \
GIT_CONFIG_KEY_0="pair.one" GIT_CONFIG_VALUE_0="value" \
GIT_CONFIG_KEY_1="pair.two" GIT_CONFIG_VALUE_1="value" \
git config --get-regexp "pair.*" >actual 2>error &&
cat >expect <<-EOF &&
pair.one value
EOF
test_cmp expect actual &&
test_must_be_empty error
ok 150 - git config ignores pairs exceeding count
expecting success of 1300.151 'git config ignores pairs with zero count':
test_must_fail env \
GIT_CONFIG_COUNT=0 GIT_CONFIG_KEY_0="pair.one" GIT_CONFIG_VALUE_0="value" \
git config pair.one 2>error &&
test_must_be_empty error
ok 151 - git config ignores pairs with zero count
expecting success of 1300.152 'git config ignores pairs with empty count':
test_must_fail env \
GIT_CONFIG_COUNT= GIT_CONFIG_KEY_0="pair.one" GIT_CONFIG_VALUE_0="value" \
git config pair.one 2>error &&
test_must_be_empty error
ok 152 - git config ignores pairs with empty count
expecting success of 1300.153 'git config fails with invalid count':
test_must_fail env GIT_CONFIG_COUNT=10a git config --list 2>error &&
test_i18ngrep "bogus count" error &&
test_must_fail env GIT_CONFIG_COUNT=9999999999999999 git config --list 2>error &&
test_i18ngrep "too many entries" error
error: bogus count in GIT_CONFIG_COUNT
error: too many entries in GIT_CONFIG_COUNT
ok 153 - git config fails with invalid count
expecting success of 1300.154 'git config fails with missing config key':
test_must_fail env GIT_CONFIG_COUNT=1 GIT_CONFIG_VALUE_0="value" \
git config --list 2>error &&
test_i18ngrep "missing config key" error
error: missing config key GIT_CONFIG_KEY_0
ok 154 - git config fails with missing config key
expecting success of 1300.155 'git config fails with missing config value':
test_must_fail env GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0="pair.one" \
git config --list 2>error &&
test_i18ngrep "missing config value" error
error: missing config value GIT_CONFIG_VALUE_0
ok 155 - git config fails with missing config value
expecting success of 1300.156 'git config fails with invalid config pair key':
test_must_fail env GIT_CONFIG_COUNT=1 \
GIT_CONFIG_KEY_0= GIT_CONFIG_VALUE_0=value \
git config --list &&
test_must_fail env GIT_CONFIG_COUNT=1 \
GIT_CONFIG_KEY_0=missing-section GIT_CONFIG_VALUE_0=value \
git config --list
error: empty config key
fatal: unable to parse command-line config
error: key does not contain a section: missing-section
fatal: unable to parse command-line config
ok 156 - git config fails with invalid config pair key
expecting success of 1300.157 'environment overrides config file':
test_when_finished "rm -f .git/config" &&
cat >.git/config <<-EOF &&
[pair]
one = value
EOF
GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=pair.one GIT_CONFIG_VALUE_0=override \
git config pair.one >actual &&
cat >expect <<-EOF &&
override
EOF
test_cmp expect actual
ok 157 - environment overrides config file
expecting success of 1300.158 'GIT_CONFIG_PARAMETERS overrides environment config':
GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=pair.one GIT_CONFIG_VALUE_0=value \
GIT_CONFIG_PARAMETERS="${SQ}pair.one=override${SQ}" \
git config pair.one >actual &&
cat >expect <<-EOF &&
override
EOF
test_cmp expect actual
ok 158 - GIT_CONFIG_PARAMETERS overrides environment config
expecting success of 1300.159 'command line overrides environment config':
GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=pair.one GIT_CONFIG_VALUE_0=value \
git -c pair.one=override config pair.one >actual &&
cat >expect <<-EOF &&
override
EOF
test_cmp expect actual
ok 159 - command line overrides environment config
expecting success of 1300.160 'git config --edit works':
git config -f tmp test.value no &&
echo test.value=yes >expect &&
GIT_EDITOR="echo [test]value=yes >" git config -f tmp --edit &&
git config -f tmp --list >actual &&
test_cmp expect actual
ok 160 - git config --edit works
expecting success of 1300.161 'git config --edit respects core.editor':
git config -f tmp test.value no &&
echo test.value=yes >expect &&
test_config core.editor "echo [test]value=yes >" &&
git config -f tmp --edit &&
git config -f tmp --list >actual &&
test_cmp expect actual
ok 161 - git config --edit respects core.editor
expecting success of 1300.162 'barf on syntax error':
cat >.git/config <<-\EOF &&
# broken key=value
[section]
key garbage
EOF
test_must_fail git config --get section.key 2>error &&
test_i18ngrep " line 3 " error
fatal: bad config line 3 in file .git/config
ok 162 - barf on syntax error
expecting success of 1300.163 'barf on incomplete section header':
cat >.git/config <<-\EOF &&
# broken section line
[section
key = value
EOF
test_must_fail git config --get section.key 2>error &&
test_i18ngrep " line 2 " error
fatal: bad config line 2 in file .git/config
ok 163 - barf on incomplete section header
expecting success of 1300.164 'barf on incomplete string':
cat >.git/config <<-\EOF &&
# broken value string
[section]
key = "value string
EOF
test_must_fail git config --get section.key 2>error &&
test_i18ngrep " line 3 " error
fatal: bad config line 3 in file .git/config
ok 164 - barf on incomplete string
expecting success of 1300.165 'urlmatch':
cat >.git/config <<-\EOF &&
[http]
sslVerify
[http "https://weak.example.com"]
sslVerify = false
cookieFile = /tmp/cookie.txt
EOF
test_expect_code 1 git config --bool --get-urlmatch doesnt.exist https://good.example.com >actual &&
test_must_be_empty actual &&
echo true >expect &&
git config --bool --get-urlmatch http.SSLverify https://good.example.com >actual &&
test_cmp expect actual &&
echo false >expect &&
git config --bool --get-urlmatch http.sslverify https://weak.example.com >actual &&
test_cmp expect actual &&
{
echo http.cookiefile /tmp/cookie.txt &&
echo http.sslverify false
} >expect &&
git config --get-urlmatch HTTP https://weak.example.com >actual &&
test_cmp expect actual
ok 165 - urlmatch
expecting success of 1300.166 'urlmatch with --show-scope':
cat >.git/config <<-\EOF &&
[http "https://weak.example.com"]
sslVerify = false
cookieFile = /tmp/cookie.txt
EOF
cat >expect <<-EOF &&
local http.cookiefile /tmp/cookie.txt
local http.sslverify false
EOF
git config --get-urlmatch --show-scope HTTP https://weak.example.com >actual &&
test_cmp expect actual
ok 166 - urlmatch with --show-scope
expecting success of 1300.167 'urlmatch favors more specific URLs':
cat >.git/config <<-\EOF &&
[http "https://example.com/"]
cookieFile = /tmp/root.txt
[http "https://example.com/subdirectory"]
cookieFile = /tmp/subdirectory.txt
[http "https://user@example.com/"]
cookieFile = /tmp/user.txt
[http "https://averylonguser@example.com/"]
cookieFile = /tmp/averylonguser.txt
[http "https://preceding.example.com"]
cookieFile = /tmp/preceding.txt
[http "https://*.example.com"]
cookieFile = /tmp/wildcard.txt
[http "https://*.example.com/wildcardwithsubdomain"]
cookieFile = /tmp/wildcardwithsubdomain.txt
[http "https://*.example.*"]
cookieFile = /tmp/multiwildcard.txt
[http "https://trailing.example.com"]
cookieFile = /tmp/trailing.txt
[http "https://user@*.example.com/"]
cookieFile = /tmp/wildcardwithuser.txt
[http "https://sub.example.com/"]
cookieFile = /tmp/sub.txt
EOF
echo http.cookiefile /tmp/root.txt >expect &&
git config --get-urlmatch HTTP https://example.com >actual &&
test_cmp expect actual &&
echo http.cookiefile /tmp/subdirectory.txt >expect &&
git config --get-urlmatch HTTP https://example.com/subdirectory >actual &&
test_cmp expect actual &&
echo http.cookiefile /tmp/subdirectory.txt >expect &&
git config --get-urlmatch HTTP https://example.com/subdirectory/nested >actual &&
test_cmp expect actual &&
echo http.cookiefile /tmp/user.txt >expect &&
git config --get-urlmatch HTTP https://user@example.com/ >actual &&
test_cmp expect actual &&
echo http.cookiefile /tmp/subdirectory.txt >expect &&
git config --get-urlmatch HTTP https://averylonguser@example.com/subdirectory >actual &&
test_cmp expect actual &&
echo http.cookiefile /tmp/preceding.txt >expect &&
git config --get-urlmatch HTTP https://preceding.example.com >actual &&
test_cmp expect actual &&
echo http.cookiefile /tmp/wildcard.txt >expect &&
git config --get-urlmatch HTTP https://wildcard.example.com >actual &&
test_cmp expect actual &&
echo http.cookiefile /tmp/sub.txt >expect &&
git config --get-urlmatch HTTP https://sub.example.com/wildcardwithsubdomain >actual &&
test_cmp expect actual &&
echo http.cookiefile /tmp/trailing.txt >expect &&
git config --get-urlmatch HTTP https://trailing.example.com >actual &&
test_cmp expect actual &&
echo http.cookiefile /tmp/sub.txt >expect &&
git config --get-urlmatch HTTP https://user@sub.example.com >actual &&
test_cmp expect actual &&
echo http.cookiefile /tmp/multiwildcard.txt >expect &&
git config --get-urlmatch HTTP https://wildcard.example.org >actual &&
test_cmp expect actual
ok 167 - urlmatch favors more specific URLs
expecting success of 1300.168 'urlmatch with wildcard':
cat >.git/config <<-\EOF &&
[http]
sslVerify
[http "https://*.example.com"]
sslVerify = false
cookieFile = /tmp/cookie.txt
EOF
test_expect_code 1 git config --bool --get-urlmatch doesnt.exist https://good.example.com >actual &&
test_must_be_empty actual &&
echo true >expect &&
git config --bool --get-urlmatch http.SSLverify https://example.com >actual &&
test_cmp expect actual &&
echo true >expect &&
git config --bool --get-urlmatch http.SSLverify https://good-example.com >actual &&
test_cmp expect actual &&
echo true >expect &&
git config --bool --get-urlmatch http.sslverify https://deep.nested.example.com >actual &&
test_cmp expect actual &&
echo false >expect &&
git config --bool --get-urlmatch http.sslverify https://good.example.com >actual &&
test_cmp expect actual &&
{
echo http.cookiefile /tmp/cookie.txt &&
echo http.sslverify false
} >expect &&
git config --get-urlmatch HTTP https://good.example.com >actual &&
test_cmp expect actual &&
echo http.sslverify >expect &&
git config --get-urlmatch HTTP https://more.example.com.au >actual &&
test_cmp expect actual
ok 168 - urlmatch with wildcard
expecting success of 1300.169 '--unset last key removes section (except if commented)':
cat >.git/config <<-\EOF &&
# some generic comment on the configuration file itself
# a comment specific to this "section" section.
[section]
# some intervening lines
# that should also be dropped
key = value
# please be careful when you update the above variable
EOF
cat >expect <<-\EOF &&
# some generic comment on the configuration file itself
# a comment specific to this "section" section.
[section]
# some intervening lines
# that should also be dropped
# please be careful when you update the above variable
EOF
git config --unset section.key &&
test_cmp expect .git/config &&
cat >.git/config <<-\EOF &&
[section]
key = value
[next-section]
EOF
cat >expect <<-\EOF &&
[next-section]
EOF
git config --unset section.key &&
test_cmp expect .git/config &&
q_to_tab >.git/config <<-\EOF &&
[one]
Qkey = "multiline \
QQ# with comment"
[two]
key = true
EOF
git config --unset two.key &&
! grep two .git/config &&
q_to_tab >.git/config <<-\EOF &&
[one]
Qkey = "multiline \
QQ# with comment"
[one]
key = true
EOF
git config --unset-all one.key &&
test_line_count = 0 .git/config &&
q_to_tab >.git/config <<-\EOF &&
[one]
Qkey = true
Q# a comment not at the start
[two]
Qkey = true
EOF
git config --unset two.key &&
grep two .git/config &&
q_to_tab >.git/config <<-\EOF &&
[one]
Qkey = not [two "subsection"]
[two "subsection"]
[two "subsection"]
Qkey = true
[TWO "subsection"]
[one]
EOF
git config --unset two.subsection.key &&
test "not [two subsection]" = "$(git config one.key)" &&
test_line_count = 3 .git/config
[two]
ok 169 - --unset last key removes section (except if commented)
expecting success of 1300.170 '--unset-all removes section if empty & uncommented':
cat >.git/config <<-\EOF &&
[section]
key = value1
key = value2
EOF
git config --unset-all section.key &&
test_line_count = 0 .git/config
ok 170 - --unset-all removes section if empty & uncommented
expecting success of 1300.171 'adding a key into an empty section reuses header':
cat >.git/config <<-\EOF &&
[section]
EOF
q_to_tab >expect <<-\EOF &&
[section]
Qkey = value
EOF
git config section.key value &&
test_cmp expect .git/config
ok 171 - adding a key into an empty section reuses header
expecting success of 1300.172 'preserves existing permissions':
chmod 0600 .git/config &&
git config imap.pass Hunter2 &&
perl -e \
"die q(badset) if ((stat(q(.git/config)))[2] & 07777) != 0600" &&
git config --rename-section imap pop &&
perl -e \
"die q(badrename) if ((stat(q(.git/config)))[2] & 07777) != 0600"
ok 172 - preserves existing permissions
expecting success of 1300.173 'set up --show-origin tests':
INCLUDE_DIR="$HOME/include" &&
mkdir -p "$INCLUDE_DIR" &&
cat >"$INCLUDE_DIR"/absolute.include <<-\EOF &&
[user]
absolute = include
EOF
cat >"$INCLUDE_DIR"/relative.include <<-\EOF &&
[user]
relative = include
EOF
cat >"$HOME"/.gitconfig <<-EOF &&
[user]
global = true
override = global
[include]
path = "$INCLUDE_DIR/absolute.include"
EOF
cat >.git/config <<-\EOF
[user]
local = true
override = local
[include]
path = ../include/relative.include
EOF
ok 173 - set up --show-origin tests
expecting success of 1300.174 '--show-origin with --list':
cat >expect <<-EOF &&
file:$HOME/.gitconfig user.global=true
file:$HOME/.gitconfig user.override=global
file:$HOME/.gitconfig include.path=$INCLUDE_DIR/absolute.include
file:$INCLUDE_DIR/absolute.include user.absolute=include
file:.git/config user.local=true
file:.git/config user.override=local
file:.git/config include.path=../include/relative.include
file:.git/../include/relative.include user.relative=include
command line: user.environ=true
command line: user.cmdline=true
EOF
GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=user.environ GIT_CONFIG_VALUE_0=true\
git -c user.cmdline=true config --list --show-origin >output &&
test_cmp expect output
ok 174 - --show-origin with --list
expecting success of 1300.175 '--show-origin with --list --null':
cat >expect <<-EOF &&
file:$HOME/.gitconfigQuser.global
trueQfile:$HOME/.gitconfigQuser.override
globalQfile:$HOME/.gitconfigQinclude.path
$INCLUDE_DIR/absolute.includeQfile:$INCLUDE_DIR/absolute.includeQuser.absolute
includeQfile:.git/configQuser.local
trueQfile:.git/configQuser.override
localQfile:.git/configQinclude.path
../include/relative.includeQfile:.git/../include/relative.includeQuser.relative
includeQcommand line:Quser.cmdline
trueQ
EOF
git -c user.cmdline=true config --null --list --show-origin >output.raw &&
nul_to_q <output.raw >output &&
# The here-doc above adds a newline that the --null output would not
# include. Add it here to make the two comparable.
echo >>output &&
test_cmp expect output
ok 175 - --show-origin with --list --null
expecting success of 1300.176 '--show-origin with single file':
cat >expect <<-\EOF &&
file:.git/config user.local=true
file:.git/config user.override=local
file:.git/config include.path=../include/relative.include
EOF
git config --local --list --show-origin >output &&
test_cmp expect output
ok 176 - --show-origin with single file
expecting success of 1300.177 '--show-origin with --get-regexp':
cat >expect <<-EOF &&
file:$HOME/.gitconfig user.global true
file:.git/config user.local true
EOF
git config --show-origin --get-regexp "user\.[g|l].*" >output &&
test_cmp expect output
ok 177 - --show-origin with --get-regexp
expecting success of 1300.178 '--show-origin getting a single key':
cat >expect <<-\EOF &&
file:.git/config local
EOF
git config --show-origin user.override >output &&
test_cmp expect output
ok 178 - --show-origin getting a single key
expecting success of 1300.179 'set up custom config file':
CUSTOM_CONFIG_FILE="custom.conf" &&
cat >"$CUSTOM_CONFIG_FILE" <<-\EOF
[user]
custom = true
EOF
ok 179 - set up custom config file
expecting success of 1300.180 'set up custom config file with special name characters':
WEIRDLY_NAMED_FILE="file\" (dq) and spaces.conf" &&
cp "$CUSTOM_CONFIG_FILE" "$WEIRDLY_NAMED_FILE"
ok 180 - set up custom config file with special name characters
expecting success of 1300.181 '--show-origin escape special file name characters':
cat >expect <<-\EOF &&
file:"file\" (dq) and spaces.conf" user.custom=true
EOF
git config --file "$WEIRDLY_NAMED_FILE" --show-origin --list >output &&
test_cmp expect output
ok 181 - --show-origin escape special file name characters
expecting success of 1300.182 '--show-origin stdin':
cat >expect <<-\EOF &&
standard input: user.custom=true
EOF
git config --file - --show-origin --list <"$CUSTOM_CONFIG_FILE" >output &&
test_cmp expect output
ok 182 - --show-origin stdin
expecting success of 1300.183 '--show-origin stdin with file include':
cat >"$INCLUDE_DIR"/stdin.include <<-EOF &&
[user]
stdin = include
EOF
cat >expect <<-EOF &&
file:$INCLUDE_DIR/stdin.include include
EOF
echo "[include]path=\"$INCLUDE_DIR\"/stdin.include" |
git config --show-origin --includes --file - user.stdin >output &&
test_cmp expect output
ok 183 - --show-origin stdin with file include
expecting success of 1300.184 '--show-origin blob':
blob=$(git hash-object -w "$CUSTOM_CONFIG_FILE") &&
cat >expect <<-EOF &&
blob:$blob user.custom=true
EOF
git config --blob=$blob --show-origin --list >output &&
test_cmp expect output
ok 184 - --show-origin blob
expecting success of 1300.185 '--show-origin blob ref':
cat >expect <<-\EOF &&
blob:main:custom.conf user.custom=true
EOF
git add "$CUSTOM_CONFIG_FILE" &&
git commit -m "new config file" &&
git config --blob=main:"$CUSTOM_CONFIG_FILE" --show-origin --list >output &&
test_cmp expect output
[main 21f66f7] new config file
Author: A U Thor <author@example.com>
1 file changed, 2 insertions(+)
create mode 100644 custom.conf
ok 185 - --show-origin blob ref
expecting success of 1300.186 '--show-origin with --default':
git config --show-origin --default foo some.key >actual &&
echo "command line: foo" >expect &&
test_cmp expect actual
ok 186 - --show-origin with --default
expecting success of 1300.187 '--show-scope with --list':
cat >expect <<-EOF &&
global user.global=true
global user.override=global
global include.path=$INCLUDE_DIR/absolute.include
global user.absolute=include
local user.local=true
local user.override=local
local include.path=../include/relative.include
local user.relative=include
local core.repositoryformatversion=1
local extensions.worktreeconfig=true
worktree user.worktree=true
command user.cmdline=true
EOF
git worktree add wt1 &&
# We need these to test for worktree scope, but outside of this
# test, this is just noise
test_config core.repositoryformatversion 1 &&
test_config extensions.worktreeConfig true &&
git config --worktree user.worktree true &&
git -c user.cmdline=true config --list --show-scope >output &&
test_cmp expect output
Preparing worktree (new branch 'wt1')
HEAD is now at 21f66f7 new config file
ok 187 - --show-scope with --list
expecting success of 1300.188 '--show-scope with --blob':
blob=$(git hash-object -w "$CUSTOM_CONFIG_FILE") &&
cat >expect <<-EOF &&
command user.custom=true
EOF
git config --blob=$blob --show-scope --list >output &&
test_cmp expect output
ok 188 - --show-scope with --blob
expecting success of 1300.189 '--show-scope with --local':
cat >expect <<-\EOF &&
local user.local=true
local user.override=local
local include.path=../include/relative.include
EOF
git config --local --list --show-scope >output &&
test_cmp expect output
ok 189 - --show-scope with --local
expecting success of 1300.190 '--show-scope getting a single value':
cat >expect <<-\EOF &&
local true
EOF
git config --show-scope --get user.local >output &&
test_cmp expect output
ok 190 - --show-scope getting a single value
expecting success of 1300.191 '--show-scope with --show-origin':
cat >expect <<-EOF &&
global file:$HOME/.gitconfig user.global=true
global file:$HOME/.gitconfig user.override=global
global file:$HOME/.gitconfig include.path=$INCLUDE_DIR/absolute.include
global file:$INCLUDE_DIR/absolute.include user.absolute=include
local file:.git/config user.local=true
local file:.git/config user.override=local
local file:.git/config include.path=../include/relative.include
local file:.git/../include/relative.include user.relative=include
command command line: user.cmdline=true
EOF
git -c user.cmdline=true config --list --show-origin --show-scope >output &&
test_cmp expect output
ok 191 - --show-scope with --show-origin
expecting success of 1300.192 '--show-scope with --default':
git config --show-scope --default foo some.key >actual &&
echo "command foo" >expect &&
test_cmp expect actual
ok 192 - --show-scope with --default
expecting success of 1300.193 'override global and system config':
test_when_finished rm -f \"\$HOME\"/.gitconfig &&
cat >"$HOME"/.gitconfig <<-EOF &&
[home]
config = true
EOF
test_when_finished rm -rf \"\$HOME\"/.config/git &&
mkdir -p "$HOME"/.config/git &&
cat >"$HOME"/.config/git/config <<-EOF &&
[xdg]
config = true
EOF
cat >.git/config <<-EOF &&
[local]
config = true
EOF
cat >custom-global-config <<-EOF &&
[global]
config = true
EOF
cat >custom-system-config <<-EOF &&
[system]
config = true
EOF
cat >expect <<-EOF &&
global xdg.config=true
global home.config=true
local local.config=true
EOF
git config --show-scope --list >output &&
test_cmp expect output &&
cat >expect <<-EOF &&
system system.config=true
global global.config=true
local local.config=true
EOF
GIT_CONFIG_NOSYSTEM=false GIT_CONFIG_SYSTEM=custom-system-config GIT_CONFIG_GLOBAL=custom-global-config \
git config --show-scope --list >output &&
test_cmp expect output &&
cat >expect <<-EOF &&
local local.config=true
EOF
GIT_CONFIG_NOSYSTEM=false GIT_CONFIG_SYSTEM=/dev/null GIT_CONFIG_GLOBAL=/dev/null \
git config --show-scope --list >output &&
test_cmp expect output
ok 193 - override global and system config
expecting success of 1300.194 'override global and system config with missing file':
test_must_fail env GIT_CONFIG_GLOBAL=does-not-exist GIT_CONFIG_SYSTEM=/dev/null git config --global --list &&
test_must_fail env GIT_CONFIG_GLOBAL=/dev/null GIT_CONFIG_SYSTEM=does-not-exist git config --system --list &&
GIT_CONFIG_GLOBAL=does-not-exist GIT_CONFIG_SYSTEM=does-not-exist git version
fatal: unable to read config file 'does-not-exist': No such file or directory
fatal: unable to read config file 'does-not-exist': No such file or directory
git version 2.42.0
ok 194 - override global and system config with missing file
expecting success of 1300.195 'system override has no effect with GIT_CONFIG_NOSYSTEM':
# `git config --system` has different semantics compared to other
# commands as it ignores GIT_CONFIG_NOSYSTEM. We thus test whether the
# variable has an effect via a different proxy.
cat >alias-config <<-EOF &&
[alias]
hello-world = !echo "hello world"
EOF
test_must_fail env GIT_CONFIG_NOSYSTEM=true GIT_CONFIG_SYSTEM=alias-config \
git hello-world &&
GIT_CONFIG_NOSYSTEM=false GIT_CONFIG_SYSTEM=alias-config \
git hello-world >actual &&
echo "hello world" >expect &&
test_cmp expect actual
git: 'hello-world' is not a git command. See 'git --help'.
ok 195 - system override has no effect with GIT_CONFIG_NOSYSTEM
expecting success of 1300.196 'write to overridden global and system config':
cat >expect <<EOF &&
[config]
key = value
EOF
GIT_CONFIG_GLOBAL=write-to-global git config --global config.key value &&
test_cmp expect write-to-global &&
GIT_CONFIG_SYSTEM=write-to-system git config --system config.key value &&
test_cmp expect write-to-system
ok 196 - write to overridden global and system config
expecting success of 1300.197 '--local requires a repo':
# we expect 128 to ensure that we do not simply
# fail to find anything and return code "1"
test_expect_code 128 nongit git config $opt foo.bar
fatal: --local can only be used inside a git repository
ok 197 - --local requires a repo
expecting success of 1300.198 '--worktree requires a repo':
# we expect 128 to ensure that we do not simply
# fail to find anything and return code "1"
test_expect_code 128 nongit git config $opt foo.bar
fatal: --worktree can only be used inside a git repository
ok 198 - --worktree requires a repo
expecting success of 1300.199 'identical modern --type specifiers are allowed':
test_cmp_config 1048576 --type=int --type=int section.big
ok 199 - identical modern --type specifiers are allowed
expecting success of 1300.200 'identical legacy --type specifiers are allowed':
test_cmp_config 1048576 --int --int section.big
ok 200 - identical legacy --type specifiers are allowed
expecting success of 1300.201 'identical mixed --type specifiers are allowed':
test_cmp_config 1048576 --int --type=int section.big
ok 201 - identical mixed --type specifiers are allowed
expecting success of 1300.202 'non-identical modern --type specifiers are not allowed':
test_must_fail git config --type=int --type=bool section.big 2>error &&
test_i18ngrep "only one type at a time" error
error: only one type at a time
ok 202 - non-identical modern --type specifiers are not allowed
expecting success of 1300.203 'non-identical legacy --type specifiers are not allowed':
test_must_fail git config --int --bool section.big 2>error &&
test_i18ngrep "only one type at a time" error
error: only one type at a time
ok 203 - non-identical legacy --type specifiers are not allowed
expecting success of 1300.204 'non-identical mixed --type specifiers are not allowed':
test_must_fail git config --type=int --bool section.big 2>error &&
test_i18ngrep "only one type at a time" error
error: only one type at a time
ok 204 - non-identical mixed --type specifiers are not allowed
expecting success of 1300.205 '--type allows valid type specifiers':
test_cmp_config true --type=bool section.foo
ok 205 - --type allows valid type specifiers
expecting success of 1300.206 '--no-type unsets type specifiers':
test_cmp_config 10 --type=bool --no-type section.number
ok 206 - --no-type unsets type specifiers
expecting success of 1300.207 'unset type specifiers may be reset to conflicting ones':
test_cmp_config 1048576 --type=bool --no-type --type=int section.big
ok 207 - unset type specifiers may be reset to conflicting ones
expecting success of 1300.208 '--type rejects unknown specifiers':
test_must_fail git config --type=nonsense section.foo 2>error &&
test_i18ngrep "unrecognized --type argument" error
fatal: unrecognized --type argument, nonsense
ok 208 - --type rejects unknown specifiers
expecting success of 1300.209 '--type=int requires at least one digit':
test_must_fail git config --type int --default m some.key >out 2>error &&
grep "bad numeric config value" error &&
test_must_be_empty out
fatal: bad numeric config value 'm' for 'some.key': invalid unit
ok 209 - --type=int requires at least one digit
expecting success of 1300.210 '--replace-all does not invent newlines':
q_to_tab >.git/config <<-\EOF &&
[abc]key
QkeepSection
[xyz]
Qkey = 1
[abc]
Qkey = a
EOF
q_to_tab >expect <<-\EOF &&
[abc]
QkeepSection
[xyz]
Qkey = 1
[abc]
Qkey = b
EOF
git config --replace-all abc.key b &&
test_cmp expect .git/config
ok 210 - --replace-all does not invent newlines
expecting success of 1300.211 'set all config with value-pattern':
test_when_finished rm -f config initial &&
git config --file=initial abc.key one &&
# no match => add new entry
cp initial config &&
git config --file=config abc.key two a+ &&
git config --file=config --list >actual &&
cat >expect <<-\EOF &&
abc.key=one
abc.key=two
EOF
test_cmp expect actual &&
# multiple matches => failure
test_must_fail git config --file=config abc.key three o+ 2>err &&
test_i18ngrep "has multiple values" err &&
# multiple values, no match => add
git config --file=config abc.key three a+ &&
git config --file=config --list >actual &&
cat >expect <<-\EOF &&
abc.key=one
abc.key=two
abc.key=three
EOF
test_cmp expect actual &&
# single match => replace
git config --file=config abc.key four h+ &&
git config --file=config --list >actual &&
cat >expect <<-\EOF &&
abc.key=one
abc.key=two
abc.key=four
EOF
test_cmp expect actual
warning: abc.key has multiple values
ok 211 - set all config with value-pattern
expecting success of 1300.212 '--replace-all and value-pattern':
test_when_finished rm -f config &&
git config --file=config --add abc.key one &&
git config --file=config --add abc.key two &&
git config --file=config --add abc.key three &&
git config --file=config --replace-all abc.key four "o+" &&
git config --file=config --list >actual &&
cat >expect <<-\EOF &&
abc.key=four
abc.key=three
EOF
test_cmp expect actual
ok 212 - --replace-all and value-pattern
expecting success of 1300.213 'refuse --fixed-value for incompatible actions':
test_when_finished rm -f config &&
git config --file=config dev.null bogus &&
# These modes do not allow --fixed-value at all
test_must_fail git config --file=config --fixed-value --add dev.null bogus &&
test_must_fail git config --file=config --fixed-value --get-urlmatch dev.null bogus &&
test_must_fail git config --file=config --fixed-value --get-urlmatch dev.null bogus &&
test_must_fail git config --file=config --fixed-value --rename-section dev null &&
test_must_fail git config --file=config --fixed-value --remove-section dev &&
test_must_fail git config --file=config --fixed-value --list &&
test_must_fail git config --file=config --fixed-value --get-color dev.null &&
test_must_fail git config --file=config --fixed-value --get-colorbool dev.null &&
# These modes complain when --fixed-value has no value-pattern
test_must_fail git config --file=config --fixed-value dev.null bogus &&
test_must_fail git config --file=config --fixed-value --replace-all dev.null bogus &&
test_must_fail git config --file=config --fixed-value --get dev.null &&
test_must_fail git config --file=config --fixed-value --get-all dev.null &&
test_must_fail git config --file=config --fixed-value --get-regexp "dev.*" &&
test_must_fail git config --file=config --fixed-value --unset dev.null &&
test_must_fail git config --file=config --fixed-value --unset-all dev.null
error: --fixed-value only applies with 'value-pattern'
usage: git config [<options>]
Config file location
--global use global config file
--system use system config file
--local use repository config file
--worktree use per-worktree config file
-f, --file <file> use given config file
--blob <blob-id> read config from given blob object
Action
--get get value: name [value-pattern]
--get-all get all values: key [value-pattern]
--get-regexp get values for regexp: name-regex [value-pattern]
--get-urlmatch get value specific for the URL: section[.var] URL
--replace-all replace all matching variables: name value [value-pattern]
--add add a new variable: name value
--unset remove a variable: name [value-pattern]
--unset-all remove all matches: name [value-pattern]
--rename-section rename section: old-name new-name
--remove-section remove a section: name
-l, --list list all
--fixed-value use string equality when comparing values to 'value-pattern'
-e, --edit open an editor
--get-color find the color configured: slot [default]
--get-colorbool find the color setting: slot [stdout-is-tty]
Type
-t, --type <type> value is given this type
--bool value is "true" or "false"
--int value is decimal number
--bool-or-int value is --bool or --int
--bool-or-str value is --bool or string
--path value is a path (file or directory name)
--expiry-date value is an expiry date
Other
-z, --null terminate values with NUL byte
--name-only show variable names only
--includes respect include directives on lookup
--show-origin show origin of config (file, standard input, blob, command line)
--show-scope show scope of config (worktree, local, global, system, command)
--default <value> with --get, use default value when missing entry
error: --fixed-value only applies with 'value-pattern'
usage: git config [<options>]
Config file location
--global use global config file
--system use system config file
--local use repository config file
--worktree use per-worktree config file
-f, --file <file> use given config file
--blob <blob-id> read config from given blob object
Action
--get get value: name [value-pattern]
--get-all get all values: key [value-pattern]
--get-regexp get values for regexp: name-regex [value-pattern]
--get-urlmatch get value specific for the URL: section[.var] URL
--replace-all replace all matching variables: name value [value-pattern]
--add add a new variable: name value
--unset remove a variable: name [value-pattern]
--unset-all remove all matches: name [value-pattern]
--rename-section rename section: old-name new-name
--remove-section remove a section: name
-l, --list list all
--fixed-value use string equality when comparing values to 'value-pattern'
-e, --edit open an editor
--get-color find the color configured: slot [default]
--get-colorbool find the color setting: slot [stdout-is-tty]
Type
-t, --type <type> value is given this type
--bool value is "true" or "false"
--int value is decimal number
--bool-or-int value is --bool or --int
--bool-or-str value is --bool or string
--path value is a path (file or directory name)
--expiry-date value is an expiry date
Other
-z, --null terminate values with NUL byte
--name-only show variable names only
--includes respect include directives on lookup
--show-origin show origin of config (file, standard input, blob, command line)
--show-scope show scope of config (worktree, local, global, system, command)
--default <value> with --get, use default value when missing entry
error: --fixed-value only applies with 'value-pattern'
usage: git config [<options>]
Config file location
--global use global config file
--system use system config file
--local use repository config file
--worktree use per-worktree config file
-f, --file <file> use given config file
--blob <blob-id> read config from given blob object
Action
--get get value: name [value-pattern]
--get-all get all values: key [value-pattern]
--get-regexp get values for regexp: name-regex [value-pattern]
--get-urlmatch get value specific for the URL: section[.var] URL
--replace-all replace all matching variables: name value [value-pattern]
--add add a new variable: name value
--unset remove a variable: name [value-pattern]
--unset-all remove all matches: name [value-pattern]
--rename-section rename section: old-name new-name
--remove-section remove a section: name
-l, --list list all
--fixed-value use string equality when comparing values to 'value-pattern'
-e, --edit open an editor
--get-color find the color configured: slot [default]
--get-colorbool find the color setting: slot [stdout-is-tty]
Type
-t, --type <type> value is given this type
--bool value is "true" or "false"
--int value is decimal number
--bool-or-int value is --bool or --int
--bool-or-str value is --bool or string
--path value is a path (file or directory name)
--expiry-date value is an expiry date
Other
-z, --null terminate values with NUL byte
--name-only show variable names only
--includes respect include directives on lookup
--show-origin show origin of config (file, standard input, blob, command line)
--show-scope show scope of config (worktree, local, global, system, command)
--default <value> with --get, use default value when missing entry
error: --fixed-value only applies with 'value-pattern'
usage: git config [<options>]
Config file location
--global use global config file
--system use system config file
--local use repository config file
--worktree use per-worktree config file
-f, --file <file> use given config file
--blob <blob-id> read config from given blob object
Action
--get get value: name [value-pattern]
--get-all get all values: key [value-pattern]
--get-regexp get values for regexp: name-regex [value-pattern]
--get-urlmatch get value specific for the URL: section[.var] URL
--replace-all replace all matching variables: name value [value-pattern]
--add add a new variable: name value
--unset remove a variable: name [value-pattern]
--unset-all remove all matches: name [value-pattern]
--rename-section rename section: old-name new-name
--remove-section remove a section: name
-l, --list list all
--fixed-value use string equality when comparing values to 'value-pattern'
-e, --edit open an editor
--get-color find the color configured: slot [default]
--get-colorbool find the color setting: slot [stdout-is-tty]
Type
-t, --type <type> value is given this type
--bool value is "true" or "false"
--int value is decimal number
--bool-or-int value is --bool or --int
--bool-or-str value is --bool or string
--path value is a path (file or directory name)
--expiry-date value is an expiry date
Other
-z, --null terminate values with NUL byte
--name-only show variable names only
--includes respect include directives on lookup
--show-origin show origin of config (file, standard input, blob, command line)
--show-scope show scope of config (worktree, local, global, system, command)
--default <value> with --get, use default value when missing entry
error: --fixed-value only applies with 'value-pattern'
usage: git config [<options>]
Config file location
--global use global config file
--system use system config file
--local use repository config file
--worktree use per-worktree config file
-f, --file <file> use given config file
--blob <blob-id> read config from given blob object
Action
--get get value: name [value-pattern]
--get-all get all values: key [value-pattern]
--get-regexp get values for regexp: name-regex [value-pattern]
--get-urlmatch get value specific for the URL: section[.var] URL
--replace-all replace all matching variables: name value [value-pattern]
--add add a new variable: name value
--unset remove a variable: name [value-pattern]
--unset-all remove all matches: name [value-pattern]
--rename-section rename section: old-name new-name
--remove-section remove a section: name
-l, --list list all
--fixed-value use string equality when comparing values to 'value-pattern'
-e, --edit open an editor
--get-color find the color configured: slot [default]
--get-colorbool find the color setting: slot [stdout-is-tty]
Type
-t, --type <type> value is given this type
--bool value is "true" or "false"
--int value is decimal number
--bool-or-int value is --bool or --int
--bool-or-str value is --bool or string
--path value is a path (file or directory name)
--expiry-date value is an expiry date
Other
-z, --null terminate values with NUL byte
--name-only show variable names only
--includes respect include directives on lookup
--show-origin show origin of config (file, standard input, blob, command line)
--show-scope show scope of config (worktree, local, global, system, command)
--default <value> with --get, use default value when missing entry
error: --fixed-value only applies with 'value-pattern'
usage: git config [<options>]
Config file location
--global use global config file
--system use system config file
--local use repository config file
--worktree use per-worktree config file
-f, --file <file> use given config file
--blob <blob-id> read config from given blob object
Action
--get get value: name [value-pattern]
--get-all get all values: key [value-pattern]
--get-regexp get values for regexp: name-regex [value-pattern]
--get-urlmatch get value specific for the URL: section[.var] URL
--replace-all replace all matching variables: name value [value-pattern]
--add add a new variable: name value
--unset remove a variable: name [value-pattern]
--unset-all remove all matches: name [value-pattern]
--rename-section rename section: old-name new-name
--remove-section remove a section: name
-l, --list list all
--fixed-value use string equality when comparing values to 'value-pattern'
-e, --edit open an editor
--get-color find the color configured: slot [default]
--get-colorbool find the color setting: slot [stdout-is-tty]
Type
-t, --type <type> value is given this type
--bool value is "true" or "false"
--int value is decimal number
--bool-or-int value is --bool or --int
--bool-or-str value is --bool or string
--path value is a path (file or directory name)
--expiry-date value is an expiry date
Other
-z, --null terminate values with NUL byte
--name-only show variable names only
--includes respect include directives on lookup
--show-origin show origin of config (file, standard input, blob, command line)
--show-scope show scope of config (worktree, local, global, system, command)
--default <value> with --get, use default value when missing entry
error: --fixed-value only applies with 'value-pattern'
usage: git config [<options>]
Config file location
--global use global config file
--system use system config file
--local use repository config file
--worktree use per-worktree config file
-f, --file <file> use given config file
--blob <blob-id> read config from given blob object
Action
--get get value: name [value-pattern]
--get-all get all values: key [value-pattern]
--get-regexp get values for regexp: name-regex [value-pattern]
--get-urlmatch get value specific for the URL: section[.var] URL
--replace-all replace all matching variables: name value [value-pattern]
--add add a new variable: name value
--unset remove a variable: name [value-pattern]
--unset-all remove all matches: name [value-pattern]
--rename-section rename section: old-name new-name
--remove-section remove a section: name
-l, --list list all
--fixed-value use string equality when comparing values to 'value-pattern'
-e, --edit open an editor
--get-color find the color configured: slot [default]
--get-colorbool find the color setting: slot [stdout-is-tty]
Type
-t, --type <type> value is given this type
--bool value is "true" or "false"
--int value is decimal number
--bool-or-int value is --bool or --int
--bool-or-str value is --bool or string
--path value is a path (file or directory name)
--expiry-date value is an expiry date
Other
-z, --null terminate values with NUL byte
--name-only show variable names only
--includes respect include directives on lookup
--show-origin show origin of config (file, standard input, blob, command line)
--show-scope show scope of config (worktree, local, global, system, command)
--default <value> with --get, use default value when missing entry
error: --fixed-value only applies with 'value-pattern'
usage: git config [<options>]
Config file location
--global use global config file
--system use system config file
--local use repository config file
--worktree use per-worktree config file
-f, --file <file> use given config file
--blob <blob-id> read config from given blob object
Action
--get get value: name [value-pattern]
--get-all get all values: key [value-pattern]
--get-regexp get values for regexp: name-regex [value-pattern]
--get-urlmatch get value specific for the URL: section[.var] URL
--replace-all replace all matching variables: name value [value-pattern]
--add add a new variable: name value
--unset remove a variable: name [value-pattern]
--unset-all remove all matches: name [value-pattern]
--rename-section rename section: old-name new-name
--remove-section remove a section: name
-l, --list list all
--fixed-value use string equality when comparing values to 'value-pattern'
-e, --edit open an editor
--get-color find the color configured: slot [default]
--get-colorbool find the color setting: slot [stdout-is-tty]
Type
-t, --type <type> value is given this type
--bool value is "true" or "false"
--int value is decimal number
--bool-or-int value is --bool or --int
--bool-or-str value is --bool or string
--path value is a path (file or directory name)
--expiry-date value is an expiry date
Other
-z, --null terminate values with NUL byte
--name-only show variable names only
--includes respect include directives on lookup
--show-origin show origin of config (file, standard input, blob, command line)
--show-scope show scope of config (worktree, local, global, system, command)
--default <value> with --get, use default value when missing entry
error: --fixed-value only applies with 'value-pattern'
usage: git config [<options>]
Config file location
--global use global config file
--system use system config file
--local use repository config file
--worktree use per-worktree config file
-f, --file <file> use given config file
--blob <blob-id> read config from given blob object
Action
--get get value: name [value-pattern]
--get-all get all values: key [value-pattern]
--get-regexp get values for regexp: name-regex [value-pattern]
--get-urlmatch get value specific for the URL: section[.var] URL
--replace-all replace all matching variables: name value [value-pattern]
--add add a new variable: name value
--unset remove a variable: name [value-pattern]
--unset-all remove all matches: name [value-pattern]
--rename-section rename section: old-name new-name
--remove-section remove a section: name
-l, --list list all
--fixed-value use string equality when comparing values to 'value-pattern'
-e, --edit open an editor
--get-color find the color configured: slot [default]
--get-colorbool find the color setting: slot [stdout-is-tty]
Type
-t, --type <type> value is given this type
--bool value is "true" or "false"
--int value is decimal number
--bool-or-int value is --bool or --int
--bool-or-str value is --bool or string
--path value is a path (file or directory name)
--expiry-date value is an expiry date
Other
-z, --null terminate values with NUL byte
--name-only show variable names only
--includes respect include directives on lookup
--show-origin show origin of config (file, standard input, blob, command line)
--show-scope show scope of config (worktree, local, global, system, command)
--default <value> with --get, use default value when missing entry
error: --fixed-value only applies with 'value-pattern'
usage: git config [<options>]
Config file location
--global use global config file
--system use system config file
--local use repository config file
--worktree use per-worktree config file
-f, --file <file> use given config file
--blob <blob-id> read config from given blob object
Action
--get get value: name [value-pattern]
--get-all get all values: key [value-pattern]
--get-regexp get values for regexp: name-regex [value-pattern]
--get-urlmatch get value specific for the URL: section[.var] URL
--replace-all replace all matching variables: name value [value-pattern]
--add add a new variable: name value
--unset remove a variable: name [value-pattern]
--unset-all remove all matches: name [value-pattern]
--rename-section rename section: old-name new-name
--remove-section remove a section: name
-l, --list list all
--fixed-value use string equality when comparing values to 'value-pattern'
-e, --edit open an editor
--get-color find the color configured: slot [default]
--get-colorbool find the color setting: slot [stdout-is-tty]
Type
-t, --type <type> value is given this type
--bool value is "true" or "false"
--int value is decimal number
--bool-or-int value is --bool or --int
--bool-or-str value is --bool or string
--path value is a path (file or directory name)
--expiry-date value is an expiry date
Other
-z, --null terminate values with NUL byte
--name-only show variable names only
--includes respect include directives on lookup
--show-origin show origin of config (file, standard input, blob, command line)
--show-scope show scope of config (worktree, local, global, system, command)
--default <value> with --get, use default value when missing entry
error: --fixed-value only applies with 'value-pattern'
usage: git config [<options>]
Config file location
--global use global config file
--system use system config file
--local use repository config file
--worktree use per-worktree config file
-f, --file <file> use given config file
--blob <blob-id> read config from given blob object
Action
--get get value: name [value-pattern]
--get-all get all values: key [value-pattern]
--get-regexp get values for regexp: name-regex [value-pattern]
--get-urlmatch get value specific for the URL: section[.var] URL
--replace-all replace all matching variables: name value [value-pattern]
--add add a new variable: name value
--unset remove a variable: name [value-pattern]
--unset-all remove all matches: name [value-pattern]
--rename-section rename section: old-name new-name
--remove-section remove a section: name
-l, --list list all
--fixed-value use string equality when comparing values to 'value-pattern'
-e, --edit open an editor
--get-color find the color configured: slot [default]
--get-colorbool find the color setting: slot [stdout-is-tty]
Type
-t, --type <type> value is given this type
--bool value is "true" or "false"
--int value is decimal number
--bool-or-int value is --bool or --int
--bool-or-str value is --bool or string
--path value is a path (file or directory name)
--expiry-date value is an expiry date
Other
-z, --null terminate values with NUL byte
--name-only show variable names only
--includes respect include directives on lookup
--show-origin show origin of config (file, standard input, blob, command line)
--show-scope show scope of config (worktree, local, global, system, command)
--default <value> with --get, use default value when missing entry
error: --fixed-value only applies with 'value-pattern'
usage: git config [<options>]
Config file location
--global use global config file
--system use system config file
--local use repository config file
--worktree use per-worktree config file
-f, --file <file> use given config file
--blob <blob-id> read config from given blob object
Action
--get get value: name [value-pattern]
--get-all get all values: key [value-pattern]
--get-regexp get values for regexp: name-regex [value-pattern]
--get-urlmatch get value specific for the URL: section[.var] URL
--replace-all replace all matching variables: name value [value-pattern]
--add add a new variable: name value
--unset remove a variable: name [value-pattern]
--unset-all remove all matches: name [value-pattern]
--rename-section rename section: old-name new-name
--remove-section remove a section: name
-l, --list list all
--fixed-value use string equality when comparing values to 'value-pattern'
-e, --edit open an editor
--get-color find the color configured: slot [default]
--get-colorbool find the color setting: slot [stdout-is-tty]
Type
-t, --type <type> value is given this type
--bool value is "true" or "false"
--int value is decimal number
--bool-or-int value is --bool or --int
--bool-or-str value is --bool or string
--path value is a path (file or directory name)
--expiry-date value is an expiry date
Other
-z, --null terminate values with NUL byte
--name-only show variable names only
--includes respect include directives on lookup
--show-origin show origin of config (file, standard input, blob, command line)
--show-scope show scope of config (worktree, local, global, system, command)
--default <value> with --get, use default value when missing entry
error: --fixed-value only applies with 'value-pattern'
usage: git config [<options>]
Config file location
--global use global config file
--system use system config file
--local use repository config file
--worktree use per-worktree config file
-f, --file <file> use given config file
--blob <blob-id> read config from given blob object
Action
--get get value: name [value-pattern]
--get-all get all values: key [value-pattern]
--get-regexp get values for regexp: name-regex [value-pattern]
--get-urlmatch get value specific for the URL: section[.var] URL
--replace-all replace all matching variables: name value [value-pattern]
--add add a new variable: name value
--unset remove a variable: name [value-pattern]
--unset-all remove all matches: name [value-pattern]
--rename-section rename section: old-name new-name
--remove-section remove a section: name
-l, --list list all
--fixed-value use string equality when comparing values to 'value-pattern'
-e, --edit open an editor
--get-color find the color configured: slot [default]
--get-colorbool find the color setting: slot [stdout-is-tty]
Type
-t, --type <type> value is given this type
--bool value is "true" or "false"
--int value is decimal number
--bool-or-int value is --bool or --int
--bool-or-str value is --bool or string
--path value is a path (file or directory name)
--expiry-date value is an expiry date
Other
-z, --null terminate values with NUL byte
--name-only show variable names only
--includes respect include directives on lookup
--show-origin show origin of config (file, standard input, blob, command line)
--show-scope show scope of config (worktree, local, global, system, command)
--default <value> with --get, use default value when missing entry
error: --fixed-value only applies with 'value-pattern'
usage: git config [<options>]
Config file location
--global use global config file
--system use system config file
--local use repository config file
--worktree use per-worktree config file
-f, --file <file> use given config file
--blob <blob-id> read config from given blob object
Action
--get get value: name [value-pattern]
--get-all get all values: key [value-pattern]
--get-regexp get values for regexp: name-regex [value-pattern]
--get-urlmatch get value specific for the URL: section[.var] URL
--replace-all replace all matching variables: name value [value-pattern]
--add add a new variable: name value
--unset remove a variable: name [value-pattern]
--unset-all remove all matches: name [value-pattern]
--rename-section rename section: old-name new-name
--remove-section remove a section: name
-l, --list list all
--fixed-value use string equality when comparing values to 'value-pattern'
-e, --edit open an editor
--get-color find the color configured: slot [default]
--get-colorbool find the color setting: slot [stdout-is-tty]
Type
-t, --type <type> value is given this type
--bool value is "true" or "false"
--int value is decimal number
--bool-or-int value is --bool or --int
--bool-or-str value is --bool or string
--path value is a path (file or directory name)
--expiry-date value is an expiry date
Other
-z, --null terminate values with NUL byte
--name-only show variable names only
--includes respect include directives on lookup
--show-origin show origin of config (file, standard input, blob, command line)
--show-scope show scope of config (worktree, local, global, system, command)
--default <value> with --get, use default value when missing entry
error: --fixed-value only applies with 'value-pattern'
usage: git config [<options>]
Config file location
--global use global config file
--system use system config file
--local use repository config file
--worktree use per-worktree config file
-f, --file <file> use given config file
--blob <blob-id> read config from given blob object
Action
--get get value: name [value-pattern]
--get-all get all values: key [value-pattern]
--get-regexp get values for regexp: name-regex [value-pattern]
--get-urlmatch get value specific for the URL: section[.var] URL
--replace-all replace all matching variables: name value [value-pattern]
--add add a new variable: name value
--unset remove a variable: name [value-pattern]
--unset-all remove all matches: name [value-pattern]
--rename-section rename section: old-name new-name
--remove-section remove a section: name
-l, --list list all
--fixed-value use string equality when comparing values to 'value-pattern'
-e, --edit open an editor
--get-color find the color configured: slot [default]
--get-colorbool find the color setting: slot [stdout-is-tty]
Type
-t, --type <type> value is given this type
--bool value is "true" or "false"
--int value is decimal number
--bool-or-int value is --bool or --int
--bool-or-str value is --bool or string
--path value is a path (file or directory name)
--expiry-date value is an expiry date
Other
-z, --null terminate values with NUL byte
--name-only show variable names only
--includes respect include directives on lookup
--show-origin show origin of config (file, standard input, blob, command line)
--show-scope show scope of config (worktree, local, global, system, command)
--default <value> with --get, use default value when missing entry
ok 213 - refuse --fixed-value for incompatible actions
expecting success of 1300.214 '--fixed-value uses exact string matching':
test_when_finished rm -f config initial &&
META="a+b*c?d[e]f.g" &&
git config --file=initial fixed.test "$META" &&
cp initial config &&
git config --file=config fixed.test bogus "$META" &&
git config --file=config --list >actual &&
cat >expect <<-EOF &&
fixed.test=$META
fixed.test=bogus
EOF
test_cmp expect actual &&
cp initial config &&
git config --file=config --fixed-value fixed.test bogus "$META" &&
git config --file=config --list >actual &&
cat >expect <<-\EOF &&
fixed.test=bogus
EOF
test_cmp expect actual &&
cp initial config &&
test_must_fail git config --file=config --unset fixed.test "$META" &&
git config --file=config --fixed-value --unset fixed.test "$META" &&
test_must_fail git config --file=config fixed.test &&
cp initial config &&
test_must_fail git config --file=config --unset-all fixed.test "$META" &&
git config --file=config --fixed-value --unset-all fixed.test "$META" &&
test_must_fail git config --file=config fixed.test &&
cp initial config &&
git config --file=config --replace-all fixed.test bogus "$META" &&
git config --file=config --list >actual &&
cat >expect <<-EOF &&
fixed.test=$META
fixed.test=bogus
EOF
test_cmp expect actual &&
git config --file=config --fixed-value --replace-all fixed.test bogus "$META" &&
git config --file=config --list >actual &&
cat >expect <<-EOF &&
fixed.test=bogus
fixed.test=bogus
EOF
test_cmp expect actual
ok 214 - --fixed-value uses exact string matching
expecting success of 1300.215 '--get and --get-all with --fixed-value':
test_when_finished rm -f config &&
META="a+b*c?d[e]f.g" &&
git config --file=config fixed.test bogus &&
git config --file=config --add fixed.test "$META" &&
git config --file=config --get fixed.test bogus &&
test_must_fail git config --file=config --get fixed.test "$META" &&
git config --file=config --get --fixed-value fixed.test "$META" &&
test_must_fail git config --file=config --get --fixed-value fixed.test non-existent &&
git config --file=config --get-all fixed.test bogus &&
test_must_fail git config --file=config --get-all fixed.test "$META" &&
git config --file=config --get-all --fixed-value fixed.test "$META" &&
test_must_fail git config --file=config --get-all --fixed-value fixed.test non-existent &&
git config --file=config --get-regexp fixed+ bogus &&
test_must_fail git config --file=config --get-regexp fixed+ "$META" &&
git config --file=config --get-regexp --fixed-value fixed+ "$META" &&
test_must_fail git config --file=config --get-regexp --fixed-value fixed+ non-existent
bogus
a+b*c?d[e]f.g
bogus
a+b*c?d[e]f.g
fixed.test bogus
fixed.test a+b*c?d[e]f.g
ok 215 - --get and --get-all with --fixed-value
expecting success of 1300.216 'includeIf.hasconfig:remote.*.url':
git init hasremoteurlTest &&
test_when_finished "rm -rf hasremoteurlTest" &&
cat >include-this <<-\EOF &&
[user]
this = this-is-included
EOF
cat >dont-include-that <<-\EOF &&
[user]
that = that-is-not-included
EOF
cat >>hasremoteurlTest/.git/config <<-EOF &&
[includeIf "hasconfig:remote.*.url:foourl"]
path = "$(pwd)/include-this"
[includeIf "hasconfig:remote.*.url:barurl"]
path = "$(pwd)/dont-include-that"
[remote "foo"]
url = foourl
EOF
echo this-is-included >expect-this &&
git -C hasremoteurlTest config --get user.this >actual-this &&
test_cmp expect-this actual-this &&
test_must_fail git -C hasremoteurlTest config --get user.that
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1300-config/hasremoteurlTest/.git/
ok 216 - includeIf.hasconfig:remote.*.url
expecting success of 1300.217 'includeIf.hasconfig:remote.*.url respects last-config-wins':
git init hasremoteurlTest &&
test_when_finished "rm -rf hasremoteurlTest" &&
cat >include-two-three <<-\EOF &&
[user]
two = included-config
three = included-config
EOF
cat >>hasremoteurlTest/.git/config <<-EOF &&
[remote "foo"]
url = foourl
[user]
one = main-config
two = main-config
[includeIf "hasconfig:remote.*.url:foourl"]
path = "$(pwd)/include-two-three"
[user]
three = main-config
EOF
echo main-config >expect-main-config &&
echo included-config >expect-included-config &&
git -C hasremoteurlTest config --get user.one >actual &&
test_cmp expect-main-config actual &&
git -C hasremoteurlTest config --get user.two >actual &&
test_cmp expect-included-config actual &&
git -C hasremoteurlTest config --get user.three >actual &&
test_cmp expect-main-config actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1300-config/hasremoteurlTest/.git/
ok 217 - includeIf.hasconfig:remote.*.url respects last-config-wins
expecting success of 1300.218 'includeIf.hasconfig:remote.*.url globs':
git init hasremoteurlTest &&
test_when_finished "rm -rf hasremoteurlTest" &&
printf "[user]\ndss = yes\n" >double-star-start &&
printf "[user]\ndse = yes\n" >double-star-end &&
printf "[user]\ndsm = yes\n" >double-star-middle &&
printf "[user]\nssm = yes\n" >single-star-middle &&
printf "[user]\nno = no\n" >no &&
cat >>hasremoteurlTest/.git/config <<-EOF &&
[remote "foo"]
url = https://foo/bar/baz
[includeIf "hasconfig:remote.*.url:**/baz"]
path = "$(pwd)/double-star-start"
[includeIf "hasconfig:remote.*.url:**/nomatch"]
path = "$(pwd)/no"
[includeIf "hasconfig:remote.*.url:https:/**"]
path = "$(pwd)/double-star-end"
[includeIf "hasconfig:remote.*.url:nomatch:/**"]
path = "$(pwd)/no"
[includeIf "hasconfig:remote.*.url:https:/**/baz"]
path = "$(pwd)/double-star-middle"
[includeIf "hasconfig:remote.*.url:https:/**/nomatch"]
path = "$(pwd)/no"
[includeIf "hasconfig:remote.*.url:https://*/bar/baz"]
path = "$(pwd)/single-star-middle"
[includeIf "hasconfig:remote.*.url:https://*/baz"]
path = "$(pwd)/no"
EOF
git -C hasremoteurlTest config --get user.dss &&
git -C hasremoteurlTest config --get user.dse &&
git -C hasremoteurlTest config --get user.dsm &&
git -C hasremoteurlTest config --get user.ssm &&
test_must_fail git -C hasremoteurlTest config --get user.no
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1300-config/hasremoteurlTest/.git/
yes
yes
yes
yes
ok 218 - includeIf.hasconfig:remote.*.url globs
expecting success of 1300.219 'includeIf.hasconfig:remote.*.url forbids remote url in such included files':
git init hasremoteurlTest &&
test_when_finished "rm -rf hasremoteurlTest" &&
cat >include-with-url <<-\EOF &&
[remote "bar"]
url = barurl
EOF
cat >>hasremoteurlTest/.git/config <<-EOF &&
[includeIf "hasconfig:remote.*.url:foourl"]
path = "$(pwd)/include-with-url"
EOF
# test with any Git command
test_must_fail git -C hasremoteurlTest status 2>err &&
grep "fatal: remote URLs cannot be configured in file directly or indirectly included by includeIf.hasconfig:remote.*.url" err
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1300-config/hasremoteurlTest/.git/
fatal: remote URLs cannot be configured in file directly or indirectly included by includeIf.hasconfig:remote.*.url
ok 219 - includeIf.hasconfig:remote.*.url forbids remote url in such included files
# passed all 219 test(s)
1..219
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1301-shared-repo.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1301-shared-repo/.git/
expecting success of 1301.1 'shared = 0400 (faulty permission u-w)':
test_when_finished "rm -rf sub" &&
mkdir sub && (
cd sub &&
test_must_fail git init --shared=0400
)
fatal: problem with core.sharedRepository filemode value (0400).
The owner of files must always have read and write permissions.
ok 1 - shared = 0400 (faulty permission u-w)
expecting success of 1301.2 'shared=1 does not clear bits preset by umask 002':
test_when_finished "rm -rf sub" &&
mkdir sub && (
cd sub &&
umask $u &&
git init --shared=1 &&
test 1 = "$(git config core.sharedrepository)"
) &&
actual=$(ls -l sub/.git/HEAD) &&
case "$actual" in
-rw-rw-r--*)
: happy
;;
*)
echo Oops, .git/HEAD is not 0664 but $actual
false
;;
esac
Initialized empty shared Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1301-shared-repo/sub/.git/
ok 2 - shared=1 does not clear bits preset by umask 002
expecting success of 1301.3 'shared=1 does not clear bits preset by umask 022':
test_when_finished "rm -rf sub" &&
mkdir sub && (
cd sub &&
umask $u &&
git init --shared=1 &&
test 1 = "$(git config core.sharedrepository)"
) &&
actual=$(ls -l sub/.git/HEAD) &&
case "$actual" in
-rw-rw-r--*)
: happy
;;
*)
echo Oops, .git/HEAD is not 0664 but $actual
false
;;
esac
Initialized empty shared Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1301-shared-repo/sub/.git/
ok 3 - shared=1 does not clear bits preset by umask 022
expecting success of 1301.4 'shared=all':
git init --template= --shared=all &&
test 2 = $(git config core.sharedrepository)
Reinitialized existing shared Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1301-shared-repo/.git/
ok 4 - shared=all
checking known breakage of 1301.5 'template can set core.bare':
test_when_finished "rm -rf subdir" &&
test_when_finished "rm -rf templates" &&
test_config core.bare true &&
umask 0022 &&
mkdir -p templates/ &&
cp .git/config templates/config &&
git init --template=templates subdir &&
test_path_exists subdir/HEAD
Initialized empty shared Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1301-shared-repo/subdir/.git/
Path subdir/HEAD doesn't exist
not ok 5 - template can set core.bare # TODO known breakage
expecting success of 1301.6 'template can set core.bare but overridden by command line':
test_when_finished "rm -rf subdir" &&
test_when_finished "rm -rf templates" &&
test_config core.bare true &&
umask 0022 &&
mkdir -p templates/ &&
cp .git/config templates/config &&
git init --no-bare --template=templates subdir &&
test_path_exists subdir/.git/HEAD
Initialized empty shared Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1301-shared-repo/subdir/.git/
ok 6 - template can set core.bare but overridden by command line
expecting success of 1301.7 'update-server-info honors core.sharedRepository':
: > a1 &&
git add a1 &&
test_tick &&
git commit -m a1 &&
mkdir .git/info &&
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
[main (root-commit) a2bd363] a1
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 a1
ok 7 - update-server-info honors core.sharedRepository
expecting success of 1301.8 'shared = 0660 (r--r-----) ro':
rm -f .git/info/refs &&
git update-server-info &&
actual="$(test_modebits .git/info/refs)" &&
test "x$actual" = "x-$y"
ok 8 - shared = 0660 (r--r-----) ro
expecting success of 1301.9 'shared = 0660 (rw-rw----) rw':
rm -f .git/info/refs &&
git update-server-info &&
actual="$(test_modebits .git/info/refs)" &&
test "x$actual" = "x-$x"
ok 9 - shared = 0660 (rw-rw----) rw
expecting success of 1301.10 'shared = 0640 (r--r-----) ro':
rm -f .git/info/refs &&
git update-server-info &&
actual="$(test_modebits .git/info/refs)" &&
test "x$actual" = "x-$y"
ok 10 - shared = 0640 (r--r-----) ro
expecting success of 1301.11 'shared = 0640 (rw-r-----) rw':
rm -f .git/info/refs &&
git update-server-info &&
actual="$(test_modebits .git/info/refs)" &&
test "x$actual" = "x-$x"
ok 11 - shared = 0640 (rw-r-----) rw
expecting success of 1301.12 'shared = 0600 (r--------) ro':
rm -f .git/info/refs &&
git update-server-info &&
actual="$(test_modebits .git/info/refs)" &&
test "x$actual" = "x-$y"
ok 12 - shared = 0600 (r--------) ro
expecting success of 1301.13 'shared = 0600 (rw-------) rw':
rm -f .git/info/refs &&
git update-server-info &&
actual="$(test_modebits .git/info/refs)" &&
test "x$actual" = "x-$x"
ok 13 - shared = 0600 (rw-------) rw
expecting success of 1301.14 'shared = 0666 (r--r--r--) ro':
rm -f .git/info/refs &&
git update-server-info &&
actual="$(test_modebits .git/info/refs)" &&
test "x$actual" = "x-$y"
ok 14 - shared = 0666 (r--r--r--) ro
expecting success of 1301.15 'shared = 0666 (rw-rw-rw-) rw':
rm -f .git/info/refs &&
git update-server-info &&
actual="$(test_modebits .git/info/refs)" &&
test "x$actual" = "x-$x"
ok 15 - shared = 0666 (rw-rw-rw-) rw
expecting success of 1301.16 'shared = 0664 (r--r--r--) ro':
rm -f .git/info/refs &&
git update-server-info &&
actual="$(test_modebits .git/info/refs)" &&
test "x$actual" = "x-$y"
ok 16 - shared = 0664 (r--r--r--) ro
expecting success of 1301.17 'shared = 0664 (rw-rw-r--) rw':
rm -f .git/info/refs &&
git update-server-info &&
actual="$(test_modebits .git/info/refs)" &&
test "x$actual" = "x-$x"
ok 17 - shared = 0664 (rw-rw-r--) rw
expecting success of 1301.18 'info/refs respects umask in unshared repo':
rm -f .git/info/refs &&
test_unconfig core.sharedrepository &&
umask 002 &&
git update-server-info &&
echo "-rw-rw-r--" >expect &&
test_modebits .git/info/refs >actual &&
test_cmp expect actual
ok 18 - info/refs respects umask in unshared repo
expecting success of 1301.19 'git reflog expire honors core.sharedRepository':
umask 077 &&
git config core.sharedRepository group &&
git reflog expire --all &&
actual="$(ls -l .git/logs/refs/heads/main)" &&
case "$actual" in
-rw-rw-*)
: happy
;;
*)
echo Ooops, .git/logs/refs/heads/main is not 066x [$actual]
false
;;
esac
ok 19 - git reflog expire honors core.sharedRepository
expecting success of 1301.20 'forced modes':
test_when_finished "rm -rf new" &&
mkdir -p templates/hooks &&
echo update-server-info >templates/hooks/post-update &&
chmod +x templates/hooks/post-update &&
echo : >random-file &&
mkdir new &&
(
cd new &&
umask 002 &&
git init --shared=0660 --template=../templates &&
test_path_is_file .git/hooks/post-update &&
>frotz &&
git add frotz &&
git commit -a -m initial &&
git repack
) &&
# List repository files meant to be protected; note that
# COMMIT_EDITMSG does not matter---0mode is not about a
# repository with a work tree.
find new/.git -type f -name COMMIT_EDITMSG -prune -o -print |
xargs ls -ld >actual &&
# Everything must be unaccessible to others
test -z "$(sed -e "/^.......---/d" actual)" &&
# All directories must have either 2770 or 770
test -z "$(sed -n -e "/^drwxrw[sx]---/d" -e "/^d/p" actual)" &&
# post-update hook must be 0770
test -z "$(sed -n -e "/post-update/{
/^-rwxrwx---/d
p
}" actual)" &&
# All files inside objects must be accessible by us
test -z "$(sed -n -e "/objects\//{
/^d/d
/^-r.-r.----/d
p
}" actual)"
Initialized empty shared Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1301-shared-repo/new/.git/
[main (root-commit) e4c5dc6] initial
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 frotz
ok 20 - forced modes
expecting success of 1301.21 'remote init does not use config from cwd':
test_when_finished "rm -rf child.git" &&
git config core.sharedrepository 0666 &&
umask 0022 &&
git init --bare child.git &&
echo "-rw-r--r--" >expect &&
test_modebits child.git/config >actual &&
test_cmp expect actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1301-shared-repo/child.git/
ok 21 - remote init does not use config from cwd
expecting success of 1301.22 're-init respects core.sharedrepository (local)':
git config core.sharedrepository 0666 &&
umask 0022 &&
echo whatever >templates/foo &&
git init --template=templates &&
echo "-rw-rw-rw-" >expect &&
test_modebits .git/foo >actual &&
test_cmp expect actual
Reinitialized existing shared Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1301-shared-repo/.git/
ok 22 - re-init respects core.sharedrepository (local)
expecting success of 1301.23 're-init respects core.sharedrepository (remote)':
test_when_finished "rm -rf child.git" &&
umask 0022 &&
git init --bare --shared=0666 child.git &&
test_path_is_missing child.git/foo &&
git init --bare --template=templates child.git &&
echo "-rw-rw-rw-" >expect &&
test_modebits child.git/foo >actual &&
test_cmp expect actual
Initialized empty shared Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1301-shared-repo/child.git/
Reinitialized existing shared Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1301-shared-repo/child.git/
ok 23 - re-init respects core.sharedrepository (remote)
expecting success of 1301.24 'template can set core.sharedrepository':
test_when_finished "rm -rf child.git" &&
umask 0022 &&
git config core.sharedrepository 0666 &&
cp .git/config templates/config &&
git init --bare --template=templates child.git &&
echo "-rw-rw-rw-" >expect &&
test_modebits child.git/HEAD >actual &&
test_cmp expect actual
Initialized empty shared Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1301-shared-repo/child.git/
ok 24 - template can set core.sharedrepository
# still have 1 known breakage(s)
# passed all remaining 23 test(s)
1..24
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1302-repo-version.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1302-repo-version/.git/
expecting success of 1302.1 'setup':
test_oid_cache <<-\EOF &&
version sha1:0
version sha256:1
EOF
cat >test.patch <<-\EOF &&
diff --git a/test.txt b/test.txt
new file mode 100644
--- /dev/null
+++ b/test.txt
@@ -0,0 +1 @@
+123
EOF
test_create_repo "test" &&
test_create_repo "test2" &&
git config --file=test2/.git/config core.repositoryformatversion 99
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1302-repo-version/test/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1302-repo-version/test2/.git/
ok 1 - setup
expecting success of 1302.2 'gitdir selection on normal repos':
test_oid version >expect &&
git config core.repositoryformatversion >actual &&
git -C test config core.repositoryformatversion >actual2 &&
test_cmp expect actual &&
test_cmp expect actual2
ok 2 - gitdir selection on normal repos
expecting success of 1302.3 'gitdir selection on unsupported repo':
# Make sure it would stop at test2, not trash
test_expect_code 1 git -C test2 config core.repositoryformatversion
warning: Expected git repo version <= 1, found 99
ok 3 - gitdir selection on unsupported repo
expecting success of 1302.4 'gitdir not required mode':
git apply --stat test.patch &&
git -C test apply --stat ../test.patch &&
git -C test2 apply --stat ../test.patch
test.txt | 1 +
1 file changed, 1 insertion(+)
test.txt | 1 +
1 file changed, 1 insertion(+)
warning: Expected git repo version <= 1, found 99
warning: ignoring git dir '.git': Expected git repo version <= 1, found 99
test.txt | 1 +
1 file changed, 1 insertion(+)
ok 4 - gitdir not required mode
expecting success of 1302.5 'gitdir required mode':
git apply --check --index test.patch &&
git -C test apply --check --index ../test.patch &&
test_must_fail git -C test2 apply --check --index ../test.patch
warning: Expected git repo version <= 1, found 99
warning: ignoring git dir '.git': Expected git repo version <= 1, found 99
error: '--index' outside a repository
ok 5 - gitdir required mode
expecting success of 1302.6 'allow version=0 ':
mkconfig 0 >.git/config &&
check_allow
ok 6 - allow version=0
expecting success of 1302.7 'allow version=1 ':
mkconfig 1 >.git/config &&
check_allow
ok 7 - allow version=1
expecting success of 1302.8 'allow version=1 noop':
mkconfig 1 noop >.git/config &&
check_allow
ok 8 - allow version=1 noop
expecting success of 1302.9 'abort version=1 no-such-extension':
mkconfig 1 no-such-extension >.git/config &&
check_abort
fatal: unknown repository extension found:
no-such-extension
ok 9 - abort version=1 no-such-extension
expecting success of 1302.10 'allow version=0 no-such-extension':
mkconfig 0 no-such-extension >.git/config &&
check_allow
ok 10 - allow version=0 no-such-extension
expecting success of 1302.11 'allow version=0 noop':
mkconfig 0 noop >.git/config &&
check_allow
ok 11 - allow version=0 noop
expecting success of 1302.12 'abort version=0 noop-v1':
mkconfig 0 noop-v1 >.git/config &&
check_abort
fatal: repo version is 0, but v1-only extension found:
noop-v1
ok 12 - abort version=0 noop-v1
expecting success of 1302.13 'allow version=1 noop-v1':
mkconfig 1 noop-v1 >.git/config &&
check_allow
ok 13 - allow version=1 noop-v1
expecting success of 1302.14 'precious-objects allowed':
mkconfig 1 preciousObjects >.git/config &&
check_allow
ok 14 - precious-objects allowed
expecting success of 1302.15 'precious-objects blocks destructive repack':
test_must_fail git repack -ad
fatal: cannot delete packs in a precious-objects repo
ok 15 - precious-objects blocks destructive repack
expecting success of 1302.16 'other repacks are OK':
test_commit foo &&
git repack
[master (root-commit) ddd63c9] foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo.t
ok 16 - other repacks are OK
expecting success of 1302.17 'precious-objects blocks prune':
test_must_fail git prune
fatal: cannot prune in a precious-objects repo
ok 17 - precious-objects blocks prune
expecting success of 1302.18 'gc runs without complaint':
git gc
ok 18 - gc runs without complaint
# passed all 18 test(s)
1..18
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1303-wacky-config.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1303-wacky-config/.git/
expecting success of 1303.1 'modify same key':
setup &&
git config section.key bar &&
check section.key bar
ok 1 - modify same key
expecting success of 1303.2 'add key in same section':
setup &&
git config section.other bar &&
check section.key foo &&
check section.other bar
ok 2 - add key in same section
expecting success of 1303.3 'add key in different section':
setup &&
git config section2.key bar &&
check section.key foo &&
check section2.key bar
ok 3 - add key in different section
expecting success of 1303.4 'make sure git config escapes section names properly':
git config "$SECTION" bar &&
check "$SECTION" bar
ok 4 - make sure git config escapes section names properly
expecting success of 1303.5 'do not crash on special long config line':
setup &&
git config section.key "$LONG_VALUE" &&
check section.key "$LONG_VALUE"
ok 5 - do not crash on special long config line
expecting success of 1303.6 'get many entries':
setup_many &&
git config --get-all section.key >actual &&
test_line_count = 3126 actual
ok 6 - get many entries
expecting success of 1303.7 'get many entries by regex':
setup_many &&
git config --get-regexp "sec.*ke." >actual &&
test_line_count = 3126 actual
ok 7 - get many entries by regex
expecting success of 1303.8 'add and replace one of many entries':
setup_many &&
git config --add section.key bar &&
check_regex section.key "b.*r" bar &&
git config section.key beer "b.*r" &&
check_regex section.key "b.*r" beer
ok 8 - add and replace one of many entries
expecting success of 1303.9 'replace many entries':
setup_many &&
git config --replace-all section.key bar &&
check section.key bar
ok 9 - replace many entries
expecting success of 1303.10 'unset many entries':
setup_many &&
git config --unset-all section.key &&
test_must_fail git config section.key
ok 10 - unset many entries
expecting success of 1303.11 '--add appends new value after existing empty value':
cat >expect <<-\EOF &&
fool
roll
EOF
cp .git/config .git/config.old &&
test_when_finished "mv .git/config.old .git/config" &&
cat >.git/config <<-\EOF &&
[foo]
baz
baz =
baz = fool
EOF
git config --add foo.baz roll &&
git config --get-all foo.baz >output &&
test_cmp expect output
ok 11 - --add appends new value after existing empty value
# passed all 11 test(s)
1..11
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1304-default-acl.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1304-default-acl/.git/
expecting success of 1304.1 'checking for a working acl setup':
if setfacl -m d:m:rwx -m u:root:rwx . &&
getfacl . | grep user:root:rwx &&
touch should-have-readable-acl &&
getfacl should-have-readable-acl | grep -E "mask::?rw-"
then
test_set_prereq SETFACL
fi
t1304-default-acl.sh: 4: eval: setfacl: not found
ok 1 - checking for a working acl setup
ok 2 # skip Setup test repo (missing SETFACL)
ok 3 # skip Objects creation does not break ACLs with restrictive umask (missing SETFACL)
ok 4 # skip git gc does not break ACLs with restrictive umask (missing SETFACL)
# passed all 4 test(s)
1..4
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1305-config-include.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1305-config-include/.git/
expecting success of 1305.1 'include file by absolute path':
echo "[test]one = 1" >one &&
echo "[include]path = \"$(pwd)/one\"" >.gitconfig &&
echo 1 >expect &&
git config test.one >actual &&
test_cmp expect actual
ok 1 - include file by absolute path
expecting success of 1305.2 'include file by relative path':
echo "[test]one = 1" >one &&
echo "[include]path = one" >.gitconfig &&
echo 1 >expect &&
git config test.one >actual &&
test_cmp expect actual
ok 2 - include file by relative path
expecting success of 1305.3 'chained relative paths':
mkdir subdir &&
echo "[test]three = 3" >subdir/three &&
echo "[include]path = three" >subdir/two &&
echo "[include]path = subdir/two" >.gitconfig &&
echo 3 >expect &&
git config test.three >actual &&
test_cmp expect actual
ok 3 - chained relative paths
expecting success of 1305.4 'include paths get tilde-expansion':
echo "[test]one = 1" >one &&
echo "[include]path = ~/one" >.gitconfig &&
echo 1 >expect &&
git config test.one >actual &&
test_cmp expect actual
ok 4 - include paths get tilde-expansion
expecting success of 1305.5 'include options can still be examined':
echo "[test]one = 1" >one &&
echo "[include]path = one" >.gitconfig &&
echo one >expect &&
git config include.path >actual &&
test_cmp expect actual
ok 5 - include options can still be examined
expecting success of 1305.6 'listing includes option and expansion':
echo "[test]one = 1" >one &&
echo "[include]path = one" >.gitconfig &&
cat >expect <<-\EOF &&
include.path=one
test.one=1
EOF
git config --list >actual.full &&
grep -v -e ^core -e ^extensions actual.full >actual &&
test_cmp expect actual
ok 6 - listing includes option and expansion
expecting success of 1305.7 'single file lookup does not expand includes by default':
echo "[test]one = 1" >one &&
echo "[include]path = one" >.gitconfig &&
test_must_fail git config -f .gitconfig test.one &&
test_must_fail git config --global test.one &&
echo 1 >expect &&
git config --includes -f .gitconfig test.one >actual &&
test_cmp expect actual
ok 7 - single file lookup does not expand includes by default
expecting success of 1305.8 'single file list does not expand includes by default':
echo "[test]one = 1" >one &&
echo "[include]path = one" >.gitconfig &&
echo "include.path=one" >expect &&
git config -f .gitconfig --list >actual &&
test_cmp expect actual
ok 8 - single file list does not expand includes by default
expecting success of 1305.9 'writing config file does not expand includes':
echo "[test]one = 1" >one &&
echo "[include]path = one" >.gitconfig &&
git config test.two 2 &&
echo 2 >expect &&
git config --no-includes test.two >actual &&
test_cmp expect actual &&
test_must_fail git config --no-includes test.one
ok 9 - writing config file does not expand includes
expecting success of 1305.10 'config modification does not affect includes':
echo "[test]one = 1" >one &&
echo "[include]path = one" >.gitconfig &&
git config test.one 2 &&
echo 1 >expect &&
git config -f one test.one >actual &&
test_cmp expect actual &&
cat >expect <<-\EOF &&
1
2
EOF
git config --get-all test.one >actual &&
test_cmp expect actual
ok 10 - config modification does not affect includes
expecting success of 1305.11 'missing include files are ignored':
cat >.gitconfig <<-\EOF &&
[include]path = non-existent
[test]value = yes
EOF
echo yes >expect &&
git config test.value >actual &&
test_cmp expect actual
ok 11 - missing include files are ignored
expecting success of 1305.12 'absolute includes from command line work':
echo "[test]one = 1" >one &&
echo 1 >expect &&
git -c include.path="$(pwd)/one" config test.one >actual &&
test_cmp expect actual
ok 12 - absolute includes from command line work
expecting success of 1305.13 'relative includes from command line fail':
echo "[test]one = 1" >one &&
test_must_fail git -c include.path=one config test.one
error: relative config includes must come from files
fatal: unable to parse command-line config
ok 13 - relative includes from command line fail
expecting success of 1305.14 'absolute includes from blobs work':
echo "[test]one = 1" >one &&
echo "[include]path=$(pwd)/one" >blob &&
blob=$(git hash-object -w blob) &&
echo 1 >expect &&
git config --blob=$blob test.one >actual &&
test_cmp expect actual
ok 14 - absolute includes from blobs work
expecting success of 1305.15 'relative includes from blobs fail':
echo "[test]one = 1" >one &&
echo "[include]path=one" >blob &&
blob=$(git hash-object -w blob) &&
test_must_fail git config --blob=$blob test.one
error: relative config includes must come from files
error: bad config line 1 in blob d085876092eb24c144128bcd5db5d26e665f4f8a
ok 15 - relative includes from blobs fail
expecting success of 1305.16 'absolute includes from stdin work':
echo "[test]one = 1" >one &&
echo 1 >expect &&
echo "[include]path=\"$(pwd)/one\"" |
git config --file - test.one >actual &&
test_cmp expect actual
ok 16 - absolute includes from stdin work
expecting success of 1305.17 'relative includes from stdin line fail':
echo "[test]one = 1" >one &&
echo "[include]path=one" |
test_must_fail git config --file - test.one
error: relative config includes must come from files
fatal: bad config line 1 in standard input
ok 17 - relative includes from stdin line fail
expecting success of 1305.18 'conditional include, both unanchored':
git init foo &&
(
cd foo &&
echo "[includeIf \"gitdir:foo/\"]path=bar" >>.git/config &&
echo "[test]one=1" >.git/bar &&
echo 1 >expect &&
git config test.one >actual &&
test_cmp expect actual
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1305-config-include/foo/.git/
ok 18 - conditional include, both unanchored
expecting success of 1305.19 'conditional include, $HOME expansion':
(
cd foo &&
echo "[includeIf \"gitdir:~/foo/\"]path=bar2" >>.git/config &&
echo "[test]two=2" >.git/bar2 &&
echo 2 >expect &&
git config test.two >actual &&
test_cmp expect actual
)
ok 19 - conditional include, $HOME expansion
expecting success of 1305.20 'conditional include, full pattern':
(
cd foo &&
echo "[includeIf \"gitdir:**/foo/**\"]path=bar3" >>.git/config &&
echo "[test]three=3" >.git/bar3 &&
echo 3 >expect &&
git config test.three >actual &&
test_cmp expect actual
)
ok 20 - conditional include, full pattern
expecting success of 1305.21 'conditional include, relative path':
echo "[includeIf \"gitdir:./foo/.git\"]path=bar4" >>.gitconfig &&
echo "[test]four=4" >bar4 &&
(
cd foo &&
echo 4 >expect &&
git config test.four >actual &&
test_cmp expect actual
)
ok 21 - conditional include, relative path
expecting success of 1305.22 'conditional include, both unanchored, icase':
(
cd foo &&
echo "[includeIf \"gitdir/i:FOO/\"]path=bar5" >>.git/config &&
echo "[test]five=5" >.git/bar5 &&
echo 5 >expect &&
git config test.five >actual &&
test_cmp expect actual
)
ok 22 - conditional include, both unanchored, icase
expecting success of 1305.23 'conditional include, early config reading':
(
cd foo &&
echo "[includeIf \"gitdir:foo/\"]path=bar6" >>.git/config &&
echo "[test]six=6" >.git/bar6 &&
echo 6 >expect &&
test-tool config read_early_config test.six >actual &&
test_cmp expect actual
)
ok 23 - conditional include, early config reading
expecting success of 1305.24 'conditional include with /**/':
REPO=foo/bar/repo &&
git init $REPO &&
cat >>$REPO/.git/config <<-\EOF &&
[includeIf "gitdir:**/foo/**/bar/**"]
path=bar7
EOF
echo "[test]seven=7" >$REPO/.git/bar7 &&
echo 7 >expect &&
git -C $REPO config test.seven >actual &&
test_cmp expect actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1305-config-include/foo/bar/repo/.git/
ok 24 - conditional include with /**/
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
expecting success of 1305.25 'conditional include, set up symlinked $HOME':
mkdir real-home &&
ln -s real-home home &&
(
HOME="$TRASH_DIRECTORY/home" &&
export HOME &&
cd "$HOME" &&
git init foo &&
cd foo &&
mkdir sub
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1305-config-include/real-home/foo/.git/
ok 25 - conditional include, set up symlinked $HOME
expecting success of 1305.26 'conditional include, $HOME expansion with symlinks':
(
HOME="$TRASH_DIRECTORY/home" &&
export HOME &&
cd "$HOME"/foo &&
echo "[includeIf \"gitdir:~/foo/\"]path=bar2" >>.git/config &&
echo "[test]two=2" >.git/bar2 &&
echo 2 >expect &&
force_setup_explicit_git_dir &&
git -C sub config test.two >actual &&
test_cmp expect actual
)
ok 26 - conditional include, $HOME expansion with symlinks
expecting success of 1305.27 'conditional include, relative path with symlinks':
echo "[includeIf \"gitdir:./foo/.git\"]path=bar4" >home/.gitconfig &&
echo "[test]four=4" >home/bar4 &&
(
HOME="$TRASH_DIRECTORY/home" &&
export HOME &&
cd "$HOME"/foo &&
echo 4 >expect &&
force_setup_explicit_git_dir &&
git -C sub config test.four >actual &&
test_cmp expect actual
)
ok 27 - conditional include, relative path with symlinks
expecting success of 1305.28 'conditional include, gitdir matching symlink':
ln -s foo bar &&
(
cd bar &&
echo "[includeIf \"gitdir:bar/\"]path=bar7" >>.git/config &&
echo "[test]seven=7" >.git/bar7 &&
echo 7 >expect &&
git config test.seven >actual &&
test_cmp expect actual
)
ok 28 - conditional include, gitdir matching symlink
expecting success of 1305.29 'conditional include, gitdir matching symlink, icase':
(
cd bar &&
echo "[includeIf \"gitdir/i:BAR/\"]path=bar8" >>.git/config &&
echo "[test]eight=8" >.git/bar8 &&
echo 8 >expect &&
git config test.eight >actual &&
test_cmp expect actual
)
ok 29 - conditional include, gitdir matching symlink, icase
expecting success of 1305.30 'conditional include, onbranch':
echo "[includeIf \"onbranch:foo-branch\"]path=bar9" >>.git/config &&
echo "[test]nine=9" >.git/bar9 &&
git checkout -b main &&
test_must_fail git config test.nine &&
git checkout -b foo-branch &&
echo 9 >expect &&
git config test.nine >actual &&
test_cmp expect actual
Switched to a new branch 'main'
Switched to a new branch 'foo-branch'
ok 30 - conditional include, onbranch
expecting success of 1305.31 'conditional include, onbranch, wildcard':
echo "[includeIf \"onbranch:?oo-*/**\"]path=bar10" >>.git/config &&
echo "[test]ten=10" >.git/bar10 &&
git checkout -b not-foo-branch/a &&
test_must_fail git config test.ten &&
echo 10 >expect &&
git checkout -b foo-branch/a/b/c &&
git config test.ten >actual &&
test_cmp expect actual &&
git checkout -b moo-bar/a &&
git config test.ten >actual &&
test_cmp expect actual
Switched to a new branch 'not-foo-branch/a'
Switched to a new branch 'foo-branch/a/b/c'
Switched to a new branch 'moo-bar/a'
ok 31 - conditional include, onbranch, wildcard
expecting success of 1305.32 'conditional include, onbranch, implicit /** for /':
echo "[includeIf \"onbranch:foo-dir/\"]path=bar11" >>.git/config &&
echo "[test]eleven=11" >.git/bar11 &&
git checkout -b not-foo-dir/a &&
test_must_fail git config test.eleven &&
echo 11 >expect &&
git checkout -b foo-dir/a/b/c &&
git config test.eleven >actual &&
test_cmp expect actual
Switched to a new branch 'not-foo-dir/a'
Switched to a new branch 'foo-dir/a/b/c'
ok 32 - conditional include, onbranch, implicit /** for /
expecting success of 1305.33 'include cycles are detected':
git init --bare cycle &&
git -C cycle config include.path cycle &&
git config -f cycle/cycle include.path config &&
test_must_fail git -C cycle config --get-all test.value 2>stderr &&
grep "exceeded maximum include depth" stderr
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1305-config-include/cycle/
fatal: exceeded maximum include depth (10) while including
ok 33 - include cycles are detected
# passed all 33 test(s)
1..33
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1306-xdg-files.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1306-xdg-files/.git/
expecting success of 1306.1 'read config: xdg file exists and ~/.gitconfig doesn't':
mkdir -p .config/git &&
echo "[alias]" >.config/git/config &&
echo " myalias = !echo in_config" >>.config/git/config &&
echo in_config >expected &&
git myalias >actual &&
test_cmp expected actual
ok 1 - read config: xdg file exists and ~/.gitconfig doesn't
expecting success of 1306.2 'read config: xdg file exists and ~/.gitconfig exists':
>.gitconfig &&
echo "[alias]" >.gitconfig &&
echo " myalias = !echo in_gitconfig" >>.gitconfig &&
echo in_gitconfig >expected &&
git myalias >actual &&
test_cmp expected actual
ok 2 - read config: xdg file exists and ~/.gitconfig exists
expecting success of 1306.3 'read with --get: xdg file exists and ~/.gitconfig doesn't':
rm .gitconfig &&
echo "[user]" >.config/git/config &&
echo " name = read_config" >>.config/git/config &&
echo read_config >expected &&
git config --get user.name >actual &&
test_cmp expected actual
ok 3 - read with --get: xdg file exists and ~/.gitconfig doesn't
expecting success of 1306.4 '"$XDG_CONFIG_HOME overrides $HOME/.config/git':
mkdir -p "$HOME"/xdg/git &&
echo "[user]name = in_xdg" >"$HOME"/xdg/git/config &&
echo in_xdg >expected &&
XDG_CONFIG_HOME="$HOME"/xdg git config --get-all user.name >actual &&
test_cmp expected actual
ok 4 - "$XDG_CONFIG_HOME overrides $HOME/.config/git
expecting success of 1306.5 'read with --get: xdg file exists and ~/.gitconfig exists':
>.gitconfig &&
echo "[user]" >.gitconfig &&
echo " name = read_gitconfig" >>.gitconfig &&
echo read_gitconfig >expected &&
git config --get user.name >actual &&
test_cmp expected actual
ok 5 - read with --get: xdg file exists and ~/.gitconfig exists
expecting success of 1306.6 'read with --list: xdg file exists and ~/.gitconfig doesn't':
rm .gitconfig &&
echo user.name=read_config >expected &&
git config --global --list >actual &&
test_cmp expected actual
ok 6 - read with --list: xdg file exists and ~/.gitconfig doesn't
expecting success of 1306.7 'read with --list: xdg file exists and ~/.gitconfig exists':
>.gitconfig &&
echo "[user]" >.gitconfig &&
echo " name = read_gitconfig" >>.gitconfig &&
echo user.name=read_gitconfig >expected &&
git config --global --list >actual &&
test_cmp expected actual
ok 7 - read with --list: xdg file exists and ~/.gitconfig exists
expecting success of 1306.8 'Setup':
git init git &&
cd git &&
echo foo >to_be_excluded
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1306-xdg-files/git/.git/
ok 8 - Setup
expecting success of 1306.9 'Exclusion of a file in the XDG ignore file':
mkdir -p "$HOME"/.config/git/ &&
echo to_be_excluded >"$HOME"/.config/git/ignore &&
test_must_fail git add to_be_excluded
The following paths are ignored by one of your .gitignore files:
to_be_excluded
hint: Use -f if you really want to add them.
hint: Turn this message off by running
hint: "git config advice.addIgnoredFile false"
ok 9 - Exclusion of a file in the XDG ignore file
expecting success of 1306.10 '$XDG_CONFIG_HOME overrides $HOME/.config/git/ignore':
mkdir -p "$HOME"/xdg/git &&
echo content >excluded_by_xdg_only &&
echo excluded_by_xdg_only >"$HOME"/xdg/git/ignore &&
test_when_finished "git read-tree --empty" &&
(XDG_CONFIG_HOME="$HOME/xdg" &&
export XDG_CONFIG_HOME &&
git add to_be_excluded &&
test_must_fail git add excluded_by_xdg_only
)
The following paths are ignored by one of your .gitignore files:
excluded_by_xdg_only
hint: Use -f if you really want to add them.
hint: Turn this message off by running
hint: "git config advice.addIgnoredFile false"
ok 10 - $XDG_CONFIG_HOME overrides $HOME/.config/git/ignore
expecting success of 1306.11 'Exclusion in both XDG and local ignore files':
echo to_be_excluded >.gitignore &&
test_must_fail git add to_be_excluded
The following paths are ignored by one of your .gitignore files:
to_be_excluded
hint: Use -f if you really want to add them.
hint: Turn this message off by running
hint: "git config advice.addIgnoredFile false"
ok 11 - Exclusion in both XDG and local ignore files
expecting success of 1306.12 'Exclusion in a non-XDG global ignore file':
rm .gitignore &&
echo >"$HOME"/.config/git/ignore &&
echo to_be_excluded >"$HOME"/my_gitignore &&
git config core.excludesfile "$HOME"/my_gitignore &&
test_must_fail git add to_be_excluded
The following paths are ignored by one of your .gitignore files:
to_be_excluded
hint: Use -f if you really want to add them.
hint: Turn this message off by running
hint: "git config advice.addIgnoredFile false"
ok 12 - Exclusion in a non-XDG global ignore file
expecting success of 1306.13 'Checking XDG ignore file when HOME is unset':
(sane_unset HOME &&
git config --unset core.excludesfile &&
git ls-files --exclude-standard --ignored --others >actual) &&
test_must_be_empty actual
ok 13 - Checking XDG ignore file when HOME is unset
expecting success of 1306.14 'Checking attributes in the XDG attributes file':
echo foo >f &&
git check-attr -a f >actual &&
test_line_count -eq 0 actual &&
echo "f attr_f" >"$HOME"/.config/git/attributes &&
echo "f: attr_f: set" >expected &&
git check-attr -a f >actual &&
test_cmp expected actual
ok 14 - Checking attributes in the XDG attributes file
expecting success of 1306.15 'Checking XDG attributes when HOME is unset':
(sane_unset HOME &&
git check-attr -a f >actual) &&
test_must_be_empty actual
ok 15 - Checking XDG attributes when HOME is unset
expecting success of 1306.16 '$XDG_CONFIG_HOME overrides $HOME/.config/git/attributes':
mkdir -p "$HOME"/xdg/git &&
echo "f attr_f=xdg" >"$HOME"/xdg/git/attributes &&
echo "f: attr_f: xdg" >expected &&
XDG_CONFIG_HOME="$HOME/xdg" git check-attr -a f >actual &&
test_cmp expected actual
ok 16 - $XDG_CONFIG_HOME overrides $HOME/.config/git/attributes
expecting success of 1306.17 'Checking attributes in both XDG and local attributes files':
echo "f -attr_f" >.gitattributes &&
echo "f: attr_f: unset" >expected &&
git check-attr -a f >actual &&
test_cmp expected actual
ok 17 - Checking attributes in both XDG and local attributes files
expecting success of 1306.18 'Checking attributes in a non-XDG global attributes file':
rm -f .gitattributes &&
echo "f attr_f=test" >"$HOME"/my_gitattributes &&
git config core.attributesfile "$HOME"/my_gitattributes &&
echo "f: attr_f: test" >expected &&
git check-attr -a f >actual &&
test_cmp expected actual
ok 18 - Checking attributes in a non-XDG global attributes file
expecting success of 1306.19 'write: xdg file exists and ~/.gitconfig doesn't':
mkdir -p "$HOME"/.config/git &&
>"$HOME"/.config/git/config &&
rm -f "$HOME"/.gitconfig &&
git config --global user.name "write_config" &&
echo "[user]" >expected &&
echo " name = write_config" >>expected &&
test_cmp expected "$HOME"/.config/git/config
ok 19 - write: xdg file exists and ~/.gitconfig doesn't
expecting success of 1306.20 'write: xdg file exists and ~/.gitconfig exists':
>"$HOME"/.gitconfig &&
git config --global user.name "write_gitconfig" &&
echo "[user]" >expected &&
echo " name = write_gitconfig" >>expected &&
test_cmp expected "$HOME"/.gitconfig
ok 20 - write: xdg file exists and ~/.gitconfig exists
expecting success of 1306.21 'write: ~/.config/git/ exists and config file doesn't':
rm -f "$HOME"/.gitconfig &&
rm -f "$HOME"/.config/git/config &&
git config --global user.name "write_gitconfig" &&
echo "[user]" >expected &&
echo " name = write_gitconfig" >>expected &&
test_cmp expected "$HOME"/.gitconfig
ok 21 - write: ~/.config/git/ exists and config file doesn't
# passed all 21 test(s)
1..21
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1307-config-blob.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1307-config-blob/.git/
expecting success of 1307.1 'create config blob':
cat >config <<-\EOF &&
[some]
value = 1
EOF
git add config &&
git commit -m foo
[master (root-commit) 5571afa] foo
Author: A U Thor <author@example.com>
1 file changed, 2 insertions(+)
create mode 100644 config
ok 1 - create config blob
expecting success of 1307.2 'list config blob contents':
echo some.value=1 >expect &&
git config --blob=HEAD:config --list >actual &&
test_cmp expect actual
ok 2 - list config blob contents
expecting success of 1307.3 'fetch value from blob':
echo true >expect &&
git config --blob=HEAD:config --bool some.value >actual &&
test_cmp expect actual
ok 3 - fetch value from blob
expecting success of 1307.4 'reading non-existing value from blob is an error':
test_must_fail git config --blob=HEAD:config non.existing
ok 4 - reading non-existing value from blob is an error
expecting success of 1307.5 'reading from blob and file is an error':
test_must_fail git config --blob=HEAD:config --system --list
error: only one config file at a time
usage: git config [<options>]
Config file location
--global use global config file
--system use system config file
--local use repository config file
--worktree use per-worktree config file
-f, --file <file> use given config file
--blob <blob-id> read config from given blob object
Action
--get get value: name [value-pattern]
--get-all get all values: key [value-pattern]
--get-regexp get values for regexp: name-regex [value-pattern]
--get-urlmatch get value specific for the URL: section[.var] URL
--replace-all replace all matching variables: name value [value-pattern]
--add add a new variable: name value
--unset remove a variable: name [value-pattern]
--unset-all remove all matches: name [value-pattern]
--rename-section rename section: old-name new-name
--remove-section remove a section: name
-l, --list list all
--fixed-value use string equality when comparing values to 'value-pattern'
-e, --edit open an editor
--get-color find the color configured: slot [default]
--get-colorbool find the color setting: slot [stdout-is-tty]
Type
-t, --type <type> value is given this type
--bool value is "true" or "false"
--int value is decimal number
--bool-or-int value is --bool or --int
--bool-or-str value is --bool or string
--path value is a path (file or directory name)
--expiry-date value is an expiry date
Other
-z, --null terminate values with NUL byte
--name-only show variable names only
--includes respect include directives on lookup
--show-origin show origin of config (file, standard input, blob, command line)
--show-scope show scope of config (worktree, local, global, system, command)
--default <value> with --get, use default value when missing entry
ok 5 - reading from blob and file is an error
expecting success of 1307.6 'reading from missing ref is an error':
test_must_fail git config --blob=HEAD:doesnotexist --list
error: unable to resolve config blob 'HEAD:doesnotexist'
fatal: error processing config file(s)
ok 6 - reading from missing ref is an error
expecting success of 1307.7 'reading from non-blob is an error':
test_must_fail git config --blob=HEAD --list
error: reference 'HEAD' does not point to a blob
fatal: error processing config file(s)
ok 7 - reading from non-blob is an error
expecting success of 1307.8 'setting a value in a blob is an error':
test_must_fail git config --blob=HEAD:config some.value foo
fatal: writing config blobs is not supported
ok 8 - setting a value in a blob is an error
expecting success of 1307.9 'deleting a value in a blob is an error':
test_must_fail git config --blob=HEAD:config --unset some.value
fatal: writing config blobs is not supported
ok 9 - deleting a value in a blob is an error
expecting success of 1307.10 'editing a blob is an error':
test_must_fail git config --blob=HEAD:config --edit
fatal: editing blobs is not supported
ok 10 - editing a blob is an error
expecting success of 1307.11 'parse errors in blobs are properly attributed':
cat >config <<-\EOF &&
[some]
value = "
EOF
git add config &&
git commit -m broken &&
test_must_fail git config --blob=HEAD:config some.value 2>err &&
test_i18ngrep "HEAD:config" err
[master 91b4611] broken
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
error: bad config line 2 in blob HEAD:config
ok 11 - parse errors in blobs are properly attributed
expecting success of 1307.12 'can parse blob ending with CR':
test_commit --printf CR config "[some]key = value\\r" &&
echo value >expect &&
git config --blob=HEAD:config some.key >actual &&
test_cmp expect actual
[master f02e06a] CR
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 2 deletions(-)
ok 12 - can parse blob ending with CR
expecting success of 1307.13 'config --blob outside of a repository is an error':
nongit test_must_fail git config --blob=foo --list
fatal: --blob can only be used inside a git repository
ok 13 - config --blob outside of a repository is an error
# passed all 13 test(s)
1..13
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1308-config-set.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1308-config-set/.git/
expecting success of 1308.1 'setup default config':
cat >.git/config <<-\EOF
[case]
penguin = very blue
Movie = BadPhysics
UPPERCASE = true
MixedCase = true
my =
foo
baz = sam
[Cores]
WhatEver = Second
baz = bar
[cores]
baz = bat
[CORES]
baz = ball
[my "Foo bAr"]
hi = mixed-case
[my "FOO BAR"]
hi = upper-case
[my "foo bar"]
hi = lower-case
[case]
baz = bat
baz = hask
[lamb]
chop = 65
head = none
[goat]
legs = 4
head = true
skin = false
nose = 1
horns
[value]
less
EOF
ok 1 - setup default config
expecting success of 1308.2 'get value for a simple key':
check_config get_value case.penguin "very blue"
ok 2 - get value for a simple key
expecting success of 1308.3 'get value for a key with value as an empty string':
check_config get_value case.my ""
ok 3 - get value for a key with value as an empty string
expecting success of 1308.4 'get value for a key with value as NULL':
check_config get_value case.foo "(NULL)"
ok 4 - get value for a key with value as NULL
expecting success of 1308.5 'upper case key':
check_config get_value case.UPPERCASE "true" &&
check_config get_value case.uppercase "true"
ok 5 - upper case key
expecting success of 1308.6 'mixed case key':
check_config get_value case.MixedCase "true" &&
check_config get_value case.MIXEDCASE "true" &&
check_config get_value case.mixedcase "true"
ok 6 - mixed case key
expecting success of 1308.7 'key and value with mixed case':
check_config get_value case.Movie "BadPhysics"
ok 7 - key and value with mixed case
expecting success of 1308.8 'key with case sensitive subsection':
check_config get_value "my.Foo bAr.hi" "mixed-case" &&
check_config get_value "my.FOO BAR.hi" "upper-case" &&
check_config get_value "my.foo bar.hi" "lower-case"
ok 8 - key with case sensitive subsection
expecting success of 1308.9 'key with case insensitive section header':
check_config get_value cores.baz "ball" &&
check_config get_value Cores.baz "ball" &&
check_config get_value CORES.baz "ball" &&
check_config get_value coreS.baz "ball"
ok 9 - key with case insensitive section header
expecting success of 1308.10 'key with case insensitive section header & variable':
check_config get_value CORES.BAZ "ball" &&
check_config get_value cores.baz "ball" &&
check_config get_value cores.BaZ "ball" &&
check_config get_value cOreS.bAz "ball"
ok 10 - key with case insensitive section header & variable
expecting success of 1308.11 'find value with misspelled key':
check_config expect_code 1 get_value "my.fOo Bar.hi" "Value not found for \"my.fOo Bar.hi\""
ok 11 - find value with misspelled key
expecting success of 1308.12 'find value with the highest priority':
check_config get_value case.baz "hask"
ok 12 - find value with the highest priority
expecting success of 1308.13 'return value for an existing key':
test-tool config get lamb.chop >out 2>err &&
test_must_be_empty out &&
test_must_be_empty err
ok 13 - return value for an existing key
expecting success of 1308.14 'return value for value-less key':
test-tool config get value.less >out 2>err &&
test_must_be_empty out &&
test_must_be_empty err
ok 14 - return value for value-less key
expecting success of 1308.15 'return value for a missing key':
cat >expect <<-\EOF &&
Value not found for "missing.key"
EOF
test_expect_code 1 test-tool config get missing.key >actual 2>err &&
test_cmp actual expect &&
test_must_be_empty err
ok 15 - return value for a missing key
expecting success of 1308.16 'return value for a bad key: CONFIG_INVALID_KEY':
cat >expect <<-\EOF &&
Key "fails.iskeychar.-" is invalid
EOF
test_expect_code 1 test-tool config get fails.iskeychar.- >actual 2>err &&
test_cmp actual expect &&
test_must_be_empty out
ok 16 - return value for a bad key: CONFIG_INVALID_KEY
expecting success of 1308.17 'return value for a bad key: CONFIG_NO_SECTION_OR_NAME':
cat >expect <<-\EOF &&
Key "keynosection" has no section
EOF
test_expect_code 1 test-tool config get keynosection >actual 2>err &&
test_cmp actual expect &&
test_must_be_empty out
ok 17 - return value for a bad key: CONFIG_NO_SECTION_OR_NAME
expecting success of 1308.18 'find integer value for a key':
check_config get_int lamb.chop 65
ok 18 - find integer value for a key
expecting success of 1308.19 'parse integer value during iteration':
check_config git_config_int lamb.chop 65
ok 19 - parse integer value during iteration
expecting success of 1308.20 'find string value for a key':
check_config get_string case.baz hask &&
check_config expect_code 1 get_string case.ba "Value not found for \"case.ba\""
ok 20 - find string value for a key
expecting success of 1308.21 'check line error when NULL string is queried':
test_expect_code 128 test-tool config get_string case.foo 2>result &&
test_i18ngrep "fatal: .*case\.foo.*\.git/config.*line 7" result
fatal: bad config variable 'case.foo' in file '.git/config' at line 7
ok 21 - check line error when NULL string is queried
expecting success of 1308.22 'find integer if value is non parse-able':
check_config expect_code 128 get_int lamb.head
fatal: bad numeric config value 'none' for 'lamb.head' in file .git/config: invalid unit
ok 22 - find integer if value is non parse-able
expecting success of 1308.23 'non parse-able integer value during iteration':
check_config expect_code 128 git_config_int lamb.head 2>result &&
grep "fatal: bad numeric config value .* in file \.git/config" result
fatal: bad numeric config value 'none' for 'none' in file .git/config: invalid unit
ok 23 - non parse-able integer value during iteration
expecting success of 1308.24 'find bool value for the entered key':
check_config get_bool goat.head 1 &&
check_config get_bool goat.skin 0 &&
check_config get_bool goat.nose 1 &&
check_config get_bool goat.horns 1 &&
check_config get_bool goat.legs 1
ok 24 - find bool value for the entered key
expecting success of 1308.25 'find multiple values':
check_config get_value_multi case.baz sam bat hask
ok 25 - find multiple values
expecting success of 1308.26 'get_value_multi: NULL value in config':
config="$file" &&
if test -z "$config"
then
config=.git/config &&
test_when_finished "mv $config.old $config" &&
mv "$config" "$config".old
fi &&
# Value-less in the middle of a list
cat >"$config" <<-\EOF &&
[a]key=x
[a]key
[a]key=y
EOF
case "$op" in
*_multi)
cat >expect <<-\EOF
x
(NULL)
y
EOF
;;
*)
cat >expect <<-\EOF
y
EOF
;;
esac &&
test-tool config "$op" a.key $file >actual &&
test_cmp expect actual &&
# Value-less at the end of a least
cat >"$config" <<-\EOF &&
[a]key=x
[a]key=y
[a]key
EOF
case "$op" in
*_multi)
cat >expect <<-\EOF
x
y
(NULL)
EOF
;;
*)
cat >expect <<-\EOF
(NULL)
EOF
;;
esac &&
test-tool config "$op" a.key $file >actual &&
test_cmp expect actual
ok 26 - get_value_multi: NULL value in config
expecting success of 1308.27 'configset_get_value: NULL value in config in my.config':
config="$file" &&
if test -z "$config"
then
config=.git/config &&
test_when_finished "mv $config.old $config" &&
mv "$config" "$config".old
fi &&
# Value-less in the middle of a list
cat >"$config" <<-\EOF &&
[a]key=x
[a]key
[a]key=y
EOF
case "$op" in
*_multi)
cat >expect <<-\EOF
x
(NULL)
y
EOF
;;
*)
cat >expect <<-\EOF
y
EOF
;;
esac &&
test-tool config "$op" a.key $file >actual &&
test_cmp expect actual &&
# Value-less at the end of a least
cat >"$config" <<-\EOF &&
[a]key=x
[a]key=y
[a]key
EOF
case "$op" in
*_multi)
cat >expect <<-\EOF
x
y
(NULL)
EOF
;;
*)
cat >expect <<-\EOF
(NULL)
EOF
;;
esac &&
test-tool config "$op" a.key $file >actual &&
test_cmp expect actual
ok 27 - configset_get_value: NULL value in config in my.config
expecting success of 1308.28 'configset_get_value_multi: NULL value in config in my.config':
config="$file" &&
if test -z "$config"
then
config=.git/config &&
test_when_finished "mv $config.old $config" &&
mv "$config" "$config".old
fi &&
# Value-less in the middle of a list
cat >"$config" <<-\EOF &&
[a]key=x
[a]key
[a]key=y
EOF
case "$op" in
*_multi)
cat >expect <<-\EOF
x
(NULL)
y
EOF
;;
*)
cat >expect <<-\EOF
y
EOF
;;
esac &&
test-tool config "$op" a.key $file >actual &&
test_cmp expect actual &&
# Value-less at the end of a least
cat >"$config" <<-\EOF &&
[a]key=x
[a]key=y
[a]key
EOF
case "$op" in
*_multi)
cat >expect <<-\EOF
x
y
(NULL)
EOF
;;
*)
cat >expect <<-\EOF
(NULL)
EOF
;;
esac &&
test-tool config "$op" a.key $file >actual &&
test_cmp expect actual
ok 28 - configset_get_value_multi: NULL value in config in my.config
expecting success of 1308.29 'find value from a configset':
cat >config2 <<-\EOF &&
[case]
baz = lama
[my]
new = silk
[case]
baz = ball
EOF
echo silk >expect &&
test-tool config configset_get_value my.new config2 .git/config >actual &&
test_cmp expect actual
ok 29 - find value from a configset
expecting success of 1308.30 'find value with highest priority from a configset':
echo hask >expect &&
test-tool config configset_get_value case.baz config2 .git/config >actual &&
test_cmp expect actual
ok 30 - find value with highest priority from a configset
expecting success of 1308.31 'find value_list for a key from a configset':
cat >expect <<-\EOF &&
lama
ball
sam
bat
hask
EOF
test-tool config configset_get_value_multi case.baz config2 .git/config >actual &&
test_cmp expect actual
ok 31 - find value_list for a key from a configset
expecting success of 1308.32 'proper error on non-existent files':
echo "Error (-1) reading configuration file non-existent-file." >expect &&
test_expect_code 2 test-tool config configset_get_value foo.bar non-existent-file 2>actual &&
test_cmp expect actual
ok 32 - proper error on non-existent files
expecting success of 1308.33 'proper error on directory "files"':
echo "Error (-1) reading configuration file a-directory." >expect &&
mkdir a-directory &&
test_expect_code 2 test-tool config configset_get_value foo.bar a-directory 2>output &&
grep "^warning:" output &&
grep "^Error" output >actual &&
test_cmp expect actual
warning: unable to access 'a-directory': Is a directory
ok 33 - proper error on directory "files"
checking prerequisite: SANITY
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SANITY" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SANITY" &&
mkdir SANETESTD.1 SANETESTD.2 &&
chmod +w SANETESTD.1 SANETESTD.2 &&
>SANETESTD.1/x 2>SANETESTD.2/x &&
chmod -w SANETESTD.1 &&
chmod -r SANETESTD.1/x &&
chmod -rx SANETESTD.2 ||
BUG "cannot prepare SANETESTD"
! test -r SANETESTD.1/x &&
! rm SANETESTD.1/x && ! test -f SANETESTD.2/x
status=$?
chmod +rwx SANETESTD.1 SANETESTD.2 &&
rm -rf SANETESTD.1 SANETESTD.2 ||
BUG "cannot clean SANETESTD"
return $status
)
rm: cannot remove 'SANETESTD.1/x': Permission denied
prerequisite SANITY ok
expecting success of 1308.34 'proper error on non-accessible files':
chmod -r .git/config &&
test_when_finished "chmod +r .git/config" &&
echo "Error (-1) reading configuration file .git/config." >expect &&
test_expect_code 2 test-tool config configset_get_value foo.bar .git/config 2>output &&
grep "^warning:" output &&
grep "^Error" output >actual &&
test_cmp expect actual
warning: unable to access '.git/config': Permission denied
warning: unable to access '.git/config': Permission denied
ok 34 - proper error on non-accessible files
expecting success of 1308.35 'proper error on error in default config files':
cp .git/config .git/config.old &&
test_when_finished "mv .git/config.old .git/config" &&
echo "[" >>.git/config &&
echo "fatal: bad config line 36 in file .git/config" >expect &&
test_expect_code 128 test-tool config get_value foo.bar 2>actual &&
test_cmp expect actual
ok 35 - proper error on error in default config files
expecting success of 1308.36 'proper error on error in custom config files':
echo "[" >>syntax-error &&
echo "fatal: bad config line 1 in file syntax-error" >expect &&
test_expect_code 128 test-tool config configset_get_value foo.bar syntax-error 2>actual &&
test_cmp expect actual
ok 36 - proper error on error in custom config files
expecting success of 1308.37 'check line errors for malformed values':
mv .git/config .git/config.old &&
test_when_finished "mv .git/config.old .git/config" &&
cat >.git/config <<-\EOF &&
[alias]
br
EOF
test_expect_code 128 git br 2>result &&
test_i18ngrep "missing value for .alias\.br" result &&
test_i18ngrep "fatal: .*\.git/config" result &&
test_i18ngrep "fatal: .*line 2" result
error: missing value for 'alias.br'
fatal: bad config line 2 in file .git/config
fatal: bad config line 2 in file .git/config
ok 37 - check line errors for malformed values
expecting success of 1308.38 'error on modifying repo config without repo':
nongit test_must_fail git config a.b c 2>err &&
test_i18ngrep "not in a git directory" err
fatal: not in a git directory
ok 38 - error on modifying repo config without repo
expecting success of 1308.39 'iteration shows correct origins':
printf "[ignore]\n\tthis = please\n[foo]bar = from-repo\n" >.git/config &&
printf "[foo]\n\tbar = from-home\n" >.gitconfig &&
if test_have_prereq MINGW
then
# Use Windows path (i.e. *not* $HOME)
HOME_GITCONFIG=$(pwd)/.gitconfig
else
# Do not get fooled by symbolic links, i.e. $HOME != $(pwd)
HOME_GITCONFIG=$HOME/.gitconfig
fi &&
cat >expect <<-EOF &&
key=foo.bar
value=from-home
origin=file
name=$HOME_GITCONFIG
lno=2
scope=global
key=ignore.this
value=please
origin=file
name=.git/config
lno=2
scope=local
key=foo.bar
value=from-repo
origin=file
name=.git/config
lno=3
scope=local
key=foo.bar
value=from-cmdline
origin=command line
name=
lno=-1
scope=command
EOF
GIT_CONFIG_PARAMETERS=$cmdline_config test-tool config iterate >actual &&
test_cmp expect actual
ok 39 - iteration shows correct origins
# passed all 39 test(s)
1..39
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1309-early-config.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1309-early-config/.git/
expecting success of 1309.1 'read early config':
test_config early.config correct &&
test-tool config read_early_config early.config >output &&
test correct = "$(cat output)"
ok 1 - read early config
expecting success of 1309.2 'in a sub-directory':
test_config early.config sub &&
mkdir -p sub &&
(
cd sub &&
test-tool config read_early_config early.config
) >output &&
test sub = "$(cat output)"
ok 2 - in a sub-directory
expecting success of 1309.3 'ceiling':
test_config early.config ceiling &&
mkdir -p sub &&
(
GIT_CEILING_DIRECTORIES="$PWD" &&
export GIT_CEILING_DIRECTORIES &&
cd sub &&
test-tool config read_early_config early.config
) >output &&
test_must_be_empty output
ok 3 - ceiling
expecting success of 1309.4 'ceiling #2':
mkdir -p xdg/git &&
git config -f xdg/git/config early.config xdg &&
test_config early.config ceiling &&
mkdir -p sub &&
(
XDG_CONFIG_HOME="$PWD"/xdg &&
GIT_CEILING_DIRECTORIES="$PWD" &&
export GIT_CEILING_DIRECTORIES XDG_CONFIG_HOME &&
cd sub &&
test-tool config read_early_config early.config
) >output &&
test xdg = "$(cat output)"
ok 4 - ceiling #2
expecting success of 1309.5 'read config file in right order':
echo "[test]source = home" >>.gitconfig &&
git init foo &&
(
cd foo &&
echo "[test]source = repo" >>.git/config &&
GIT_CONFIG_PARAMETERS=$cmdline_config test-tool config \
read_early_config test.source >actual &&
cat >expected <<-\EOF &&
home
repo
cmdline
EOF
test_cmp expected actual
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1309-early-config/foo/.git/
ok 5 - read config file in right order
expecting success of 1309.6 'ignore .git/ with incompatible repository version':
test_with_config "[core]repositoryformatversion = 999999" 2>err &&
test_i18ngrep "warning:.* Expected git repo version <= [1-9]" err
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1309-early-config/throwaway/.git/
warning: ignoring git dir '.git': Expected git repo version <= 1, found 999999
ok 6 - ignore .git/ with incompatible repository version
checking known breakage of 1309.7 'ignore .git/ with invalid repository version':
test_with_config "[core]repositoryformatversion = invalid"
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1309-early-config/throwaway/.git/
fatal: bad numeric config value 'invalid' for 'core.repositoryformatversion' in file .git/config: invalid unit
not ok 7 - ignore .git/ with invalid repository version # TODO known breakage
checking known breakage of 1309.8 'ignore .git/ with invalid config':
test_with_config "["
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1309-early-config/throwaway/.git/
fatal: bad config line 1 in file .git/config
not ok 8 - ignore .git/ with invalid config # TODO known breakage
expecting success of 1309.9 'early config and onbranch':
echo "[broken" >broken &&
test_with_config "[includeif \"onbranch:topic\"]path=../broken"
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1309-early-config/throwaway/.git/
ok 9 - early config and onbranch
expecting success of 1309.10 'onbranch config outside of git repo':
test_config_global includeIf.onbranch:topic.path non-existent &&
nongit git help
usage: git [-v | --version] [-h | --help] [-C <path>] [-c <name>=<value>]
[--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
[-p | --paginate | -P | --no-pager] [--no-replace-objects] [--bare]
[--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
[--config-env=<name>=<envvar>] <command> [<args>]
These are common Git commands used in various situations:
start a working area (see also: git help tutorial)
clone Clone a repository into a new directory
init Create an empty Git repository or reinitialize an existing one
work on the current change (see also: git help everyday)
add Add file contents to the index
mv Move or rename a file, a directory, or a symlink
restore Restore working tree files
rm Remove files from the working tree and from the index
examine the history and state (see also: git help revisions)
bisect Use binary search to find the commit that introduced a bug
diff Show changes between commits, commit and working tree, etc
grep Print lines matching a pattern
log Show commit logs
show Show various types of objects
status Show the working tree status
grow, mark and tweak your common history
branch List, create, or delete branches
commit Record changes to the repository
merge Join two or more development histories together
rebase Reapply commits on top of another base tip
reset Reset current HEAD to the specified state
switch Switch branches
tag Create, list, delete or verify a tag object signed with GPG
collaborate (see also: git help workflows)
fetch Download objects and refs from another repository
pull Fetch from and integrate with another repository or a local branch
push Update remote refs along with associated objects
'git help -a' and 'git help -g' list available subcommands and some
concept guides. See 'git help <command>' or 'git help <concept>'
to read about a specific subcommand or concept.
See 'git help git' for an overview of the system.
ok 10 - onbranch config outside of git repo
# still have 2 known breakage(s)
# passed all remaining 8 test(s)
1..10
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1310-config-default.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1310-config-default/.git/
expecting success of 1310.1 'uses --default when entry missing':
echo quux >expect &&
git config -f config --default=quux core.foo >actual &&
test_cmp expect actual
ok 1 - uses --default when entry missing
expecting success of 1310.2 'does not use --default when entry present':
echo bar >expect &&
git -c core.foo=bar config --default=baz core.foo >actual &&
test_cmp expect actual
ok 2 - does not use --default when entry present
expecting success of 1310.3 'canonicalizes --default with appropriate type':
echo true >expect &&
git config -f config --default=yes --bool core.foo >actual &&
test_cmp expect actual
ok 3 - canonicalizes --default with appropriate type
expecting success of 1310.4 'dies when --default cannot be parsed':
test_must_fail git config -f config --type=expiry-date --default=x --get \
not.a.section 2>error &&
test_i18ngrep "failed to format default config value" error
fatal: failed to format default config value: x
ok 4 - dies when --default cannot be parsed
expecting success of 1310.5 'does not allow --default without --get':
test_must_fail git config --default=quux --unset a.section >output 2>&1 &&
test_i18ngrep "\-\-default is only applicable to" output
error: --default is only applicable to --get
ok 5 - does not allow --default without --get
# passed all 5 test(s)
1..5
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1350-config-hooks-path.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1350-config-hooks-path/.git/
expecting success of 1350.1 'set up a pre-commit hook in core.hooksPath':
>actual &&
mkdir -p .git/custom-hooks &&
write_script .git/custom-hooks/pre-commit <<-\EOF &&
echo CUSTOM >>actual
EOF
test_hook --setup pre-commit <<-\EOF
echo NORMAL >>actual
EOF
ok 1 - set up a pre-commit hook in core.hooksPath
expecting success of 1350.2 'Check that various forms of specifying core.hooksPath work':
test_commit no_custom_hook &&
git config core.hooksPath .git/custom-hooks &&
test_commit have_custom_hook &&
git config core.hooksPath .git/custom-hooks/ &&
test_commit have_custom_hook_trailing_slash &&
git config core.hooksPath "$PWD/.git/custom-hooks" &&
test_commit have_custom_hook_abs_path &&
git config core.hooksPath "$PWD/.git/custom-hooks/" &&
test_commit have_custom_hook_abs_path_trailing_slash &&
cat >expect <<-\EOF &&
NORMAL
CUSTOM
CUSTOM
CUSTOM
CUSTOM
EOF
test_cmp expect actual
[master (root-commit) 51fec20] no_custom_hook
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 no_custom_hook.t
[master d6f765a] have_custom_hook
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 have_custom_hook.t
[master c8447a6] have_custom_hook_trailing_slash
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 have_custom_hook_trailing_slash.t
[master acc1a92] have_custom_hook_abs_path
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 have_custom_hook_abs_path.t
[master 3a47fb1] have_custom_hook_abs_path_trailing_slash
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 have_custom_hook_abs_path_trailing_slash.t
ok 2 - Check that various forms of specifying core.hooksPath work
expecting success of 1350.3 'git rev-parse --git-path hooks':
git config core.hooksPath .git/custom-hooks &&
git rev-parse --git-path hooks/abc >actual &&
test .git/custom-hooks/abc = "$(cat actual)"
ok 3 - git rev-parse --git-path hooks
# passed all 3 test(s)
1..3
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t0027-auto-crlf.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t0027-auto-crlf/.git/
expecting success of 0027.1 'ls-files --eol -o Text/Binary':
test_when_finished "rm expect actual TeBi_*" &&
STRT=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA &&
STR=$STRT$STRT$STRT$STRT &&
printf "${STR}BBB\001" >TeBi_127_S &&
printf "${STR}BBBB\001">TeBi_128_S &&
printf "${STR}BBB\032" >TeBi_127_E &&
printf "\032${STR}BBB" >TeBi_E_127 &&
printf "${STR}BBBB\000">TeBi_128_N &&
printf "${STR}BBB\012">TeBi_128_L &&
printf "${STR}BBB\015">TeBi_127_C &&
printf "${STR}BB\015\012" >TeBi_126_CL &&
printf "${STR}BB\015\012\015" >TeBi_126_CLC &&
sort <<-\EOF >expect &&
i/ w/-text TeBi_127_S
i/ w/none TeBi_128_S
i/ w/none TeBi_127_E
i/ w/-text TeBi_E_127
i/ w/-text TeBi_128_N
i/ w/lf TeBi_128_L
i/ w/-text TeBi_127_C
i/ w/crlf TeBi_126_CL
i/ w/-text TeBi_126_CLC
EOF
git ls-files --eol -o >tmp &&
sed -n -e "/TeBi_/{s!attr/[ ]*!!g
s! ! !g
s! *! !g
p
}" tmp | sort >actual &&
test_cmp expect actual
ok 1 - ls-files --eol -o Text/Binary
expecting success of 0027.2 'setup main':
echo >.gitattributes &&
git checkout -b main &&
git add .gitattributes &&
git commit -m "add .gitattributes" . &&
printf "\$Id: 0000000000000000000000000000000000000000 \$\nLINEONE\nLINETWO\nLINETHREE" >LF &&
printf "\$Id: 0000000000000000000000000000000000000000 \$\r\nLINEONE\r\nLINETWO\r\nLINETHREE" >CRLF &&
printf "\$Id: 0000000000000000000000000000000000000000 \$\nLINEONE\r\nLINETWO\nLINETHREE" >CRLF_mix_LF &&
printf "\$Id: 0000000000000000000000000000000000000000 \$\nLINEONE\nLINETWO\rLINETHREE" >LF_mix_CR &&
printf "\$Id: 0000000000000000000000000000000000000000 \$\r\nLINEONE\r\nLINETWO\rLINETHREE" >CRLF_mix_CR &&
printf "\$Id: 0000000000000000000000000000000000000000 \$\r\nLINEONEQ\r\nLINETWO\r\nLINETHREE" | q_to_nul >CRLF_nul &&
printf "\$Id: 0000000000000000000000000000000000000000 \$\nLINEONEQ\nLINETWO\nLINETHREE" | q_to_nul >LF_nul &&
create_NNO_MIX_files &&
git -c core.autocrlf=false add NNO_*.txt MIX_*.txt &&
git commit -m "mixed line endings" &&
test_tick
Switched to a new branch 'main'
[main (root-commit) 92d411f] add .gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 .gitattributes
[main 28e6523] mixed line endings
Author: A U Thor <author@example.com>
360 files changed, 1260 insertions(+)
create mode 100644 MIX_attr_-text_aeol__false_CRLF.txt
create mode 100644 MIX_attr_-text_aeol__false_CRLF_mix_LF.txt
create mode 100644 MIX_attr_-text_aeol__false_CRLF_nul.txt
create mode 100644 MIX_attr_-text_aeol__false_LF.txt
create mode 100644 MIX_attr_-text_aeol__false_LF_mix_CR.txt
create mode 100644 MIX_attr_-text_aeol__input_CRLF.txt
create mode 100644 MIX_attr_-text_aeol__input_CRLF_mix_LF.txt
create mode 100644 MIX_attr_-text_aeol__input_CRLF_nul.txt
create mode 100644 MIX_attr_-text_aeol__input_LF.txt
create mode 100644 MIX_attr_-text_aeol__input_LF_mix_CR.txt
create mode 100644 MIX_attr_-text_aeol__true_CRLF.txt
create mode 100644 MIX_attr_-text_aeol__true_CRLF_mix_LF.txt
create mode 100644 MIX_attr_-text_aeol__true_CRLF_nul.txt
create mode 100644 MIX_attr_-text_aeol__true_LF.txt
create mode 100644 MIX_attr_-text_aeol__true_LF_mix_CR.txt
create mode 100644 MIX_attr_-text_aeol_crlf_false_CRLF.txt
create mode 100644 MIX_attr_-text_aeol_crlf_false_CRLF_mix_LF.txt
create mode 100644 MIX_attr_-text_aeol_crlf_false_CRLF_nul.txt
create mode 100644 MIX_attr_-text_aeol_crlf_false_LF.txt
create mode 100644 MIX_attr_-text_aeol_crlf_false_LF_mix_CR.txt
create mode 100644 MIX_attr_-text_aeol_crlf_input_CRLF.txt
create mode 100644 MIX_attr_-text_aeol_crlf_input_CRLF_mix_LF.txt
create mode 100644 MIX_attr_-text_aeol_crlf_input_CRLF_nul.txt
create mode 100644 MIX_attr_-text_aeol_crlf_input_LF.txt
create mode 100644 MIX_attr_-text_aeol_crlf_input_LF_mix_CR.txt
create mode 100644 MIX_attr_-text_aeol_crlf_true_CRLF.txt
create mode 100644 MIX_attr_-text_aeol_crlf_true_CRLF_mix_LF.txt
create mode 100644 MIX_attr_-text_aeol_crlf_true_CRLF_nul.txt
create mode 100644 MIX_attr_-text_aeol_crlf_true_LF.txt
create mode 100644 MIX_attr_-text_aeol_crlf_true_LF_mix_CR.txt
create mode 100644 MIX_attr_-text_aeol_lf_false_CRLF.txt
create mode 100644 MIX_attr_-text_aeol_lf_false_CRLF_mix_LF.txt
create mode 100644 MIX_attr_-text_aeol_lf_false_CRLF_nul.txt
create mode 100644 MIX_attr_-text_aeol_lf_false_LF.txt
create mode 100644 MIX_attr_-text_aeol_lf_false_LF_mix_CR.txt
create mode 100644 MIX_attr_-text_aeol_lf_input_CRLF.txt
create mode 100644 MIX_attr_-text_aeol_lf_input_CRLF_mix_LF.txt
create mode 100644 MIX_attr_-text_aeol_lf_input_CRLF_nul.txt
create mode 100644 MIX_attr_-text_aeol_lf_input_LF.txt
create mode 100644 MIX_attr_-text_aeol_lf_input_LF_mix_CR.txt
create mode 100644 MIX_attr_-text_aeol_lf_true_CRLF.txt
create mode 100644 MIX_attr_-text_aeol_lf_true_CRLF_mix_LF.txt
create mode 100644 MIX_attr_-text_aeol_lf_true_CRLF_nul.txt
create mode 100644 MIX_attr_-text_aeol_lf_true_LF.txt
create mode 100644 MIX_attr_-text_aeol_lf_true_LF_mix_CR.txt
create mode 100644 MIX_attr__aeol__false_CRLF.txt
create mode 100644 MIX_attr__aeol__false_CRLF_mix_LF.txt
create mode 100644 MIX_attr__aeol__false_CRLF_nul.txt
create mode 100644 MIX_attr__aeol__false_LF.txt
create mode 100644 MIX_attr__aeol__false_LF_mix_CR.txt
create mode 100644 MIX_attr__aeol__input_CRLF.txt
create mode 100644 MIX_attr__aeol__input_CRLF_mix_LF.txt
create mode 100644 MIX_attr__aeol__input_CRLF_nul.txt
create mode 100644 MIX_attr__aeol__input_LF.txt
create mode 100644 MIX_attr__aeol__input_LF_mix_CR.txt
create mode 100644 MIX_attr__aeol__true_CRLF.txt
create mode 100644 MIX_attr__aeol__true_CRLF_mix_LF.txt
create mode 100644 MIX_attr__aeol__true_CRLF_nul.txt
create mode 100644 MIX_attr__aeol__true_LF.txt
create mode 100644 MIX_attr__aeol__true_LF_mix_CR.txt
create mode 100644 MIX_attr__aeol_crlf_false_CRLF.txt
create mode 100644 MIX_attr__aeol_crlf_false_CRLF_mix_LF.txt
create mode 100644 MIX_attr__aeol_crlf_false_CRLF_nul.txt
create mode 100644 MIX_attr__aeol_crlf_false_LF.txt
create mode 100644 MIX_attr__aeol_crlf_false_LF_mix_CR.txt
create mode 100644 MIX_attr__aeol_crlf_input_CRLF.txt
create mode 100644 MIX_attr__aeol_crlf_input_CRLF_mix_LF.txt
create mode 100644 MIX_attr__aeol_crlf_input_CRLF_nul.txt
create mode 100644 MIX_attr__aeol_crlf_input_LF.txt
create mode 100644 MIX_attr__aeol_crlf_input_LF_mix_CR.txt
create mode 100644 MIX_attr__aeol_crlf_true_CRLF.txt
create mode 100644 MIX_attr__aeol_crlf_true_CRLF_mix_LF.txt
create mode 100644 MIX_attr__aeol_crlf_true_CRLF_nul.txt
create mode 100644 MIX_attr__aeol_crlf_true_LF.txt
create mode 100644 MIX_attr__aeol_crlf_true_LF_mix_CR.txt
create mode 100644 MIX_attr__aeol_lf_false_CRLF.txt
create mode 100644 MIX_attr__aeol_lf_false_CRLF_mix_LF.txt
create mode 100644 MIX_attr__aeol_lf_false_CRLF_nul.txt
create mode 100644 MIX_attr__aeol_lf_false_LF.txt
create mode 100644 MIX_attr__aeol_lf_false_LF_mix_CR.txt
create mode 100644 MIX_attr__aeol_lf_input_CRLF.txt
create mode 100644 MIX_attr__aeol_lf_input_CRLF_mix_LF.txt
create mode 100644 MIX_attr__aeol_lf_input_CRLF_nul.txt
create mode 100644 MIX_attr__aeol_lf_input_LF.txt
create mode 100644 MIX_attr__aeol_lf_input_LF_mix_CR.txt
create mode 100644 MIX_attr__aeol_lf_true_CRLF.txt
create mode 100644 MIX_attr__aeol_lf_true_CRLF_mix_LF.txt
create mode 100644 MIX_attr__aeol_lf_true_CRLF_nul.txt
create mode 100644 MIX_attr__aeol_lf_true_LF.txt
create mode 100644 MIX_attr__aeol_lf_true_LF_mix_CR.txt
create mode 100644 MIX_attr_auto_aeol__false_CRLF.txt
create mode 100644 MIX_attr_auto_aeol__false_CRLF_mix_LF.txt
create mode 100644 MIX_attr_auto_aeol__false_CRLF_nul.txt
create mode 100644 MIX_attr_auto_aeol__false_LF.txt
create mode 100644 MIX_attr_auto_aeol__false_LF_mix_CR.txt
create mode 100644 MIX_attr_auto_aeol__input_CRLF.txt
create mode 100644 MIX_attr_auto_aeol__input_CRLF_mix_LF.txt
create mode 100644 MIX_attr_auto_aeol__input_CRLF_nul.txt
create mode 100644 MIX_attr_auto_aeol__input_LF.txt
create mode 100644 MIX_attr_auto_aeol__input_LF_mix_CR.txt
create mode 100644 MIX_attr_auto_aeol__true_CRLF.txt
create mode 100644 MIX_attr_auto_aeol__true_CRLF_mix_LF.txt
create mode 100644 MIX_attr_auto_aeol__true_CRLF_nul.txt
create mode 100644 MIX_attr_auto_aeol__true_LF.txt
create mode 100644 MIX_attr_auto_aeol__true_LF_mix_CR.txt
create mode 100644 MIX_attr_auto_aeol_crlf_false_CRLF.txt
create mode 100644 MIX_attr_auto_aeol_crlf_false_CRLF_mix_LF.txt
create mode 100644 MIX_attr_auto_aeol_crlf_false_CRLF_nul.txt
create mode 100644 MIX_attr_auto_aeol_crlf_false_LF.txt
create mode 100644 MIX_attr_auto_aeol_crlf_false_LF_mix_CR.txt
create mode 100644 MIX_attr_auto_aeol_crlf_input_CRLF.txt
create mode 100644 MIX_attr_auto_aeol_crlf_input_CRLF_mix_LF.txt
create mode 100644 MIX_attr_auto_aeol_crlf_input_CRLF_nul.txt
create mode 100644 MIX_attr_auto_aeol_crlf_input_LF.txt
create mode 100644 MIX_attr_auto_aeol_crlf_input_LF_mix_CR.txt
create mode 100644 MIX_attr_auto_aeol_crlf_true_CRLF.txt
create mode 100644 MIX_attr_auto_aeol_crlf_true_CRLF_mix_LF.txt
create mode 100644 MIX_attr_auto_aeol_crlf_true_CRLF_nul.txt
create mode 100644 MIX_attr_auto_aeol_crlf_true_LF.txt
create mode 100644 MIX_attr_auto_aeol_crlf_true_LF_mix_CR.txt
create mode 100644 MIX_attr_auto_aeol_lf_false_CRLF.txt
create mode 100644 MIX_attr_auto_aeol_lf_false_CRLF_mix_LF.txt
create mode 100644 MIX_attr_auto_aeol_lf_false_CRLF_nul.txt
create mode 100644 MIX_attr_auto_aeol_lf_false_LF.txt
create mode 100644 MIX_attr_auto_aeol_lf_false_LF_mix_CR.txt
create mode 100644 MIX_attr_auto_aeol_lf_input_CRLF.txt
create mode 100644 MIX_attr_auto_aeol_lf_input_CRLF_mix_LF.txt
create mode 100644 MIX_attr_auto_aeol_lf_input_CRLF_nul.txt
create mode 100644 MIX_attr_auto_aeol_lf_input_LF.txt
create mode 100644 MIX_attr_auto_aeol_lf_input_LF_mix_CR.txt
create mode 100644 MIX_attr_auto_aeol_lf_true_CRLF.txt
create mode 100644 MIX_attr_auto_aeol_lf_true_CRLF_mix_LF.txt
create mode 100644 MIX_attr_auto_aeol_lf_true_CRLF_nul.txt
create mode 100644 MIX_attr_auto_aeol_lf_true_LF.txt
create mode 100644 MIX_attr_auto_aeol_lf_true_LF_mix_CR.txt
create mode 100644 MIX_attr_text_aeol__false_CRLF.txt
create mode 100644 MIX_attr_text_aeol__false_CRLF_mix_LF.txt
create mode 100644 MIX_attr_text_aeol__false_CRLF_nul.txt
create mode 100644 MIX_attr_text_aeol__false_LF.txt
create mode 100644 MIX_attr_text_aeol__false_LF_mix_CR.txt
create mode 100644 MIX_attr_text_aeol__input_CRLF.txt
create mode 100644 MIX_attr_text_aeol__input_CRLF_mix_LF.txt
create mode 100644 MIX_attr_text_aeol__input_CRLF_nul.txt
create mode 100644 MIX_attr_text_aeol__input_LF.txt
create mode 100644 MIX_attr_text_aeol__input_LF_mix_CR.txt
create mode 100644 MIX_attr_text_aeol__true_CRLF.txt
create mode 100644 MIX_attr_text_aeol__true_CRLF_mix_LF.txt
create mode 100644 MIX_attr_text_aeol__true_CRLF_nul.txt
create mode 100644 MIX_attr_text_aeol__true_LF.txt
create mode 100644 MIX_attr_text_aeol__true_LF_mix_CR.txt
create mode 100644 MIX_attr_text_aeol_crlf_false_CRLF.txt
create mode 100644 MIX_attr_text_aeol_crlf_false_CRLF_mix_LF.txt
create mode 100644 MIX_attr_text_aeol_crlf_false_CRLF_nul.txt
create mode 100644 MIX_attr_text_aeol_crlf_false_LF.txt
create mode 100644 MIX_attr_text_aeol_crlf_false_LF_mix_CR.txt
create mode 100644 MIX_attr_text_aeol_crlf_input_CRLF.txt
create mode 100644 MIX_attr_text_aeol_crlf_input_CRLF_mix_LF.txt
create mode 100644 MIX_attr_text_aeol_crlf_input_CRLF_nul.txt
create mode 100644 MIX_attr_text_aeol_crlf_input_LF.txt
create mode 100644 MIX_attr_text_aeol_crlf_input_LF_mix_CR.txt
create mode 100644 MIX_attr_text_aeol_crlf_true_CRLF.txt
create mode 100644 MIX_attr_text_aeol_crlf_true_CRLF_mix_LF.txt
create mode 100644 MIX_attr_text_aeol_crlf_true_CRLF_nul.txt
create mode 100644 MIX_attr_text_aeol_crlf_true_LF.txt
create mode 100644 MIX_attr_text_aeol_crlf_true_LF_mix_CR.txt
create mode 100644 MIX_attr_text_aeol_lf_false_CRLF.txt
create mode 100644 MIX_attr_text_aeol_lf_false_CRLF_mix_LF.txt
create mode 100644 MIX_attr_text_aeol_lf_false_CRLF_nul.txt
create mode 100644 MIX_attr_text_aeol_lf_false_LF.txt
create mode 100644 MIX_attr_text_aeol_lf_false_LF_mix_CR.txt
create mode 100644 MIX_attr_text_aeol_lf_input_CRLF.txt
create mode 100644 MIX_attr_text_aeol_lf_input_CRLF_mix_LF.txt
create mode 100644 MIX_attr_text_aeol_lf_input_CRLF_nul.txt
create mode 100644 MIX_attr_text_aeol_lf_input_LF.txt
create mode 100644 MIX_attr_text_aeol_lf_input_LF_mix_CR.txt
create mode 100644 MIX_attr_text_aeol_lf_true_CRLF.txt
create mode 100644 MIX_attr_text_aeol_lf_true_CRLF_mix_LF.txt
create mode 100644 MIX_attr_text_aeol_lf_true_CRLF_nul.txt
create mode 100644 MIX_attr_text_aeol_lf_true_LF.txt
create mode 100644 MIX_attr_text_aeol_lf_true_LF_mix_CR.txt
create mode 100644 NNO_attr_-text_aeol__false_CRLF.txt
create mode 100644 NNO_attr_-text_aeol__false_CRLF_mix_LF.txt
create mode 100644 NNO_attr_-text_aeol__false_CRLF_nul.txt
create mode 100644 NNO_attr_-text_aeol__false_LF.txt
create mode 100644 NNO_attr_-text_aeol__false_LF_mix_CR.txt
create mode 100644 NNO_attr_-text_aeol__input_CRLF.txt
create mode 100644 NNO_attr_-text_aeol__input_CRLF_mix_LF.txt
create mode 100644 NNO_attr_-text_aeol__input_CRLF_nul.txt
create mode 100644 NNO_attr_-text_aeol__input_LF.txt
create mode 100644 NNO_attr_-text_aeol__input_LF_mix_CR.txt
create mode 100644 NNO_attr_-text_aeol__true_CRLF.txt
create mode 100644 NNO_attr_-text_aeol__true_CRLF_mix_LF.txt
create mode 100644 NNO_attr_-text_aeol__true_CRLF_nul.txt
create mode 100644 NNO_attr_-text_aeol__true_LF.txt
create mode 100644 NNO_attr_-text_aeol__true_LF_mix_CR.txt
create mode 100644 NNO_attr_-text_aeol_crlf_false_CRLF.txt
create mode 100644 NNO_attr_-text_aeol_crlf_false_CRLF_mix_LF.txt
create mode 100644 NNO_attr_-text_aeol_crlf_false_CRLF_nul.txt
create mode 100644 NNO_attr_-text_aeol_crlf_false_LF.txt
create mode 100644 NNO_attr_-text_aeol_crlf_false_LF_mix_CR.txt
create mode 100644 NNO_attr_-text_aeol_crlf_input_CRLF.txt
create mode 100644 NNO_attr_-text_aeol_crlf_input_CRLF_mix_LF.txt
create mode 100644 NNO_attr_-text_aeol_crlf_input_CRLF_nul.txt
create mode 100644 NNO_attr_-text_aeol_crlf_input_LF.txt
create mode 100644 NNO_attr_-text_aeol_crlf_input_LF_mix_CR.txt
create mode 100644 NNO_attr_-text_aeol_crlf_true_CRLF.txt
create mode 100644 NNO_attr_-text_aeol_crlf_true_CRLF_mix_LF.txt
create mode 100644 NNO_attr_-text_aeol_crlf_true_CRLF_nul.txt
create mode 100644 NNO_attr_-text_aeol_crlf_true_LF.txt
create mode 100644 NNO_attr_-text_aeol_crlf_true_LF_mix_CR.txt
create mode 100644 NNO_attr_-text_aeol_lf_false_CRLF.txt
create mode 100644 NNO_attr_-text_aeol_lf_false_CRLF_mix_LF.txt
create mode 100644 NNO_attr_-text_aeol_lf_false_CRLF_nul.txt
create mode 100644 NNO_attr_-text_aeol_lf_false_LF.txt
create mode 100644 NNO_attr_-text_aeol_lf_false_LF_mix_CR.txt
create mode 100644 NNO_attr_-text_aeol_lf_input_CRLF.txt
create mode 100644 NNO_attr_-text_aeol_lf_input_CRLF_mix_LF.txt
create mode 100644 NNO_attr_-text_aeol_lf_input_CRLF_nul.txt
create mode 100644 NNO_attr_-text_aeol_lf_input_LF.txt
create mode 100644 NNO_attr_-text_aeol_lf_input_LF_mix_CR.txt
create mode 100644 NNO_attr_-text_aeol_lf_true_CRLF.txt
create mode 100644 NNO_attr_-text_aeol_lf_true_CRLF_mix_LF.txt
create mode 100644 NNO_attr_-text_aeol_lf_true_CRLF_nul.txt
create mode 100644 NNO_attr_-text_aeol_lf_true_LF.txt
create mode 100644 NNO_attr_-text_aeol_lf_true_LF_mix_CR.txt
create mode 100644 NNO_attr__aeol__false_CRLF.txt
create mode 100644 NNO_attr__aeol__false_CRLF_mix_LF.txt
create mode 100644 NNO_attr__aeol__false_CRLF_nul.txt
create mode 100644 NNO_attr__aeol__false_LF.txt
create mode 100644 NNO_attr__aeol__false_LF_mix_CR.txt
create mode 100644 NNO_attr__aeol__input_CRLF.txt
create mode 100644 NNO_attr__aeol__input_CRLF_mix_LF.txt
create mode 100644 NNO_attr__aeol__input_CRLF_nul.txt
create mode 100644 NNO_attr__aeol__input_LF.txt
create mode 100644 NNO_attr__aeol__input_LF_mix_CR.txt
create mode 100644 NNO_attr__aeol__true_CRLF.txt
create mode 100644 NNO_attr__aeol__true_CRLF_mix_LF.txt
create mode 100644 NNO_attr__aeol__true_CRLF_nul.txt
create mode 100644 NNO_attr__aeol__true_LF.txt
create mode 100644 NNO_attr__aeol__true_LF_mix_CR.txt
create mode 100644 NNO_attr__aeol_crlf_false_CRLF.txt
create mode 100644 NNO_attr__aeol_crlf_false_CRLF_mix_LF.txt
create mode 100644 NNO_attr__aeol_crlf_false_CRLF_nul.txt
create mode 100644 NNO_attr__aeol_crlf_false_LF.txt
create mode 100644 NNO_attr__aeol_crlf_false_LF_mix_CR.txt
create mode 100644 NNO_attr__aeol_crlf_input_CRLF.txt
create mode 100644 NNO_attr__aeol_crlf_input_CRLF_mix_LF.txt
create mode 100644 NNO_attr__aeol_crlf_input_CRLF_nul.txt
create mode 100644 NNO_attr__aeol_crlf_input_LF.txt
create mode 100644 NNO_attr__aeol_crlf_input_LF_mix_CR.txt
create mode 100644 NNO_attr__aeol_crlf_true_CRLF.txt
create mode 100644 NNO_attr__aeol_crlf_true_CRLF_mix_LF.txt
create mode 100644 NNO_attr__aeol_crlf_true_CRLF_nul.txt
create mode 100644 NNO_attr__aeol_crlf_true_LF.txt
create mode 100644 NNO_attr__aeol_crlf_true_LF_mix_CR.txt
create mode 100644 NNO_attr__aeol_lf_false_CRLF.txt
create mode 100644 NNO_attr__aeol_lf_false_CRLF_mix_LF.txt
create mode 100644 NNO_attr__aeol_lf_false_CRLF_nul.txt
create mode 100644 NNO_attr__aeol_lf_false_LF.txt
create mode 100644 NNO_attr__aeol_lf_false_LF_mix_CR.txt
create mode 100644 NNO_attr__aeol_lf_input_CRLF.txt
create mode 100644 NNO_attr__aeol_lf_input_CRLF_mix_LF.txt
create mode 100644 NNO_attr__aeol_lf_input_CRLF_nul.txt
create mode 100644 NNO_attr__aeol_lf_input_LF.txt
create mode 100644 NNO_attr__aeol_lf_input_LF_mix_CR.txt
create mode 100644 NNO_attr__aeol_lf_true_CRLF.txt
create mode 100644 NNO_attr__aeol_lf_true_CRLF_mix_LF.txt
create mode 100644 NNO_attr__aeol_lf_true_CRLF_nul.txt
create mode 100644 NNO_attr__aeol_lf_true_LF.txt
create mode 100644 NNO_attr__aeol_lf_true_LF_mix_CR.txt
create mode 100644 NNO_attr_auto_aeol__false_CRLF.txt
create mode 100644 NNO_attr_auto_aeol__false_CRLF_mix_LF.txt
create mode 100644 NNO_attr_auto_aeol__false_CRLF_nul.txt
create mode 100644 NNO_attr_auto_aeol__false_LF.txt
create mode 100644 NNO_attr_auto_aeol__false_LF_mix_CR.txt
create mode 100644 NNO_attr_auto_aeol__input_CRLF.txt
create mode 100644 NNO_attr_auto_aeol__input_CRLF_mix_LF.txt
create mode 100644 NNO_attr_auto_aeol__input_CRLF_nul.txt
create mode 100644 NNO_attr_auto_aeol__input_LF.txt
create mode 100644 NNO_attr_auto_aeol__input_LF_mix_CR.txt
create mode 100644 NNO_attr_auto_aeol__true_CRLF.txt
create mode 100644 NNO_attr_auto_aeol__true_CRLF_mix_LF.txt
create mode 100644 NNO_attr_auto_aeol__true_CRLF_nul.txt
create mode 100644 NNO_attr_auto_aeol__true_LF.txt
create mode 100644 NNO_attr_auto_aeol__true_LF_mix_CR.txt
create mode 100644 NNO_attr_auto_aeol_crlf_false_CRLF.txt
create mode 100644 NNO_attr_auto_aeol_crlf_false_CRLF_mix_LF.txt
create mode 100644 NNO_attr_auto_aeol_crlf_false_CRLF_nul.txt
create mode 100644 NNO_attr_auto_aeol_crlf_false_LF.txt
create mode 100644 NNO_attr_auto_aeol_crlf_false_LF_mix_CR.txt
create mode 100644 NNO_attr_auto_aeol_crlf_input_CRLF.txt
create mode 100644 NNO_attr_auto_aeol_crlf_input_CRLF_mix_LF.txt
create mode 100644 NNO_attr_auto_aeol_crlf_input_CRLF_nul.txt
create mode 100644 NNO_attr_auto_aeol_crlf_input_LF.txt
create mode 100644 NNO_attr_auto_aeol_crlf_input_LF_mix_CR.txt
create mode 100644 NNO_attr_auto_aeol_crlf_true_CRLF.txt
create mode 100644 NNO_attr_auto_aeol_crlf_true_CRLF_mix_LF.txt
create mode 100644 NNO_attr_auto_aeol_crlf_true_CRLF_nul.txt
create mode 100644 NNO_attr_auto_aeol_crlf_true_LF.txt
create mode 100644 NNO_attr_auto_aeol_crlf_true_LF_mix_CR.txt
create mode 100644 NNO_attr_auto_aeol_lf_false_CRLF.txt
create mode 100644 NNO_attr_auto_aeol_lf_false_CRLF_mix_LF.txt
create mode 100644 NNO_attr_auto_aeol_lf_false_CRLF_nul.txt
create mode 100644 NNO_attr_auto_aeol_lf_false_LF.txt
create mode 100644 NNO_attr_auto_aeol_lf_false_LF_mix_CR.txt
create mode 100644 NNO_attr_auto_aeol_lf_input_CRLF.txt
create mode 100644 NNO_attr_auto_aeol_lf_input_CRLF_mix_LF.txt
create mode 100644 NNO_attr_auto_aeol_lf_input_CRLF_nul.txt
create mode 100644 NNO_attr_auto_aeol_lf_input_LF.txt
create mode 100644 NNO_attr_auto_aeol_lf_input_LF_mix_CR.txt
create mode 100644 NNO_attr_auto_aeol_lf_true_CRLF.txt
create mode 100644 NNO_attr_auto_aeol_lf_true_CRLF_mix_LF.txt
create mode 100644 NNO_attr_auto_aeol_lf_true_CRLF_nul.txt
create mode 100644 NNO_attr_auto_aeol_lf_true_LF.txt
create mode 100644 NNO_attr_auto_aeol_lf_true_LF_mix_CR.txt
create mode 100644 NNO_attr_text_aeol__false_CRLF.txt
create mode 100644 NNO_attr_text_aeol__false_CRLF_mix_LF.txt
create mode 100644 NNO_attr_text_aeol__false_CRLF_nul.txt
create mode 100644 NNO_attr_text_aeol__false_LF.txt
create mode 100644 NNO_attr_text_aeol__false_LF_mix_CR.txt
create mode 100644 NNO_attr_text_aeol__input_CRLF.txt
create mode 100644 NNO_attr_text_aeol__input_CRLF_mix_LF.txt
create mode 100644 NNO_attr_text_aeol__input_CRLF_nul.txt
create mode 100644 NNO_attr_text_aeol__input_LF.txt
create mode 100644 NNO_attr_text_aeol__input_LF_mix_CR.txt
create mode 100644 NNO_attr_text_aeol__true_CRLF.txt
create mode 100644 NNO_attr_text_aeol__true_CRLF_mix_LF.txt
create mode 100644 NNO_attr_text_aeol__true_CRLF_nul.txt
create mode 100644 NNO_attr_text_aeol__true_LF.txt
create mode 100644 NNO_attr_text_aeol__true_LF_mix_CR.txt
create mode 100644 NNO_attr_text_aeol_crlf_false_CRLF.txt
create mode 100644 NNO_attr_text_aeol_crlf_false_CRLF_mix_LF.txt
create mode 100644 NNO_attr_text_aeol_crlf_false_CRLF_nul.txt
create mode 100644 NNO_attr_text_aeol_crlf_false_LF.txt
create mode 100644 NNO_attr_text_aeol_crlf_false_LF_mix_CR.txt
create mode 100644 NNO_attr_text_aeol_crlf_input_CRLF.txt
create mode 100644 NNO_attr_text_aeol_crlf_input_CRLF_mix_LF.txt
create mode 100644 NNO_attr_text_aeol_crlf_input_CRLF_nul.txt
create mode 100644 NNO_attr_text_aeol_crlf_input_LF.txt
create mode 100644 NNO_attr_text_aeol_crlf_input_LF_mix_CR.txt
create mode 100644 NNO_attr_text_aeol_crlf_true_CRLF.txt
create mode 100644 NNO_attr_text_aeol_crlf_true_CRLF_mix_LF.txt
create mode 100644 NNO_attr_text_aeol_crlf_true_CRLF_nul.txt
create mode 100644 NNO_attr_text_aeol_crlf_true_LF.txt
create mode 100644 NNO_attr_text_aeol_crlf_true_LF_mix_CR.txt
create mode 100644 NNO_attr_text_aeol_lf_false_CRLF.txt
create mode 100644 NNO_attr_text_aeol_lf_false_CRLF_mix_LF.txt
create mode 100644 NNO_attr_text_aeol_lf_false_CRLF_nul.txt
create mode 100644 NNO_attr_text_aeol_lf_false_LF.txt
create mode 100644 NNO_attr_text_aeol_lf_false_LF_mix_CR.txt
create mode 100644 NNO_attr_text_aeol_lf_input_CRLF.txt
create mode 100644 NNO_attr_text_aeol_lf_input_CRLF_mix_LF.txt
create mode 100644 NNO_attr_text_aeol_lf_input_CRLF_nul.txt
create mode 100644 NNO_attr_text_aeol_lf_input_LF.txt
create mode 100644 NNO_attr_text_aeol_lf_input_LF_mix_CR.txt
create mode 100644 NNO_attr_text_aeol_lf_true_CRLF.txt
create mode 100644 NNO_attr_text_aeol_lf_true_CRLF_mix_LF.txt
create mode 100644 NNO_attr_text_aeol_lf_true_CRLF_nul.txt
create mode 100644 NNO_attr_text_aeol_lf_true_LF.txt
create mode 100644 NNO_attr_text_aeol_lf_true_LF_mix_CR.txt
ok 2 - setup main
expecting success of 0027.3 'commit files empty attr':
commit_check_warn false "" "" "" "" "" "" &&
commit_check_warn true "" "LF_CRLF" "" "LF_CRLF" "" "" &&
commit_check_warn input "" "" "CRLF_LF" "CRLF_LF" "" ""
[main c62ad5d] core.autocrlf false
Author: A U Thor <author@example.com>
6 files changed, 15 insertions(+)
create mode 100644 crlf_false_attr__CRLF.txt
create mode 100644 crlf_false_attr__CRLF_mix_LF.txt
create mode 100644 crlf_false_attr__CRLF_nul.txt
create mode 100644 crlf_false_attr__LF.txt
create mode 100644 crlf_false_attr__LF_mix_CR.txt
create mode 100644 crlf_false_attr__LF_nul.txt
[main d70a676] core.autocrlf true
Author: A U Thor <author@example.com>
6 files changed, 15 insertions(+)
create mode 100644 crlf_true_attr__CRLF.txt
create mode 100644 crlf_true_attr__CRLF_mix_LF.txt
create mode 100644 crlf_true_attr__CRLF_nul.txt
create mode 100644 crlf_true_attr__LF.txt
create mode 100644 crlf_true_attr__LF_mix_CR.txt
create mode 100644 crlf_true_attr__LF_nul.txt
[main a106c40] core.autocrlf input
Author: A U Thor <author@example.com>
6 files changed, 15 insertions(+)
create mode 100644 crlf_input_attr__CRLF.txt
create mode 100644 crlf_input_attr__CRLF_mix_LF.txt
create mode 100644 crlf_input_attr__CRLF_nul.txt
create mode 100644 crlf_input_attr__LF.txt
create mode 100644 crlf_input_attr__LF_mix_CR.txt
create mode 100644 crlf_input_attr__LF_nul.txt
ok 3 - commit files empty attr
expecting success of 0027.4 'commit files attr=auto':
commit_check_warn false "auto" "$WILC" "$WICL" "$WAMIX" "" "" &&
commit_check_warn true "auto" "LF_CRLF" "" "LF_CRLF" "" "" &&
commit_check_warn input "auto" "" "CRLF_LF" "CRLF_LF" "" ""
[main 68bab31] core.autocrlf false
Author: A U Thor <author@example.com>
6 files changed, 15 insertions(+)
create mode 100644 crlf_false_attr_auto_CRLF.txt
create mode 100644 crlf_false_attr_auto_CRLF_mix_LF.txt
create mode 100644 crlf_false_attr_auto_CRLF_nul.txt
create mode 100644 crlf_false_attr_auto_LF.txt
create mode 100644 crlf_false_attr_auto_LF_mix_CR.txt
create mode 100644 crlf_false_attr_auto_LF_nul.txt
[main efc8d5d] core.autocrlf true
Author: A U Thor <author@example.com>
6 files changed, 15 insertions(+)
create mode 100644 crlf_true_attr_auto_CRLF.txt
create mode 100644 crlf_true_attr_auto_CRLF_mix_LF.txt
create mode 100644 crlf_true_attr_auto_CRLF_nul.txt
create mode 100644 crlf_true_attr_auto_LF.txt
create mode 100644 crlf_true_attr_auto_LF_mix_CR.txt
create mode 100644 crlf_true_attr_auto_LF_nul.txt
[main 21fb1d0] core.autocrlf input
Author: A U Thor <author@example.com>
6 files changed, 15 insertions(+)
create mode 100644 crlf_input_attr_auto_CRLF.txt
create mode 100644 crlf_input_attr_auto_CRLF_mix_LF.txt
create mode 100644 crlf_input_attr_auto_CRLF_nul.txt
create mode 100644 crlf_input_attr_auto_LF.txt
create mode 100644 crlf_input_attr_auto_LF_mix_CR.txt
create mode 100644 crlf_input_attr_auto_LF_nul.txt
ok 4 - commit files attr=auto
expecting success of 0027.5 'commit files attr=text':
commit_check_warn false "text" "$WILC" "$WICL" "$WAMIX" "$WILC" "$WICL" &&
commit_check_warn true "text" "LF_CRLF" "" "LF_CRLF" "LF_CRLF" "" &&
commit_check_warn input "text" "" "CRLF_LF" "CRLF_LF" "" "CRLF_LF"
[main 16b2963] core.autocrlf false
Author: A U Thor <author@example.com>
6 files changed, 15 insertions(+)
create mode 100644 crlf_false_attr_text_CRLF.txt
create mode 100644 crlf_false_attr_text_CRLF_mix_LF.txt
create mode 100644 crlf_false_attr_text_CRLF_nul.txt
create mode 100644 crlf_false_attr_text_LF.txt
create mode 100644 crlf_false_attr_text_LF_mix_CR.txt
create mode 100644 crlf_false_attr_text_LF_nul.txt
[main 006c230] core.autocrlf true
Author: A U Thor <author@example.com>
6 files changed, 15 insertions(+)
create mode 100644 crlf_true_attr_text_CRLF.txt
create mode 100644 crlf_true_attr_text_CRLF_mix_LF.txt
create mode 100644 crlf_true_attr_text_CRLF_nul.txt
create mode 100644 crlf_true_attr_text_LF.txt
create mode 100644 crlf_true_attr_text_LF_mix_CR.txt
create mode 100644 crlf_true_attr_text_LF_nul.txt
[main 00481a2] core.autocrlf input
Author: A U Thor <author@example.com>
6 files changed, 15 insertions(+)
create mode 100644 crlf_input_attr_text_CRLF.txt
create mode 100644 crlf_input_attr_text_CRLF_mix_LF.txt
create mode 100644 crlf_input_attr_text_CRLF_nul.txt
create mode 100644 crlf_input_attr_text_LF.txt
create mode 100644 crlf_input_attr_text_LF_mix_CR.txt
create mode 100644 crlf_input_attr_text_LF_nul.txt
ok 5 - commit files attr=text
expecting success of 0027.6 'commit files attr=-text':
commit_check_warn false "-text" "" "" "" "" "" &&
commit_check_warn true "-text" "" "" "" "" "" &&
commit_check_warn input "-text" "" "" "" "" ""
[main 88d9dda] core.autocrlf false
Author: A U Thor <author@example.com>
6 files changed, 15 insertions(+)
create mode 100644 crlf_false_attr_-text_CRLF.txt
create mode 100644 crlf_false_attr_-text_CRLF_mix_LF.txt
create mode 100644 crlf_false_attr_-text_CRLF_nul.txt
create mode 100644 crlf_false_attr_-text_LF.txt
create mode 100644 crlf_false_attr_-text_LF_mix_CR.txt
create mode 100644 crlf_false_attr_-text_LF_nul.txt
[main 1456133] core.autocrlf true
Author: A U Thor <author@example.com>
6 files changed, 15 insertions(+)
create mode 100644 crlf_true_attr_-text_CRLF.txt
create mode 100644 crlf_true_attr_-text_CRLF_mix_LF.txt
create mode 100644 crlf_true_attr_-text_CRLF_nul.txt
create mode 100644 crlf_true_attr_-text_LF.txt
create mode 100644 crlf_true_attr_-text_LF_mix_CR.txt
create mode 100644 crlf_true_attr_-text_LF_nul.txt
[main 08b2ac8] core.autocrlf input
Author: A U Thor <author@example.com>
6 files changed, 15 insertions(+)
create mode 100644 crlf_input_attr_-text_CRLF.txt
create mode 100644 crlf_input_attr_-text_CRLF_mix_LF.txt
create mode 100644 crlf_input_attr_-text_CRLF_nul.txt
create mode 100644 crlf_input_attr_-text_LF.txt
create mode 100644 crlf_input_attr_-text_LF_mix_CR.txt
create mode 100644 crlf_input_attr_-text_LF_nul.txt
ok 6 - commit files attr=-text
expecting success of 0027.7 'commit files attr=lf':
commit_check_warn false "lf" "" "CRLF_LF" "CRLF_LF" "" "CRLF_LF" &&
commit_check_warn true "lf" "" "CRLF_LF" "CRLF_LF" "" "CRLF_LF" &&
commit_check_warn input "lf" "" "CRLF_LF" "CRLF_LF" "" "CRLF_LF"
[main f130974] core.autocrlf false
Author: A U Thor <author@example.com>
6 files changed, 15 insertions(+)
create mode 100644 crlf_false_attr_lf_CRLF.txt
create mode 100644 crlf_false_attr_lf_CRLF_mix_LF.txt
create mode 100644 crlf_false_attr_lf_CRLF_nul.txt
create mode 100644 crlf_false_attr_lf_LF.txt
create mode 100644 crlf_false_attr_lf_LF_mix_CR.txt
create mode 100644 crlf_false_attr_lf_LF_nul.txt
[main 0b69747] core.autocrlf true
Author: A U Thor <author@example.com>
6 files changed, 15 insertions(+)
create mode 100644 crlf_true_attr_lf_CRLF.txt
create mode 100644 crlf_true_attr_lf_CRLF_mix_LF.txt
create mode 100644 crlf_true_attr_lf_CRLF_nul.txt
create mode 100644 crlf_true_attr_lf_LF.txt
create mode 100644 crlf_true_attr_lf_LF_mix_CR.txt
create mode 100644 crlf_true_attr_lf_LF_nul.txt
[main 7d87167] core.autocrlf input
Author: A U Thor <author@example.com>
6 files changed, 15 insertions(+)
create mode 100644 crlf_input_attr_lf_CRLF.txt
create mode 100644 crlf_input_attr_lf_CRLF_mix_LF.txt
create mode 100644 crlf_input_attr_lf_CRLF_nul.txt
create mode 100644 crlf_input_attr_lf_LF.txt
create mode 100644 crlf_input_attr_lf_LF_mix_CR.txt
create mode 100644 crlf_input_attr_lf_LF_nul.txt
ok 7 - commit files attr=lf
expecting success of 0027.8 'commit files attr=crlf':
commit_check_warn false "crlf" "LF_CRLF" "" "LF_CRLF" "LF_CRLF" "" &&
commit_check_warn true "crlf" "LF_CRLF" "" "LF_CRLF" "LF_CRLF" "" &&
commit_check_warn input "crlf" "LF_CRLF" "" "LF_CRLF" "LF_CRLF" ""
[main 753280e] core.autocrlf false
Author: A U Thor <author@example.com>
6 files changed, 15 insertions(+)
create mode 100644 crlf_false_attr_crlf_CRLF.txt
create mode 100644 crlf_false_attr_crlf_CRLF_mix_LF.txt
create mode 100644 crlf_false_attr_crlf_CRLF_nul.txt
create mode 100644 crlf_false_attr_crlf_LF.txt
create mode 100644 crlf_false_attr_crlf_LF_mix_CR.txt
create mode 100644 crlf_false_attr_crlf_LF_nul.txt
[main abec00d] core.autocrlf true
Author: A U Thor <author@example.com>
6 files changed, 15 insertions(+)
create mode 100644 crlf_true_attr_crlf_CRLF.txt
create mode 100644 crlf_true_attr_crlf_CRLF_mix_LF.txt
create mode 100644 crlf_true_attr_crlf_CRLF_nul.txt
create mode 100644 crlf_true_attr_crlf_LF.txt
create mode 100644 crlf_true_attr_crlf_LF_mix_CR.txt
create mode 100644 crlf_true_attr_crlf_LF_nul.txt
[main 4e045e6] core.autocrlf input
Author: A U Thor <author@example.com>
6 files changed, 15 insertions(+)
create mode 100644 crlf_input_attr_crlf_CRLF.txt
create mode 100644 crlf_input_attr_crlf_CRLF_mix_LF.txt
create mode 100644 crlf_input_attr_crlf_CRLF_nul.txt
create mode 100644 crlf_input_attr_crlf_LF.txt
create mode 100644 crlf_input_attr_crlf_LF_mix_CR.txt
create mode 100644 crlf_input_attr_crlf_LF_nul.txt
ok 8 - commit files attr=crlf
expecting success of 0027.9 'setup commit file with mixed EOL':
#Commit file with CLRF_mix_LF on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp CRLF_mix_LF $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 9 - setup commit file with mixed EOL
expecting success of 0027.10 'commit file with mixed EOL onto LF crlf=false attr=':
check_warning "$lfwarn" ${pfx}_LF.err
ok 10 - commit file with mixed EOL onto LF crlf=false attr=
expecting success of 0027.11 'commit file with mixed EOL onto CLRF attr= aeol= crlf=false':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 11 - commit file with mixed EOL onto CLRF attr= aeol= crlf=false
expecting success of 0027.12 'commit file with mixed EOL onto CRLF_mix_LF attr= aeol= crlf=false':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 12 - commit file with mixed EOL onto CRLF_mix_LF attr= aeol= crlf=false
expecting success of 0027.13 'commit file with mixed EOL onto LF_mix_cr attr= aeol= crlf=false ':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 13 - commit file with mixed EOL onto LF_mix_cr attr= aeol= crlf=false
expecting success of 0027.14 'commit file with mixed EOL onto CRLF_nul attr= aeol= crlf=false':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 14 - commit file with mixed EOL onto CRLF_nul attr= aeol= crlf=false
expecting success of 0027.15 'setup commit file with mixed EOL':
#Commit file with CLRF_mix_LF on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp CRLF_mix_LF $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 15 - setup commit file with mixed EOL
expecting success of 0027.16 'commit file with mixed EOL onto LF crlf=true attr=':
check_warning "$lfwarn" ${pfx}_LF.err
ok 16 - commit file with mixed EOL onto LF crlf=true attr=
expecting success of 0027.17 'commit file with mixed EOL onto CLRF attr= aeol= crlf=true':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 17 - commit file with mixed EOL onto CLRF attr= aeol= crlf=true
expecting success of 0027.18 'commit file with mixed EOL onto CRLF_mix_LF attr= aeol= crlf=true':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 18 - commit file with mixed EOL onto CRLF_mix_LF attr= aeol= crlf=true
expecting success of 0027.19 'commit file with mixed EOL onto LF_mix_cr attr= aeol= crlf=true ':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 19 - commit file with mixed EOL onto LF_mix_cr attr= aeol= crlf=true
expecting success of 0027.20 'commit file with mixed EOL onto CRLF_nul attr= aeol= crlf=true':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 20 - commit file with mixed EOL onto CRLF_nul attr= aeol= crlf=true
expecting success of 0027.21 'setup commit file with mixed EOL':
#Commit file with CLRF_mix_LF on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp CRLF_mix_LF $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 21 - setup commit file with mixed EOL
expecting success of 0027.22 'commit file with mixed EOL onto LF crlf=input attr=':
check_warning "$lfwarn" ${pfx}_LF.err
ok 22 - commit file with mixed EOL onto LF crlf=input attr=
expecting success of 0027.23 'commit file with mixed EOL onto CLRF attr= aeol= crlf=input':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 23 - commit file with mixed EOL onto CLRF attr= aeol= crlf=input
expecting success of 0027.24 'commit file with mixed EOL onto CRLF_mix_LF attr= aeol= crlf=input':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 24 - commit file with mixed EOL onto CRLF_mix_LF attr= aeol= crlf=input
expecting success of 0027.25 'commit file with mixed EOL onto LF_mix_cr attr= aeol= crlf=input ':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 25 - commit file with mixed EOL onto LF_mix_cr attr= aeol= crlf=input
expecting success of 0027.26 'commit file with mixed EOL onto CRLF_nul attr= aeol= crlf=input':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 26 - commit file with mixed EOL onto CRLF_nul attr= aeol= crlf=input
expecting success of 0027.27 'setup commit file with mixed EOL':
#Commit file with CLRF_mix_LF on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp CRLF_mix_LF $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 27 - setup commit file with mixed EOL
expecting success of 0027.28 'commit file with mixed EOL onto LF crlf=false attr=auto':
check_warning "$lfwarn" ${pfx}_LF.err
ok 28 - commit file with mixed EOL onto LF crlf=false attr=auto
expecting success of 0027.29 'commit file with mixed EOL onto CLRF attr=auto aeol= crlf=false':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 29 - commit file with mixed EOL onto CLRF attr=auto aeol= crlf=false
expecting success of 0027.30 'commit file with mixed EOL onto CRLF_mix_LF attr=auto aeol= crlf=false':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 30 - commit file with mixed EOL onto CRLF_mix_LF attr=auto aeol= crlf=false
expecting success of 0027.31 'commit file with mixed EOL onto LF_mix_cr attr=auto aeol= crlf=false ':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 31 - commit file with mixed EOL onto LF_mix_cr attr=auto aeol= crlf=false
expecting success of 0027.32 'commit file with mixed EOL onto CRLF_nul attr=auto aeol= crlf=false':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 32 - commit file with mixed EOL onto CRLF_nul attr=auto aeol= crlf=false
expecting success of 0027.33 'setup commit file with mixed EOL':
#Commit file with CLRF_mix_LF on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp CRLF_mix_LF $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 33 - setup commit file with mixed EOL
expecting success of 0027.34 'commit file with mixed EOL onto LF crlf=true attr=auto':
check_warning "$lfwarn" ${pfx}_LF.err
ok 34 - commit file with mixed EOL onto LF crlf=true attr=auto
expecting success of 0027.35 'commit file with mixed EOL onto CLRF attr=auto aeol= crlf=true':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 35 - commit file with mixed EOL onto CLRF attr=auto aeol= crlf=true
expecting success of 0027.36 'commit file with mixed EOL onto CRLF_mix_LF attr=auto aeol= crlf=true':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 36 - commit file with mixed EOL onto CRLF_mix_LF attr=auto aeol= crlf=true
expecting success of 0027.37 'commit file with mixed EOL onto LF_mix_cr attr=auto aeol= crlf=true ':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 37 - commit file with mixed EOL onto LF_mix_cr attr=auto aeol= crlf=true
expecting success of 0027.38 'commit file with mixed EOL onto CRLF_nul attr=auto aeol= crlf=true':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 38 - commit file with mixed EOL onto CRLF_nul attr=auto aeol= crlf=true
expecting success of 0027.39 'setup commit file with mixed EOL':
#Commit file with CLRF_mix_LF on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp CRLF_mix_LF $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 39 - setup commit file with mixed EOL
expecting success of 0027.40 'commit file with mixed EOL onto LF crlf=input attr=auto':
check_warning "$lfwarn" ${pfx}_LF.err
ok 40 - commit file with mixed EOL onto LF crlf=input attr=auto
expecting success of 0027.41 'commit file with mixed EOL onto CLRF attr=auto aeol= crlf=input':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 41 - commit file with mixed EOL onto CLRF attr=auto aeol= crlf=input
expecting success of 0027.42 'commit file with mixed EOL onto CRLF_mix_LF attr=auto aeol= crlf=input':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 42 - commit file with mixed EOL onto CRLF_mix_LF attr=auto aeol= crlf=input
expecting success of 0027.43 'commit file with mixed EOL onto LF_mix_cr attr=auto aeol= crlf=input ':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 43 - commit file with mixed EOL onto LF_mix_cr attr=auto aeol= crlf=input
expecting success of 0027.44 'commit file with mixed EOL onto CRLF_nul attr=auto aeol= crlf=input':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 44 - commit file with mixed EOL onto CRLF_nul attr=auto aeol= crlf=input
expecting success of 0027.45 'setup commit NNO files':
#Commit files on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp $f $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 45 - setup commit NNO files
expecting success of 0027.46 'commit NNO files crlf=false attr= LF':
check_warning "$lfwarn" ${pfx}_LF.err
ok 46 - commit NNO files crlf=false attr= LF
expecting success of 0027.47 'commit NNO files attr= aeol= crlf=false CRLF':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 47 - commit NNO files attr= aeol= crlf=false CRLF
expecting success of 0027.48 'commit NNO files attr= aeol= crlf=false CRLF_mix_LF':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 48 - commit NNO files attr= aeol= crlf=false CRLF_mix_LF
expecting success of 0027.49 'commit NNO files attr= aeol= crlf=false LF_mix_cr':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 49 - commit NNO files attr= aeol= crlf=false LF_mix_cr
expecting success of 0027.50 'commit NNO files attr= aeol= crlf=false CRLF_nul':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 50 - commit NNO files attr= aeol= crlf=false CRLF_nul
expecting success of 0027.51 'setup commit NNO files':
#Commit files on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp $f $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 51 - setup commit NNO files
expecting success of 0027.52 'commit NNO files crlf=true attr= LF':
check_warning "$lfwarn" ${pfx}_LF.err
ok 52 - commit NNO files crlf=true attr= LF
expecting success of 0027.53 'commit NNO files attr= aeol= crlf=true CRLF':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 53 - commit NNO files attr= aeol= crlf=true CRLF
expecting success of 0027.54 'commit NNO files attr= aeol= crlf=true CRLF_mix_LF':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 54 - commit NNO files attr= aeol= crlf=true CRLF_mix_LF
expecting success of 0027.55 'commit NNO files attr= aeol= crlf=true LF_mix_cr':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 55 - commit NNO files attr= aeol= crlf=true LF_mix_cr
expecting success of 0027.56 'commit NNO files attr= aeol= crlf=true CRLF_nul':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 56 - commit NNO files attr= aeol= crlf=true CRLF_nul
expecting success of 0027.57 'setup commit NNO files':
#Commit files on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp $f $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 57 - setup commit NNO files
expecting success of 0027.58 'commit NNO files crlf=input attr= LF':
check_warning "$lfwarn" ${pfx}_LF.err
ok 58 - commit NNO files crlf=input attr= LF
expecting success of 0027.59 'commit NNO files attr= aeol= crlf=input CRLF':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 59 - commit NNO files attr= aeol= crlf=input CRLF
expecting success of 0027.60 'commit NNO files attr= aeol= crlf=input CRLF_mix_LF':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 60 - commit NNO files attr= aeol= crlf=input CRLF_mix_LF
expecting success of 0027.61 'commit NNO files attr= aeol= crlf=input LF_mix_cr':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 61 - commit NNO files attr= aeol= crlf=input LF_mix_cr
expecting success of 0027.62 'commit NNO files attr= aeol= crlf=input CRLF_nul':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 62 - commit NNO files attr= aeol= crlf=input CRLF_nul
expecting success of 0027.63 'setup commit NNO files':
#Commit files on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp $f $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 63 - setup commit NNO files
expecting success of 0027.64 'commit NNO files crlf=false attr=auto LF':
check_warning "$lfwarn" ${pfx}_LF.err
ok 64 - commit NNO files crlf=false attr=auto LF
expecting success of 0027.65 'commit NNO files attr=auto aeol= crlf=false CRLF':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 65 - commit NNO files attr=auto aeol= crlf=false CRLF
expecting success of 0027.66 'commit NNO files attr=auto aeol= crlf=false CRLF_mix_LF':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 66 - commit NNO files attr=auto aeol= crlf=false CRLF_mix_LF
expecting success of 0027.67 'commit NNO files attr=auto aeol= crlf=false LF_mix_cr':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 67 - commit NNO files attr=auto aeol= crlf=false LF_mix_cr
expecting success of 0027.68 'commit NNO files attr=auto aeol= crlf=false CRLF_nul':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 68 - commit NNO files attr=auto aeol= crlf=false CRLF_nul
expecting success of 0027.69 'setup commit NNO files':
#Commit files on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp $f $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 69 - setup commit NNO files
expecting success of 0027.70 'commit NNO files crlf=true attr=auto LF':
check_warning "$lfwarn" ${pfx}_LF.err
ok 70 - commit NNO files crlf=true attr=auto LF
expecting success of 0027.71 'commit NNO files attr=auto aeol= crlf=true CRLF':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 71 - commit NNO files attr=auto aeol= crlf=true CRLF
expecting success of 0027.72 'commit NNO files attr=auto aeol= crlf=true CRLF_mix_LF':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 72 - commit NNO files attr=auto aeol= crlf=true CRLF_mix_LF
expecting success of 0027.73 'commit NNO files attr=auto aeol= crlf=true LF_mix_cr':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 73 - commit NNO files attr=auto aeol= crlf=true LF_mix_cr
expecting success of 0027.74 'commit NNO files attr=auto aeol= crlf=true CRLF_nul':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 74 - commit NNO files attr=auto aeol= crlf=true CRLF_nul
expecting success of 0027.75 'setup commit NNO files':
#Commit files on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp $f $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 75 - setup commit NNO files
expecting success of 0027.76 'commit NNO files crlf=input attr=auto LF':
check_warning "$lfwarn" ${pfx}_LF.err
ok 76 - commit NNO files crlf=input attr=auto LF
expecting success of 0027.77 'commit NNO files attr=auto aeol= crlf=input CRLF':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 77 - commit NNO files attr=auto aeol= crlf=input CRLF
expecting success of 0027.78 'commit NNO files attr=auto aeol= crlf=input CRLF_mix_LF':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 78 - commit NNO files attr=auto aeol= crlf=input CRLF_mix_LF
expecting success of 0027.79 'commit NNO files attr=auto aeol= crlf=input LF_mix_cr':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 79 - commit NNO files attr=auto aeol= crlf=input LF_mix_cr
expecting success of 0027.80 'commit NNO files attr=auto aeol= crlf=input CRLF_nul':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 80 - commit NNO files attr=auto aeol= crlf=input CRLF_nul
expecting success of 0027.81 'setup commit NNO files':
#Commit files on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp $f $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 81 - setup commit NNO files
expecting success of 0027.82 'commit NNO files crlf=true attr=-text LF':
check_warning "$lfwarn" ${pfx}_LF.err
ok 82 - commit NNO files crlf=true attr=-text LF
expecting success of 0027.83 'commit NNO files attr=-text aeol= crlf=true CRLF':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 83 - commit NNO files attr=-text aeol= crlf=true CRLF
expecting success of 0027.84 'commit NNO files attr=-text aeol= crlf=true CRLF_mix_LF':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 84 - commit NNO files attr=-text aeol= crlf=true CRLF_mix_LF
expecting success of 0027.85 'commit NNO files attr=-text aeol= crlf=true LF_mix_cr':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 85 - commit NNO files attr=-text aeol= crlf=true LF_mix_cr
expecting success of 0027.86 'commit NNO files attr=-text aeol= crlf=true CRLF_nul':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 86 - commit NNO files attr=-text aeol= crlf=true CRLF_nul
expecting success of 0027.87 'setup commit NNO files':
#Commit files on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp $f $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 87 - setup commit NNO files
expecting success of 0027.88 'commit NNO files crlf=true attr=-text LF':
check_warning "$lfwarn" ${pfx}_LF.err
ok 88 - commit NNO files crlf=true attr=-text LF
expecting success of 0027.89 'commit NNO files attr=-text aeol=lf crlf=true CRLF':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 89 - commit NNO files attr=-text aeol=lf crlf=true CRLF
expecting success of 0027.90 'commit NNO files attr=-text aeol=lf crlf=true CRLF_mix_LF':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 90 - commit NNO files attr=-text aeol=lf crlf=true CRLF_mix_LF
expecting success of 0027.91 'commit NNO files attr=-text aeol=lf crlf=true LF_mix_cr':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 91 - commit NNO files attr=-text aeol=lf crlf=true LF_mix_cr
expecting success of 0027.92 'commit NNO files attr=-text aeol=lf crlf=true CRLF_nul':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 92 - commit NNO files attr=-text aeol=lf crlf=true CRLF_nul
expecting success of 0027.93 'setup commit NNO files':
#Commit files on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp $f $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 93 - setup commit NNO files
expecting success of 0027.94 'commit NNO files crlf=true attr=-text LF':
check_warning "$lfwarn" ${pfx}_LF.err
ok 94 - commit NNO files crlf=true attr=-text LF
expecting success of 0027.95 'commit NNO files attr=-text aeol=crlf crlf=true CRLF':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 95 - commit NNO files attr=-text aeol=crlf crlf=true CRLF
expecting success of 0027.96 'commit NNO files attr=-text aeol=crlf crlf=true CRLF_mix_LF':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 96 - commit NNO files attr=-text aeol=crlf crlf=true CRLF_mix_LF
expecting success of 0027.97 'commit NNO files attr=-text aeol=crlf crlf=true LF_mix_cr':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 97 - commit NNO files attr=-text aeol=crlf crlf=true LF_mix_cr
expecting success of 0027.98 'commit NNO files attr=-text aeol=crlf crlf=true CRLF_nul':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 98 - commit NNO files attr=-text aeol=crlf crlf=true CRLF_nul
expecting success of 0027.99 'setup commit NNO files':
#Commit files on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp $f $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 99 - setup commit NNO files
expecting success of 0027.100 'commit NNO files crlf=true attr= LF':
check_warning "$lfwarn" ${pfx}_LF.err
ok 100 - commit NNO files crlf=true attr= LF
expecting success of 0027.101 'commit NNO files attr= aeol=lf crlf=true CRLF':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 101 - commit NNO files attr= aeol=lf crlf=true CRLF
expecting success of 0027.102 'commit NNO files attr= aeol=lf crlf=true CRLF_mix_LF':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 102 - commit NNO files attr= aeol=lf crlf=true CRLF_mix_LF
expecting success of 0027.103 'commit NNO files attr= aeol=lf crlf=true LF_mix_cr':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 103 - commit NNO files attr= aeol=lf crlf=true LF_mix_cr
expecting success of 0027.104 'commit NNO files attr= aeol=lf crlf=true CRLF_nul':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 104 - commit NNO files attr= aeol=lf crlf=true CRLF_nul
expecting success of 0027.105 'setup commit NNO files':
#Commit files on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp $f $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 105 - setup commit NNO files
expecting success of 0027.106 'commit NNO files crlf=true attr= LF':
check_warning "$lfwarn" ${pfx}_LF.err
ok 106 - commit NNO files crlf=true attr= LF
expecting success of 0027.107 'commit NNO files attr= aeol=crlf crlf=true CRLF':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 107 - commit NNO files attr= aeol=crlf crlf=true CRLF
expecting success of 0027.108 'commit NNO files attr= aeol=crlf crlf=true CRLF_mix_LF':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 108 - commit NNO files attr= aeol=crlf crlf=true CRLF_mix_LF
expecting success of 0027.109 'commit NNO files attr= aeol=crlf crlf=true LF_mix_cr':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 109 - commit NNO files attr= aeol=crlf crlf=true LF_mix_cr
expecting success of 0027.110 'commit NNO files attr= aeol=crlf crlf=true CRLF_nul':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 110 - commit NNO files attr= aeol=crlf crlf=true CRLF_nul
expecting success of 0027.111 'setup commit NNO files':
#Commit files on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp $f $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 111 - setup commit NNO files
expecting success of 0027.112 'commit NNO files crlf=true attr=auto LF':
check_warning "$lfwarn" ${pfx}_LF.err
ok 112 - commit NNO files crlf=true attr=auto LF
expecting success of 0027.113 'commit NNO files attr=auto aeol=lf crlf=true CRLF':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 113 - commit NNO files attr=auto aeol=lf crlf=true CRLF
expecting success of 0027.114 'commit NNO files attr=auto aeol=lf crlf=true CRLF_mix_LF':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 114 - commit NNO files attr=auto aeol=lf crlf=true CRLF_mix_LF
expecting success of 0027.115 'commit NNO files attr=auto aeol=lf crlf=true LF_mix_cr':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 115 - commit NNO files attr=auto aeol=lf crlf=true LF_mix_cr
expecting success of 0027.116 'commit NNO files attr=auto aeol=lf crlf=true CRLF_nul':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 116 - commit NNO files attr=auto aeol=lf crlf=true CRLF_nul
expecting success of 0027.117 'setup commit NNO files':
#Commit files on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp $f $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 117 - setup commit NNO files
expecting success of 0027.118 'commit NNO files crlf=true attr=auto LF':
check_warning "$lfwarn" ${pfx}_LF.err
ok 118 - commit NNO files crlf=true attr=auto LF
expecting success of 0027.119 'commit NNO files attr=auto aeol=crlf crlf=true CRLF':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 119 - commit NNO files attr=auto aeol=crlf crlf=true CRLF
expecting success of 0027.120 'commit NNO files attr=auto aeol=crlf crlf=true CRLF_mix_LF':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 120 - commit NNO files attr=auto aeol=crlf crlf=true CRLF_mix_LF
expecting success of 0027.121 'commit NNO files attr=auto aeol=crlf crlf=true LF_mix_cr':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 121 - commit NNO files attr=auto aeol=crlf crlf=true LF_mix_cr
expecting success of 0027.122 'commit NNO files attr=auto aeol=crlf crlf=true CRLF_nul':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 122 - commit NNO files attr=auto aeol=crlf crlf=true CRLF_nul
expecting success of 0027.123 'setup commit NNO files':
#Commit files on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp $f $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 123 - setup commit NNO files
expecting success of 0027.124 'commit NNO files crlf=true attr=text LF':
check_warning "$lfwarn" ${pfx}_LF.err
ok 124 - commit NNO files crlf=true attr=text LF
expecting success of 0027.125 'commit NNO files attr=text aeol=lf crlf=true CRLF':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 125 - commit NNO files attr=text aeol=lf crlf=true CRLF
expecting success of 0027.126 'commit NNO files attr=text aeol=lf crlf=true CRLF_mix_LF':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 126 - commit NNO files attr=text aeol=lf crlf=true CRLF_mix_LF
expecting success of 0027.127 'commit NNO files attr=text aeol=lf crlf=true LF_mix_cr':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 127 - commit NNO files attr=text aeol=lf crlf=true LF_mix_cr
expecting success of 0027.128 'commit NNO files attr=text aeol=lf crlf=true CRLF_nul':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 128 - commit NNO files attr=text aeol=lf crlf=true CRLF_nul
expecting success of 0027.129 'setup commit NNO files':
#Commit files on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp $f $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 129 - setup commit NNO files
expecting success of 0027.130 'commit NNO files crlf=true attr=text LF':
check_warning "$lfwarn" ${pfx}_LF.err
ok 130 - commit NNO files crlf=true attr=text LF
expecting success of 0027.131 'commit NNO files attr=text aeol=crlf crlf=true CRLF':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 131 - commit NNO files attr=text aeol=crlf crlf=true CRLF
expecting success of 0027.132 'commit NNO files attr=text aeol=crlf crlf=true CRLF_mix_LF':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 132 - commit NNO files attr=text aeol=crlf crlf=true CRLF_mix_LF
expecting success of 0027.133 'commit NNO files attr=text aeol=crlf crlf=true LF_mix_cr':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 133 - commit NNO files attr=text aeol=crlf crlf=true LF_mix_cr
expecting success of 0027.134 'commit NNO files attr=text aeol=crlf crlf=true CRLF_nul':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 134 - commit NNO files attr=text aeol=crlf crlf=true CRLF_nul
expecting success of 0027.135 'setup commit NNO files':
#Commit files on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp $f $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 135 - setup commit NNO files
expecting success of 0027.136 'commit NNO files crlf=false attr=-text LF':
check_warning "$lfwarn" ${pfx}_LF.err
ok 136 - commit NNO files crlf=false attr=-text LF
expecting success of 0027.137 'commit NNO files attr=-text aeol= crlf=false CRLF':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 137 - commit NNO files attr=-text aeol= crlf=false CRLF
expecting success of 0027.138 'commit NNO files attr=-text aeol= crlf=false CRLF_mix_LF':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 138 - commit NNO files attr=-text aeol= crlf=false CRLF_mix_LF
expecting success of 0027.139 'commit NNO files attr=-text aeol= crlf=false LF_mix_cr':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 139 - commit NNO files attr=-text aeol= crlf=false LF_mix_cr
expecting success of 0027.140 'commit NNO files attr=-text aeol= crlf=false CRLF_nul':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 140 - commit NNO files attr=-text aeol= crlf=false CRLF_nul
expecting success of 0027.141 'setup commit NNO files':
#Commit files on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp $f $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 141 - setup commit NNO files
expecting success of 0027.142 'commit NNO files crlf=false attr=-text LF':
check_warning "$lfwarn" ${pfx}_LF.err
ok 142 - commit NNO files crlf=false attr=-text LF
expecting success of 0027.143 'commit NNO files attr=-text aeol=lf crlf=false CRLF':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 143 - commit NNO files attr=-text aeol=lf crlf=false CRLF
expecting success of 0027.144 'commit NNO files attr=-text aeol=lf crlf=false CRLF_mix_LF':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 144 - commit NNO files attr=-text aeol=lf crlf=false CRLF_mix_LF
expecting success of 0027.145 'commit NNO files attr=-text aeol=lf crlf=false LF_mix_cr':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 145 - commit NNO files attr=-text aeol=lf crlf=false LF_mix_cr
expecting success of 0027.146 'commit NNO files attr=-text aeol=lf crlf=false CRLF_nul':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 146 - commit NNO files attr=-text aeol=lf crlf=false CRLF_nul
expecting success of 0027.147 'setup commit NNO files':
#Commit files on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp $f $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 147 - setup commit NNO files
expecting success of 0027.148 'commit NNO files crlf=false attr=-text LF':
check_warning "$lfwarn" ${pfx}_LF.err
ok 148 - commit NNO files crlf=false attr=-text LF
expecting success of 0027.149 'commit NNO files attr=-text aeol=crlf crlf=false CRLF':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 149 - commit NNO files attr=-text aeol=crlf crlf=false CRLF
expecting success of 0027.150 'commit NNO files attr=-text aeol=crlf crlf=false CRLF_mix_LF':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 150 - commit NNO files attr=-text aeol=crlf crlf=false CRLF_mix_LF
expecting success of 0027.151 'commit NNO files attr=-text aeol=crlf crlf=false LF_mix_cr':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 151 - commit NNO files attr=-text aeol=crlf crlf=false LF_mix_cr
expecting success of 0027.152 'commit NNO files attr=-text aeol=crlf crlf=false CRLF_nul':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 152 - commit NNO files attr=-text aeol=crlf crlf=false CRLF_nul
expecting success of 0027.153 'setup commit NNO files':
#Commit files on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp $f $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 153 - setup commit NNO files
expecting success of 0027.154 'commit NNO files crlf=false attr= LF':
check_warning "$lfwarn" ${pfx}_LF.err
ok 154 - commit NNO files crlf=false attr= LF
expecting success of 0027.155 'commit NNO files attr= aeol=lf crlf=false CRLF':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 155 - commit NNO files attr= aeol=lf crlf=false CRLF
expecting success of 0027.156 'commit NNO files attr= aeol=lf crlf=false CRLF_mix_LF':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 156 - commit NNO files attr= aeol=lf crlf=false CRLF_mix_LF
expecting success of 0027.157 'commit NNO files attr= aeol=lf crlf=false LF_mix_cr':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 157 - commit NNO files attr= aeol=lf crlf=false LF_mix_cr
expecting success of 0027.158 'commit NNO files attr= aeol=lf crlf=false CRLF_nul':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 158 - commit NNO files attr= aeol=lf crlf=false CRLF_nul
expecting success of 0027.159 'setup commit NNO files':
#Commit files on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp $f $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 159 - setup commit NNO files
expecting success of 0027.160 'commit NNO files crlf=false attr= LF':
check_warning "$lfwarn" ${pfx}_LF.err
ok 160 - commit NNO files crlf=false attr= LF
expecting success of 0027.161 'commit NNO files attr= aeol=crlf crlf=false CRLF':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 161 - commit NNO files attr= aeol=crlf crlf=false CRLF
expecting success of 0027.162 'commit NNO files attr= aeol=crlf crlf=false CRLF_mix_LF':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 162 - commit NNO files attr= aeol=crlf crlf=false CRLF_mix_LF
expecting success of 0027.163 'commit NNO files attr= aeol=crlf crlf=false LF_mix_cr':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 163 - commit NNO files attr= aeol=crlf crlf=false LF_mix_cr
expecting success of 0027.164 'commit NNO files attr= aeol=crlf crlf=false CRLF_nul':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 164 - commit NNO files attr= aeol=crlf crlf=false CRLF_nul
expecting success of 0027.165 'setup commit NNO files':
#Commit files on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp $f $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 165 - setup commit NNO files
expecting success of 0027.166 'commit NNO files crlf=false attr=auto LF':
check_warning "$lfwarn" ${pfx}_LF.err
ok 166 - commit NNO files crlf=false attr=auto LF
expecting success of 0027.167 'commit NNO files attr=auto aeol=lf crlf=false CRLF':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 167 - commit NNO files attr=auto aeol=lf crlf=false CRLF
expecting success of 0027.168 'commit NNO files attr=auto aeol=lf crlf=false CRLF_mix_LF':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 168 - commit NNO files attr=auto aeol=lf crlf=false CRLF_mix_LF
expecting success of 0027.169 'commit NNO files attr=auto aeol=lf crlf=false LF_mix_cr':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 169 - commit NNO files attr=auto aeol=lf crlf=false LF_mix_cr
expecting success of 0027.170 'commit NNO files attr=auto aeol=lf crlf=false CRLF_nul':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 170 - commit NNO files attr=auto aeol=lf crlf=false CRLF_nul
expecting success of 0027.171 'setup commit NNO files':
#Commit files on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp $f $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 171 - setup commit NNO files
expecting success of 0027.172 'commit NNO files crlf=false attr=auto LF':
check_warning "$lfwarn" ${pfx}_LF.err
ok 172 - commit NNO files crlf=false attr=auto LF
expecting success of 0027.173 'commit NNO files attr=auto aeol=crlf crlf=false CRLF':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 173 - commit NNO files attr=auto aeol=crlf crlf=false CRLF
expecting success of 0027.174 'commit NNO files attr=auto aeol=crlf crlf=false CRLF_mix_LF':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 174 - commit NNO files attr=auto aeol=crlf crlf=false CRLF_mix_LF
expecting success of 0027.175 'commit NNO files attr=auto aeol=crlf crlf=false LF_mix_cr':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 175 - commit NNO files attr=auto aeol=crlf crlf=false LF_mix_cr
expecting success of 0027.176 'commit NNO files attr=auto aeol=crlf crlf=false CRLF_nul':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 176 - commit NNO files attr=auto aeol=crlf crlf=false CRLF_nul
expecting success of 0027.177 'setup commit NNO files':
#Commit files on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp $f $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 177 - setup commit NNO files
expecting success of 0027.178 'commit NNO files crlf=false attr=text LF':
check_warning "$lfwarn" ${pfx}_LF.err
ok 178 - commit NNO files crlf=false attr=text LF
expecting success of 0027.179 'commit NNO files attr=text aeol=lf crlf=false CRLF':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 179 - commit NNO files attr=text aeol=lf crlf=false CRLF
expecting success of 0027.180 'commit NNO files attr=text aeol=lf crlf=false CRLF_mix_LF':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 180 - commit NNO files attr=text aeol=lf crlf=false CRLF_mix_LF
expecting success of 0027.181 'commit NNO files attr=text aeol=lf crlf=false LF_mix_cr':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 181 - commit NNO files attr=text aeol=lf crlf=false LF_mix_cr
expecting success of 0027.182 'commit NNO files attr=text aeol=lf crlf=false CRLF_nul':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 182 - commit NNO files attr=text aeol=lf crlf=false CRLF_nul
expecting success of 0027.183 'setup commit NNO files':
#Commit files on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp $f $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 183 - setup commit NNO files
expecting success of 0027.184 'commit NNO files crlf=false attr=text LF':
check_warning "$lfwarn" ${pfx}_LF.err
ok 184 - commit NNO files crlf=false attr=text LF
expecting success of 0027.185 'commit NNO files attr=text aeol=crlf crlf=false CRLF':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 185 - commit NNO files attr=text aeol=crlf crlf=false CRLF
expecting success of 0027.186 'commit NNO files attr=text aeol=crlf crlf=false CRLF_mix_LF':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 186 - commit NNO files attr=text aeol=crlf crlf=false CRLF_mix_LF
expecting success of 0027.187 'commit NNO files attr=text aeol=crlf crlf=false LF_mix_cr':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 187 - commit NNO files attr=text aeol=crlf crlf=false LF_mix_cr
expecting success of 0027.188 'commit NNO files attr=text aeol=crlf crlf=false CRLF_nul':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 188 - commit NNO files attr=text aeol=crlf crlf=false CRLF_nul
expecting success of 0027.189 'setup commit NNO files':
#Commit files on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp $f $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 189 - setup commit NNO files
expecting success of 0027.190 'commit NNO files crlf=input attr=-text LF':
check_warning "$lfwarn" ${pfx}_LF.err
ok 190 - commit NNO files crlf=input attr=-text LF
expecting success of 0027.191 'commit NNO files attr=-text aeol= crlf=input CRLF':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 191 - commit NNO files attr=-text aeol= crlf=input CRLF
expecting success of 0027.192 'commit NNO files attr=-text aeol= crlf=input CRLF_mix_LF':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 192 - commit NNO files attr=-text aeol= crlf=input CRLF_mix_LF
expecting success of 0027.193 'commit NNO files attr=-text aeol= crlf=input LF_mix_cr':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 193 - commit NNO files attr=-text aeol= crlf=input LF_mix_cr
expecting success of 0027.194 'commit NNO files attr=-text aeol= crlf=input CRLF_nul':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 194 - commit NNO files attr=-text aeol= crlf=input CRLF_nul
expecting success of 0027.195 'setup commit NNO files':
#Commit files on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp $f $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 195 - setup commit NNO files
expecting success of 0027.196 'commit NNO files crlf=input attr=-text LF':
check_warning "$lfwarn" ${pfx}_LF.err
ok 196 - commit NNO files crlf=input attr=-text LF
expecting success of 0027.197 'commit NNO files attr=-text aeol=lf crlf=input CRLF':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 197 - commit NNO files attr=-text aeol=lf crlf=input CRLF
expecting success of 0027.198 'commit NNO files attr=-text aeol=lf crlf=input CRLF_mix_LF':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 198 - commit NNO files attr=-text aeol=lf crlf=input CRLF_mix_LF
expecting success of 0027.199 'commit NNO files attr=-text aeol=lf crlf=input LF_mix_cr':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 199 - commit NNO files attr=-text aeol=lf crlf=input LF_mix_cr
expecting success of 0027.200 'commit NNO files attr=-text aeol=lf crlf=input CRLF_nul':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 200 - commit NNO files attr=-text aeol=lf crlf=input CRLF_nul
expecting success of 0027.201 'setup commit NNO files':
#Commit files on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp $f $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 201 - setup commit NNO files
expecting success of 0027.202 'commit NNO files crlf=input attr=-text LF':
check_warning "$lfwarn" ${pfx}_LF.err
ok 202 - commit NNO files crlf=input attr=-text LF
expecting success of 0027.203 'commit NNO files attr=-text aeol=crlf crlf=input CRLF':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 203 - commit NNO files attr=-text aeol=crlf crlf=input CRLF
expecting success of 0027.204 'commit NNO files attr=-text aeol=crlf crlf=input CRLF_mix_LF':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 204 - commit NNO files attr=-text aeol=crlf crlf=input CRLF_mix_LF
expecting success of 0027.205 'commit NNO files attr=-text aeol=crlf crlf=input LF_mix_cr':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 205 - commit NNO files attr=-text aeol=crlf crlf=input LF_mix_cr
expecting success of 0027.206 'commit NNO files attr=-text aeol=crlf crlf=input CRLF_nul':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 206 - commit NNO files attr=-text aeol=crlf crlf=input CRLF_nul
expecting success of 0027.207 'setup commit NNO files':
#Commit files on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp $f $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 207 - setup commit NNO files
expecting success of 0027.208 'commit NNO files crlf=input attr= LF':
check_warning "$lfwarn" ${pfx}_LF.err
ok 208 - commit NNO files crlf=input attr= LF
expecting success of 0027.209 'commit NNO files attr= aeol=lf crlf=input CRLF':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 209 - commit NNO files attr= aeol=lf crlf=input CRLF
expecting success of 0027.210 'commit NNO files attr= aeol=lf crlf=input CRLF_mix_LF':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 210 - commit NNO files attr= aeol=lf crlf=input CRLF_mix_LF
expecting success of 0027.211 'commit NNO files attr= aeol=lf crlf=input LF_mix_cr':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 211 - commit NNO files attr= aeol=lf crlf=input LF_mix_cr
expecting success of 0027.212 'commit NNO files attr= aeol=lf crlf=input CRLF_nul':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 212 - commit NNO files attr= aeol=lf crlf=input CRLF_nul
expecting success of 0027.213 'setup commit NNO files':
#Commit files on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp $f $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 213 - setup commit NNO files
expecting success of 0027.214 'commit NNO files crlf=input attr= LF':
check_warning "$lfwarn" ${pfx}_LF.err
ok 214 - commit NNO files crlf=input attr= LF
expecting success of 0027.215 'commit NNO files attr= aeol=crlf crlf=input CRLF':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 215 - commit NNO files attr= aeol=crlf crlf=input CRLF
expecting success of 0027.216 'commit NNO files attr= aeol=crlf crlf=input CRLF_mix_LF':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 216 - commit NNO files attr= aeol=crlf crlf=input CRLF_mix_LF
expecting success of 0027.217 'commit NNO files attr= aeol=crlf crlf=input LF_mix_cr':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 217 - commit NNO files attr= aeol=crlf crlf=input LF_mix_cr
expecting success of 0027.218 'commit NNO files attr= aeol=crlf crlf=input CRLF_nul':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 218 - commit NNO files attr= aeol=crlf crlf=input CRLF_nul
expecting success of 0027.219 'setup commit NNO files':
#Commit files on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp $f $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 219 - setup commit NNO files
expecting success of 0027.220 'commit NNO files crlf=input attr=auto LF':
check_warning "$lfwarn" ${pfx}_LF.err
ok 220 - commit NNO files crlf=input attr=auto LF
expecting success of 0027.221 'commit NNO files attr=auto aeol=lf crlf=input CRLF':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 221 - commit NNO files attr=auto aeol=lf crlf=input CRLF
expecting success of 0027.222 'commit NNO files attr=auto aeol=lf crlf=input CRLF_mix_LF':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 222 - commit NNO files attr=auto aeol=lf crlf=input CRLF_mix_LF
expecting success of 0027.223 'commit NNO files attr=auto aeol=lf crlf=input LF_mix_cr':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 223 - commit NNO files attr=auto aeol=lf crlf=input LF_mix_cr
expecting success of 0027.224 'commit NNO files attr=auto aeol=lf crlf=input CRLF_nul':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 224 - commit NNO files attr=auto aeol=lf crlf=input CRLF_nul
expecting success of 0027.225 'setup commit NNO files':
#Commit files on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp $f $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 225 - setup commit NNO files
expecting success of 0027.226 'commit NNO files crlf=input attr=auto LF':
check_warning "$lfwarn" ${pfx}_LF.err
ok 226 - commit NNO files crlf=input attr=auto LF
expecting success of 0027.227 'commit NNO files attr=auto aeol=crlf crlf=input CRLF':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 227 - commit NNO files attr=auto aeol=crlf crlf=input CRLF
expecting success of 0027.228 'commit NNO files attr=auto aeol=crlf crlf=input CRLF_mix_LF':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 228 - commit NNO files attr=auto aeol=crlf crlf=input CRLF_mix_LF
expecting success of 0027.229 'commit NNO files attr=auto aeol=crlf crlf=input LF_mix_cr':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 229 - commit NNO files attr=auto aeol=crlf crlf=input LF_mix_cr
expecting success of 0027.230 'commit NNO files attr=auto aeol=crlf crlf=input CRLF_nul':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 230 - commit NNO files attr=auto aeol=crlf crlf=input CRLF_nul
expecting success of 0027.231 'setup commit NNO files':
#Commit files on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp $f $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 231 - setup commit NNO files
expecting success of 0027.232 'commit NNO files crlf=input attr=text LF':
check_warning "$lfwarn" ${pfx}_LF.err
ok 232 - commit NNO files crlf=input attr=text LF
expecting success of 0027.233 'commit NNO files attr=text aeol=lf crlf=input CRLF':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 233 - commit NNO files attr=text aeol=lf crlf=input CRLF
expecting success of 0027.234 'commit NNO files attr=text aeol=lf crlf=input CRLF_mix_LF':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 234 - commit NNO files attr=text aeol=lf crlf=input CRLF_mix_LF
expecting success of 0027.235 'commit NNO files attr=text aeol=lf crlf=input LF_mix_cr':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 235 - commit NNO files attr=text aeol=lf crlf=input LF_mix_cr
expecting success of 0027.236 'commit NNO files attr=text aeol=lf crlf=input CRLF_nul':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 236 - commit NNO files attr=text aeol=lf crlf=input CRLF_nul
expecting success of 0027.237 'setup commit NNO files':
#Commit files on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp $f $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 237 - setup commit NNO files
expecting success of 0027.238 'commit NNO files crlf=input attr=text LF':
check_warning "$lfwarn" ${pfx}_LF.err
ok 238 - commit NNO files crlf=input attr=text LF
expecting success of 0027.239 'commit NNO files attr=text aeol=crlf crlf=input CRLF':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 239 - commit NNO files attr=text aeol=crlf crlf=input CRLF
expecting success of 0027.240 'commit NNO files attr=text aeol=crlf crlf=input CRLF_mix_LF':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 240 - commit NNO files attr=text aeol=crlf crlf=input CRLF_mix_LF
expecting success of 0027.241 'commit NNO files attr=text aeol=crlf crlf=input LF_mix_cr':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 241 - commit NNO files attr=text aeol=crlf crlf=input LF_mix_cr
expecting success of 0027.242 'commit NNO files attr=text aeol=crlf crlf=input CRLF_nul':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 242 - commit NNO files attr=text aeol=crlf crlf=input CRLF_nul
expecting success of 0027.243 'setup commit NNO files':
#Commit files on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp $f $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 243 - setup commit NNO files
expecting success of 0027.244 'commit NNO files crlf=false attr=text LF':
check_warning "$lfwarn" ${pfx}_LF.err
ok 244 - commit NNO files crlf=false attr=text LF
expecting success of 0027.245 'commit NNO files attr=text aeol= crlf=false CRLF':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 245 - commit NNO files attr=text aeol= crlf=false CRLF
expecting success of 0027.246 'commit NNO files attr=text aeol= crlf=false CRLF_mix_LF':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 246 - commit NNO files attr=text aeol= crlf=false CRLF_mix_LF
expecting success of 0027.247 'commit NNO files attr=text aeol= crlf=false LF_mix_cr':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 247 - commit NNO files attr=text aeol= crlf=false LF_mix_cr
expecting success of 0027.248 'commit NNO files attr=text aeol= crlf=false CRLF_nul':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 248 - commit NNO files attr=text aeol= crlf=false CRLF_nul
expecting success of 0027.249 'setup commit NNO files':
#Commit files on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp $f $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 249 - setup commit NNO files
expecting success of 0027.250 'commit NNO files crlf=true attr=text LF':
check_warning "$lfwarn" ${pfx}_LF.err
ok 250 - commit NNO files crlf=true attr=text LF
expecting success of 0027.251 'commit NNO files attr=text aeol= crlf=true CRLF':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 251 - commit NNO files attr=text aeol= crlf=true CRLF
expecting success of 0027.252 'commit NNO files attr=text aeol= crlf=true CRLF_mix_LF':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 252 - commit NNO files attr=text aeol= crlf=true CRLF_mix_LF
expecting success of 0027.253 'commit NNO files attr=text aeol= crlf=true LF_mix_cr':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 253 - commit NNO files attr=text aeol= crlf=true LF_mix_cr
expecting success of 0027.254 'commit NNO files attr=text aeol= crlf=true CRLF_nul':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 254 - commit NNO files attr=text aeol= crlf=true CRLF_nul
expecting success of 0027.255 'setup commit NNO files':
#Commit files on top of existing file
create_gitattributes "$attr" $aeol &&
for f in LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
do
fname=${pfx}_$f.txt &&
cp $f $fname &&
printf Z >>"$fname" &&
git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" ||
return 1
done
ok 255 - setup commit NNO files
expecting success of 0027.256 'commit NNO files crlf=input attr=text LF':
check_warning "$lfwarn" ${pfx}_LF.err
ok 256 - commit NNO files crlf=input attr=text LF
expecting success of 0027.257 'commit NNO files attr=text aeol= crlf=input CRLF':
check_warning "$crlfwarn" ${pfx}_CRLF.err
ok 257 - commit NNO files attr=text aeol= crlf=input CRLF
expecting success of 0027.258 'commit NNO files attr=text aeol= crlf=input CRLF_mix_LF':
check_warning "$lfmixcrlf" ${pfx}_CRLF_mix_LF.err
ok 258 - commit NNO files attr=text aeol= crlf=input CRLF_mix_LF
expecting success of 0027.259 'commit NNO files attr=text aeol= crlf=input LF_mix_cr':
check_warning "$lfmixcr" ${pfx}_LF_mix_CR.err
ok 259 - commit NNO files attr=text aeol= crlf=input LF_mix_cr
expecting success of 0027.260 'commit NNO files attr=text aeol= crlf=input CRLF_nul':
check_warning "$crlfnul" ${pfx}_CRLF_nul.err
ok 260 - commit NNO files attr=text aeol= crlf=input CRLF_nul
expecting success of 0027.261 'commit NNO and cleanup':
git commit -m "commit files on top of NNO" &&
rm -f *.txt &&
git -c core.autocrlf=false reset --hard
[main 35da0ca] commit files on top of NNO
Author: A U Thor <author@example.com>
210 files changed, 332 insertions(+), 362 deletions(-)
HEAD is now at 35da0ca commit files on top of NNO
ok 261 - commit NNO and cleanup
expecting success of 0027.262 'commit empty gitattribues':
check_files_in_repo false "" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul &&
check_files_in_repo true "" LF LF LF LF_mix_CR CRLF_nul &&
check_files_in_repo input "" LF LF LF LF_mix_CR CRLF_nul
ok 262 - commit empty gitattribues
expecting success of 0027.263 'commit text=auto':
check_files_in_repo false "auto" LF LF LF LF_mix_CR CRLF_nul &&
check_files_in_repo true "auto" LF LF LF LF_mix_CR CRLF_nul &&
check_files_in_repo input "auto" LF LF LF LF_mix_CR CRLF_nul
ok 263 - commit text=auto
expecting success of 0027.264 'commit text':
check_files_in_repo false "text" LF LF LF LF_mix_CR LF_nul &&
check_files_in_repo true "text" LF LF LF LF_mix_CR LF_nul &&
check_files_in_repo input "text" LF LF LF LF_mix_CR LF_nul
ok 264 - commit text
expecting success of 0027.265 'commit -text':
check_files_in_repo false "-text" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul &&
check_files_in_repo true "-text" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul &&
check_files_in_repo input "-text" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul
ok 265 - commit -text
expecting success of 0027.266 'compare_files LF NNO_attr__aeol__true_LF.txt':
compare_files $lfname ${pfx}_LF.txt
ok 266 - compare_files LF NNO_attr__aeol__true_LF.txt
expecting success of 0027.267 'compare_files CRLF NNO_attr__aeol__true_CRLF.txt':
compare_files $crlfname ${pfx}_CRLF.txt
ok 267 - compare_files CRLF NNO_attr__aeol__true_CRLF.txt
expecting success of 0027.268 'compare_files CRLF_mix_LF NNO_attr__aeol__true_CRLF_mix_LF.txt':
compare_files $lfmixcrlf ${pfx}_CRLF_mix_LF.txt
ok 268 - compare_files CRLF_mix_LF NNO_attr__aeol__true_CRLF_mix_LF.txt
expecting success of 0027.269 'compare_files LF_mix_CR NNO_attr__aeol__true_LF_mix_CR.txt':
compare_files $lfmixcr ${pfx}_LF_mix_CR.txt
ok 269 - compare_files LF_mix_CR NNO_attr__aeol__true_LF_mix_CR.txt
expecting success of 0027.270 'compare_files CRLF_nul NNO_attr__aeol__true_CRLF_nul.txt':
compare_files $crlfnul ${pfx}_CRLF_nul.txt
ok 270 - compare_files CRLF_nul NNO_attr__aeol__true_CRLF_nul.txt
expecting success of 0027.271 'compare_files LF NNO_attr_-text_aeol__true_LF.txt':
compare_files $lfname ${pfx}_LF.txt
ok 271 - compare_files LF NNO_attr_-text_aeol__true_LF.txt
expecting success of 0027.272 'compare_files CRLF NNO_attr_-text_aeol__true_CRLF.txt':
compare_files $crlfname ${pfx}_CRLF.txt
ok 272 - compare_files CRLF NNO_attr_-text_aeol__true_CRLF.txt
expecting success of 0027.273 'compare_files CRLF_mix_LF NNO_attr_-text_aeol__true_CRLF_mix_LF.txt':
compare_files $lfmixcrlf ${pfx}_CRLF_mix_LF.txt
ok 273 - compare_files CRLF_mix_LF NNO_attr_-text_aeol__true_CRLF_mix_LF.txt
expecting success of 0027.274 'compare_files LF_mix_CR NNO_attr_-text_aeol__true_LF_mix_CR.txt':
compare_files $lfmixcr ${pfx}_LF_mix_CR.txt
ok 274 - compare_files LF_mix_CR NNO_attr_-text_aeol__true_LF_mix_CR.txt
expecting success of 0027.275 'compare_files CRLF_nul NNO_attr_-text_aeol__true_CRLF_nul.txt':
compare_files $crlfnul ${pfx}_CRLF_nul.txt
ok 275 - compare_files CRLF_nul NNO_attr_-text_aeol__true_CRLF_nul.txt
expecting success of 0027.276 'compare_files LF NNO_attr_-text_aeol_lf_true_LF.txt':
compare_files $lfname ${pfx}_LF.txt
ok 276 - compare_files LF NNO_attr_-text_aeol_lf_true_LF.txt
expecting success of 0027.277 'compare_files CRLF NNO_attr_-text_aeol_lf_true_CRLF.txt':
compare_files $crlfname ${pfx}_CRLF.txt
ok 277 - compare_files CRLF NNO_attr_-text_aeol_lf_true_CRLF.txt
expecting success of 0027.278 'compare_files CRLF_mix_LF NNO_attr_-text_aeol_lf_true_CRLF_mix_LF.txt':
compare_files $lfmixcrlf ${pfx}_CRLF_mix_LF.txt
ok 278 - compare_files CRLF_mix_LF NNO_attr_-text_aeol_lf_true_CRLF_mix_LF.txt
expecting success of 0027.279 'compare_files LF_mix_CR NNO_attr_-text_aeol_lf_true_LF_mix_CR.txt':
compare_files $lfmixcr ${pfx}_LF_mix_CR.txt
ok 279 - compare_files LF_mix_CR NNO_attr_-text_aeol_lf_true_LF_mix_CR.txt
expecting success of 0027.280 'compare_files CRLF_nul NNO_attr_-text_aeol_lf_true_CRLF_nul.txt':
compare_files $crlfnul ${pfx}_CRLF_nul.txt
ok 280 - compare_files CRLF_nul NNO_attr_-text_aeol_lf_true_CRLF_nul.txt
expecting success of 0027.281 'compare_files LF NNO_attr_-text_aeol_crlf_true_LF.txt':
compare_files $lfname ${pfx}_LF.txt
ok 281 - compare_files LF NNO_attr_-text_aeol_crlf_true_LF.txt
expecting success of 0027.282 'compare_files CRLF NNO_attr_-text_aeol_crlf_true_CRLF.txt':
compare_files $crlfname ${pfx}_CRLF.txt
ok 282 - compare_files CRLF NNO_attr_-text_aeol_crlf_true_CRLF.txt
expecting success of 0027.283 'compare_files CRLF_mix_LF NNO_attr_-text_aeol_crlf_true_CRLF_mix_LF.txt':
compare_files $lfmixcrlf ${pfx}_CRLF_mix_LF.txt
ok 283 - compare_files CRLF_mix_LF NNO_attr_-text_aeol_crlf_true_CRLF_mix_LF.txt
expecting success of 0027.284 'compare_files LF_mix_CR NNO_attr_-text_aeol_crlf_true_LF_mix_CR.txt':
compare_files $lfmixcr ${pfx}_LF_mix_CR.txt
ok 284 - compare_files LF_mix_CR NNO_attr_-text_aeol_crlf_true_LF_mix_CR.txt
expecting success of 0027.285 'compare_files CRLF_nul NNO_attr_-text_aeol_crlf_true_CRLF_nul.txt':
compare_files $crlfnul ${pfx}_CRLF_nul.txt
ok 285 - compare_files CRLF_nul NNO_attr_-text_aeol_crlf_true_CRLF_nul.txt
expecting success of 0027.286 'compare_files LF NNO_attr_auto_aeol__true_LF.txt':
compare_files $lfname ${pfx}_LF.txt
ok 286 - compare_files LF NNO_attr_auto_aeol__true_LF.txt
expecting success of 0027.287 'compare_files CRLF NNO_attr_auto_aeol__true_CRLF.txt':
compare_files $crlfname ${pfx}_CRLF.txt
ok 287 - compare_files CRLF NNO_attr_auto_aeol__true_CRLF.txt
expecting success of 0027.288 'compare_files CRLF_mix_LF NNO_attr_auto_aeol__true_CRLF_mix_LF.txt':
compare_files $lfmixcrlf ${pfx}_CRLF_mix_LF.txt
ok 288 - compare_files CRLF_mix_LF NNO_attr_auto_aeol__true_CRLF_mix_LF.txt
expecting success of 0027.289 'compare_files LF_mix_CR NNO_attr_auto_aeol__true_LF_mix_CR.txt':
compare_files $lfmixcr ${pfx}_LF_mix_CR.txt
ok 289 - compare_files LF_mix_CR NNO_attr_auto_aeol__true_LF_mix_CR.txt
expecting success of 0027.290 'compare_files CRLF_nul NNO_attr_auto_aeol__true_CRLF_nul.txt':
compare_files $crlfnul ${pfx}_CRLF_nul.txt
ok 290 - compare_files CRLF_nul NNO_attr_auto_aeol__true_CRLF_nul.txt
expecting success of 0027.291 'compare_files LF NNO_attr_auto_aeol_lf_true_LF.txt':
compare_files $lfname ${pfx}_LF.txt
ok 291 - compare_files LF NNO_attr_auto_aeol_lf_true_LF.txt
expecting success of 0027.292 'compare_files CRLF NNO_attr_auto_aeol_lf_true_CRLF.txt':
compare_files $crlfname ${pfx}_CRLF.txt
ok 292 - compare_files CRLF NNO_attr_auto_aeol_lf_true_CRLF.txt
expecting success of 0027.293 'compare_files CRLF_mix_LF NNO_attr_auto_aeol_lf_true_CRLF_mix_LF.txt':
compare_files $lfmixcrlf ${pfx}_CRLF_mix_LF.txt
ok 293 - compare_files CRLF_mix_LF NNO_attr_auto_aeol_lf_true_CRLF_mix_LF.txt
expecting success of 0027.294 'compare_files LF_mix_CR NNO_attr_auto_aeol_lf_true_LF_mix_CR.txt':
compare_files $lfmixcr ${pfx}_LF_mix_CR.txt
ok 294 - compare_files LF_mix_CR NNO_attr_auto_aeol_lf_true_LF_mix_CR.txt
expecting success of 0027.295 'compare_files CRLF_nul NNO_attr_auto_aeol_lf_true_CRLF_nul.txt':
compare_files $crlfnul ${pfx}_CRLF_nul.txt
ok 295 - compare_files CRLF_nul NNO_attr_auto_aeol_lf_true_CRLF_nul.txt
expecting success of 0027.296 'compare_files LF NNO_attr_auto_aeol_crlf_true_LF.txt':
compare_files $lfname ${pfx}_LF.txt
ok 296 - compare_files LF NNO_attr_auto_aeol_crlf_true_LF.txt
expecting success of 0027.297 'compare_files CRLF NNO_attr_auto_aeol_crlf_true_CRLF.txt':
compare_files $crlfname ${pfx}_CRLF.txt
ok 297 - compare_files CRLF NNO_attr_auto_aeol_crlf_true_CRLF.txt
expecting success of 0027.298 'compare_files CRLF_mix_LF NNO_attr_auto_aeol_crlf_true_CRLF_mix_LF.txt':
compare_files $lfmixcrlf ${pfx}_CRLF_mix_LF.txt
ok 298 - compare_files CRLF_mix_LF NNO_attr_auto_aeol_crlf_true_CRLF_mix_LF.txt
expecting success of 0027.299 'compare_files LF_mix_CR NNO_attr_auto_aeol_crlf_true_LF_mix_CR.txt':
compare_files $lfmixcr ${pfx}_LF_mix_CR.txt
ok 299 - compare_files LF_mix_CR NNO_attr_auto_aeol_crlf_true_LF_mix_CR.txt
expecting success of 0027.300 'compare_files CRLF_nul NNO_attr_auto_aeol_crlf_true_CRLF_nul.txt':
compare_files $crlfnul ${pfx}_CRLF_nul.txt
ok 300 - compare_files CRLF_nul NNO_attr_auto_aeol_crlf_true_CRLF_nul.txt
expecting success of 0027.301 'compare_files LF NNO_attr_text_aeol__true_LF.txt':
compare_files $lfname ${pfx}_LF.txt
ok 301 - compare_files LF NNO_attr_text_aeol__true_LF.txt
expecting success of 0027.302 'compare_files LF NNO_attr_text_aeol__true_CRLF.txt':
compare_files $crlfname ${pfx}_CRLF.txt
ok 302 - compare_files LF NNO_attr_text_aeol__true_CRLF.txt
expecting success of 0027.303 'compare_files LF NNO_attr_text_aeol__true_CRLF_mix_LF.txt':
compare_files $lfmixcrlf ${pfx}_CRLF_mix_LF.txt
ok 303 - compare_files LF NNO_attr_text_aeol__true_CRLF_mix_LF.txt
expecting success of 0027.304 'compare_files LF_mix_CR NNO_attr_text_aeol__true_LF_mix_CR.txt':
compare_files $lfmixcr ${pfx}_LF_mix_CR.txt
ok 304 - compare_files LF_mix_CR NNO_attr_text_aeol__true_LF_mix_CR.txt
expecting success of 0027.305 'compare_files LF_nul NNO_attr_text_aeol__true_CRLF_nul.txt':
compare_files $crlfnul ${pfx}_CRLF_nul.txt
ok 305 - compare_files LF_nul NNO_attr_text_aeol__true_CRLF_nul.txt
expecting success of 0027.306 'compare_files LF NNO_attr_text_aeol_lf_true_LF.txt':
compare_files $lfname ${pfx}_LF.txt
ok 306 - compare_files LF NNO_attr_text_aeol_lf_true_LF.txt
expecting success of 0027.307 'compare_files LF NNO_attr_text_aeol_lf_true_CRLF.txt':
compare_files $crlfname ${pfx}_CRLF.txt
ok 307 - compare_files LF NNO_attr_text_aeol_lf_true_CRLF.txt
expecting success of 0027.308 'compare_files LF NNO_attr_text_aeol_lf_true_CRLF_mix_LF.txt':
compare_files $lfmixcrlf ${pfx}_CRLF_mix_LF.txt
ok 308 - compare_files LF NNO_attr_text_aeol_lf_true_CRLF_mix_LF.txt
expecting success of 0027.309 'compare_files LF_mix_CR NNO_attr_text_aeol_lf_true_LF_mix_CR.txt':
compare_files $lfmixcr ${pfx}_LF_mix_CR.txt
ok 309 - compare_files LF_mix_CR NNO_attr_text_aeol_lf_true_LF_mix_CR.txt
expecting success of 0027.310 'compare_files LF_nul NNO_attr_text_aeol_lf_true_CRLF_nul.txt':
compare_files $crlfnul ${pfx}_CRLF_nul.txt
ok 310 - compare_files LF_nul NNO_attr_text_aeol_lf_true_CRLF_nul.txt
expecting success of 0027.311 'compare_files LF NNO_attr_text_aeol_crlf_true_LF.txt':
compare_files $lfname ${pfx}_LF.txt
ok 311 - compare_files LF NNO_attr_text_aeol_crlf_true_LF.txt
expecting success of 0027.312 'compare_files LF NNO_attr_text_aeol_crlf_true_CRLF.txt':
compare_files $crlfname ${pfx}_CRLF.txt
ok 312 - compare_files LF NNO_attr_text_aeol_crlf_true_CRLF.txt
expecting success of 0027.313 'compare_files LF NNO_attr_text_aeol_crlf_true_CRLF_mix_LF.txt':
compare_files $lfmixcrlf ${pfx}_CRLF_mix_LF.txt
ok 313 - compare_files LF NNO_attr_text_aeol_crlf_true_CRLF_mix_LF.txt
expecting success of 0027.314 'compare_files LF_mix_CR NNO_attr_text_aeol_crlf_true_LF_mix_CR.txt':
compare_files $lfmixcr ${pfx}_LF_mix_CR.txt
ok 314 - compare_files LF_mix_CR NNO_attr_text_aeol_crlf_true_LF_mix_CR.txt
expecting success of 0027.315 'compare_files LF_nul NNO_attr_text_aeol_crlf_true_CRLF_nul.txt':
compare_files $crlfnul ${pfx}_CRLF_nul.txt
ok 315 - compare_files LF_nul NNO_attr_text_aeol_crlf_true_CRLF_nul.txt
expecting success of 0027.316 'compare_files LF NNO_attr__aeol__false_LF.txt':
compare_files $lfname ${pfx}_LF.txt
ok 316 - compare_files LF NNO_attr__aeol__false_LF.txt
expecting success of 0027.317 'compare_files CRLF NNO_attr__aeol__false_CRLF.txt':
compare_files $crlfname ${pfx}_CRLF.txt
ok 317 - compare_files CRLF NNO_attr__aeol__false_CRLF.txt
expecting success of 0027.318 'compare_files CRLF_mix_LF NNO_attr__aeol__false_CRLF_mix_LF.txt':
compare_files $lfmixcrlf ${pfx}_CRLF_mix_LF.txt
ok 318 - compare_files CRLF_mix_LF NNO_attr__aeol__false_CRLF_mix_LF.txt
expecting success of 0027.319 'compare_files LF_mix_CR NNO_attr__aeol__false_LF_mix_CR.txt':
compare_files $lfmixcr ${pfx}_LF_mix_CR.txt
ok 319 - compare_files LF_mix_CR NNO_attr__aeol__false_LF_mix_CR.txt
expecting success of 0027.320 'compare_files CRLF_nul NNO_attr__aeol__false_CRLF_nul.txt':
compare_files $crlfnul ${pfx}_CRLF_nul.txt
ok 320 - compare_files CRLF_nul NNO_attr__aeol__false_CRLF_nul.txt
expecting success of 0027.321 'compare_files LF NNO_attr_-text_aeol__false_LF.txt':
compare_files $lfname ${pfx}_LF.txt
ok 321 - compare_files LF NNO_attr_-text_aeol__false_LF.txt
expecting success of 0027.322 'compare_files CRLF NNO_attr_-text_aeol__false_CRLF.txt':
compare_files $crlfname ${pfx}_CRLF.txt
ok 322 - compare_files CRLF NNO_attr_-text_aeol__false_CRLF.txt
expecting success of 0027.323 'compare_files CRLF_mix_LF NNO_attr_-text_aeol__false_CRLF_mix_LF.txt':
compare_files $lfmixcrlf ${pfx}_CRLF_mix_LF.txt
ok 323 - compare_files CRLF_mix_LF NNO_attr_-text_aeol__false_CRLF_mix_LF.txt
expecting success of 0027.324 'compare_files LF_mix_CR NNO_attr_-text_aeol__false_LF_mix_CR.txt':
compare_files $lfmixcr ${pfx}_LF_mix_CR.txt
ok 324 - compare_files LF_mix_CR NNO_attr_-text_aeol__false_LF_mix_CR.txt
expecting success of 0027.325 'compare_files CRLF_nul NNO_attr_-text_aeol__false_CRLF_nul.txt':
compare_files $crlfnul ${pfx}_CRLF_nul.txt
ok 325 - compare_files CRLF_nul NNO_attr_-text_aeol__false_CRLF_nul.txt
expecting success of 0027.326 'compare_files LF NNO_attr_-text_aeol_lf_false_LF.txt':
compare_files $lfname ${pfx}_LF.txt
ok 326 - compare_files LF NNO_attr_-text_aeol_lf_false_LF.txt
expecting success of 0027.327 'compare_files CRLF NNO_attr_-text_aeol_lf_false_CRLF.txt':
compare_files $crlfname ${pfx}_CRLF.txt
ok 327 - compare_files CRLF NNO_attr_-text_aeol_lf_false_CRLF.txt
expecting success of 0027.328 'compare_files CRLF_mix_LF NNO_attr_-text_aeol_lf_false_CRLF_mix_LF.txt':
compare_files $lfmixcrlf ${pfx}_CRLF_mix_LF.txt
ok 328 - compare_files CRLF_mix_LF NNO_attr_-text_aeol_lf_false_CRLF_mix_LF.txt
expecting success of 0027.329 'compare_files LF_mix_CR NNO_attr_-text_aeol_lf_false_LF_mix_CR.txt':
compare_files $lfmixcr ${pfx}_LF_mix_CR.txt
ok 329 - compare_files LF_mix_CR NNO_attr_-text_aeol_lf_false_LF_mix_CR.txt
expecting success of 0027.330 'compare_files CRLF_nul NNO_attr_-text_aeol_lf_false_CRLF_nul.txt':
compare_files $crlfnul ${pfx}_CRLF_nul.txt
ok 330 - compare_files CRLF_nul NNO_attr_-text_aeol_lf_false_CRLF_nul.txt
expecting success of 0027.331 'compare_files LF NNO_attr_-text_aeol_crlf_false_LF.txt':
compare_files $lfname ${pfx}_LF.txt
ok 331 - compare_files LF NNO_attr_-text_aeol_crlf_false_LF.txt
expecting success of 0027.332 'compare_files CRLF NNO_attr_-text_aeol_crlf_false_CRLF.txt':
compare_files $crlfname ${pfx}_CRLF.txt
ok 332 - compare_files CRLF NNO_attr_-text_aeol_crlf_false_CRLF.txt
expecting success of 0027.333 'compare_files CRLF_mix_LF NNO_attr_-text_aeol_crlf_false_CRLF_mix_LF.txt':
compare_files $lfmixcrlf ${pfx}_CRLF_mix_LF.txt
ok 333 - compare_files CRLF_mix_LF NNO_attr_-text_aeol_crlf_false_CRLF_mix_LF.txt
expecting success of 0027.334 'compare_files LF_mix_CR NNO_attr_-text_aeol_crlf_false_LF_mix_CR.txt':
compare_files $lfmixcr ${pfx}_LF_mix_CR.txt
ok 334 - compare_files LF_mix_CR NNO_attr_-text_aeol_crlf_false_LF_mix_CR.txt
expecting success of 0027.335 'compare_files CRLF_nul NNO_attr_-text_aeol_crlf_false_CRLF_nul.txt':
compare_files $crlfnul ${pfx}_CRLF_nul.txt
ok 335 - compare_files CRLF_nul NNO_attr_-text_aeol_crlf_false_CRLF_nul.txt
expecting success of 0027.336 'compare_files LF NNO_attr_auto_aeol__false_LF.txt':
compare_files $lfname ${pfx}_LF.txt
ok 336 - compare_files LF NNO_attr_auto_aeol__false_LF.txt
expecting success of 0027.337 'compare_files CRLF NNO_attr_auto_aeol__false_CRLF.txt':
compare_files $crlfname ${pfx}_CRLF.txt
ok 337 - compare_files CRLF NNO_attr_auto_aeol__false_CRLF.txt
expecting success of 0027.338 'compare_files CRLF_mix_LF NNO_attr_auto_aeol__false_CRLF_mix_LF.txt':
compare_files $lfmixcrlf ${pfx}_CRLF_mix_LF.txt
ok 338 - compare_files CRLF_mix_LF NNO_attr_auto_aeol__false_CRLF_mix_LF.txt
expecting success of 0027.339 'compare_files LF_mix_CR NNO_attr_auto_aeol__false_LF_mix_CR.txt':
compare_files $lfmixcr ${pfx}_LF_mix_CR.txt
ok 339 - compare_files LF_mix_CR NNO_attr_auto_aeol__false_LF_mix_CR.txt
expecting success of 0027.340 'compare_files CRLF_nul NNO_attr_auto_aeol__false_CRLF_nul.txt':
compare_files $crlfnul ${pfx}_CRLF_nul.txt
ok 340 - compare_files CRLF_nul NNO_attr_auto_aeol__false_CRLF_nul.txt
expecting success of 0027.341 'compare_files LF NNO_attr_auto_aeol_lf_false_LF.txt':
compare_files $lfname ${pfx}_LF.txt
ok 341 - compare_files LF NNO_attr_auto_aeol_lf_false_LF.txt
expecting success of 0027.342 'compare_files CRLF NNO_attr_auto_aeol_lf_false_CRLF.txt':
compare_files $crlfname ${pfx}_CRLF.txt
ok 342 - compare_files CRLF NNO_attr_auto_aeol_lf_false_CRLF.txt
expecting success of 0027.343 'compare_files CRLF_mix_LF NNO_attr_auto_aeol_lf_false_CRLF_mix_LF.txt':
compare_files $lfmixcrlf ${pfx}_CRLF_mix_LF.txt
ok 343 - compare_files CRLF_mix_LF NNO_attr_auto_aeol_lf_false_CRLF_mix_LF.txt
expecting success of 0027.344 'compare_files LF_mix_CR NNO_attr_auto_aeol_lf_false_LF_mix_CR.txt':
compare_files $lfmixcr ${pfx}_LF_mix_CR.txt
ok 344 - compare_files LF_mix_CR NNO_attr_auto_aeol_lf_false_LF_mix_CR.txt
expecting success of 0027.345 'compare_files CRLF_nul NNO_attr_auto_aeol_lf_false_CRLF_nul.txt':
compare_files $crlfnul ${pfx}_CRLF_nul.txt
ok 345 - compare_files CRLF_nul NNO_attr_auto_aeol_lf_false_CRLF_nul.txt
expecting success of 0027.346 'compare_files LF NNO_attr_auto_aeol_crlf_false_LF.txt':
compare_files $lfname ${pfx}_LF.txt
ok 346 - compare_files LF NNO_attr_auto_aeol_crlf_false_LF.txt
expecting success of 0027.347 'compare_files CRLF NNO_attr_auto_aeol_crlf_false_CRLF.txt':
compare_files $crlfname ${pfx}_CRLF.txt
ok 347 - compare_files CRLF NNO_attr_auto_aeol_crlf_false_CRLF.txt
expecting success of 0027.348 'compare_files CRLF_mix_LF NNO_attr_auto_aeol_crlf_false_CRLF_mix_LF.txt':
compare_files $lfmixcrlf ${pfx}_CRLF_mix_LF.txt
ok 348 - compare_files CRLF_mix_LF NNO_attr_auto_aeol_crlf_false_CRLF_mix_LF.txt
expecting success of 0027.349 'compare_files LF_mix_CR NNO_attr_auto_aeol_crlf_false_LF_mix_CR.txt':
compare_files $lfmixcr ${pfx}_LF_mix_CR.txt
ok 349 - compare_files LF_mix_CR NNO_attr_auto_aeol_crlf_false_LF_mix_CR.txt
expecting success of 0027.350 'compare_files CRLF_nul NNO_attr_auto_aeol_crlf_false_CRLF_nul.txt':
compare_files $crlfnul ${pfx}_CRLF_nul.txt
ok 350 - compare_files CRLF_nul NNO_attr_auto_aeol_crlf_false_CRLF_nul.txt
expecting success of 0027.351 'compare_files LF NNO_attr_text_aeol__false_LF.txt':
compare_files $lfname ${pfx}_LF.txt
ok 351 - compare_files LF NNO_attr_text_aeol__false_LF.txt
expecting success of 0027.352 'compare_files LF NNO_attr_text_aeol__false_CRLF.txt':
compare_files $crlfname ${pfx}_CRLF.txt
ok 352 - compare_files LF NNO_attr_text_aeol__false_CRLF.txt
expecting success of 0027.353 'compare_files LF NNO_attr_text_aeol__false_CRLF_mix_LF.txt':
compare_files $lfmixcrlf ${pfx}_CRLF_mix_LF.txt
ok 353 - compare_files LF NNO_attr_text_aeol__false_CRLF_mix_LF.txt
expecting success of 0027.354 'compare_files LF_mix_CR NNO_attr_text_aeol__false_LF_mix_CR.txt':
compare_files $lfmixcr ${pfx}_LF_mix_CR.txt
ok 354 - compare_files LF_mix_CR NNO_attr_text_aeol__false_LF_mix_CR.txt
expecting success of 0027.355 'compare_files LF_nul NNO_attr_text_aeol__false_CRLF_nul.txt':
compare_files $crlfnul ${pfx}_CRLF_nul.txt
ok 355 - compare_files LF_nul NNO_attr_text_aeol__false_CRLF_nul.txt
expecting success of 0027.356 'compare_files LF NNO_attr_text_aeol_lf_false_LF.txt':
compare_files $lfname ${pfx}_LF.txt
ok 356 - compare_files LF NNO_attr_text_aeol_lf_false_LF.txt
expecting success of 0027.357 'compare_files LF NNO_attr_text_aeol_lf_false_CRLF.txt':
compare_files $crlfname ${pfx}_CRLF.txt
ok 357 - compare_files LF NNO_attr_text_aeol_lf_false_CRLF.txt
expecting success of 0027.358 'compare_files LF NNO_attr_text_aeol_lf_false_CRLF_mix_LF.txt':
compare_files $lfmixcrlf ${pfx}_CRLF_mix_LF.txt
ok 358 - compare_files LF NNO_attr_text_aeol_lf_false_CRLF_mix_LF.txt
expecting success of 0027.359 'compare_files LF_mix_CR NNO_attr_text_aeol_lf_false_LF_mix_CR.txt':
compare_files $lfmixcr ${pfx}_LF_mix_CR.txt
ok 359 - compare_files LF_mix_CR NNO_attr_text_aeol_lf_false_LF_mix_CR.txt
expecting success of 0027.360 'compare_files LF_nul NNO_attr_text_aeol_lf_false_CRLF_nul.txt':
compare_files $crlfnul ${pfx}_CRLF_nul.txt
ok 360 - compare_files LF_nul NNO_attr_text_aeol_lf_false_CRLF_nul.txt
expecting success of 0027.361 'compare_files LF NNO_attr_text_aeol_crlf_false_LF.txt':
compare_files $lfname ${pfx}_LF.txt
ok 361 - compare_files LF NNO_attr_text_aeol_crlf_false_LF.txt
expecting success of 0027.362 'compare_files LF NNO_attr_text_aeol_crlf_false_CRLF.txt':
compare_files $crlfname ${pfx}_CRLF.txt
ok 362 - compare_files LF NNO_attr_text_aeol_crlf_false_CRLF.txt
expecting success of 0027.363 'compare_files LF NNO_attr_text_aeol_crlf_false_CRLF_mix_LF.txt':
compare_files $lfmixcrlf ${pfx}_CRLF_mix_LF.txt
ok 363 - compare_files LF NNO_attr_text_aeol_crlf_false_CRLF_mix_LF.txt
expecting success of 0027.364 'compare_files LF_mix_CR NNO_attr_text_aeol_crlf_false_LF_mix_CR.txt':
compare_files $lfmixcr ${pfx}_LF_mix_CR.txt
ok 364 - compare_files LF_mix_CR NNO_attr_text_aeol_crlf_false_LF_mix_CR.txt
expecting success of 0027.365 'compare_files LF_nul NNO_attr_text_aeol_crlf_false_CRLF_nul.txt':
compare_files $crlfnul ${pfx}_CRLF_nul.txt
ok 365 - compare_files LF_nul NNO_attr_text_aeol_crlf_false_CRLF_nul.txt
expecting success of 0027.366 'compare_files LF NNO_attr__aeol__input_LF.txt':
compare_files $lfname ${pfx}_LF.txt
ok 366 - compare_files LF NNO_attr__aeol__input_LF.txt
expecting success of 0027.367 'compare_files CRLF NNO_attr__aeol__input_CRLF.txt':
compare_files $crlfname ${pfx}_CRLF.txt
ok 367 - compare_files CRLF NNO_attr__aeol__input_CRLF.txt
expecting success of 0027.368 'compare_files CRLF_mix_LF NNO_attr__aeol__input_CRLF_mix_LF.txt':
compare_files $lfmixcrlf ${pfx}_CRLF_mix_LF.txt
ok 368 - compare_files CRLF_mix_LF NNO_attr__aeol__input_CRLF_mix_LF.txt
expecting success of 0027.369 'compare_files LF_mix_CR NNO_attr__aeol__input_LF_mix_CR.txt':
compare_files $lfmixcr ${pfx}_LF_mix_CR.txt
ok 369 - compare_files LF_mix_CR NNO_attr__aeol__input_LF_mix_CR.txt
expecting success of 0027.370 'compare_files CRLF_nul NNO_attr__aeol__input_CRLF_nul.txt':
compare_files $crlfnul ${pfx}_CRLF_nul.txt
ok 370 - compare_files CRLF_nul NNO_attr__aeol__input_CRLF_nul.txt
expecting success of 0027.371 'compare_files LF NNO_attr_-text_aeol__input_LF.txt':
compare_files $lfname ${pfx}_LF.txt
ok 371 - compare_files LF NNO_attr_-text_aeol__input_LF.txt
expecting success of 0027.372 'compare_files CRLF NNO_attr_-text_aeol__input_CRLF.txt':
compare_files $crlfname ${pfx}_CRLF.txt
ok 372 - compare_files CRLF NNO_attr_-text_aeol__input_CRLF.txt
expecting success of 0027.373 'compare_files CRLF_mix_LF NNO_attr_-text_aeol__input_CRLF_mix_LF.txt':
compare_files $lfmixcrlf ${pfx}_CRLF_mix_LF.txt
ok 373 - compare_files CRLF_mix_LF NNO_attr_-text_aeol__input_CRLF_mix_LF.txt
expecting success of 0027.374 'compare_files LF_mix_CR NNO_attr_-text_aeol__input_LF_mix_CR.txt':
compare_files $lfmixcr ${pfx}_LF_mix_CR.txt
ok 374 - compare_files LF_mix_CR NNO_attr_-text_aeol__input_LF_mix_CR.txt
expecting success of 0027.375 'compare_files CRLF_nul NNO_attr_-text_aeol__input_CRLF_nul.txt':
compare_files $crlfnul ${pfx}_CRLF_nul.txt
ok 375 - compare_files CRLF_nul NNO_attr_-text_aeol__input_CRLF_nul.txt
expecting success of 0027.376 'compare_files LF NNO_attr_-text_aeol_lf_input_LF.txt':
compare_files $lfname ${pfx}_LF.txt
ok 376 - compare_files LF NNO_attr_-text_aeol_lf_input_LF.txt
expecting success of 0027.377 'compare_files CRLF NNO_attr_-text_aeol_lf_input_CRLF.txt':
compare_files $crlfname ${pfx}_CRLF.txt
ok 377 - compare_files CRLF NNO_attr_-text_aeol_lf_input_CRLF.txt
expecting success of 0027.378 'compare_files CRLF_mix_LF NNO_attr_-text_aeol_lf_input_CRLF_mix_LF.txt':
compare_files $lfmixcrlf ${pfx}_CRLF_mix_LF.txt
ok 378 - compare_files CRLF_mix_LF NNO_attr_-text_aeol_lf_input_CRLF_mix_LF.txt
expecting success of 0027.379 'compare_files LF_mix_CR NNO_attr_-text_aeol_lf_input_LF_mix_CR.txt':
compare_files $lfmixcr ${pfx}_LF_mix_CR.txt
ok 379 - compare_files LF_mix_CR NNO_attr_-text_aeol_lf_input_LF_mix_CR.txt
expecting success of 0027.380 'compare_files CRLF_nul NNO_attr_-text_aeol_lf_input_CRLF_nul.txt':
compare_files $crlfnul ${pfx}_CRLF_nul.txt
ok 380 - compare_files CRLF_nul NNO_attr_-text_aeol_lf_input_CRLF_nul.txt
expecting success of 0027.381 'compare_files LF NNO_attr_-text_aeol_crlf_input_LF.txt':
compare_files $lfname ${pfx}_LF.txt
ok 381 - compare_files LF NNO_attr_-text_aeol_crlf_input_LF.txt
expecting success of 0027.382 'compare_files CRLF NNO_attr_-text_aeol_crlf_input_CRLF.txt':
compare_files $crlfname ${pfx}_CRLF.txt
ok 382 - compare_files CRLF NNO_attr_-text_aeol_crlf_input_CRLF.txt
expecting success of 0027.383 'compare_files CRLF_mix_LF NNO_attr_-text_aeol_crlf_input_CRLF_mix_LF.txt':
compare_files $lfmixcrlf ${pfx}_CRLF_mix_LF.txt
ok 383 - compare_files CRLF_mix_LF NNO_attr_-text_aeol_crlf_input_CRLF_mix_LF.txt
expecting success of 0027.384 'compare_files LF_mix_CR NNO_attr_-text_aeol_crlf_input_LF_mix_CR.txt':
compare_files $lfmixcr ${pfx}_LF_mix_CR.txt
ok 384 - compare_files LF_mix_CR NNO_attr_-text_aeol_crlf_input_LF_mix_CR.txt
expecting success of 0027.385 'compare_files CRLF_nul NNO_attr_-text_aeol_crlf_input_CRLF_nul.txt':
compare_files $crlfnul ${pfx}_CRLF_nul.txt
ok 385 - compare_files CRLF_nul NNO_attr_-text_aeol_crlf_input_CRLF_nul.txt
expecting success of 0027.386 'compare_files LF NNO_attr_auto_aeol__input_LF.txt':
compare_files $lfname ${pfx}_LF.txt
ok 386 - compare_files LF NNO_attr_auto_aeol__input_LF.txt
expecting success of 0027.387 'compare_files CRLF NNO_attr_auto_aeol__input_CRLF.txt':
compare_files $crlfname ${pfx}_CRLF.txt
ok 387 - compare_files CRLF NNO_attr_auto_aeol__input_CRLF.txt
expecting success of 0027.388 'compare_files CRLF_mix_LF NNO_attr_auto_aeol__input_CRLF_mix_LF.txt':
compare_files $lfmixcrlf ${pfx}_CRLF_mix_LF.txt
ok 388 - compare_files CRLF_mix_LF NNO_attr_auto_aeol__input_CRLF_mix_LF.txt
expecting success of 0027.389 'compare_files LF_mix_CR NNO_attr_auto_aeol__input_LF_mix_CR.txt':
compare_files $lfmixcr ${pfx}_LF_mix_CR.txt
ok 389 - compare_files LF_mix_CR NNO_attr_auto_aeol__input_LF_mix_CR.txt
expecting success of 0027.390 'compare_files CRLF_nul NNO_attr_auto_aeol__input_CRLF_nul.txt':
compare_files $crlfnul ${pfx}_CRLF_nul.txt
ok 390 - compare_files CRLF_nul NNO_attr_auto_aeol__input_CRLF_nul.txt
expecting success of 0027.391 'compare_files LF NNO_attr_auto_aeol_lf_input_LF.txt':
compare_files $lfname ${pfx}_LF.txt
ok 391 - compare_files LF NNO_attr_auto_aeol_lf_input_LF.txt
expecting success of 0027.392 'compare_files CRLF NNO_attr_auto_aeol_lf_input_CRLF.txt':
compare_files $crlfname ${pfx}_CRLF.txt
ok 392 - compare_files CRLF NNO_attr_auto_aeol_lf_input_CRLF.txt
expecting success of 0027.393 'compare_files CRLF_mix_LF NNO_attr_auto_aeol_lf_input_CRLF_mix_LF.txt':
compare_files $lfmixcrlf ${pfx}_CRLF_mix_LF.txt
ok 393 - compare_files CRLF_mix_LF NNO_attr_auto_aeol_lf_input_CRLF_mix_LF.txt
expecting success of 0027.394 'compare_files LF_mix_CR NNO_attr_auto_aeol_lf_input_LF_mix_CR.txt':
compare_files $lfmixcr ${pfx}_LF_mix_CR.txt
ok 394 - compare_files LF_mix_CR NNO_attr_auto_aeol_lf_input_LF_mix_CR.txt
expecting success of 0027.395 'compare_files CRLF_nul NNO_attr_auto_aeol_lf_input_CRLF_nul.txt':
compare_files $crlfnul ${pfx}_CRLF_nul.txt
ok 395 - compare_files CRLF_nul NNO_attr_auto_aeol_lf_input_CRLF_nul.txt
expecting success of 0027.396 'compare_files LF NNO_attr_auto_aeol_crlf_input_LF.txt':
compare_files $lfname ${pfx}_LF.txt
ok 396 - compare_files LF NNO_attr_auto_aeol_crlf_input_LF.txt
expecting success of 0027.397 'compare_files CRLF NNO_attr_auto_aeol_crlf_input_CRLF.txt':
compare_files $crlfname ${pfx}_CRLF.txt
ok 397 - compare_files CRLF NNO_attr_auto_aeol_crlf_input_CRLF.txt
expecting success of 0027.398 'compare_files CRLF_mix_LF NNO_attr_auto_aeol_crlf_input_CRLF_mix_LF.txt':
compare_files $lfmixcrlf ${pfx}_CRLF_mix_LF.txt
ok 398 - compare_files CRLF_mix_LF NNO_attr_auto_aeol_crlf_input_CRLF_mix_LF.txt
expecting success of 0027.399 'compare_files LF_mix_CR NNO_attr_auto_aeol_crlf_input_LF_mix_CR.txt':
compare_files $lfmixcr ${pfx}_LF_mix_CR.txt
ok 399 - compare_files LF_mix_CR NNO_attr_auto_aeol_crlf_input_LF_mix_CR.txt
expecting success of 0027.400 'compare_files CRLF_nul NNO_attr_auto_aeol_crlf_input_CRLF_nul.txt':
compare_files $crlfnul ${pfx}_CRLF_nul.txt
ok 400 - compare_files CRLF_nul NNO_attr_auto_aeol_crlf_input_CRLF_nul.txt
expecting success of 0027.401 'compare_files LF NNO_attr_text_aeol__input_LF.txt':
compare_files $lfname ${pfx}_LF.txt
ok 401 - compare_files LF NNO_attr_text_aeol__input_LF.txt
expecting success of 0027.402 'compare_files LF NNO_attr_text_aeol__input_CRLF.txt':
compare_files $crlfname ${pfx}_CRLF.txt
ok 402 - compare_files LF NNO_attr_text_aeol__input_CRLF.txt
expecting success of 0027.403 'compare_files LF NNO_attr_text_aeol__input_CRLF_mix_LF.txt':
compare_files $lfmixcrlf ${pfx}_CRLF_mix_LF.txt
ok 403 - compare_files LF NNO_attr_text_aeol__input_CRLF_mix_LF.txt
expecting success of 0027.404 'compare_files LF_mix_CR NNO_attr_text_aeol__input_LF_mix_CR.txt':
compare_files $lfmixcr ${pfx}_LF_mix_CR.txt
ok 404 - compare_files LF_mix_CR NNO_attr_text_aeol__input_LF_mix_CR.txt
expecting success of 0027.405 'compare_files LF_nul NNO_attr_text_aeol__input_CRLF_nul.txt':
compare_files $crlfnul ${pfx}_CRLF_nul.txt
ok 405 - compare_files LF_nul NNO_attr_text_aeol__input_CRLF_nul.txt
expecting success of 0027.406 'compare_files LF NNO_attr_text_aeol_lf_input_LF.txt':
compare_files $lfname ${pfx}_LF.txt
ok 406 - compare_files LF NNO_attr_text_aeol_lf_input_LF.txt
expecting success of 0027.407 'compare_files LF NNO_attr_text_aeol_lf_input_CRLF.txt':
compare_files $crlfname ${pfx}_CRLF.txt
ok 407 - compare_files LF NNO_attr_text_aeol_lf_input_CRLF.txt
expecting success of 0027.408 'compare_files LF NNO_attr_text_aeol_lf_input_CRLF_mix_LF.txt':
compare_files $lfmixcrlf ${pfx}_CRLF_mix_LF.txt
ok 408 - compare_files LF NNO_attr_text_aeol_lf_input_CRLF_mix_LF.txt
expecting success of 0027.409 'compare_files LF_mix_CR NNO_attr_text_aeol_lf_input_LF_mix_CR.txt':
compare_files $lfmixcr ${pfx}_LF_mix_CR.txt
ok 409 - compare_files LF_mix_CR NNO_attr_text_aeol_lf_input_LF_mix_CR.txt
expecting success of 0027.410 'compare_files LF_nul NNO_attr_text_aeol_lf_input_CRLF_nul.txt':
compare_files $crlfnul ${pfx}_CRLF_nul.txt
ok 410 - compare_files LF_nul NNO_attr_text_aeol_lf_input_CRLF_nul.txt
expecting success of 0027.411 'compare_files LF NNO_attr_text_aeol_crlf_input_LF.txt':
compare_files $lfname ${pfx}_LF.txt
ok 411 - compare_files LF NNO_attr_text_aeol_crlf_input_LF.txt
expecting success of 0027.412 'compare_files LF NNO_attr_text_aeol_crlf_input_CRLF.txt':
compare_files $crlfname ${pfx}_CRLF.txt
ok 412 - compare_files LF NNO_attr_text_aeol_crlf_input_CRLF.txt
expecting success of 0027.413 'compare_files LF NNO_attr_text_aeol_crlf_input_CRLF_mix_LF.txt':
compare_files $lfmixcrlf ${pfx}_CRLF_mix_LF.txt
ok 413 - compare_files LF NNO_attr_text_aeol_crlf_input_CRLF_mix_LF.txt
expecting success of 0027.414 'compare_files LF_mix_CR NNO_attr_text_aeol_crlf_input_LF_mix_CR.txt':
compare_files $lfmixcr ${pfx}_LF_mix_CR.txt
ok 414 - compare_files LF_mix_CR NNO_attr_text_aeol_crlf_input_LF_mix_CR.txt
expecting success of 0027.415 'compare_files LF_nul NNO_attr_text_aeol_crlf_input_CRLF_nul.txt':
compare_files $crlfnul ${pfx}_CRLF_nul.txt
ok 415 - compare_files LF_nul NNO_attr_text_aeol_crlf_input_CRLF_nul.txt
expecting success of 0027.416 'setup config for checkout attr=-text ident= aeol= core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 416 - setup config for checkout attr=-text ident= aeol= core.autocrlf=true
expecting success of 0027.417 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 417 - setup LF checkout with -c core.eol=lf
expecting success of 0027.418 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 418 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.419 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 419 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.420 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 420 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.421 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 421 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.422 'ls-files --eol attr=-text aeol= core.autocrlf=true core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 422 - ls-files --eol attr=-text aeol= core.autocrlf=true core.eol=lf
expecting success of 0027.423 'checkout attr=-text aeol= core.autocrlf=true core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_true_attr_-text_ LF crlf_false_attr__LF.txt
ok 423 - checkout attr=-text aeol= core.autocrlf=true core.eol=lf file=LF
expecting success of 0027.424 'checkout attr=-text aeol= core.autocrlf=true core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_true_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 424 - checkout attr=-text aeol= core.autocrlf=true core.eol=lf file=CRLF
expecting success of 0027.425 'checkout attr=-text aeol= core.autocrlf=true core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_true_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 425 - checkout attr=-text aeol= core.autocrlf=true core.eol=lf file=CRLF_mix_LF
expecting success of 0027.426 'checkout attr=-text aeol= core.autocrlf=true core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_true_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 426 - checkout attr=-text aeol= core.autocrlf=true core.eol=lf file=LF_mix_CR
expecting success of 0027.427 'checkout attr=-text aeol= core.autocrlf=true core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_true_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 427 - checkout attr=-text aeol= core.autocrlf=true core.eol=lf file=LF_nul
expecting success of 0027.428 'setup config for checkout attr=-text ident= aeol=lf core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 428 - setup config for checkout attr=-text ident= aeol=lf core.autocrlf=true
expecting success of 0027.429 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 429 - setup LF checkout with -c core.eol=lf
expecting success of 0027.430 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 430 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.431 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 431 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.432 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 432 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.433 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 433 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.434 'ls-files --eol attr=-text aeol=lf core.autocrlf=true core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 434 - ls-files --eol attr=-text aeol=lf core.autocrlf=true core.eol=lf
expecting success of 0027.435 'checkout attr=-text aeol=lf core.autocrlf=true core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_true_attr_-text_ LF crlf_false_attr__LF.txt
ok 435 - checkout attr=-text aeol=lf core.autocrlf=true core.eol=lf file=LF
expecting success of 0027.436 'checkout attr=-text aeol=lf core.autocrlf=true core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_true_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 436 - checkout attr=-text aeol=lf core.autocrlf=true core.eol=lf file=CRLF
expecting success of 0027.437 'checkout attr=-text aeol=lf core.autocrlf=true core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_true_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 437 - checkout attr=-text aeol=lf core.autocrlf=true core.eol=lf file=CRLF_mix_LF
expecting success of 0027.438 'checkout attr=-text aeol=lf core.autocrlf=true core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_true_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 438 - checkout attr=-text aeol=lf core.autocrlf=true core.eol=lf file=LF_mix_CR
expecting success of 0027.439 'checkout attr=-text aeol=lf core.autocrlf=true core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_true_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 439 - checkout attr=-text aeol=lf core.autocrlf=true core.eol=lf file=LF_nul
expecting success of 0027.440 'setup config for checkout attr=-text ident= aeol=crlf core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 440 - setup config for checkout attr=-text ident= aeol=crlf core.autocrlf=true
expecting success of 0027.441 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 441 - setup LF checkout with -c core.eol=lf
expecting success of 0027.442 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 442 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.443 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 443 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.444 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 444 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.445 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 445 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.446 'ls-files --eol attr=-text aeol=crlf core.autocrlf=true core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 446 - ls-files --eol attr=-text aeol=crlf core.autocrlf=true core.eol=lf
expecting success of 0027.447 'checkout attr=-text aeol=crlf core.autocrlf=true core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_true_attr_-text_ LF crlf_false_attr__LF.txt
ok 447 - checkout attr=-text aeol=crlf core.autocrlf=true core.eol=lf file=LF
expecting success of 0027.448 'checkout attr=-text aeol=crlf core.autocrlf=true core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_true_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 448 - checkout attr=-text aeol=crlf core.autocrlf=true core.eol=lf file=CRLF
expecting success of 0027.449 'checkout attr=-text aeol=crlf core.autocrlf=true core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_true_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 449 - checkout attr=-text aeol=crlf core.autocrlf=true core.eol=lf file=CRLF_mix_LF
expecting success of 0027.450 'checkout attr=-text aeol=crlf core.autocrlf=true core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_true_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 450 - checkout attr=-text aeol=crlf core.autocrlf=true core.eol=lf file=LF_mix_CR
expecting success of 0027.451 'checkout attr=-text aeol=crlf core.autocrlf=true core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_true_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 451 - checkout attr=-text aeol=crlf core.autocrlf=true core.eol=lf file=LF_nul
expecting success of 0027.452 'setup config for checkout attr=text ident= aeol=lf core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 452 - setup config for checkout attr=text ident= aeol=lf core.autocrlf=true
expecting success of 0027.453 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 453 - setup LF checkout with -c core.eol=lf
expecting success of 0027.454 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 454 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.455 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 455 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.456 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 456 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.457 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 457 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.458 'ls-files --eol attr=text aeol=lf core.autocrlf=true core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 458 - ls-files --eol attr=text aeol=lf core.autocrlf=true core.eol=lf
expecting success of 0027.459 'checkout attr=text aeol=lf core.autocrlf=true core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_true_attr_text_ LF crlf_false_attr__LF.txt
ok 459 - checkout attr=text aeol=lf core.autocrlf=true core.eol=lf file=LF
expecting success of 0027.460 'checkout attr=text aeol=lf core.autocrlf=true core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_true_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 460 - checkout attr=text aeol=lf core.autocrlf=true core.eol=lf file=CRLF
expecting success of 0027.461 'checkout attr=text aeol=lf core.autocrlf=true core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_true_attr_text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 461 - checkout attr=text aeol=lf core.autocrlf=true core.eol=lf file=CRLF_mix_LF
expecting success of 0027.462 'checkout attr=text aeol=lf core.autocrlf=true core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_true_attr_text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 462 - checkout attr=text aeol=lf core.autocrlf=true core.eol=lf file=LF_mix_CR
expecting success of 0027.463 'checkout attr=text aeol=lf core.autocrlf=true core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_true_attr_text_ LF_nul crlf_false_attr__LF_nul.txt
ok 463 - checkout attr=text aeol=lf core.autocrlf=true core.eol=lf file=LF_nul
expecting success of 0027.464 'setup config for checkout attr=text ident= aeol=crlf core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 464 - setup config for checkout attr=text ident= aeol=crlf core.autocrlf=true
expecting success of 0027.465 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 465 - setup LF checkout with -c core.eol=lf
expecting success of 0027.466 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 466 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.467 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 467 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.468 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 468 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.469 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 469 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.470 'ls-files --eol attr=text aeol=crlf core.autocrlf=true core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 470 - ls-files --eol attr=text aeol=crlf core.autocrlf=true core.eol=lf
expecting success of 0027.471 'checkout attr=text aeol=crlf core.autocrlf=true core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_true_attr_text_ CRLF crlf_false_attr__LF.txt
ok 471 - checkout attr=text aeol=crlf core.autocrlf=true core.eol=lf file=LF
expecting success of 0027.472 'checkout attr=text aeol=crlf core.autocrlf=true core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_true_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 472 - checkout attr=text aeol=crlf core.autocrlf=true core.eol=lf file=CRLF
expecting success of 0027.473 'checkout attr=text aeol=crlf core.autocrlf=true core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_true_attr_text_ CRLF crlf_false_attr__CRLF_mix_LF.txt
ok 473 - checkout attr=text aeol=crlf core.autocrlf=true core.eol=lf file=CRLF_mix_LF
expecting success of 0027.474 'checkout attr=text aeol=crlf core.autocrlf=true core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_true_attr_text_ CRLF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 474 - checkout attr=text aeol=crlf core.autocrlf=true core.eol=lf file=LF_mix_CR
expecting success of 0027.475 'checkout attr=text aeol=crlf core.autocrlf=true core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_true_attr_text_ CRLF_nul crlf_false_attr__LF_nul.txt
ok 475 - checkout attr=text aeol=crlf core.autocrlf=true core.eol=lf file=LF_nul
expecting success of 0027.476 'setup config for checkout attr=auto ident= aeol=lf core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 476 - setup config for checkout attr=auto ident= aeol=lf core.autocrlf=true
expecting success of 0027.477 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 477 - setup LF checkout with -c core.eol=lf
expecting success of 0027.478 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 478 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.479 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 479 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.480 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 480 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.481 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 481 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.482 'ls-files --eol attr=auto aeol=lf core.autocrlf=true core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 482 - ls-files --eol attr=auto aeol=lf core.autocrlf=true core.eol=lf
expecting success of 0027.483 'checkout attr=auto aeol=lf core.autocrlf=true core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_true_attr_auto_ LF crlf_false_attr__LF.txt
ok 483 - checkout attr=auto aeol=lf core.autocrlf=true core.eol=lf file=LF
expecting success of 0027.484 'checkout attr=auto aeol=lf core.autocrlf=true core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_true_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 484 - checkout attr=auto aeol=lf core.autocrlf=true core.eol=lf file=CRLF
expecting success of 0027.485 'checkout attr=auto aeol=lf core.autocrlf=true core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_true_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 485 - checkout attr=auto aeol=lf core.autocrlf=true core.eol=lf file=CRLF_mix_LF
expecting success of 0027.486 'checkout attr=auto aeol=lf core.autocrlf=true core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_true_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 486 - checkout attr=auto aeol=lf core.autocrlf=true core.eol=lf file=LF_mix_CR
expecting success of 0027.487 'checkout attr=auto aeol=lf core.autocrlf=true core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_true_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 487 - checkout attr=auto aeol=lf core.autocrlf=true core.eol=lf file=LF_nul
expecting success of 0027.488 'setup config for checkout attr=auto ident= aeol=crlf core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 488 - setup config for checkout attr=auto ident= aeol=crlf core.autocrlf=true
expecting success of 0027.489 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 489 - setup LF checkout with -c core.eol=lf
expecting success of 0027.490 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 490 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.491 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 491 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.492 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 492 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.493 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 493 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.494 'ls-files --eol attr=auto aeol=crlf core.autocrlf=true core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 494 - ls-files --eol attr=auto aeol=crlf core.autocrlf=true core.eol=lf
expecting success of 0027.495 'checkout attr=auto aeol=crlf core.autocrlf=true core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_true_attr_auto_ CRLF crlf_false_attr__LF.txt
ok 495 - checkout attr=auto aeol=crlf core.autocrlf=true core.eol=lf file=LF
expecting success of 0027.496 'checkout attr=auto aeol=crlf core.autocrlf=true core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_true_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 496 - checkout attr=auto aeol=crlf core.autocrlf=true core.eol=lf file=CRLF
expecting success of 0027.497 'checkout attr=auto aeol=crlf core.autocrlf=true core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_true_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 497 - checkout attr=auto aeol=crlf core.autocrlf=true core.eol=lf file=CRLF_mix_LF
expecting success of 0027.498 'checkout attr=auto aeol=crlf core.autocrlf=true core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_true_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 498 - checkout attr=auto aeol=crlf core.autocrlf=true core.eol=lf file=LF_mix_CR
expecting success of 0027.499 'checkout attr=auto aeol=crlf core.autocrlf=true core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_true_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 499 - checkout attr=auto aeol=crlf core.autocrlf=true core.eol=lf file=LF_nul
expecting success of 0027.500 'setup config for checkout attr=-text ident= aeol= core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 500 - setup config for checkout attr=-text ident= aeol= core.autocrlf=false
expecting success of 0027.501 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 501 - setup LF checkout with -c core.eol=lf
expecting success of 0027.502 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 502 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.503 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 503 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.504 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 504 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.505 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 505 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.506 'ls-files --eol attr=-text aeol= core.autocrlf=false core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 506 - ls-files --eol attr=-text aeol= core.autocrlf=false core.eol=lf
expecting success of 0027.507 'checkout attr=-text aeol= core.autocrlf=false core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_false_attr_-text_ LF crlf_false_attr__LF.txt
ok 507 - checkout attr=-text aeol= core.autocrlf=false core.eol=lf file=LF
expecting success of 0027.508 'checkout attr=-text aeol= core.autocrlf=false core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_false_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 508 - checkout attr=-text aeol= core.autocrlf=false core.eol=lf file=CRLF
expecting success of 0027.509 'checkout attr=-text aeol= core.autocrlf=false core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_false_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 509 - checkout attr=-text aeol= core.autocrlf=false core.eol=lf file=CRLF_mix_LF
expecting success of 0027.510 'checkout attr=-text aeol= core.autocrlf=false core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_false_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 510 - checkout attr=-text aeol= core.autocrlf=false core.eol=lf file=LF_mix_CR
expecting success of 0027.511 'checkout attr=-text aeol= core.autocrlf=false core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_false_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 511 - checkout attr=-text aeol= core.autocrlf=false core.eol=lf file=LF_nul
expecting success of 0027.512 'setup config for checkout attr=-text ident= aeol=lf core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 512 - setup config for checkout attr=-text ident= aeol=lf core.autocrlf=false
expecting success of 0027.513 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 513 - setup LF checkout with -c core.eol=lf
expecting success of 0027.514 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 514 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.515 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 515 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.516 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 516 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.517 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 517 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.518 'ls-files --eol attr=-text aeol=lf core.autocrlf=false core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 518 - ls-files --eol attr=-text aeol=lf core.autocrlf=false core.eol=lf
expecting success of 0027.519 'checkout attr=-text aeol=lf core.autocrlf=false core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_false_attr_-text_ LF crlf_false_attr__LF.txt
ok 519 - checkout attr=-text aeol=lf core.autocrlf=false core.eol=lf file=LF
expecting success of 0027.520 'checkout attr=-text aeol=lf core.autocrlf=false core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_false_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 520 - checkout attr=-text aeol=lf core.autocrlf=false core.eol=lf file=CRLF
expecting success of 0027.521 'checkout attr=-text aeol=lf core.autocrlf=false core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_false_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 521 - checkout attr=-text aeol=lf core.autocrlf=false core.eol=lf file=CRLF_mix_LF
expecting success of 0027.522 'checkout attr=-text aeol=lf core.autocrlf=false core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_false_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 522 - checkout attr=-text aeol=lf core.autocrlf=false core.eol=lf file=LF_mix_CR
expecting success of 0027.523 'checkout attr=-text aeol=lf core.autocrlf=false core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_false_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 523 - checkout attr=-text aeol=lf core.autocrlf=false core.eol=lf file=LF_nul
expecting success of 0027.524 'setup config for checkout attr=-text ident= aeol=crlf core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 524 - setup config for checkout attr=-text ident= aeol=crlf core.autocrlf=false
expecting success of 0027.525 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 525 - setup LF checkout with -c core.eol=lf
expecting success of 0027.526 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 526 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.527 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 527 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.528 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 528 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.529 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 529 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.530 'ls-files --eol attr=-text aeol=crlf core.autocrlf=false core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 530 - ls-files --eol attr=-text aeol=crlf core.autocrlf=false core.eol=lf
expecting success of 0027.531 'checkout attr=-text aeol=crlf core.autocrlf=false core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_false_attr_-text_ LF crlf_false_attr__LF.txt
ok 531 - checkout attr=-text aeol=crlf core.autocrlf=false core.eol=lf file=LF
expecting success of 0027.532 'checkout attr=-text aeol=crlf core.autocrlf=false core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_false_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 532 - checkout attr=-text aeol=crlf core.autocrlf=false core.eol=lf file=CRLF
expecting success of 0027.533 'checkout attr=-text aeol=crlf core.autocrlf=false core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_false_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 533 - checkout attr=-text aeol=crlf core.autocrlf=false core.eol=lf file=CRLF_mix_LF
expecting success of 0027.534 'checkout attr=-text aeol=crlf core.autocrlf=false core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_false_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 534 - checkout attr=-text aeol=crlf core.autocrlf=false core.eol=lf file=LF_mix_CR
expecting success of 0027.535 'checkout attr=-text aeol=crlf core.autocrlf=false core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_false_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 535 - checkout attr=-text aeol=crlf core.autocrlf=false core.eol=lf file=LF_nul
expecting success of 0027.536 'setup config for checkout attr=text ident= aeol=lf core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 536 - setup config for checkout attr=text ident= aeol=lf core.autocrlf=false
expecting success of 0027.537 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 537 - setup LF checkout with -c core.eol=lf
expecting success of 0027.538 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 538 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.539 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 539 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.540 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 540 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.541 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 541 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.542 'ls-files --eol attr=text aeol=lf core.autocrlf=false core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 542 - ls-files --eol attr=text aeol=lf core.autocrlf=false core.eol=lf
expecting success of 0027.543 'checkout attr=text aeol=lf core.autocrlf=false core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_false_attr_text_ LF crlf_false_attr__LF.txt
ok 543 - checkout attr=text aeol=lf core.autocrlf=false core.eol=lf file=LF
expecting success of 0027.544 'checkout attr=text aeol=lf core.autocrlf=false core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_false_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 544 - checkout attr=text aeol=lf core.autocrlf=false core.eol=lf file=CRLF
expecting success of 0027.545 'checkout attr=text aeol=lf core.autocrlf=false core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_false_attr_text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 545 - checkout attr=text aeol=lf core.autocrlf=false core.eol=lf file=CRLF_mix_LF
expecting success of 0027.546 'checkout attr=text aeol=lf core.autocrlf=false core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_false_attr_text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 546 - checkout attr=text aeol=lf core.autocrlf=false core.eol=lf file=LF_mix_CR
expecting success of 0027.547 'checkout attr=text aeol=lf core.autocrlf=false core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_false_attr_text_ LF_nul crlf_false_attr__LF_nul.txt
ok 547 - checkout attr=text aeol=lf core.autocrlf=false core.eol=lf file=LF_nul
expecting success of 0027.548 'setup config for checkout attr=text ident= aeol=crlf core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 548 - setup config for checkout attr=text ident= aeol=crlf core.autocrlf=false
expecting success of 0027.549 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 549 - setup LF checkout with -c core.eol=lf
expecting success of 0027.550 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 550 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.551 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 551 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.552 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 552 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.553 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 553 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.554 'ls-files --eol attr=text aeol=crlf core.autocrlf=false core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 554 - ls-files --eol attr=text aeol=crlf core.autocrlf=false core.eol=lf
expecting success of 0027.555 'checkout attr=text aeol=crlf core.autocrlf=false core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_false_attr_text_ CRLF crlf_false_attr__LF.txt
ok 555 - checkout attr=text aeol=crlf core.autocrlf=false core.eol=lf file=LF
expecting success of 0027.556 'checkout attr=text aeol=crlf core.autocrlf=false core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_false_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 556 - checkout attr=text aeol=crlf core.autocrlf=false core.eol=lf file=CRLF
expecting success of 0027.557 'checkout attr=text aeol=crlf core.autocrlf=false core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_false_attr_text_ CRLF crlf_false_attr__CRLF_mix_LF.txt
ok 557 - checkout attr=text aeol=crlf core.autocrlf=false core.eol=lf file=CRLF_mix_LF
expecting success of 0027.558 'checkout attr=text aeol=crlf core.autocrlf=false core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_false_attr_text_ CRLF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 558 - checkout attr=text aeol=crlf core.autocrlf=false core.eol=lf file=LF_mix_CR
expecting success of 0027.559 'checkout attr=text aeol=crlf core.autocrlf=false core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_false_attr_text_ CRLF_nul crlf_false_attr__LF_nul.txt
ok 559 - checkout attr=text aeol=crlf core.autocrlf=false core.eol=lf file=LF_nul
expecting success of 0027.560 'setup config for checkout attr=auto ident= aeol=lf core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 560 - setup config for checkout attr=auto ident= aeol=lf core.autocrlf=false
expecting success of 0027.561 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 561 - setup LF checkout with -c core.eol=lf
expecting success of 0027.562 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 562 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.563 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 563 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.564 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 564 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.565 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 565 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.566 'ls-files --eol attr=auto aeol=lf core.autocrlf=false core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 566 - ls-files --eol attr=auto aeol=lf core.autocrlf=false core.eol=lf
expecting success of 0027.567 'checkout attr=auto aeol=lf core.autocrlf=false core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_false_attr_auto_ LF crlf_false_attr__LF.txt
ok 567 - checkout attr=auto aeol=lf core.autocrlf=false core.eol=lf file=LF
expecting success of 0027.568 'checkout attr=auto aeol=lf core.autocrlf=false core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_false_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 568 - checkout attr=auto aeol=lf core.autocrlf=false core.eol=lf file=CRLF
expecting success of 0027.569 'checkout attr=auto aeol=lf core.autocrlf=false core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_false_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 569 - checkout attr=auto aeol=lf core.autocrlf=false core.eol=lf file=CRLF_mix_LF
expecting success of 0027.570 'checkout attr=auto aeol=lf core.autocrlf=false core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_false_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 570 - checkout attr=auto aeol=lf core.autocrlf=false core.eol=lf file=LF_mix_CR
expecting success of 0027.571 'checkout attr=auto aeol=lf core.autocrlf=false core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_false_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 571 - checkout attr=auto aeol=lf core.autocrlf=false core.eol=lf file=LF_nul
expecting success of 0027.572 'setup config for checkout attr=auto ident= aeol=crlf core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 572 - setup config for checkout attr=auto ident= aeol=crlf core.autocrlf=false
expecting success of 0027.573 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 573 - setup LF checkout with -c core.eol=lf
expecting success of 0027.574 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 574 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.575 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 575 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.576 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 576 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.577 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 577 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.578 'ls-files --eol attr=auto aeol=crlf core.autocrlf=false core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 578 - ls-files --eol attr=auto aeol=crlf core.autocrlf=false core.eol=lf
expecting success of 0027.579 'checkout attr=auto aeol=crlf core.autocrlf=false core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_false_attr_auto_ CRLF crlf_false_attr__LF.txt
ok 579 - checkout attr=auto aeol=crlf core.autocrlf=false core.eol=lf file=LF
expecting success of 0027.580 'checkout attr=auto aeol=crlf core.autocrlf=false core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_false_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 580 - checkout attr=auto aeol=crlf core.autocrlf=false core.eol=lf file=CRLF
expecting success of 0027.581 'checkout attr=auto aeol=crlf core.autocrlf=false core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_false_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 581 - checkout attr=auto aeol=crlf core.autocrlf=false core.eol=lf file=CRLF_mix_LF
expecting success of 0027.582 'checkout attr=auto aeol=crlf core.autocrlf=false core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_false_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 582 - checkout attr=auto aeol=crlf core.autocrlf=false core.eol=lf file=LF_mix_CR
expecting success of 0027.583 'checkout attr=auto aeol=crlf core.autocrlf=false core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_false_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 583 - checkout attr=auto aeol=crlf core.autocrlf=false core.eol=lf file=LF_nul
expecting success of 0027.584 'setup config for checkout attr=-text ident= aeol= core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 584 - setup config for checkout attr=-text ident= aeol= core.autocrlf=input
expecting success of 0027.585 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 585 - setup LF checkout with -c core.eol=lf
expecting success of 0027.586 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 586 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.587 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 587 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.588 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 588 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.589 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 589 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.590 'ls-files --eol attr=-text aeol= core.autocrlf=input core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 590 - ls-files --eol attr=-text aeol= core.autocrlf=input core.eol=lf
expecting success of 0027.591 'checkout attr=-text aeol= core.autocrlf=input core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_input_attr_-text_ LF crlf_false_attr__LF.txt
ok 591 - checkout attr=-text aeol= core.autocrlf=input core.eol=lf file=LF
expecting success of 0027.592 'checkout attr=-text aeol= core.autocrlf=input core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_input_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 592 - checkout attr=-text aeol= core.autocrlf=input core.eol=lf file=CRLF
expecting success of 0027.593 'checkout attr=-text aeol= core.autocrlf=input core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_input_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 593 - checkout attr=-text aeol= core.autocrlf=input core.eol=lf file=CRLF_mix_LF
expecting success of 0027.594 'checkout attr=-text aeol= core.autocrlf=input core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_input_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 594 - checkout attr=-text aeol= core.autocrlf=input core.eol=lf file=LF_mix_CR
expecting success of 0027.595 'checkout attr=-text aeol= core.autocrlf=input core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_input_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 595 - checkout attr=-text aeol= core.autocrlf=input core.eol=lf file=LF_nul
expecting success of 0027.596 'setup config for checkout attr=-text ident= aeol=lf core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 596 - setup config for checkout attr=-text ident= aeol=lf core.autocrlf=input
expecting success of 0027.597 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 597 - setup LF checkout with -c core.eol=lf
expecting success of 0027.598 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 598 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.599 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 599 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.600 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 600 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.601 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 601 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.602 'ls-files --eol attr=-text aeol=lf core.autocrlf=input core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 602 - ls-files --eol attr=-text aeol=lf core.autocrlf=input core.eol=lf
expecting success of 0027.603 'checkout attr=-text aeol=lf core.autocrlf=input core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_input_attr_-text_ LF crlf_false_attr__LF.txt
ok 603 - checkout attr=-text aeol=lf core.autocrlf=input core.eol=lf file=LF
expecting success of 0027.604 'checkout attr=-text aeol=lf core.autocrlf=input core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_input_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 604 - checkout attr=-text aeol=lf core.autocrlf=input core.eol=lf file=CRLF
expecting success of 0027.605 'checkout attr=-text aeol=lf core.autocrlf=input core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_input_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 605 - checkout attr=-text aeol=lf core.autocrlf=input core.eol=lf file=CRLF_mix_LF
expecting success of 0027.606 'checkout attr=-text aeol=lf core.autocrlf=input core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_input_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 606 - checkout attr=-text aeol=lf core.autocrlf=input core.eol=lf file=LF_mix_CR
expecting success of 0027.607 'checkout attr=-text aeol=lf core.autocrlf=input core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_input_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 607 - checkout attr=-text aeol=lf core.autocrlf=input core.eol=lf file=LF_nul
expecting success of 0027.608 'setup config for checkout attr=-text ident= aeol=crlf core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 608 - setup config for checkout attr=-text ident= aeol=crlf core.autocrlf=input
expecting success of 0027.609 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 609 - setup LF checkout with -c core.eol=lf
expecting success of 0027.610 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 610 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.611 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 611 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.612 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 612 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.613 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 613 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.614 'ls-files --eol attr=-text aeol=crlf core.autocrlf=input core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 614 - ls-files --eol attr=-text aeol=crlf core.autocrlf=input core.eol=lf
expecting success of 0027.615 'checkout attr=-text aeol=crlf core.autocrlf=input core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_input_attr_-text_ LF crlf_false_attr__LF.txt
ok 615 - checkout attr=-text aeol=crlf core.autocrlf=input core.eol=lf file=LF
expecting success of 0027.616 'checkout attr=-text aeol=crlf core.autocrlf=input core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_input_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 616 - checkout attr=-text aeol=crlf core.autocrlf=input core.eol=lf file=CRLF
expecting success of 0027.617 'checkout attr=-text aeol=crlf core.autocrlf=input core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_input_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 617 - checkout attr=-text aeol=crlf core.autocrlf=input core.eol=lf file=CRLF_mix_LF
expecting success of 0027.618 'checkout attr=-text aeol=crlf core.autocrlf=input core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_input_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 618 - checkout attr=-text aeol=crlf core.autocrlf=input core.eol=lf file=LF_mix_CR
expecting success of 0027.619 'checkout attr=-text aeol=crlf core.autocrlf=input core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_input_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 619 - checkout attr=-text aeol=crlf core.autocrlf=input core.eol=lf file=LF_nul
expecting success of 0027.620 'setup config for checkout attr=text ident= aeol=lf core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 620 - setup config for checkout attr=text ident= aeol=lf core.autocrlf=input
expecting success of 0027.621 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 621 - setup LF checkout with -c core.eol=lf
expecting success of 0027.622 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 622 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.623 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 623 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.624 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 624 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.625 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 625 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.626 'ls-files --eol attr=text aeol=lf core.autocrlf=input core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 626 - ls-files --eol attr=text aeol=lf core.autocrlf=input core.eol=lf
expecting success of 0027.627 'checkout attr=text aeol=lf core.autocrlf=input core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_input_attr_text_ LF crlf_false_attr__LF.txt
ok 627 - checkout attr=text aeol=lf core.autocrlf=input core.eol=lf file=LF
expecting success of 0027.628 'checkout attr=text aeol=lf core.autocrlf=input core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_input_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 628 - checkout attr=text aeol=lf core.autocrlf=input core.eol=lf file=CRLF
expecting success of 0027.629 'checkout attr=text aeol=lf core.autocrlf=input core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_input_attr_text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 629 - checkout attr=text aeol=lf core.autocrlf=input core.eol=lf file=CRLF_mix_LF
expecting success of 0027.630 'checkout attr=text aeol=lf core.autocrlf=input core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_input_attr_text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 630 - checkout attr=text aeol=lf core.autocrlf=input core.eol=lf file=LF_mix_CR
expecting success of 0027.631 'checkout attr=text aeol=lf core.autocrlf=input core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_input_attr_text_ LF_nul crlf_false_attr__LF_nul.txt
ok 631 - checkout attr=text aeol=lf core.autocrlf=input core.eol=lf file=LF_nul
expecting success of 0027.632 'setup config for checkout attr=text ident= aeol=crlf core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 632 - setup config for checkout attr=text ident= aeol=crlf core.autocrlf=input
expecting success of 0027.633 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 633 - setup LF checkout with -c core.eol=lf
expecting success of 0027.634 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 634 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.635 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 635 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.636 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 636 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.637 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 637 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.638 'ls-files --eol attr=text aeol=crlf core.autocrlf=input core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 638 - ls-files --eol attr=text aeol=crlf core.autocrlf=input core.eol=lf
expecting success of 0027.639 'checkout attr=text aeol=crlf core.autocrlf=input core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_input_attr_text_ CRLF crlf_false_attr__LF.txt
ok 639 - checkout attr=text aeol=crlf core.autocrlf=input core.eol=lf file=LF
expecting success of 0027.640 'checkout attr=text aeol=crlf core.autocrlf=input core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_input_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 640 - checkout attr=text aeol=crlf core.autocrlf=input core.eol=lf file=CRLF
expecting success of 0027.641 'checkout attr=text aeol=crlf core.autocrlf=input core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_input_attr_text_ CRLF crlf_false_attr__CRLF_mix_LF.txt
ok 641 - checkout attr=text aeol=crlf core.autocrlf=input core.eol=lf file=CRLF_mix_LF
expecting success of 0027.642 'checkout attr=text aeol=crlf core.autocrlf=input core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_input_attr_text_ CRLF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 642 - checkout attr=text aeol=crlf core.autocrlf=input core.eol=lf file=LF_mix_CR
expecting success of 0027.643 'checkout attr=text aeol=crlf core.autocrlf=input core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_input_attr_text_ CRLF_nul crlf_false_attr__LF_nul.txt
ok 643 - checkout attr=text aeol=crlf core.autocrlf=input core.eol=lf file=LF_nul
expecting success of 0027.644 'setup config for checkout attr=auto ident= aeol=lf core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 644 - setup config for checkout attr=auto ident= aeol=lf core.autocrlf=input
expecting success of 0027.645 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 645 - setup LF checkout with -c core.eol=lf
expecting success of 0027.646 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 646 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.647 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 647 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.648 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 648 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.649 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 649 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.650 'ls-files --eol attr=auto aeol=lf core.autocrlf=input core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 650 - ls-files --eol attr=auto aeol=lf core.autocrlf=input core.eol=lf
expecting success of 0027.651 'checkout attr=auto aeol=lf core.autocrlf=input core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_input_attr_auto_ LF crlf_false_attr__LF.txt
ok 651 - checkout attr=auto aeol=lf core.autocrlf=input core.eol=lf file=LF
expecting success of 0027.652 'checkout attr=auto aeol=lf core.autocrlf=input core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_input_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 652 - checkout attr=auto aeol=lf core.autocrlf=input core.eol=lf file=CRLF
expecting success of 0027.653 'checkout attr=auto aeol=lf core.autocrlf=input core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_input_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 653 - checkout attr=auto aeol=lf core.autocrlf=input core.eol=lf file=CRLF_mix_LF
expecting success of 0027.654 'checkout attr=auto aeol=lf core.autocrlf=input core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_input_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 654 - checkout attr=auto aeol=lf core.autocrlf=input core.eol=lf file=LF_mix_CR
expecting success of 0027.655 'checkout attr=auto aeol=lf core.autocrlf=input core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_input_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 655 - checkout attr=auto aeol=lf core.autocrlf=input core.eol=lf file=LF_nul
expecting success of 0027.656 'setup config for checkout attr=auto ident= aeol=crlf core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 656 - setup config for checkout attr=auto ident= aeol=crlf core.autocrlf=input
expecting success of 0027.657 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 657 - setup LF checkout with -c core.eol=lf
expecting success of 0027.658 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 658 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.659 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 659 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.660 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 660 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.661 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 661 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.662 'ls-files --eol attr=auto aeol=crlf core.autocrlf=input core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 662 - ls-files --eol attr=auto aeol=crlf core.autocrlf=input core.eol=lf
expecting success of 0027.663 'checkout attr=auto aeol=crlf core.autocrlf=input core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_input_attr_auto_ CRLF crlf_false_attr__LF.txt
ok 663 - checkout attr=auto aeol=crlf core.autocrlf=input core.eol=lf file=LF
expecting success of 0027.664 'checkout attr=auto aeol=crlf core.autocrlf=input core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_input_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 664 - checkout attr=auto aeol=crlf core.autocrlf=input core.eol=lf file=CRLF
expecting success of 0027.665 'checkout attr=auto aeol=crlf core.autocrlf=input core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_input_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 665 - checkout attr=auto aeol=crlf core.autocrlf=input core.eol=lf file=CRLF_mix_LF
expecting success of 0027.666 'checkout attr=auto aeol=crlf core.autocrlf=input core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_input_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 666 - checkout attr=auto aeol=crlf core.autocrlf=input core.eol=lf file=LF_mix_CR
expecting success of 0027.667 'checkout attr=auto aeol=crlf core.autocrlf=input core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_input_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 667 - checkout attr=auto aeol=crlf core.autocrlf=input core.eol=lf file=LF_nul
expecting success of 0027.668 'setup config for checkout attr= ident= aeol= core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 668 - setup config for checkout attr= ident= aeol= core.autocrlf=false
expecting success of 0027.669 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 669 - setup LF checkout with -c core.eol=lf
expecting success of 0027.670 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 670 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.671 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 671 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.672 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 672 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.673 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 673 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.674 'ls-files --eol attr= aeol= core.autocrlf=false core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 674 - ls-files --eol attr= aeol= core.autocrlf=false core.eol=lf
expecting success of 0027.675 'checkout attr= aeol= core.autocrlf=false core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_false_attr__ LF crlf_false_attr__LF.txt
ok 675 - checkout attr= aeol= core.autocrlf=false core.eol=lf file=LF
expecting success of 0027.676 'checkout attr= aeol= core.autocrlf=false core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_false_attr__ CRLF crlf_false_attr__CRLF.txt
ok 676 - checkout attr= aeol= core.autocrlf=false core.eol=lf file=CRLF
expecting success of 0027.677 'checkout attr= aeol= core.autocrlf=false core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_false_attr__ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 677 - checkout attr= aeol= core.autocrlf=false core.eol=lf file=CRLF_mix_LF
expecting success of 0027.678 'checkout attr= aeol= core.autocrlf=false core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_false_attr__ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 678 - checkout attr= aeol= core.autocrlf=false core.eol=lf file=LF_mix_CR
expecting success of 0027.679 'checkout attr= aeol= core.autocrlf=false core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_false_attr__ LF_nul crlf_false_attr__LF_nul.txt
ok 679 - checkout attr= aeol= core.autocrlf=false core.eol=lf file=LF_nul
expecting success of 0027.680 'setup config for checkout attr= ident= aeol= core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 680 - setup config for checkout attr= ident= aeol= core.autocrlf=true
expecting success of 0027.681 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 681 - setup LF checkout with -c core.eol=lf
expecting success of 0027.682 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 682 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.683 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 683 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.684 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 684 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.685 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 685 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.686 'ls-files --eol attr= aeol= core.autocrlf=true core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 686 - ls-files --eol attr= aeol= core.autocrlf=true core.eol=lf
expecting success of 0027.687 'checkout attr= aeol= core.autocrlf=true core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_true_attr__ CRLF crlf_false_attr__LF.txt
ok 687 - checkout attr= aeol= core.autocrlf=true core.eol=lf file=LF
expecting success of 0027.688 'checkout attr= aeol= core.autocrlf=true core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_true_attr__ CRLF crlf_false_attr__CRLF.txt
ok 688 - checkout attr= aeol= core.autocrlf=true core.eol=lf file=CRLF
expecting success of 0027.689 'checkout attr= aeol= core.autocrlf=true core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_true_attr__ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 689 - checkout attr= aeol= core.autocrlf=true core.eol=lf file=CRLF_mix_LF
expecting success of 0027.690 'checkout attr= aeol= core.autocrlf=true core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_true_attr__ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 690 - checkout attr= aeol= core.autocrlf=true core.eol=lf file=LF_mix_CR
expecting success of 0027.691 'checkout attr= aeol= core.autocrlf=true core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_true_attr__ LF_nul crlf_false_attr__LF_nul.txt
ok 691 - checkout attr= aeol= core.autocrlf=true core.eol=lf file=LF_nul
expecting success of 0027.692 'setup config for checkout attr=auto ident= aeol= core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 692 - setup config for checkout attr=auto ident= aeol= core.autocrlf=true
expecting success of 0027.693 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 693 - setup LF checkout with -c core.eol=lf
expecting success of 0027.694 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 694 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.695 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 695 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.696 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 696 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.697 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 697 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.698 'ls-files --eol attr=auto aeol= core.autocrlf=true core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 698 - ls-files --eol attr=auto aeol= core.autocrlf=true core.eol=lf
expecting success of 0027.699 'checkout attr=auto aeol= core.autocrlf=true core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_true_attr_auto_ CRLF crlf_false_attr__LF.txt
ok 699 - checkout attr=auto aeol= core.autocrlf=true core.eol=lf file=LF
expecting success of 0027.700 'checkout attr=auto aeol= core.autocrlf=true core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_true_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 700 - checkout attr=auto aeol= core.autocrlf=true core.eol=lf file=CRLF
expecting success of 0027.701 'checkout attr=auto aeol= core.autocrlf=true core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_true_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 701 - checkout attr=auto aeol= core.autocrlf=true core.eol=lf file=CRLF_mix_LF
expecting success of 0027.702 'checkout attr=auto aeol= core.autocrlf=true core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_true_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 702 - checkout attr=auto aeol= core.autocrlf=true core.eol=lf file=LF_mix_CR
expecting success of 0027.703 'checkout attr=auto aeol= core.autocrlf=true core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_true_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 703 - checkout attr=auto aeol= core.autocrlf=true core.eol=lf file=LF_nul
expecting success of 0027.704 'setup config for checkout attr=text ident= aeol= core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 704 - setup config for checkout attr=text ident= aeol= core.autocrlf=true
expecting success of 0027.705 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 705 - setup LF checkout with -c core.eol=lf
expecting success of 0027.706 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 706 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.707 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 707 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.708 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 708 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.709 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 709 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.710 'ls-files --eol attr=text aeol= core.autocrlf=true core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 710 - ls-files --eol attr=text aeol= core.autocrlf=true core.eol=lf
expecting success of 0027.711 'checkout attr=text aeol= core.autocrlf=true core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_true_attr_text_ CRLF crlf_false_attr__LF.txt
ok 711 - checkout attr=text aeol= core.autocrlf=true core.eol=lf file=LF
expecting success of 0027.712 'checkout attr=text aeol= core.autocrlf=true core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_true_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 712 - checkout attr=text aeol= core.autocrlf=true core.eol=lf file=CRLF
expecting success of 0027.713 'checkout attr=text aeol= core.autocrlf=true core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_true_attr_text_ CRLF crlf_false_attr__CRLF_mix_LF.txt
ok 713 - checkout attr=text aeol= core.autocrlf=true core.eol=lf file=CRLF_mix_LF
expecting success of 0027.714 'checkout attr=text aeol= core.autocrlf=true core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_true_attr_text_ CRLF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 714 - checkout attr=text aeol= core.autocrlf=true core.eol=lf file=LF_mix_CR
expecting success of 0027.715 'checkout attr=text aeol= core.autocrlf=true core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_true_attr_text_ CRLF_nul crlf_false_attr__LF_nul.txt
ok 715 - checkout attr=text aeol= core.autocrlf=true core.eol=lf file=LF_nul
expecting success of 0027.716 'setup config for checkout attr=text ident= aeol= core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 716 - setup config for checkout attr=text ident= aeol= core.autocrlf=input
expecting success of 0027.717 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 717 - setup LF checkout with -c core.eol=lf
expecting success of 0027.718 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 718 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.719 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 719 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.720 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 720 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.721 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 721 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.722 'ls-files --eol attr=text aeol= core.autocrlf=input core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 722 - ls-files --eol attr=text aeol= core.autocrlf=input core.eol=lf
expecting success of 0027.723 'checkout attr=text aeol= core.autocrlf=input core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_input_attr_text_ LF crlf_false_attr__LF.txt
ok 723 - checkout attr=text aeol= core.autocrlf=input core.eol=lf file=LF
expecting success of 0027.724 'checkout attr=text aeol= core.autocrlf=input core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_input_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 724 - checkout attr=text aeol= core.autocrlf=input core.eol=lf file=CRLF
expecting success of 0027.725 'checkout attr=text aeol= core.autocrlf=input core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_input_attr_text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 725 - checkout attr=text aeol= core.autocrlf=input core.eol=lf file=CRLF_mix_LF
expecting success of 0027.726 'checkout attr=text aeol= core.autocrlf=input core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_input_attr_text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 726 - checkout attr=text aeol= core.autocrlf=input core.eol=lf file=LF_mix_CR
expecting success of 0027.727 'checkout attr=text aeol= core.autocrlf=input core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_input_attr_text_ LF_nul crlf_false_attr__LF_nul.txt
ok 727 - checkout attr=text aeol= core.autocrlf=input core.eol=lf file=LF_nul
expecting success of 0027.728 'setup config for checkout attr=auto ident= aeol= core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 728 - setup config for checkout attr=auto ident= aeol= core.autocrlf=input
expecting success of 0027.729 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 729 - setup LF checkout with -c core.eol=lf
expecting success of 0027.730 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 730 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.731 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 731 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.732 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 732 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.733 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 733 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.734 'ls-files --eol attr=auto aeol= core.autocrlf=input core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 734 - ls-files --eol attr=auto aeol= core.autocrlf=input core.eol=lf
expecting success of 0027.735 'checkout attr=auto aeol= core.autocrlf=input core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_input_attr_auto_ LF crlf_false_attr__LF.txt
ok 735 - checkout attr=auto aeol= core.autocrlf=input core.eol=lf file=LF
expecting success of 0027.736 'checkout attr=auto aeol= core.autocrlf=input core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_input_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 736 - checkout attr=auto aeol= core.autocrlf=input core.eol=lf file=CRLF
expecting success of 0027.737 'checkout attr=auto aeol= core.autocrlf=input core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_input_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 737 - checkout attr=auto aeol= core.autocrlf=input core.eol=lf file=CRLF_mix_LF
expecting success of 0027.738 'checkout attr=auto aeol= core.autocrlf=input core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_input_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 738 - checkout attr=auto aeol= core.autocrlf=input core.eol=lf file=LF_mix_CR
expecting success of 0027.739 'checkout attr=auto aeol= core.autocrlf=input core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_input_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 739 - checkout attr=auto aeol= core.autocrlf=input core.eol=lf file=LF_nul
expecting success of 0027.740 'setup config for checkout attr=-text ident= aeol= core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 740 - setup config for checkout attr=-text ident= aeol= core.autocrlf=true
expecting success of 0027.741 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 741 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.742 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 742 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.743 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 743 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.744 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 744 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.745 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 745 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.746 'ls-files --eol attr=-text aeol= core.autocrlf=true core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 746 - ls-files --eol attr=-text aeol= core.autocrlf=true core.eol=crlf
expecting success of 0027.747 'checkout attr=-text aeol= core.autocrlf=true core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_true_attr_-text_ LF crlf_false_attr__LF.txt
ok 747 - checkout attr=-text aeol= core.autocrlf=true core.eol=crlf file=LF
expecting success of 0027.748 'checkout attr=-text aeol= core.autocrlf=true core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_true_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 748 - checkout attr=-text aeol= core.autocrlf=true core.eol=crlf file=CRLF
expecting success of 0027.749 'checkout attr=-text aeol= core.autocrlf=true core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_true_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 749 - checkout attr=-text aeol= core.autocrlf=true core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.750 'checkout attr=-text aeol= core.autocrlf=true core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_true_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 750 - checkout attr=-text aeol= core.autocrlf=true core.eol=crlf file=LF_mix_CR
expecting success of 0027.751 'checkout attr=-text aeol= core.autocrlf=true core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_true_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 751 - checkout attr=-text aeol= core.autocrlf=true core.eol=crlf file=LF_nul
expecting success of 0027.752 'setup config for checkout attr=-text ident= aeol=lf core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 752 - setup config for checkout attr=-text ident= aeol=lf core.autocrlf=true
expecting success of 0027.753 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 753 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.754 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 754 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.755 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 755 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.756 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 756 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.757 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 757 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.758 'ls-files --eol attr=-text aeol=lf core.autocrlf=true core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 758 - ls-files --eol attr=-text aeol=lf core.autocrlf=true core.eol=crlf
expecting success of 0027.759 'checkout attr=-text aeol=lf core.autocrlf=true core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_true_attr_-text_ LF crlf_false_attr__LF.txt
ok 759 - checkout attr=-text aeol=lf core.autocrlf=true core.eol=crlf file=LF
expecting success of 0027.760 'checkout attr=-text aeol=lf core.autocrlf=true core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_true_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 760 - checkout attr=-text aeol=lf core.autocrlf=true core.eol=crlf file=CRLF
expecting success of 0027.761 'checkout attr=-text aeol=lf core.autocrlf=true core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_true_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 761 - checkout attr=-text aeol=lf core.autocrlf=true core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.762 'checkout attr=-text aeol=lf core.autocrlf=true core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_true_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 762 - checkout attr=-text aeol=lf core.autocrlf=true core.eol=crlf file=LF_mix_CR
expecting success of 0027.763 'checkout attr=-text aeol=lf core.autocrlf=true core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_true_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 763 - checkout attr=-text aeol=lf core.autocrlf=true core.eol=crlf file=LF_nul
expecting success of 0027.764 'setup config for checkout attr=-text ident= aeol=crlf core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 764 - setup config for checkout attr=-text ident= aeol=crlf core.autocrlf=true
expecting success of 0027.765 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 765 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.766 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 766 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.767 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 767 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.768 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 768 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.769 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 769 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.770 'ls-files --eol attr=-text aeol=crlf core.autocrlf=true core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 770 - ls-files --eol attr=-text aeol=crlf core.autocrlf=true core.eol=crlf
expecting success of 0027.771 'checkout attr=-text aeol=crlf core.autocrlf=true core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_true_attr_-text_ LF crlf_false_attr__LF.txt
ok 771 - checkout attr=-text aeol=crlf core.autocrlf=true core.eol=crlf file=LF
expecting success of 0027.772 'checkout attr=-text aeol=crlf core.autocrlf=true core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_true_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 772 - checkout attr=-text aeol=crlf core.autocrlf=true core.eol=crlf file=CRLF
expecting success of 0027.773 'checkout attr=-text aeol=crlf core.autocrlf=true core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_true_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 773 - checkout attr=-text aeol=crlf core.autocrlf=true core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.774 'checkout attr=-text aeol=crlf core.autocrlf=true core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_true_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 774 - checkout attr=-text aeol=crlf core.autocrlf=true core.eol=crlf file=LF_mix_CR
expecting success of 0027.775 'checkout attr=-text aeol=crlf core.autocrlf=true core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_true_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 775 - checkout attr=-text aeol=crlf core.autocrlf=true core.eol=crlf file=LF_nul
expecting success of 0027.776 'setup config for checkout attr=text ident= aeol=lf core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 776 - setup config for checkout attr=text ident= aeol=lf core.autocrlf=true
expecting success of 0027.777 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 777 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.778 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 778 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.779 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 779 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.780 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 780 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.781 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 781 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.782 'ls-files --eol attr=text aeol=lf core.autocrlf=true core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 782 - ls-files --eol attr=text aeol=lf core.autocrlf=true core.eol=crlf
expecting success of 0027.783 'checkout attr=text aeol=lf core.autocrlf=true core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_true_attr_text_ LF crlf_false_attr__LF.txt
ok 783 - checkout attr=text aeol=lf core.autocrlf=true core.eol=crlf file=LF
expecting success of 0027.784 'checkout attr=text aeol=lf core.autocrlf=true core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_true_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 784 - checkout attr=text aeol=lf core.autocrlf=true core.eol=crlf file=CRLF
expecting success of 0027.785 'checkout attr=text aeol=lf core.autocrlf=true core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_true_attr_text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 785 - checkout attr=text aeol=lf core.autocrlf=true core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.786 'checkout attr=text aeol=lf core.autocrlf=true core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_true_attr_text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 786 - checkout attr=text aeol=lf core.autocrlf=true core.eol=crlf file=LF_mix_CR
expecting success of 0027.787 'checkout attr=text aeol=lf core.autocrlf=true core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_true_attr_text_ LF_nul crlf_false_attr__LF_nul.txt
ok 787 - checkout attr=text aeol=lf core.autocrlf=true core.eol=crlf file=LF_nul
expecting success of 0027.788 'setup config for checkout attr=text ident= aeol=crlf core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 788 - setup config for checkout attr=text ident= aeol=crlf core.autocrlf=true
expecting success of 0027.789 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 789 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.790 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 790 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.791 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 791 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.792 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 792 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.793 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 793 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.794 'ls-files --eol attr=text aeol=crlf core.autocrlf=true core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 794 - ls-files --eol attr=text aeol=crlf core.autocrlf=true core.eol=crlf
expecting success of 0027.795 'checkout attr=text aeol=crlf core.autocrlf=true core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_true_attr_text_ CRLF crlf_false_attr__LF.txt
ok 795 - checkout attr=text aeol=crlf core.autocrlf=true core.eol=crlf file=LF
expecting success of 0027.796 'checkout attr=text aeol=crlf core.autocrlf=true core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_true_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 796 - checkout attr=text aeol=crlf core.autocrlf=true core.eol=crlf file=CRLF
expecting success of 0027.797 'checkout attr=text aeol=crlf core.autocrlf=true core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_true_attr_text_ CRLF crlf_false_attr__CRLF_mix_LF.txt
ok 797 - checkout attr=text aeol=crlf core.autocrlf=true core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.798 'checkout attr=text aeol=crlf core.autocrlf=true core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_true_attr_text_ CRLF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 798 - checkout attr=text aeol=crlf core.autocrlf=true core.eol=crlf file=LF_mix_CR
expecting success of 0027.799 'checkout attr=text aeol=crlf core.autocrlf=true core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_true_attr_text_ CRLF_nul crlf_false_attr__LF_nul.txt
ok 799 - checkout attr=text aeol=crlf core.autocrlf=true core.eol=crlf file=LF_nul
expecting success of 0027.800 'setup config for checkout attr=auto ident= aeol=lf core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 800 - setup config for checkout attr=auto ident= aeol=lf core.autocrlf=true
expecting success of 0027.801 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 801 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.802 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 802 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.803 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 803 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.804 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 804 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.805 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 805 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.806 'ls-files --eol attr=auto aeol=lf core.autocrlf=true core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 806 - ls-files --eol attr=auto aeol=lf core.autocrlf=true core.eol=crlf
expecting success of 0027.807 'checkout attr=auto aeol=lf core.autocrlf=true core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_true_attr_auto_ LF crlf_false_attr__LF.txt
ok 807 - checkout attr=auto aeol=lf core.autocrlf=true core.eol=crlf file=LF
expecting success of 0027.808 'checkout attr=auto aeol=lf core.autocrlf=true core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_true_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 808 - checkout attr=auto aeol=lf core.autocrlf=true core.eol=crlf file=CRLF
expecting success of 0027.809 'checkout attr=auto aeol=lf core.autocrlf=true core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_true_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 809 - checkout attr=auto aeol=lf core.autocrlf=true core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.810 'checkout attr=auto aeol=lf core.autocrlf=true core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_true_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 810 - checkout attr=auto aeol=lf core.autocrlf=true core.eol=crlf file=LF_mix_CR
expecting success of 0027.811 'checkout attr=auto aeol=lf core.autocrlf=true core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_true_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 811 - checkout attr=auto aeol=lf core.autocrlf=true core.eol=crlf file=LF_nul
expecting success of 0027.812 'setup config for checkout attr=auto ident= aeol=crlf core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 812 - setup config for checkout attr=auto ident= aeol=crlf core.autocrlf=true
expecting success of 0027.813 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 813 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.814 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 814 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.815 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 815 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.816 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 816 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.817 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 817 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.818 'ls-files --eol attr=auto aeol=crlf core.autocrlf=true core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 818 - ls-files --eol attr=auto aeol=crlf core.autocrlf=true core.eol=crlf
expecting success of 0027.819 'checkout attr=auto aeol=crlf core.autocrlf=true core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_true_attr_auto_ CRLF crlf_false_attr__LF.txt
ok 819 - checkout attr=auto aeol=crlf core.autocrlf=true core.eol=crlf file=LF
expecting success of 0027.820 'checkout attr=auto aeol=crlf core.autocrlf=true core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_true_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 820 - checkout attr=auto aeol=crlf core.autocrlf=true core.eol=crlf file=CRLF
expecting success of 0027.821 'checkout attr=auto aeol=crlf core.autocrlf=true core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_true_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 821 - checkout attr=auto aeol=crlf core.autocrlf=true core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.822 'checkout attr=auto aeol=crlf core.autocrlf=true core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_true_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 822 - checkout attr=auto aeol=crlf core.autocrlf=true core.eol=crlf file=LF_mix_CR
expecting success of 0027.823 'checkout attr=auto aeol=crlf core.autocrlf=true core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_true_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 823 - checkout attr=auto aeol=crlf core.autocrlf=true core.eol=crlf file=LF_nul
expecting success of 0027.824 'setup config for checkout attr=-text ident= aeol= core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 824 - setup config for checkout attr=-text ident= aeol= core.autocrlf=false
expecting success of 0027.825 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 825 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.826 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 826 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.827 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 827 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.828 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 828 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.829 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 829 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.830 'ls-files --eol attr=-text aeol= core.autocrlf=false core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 830 - ls-files --eol attr=-text aeol= core.autocrlf=false core.eol=crlf
expecting success of 0027.831 'checkout attr=-text aeol= core.autocrlf=false core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_false_attr_-text_ LF crlf_false_attr__LF.txt
ok 831 - checkout attr=-text aeol= core.autocrlf=false core.eol=crlf file=LF
expecting success of 0027.832 'checkout attr=-text aeol= core.autocrlf=false core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_false_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 832 - checkout attr=-text aeol= core.autocrlf=false core.eol=crlf file=CRLF
expecting success of 0027.833 'checkout attr=-text aeol= core.autocrlf=false core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_false_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 833 - checkout attr=-text aeol= core.autocrlf=false core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.834 'checkout attr=-text aeol= core.autocrlf=false core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_false_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 834 - checkout attr=-text aeol= core.autocrlf=false core.eol=crlf file=LF_mix_CR
expecting success of 0027.835 'checkout attr=-text aeol= core.autocrlf=false core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_false_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 835 - checkout attr=-text aeol= core.autocrlf=false core.eol=crlf file=LF_nul
expecting success of 0027.836 'setup config for checkout attr=-text ident= aeol=lf core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 836 - setup config for checkout attr=-text ident= aeol=lf core.autocrlf=false
expecting success of 0027.837 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 837 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.838 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 838 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.839 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 839 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.840 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 840 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.841 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 841 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.842 'ls-files --eol attr=-text aeol=lf core.autocrlf=false core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 842 - ls-files --eol attr=-text aeol=lf core.autocrlf=false core.eol=crlf
expecting success of 0027.843 'checkout attr=-text aeol=lf core.autocrlf=false core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_false_attr_-text_ LF crlf_false_attr__LF.txt
ok 843 - checkout attr=-text aeol=lf core.autocrlf=false core.eol=crlf file=LF
expecting success of 0027.844 'checkout attr=-text aeol=lf core.autocrlf=false core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_false_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 844 - checkout attr=-text aeol=lf core.autocrlf=false core.eol=crlf file=CRLF
expecting success of 0027.845 'checkout attr=-text aeol=lf core.autocrlf=false core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_false_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 845 - checkout attr=-text aeol=lf core.autocrlf=false core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.846 'checkout attr=-text aeol=lf core.autocrlf=false core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_false_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 846 - checkout attr=-text aeol=lf core.autocrlf=false core.eol=crlf file=LF_mix_CR
expecting success of 0027.847 'checkout attr=-text aeol=lf core.autocrlf=false core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_false_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 847 - checkout attr=-text aeol=lf core.autocrlf=false core.eol=crlf file=LF_nul
expecting success of 0027.848 'setup config for checkout attr=-text ident= aeol=crlf core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 848 - setup config for checkout attr=-text ident= aeol=crlf core.autocrlf=false
expecting success of 0027.849 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 849 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.850 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 850 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.851 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 851 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.852 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 852 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.853 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 853 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.854 'ls-files --eol attr=-text aeol=crlf core.autocrlf=false core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 854 - ls-files --eol attr=-text aeol=crlf core.autocrlf=false core.eol=crlf
expecting success of 0027.855 'checkout attr=-text aeol=crlf core.autocrlf=false core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_false_attr_-text_ LF crlf_false_attr__LF.txt
ok 855 - checkout attr=-text aeol=crlf core.autocrlf=false core.eol=crlf file=LF
expecting success of 0027.856 'checkout attr=-text aeol=crlf core.autocrlf=false core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_false_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 856 - checkout attr=-text aeol=crlf core.autocrlf=false core.eol=crlf file=CRLF
expecting success of 0027.857 'checkout attr=-text aeol=crlf core.autocrlf=false core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_false_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 857 - checkout attr=-text aeol=crlf core.autocrlf=false core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.858 'checkout attr=-text aeol=crlf core.autocrlf=false core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_false_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 858 - checkout attr=-text aeol=crlf core.autocrlf=false core.eol=crlf file=LF_mix_CR
expecting success of 0027.859 'checkout attr=-text aeol=crlf core.autocrlf=false core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_false_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 859 - checkout attr=-text aeol=crlf core.autocrlf=false core.eol=crlf file=LF_nul
expecting success of 0027.860 'setup config for checkout attr=text ident= aeol=lf core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 860 - setup config for checkout attr=text ident= aeol=lf core.autocrlf=false
expecting success of 0027.861 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 861 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.862 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 862 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.863 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 863 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.864 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 864 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.865 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 865 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.866 'ls-files --eol attr=text aeol=lf core.autocrlf=false core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 866 - ls-files --eol attr=text aeol=lf core.autocrlf=false core.eol=crlf
expecting success of 0027.867 'checkout attr=text aeol=lf core.autocrlf=false core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_false_attr_text_ LF crlf_false_attr__LF.txt
ok 867 - checkout attr=text aeol=lf core.autocrlf=false core.eol=crlf file=LF
expecting success of 0027.868 'checkout attr=text aeol=lf core.autocrlf=false core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_false_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 868 - checkout attr=text aeol=lf core.autocrlf=false core.eol=crlf file=CRLF
expecting success of 0027.869 'checkout attr=text aeol=lf core.autocrlf=false core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_false_attr_text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 869 - checkout attr=text aeol=lf core.autocrlf=false core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.870 'checkout attr=text aeol=lf core.autocrlf=false core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_false_attr_text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 870 - checkout attr=text aeol=lf core.autocrlf=false core.eol=crlf file=LF_mix_CR
expecting success of 0027.871 'checkout attr=text aeol=lf core.autocrlf=false core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_false_attr_text_ LF_nul crlf_false_attr__LF_nul.txt
ok 871 - checkout attr=text aeol=lf core.autocrlf=false core.eol=crlf file=LF_nul
expecting success of 0027.872 'setup config for checkout attr=text ident= aeol=crlf core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 872 - setup config for checkout attr=text ident= aeol=crlf core.autocrlf=false
expecting success of 0027.873 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 873 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.874 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 874 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.875 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 875 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.876 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 876 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.877 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 877 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.878 'ls-files --eol attr=text aeol=crlf core.autocrlf=false core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 878 - ls-files --eol attr=text aeol=crlf core.autocrlf=false core.eol=crlf
expecting success of 0027.879 'checkout attr=text aeol=crlf core.autocrlf=false core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_false_attr_text_ CRLF crlf_false_attr__LF.txt
ok 879 - checkout attr=text aeol=crlf core.autocrlf=false core.eol=crlf file=LF
expecting success of 0027.880 'checkout attr=text aeol=crlf core.autocrlf=false core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_false_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 880 - checkout attr=text aeol=crlf core.autocrlf=false core.eol=crlf file=CRLF
expecting success of 0027.881 'checkout attr=text aeol=crlf core.autocrlf=false core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_false_attr_text_ CRLF crlf_false_attr__CRLF_mix_LF.txt
ok 881 - checkout attr=text aeol=crlf core.autocrlf=false core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.882 'checkout attr=text aeol=crlf core.autocrlf=false core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_false_attr_text_ CRLF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 882 - checkout attr=text aeol=crlf core.autocrlf=false core.eol=crlf file=LF_mix_CR
expecting success of 0027.883 'checkout attr=text aeol=crlf core.autocrlf=false core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_false_attr_text_ CRLF_nul crlf_false_attr__LF_nul.txt
ok 883 - checkout attr=text aeol=crlf core.autocrlf=false core.eol=crlf file=LF_nul
expecting success of 0027.884 'setup config for checkout attr=auto ident= aeol=lf core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 884 - setup config for checkout attr=auto ident= aeol=lf core.autocrlf=false
expecting success of 0027.885 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 885 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.886 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 886 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.887 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 887 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.888 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 888 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.889 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 889 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.890 'ls-files --eol attr=auto aeol=lf core.autocrlf=false core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 890 - ls-files --eol attr=auto aeol=lf core.autocrlf=false core.eol=crlf
expecting success of 0027.891 'checkout attr=auto aeol=lf core.autocrlf=false core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_false_attr_auto_ LF crlf_false_attr__LF.txt
ok 891 - checkout attr=auto aeol=lf core.autocrlf=false core.eol=crlf file=LF
expecting success of 0027.892 'checkout attr=auto aeol=lf core.autocrlf=false core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_false_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 892 - checkout attr=auto aeol=lf core.autocrlf=false core.eol=crlf file=CRLF
expecting success of 0027.893 'checkout attr=auto aeol=lf core.autocrlf=false core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_false_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 893 - checkout attr=auto aeol=lf core.autocrlf=false core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.894 'checkout attr=auto aeol=lf core.autocrlf=false core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_false_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 894 - checkout attr=auto aeol=lf core.autocrlf=false core.eol=crlf file=LF_mix_CR
expecting success of 0027.895 'checkout attr=auto aeol=lf core.autocrlf=false core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_false_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 895 - checkout attr=auto aeol=lf core.autocrlf=false core.eol=crlf file=LF_nul
expecting success of 0027.896 'setup config for checkout attr=auto ident= aeol=crlf core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 896 - setup config for checkout attr=auto ident= aeol=crlf core.autocrlf=false
expecting success of 0027.897 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 897 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.898 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 898 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.899 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 899 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.900 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 900 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.901 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 901 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.902 'ls-files --eol attr=auto aeol=crlf core.autocrlf=false core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 902 - ls-files --eol attr=auto aeol=crlf core.autocrlf=false core.eol=crlf
expecting success of 0027.903 'checkout attr=auto aeol=crlf core.autocrlf=false core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_false_attr_auto_ CRLF crlf_false_attr__LF.txt
ok 903 - checkout attr=auto aeol=crlf core.autocrlf=false core.eol=crlf file=LF
expecting success of 0027.904 'checkout attr=auto aeol=crlf core.autocrlf=false core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_false_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 904 - checkout attr=auto aeol=crlf core.autocrlf=false core.eol=crlf file=CRLF
expecting success of 0027.905 'checkout attr=auto aeol=crlf core.autocrlf=false core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_false_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 905 - checkout attr=auto aeol=crlf core.autocrlf=false core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.906 'checkout attr=auto aeol=crlf core.autocrlf=false core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_false_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 906 - checkout attr=auto aeol=crlf core.autocrlf=false core.eol=crlf file=LF_mix_CR
expecting success of 0027.907 'checkout attr=auto aeol=crlf core.autocrlf=false core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_false_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 907 - checkout attr=auto aeol=crlf core.autocrlf=false core.eol=crlf file=LF_nul
expecting success of 0027.908 'setup config for checkout attr=-text ident= aeol= core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 908 - setup config for checkout attr=-text ident= aeol= core.autocrlf=input
expecting success of 0027.909 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 909 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.910 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 910 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.911 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 911 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.912 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 912 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.913 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 913 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.914 'ls-files --eol attr=-text aeol= core.autocrlf=input core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 914 - ls-files --eol attr=-text aeol= core.autocrlf=input core.eol=crlf
expecting success of 0027.915 'checkout attr=-text aeol= core.autocrlf=input core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_input_attr_-text_ LF crlf_false_attr__LF.txt
ok 915 - checkout attr=-text aeol= core.autocrlf=input core.eol=crlf file=LF
expecting success of 0027.916 'checkout attr=-text aeol= core.autocrlf=input core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_input_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 916 - checkout attr=-text aeol= core.autocrlf=input core.eol=crlf file=CRLF
expecting success of 0027.917 'checkout attr=-text aeol= core.autocrlf=input core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_input_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 917 - checkout attr=-text aeol= core.autocrlf=input core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.918 'checkout attr=-text aeol= core.autocrlf=input core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_input_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 918 - checkout attr=-text aeol= core.autocrlf=input core.eol=crlf file=LF_mix_CR
expecting success of 0027.919 'checkout attr=-text aeol= core.autocrlf=input core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_input_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 919 - checkout attr=-text aeol= core.autocrlf=input core.eol=crlf file=LF_nul
expecting success of 0027.920 'setup config for checkout attr=-text ident= aeol=lf core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 920 - setup config for checkout attr=-text ident= aeol=lf core.autocrlf=input
expecting success of 0027.921 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 921 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.922 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 922 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.923 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 923 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.924 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 924 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.925 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 925 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.926 'ls-files --eol attr=-text aeol=lf core.autocrlf=input core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 926 - ls-files --eol attr=-text aeol=lf core.autocrlf=input core.eol=crlf
expecting success of 0027.927 'checkout attr=-text aeol=lf core.autocrlf=input core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_input_attr_-text_ LF crlf_false_attr__LF.txt
ok 927 - checkout attr=-text aeol=lf core.autocrlf=input core.eol=crlf file=LF
expecting success of 0027.928 'checkout attr=-text aeol=lf core.autocrlf=input core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_input_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 928 - checkout attr=-text aeol=lf core.autocrlf=input core.eol=crlf file=CRLF
expecting success of 0027.929 'checkout attr=-text aeol=lf core.autocrlf=input core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_input_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 929 - checkout attr=-text aeol=lf core.autocrlf=input core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.930 'checkout attr=-text aeol=lf core.autocrlf=input core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_input_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 930 - checkout attr=-text aeol=lf core.autocrlf=input core.eol=crlf file=LF_mix_CR
expecting success of 0027.931 'checkout attr=-text aeol=lf core.autocrlf=input core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_input_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 931 - checkout attr=-text aeol=lf core.autocrlf=input core.eol=crlf file=LF_nul
expecting success of 0027.932 'setup config for checkout attr=-text ident= aeol=crlf core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 932 - setup config for checkout attr=-text ident= aeol=crlf core.autocrlf=input
expecting success of 0027.933 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 933 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.934 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 934 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.935 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 935 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.936 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 936 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.937 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 937 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.938 'ls-files --eol attr=-text aeol=crlf core.autocrlf=input core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 938 - ls-files --eol attr=-text aeol=crlf core.autocrlf=input core.eol=crlf
expecting success of 0027.939 'checkout attr=-text aeol=crlf core.autocrlf=input core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_input_attr_-text_ LF crlf_false_attr__LF.txt
ok 939 - checkout attr=-text aeol=crlf core.autocrlf=input core.eol=crlf file=LF
expecting success of 0027.940 'checkout attr=-text aeol=crlf core.autocrlf=input core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_input_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 940 - checkout attr=-text aeol=crlf core.autocrlf=input core.eol=crlf file=CRLF
expecting success of 0027.941 'checkout attr=-text aeol=crlf core.autocrlf=input core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_input_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 941 - checkout attr=-text aeol=crlf core.autocrlf=input core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.942 'checkout attr=-text aeol=crlf core.autocrlf=input core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_input_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 942 - checkout attr=-text aeol=crlf core.autocrlf=input core.eol=crlf file=LF_mix_CR
expecting success of 0027.943 'checkout attr=-text aeol=crlf core.autocrlf=input core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_input_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 943 - checkout attr=-text aeol=crlf core.autocrlf=input core.eol=crlf file=LF_nul
expecting success of 0027.944 'setup config for checkout attr=text ident= aeol=lf core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 944 - setup config for checkout attr=text ident= aeol=lf core.autocrlf=input
expecting success of 0027.945 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 945 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.946 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 946 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.947 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 947 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.948 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 948 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.949 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 949 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.950 'ls-files --eol attr=text aeol=lf core.autocrlf=input core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 950 - ls-files --eol attr=text aeol=lf core.autocrlf=input core.eol=crlf
expecting success of 0027.951 'checkout attr=text aeol=lf core.autocrlf=input core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_input_attr_text_ LF crlf_false_attr__LF.txt
ok 951 - checkout attr=text aeol=lf core.autocrlf=input core.eol=crlf file=LF
expecting success of 0027.952 'checkout attr=text aeol=lf core.autocrlf=input core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_input_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 952 - checkout attr=text aeol=lf core.autocrlf=input core.eol=crlf file=CRLF
expecting success of 0027.953 'checkout attr=text aeol=lf core.autocrlf=input core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_input_attr_text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 953 - checkout attr=text aeol=lf core.autocrlf=input core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.954 'checkout attr=text aeol=lf core.autocrlf=input core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_input_attr_text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 954 - checkout attr=text aeol=lf core.autocrlf=input core.eol=crlf file=LF_mix_CR
expecting success of 0027.955 'checkout attr=text aeol=lf core.autocrlf=input core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_input_attr_text_ LF_nul crlf_false_attr__LF_nul.txt
ok 955 - checkout attr=text aeol=lf core.autocrlf=input core.eol=crlf file=LF_nul
expecting success of 0027.956 'setup config for checkout attr=text ident= aeol=crlf core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 956 - setup config for checkout attr=text ident= aeol=crlf core.autocrlf=input
expecting success of 0027.957 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 957 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.958 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 958 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.959 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 959 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.960 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 960 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.961 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 961 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.962 'ls-files --eol attr=text aeol=crlf core.autocrlf=input core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 962 - ls-files --eol attr=text aeol=crlf core.autocrlf=input core.eol=crlf
expecting success of 0027.963 'checkout attr=text aeol=crlf core.autocrlf=input core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_input_attr_text_ CRLF crlf_false_attr__LF.txt
ok 963 - checkout attr=text aeol=crlf core.autocrlf=input core.eol=crlf file=LF
expecting success of 0027.964 'checkout attr=text aeol=crlf core.autocrlf=input core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_input_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 964 - checkout attr=text aeol=crlf core.autocrlf=input core.eol=crlf file=CRLF
expecting success of 0027.965 'checkout attr=text aeol=crlf core.autocrlf=input core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_input_attr_text_ CRLF crlf_false_attr__CRLF_mix_LF.txt
ok 965 - checkout attr=text aeol=crlf core.autocrlf=input core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.966 'checkout attr=text aeol=crlf core.autocrlf=input core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_input_attr_text_ CRLF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 966 - checkout attr=text aeol=crlf core.autocrlf=input core.eol=crlf file=LF_mix_CR
expecting success of 0027.967 'checkout attr=text aeol=crlf core.autocrlf=input core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_input_attr_text_ CRLF_nul crlf_false_attr__LF_nul.txt
ok 967 - checkout attr=text aeol=crlf core.autocrlf=input core.eol=crlf file=LF_nul
expecting success of 0027.968 'setup config for checkout attr=auto ident= aeol=lf core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 968 - setup config for checkout attr=auto ident= aeol=lf core.autocrlf=input
expecting success of 0027.969 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 969 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.970 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 970 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.971 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 971 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.972 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 972 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.973 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 973 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.974 'ls-files --eol attr=auto aeol=lf core.autocrlf=input core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 974 - ls-files --eol attr=auto aeol=lf core.autocrlf=input core.eol=crlf
expecting success of 0027.975 'checkout attr=auto aeol=lf core.autocrlf=input core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_input_attr_auto_ LF crlf_false_attr__LF.txt
ok 975 - checkout attr=auto aeol=lf core.autocrlf=input core.eol=crlf file=LF
expecting success of 0027.976 'checkout attr=auto aeol=lf core.autocrlf=input core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_input_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 976 - checkout attr=auto aeol=lf core.autocrlf=input core.eol=crlf file=CRLF
expecting success of 0027.977 'checkout attr=auto aeol=lf core.autocrlf=input core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_input_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 977 - checkout attr=auto aeol=lf core.autocrlf=input core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.978 'checkout attr=auto aeol=lf core.autocrlf=input core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_input_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 978 - checkout attr=auto aeol=lf core.autocrlf=input core.eol=crlf file=LF_mix_CR
expecting success of 0027.979 'checkout attr=auto aeol=lf core.autocrlf=input core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_input_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 979 - checkout attr=auto aeol=lf core.autocrlf=input core.eol=crlf file=LF_nul
expecting success of 0027.980 'setup config for checkout attr=auto ident= aeol=crlf core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 980 - setup config for checkout attr=auto ident= aeol=crlf core.autocrlf=input
expecting success of 0027.981 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 981 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.982 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 982 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.983 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 983 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.984 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 984 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.985 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 985 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.986 'ls-files --eol attr=auto aeol=crlf core.autocrlf=input core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 986 - ls-files --eol attr=auto aeol=crlf core.autocrlf=input core.eol=crlf
expecting success of 0027.987 'checkout attr=auto aeol=crlf core.autocrlf=input core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_input_attr_auto_ CRLF crlf_false_attr__LF.txt
ok 987 - checkout attr=auto aeol=crlf core.autocrlf=input core.eol=crlf file=LF
expecting success of 0027.988 'checkout attr=auto aeol=crlf core.autocrlf=input core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_input_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 988 - checkout attr=auto aeol=crlf core.autocrlf=input core.eol=crlf file=CRLF
expecting success of 0027.989 'checkout attr=auto aeol=crlf core.autocrlf=input core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_input_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 989 - checkout attr=auto aeol=crlf core.autocrlf=input core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.990 'checkout attr=auto aeol=crlf core.autocrlf=input core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_input_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 990 - checkout attr=auto aeol=crlf core.autocrlf=input core.eol=crlf file=LF_mix_CR
expecting success of 0027.991 'checkout attr=auto aeol=crlf core.autocrlf=input core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_input_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 991 - checkout attr=auto aeol=crlf core.autocrlf=input core.eol=crlf file=LF_nul
expecting success of 0027.992 'setup config for checkout attr= ident= aeol= core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 992 - setup config for checkout attr= ident= aeol= core.autocrlf=false
expecting success of 0027.993 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 993 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.994 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 994 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.995 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 995 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.996 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 996 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.997 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 997 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.998 'ls-files --eol attr= aeol= core.autocrlf=false core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 998 - ls-files --eol attr= aeol= core.autocrlf=false core.eol=crlf
expecting success of 0027.999 'checkout attr= aeol= core.autocrlf=false core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_false_attr__ LF crlf_false_attr__LF.txt
ok 999 - checkout attr= aeol= core.autocrlf=false core.eol=crlf file=LF
expecting success of 0027.1000 'checkout attr= aeol= core.autocrlf=false core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_false_attr__ CRLF crlf_false_attr__CRLF.txt
ok 1000 - checkout attr= aeol= core.autocrlf=false core.eol=crlf file=CRLF
expecting success of 0027.1001 'checkout attr= aeol= core.autocrlf=false core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_false_attr__ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1001 - checkout attr= aeol= core.autocrlf=false core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.1002 'checkout attr= aeol= core.autocrlf=false core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_false_attr__ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1002 - checkout attr= aeol= core.autocrlf=false core.eol=crlf file=LF_mix_CR
expecting success of 0027.1003 'checkout attr= aeol= core.autocrlf=false core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_false_attr__ LF_nul crlf_false_attr__LF_nul.txt
ok 1003 - checkout attr= aeol= core.autocrlf=false core.eol=crlf file=LF_nul
expecting success of 0027.1004 'setup config for checkout attr= ident= aeol= core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1004 - setup config for checkout attr= ident= aeol= core.autocrlf=true
expecting success of 0027.1005 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1005 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.1006 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1006 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.1007 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1007 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.1008 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1008 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.1009 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1009 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.1010 'ls-files --eol attr= aeol= core.autocrlf=true core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1010 - ls-files --eol attr= aeol= core.autocrlf=true core.eol=crlf
expecting success of 0027.1011 'checkout attr= aeol= core.autocrlf=true core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_true_attr__ CRLF crlf_false_attr__LF.txt
ok 1011 - checkout attr= aeol= core.autocrlf=true core.eol=crlf file=LF
expecting success of 0027.1012 'checkout attr= aeol= core.autocrlf=true core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_true_attr__ CRLF crlf_false_attr__CRLF.txt
ok 1012 - checkout attr= aeol= core.autocrlf=true core.eol=crlf file=CRLF
expecting success of 0027.1013 'checkout attr= aeol= core.autocrlf=true core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_true_attr__ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1013 - checkout attr= aeol= core.autocrlf=true core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.1014 'checkout attr= aeol= core.autocrlf=true core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_true_attr__ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1014 - checkout attr= aeol= core.autocrlf=true core.eol=crlf file=LF_mix_CR
expecting success of 0027.1015 'checkout attr= aeol= core.autocrlf=true core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_true_attr__ LF_nul crlf_false_attr__LF_nul.txt
ok 1015 - checkout attr= aeol= core.autocrlf=true core.eol=crlf file=LF_nul
expecting success of 0027.1016 'setup config for checkout attr=auto ident= aeol= core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1016 - setup config for checkout attr=auto ident= aeol= core.autocrlf=true
expecting success of 0027.1017 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1017 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.1018 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1018 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.1019 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1019 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.1020 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1020 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.1021 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1021 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.1022 'ls-files --eol attr=auto aeol= core.autocrlf=true core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1022 - ls-files --eol attr=auto aeol= core.autocrlf=true core.eol=crlf
expecting success of 0027.1023 'checkout attr=auto aeol= core.autocrlf=true core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_true_attr_auto_ CRLF crlf_false_attr__LF.txt
ok 1023 - checkout attr=auto aeol= core.autocrlf=true core.eol=crlf file=LF
expecting success of 0027.1024 'checkout attr=auto aeol= core.autocrlf=true core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_true_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 1024 - checkout attr=auto aeol= core.autocrlf=true core.eol=crlf file=CRLF
expecting success of 0027.1025 'checkout attr=auto aeol= core.autocrlf=true core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_true_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1025 - checkout attr=auto aeol= core.autocrlf=true core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.1026 'checkout attr=auto aeol= core.autocrlf=true core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_true_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1026 - checkout attr=auto aeol= core.autocrlf=true core.eol=crlf file=LF_mix_CR
expecting success of 0027.1027 'checkout attr=auto aeol= core.autocrlf=true core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_true_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 1027 - checkout attr=auto aeol= core.autocrlf=true core.eol=crlf file=LF_nul
expecting success of 0027.1028 'setup config for checkout attr=text ident= aeol= core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1028 - setup config for checkout attr=text ident= aeol= core.autocrlf=true
expecting success of 0027.1029 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1029 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.1030 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1030 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.1031 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1031 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.1032 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1032 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.1033 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1033 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.1034 'ls-files --eol attr=text aeol= core.autocrlf=true core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1034 - ls-files --eol attr=text aeol= core.autocrlf=true core.eol=crlf
expecting success of 0027.1035 'checkout attr=text aeol= core.autocrlf=true core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_true_attr_text_ CRLF crlf_false_attr__LF.txt
ok 1035 - checkout attr=text aeol= core.autocrlf=true core.eol=crlf file=LF
expecting success of 0027.1036 'checkout attr=text aeol= core.autocrlf=true core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_true_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 1036 - checkout attr=text aeol= core.autocrlf=true core.eol=crlf file=CRLF
expecting success of 0027.1037 'checkout attr=text aeol= core.autocrlf=true core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_true_attr_text_ CRLF crlf_false_attr__CRLF_mix_LF.txt
ok 1037 - checkout attr=text aeol= core.autocrlf=true core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.1038 'checkout attr=text aeol= core.autocrlf=true core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_true_attr_text_ CRLF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1038 - checkout attr=text aeol= core.autocrlf=true core.eol=crlf file=LF_mix_CR
expecting success of 0027.1039 'checkout attr=text aeol= core.autocrlf=true core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_true_attr_text_ CRLF_nul crlf_false_attr__LF_nul.txt
ok 1039 - checkout attr=text aeol= core.autocrlf=true core.eol=crlf file=LF_nul
expecting success of 0027.1040 'setup config for checkout attr=text ident= aeol= core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1040 - setup config for checkout attr=text ident= aeol= core.autocrlf=input
expecting success of 0027.1041 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1041 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.1042 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1042 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.1043 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1043 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.1044 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1044 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.1045 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1045 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.1046 'ls-files --eol attr=text aeol= core.autocrlf=input core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1046 - ls-files --eol attr=text aeol= core.autocrlf=input core.eol=crlf
expecting success of 0027.1047 'checkout attr=text aeol= core.autocrlf=input core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_input_attr_text_ LF crlf_false_attr__LF.txt
ok 1047 - checkout attr=text aeol= core.autocrlf=input core.eol=crlf file=LF
expecting success of 0027.1048 'checkout attr=text aeol= core.autocrlf=input core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_input_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 1048 - checkout attr=text aeol= core.autocrlf=input core.eol=crlf file=CRLF
expecting success of 0027.1049 'checkout attr=text aeol= core.autocrlf=input core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_input_attr_text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1049 - checkout attr=text aeol= core.autocrlf=input core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.1050 'checkout attr=text aeol= core.autocrlf=input core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_input_attr_text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1050 - checkout attr=text aeol= core.autocrlf=input core.eol=crlf file=LF_mix_CR
expecting success of 0027.1051 'checkout attr=text aeol= core.autocrlf=input core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_input_attr_text_ LF_nul crlf_false_attr__LF_nul.txt
ok 1051 - checkout attr=text aeol= core.autocrlf=input core.eol=crlf file=LF_nul
expecting success of 0027.1052 'setup config for checkout attr=auto ident= aeol= core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1052 - setup config for checkout attr=auto ident= aeol= core.autocrlf=input
expecting success of 0027.1053 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1053 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.1054 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1054 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.1055 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1055 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.1056 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1056 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.1057 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1057 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.1058 'ls-files --eol attr=auto aeol= core.autocrlf=input core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1058 - ls-files --eol attr=auto aeol= core.autocrlf=input core.eol=crlf
expecting success of 0027.1059 'checkout attr=auto aeol= core.autocrlf=input core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_input_attr_auto_ LF crlf_false_attr__LF.txt
ok 1059 - checkout attr=auto aeol= core.autocrlf=input core.eol=crlf file=LF
expecting success of 0027.1060 'checkout attr=auto aeol= core.autocrlf=input core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_input_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 1060 - checkout attr=auto aeol= core.autocrlf=input core.eol=crlf file=CRLF
expecting success of 0027.1061 'checkout attr=auto aeol= core.autocrlf=input core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_input_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1061 - checkout attr=auto aeol= core.autocrlf=input core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.1062 'checkout attr=auto aeol= core.autocrlf=input core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_input_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1062 - checkout attr=auto aeol= core.autocrlf=input core.eol=crlf file=LF_mix_CR
expecting success of 0027.1063 'checkout attr=auto aeol= core.autocrlf=input core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_input_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 1063 - checkout attr=auto aeol= core.autocrlf=input core.eol=crlf file=LF_nul
expecting success of 0027.1064 'setup config for checkout attr=-text ident= aeol= core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1064 - setup config for checkout attr=-text ident= aeol= core.autocrlf=true
expecting success of 0027.1065 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1065 - setup LF checkout with -c core.eol=native
expecting success of 0027.1066 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1066 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.1067 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1067 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.1068 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1068 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.1069 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1069 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.1070 'ls-files --eol attr=-text aeol= core.autocrlf=true core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1070 - ls-files --eol attr=-text aeol= core.autocrlf=true core.eol=native
expecting success of 0027.1071 'checkout attr=-text aeol= core.autocrlf=true core.eol=native file=LF':
compare_ws_file eol_native_crlf_true_attr_-text_ LF crlf_false_attr__LF.txt
ok 1071 - checkout attr=-text aeol= core.autocrlf=true core.eol=native file=LF
expecting success of 0027.1072 'checkout attr=-text aeol= core.autocrlf=true core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_true_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 1072 - checkout attr=-text aeol= core.autocrlf=true core.eol=native file=CRLF
expecting success of 0027.1073 'checkout attr=-text aeol= core.autocrlf=true core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_true_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1073 - checkout attr=-text aeol= core.autocrlf=true core.eol=native file=CRLF_mix_LF
expecting success of 0027.1074 'checkout attr=-text aeol= core.autocrlf=true core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_true_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1074 - checkout attr=-text aeol= core.autocrlf=true core.eol=native file=LF_mix_CR
expecting success of 0027.1075 'checkout attr=-text aeol= core.autocrlf=true core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_true_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 1075 - checkout attr=-text aeol= core.autocrlf=true core.eol=native file=LF_nul
expecting success of 0027.1076 'setup config for checkout attr=-text ident= aeol=lf core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1076 - setup config for checkout attr=-text ident= aeol=lf core.autocrlf=true
expecting success of 0027.1077 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1077 - setup LF checkout with -c core.eol=native
expecting success of 0027.1078 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1078 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.1079 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1079 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.1080 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1080 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.1081 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1081 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.1082 'ls-files --eol attr=-text aeol=lf core.autocrlf=true core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1082 - ls-files --eol attr=-text aeol=lf core.autocrlf=true core.eol=native
expecting success of 0027.1083 'checkout attr=-text aeol=lf core.autocrlf=true core.eol=native file=LF':
compare_ws_file eol_native_crlf_true_attr_-text_ LF crlf_false_attr__LF.txt
ok 1083 - checkout attr=-text aeol=lf core.autocrlf=true core.eol=native file=LF
expecting success of 0027.1084 'checkout attr=-text aeol=lf core.autocrlf=true core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_true_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 1084 - checkout attr=-text aeol=lf core.autocrlf=true core.eol=native file=CRLF
expecting success of 0027.1085 'checkout attr=-text aeol=lf core.autocrlf=true core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_true_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1085 - checkout attr=-text aeol=lf core.autocrlf=true core.eol=native file=CRLF_mix_LF
expecting success of 0027.1086 'checkout attr=-text aeol=lf core.autocrlf=true core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_true_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1086 - checkout attr=-text aeol=lf core.autocrlf=true core.eol=native file=LF_mix_CR
expecting success of 0027.1087 'checkout attr=-text aeol=lf core.autocrlf=true core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_true_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 1087 - checkout attr=-text aeol=lf core.autocrlf=true core.eol=native file=LF_nul
expecting success of 0027.1088 'setup config for checkout attr=-text ident= aeol=crlf core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1088 - setup config for checkout attr=-text ident= aeol=crlf core.autocrlf=true
expecting success of 0027.1089 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1089 - setup LF checkout with -c core.eol=native
expecting success of 0027.1090 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1090 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.1091 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1091 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.1092 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1092 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.1093 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1093 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.1094 'ls-files --eol attr=-text aeol=crlf core.autocrlf=true core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1094 - ls-files --eol attr=-text aeol=crlf core.autocrlf=true core.eol=native
expecting success of 0027.1095 'checkout attr=-text aeol=crlf core.autocrlf=true core.eol=native file=LF':
compare_ws_file eol_native_crlf_true_attr_-text_ LF crlf_false_attr__LF.txt
ok 1095 - checkout attr=-text aeol=crlf core.autocrlf=true core.eol=native file=LF
expecting success of 0027.1096 'checkout attr=-text aeol=crlf core.autocrlf=true core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_true_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 1096 - checkout attr=-text aeol=crlf core.autocrlf=true core.eol=native file=CRLF
expecting success of 0027.1097 'checkout attr=-text aeol=crlf core.autocrlf=true core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_true_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1097 - checkout attr=-text aeol=crlf core.autocrlf=true core.eol=native file=CRLF_mix_LF
expecting success of 0027.1098 'checkout attr=-text aeol=crlf core.autocrlf=true core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_true_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1098 - checkout attr=-text aeol=crlf core.autocrlf=true core.eol=native file=LF_mix_CR
expecting success of 0027.1099 'checkout attr=-text aeol=crlf core.autocrlf=true core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_true_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 1099 - checkout attr=-text aeol=crlf core.autocrlf=true core.eol=native file=LF_nul
expecting success of 0027.1100 'setup config for checkout attr=text ident= aeol=lf core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1100 - setup config for checkout attr=text ident= aeol=lf core.autocrlf=true
expecting success of 0027.1101 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1101 - setup LF checkout with -c core.eol=native
expecting success of 0027.1102 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1102 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.1103 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1103 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.1104 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1104 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.1105 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1105 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.1106 'ls-files --eol attr=text aeol=lf core.autocrlf=true core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1106 - ls-files --eol attr=text aeol=lf core.autocrlf=true core.eol=native
expecting success of 0027.1107 'checkout attr=text aeol=lf core.autocrlf=true core.eol=native file=LF':
compare_ws_file eol_native_crlf_true_attr_text_ LF crlf_false_attr__LF.txt
ok 1107 - checkout attr=text aeol=lf core.autocrlf=true core.eol=native file=LF
expecting success of 0027.1108 'checkout attr=text aeol=lf core.autocrlf=true core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_true_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 1108 - checkout attr=text aeol=lf core.autocrlf=true core.eol=native file=CRLF
expecting success of 0027.1109 'checkout attr=text aeol=lf core.autocrlf=true core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_true_attr_text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1109 - checkout attr=text aeol=lf core.autocrlf=true core.eol=native file=CRLF_mix_LF
expecting success of 0027.1110 'checkout attr=text aeol=lf core.autocrlf=true core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_true_attr_text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1110 - checkout attr=text aeol=lf core.autocrlf=true core.eol=native file=LF_mix_CR
expecting success of 0027.1111 'checkout attr=text aeol=lf core.autocrlf=true core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_true_attr_text_ LF_nul crlf_false_attr__LF_nul.txt
ok 1111 - checkout attr=text aeol=lf core.autocrlf=true core.eol=native file=LF_nul
expecting success of 0027.1112 'setup config for checkout attr=text ident= aeol=crlf core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1112 - setup config for checkout attr=text ident= aeol=crlf core.autocrlf=true
expecting success of 0027.1113 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1113 - setup LF checkout with -c core.eol=native
expecting success of 0027.1114 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1114 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.1115 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1115 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.1116 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1116 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.1117 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1117 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.1118 'ls-files --eol attr=text aeol=crlf core.autocrlf=true core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1118 - ls-files --eol attr=text aeol=crlf core.autocrlf=true core.eol=native
expecting success of 0027.1119 'checkout attr=text aeol=crlf core.autocrlf=true core.eol=native file=LF':
compare_ws_file eol_native_crlf_true_attr_text_ CRLF crlf_false_attr__LF.txt
ok 1119 - checkout attr=text aeol=crlf core.autocrlf=true core.eol=native file=LF
expecting success of 0027.1120 'checkout attr=text aeol=crlf core.autocrlf=true core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_true_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 1120 - checkout attr=text aeol=crlf core.autocrlf=true core.eol=native file=CRLF
expecting success of 0027.1121 'checkout attr=text aeol=crlf core.autocrlf=true core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_true_attr_text_ CRLF crlf_false_attr__CRLF_mix_LF.txt
ok 1121 - checkout attr=text aeol=crlf core.autocrlf=true core.eol=native file=CRLF_mix_LF
expecting success of 0027.1122 'checkout attr=text aeol=crlf core.autocrlf=true core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_true_attr_text_ CRLF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1122 - checkout attr=text aeol=crlf core.autocrlf=true core.eol=native file=LF_mix_CR
expecting success of 0027.1123 'checkout attr=text aeol=crlf core.autocrlf=true core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_true_attr_text_ CRLF_nul crlf_false_attr__LF_nul.txt
ok 1123 - checkout attr=text aeol=crlf core.autocrlf=true core.eol=native file=LF_nul
expecting success of 0027.1124 'setup config for checkout attr=auto ident= aeol=lf core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1124 - setup config for checkout attr=auto ident= aeol=lf core.autocrlf=true
expecting success of 0027.1125 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1125 - setup LF checkout with -c core.eol=native
expecting success of 0027.1126 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1126 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.1127 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1127 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.1128 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1128 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.1129 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1129 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.1130 'ls-files --eol attr=auto aeol=lf core.autocrlf=true core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1130 - ls-files --eol attr=auto aeol=lf core.autocrlf=true core.eol=native
expecting success of 0027.1131 'checkout attr=auto aeol=lf core.autocrlf=true core.eol=native file=LF':
compare_ws_file eol_native_crlf_true_attr_auto_ LF crlf_false_attr__LF.txt
ok 1131 - checkout attr=auto aeol=lf core.autocrlf=true core.eol=native file=LF
expecting success of 0027.1132 'checkout attr=auto aeol=lf core.autocrlf=true core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_true_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 1132 - checkout attr=auto aeol=lf core.autocrlf=true core.eol=native file=CRLF
expecting success of 0027.1133 'checkout attr=auto aeol=lf core.autocrlf=true core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_true_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1133 - checkout attr=auto aeol=lf core.autocrlf=true core.eol=native file=CRLF_mix_LF
expecting success of 0027.1134 'checkout attr=auto aeol=lf core.autocrlf=true core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_true_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1134 - checkout attr=auto aeol=lf core.autocrlf=true core.eol=native file=LF_mix_CR
expecting success of 0027.1135 'checkout attr=auto aeol=lf core.autocrlf=true core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_true_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 1135 - checkout attr=auto aeol=lf core.autocrlf=true core.eol=native file=LF_nul
expecting success of 0027.1136 'setup config for checkout attr=auto ident= aeol=crlf core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1136 - setup config for checkout attr=auto ident= aeol=crlf core.autocrlf=true
expecting success of 0027.1137 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1137 - setup LF checkout with -c core.eol=native
expecting success of 0027.1138 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1138 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.1139 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1139 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.1140 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1140 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.1141 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1141 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.1142 'ls-files --eol attr=auto aeol=crlf core.autocrlf=true core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1142 - ls-files --eol attr=auto aeol=crlf core.autocrlf=true core.eol=native
expecting success of 0027.1143 'checkout attr=auto aeol=crlf core.autocrlf=true core.eol=native file=LF':
compare_ws_file eol_native_crlf_true_attr_auto_ CRLF crlf_false_attr__LF.txt
ok 1143 - checkout attr=auto aeol=crlf core.autocrlf=true core.eol=native file=LF
expecting success of 0027.1144 'checkout attr=auto aeol=crlf core.autocrlf=true core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_true_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 1144 - checkout attr=auto aeol=crlf core.autocrlf=true core.eol=native file=CRLF
expecting success of 0027.1145 'checkout attr=auto aeol=crlf core.autocrlf=true core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_true_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1145 - checkout attr=auto aeol=crlf core.autocrlf=true core.eol=native file=CRLF_mix_LF
expecting success of 0027.1146 'checkout attr=auto aeol=crlf core.autocrlf=true core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_true_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1146 - checkout attr=auto aeol=crlf core.autocrlf=true core.eol=native file=LF_mix_CR
expecting success of 0027.1147 'checkout attr=auto aeol=crlf core.autocrlf=true core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_true_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 1147 - checkout attr=auto aeol=crlf core.autocrlf=true core.eol=native file=LF_nul
expecting success of 0027.1148 'setup config for checkout attr=-text ident= aeol= core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1148 - setup config for checkout attr=-text ident= aeol= core.autocrlf=false
expecting success of 0027.1149 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1149 - setup LF checkout with -c core.eol=native
expecting success of 0027.1150 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1150 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.1151 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1151 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.1152 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1152 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.1153 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1153 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.1154 'ls-files --eol attr=-text aeol= core.autocrlf=false core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1154 - ls-files --eol attr=-text aeol= core.autocrlf=false core.eol=native
expecting success of 0027.1155 'checkout attr=-text aeol= core.autocrlf=false core.eol=native file=LF':
compare_ws_file eol_native_crlf_false_attr_-text_ LF crlf_false_attr__LF.txt
ok 1155 - checkout attr=-text aeol= core.autocrlf=false core.eol=native file=LF
expecting success of 0027.1156 'checkout attr=-text aeol= core.autocrlf=false core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_false_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 1156 - checkout attr=-text aeol= core.autocrlf=false core.eol=native file=CRLF
expecting success of 0027.1157 'checkout attr=-text aeol= core.autocrlf=false core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_false_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1157 - checkout attr=-text aeol= core.autocrlf=false core.eol=native file=CRLF_mix_LF
expecting success of 0027.1158 'checkout attr=-text aeol= core.autocrlf=false core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_false_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1158 - checkout attr=-text aeol= core.autocrlf=false core.eol=native file=LF_mix_CR
expecting success of 0027.1159 'checkout attr=-text aeol= core.autocrlf=false core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_false_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 1159 - checkout attr=-text aeol= core.autocrlf=false core.eol=native file=LF_nul
expecting success of 0027.1160 'setup config for checkout attr=-text ident= aeol=lf core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1160 - setup config for checkout attr=-text ident= aeol=lf core.autocrlf=false
expecting success of 0027.1161 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1161 - setup LF checkout with -c core.eol=native
expecting success of 0027.1162 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1162 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.1163 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1163 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.1164 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1164 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.1165 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1165 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.1166 'ls-files --eol attr=-text aeol=lf core.autocrlf=false core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1166 - ls-files --eol attr=-text aeol=lf core.autocrlf=false core.eol=native
expecting success of 0027.1167 'checkout attr=-text aeol=lf core.autocrlf=false core.eol=native file=LF':
compare_ws_file eol_native_crlf_false_attr_-text_ LF crlf_false_attr__LF.txt
ok 1167 - checkout attr=-text aeol=lf core.autocrlf=false core.eol=native file=LF
expecting success of 0027.1168 'checkout attr=-text aeol=lf core.autocrlf=false core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_false_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 1168 - checkout attr=-text aeol=lf core.autocrlf=false core.eol=native file=CRLF
expecting success of 0027.1169 'checkout attr=-text aeol=lf core.autocrlf=false core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_false_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1169 - checkout attr=-text aeol=lf core.autocrlf=false core.eol=native file=CRLF_mix_LF
expecting success of 0027.1170 'checkout attr=-text aeol=lf core.autocrlf=false core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_false_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1170 - checkout attr=-text aeol=lf core.autocrlf=false core.eol=native file=LF_mix_CR
expecting success of 0027.1171 'checkout attr=-text aeol=lf core.autocrlf=false core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_false_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 1171 - checkout attr=-text aeol=lf core.autocrlf=false core.eol=native file=LF_nul
expecting success of 0027.1172 'setup config for checkout attr=-text ident= aeol=crlf core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1172 - setup config for checkout attr=-text ident= aeol=crlf core.autocrlf=false
expecting success of 0027.1173 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1173 - setup LF checkout with -c core.eol=native
expecting success of 0027.1174 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1174 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.1175 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1175 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.1176 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1176 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.1177 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1177 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.1178 'ls-files --eol attr=-text aeol=crlf core.autocrlf=false core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1178 - ls-files --eol attr=-text aeol=crlf core.autocrlf=false core.eol=native
expecting success of 0027.1179 'checkout attr=-text aeol=crlf core.autocrlf=false core.eol=native file=LF':
compare_ws_file eol_native_crlf_false_attr_-text_ LF crlf_false_attr__LF.txt
ok 1179 - checkout attr=-text aeol=crlf core.autocrlf=false core.eol=native file=LF
expecting success of 0027.1180 'checkout attr=-text aeol=crlf core.autocrlf=false core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_false_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 1180 - checkout attr=-text aeol=crlf core.autocrlf=false core.eol=native file=CRLF
expecting success of 0027.1181 'checkout attr=-text aeol=crlf core.autocrlf=false core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_false_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1181 - checkout attr=-text aeol=crlf core.autocrlf=false core.eol=native file=CRLF_mix_LF
expecting success of 0027.1182 'checkout attr=-text aeol=crlf core.autocrlf=false core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_false_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1182 - checkout attr=-text aeol=crlf core.autocrlf=false core.eol=native file=LF_mix_CR
expecting success of 0027.1183 'checkout attr=-text aeol=crlf core.autocrlf=false core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_false_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 1183 - checkout attr=-text aeol=crlf core.autocrlf=false core.eol=native file=LF_nul
expecting success of 0027.1184 'setup config for checkout attr=text ident= aeol=lf core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1184 - setup config for checkout attr=text ident= aeol=lf core.autocrlf=false
expecting success of 0027.1185 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1185 - setup LF checkout with -c core.eol=native
expecting success of 0027.1186 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1186 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.1187 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1187 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.1188 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1188 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.1189 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1189 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.1190 'ls-files --eol attr=text aeol=lf core.autocrlf=false core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1190 - ls-files --eol attr=text aeol=lf core.autocrlf=false core.eol=native
expecting success of 0027.1191 'checkout attr=text aeol=lf core.autocrlf=false core.eol=native file=LF':
compare_ws_file eol_native_crlf_false_attr_text_ LF crlf_false_attr__LF.txt
ok 1191 - checkout attr=text aeol=lf core.autocrlf=false core.eol=native file=LF
expecting success of 0027.1192 'checkout attr=text aeol=lf core.autocrlf=false core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_false_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 1192 - checkout attr=text aeol=lf core.autocrlf=false core.eol=native file=CRLF
expecting success of 0027.1193 'checkout attr=text aeol=lf core.autocrlf=false core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_false_attr_text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1193 - checkout attr=text aeol=lf core.autocrlf=false core.eol=native file=CRLF_mix_LF
expecting success of 0027.1194 'checkout attr=text aeol=lf core.autocrlf=false core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_false_attr_text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1194 - checkout attr=text aeol=lf core.autocrlf=false core.eol=native file=LF_mix_CR
expecting success of 0027.1195 'checkout attr=text aeol=lf core.autocrlf=false core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_false_attr_text_ LF_nul crlf_false_attr__LF_nul.txt
ok 1195 - checkout attr=text aeol=lf core.autocrlf=false core.eol=native file=LF_nul
expecting success of 0027.1196 'setup config for checkout attr=text ident= aeol=crlf core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1196 - setup config for checkout attr=text ident= aeol=crlf core.autocrlf=false
expecting success of 0027.1197 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1197 - setup LF checkout with -c core.eol=native
expecting success of 0027.1198 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1198 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.1199 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1199 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.1200 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1200 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.1201 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1201 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.1202 'ls-files --eol attr=text aeol=crlf core.autocrlf=false core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1202 - ls-files --eol attr=text aeol=crlf core.autocrlf=false core.eol=native
expecting success of 0027.1203 'checkout attr=text aeol=crlf core.autocrlf=false core.eol=native file=LF':
compare_ws_file eol_native_crlf_false_attr_text_ CRLF crlf_false_attr__LF.txt
ok 1203 - checkout attr=text aeol=crlf core.autocrlf=false core.eol=native file=LF
expecting success of 0027.1204 'checkout attr=text aeol=crlf core.autocrlf=false core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_false_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 1204 - checkout attr=text aeol=crlf core.autocrlf=false core.eol=native file=CRLF
expecting success of 0027.1205 'checkout attr=text aeol=crlf core.autocrlf=false core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_false_attr_text_ CRLF crlf_false_attr__CRLF_mix_LF.txt
ok 1205 - checkout attr=text aeol=crlf core.autocrlf=false core.eol=native file=CRLF_mix_LF
expecting success of 0027.1206 'checkout attr=text aeol=crlf core.autocrlf=false core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_false_attr_text_ CRLF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1206 - checkout attr=text aeol=crlf core.autocrlf=false core.eol=native file=LF_mix_CR
expecting success of 0027.1207 'checkout attr=text aeol=crlf core.autocrlf=false core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_false_attr_text_ CRLF_nul crlf_false_attr__LF_nul.txt
ok 1207 - checkout attr=text aeol=crlf core.autocrlf=false core.eol=native file=LF_nul
expecting success of 0027.1208 'setup config for checkout attr=auto ident= aeol=lf core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1208 - setup config for checkout attr=auto ident= aeol=lf core.autocrlf=false
expecting success of 0027.1209 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1209 - setup LF checkout with -c core.eol=native
expecting success of 0027.1210 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1210 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.1211 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1211 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.1212 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1212 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.1213 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1213 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.1214 'ls-files --eol attr=auto aeol=lf core.autocrlf=false core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1214 - ls-files --eol attr=auto aeol=lf core.autocrlf=false core.eol=native
expecting success of 0027.1215 'checkout attr=auto aeol=lf core.autocrlf=false core.eol=native file=LF':
compare_ws_file eol_native_crlf_false_attr_auto_ LF crlf_false_attr__LF.txt
ok 1215 - checkout attr=auto aeol=lf core.autocrlf=false core.eol=native file=LF
expecting success of 0027.1216 'checkout attr=auto aeol=lf core.autocrlf=false core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_false_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 1216 - checkout attr=auto aeol=lf core.autocrlf=false core.eol=native file=CRLF
expecting success of 0027.1217 'checkout attr=auto aeol=lf core.autocrlf=false core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_false_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1217 - checkout attr=auto aeol=lf core.autocrlf=false core.eol=native file=CRLF_mix_LF
expecting success of 0027.1218 'checkout attr=auto aeol=lf core.autocrlf=false core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_false_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1218 - checkout attr=auto aeol=lf core.autocrlf=false core.eol=native file=LF_mix_CR
expecting success of 0027.1219 'checkout attr=auto aeol=lf core.autocrlf=false core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_false_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 1219 - checkout attr=auto aeol=lf core.autocrlf=false core.eol=native file=LF_nul
expecting success of 0027.1220 'setup config for checkout attr=auto ident= aeol=crlf core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1220 - setup config for checkout attr=auto ident= aeol=crlf core.autocrlf=false
expecting success of 0027.1221 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1221 - setup LF checkout with -c core.eol=native
expecting success of 0027.1222 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1222 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.1223 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1223 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.1224 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1224 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.1225 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1225 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.1226 'ls-files --eol attr=auto aeol=crlf core.autocrlf=false core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1226 - ls-files --eol attr=auto aeol=crlf core.autocrlf=false core.eol=native
expecting success of 0027.1227 'checkout attr=auto aeol=crlf core.autocrlf=false core.eol=native file=LF':
compare_ws_file eol_native_crlf_false_attr_auto_ CRLF crlf_false_attr__LF.txt
ok 1227 - checkout attr=auto aeol=crlf core.autocrlf=false core.eol=native file=LF
expecting success of 0027.1228 'checkout attr=auto aeol=crlf core.autocrlf=false core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_false_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 1228 - checkout attr=auto aeol=crlf core.autocrlf=false core.eol=native file=CRLF
expecting success of 0027.1229 'checkout attr=auto aeol=crlf core.autocrlf=false core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_false_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1229 - checkout attr=auto aeol=crlf core.autocrlf=false core.eol=native file=CRLF_mix_LF
expecting success of 0027.1230 'checkout attr=auto aeol=crlf core.autocrlf=false core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_false_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1230 - checkout attr=auto aeol=crlf core.autocrlf=false core.eol=native file=LF_mix_CR
expecting success of 0027.1231 'checkout attr=auto aeol=crlf core.autocrlf=false core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_false_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 1231 - checkout attr=auto aeol=crlf core.autocrlf=false core.eol=native file=LF_nul
expecting success of 0027.1232 'setup config for checkout attr=-text ident= aeol= core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1232 - setup config for checkout attr=-text ident= aeol= core.autocrlf=input
expecting success of 0027.1233 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1233 - setup LF checkout with -c core.eol=native
expecting success of 0027.1234 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1234 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.1235 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1235 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.1236 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1236 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.1237 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1237 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.1238 'ls-files --eol attr=-text aeol= core.autocrlf=input core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1238 - ls-files --eol attr=-text aeol= core.autocrlf=input core.eol=native
expecting success of 0027.1239 'checkout attr=-text aeol= core.autocrlf=input core.eol=native file=LF':
compare_ws_file eol_native_crlf_input_attr_-text_ LF crlf_false_attr__LF.txt
ok 1239 - checkout attr=-text aeol= core.autocrlf=input core.eol=native file=LF
expecting success of 0027.1240 'checkout attr=-text aeol= core.autocrlf=input core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_input_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 1240 - checkout attr=-text aeol= core.autocrlf=input core.eol=native file=CRLF
expecting success of 0027.1241 'checkout attr=-text aeol= core.autocrlf=input core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_input_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1241 - checkout attr=-text aeol= core.autocrlf=input core.eol=native file=CRLF_mix_LF
expecting success of 0027.1242 'checkout attr=-text aeol= core.autocrlf=input core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_input_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1242 - checkout attr=-text aeol= core.autocrlf=input core.eol=native file=LF_mix_CR
expecting success of 0027.1243 'checkout attr=-text aeol= core.autocrlf=input core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_input_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 1243 - checkout attr=-text aeol= core.autocrlf=input core.eol=native file=LF_nul
expecting success of 0027.1244 'setup config for checkout attr=-text ident= aeol=lf core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1244 - setup config for checkout attr=-text ident= aeol=lf core.autocrlf=input
expecting success of 0027.1245 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1245 - setup LF checkout with -c core.eol=native
expecting success of 0027.1246 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1246 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.1247 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1247 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.1248 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1248 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.1249 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1249 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.1250 'ls-files --eol attr=-text aeol=lf core.autocrlf=input core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1250 - ls-files --eol attr=-text aeol=lf core.autocrlf=input core.eol=native
expecting success of 0027.1251 'checkout attr=-text aeol=lf core.autocrlf=input core.eol=native file=LF':
compare_ws_file eol_native_crlf_input_attr_-text_ LF crlf_false_attr__LF.txt
ok 1251 - checkout attr=-text aeol=lf core.autocrlf=input core.eol=native file=LF
expecting success of 0027.1252 'checkout attr=-text aeol=lf core.autocrlf=input core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_input_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 1252 - checkout attr=-text aeol=lf core.autocrlf=input core.eol=native file=CRLF
expecting success of 0027.1253 'checkout attr=-text aeol=lf core.autocrlf=input core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_input_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1253 - checkout attr=-text aeol=lf core.autocrlf=input core.eol=native file=CRLF_mix_LF
expecting success of 0027.1254 'checkout attr=-text aeol=lf core.autocrlf=input core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_input_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1254 - checkout attr=-text aeol=lf core.autocrlf=input core.eol=native file=LF_mix_CR
expecting success of 0027.1255 'checkout attr=-text aeol=lf core.autocrlf=input core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_input_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 1255 - checkout attr=-text aeol=lf core.autocrlf=input core.eol=native file=LF_nul
expecting success of 0027.1256 'setup config for checkout attr=-text ident= aeol=crlf core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1256 - setup config for checkout attr=-text ident= aeol=crlf core.autocrlf=input
expecting success of 0027.1257 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1257 - setup LF checkout with -c core.eol=native
expecting success of 0027.1258 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1258 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.1259 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1259 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.1260 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1260 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.1261 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1261 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.1262 'ls-files --eol attr=-text aeol=crlf core.autocrlf=input core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1262 - ls-files --eol attr=-text aeol=crlf core.autocrlf=input core.eol=native
expecting success of 0027.1263 'checkout attr=-text aeol=crlf core.autocrlf=input core.eol=native file=LF':
compare_ws_file eol_native_crlf_input_attr_-text_ LF crlf_false_attr__LF.txt
ok 1263 - checkout attr=-text aeol=crlf core.autocrlf=input core.eol=native file=LF
expecting success of 0027.1264 'checkout attr=-text aeol=crlf core.autocrlf=input core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_input_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 1264 - checkout attr=-text aeol=crlf core.autocrlf=input core.eol=native file=CRLF
expecting success of 0027.1265 'checkout attr=-text aeol=crlf core.autocrlf=input core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_input_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1265 - checkout attr=-text aeol=crlf core.autocrlf=input core.eol=native file=CRLF_mix_LF
expecting success of 0027.1266 'checkout attr=-text aeol=crlf core.autocrlf=input core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_input_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1266 - checkout attr=-text aeol=crlf core.autocrlf=input core.eol=native file=LF_mix_CR
expecting success of 0027.1267 'checkout attr=-text aeol=crlf core.autocrlf=input core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_input_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 1267 - checkout attr=-text aeol=crlf core.autocrlf=input core.eol=native file=LF_nul
expecting success of 0027.1268 'setup config for checkout attr=text ident= aeol=lf core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1268 - setup config for checkout attr=text ident= aeol=lf core.autocrlf=input
expecting success of 0027.1269 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1269 - setup LF checkout with -c core.eol=native
expecting success of 0027.1270 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1270 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.1271 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1271 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.1272 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1272 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.1273 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1273 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.1274 'ls-files --eol attr=text aeol=lf core.autocrlf=input core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1274 - ls-files --eol attr=text aeol=lf core.autocrlf=input core.eol=native
expecting success of 0027.1275 'checkout attr=text aeol=lf core.autocrlf=input core.eol=native file=LF':
compare_ws_file eol_native_crlf_input_attr_text_ LF crlf_false_attr__LF.txt
ok 1275 - checkout attr=text aeol=lf core.autocrlf=input core.eol=native file=LF
expecting success of 0027.1276 'checkout attr=text aeol=lf core.autocrlf=input core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_input_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 1276 - checkout attr=text aeol=lf core.autocrlf=input core.eol=native file=CRLF
expecting success of 0027.1277 'checkout attr=text aeol=lf core.autocrlf=input core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_input_attr_text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1277 - checkout attr=text aeol=lf core.autocrlf=input core.eol=native file=CRLF_mix_LF
expecting success of 0027.1278 'checkout attr=text aeol=lf core.autocrlf=input core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_input_attr_text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1278 - checkout attr=text aeol=lf core.autocrlf=input core.eol=native file=LF_mix_CR
expecting success of 0027.1279 'checkout attr=text aeol=lf core.autocrlf=input core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_input_attr_text_ LF_nul crlf_false_attr__LF_nul.txt
ok 1279 - checkout attr=text aeol=lf core.autocrlf=input core.eol=native file=LF_nul
expecting success of 0027.1280 'setup config for checkout attr=text ident= aeol=crlf core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1280 - setup config for checkout attr=text ident= aeol=crlf core.autocrlf=input
expecting success of 0027.1281 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1281 - setup LF checkout with -c core.eol=native
expecting success of 0027.1282 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1282 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.1283 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1283 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.1284 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1284 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.1285 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1285 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.1286 'ls-files --eol attr=text aeol=crlf core.autocrlf=input core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1286 - ls-files --eol attr=text aeol=crlf core.autocrlf=input core.eol=native
expecting success of 0027.1287 'checkout attr=text aeol=crlf core.autocrlf=input core.eol=native file=LF':
compare_ws_file eol_native_crlf_input_attr_text_ CRLF crlf_false_attr__LF.txt
ok 1287 - checkout attr=text aeol=crlf core.autocrlf=input core.eol=native file=LF
expecting success of 0027.1288 'checkout attr=text aeol=crlf core.autocrlf=input core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_input_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 1288 - checkout attr=text aeol=crlf core.autocrlf=input core.eol=native file=CRLF
expecting success of 0027.1289 'checkout attr=text aeol=crlf core.autocrlf=input core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_input_attr_text_ CRLF crlf_false_attr__CRLF_mix_LF.txt
ok 1289 - checkout attr=text aeol=crlf core.autocrlf=input core.eol=native file=CRLF_mix_LF
expecting success of 0027.1290 'checkout attr=text aeol=crlf core.autocrlf=input core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_input_attr_text_ CRLF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1290 - checkout attr=text aeol=crlf core.autocrlf=input core.eol=native file=LF_mix_CR
expecting success of 0027.1291 'checkout attr=text aeol=crlf core.autocrlf=input core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_input_attr_text_ CRLF_nul crlf_false_attr__LF_nul.txt
ok 1291 - checkout attr=text aeol=crlf core.autocrlf=input core.eol=native file=LF_nul
expecting success of 0027.1292 'setup config for checkout attr=auto ident= aeol=lf core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1292 - setup config for checkout attr=auto ident= aeol=lf core.autocrlf=input
expecting success of 0027.1293 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1293 - setup LF checkout with -c core.eol=native
expecting success of 0027.1294 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1294 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.1295 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1295 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.1296 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1296 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.1297 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1297 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.1298 'ls-files --eol attr=auto aeol=lf core.autocrlf=input core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1298 - ls-files --eol attr=auto aeol=lf core.autocrlf=input core.eol=native
expecting success of 0027.1299 'checkout attr=auto aeol=lf core.autocrlf=input core.eol=native file=LF':
compare_ws_file eol_native_crlf_input_attr_auto_ LF crlf_false_attr__LF.txt
ok 1299 - checkout attr=auto aeol=lf core.autocrlf=input core.eol=native file=LF
expecting success of 0027.1300 'checkout attr=auto aeol=lf core.autocrlf=input core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_input_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 1300 - checkout attr=auto aeol=lf core.autocrlf=input core.eol=native file=CRLF
expecting success of 0027.1301 'checkout attr=auto aeol=lf core.autocrlf=input core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_input_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1301 - checkout attr=auto aeol=lf core.autocrlf=input core.eol=native file=CRLF_mix_LF
expecting success of 0027.1302 'checkout attr=auto aeol=lf core.autocrlf=input core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_input_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1302 - checkout attr=auto aeol=lf core.autocrlf=input core.eol=native file=LF_mix_CR
expecting success of 0027.1303 'checkout attr=auto aeol=lf core.autocrlf=input core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_input_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 1303 - checkout attr=auto aeol=lf core.autocrlf=input core.eol=native file=LF_nul
expecting success of 0027.1304 'setup config for checkout attr=auto ident= aeol=crlf core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1304 - setup config for checkout attr=auto ident= aeol=crlf core.autocrlf=input
expecting success of 0027.1305 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1305 - setup LF checkout with -c core.eol=native
expecting success of 0027.1306 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1306 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.1307 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1307 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.1308 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1308 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.1309 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1309 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.1310 'ls-files --eol attr=auto aeol=crlf core.autocrlf=input core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1310 - ls-files --eol attr=auto aeol=crlf core.autocrlf=input core.eol=native
expecting success of 0027.1311 'checkout attr=auto aeol=crlf core.autocrlf=input core.eol=native file=LF':
compare_ws_file eol_native_crlf_input_attr_auto_ CRLF crlf_false_attr__LF.txt
ok 1311 - checkout attr=auto aeol=crlf core.autocrlf=input core.eol=native file=LF
expecting success of 0027.1312 'checkout attr=auto aeol=crlf core.autocrlf=input core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_input_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 1312 - checkout attr=auto aeol=crlf core.autocrlf=input core.eol=native file=CRLF
expecting success of 0027.1313 'checkout attr=auto aeol=crlf core.autocrlf=input core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_input_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1313 - checkout attr=auto aeol=crlf core.autocrlf=input core.eol=native file=CRLF_mix_LF
expecting success of 0027.1314 'checkout attr=auto aeol=crlf core.autocrlf=input core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_input_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1314 - checkout attr=auto aeol=crlf core.autocrlf=input core.eol=native file=LF_mix_CR
expecting success of 0027.1315 'checkout attr=auto aeol=crlf core.autocrlf=input core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_input_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 1315 - checkout attr=auto aeol=crlf core.autocrlf=input core.eol=native file=LF_nul
expecting success of 0027.1316 'setup config for checkout attr= ident= aeol= core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1316 - setup config for checkout attr= ident= aeol= core.autocrlf=false
expecting success of 0027.1317 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1317 - setup LF checkout with -c core.eol=native
expecting success of 0027.1318 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1318 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.1319 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1319 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.1320 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1320 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.1321 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1321 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.1322 'ls-files --eol attr= aeol= core.autocrlf=false core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1322 - ls-files --eol attr= aeol= core.autocrlf=false core.eol=native
expecting success of 0027.1323 'checkout attr= aeol= core.autocrlf=false core.eol=native file=LF':
compare_ws_file eol_native_crlf_false_attr__ LF crlf_false_attr__LF.txt
ok 1323 - checkout attr= aeol= core.autocrlf=false core.eol=native file=LF
expecting success of 0027.1324 'checkout attr= aeol= core.autocrlf=false core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_false_attr__ CRLF crlf_false_attr__CRLF.txt
ok 1324 - checkout attr= aeol= core.autocrlf=false core.eol=native file=CRLF
expecting success of 0027.1325 'checkout attr= aeol= core.autocrlf=false core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_false_attr__ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1325 - checkout attr= aeol= core.autocrlf=false core.eol=native file=CRLF_mix_LF
expecting success of 0027.1326 'checkout attr= aeol= core.autocrlf=false core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_false_attr__ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1326 - checkout attr= aeol= core.autocrlf=false core.eol=native file=LF_mix_CR
expecting success of 0027.1327 'checkout attr= aeol= core.autocrlf=false core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_false_attr__ LF_nul crlf_false_attr__LF_nul.txt
ok 1327 - checkout attr= aeol= core.autocrlf=false core.eol=native file=LF_nul
expecting success of 0027.1328 'setup config for checkout attr= ident= aeol= core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1328 - setup config for checkout attr= ident= aeol= core.autocrlf=true
expecting success of 0027.1329 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1329 - setup LF checkout with -c core.eol=native
expecting success of 0027.1330 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1330 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.1331 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1331 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.1332 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1332 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.1333 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1333 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.1334 'ls-files --eol attr= aeol= core.autocrlf=true core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1334 - ls-files --eol attr= aeol= core.autocrlf=true core.eol=native
expecting success of 0027.1335 'checkout attr= aeol= core.autocrlf=true core.eol=native file=LF':
compare_ws_file eol_native_crlf_true_attr__ CRLF crlf_false_attr__LF.txt
ok 1335 - checkout attr= aeol= core.autocrlf=true core.eol=native file=LF
expecting success of 0027.1336 'checkout attr= aeol= core.autocrlf=true core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_true_attr__ CRLF crlf_false_attr__CRLF.txt
ok 1336 - checkout attr= aeol= core.autocrlf=true core.eol=native file=CRLF
expecting success of 0027.1337 'checkout attr= aeol= core.autocrlf=true core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_true_attr__ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1337 - checkout attr= aeol= core.autocrlf=true core.eol=native file=CRLF_mix_LF
expecting success of 0027.1338 'checkout attr= aeol= core.autocrlf=true core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_true_attr__ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1338 - checkout attr= aeol= core.autocrlf=true core.eol=native file=LF_mix_CR
expecting success of 0027.1339 'checkout attr= aeol= core.autocrlf=true core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_true_attr__ LF_nul crlf_false_attr__LF_nul.txt
ok 1339 - checkout attr= aeol= core.autocrlf=true core.eol=native file=LF_nul
expecting success of 0027.1340 'setup config for checkout attr=auto ident= aeol= core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1340 - setup config for checkout attr=auto ident= aeol= core.autocrlf=true
expecting success of 0027.1341 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1341 - setup LF checkout with -c core.eol=native
expecting success of 0027.1342 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1342 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.1343 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1343 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.1344 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1344 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.1345 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1345 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.1346 'ls-files --eol attr=auto aeol= core.autocrlf=true core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1346 - ls-files --eol attr=auto aeol= core.autocrlf=true core.eol=native
expecting success of 0027.1347 'checkout attr=auto aeol= core.autocrlf=true core.eol=native file=LF':
compare_ws_file eol_native_crlf_true_attr_auto_ CRLF crlf_false_attr__LF.txt
ok 1347 - checkout attr=auto aeol= core.autocrlf=true core.eol=native file=LF
expecting success of 0027.1348 'checkout attr=auto aeol= core.autocrlf=true core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_true_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 1348 - checkout attr=auto aeol= core.autocrlf=true core.eol=native file=CRLF
expecting success of 0027.1349 'checkout attr=auto aeol= core.autocrlf=true core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_true_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1349 - checkout attr=auto aeol= core.autocrlf=true core.eol=native file=CRLF_mix_LF
expecting success of 0027.1350 'checkout attr=auto aeol= core.autocrlf=true core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_true_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1350 - checkout attr=auto aeol= core.autocrlf=true core.eol=native file=LF_mix_CR
expecting success of 0027.1351 'checkout attr=auto aeol= core.autocrlf=true core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_true_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 1351 - checkout attr=auto aeol= core.autocrlf=true core.eol=native file=LF_nul
expecting success of 0027.1352 'setup config for checkout attr=text ident= aeol= core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1352 - setup config for checkout attr=text ident= aeol= core.autocrlf=true
expecting success of 0027.1353 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1353 - setup LF checkout with -c core.eol=native
expecting success of 0027.1354 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1354 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.1355 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1355 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.1356 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1356 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.1357 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1357 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.1358 'ls-files --eol attr=text aeol= core.autocrlf=true core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1358 - ls-files --eol attr=text aeol= core.autocrlf=true core.eol=native
expecting success of 0027.1359 'checkout attr=text aeol= core.autocrlf=true core.eol=native file=LF':
compare_ws_file eol_native_crlf_true_attr_text_ CRLF crlf_false_attr__LF.txt
ok 1359 - checkout attr=text aeol= core.autocrlf=true core.eol=native file=LF
expecting success of 0027.1360 'checkout attr=text aeol= core.autocrlf=true core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_true_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 1360 - checkout attr=text aeol= core.autocrlf=true core.eol=native file=CRLF
expecting success of 0027.1361 'checkout attr=text aeol= core.autocrlf=true core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_true_attr_text_ CRLF crlf_false_attr__CRLF_mix_LF.txt
ok 1361 - checkout attr=text aeol= core.autocrlf=true core.eol=native file=CRLF_mix_LF
expecting success of 0027.1362 'checkout attr=text aeol= core.autocrlf=true core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_true_attr_text_ CRLF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1362 - checkout attr=text aeol= core.autocrlf=true core.eol=native file=LF_mix_CR
expecting success of 0027.1363 'checkout attr=text aeol= core.autocrlf=true core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_true_attr_text_ CRLF_nul crlf_false_attr__LF_nul.txt
ok 1363 - checkout attr=text aeol= core.autocrlf=true core.eol=native file=LF_nul
expecting success of 0027.1364 'setup config for checkout attr=text ident= aeol= core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1364 - setup config for checkout attr=text ident= aeol= core.autocrlf=input
expecting success of 0027.1365 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1365 - setup LF checkout with -c core.eol=native
expecting success of 0027.1366 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1366 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.1367 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1367 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.1368 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1368 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.1369 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1369 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.1370 'ls-files --eol attr=text aeol= core.autocrlf=input core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1370 - ls-files --eol attr=text aeol= core.autocrlf=input core.eol=native
expecting success of 0027.1371 'checkout attr=text aeol= core.autocrlf=input core.eol=native file=LF':
compare_ws_file eol_native_crlf_input_attr_text_ LF crlf_false_attr__LF.txt
ok 1371 - checkout attr=text aeol= core.autocrlf=input core.eol=native file=LF
expecting success of 0027.1372 'checkout attr=text aeol= core.autocrlf=input core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_input_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 1372 - checkout attr=text aeol= core.autocrlf=input core.eol=native file=CRLF
expecting success of 0027.1373 'checkout attr=text aeol= core.autocrlf=input core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_input_attr_text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1373 - checkout attr=text aeol= core.autocrlf=input core.eol=native file=CRLF_mix_LF
expecting success of 0027.1374 'checkout attr=text aeol= core.autocrlf=input core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_input_attr_text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1374 - checkout attr=text aeol= core.autocrlf=input core.eol=native file=LF_mix_CR
expecting success of 0027.1375 'checkout attr=text aeol= core.autocrlf=input core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_input_attr_text_ LF_nul crlf_false_attr__LF_nul.txt
ok 1375 - checkout attr=text aeol= core.autocrlf=input core.eol=native file=LF_nul
expecting success of 0027.1376 'setup config for checkout attr=auto ident= aeol= core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1376 - setup config for checkout attr=auto ident= aeol= core.autocrlf=input
expecting success of 0027.1377 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1377 - setup LF checkout with -c core.eol=native
expecting success of 0027.1378 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1378 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.1379 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1379 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.1380 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1380 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.1381 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1381 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.1382 'ls-files --eol attr=auto aeol= core.autocrlf=input core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1382 - ls-files --eol attr=auto aeol= core.autocrlf=input core.eol=native
expecting success of 0027.1383 'checkout attr=auto aeol= core.autocrlf=input core.eol=native file=LF':
compare_ws_file eol_native_crlf_input_attr_auto_ LF crlf_false_attr__LF.txt
ok 1383 - checkout attr=auto aeol= core.autocrlf=input core.eol=native file=LF
expecting success of 0027.1384 'checkout attr=auto aeol= core.autocrlf=input core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_input_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 1384 - checkout attr=auto aeol= core.autocrlf=input core.eol=native file=CRLF
expecting success of 0027.1385 'checkout attr=auto aeol= core.autocrlf=input core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_input_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1385 - checkout attr=auto aeol= core.autocrlf=input core.eol=native file=CRLF_mix_LF
expecting success of 0027.1386 'checkout attr=auto aeol= core.autocrlf=input core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_input_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1386 - checkout attr=auto aeol= core.autocrlf=input core.eol=native file=LF_mix_CR
expecting success of 0027.1387 'checkout attr=auto aeol= core.autocrlf=input core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_input_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 1387 - checkout attr=auto aeol= core.autocrlf=input core.eol=native file=LF_nul
expecting success of 0027.1388 'setup config for checkout attr=text ident= aeol= core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1388 - setup config for checkout attr=text ident= aeol= core.autocrlf=false
expecting success of 0027.1389 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1389 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.1390 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1390 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.1391 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1391 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.1392 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1392 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.1393 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1393 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.1394 'ls-files --eol attr=text aeol= core.autocrlf=false core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1394 - ls-files --eol attr=text aeol= core.autocrlf=false core.eol=crlf
expecting success of 0027.1395 'checkout attr=text aeol= core.autocrlf=false core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_false_attr_text_ CRLF crlf_false_attr__LF.txt
ok 1395 - checkout attr=text aeol= core.autocrlf=false core.eol=crlf file=LF
expecting success of 0027.1396 'checkout attr=text aeol= core.autocrlf=false core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_false_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 1396 - checkout attr=text aeol= core.autocrlf=false core.eol=crlf file=CRLF
expecting success of 0027.1397 'checkout attr=text aeol= core.autocrlf=false core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_false_attr_text_ CRLF crlf_false_attr__CRLF_mix_LF.txt
ok 1397 - checkout attr=text aeol= core.autocrlf=false core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.1398 'checkout attr=text aeol= core.autocrlf=false core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_false_attr_text_ CRLF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1398 - checkout attr=text aeol= core.autocrlf=false core.eol=crlf file=LF_mix_CR
expecting success of 0027.1399 'checkout attr=text aeol= core.autocrlf=false core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_false_attr_text_ CRLF_nul crlf_false_attr__LF_nul.txt
ok 1399 - checkout attr=text aeol= core.autocrlf=false core.eol=crlf file=LF_nul
expecting success of 0027.1400 'setup config for checkout attr=text ident= aeol= core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1400 - setup config for checkout attr=text ident= aeol= core.autocrlf=false
expecting success of 0027.1401 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1401 - setup LF checkout with -c core.eol=lf
expecting success of 0027.1402 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1402 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.1403 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1403 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.1404 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1404 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.1405 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1405 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.1406 'ls-files --eol attr=text aeol= core.autocrlf=false core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1406 - ls-files --eol attr=text aeol= core.autocrlf=false core.eol=lf
expecting success of 0027.1407 'checkout attr=text aeol= core.autocrlf=false core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_false_attr_text_ LF crlf_false_attr__LF.txt
ok 1407 - checkout attr=text aeol= core.autocrlf=false core.eol=lf file=LF
expecting success of 0027.1408 'checkout attr=text aeol= core.autocrlf=false core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_false_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 1408 - checkout attr=text aeol= core.autocrlf=false core.eol=lf file=CRLF
expecting success of 0027.1409 'checkout attr=text aeol= core.autocrlf=false core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_false_attr_text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1409 - checkout attr=text aeol= core.autocrlf=false core.eol=lf file=CRLF_mix_LF
expecting success of 0027.1410 'checkout attr=text aeol= core.autocrlf=false core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_false_attr_text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1410 - checkout attr=text aeol= core.autocrlf=false core.eol=lf file=LF_mix_CR
expecting success of 0027.1411 'checkout attr=text aeol= core.autocrlf=false core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_false_attr_text_ LF_nul crlf_false_attr__LF_nul.txt
ok 1411 - checkout attr=text aeol= core.autocrlf=false core.eol=lf file=LF_nul
expecting success of 0027.1412 'setup config for checkout attr=text ident= aeol= core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1412 - setup config for checkout attr=text ident= aeol= core.autocrlf=false
expecting success of 0027.1413 'setup LF checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1413 - setup LF checkout
expecting success of 0027.1414 'setup CRLF checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1414 - setup CRLF checkout
expecting success of 0027.1415 'setup LF_mix_CR checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1415 - setup LF_mix_CR checkout
expecting success of 0027.1416 'setup CRLF_mix_LF checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1416 - setup CRLF_mix_LF checkout
expecting success of 0027.1417 'setup LF_nul checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1417 - setup LF_nul checkout
expecting success of 0027.1418 'ls-files --eol attr=text aeol= core.autocrlf=false core.eol=':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1418 - ls-files --eol attr=text aeol= core.autocrlf=false core.eol=
expecting success of 0027.1419 'checkout attr=text aeol= core.autocrlf=false core.eol= file=LF':
compare_ws_file eol__crlf_false_attr_text_ LF crlf_false_attr__LF.txt
ok 1419 - checkout attr=text aeol= core.autocrlf=false core.eol= file=LF
expecting success of 0027.1420 'checkout attr=text aeol= core.autocrlf=false core.eol= file=CRLF':
compare_ws_file eol__crlf_false_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 1420 - checkout attr=text aeol= core.autocrlf=false core.eol= file=CRLF
expecting success of 0027.1421 'checkout attr=text aeol= core.autocrlf=false core.eol= file=CRLF_mix_LF':
compare_ws_file eol__crlf_false_attr_text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1421 - checkout attr=text aeol= core.autocrlf=false core.eol= file=CRLF_mix_LF
expecting success of 0027.1422 'checkout attr=text aeol= core.autocrlf=false core.eol= file=LF_mix_CR':
compare_ws_file eol__crlf_false_attr_text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1422 - checkout attr=text aeol= core.autocrlf=false core.eol= file=LF_mix_CR
expecting success of 0027.1423 'checkout attr=text aeol= core.autocrlf=false core.eol= file=LF_nul':
compare_ws_file eol__crlf_false_attr_text_ LF_nul crlf_false_attr__LF_nul.txt
ok 1423 - checkout attr=text aeol= core.autocrlf=false core.eol= file=LF_nul
expecting success of 0027.1424 'setup config for checkout attr=text ident= aeol= core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1424 - setup config for checkout attr=text ident= aeol= core.autocrlf=false
expecting success of 0027.1425 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1425 - setup LF checkout with -c core.eol=native
expecting success of 0027.1426 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1426 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.1427 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1427 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.1428 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1428 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.1429 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1429 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.1430 'ls-files --eol attr=text aeol= core.autocrlf=false core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1430 - ls-files --eol attr=text aeol= core.autocrlf=false core.eol=native
expecting success of 0027.1431 'checkout attr=text aeol= core.autocrlf=false core.eol=native file=LF':
compare_ws_file eol_native_crlf_false_attr_text_ LF crlf_false_attr__LF.txt
ok 1431 - checkout attr=text aeol= core.autocrlf=false core.eol=native file=LF
expecting success of 0027.1432 'checkout attr=text aeol= core.autocrlf=false core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_false_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 1432 - checkout attr=text aeol= core.autocrlf=false core.eol=native file=CRLF
expecting success of 0027.1433 'checkout attr=text aeol= core.autocrlf=false core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_false_attr_text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1433 - checkout attr=text aeol= core.autocrlf=false core.eol=native file=CRLF_mix_LF
expecting success of 0027.1434 'checkout attr=text aeol= core.autocrlf=false core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_false_attr_text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1434 - checkout attr=text aeol= core.autocrlf=false core.eol=native file=LF_mix_CR
expecting success of 0027.1435 'checkout attr=text aeol= core.autocrlf=false core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_false_attr_text_ LF_nul crlf_false_attr__LF_nul.txt
ok 1435 - checkout attr=text aeol= core.autocrlf=false core.eol=native file=LF_nul
expecting success of 0027.1436 'setup config for checkout attr=auto ident= aeol= core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1436 - setup config for checkout attr=auto ident= aeol= core.autocrlf=false
expecting success of 0027.1437 'setup LF checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1437 - setup LF checkout
expecting success of 0027.1438 'setup CRLF checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1438 - setup CRLF checkout
expecting success of 0027.1439 'setup LF_mix_CR checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1439 - setup LF_mix_CR checkout
expecting success of 0027.1440 'setup CRLF_mix_LF checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1440 - setup CRLF_mix_LF checkout
expecting success of 0027.1441 'setup LF_nul checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1441 - setup LF_nul checkout
expecting success of 0027.1442 'ls-files --eol attr=auto aeol= core.autocrlf=false core.eol=':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1442 - ls-files --eol attr=auto aeol= core.autocrlf=false core.eol=
expecting success of 0027.1443 'checkout attr=auto aeol= core.autocrlf=false core.eol= file=LF':
compare_ws_file eol__crlf_false_attr_auto_ LF crlf_false_attr__LF.txt
ok 1443 - checkout attr=auto aeol= core.autocrlf=false core.eol= file=LF
expecting success of 0027.1444 'checkout attr=auto aeol= core.autocrlf=false core.eol= file=CRLF':
compare_ws_file eol__crlf_false_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 1444 - checkout attr=auto aeol= core.autocrlf=false core.eol= file=CRLF
expecting success of 0027.1445 'checkout attr=auto aeol= core.autocrlf=false core.eol= file=CRLF_mix_LF':
compare_ws_file eol__crlf_false_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1445 - checkout attr=auto aeol= core.autocrlf=false core.eol= file=CRLF_mix_LF
expecting success of 0027.1446 'checkout attr=auto aeol= core.autocrlf=false core.eol= file=LF_mix_CR':
compare_ws_file eol__crlf_false_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1446 - checkout attr=auto aeol= core.autocrlf=false core.eol= file=LF_mix_CR
expecting success of 0027.1447 'checkout attr=auto aeol= core.autocrlf=false core.eol= file=LF_nul':
compare_ws_file eol__crlf_false_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 1447 - checkout attr=auto aeol= core.autocrlf=false core.eol= file=LF_nul
expecting success of 0027.1448 'setup config for checkout attr=auto ident= aeol= core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1448 - setup config for checkout attr=auto ident= aeol= core.autocrlf=false
expecting success of 0027.1449 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1449 - setup LF checkout with -c core.eol=native
expecting success of 0027.1450 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1450 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.1451 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1451 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.1452 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1452 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.1453 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1453 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.1454 'ls-files --eol attr=auto aeol= core.autocrlf=false core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1454 - ls-files --eol attr=auto aeol= core.autocrlf=false core.eol=native
expecting success of 0027.1455 'checkout attr=auto aeol= core.autocrlf=false core.eol=native file=LF':
compare_ws_file eol_native_crlf_false_attr_auto_ LF crlf_false_attr__LF.txt
ok 1455 - checkout attr=auto aeol= core.autocrlf=false core.eol=native file=LF
expecting success of 0027.1456 'checkout attr=auto aeol= core.autocrlf=false core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_false_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 1456 - checkout attr=auto aeol= core.autocrlf=false core.eol=native file=CRLF
expecting success of 0027.1457 'checkout attr=auto aeol= core.autocrlf=false core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_false_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1457 - checkout attr=auto aeol= core.autocrlf=false core.eol=native file=CRLF_mix_LF
expecting success of 0027.1458 'checkout attr=auto aeol= core.autocrlf=false core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_false_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1458 - checkout attr=auto aeol= core.autocrlf=false core.eol=native file=LF_mix_CR
expecting success of 0027.1459 'checkout attr=auto aeol= core.autocrlf=false core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_false_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 1459 - checkout attr=auto aeol= core.autocrlf=false core.eol=native file=LF_nul
expecting success of 0027.1460 'setup config for checkout attr= ident= aeol=lf core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1460 - setup config for checkout attr= ident= aeol=lf core.autocrlf=false
expecting success of 0027.1461 'setup LF checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1461 - setup LF checkout
expecting success of 0027.1462 'setup CRLF checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1462 - setup CRLF checkout
expecting success of 0027.1463 'setup LF_mix_CR checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1463 - setup LF_mix_CR checkout
expecting success of 0027.1464 'setup CRLF_mix_LF checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1464 - setup CRLF_mix_LF checkout
expecting success of 0027.1465 'setup LF_nul checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1465 - setup LF_nul checkout
expecting success of 0027.1466 'ls-files --eol attr= aeol=lf core.autocrlf=false core.eol=':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1466 - ls-files --eol attr= aeol=lf core.autocrlf=false core.eol=
expecting success of 0027.1467 'checkout attr= aeol=lf core.autocrlf=false core.eol= file=LF':
compare_ws_file eol__crlf_false_attr__ LF crlf_false_attr__LF.txt
ok 1467 - checkout attr= aeol=lf core.autocrlf=false core.eol= file=LF
expecting success of 0027.1468 'checkout attr= aeol=lf core.autocrlf=false core.eol= file=CRLF':
compare_ws_file eol__crlf_false_attr__ CRLF crlf_false_attr__CRLF.txt
ok 1468 - checkout attr= aeol=lf core.autocrlf=false core.eol= file=CRLF
expecting success of 0027.1469 'checkout attr= aeol=lf core.autocrlf=false core.eol= file=CRLF_mix_LF':
compare_ws_file eol__crlf_false_attr__ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1469 - checkout attr= aeol=lf core.autocrlf=false core.eol= file=CRLF_mix_LF
expecting success of 0027.1470 'checkout attr= aeol=lf core.autocrlf=false core.eol= file=LF_mix_CR':
compare_ws_file eol__crlf_false_attr__ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1470 - checkout attr= aeol=lf core.autocrlf=false core.eol= file=LF_mix_CR
expecting success of 0027.1471 'checkout attr= aeol=lf core.autocrlf=false core.eol= file=LF_nul':
compare_ws_file eol__crlf_false_attr__ LF_nul crlf_false_attr__LF_nul.txt
ok 1471 - checkout attr= aeol=lf core.autocrlf=false core.eol= file=LF_nul
expecting success of 0027.1472 'setup config for checkout attr= ident= aeol=crlf core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1472 - setup config for checkout attr= ident= aeol=crlf core.autocrlf=false
expecting success of 0027.1473 'setup LF checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1473 - setup LF checkout
expecting success of 0027.1474 'setup CRLF checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1474 - setup CRLF checkout
expecting success of 0027.1475 'setup LF_mix_CR checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1475 - setup LF_mix_CR checkout
expecting success of 0027.1476 'setup CRLF_mix_LF checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1476 - setup CRLF_mix_LF checkout
expecting success of 0027.1477 'setup LF_nul checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1477 - setup LF_nul checkout
expecting success of 0027.1478 'ls-files --eol attr= aeol=crlf core.autocrlf=false core.eol=':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1478 - ls-files --eol attr= aeol=crlf core.autocrlf=false core.eol=
expecting success of 0027.1479 'checkout attr= aeol=crlf core.autocrlf=false core.eol= file=LF':
compare_ws_file eol__crlf_false_attr__ CRLF crlf_false_attr__LF.txt
ok 1479 - checkout attr= aeol=crlf core.autocrlf=false core.eol= file=LF
expecting success of 0027.1480 'checkout attr= aeol=crlf core.autocrlf=false core.eol= file=CRLF':
compare_ws_file eol__crlf_false_attr__ CRLF crlf_false_attr__CRLF.txt
ok 1480 - checkout attr= aeol=crlf core.autocrlf=false core.eol= file=CRLF
expecting success of 0027.1481 'checkout attr= aeol=crlf core.autocrlf=false core.eol= file=CRLF_mix_LF':
compare_ws_file eol__crlf_false_attr__ CRLF crlf_false_attr__CRLF_mix_LF.txt
ok 1481 - checkout attr= aeol=crlf core.autocrlf=false core.eol= file=CRLF_mix_LF
expecting success of 0027.1482 'checkout attr= aeol=crlf core.autocrlf=false core.eol= file=LF_mix_CR':
compare_ws_file eol__crlf_false_attr__ CRLF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1482 - checkout attr= aeol=crlf core.autocrlf=false core.eol= file=LF_mix_CR
expecting success of 0027.1483 'checkout attr= aeol=crlf core.autocrlf=false core.eol= file=LF_nul':
compare_ws_file eol__crlf_false_attr__ CRLF_nul crlf_false_attr__LF_nul.txt
ok 1483 - checkout attr= aeol=crlf core.autocrlf=false core.eol= file=LF_nul
expecting success of 0027.1484 'setup config for checkout attr= ident= aeol=lf core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1484 - setup config for checkout attr= ident= aeol=lf core.autocrlf=true
expecting success of 0027.1485 'setup LF checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1485 - setup LF checkout
expecting success of 0027.1486 'setup CRLF checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1486 - setup CRLF checkout
expecting success of 0027.1487 'setup LF_mix_CR checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1487 - setup LF_mix_CR checkout
expecting success of 0027.1488 'setup CRLF_mix_LF checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1488 - setup CRLF_mix_LF checkout
expecting success of 0027.1489 'setup LF_nul checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1489 - setup LF_nul checkout
expecting success of 0027.1490 'ls-files --eol attr= aeol=lf core.autocrlf=true core.eol=':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1490 - ls-files --eol attr= aeol=lf core.autocrlf=true core.eol=
expecting success of 0027.1491 'checkout attr= aeol=lf core.autocrlf=true core.eol= file=LF':
compare_ws_file eol__crlf_true_attr__ LF crlf_false_attr__LF.txt
ok 1491 - checkout attr= aeol=lf core.autocrlf=true core.eol= file=LF
expecting success of 0027.1492 'checkout attr= aeol=lf core.autocrlf=true core.eol= file=CRLF':
compare_ws_file eol__crlf_true_attr__ CRLF crlf_false_attr__CRLF.txt
ok 1492 - checkout attr= aeol=lf core.autocrlf=true core.eol= file=CRLF
expecting success of 0027.1493 'checkout attr= aeol=lf core.autocrlf=true core.eol= file=CRLF_mix_LF':
compare_ws_file eol__crlf_true_attr__ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1493 - checkout attr= aeol=lf core.autocrlf=true core.eol= file=CRLF_mix_LF
expecting success of 0027.1494 'checkout attr= aeol=lf core.autocrlf=true core.eol= file=LF_mix_CR':
compare_ws_file eol__crlf_true_attr__ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1494 - checkout attr= aeol=lf core.autocrlf=true core.eol= file=LF_mix_CR
expecting success of 0027.1495 'checkout attr= aeol=lf core.autocrlf=true core.eol= file=LF_nul':
compare_ws_file eol__crlf_true_attr__ LF_nul crlf_false_attr__LF_nul.txt
ok 1495 - checkout attr= aeol=lf core.autocrlf=true core.eol= file=LF_nul
expecting success of 0027.1496 'setup config for checkout attr= ident= aeol=crlf core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1496 - setup config for checkout attr= ident= aeol=crlf core.autocrlf=true
expecting success of 0027.1497 'setup LF checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1497 - setup LF checkout
expecting success of 0027.1498 'setup CRLF checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1498 - setup CRLF checkout
expecting success of 0027.1499 'setup LF_mix_CR checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1499 - setup LF_mix_CR checkout
expecting success of 0027.1500 'setup CRLF_mix_LF checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1500 - setup CRLF_mix_LF checkout
expecting success of 0027.1501 'setup LF_nul checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1501 - setup LF_nul checkout
expecting success of 0027.1502 'ls-files --eol attr= aeol=crlf core.autocrlf=true core.eol=':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1502 - ls-files --eol attr= aeol=crlf core.autocrlf=true core.eol=
expecting success of 0027.1503 'checkout attr= aeol=crlf core.autocrlf=true core.eol= file=LF':
compare_ws_file eol__crlf_true_attr__ CRLF crlf_false_attr__LF.txt
ok 1503 - checkout attr= aeol=crlf core.autocrlf=true core.eol= file=LF
expecting success of 0027.1504 'checkout attr= aeol=crlf core.autocrlf=true core.eol= file=CRLF':
compare_ws_file eol__crlf_true_attr__ CRLF crlf_false_attr__CRLF.txt
ok 1504 - checkout attr= aeol=crlf core.autocrlf=true core.eol= file=CRLF
expecting success of 0027.1505 'checkout attr= aeol=crlf core.autocrlf=true core.eol= file=CRLF_mix_LF':
compare_ws_file eol__crlf_true_attr__ CRLF crlf_false_attr__CRLF_mix_LF.txt
ok 1505 - checkout attr= aeol=crlf core.autocrlf=true core.eol= file=CRLF_mix_LF
expecting success of 0027.1506 'checkout attr= aeol=crlf core.autocrlf=true core.eol= file=LF_mix_CR':
compare_ws_file eol__crlf_true_attr__ CRLF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1506 - checkout attr= aeol=crlf core.autocrlf=true core.eol= file=LF_mix_CR
expecting success of 0027.1507 'checkout attr= aeol=crlf core.autocrlf=true core.eol= file=LF_nul':
compare_ws_file eol__crlf_true_attr__ CRLF_nul crlf_false_attr__LF_nul.txt
ok 1507 - checkout attr= aeol=crlf core.autocrlf=true core.eol= file=LF_nul
expecting success of 0027.1508 'setup config for checkout attr=-text ident=ident aeol= core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1508 - setup config for checkout attr=-text ident=ident aeol= core.autocrlf=true
expecting success of 0027.1509 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1509 - setup LF checkout with -c core.eol=lf
expecting success of 0027.1510 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1510 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.1511 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1511 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.1512 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1512 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.1513 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1513 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.1514 'ls-files --eol attr=-text ident aeol= core.autocrlf=true core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1514 - ls-files --eol attr=-text ident aeol= core.autocrlf=true core.eol=lf
expecting success of 0027.1515 'checkout attr=-text ident aeol= core.autocrlf=true core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_true_attr_-text_ LF crlf_false_attr__LF.txt
ok 1515 - checkout attr=-text ident aeol= core.autocrlf=true core.eol=lf file=LF
expecting success of 0027.1516 'checkout attr=-text ident aeol= core.autocrlf=true core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_true_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 1516 - checkout attr=-text ident aeol= core.autocrlf=true core.eol=lf file=CRLF
expecting success of 0027.1517 'checkout attr=-text ident aeol= core.autocrlf=true core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_true_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1517 - checkout attr=-text ident aeol= core.autocrlf=true core.eol=lf file=CRLF_mix_LF
expecting success of 0027.1518 'checkout attr=-text ident aeol= core.autocrlf=true core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_true_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1518 - checkout attr=-text ident aeol= core.autocrlf=true core.eol=lf file=LF_mix_CR
expecting success of 0027.1519 'checkout attr=-text ident aeol= core.autocrlf=true core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_true_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 1519 - checkout attr=-text ident aeol= core.autocrlf=true core.eol=lf file=LF_nul
expecting success of 0027.1520 'setup config for checkout attr=-text ident=ident aeol=lf core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1520 - setup config for checkout attr=-text ident=ident aeol=lf core.autocrlf=true
expecting success of 0027.1521 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1521 - setup LF checkout with -c core.eol=lf
expecting success of 0027.1522 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1522 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.1523 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1523 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.1524 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1524 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.1525 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1525 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.1526 'ls-files --eol attr=-text ident aeol=lf core.autocrlf=true core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1526 - ls-files --eol attr=-text ident aeol=lf core.autocrlf=true core.eol=lf
expecting success of 0027.1527 'checkout attr=-text ident aeol=lf core.autocrlf=true core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_true_attr_-text_ LF crlf_false_attr__LF.txt
ok 1527 - checkout attr=-text ident aeol=lf core.autocrlf=true core.eol=lf file=LF
expecting success of 0027.1528 'checkout attr=-text ident aeol=lf core.autocrlf=true core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_true_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 1528 - checkout attr=-text ident aeol=lf core.autocrlf=true core.eol=lf file=CRLF
expecting success of 0027.1529 'checkout attr=-text ident aeol=lf core.autocrlf=true core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_true_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1529 - checkout attr=-text ident aeol=lf core.autocrlf=true core.eol=lf file=CRLF_mix_LF
expecting success of 0027.1530 'checkout attr=-text ident aeol=lf core.autocrlf=true core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_true_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1530 - checkout attr=-text ident aeol=lf core.autocrlf=true core.eol=lf file=LF_mix_CR
expecting success of 0027.1531 'checkout attr=-text ident aeol=lf core.autocrlf=true core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_true_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 1531 - checkout attr=-text ident aeol=lf core.autocrlf=true core.eol=lf file=LF_nul
expecting success of 0027.1532 'setup config for checkout attr=-text ident=ident aeol=crlf core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1532 - setup config for checkout attr=-text ident=ident aeol=crlf core.autocrlf=true
expecting success of 0027.1533 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1533 - setup LF checkout with -c core.eol=lf
expecting success of 0027.1534 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1534 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.1535 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1535 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.1536 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1536 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.1537 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1537 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.1538 'ls-files --eol attr=-text ident aeol=crlf core.autocrlf=true core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1538 - ls-files --eol attr=-text ident aeol=crlf core.autocrlf=true core.eol=lf
expecting success of 0027.1539 'checkout attr=-text ident aeol=crlf core.autocrlf=true core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_true_attr_-text_ LF crlf_false_attr__LF.txt
ok 1539 - checkout attr=-text ident aeol=crlf core.autocrlf=true core.eol=lf file=LF
expecting success of 0027.1540 'checkout attr=-text ident aeol=crlf core.autocrlf=true core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_true_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 1540 - checkout attr=-text ident aeol=crlf core.autocrlf=true core.eol=lf file=CRLF
expecting success of 0027.1541 'checkout attr=-text ident aeol=crlf core.autocrlf=true core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_true_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1541 - checkout attr=-text ident aeol=crlf core.autocrlf=true core.eol=lf file=CRLF_mix_LF
expecting success of 0027.1542 'checkout attr=-text ident aeol=crlf core.autocrlf=true core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_true_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1542 - checkout attr=-text ident aeol=crlf core.autocrlf=true core.eol=lf file=LF_mix_CR
expecting success of 0027.1543 'checkout attr=-text ident aeol=crlf core.autocrlf=true core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_true_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 1543 - checkout attr=-text ident aeol=crlf core.autocrlf=true core.eol=lf file=LF_nul
expecting success of 0027.1544 'setup config for checkout attr=text ident=ident aeol=lf core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1544 - setup config for checkout attr=text ident=ident aeol=lf core.autocrlf=true
expecting success of 0027.1545 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1545 - setup LF checkout with -c core.eol=lf
expecting success of 0027.1546 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1546 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.1547 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1547 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.1548 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1548 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.1549 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1549 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.1550 'ls-files --eol attr=text ident aeol=lf core.autocrlf=true core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1550 - ls-files --eol attr=text ident aeol=lf core.autocrlf=true core.eol=lf
expecting success of 0027.1551 'checkout attr=text ident aeol=lf core.autocrlf=true core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_true_attr_text_ LF crlf_false_attr__LF.txt
ok 1551 - checkout attr=text ident aeol=lf core.autocrlf=true core.eol=lf file=LF
expecting success of 0027.1552 'checkout attr=text ident aeol=lf core.autocrlf=true core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_true_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 1552 - checkout attr=text ident aeol=lf core.autocrlf=true core.eol=lf file=CRLF
expecting success of 0027.1553 'checkout attr=text ident aeol=lf core.autocrlf=true core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_true_attr_text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1553 - checkout attr=text ident aeol=lf core.autocrlf=true core.eol=lf file=CRLF_mix_LF
expecting success of 0027.1554 'checkout attr=text ident aeol=lf core.autocrlf=true core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_true_attr_text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1554 - checkout attr=text ident aeol=lf core.autocrlf=true core.eol=lf file=LF_mix_CR
expecting success of 0027.1555 'checkout attr=text ident aeol=lf core.autocrlf=true core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_true_attr_text_ LF_nul crlf_false_attr__LF_nul.txt
ok 1555 - checkout attr=text ident aeol=lf core.autocrlf=true core.eol=lf file=LF_nul
expecting success of 0027.1556 'setup config for checkout attr=text ident=ident aeol=crlf core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1556 - setup config for checkout attr=text ident=ident aeol=crlf core.autocrlf=true
expecting success of 0027.1557 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1557 - setup LF checkout with -c core.eol=lf
expecting success of 0027.1558 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1558 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.1559 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1559 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.1560 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1560 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.1561 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1561 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.1562 'ls-files --eol attr=text ident aeol=crlf core.autocrlf=true core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1562 - ls-files --eol attr=text ident aeol=crlf core.autocrlf=true core.eol=lf
expecting success of 0027.1563 'checkout attr=text ident aeol=crlf core.autocrlf=true core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_true_attr_text_ CRLF crlf_false_attr__LF.txt
ok 1563 - checkout attr=text ident aeol=crlf core.autocrlf=true core.eol=lf file=LF
expecting success of 0027.1564 'checkout attr=text ident aeol=crlf core.autocrlf=true core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_true_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 1564 - checkout attr=text ident aeol=crlf core.autocrlf=true core.eol=lf file=CRLF
expecting success of 0027.1565 'checkout attr=text ident aeol=crlf core.autocrlf=true core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_true_attr_text_ CRLF crlf_false_attr__CRLF_mix_LF.txt
ok 1565 - checkout attr=text ident aeol=crlf core.autocrlf=true core.eol=lf file=CRLF_mix_LF
expecting success of 0027.1566 'checkout attr=text ident aeol=crlf core.autocrlf=true core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_true_attr_text_ CRLF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1566 - checkout attr=text ident aeol=crlf core.autocrlf=true core.eol=lf file=LF_mix_CR
expecting success of 0027.1567 'checkout attr=text ident aeol=crlf core.autocrlf=true core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_true_attr_text_ CRLF_nul crlf_false_attr__LF_nul.txt
ok 1567 - checkout attr=text ident aeol=crlf core.autocrlf=true core.eol=lf file=LF_nul
expecting success of 0027.1568 'setup config for checkout attr=auto ident=ident aeol=lf core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1568 - setup config for checkout attr=auto ident=ident aeol=lf core.autocrlf=true
expecting success of 0027.1569 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1569 - setup LF checkout with -c core.eol=lf
expecting success of 0027.1570 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1570 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.1571 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1571 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.1572 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1572 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.1573 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1573 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.1574 'ls-files --eol attr=auto ident aeol=lf core.autocrlf=true core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1574 - ls-files --eol attr=auto ident aeol=lf core.autocrlf=true core.eol=lf
expecting success of 0027.1575 'checkout attr=auto ident aeol=lf core.autocrlf=true core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_true_attr_auto_ LF crlf_false_attr__LF.txt
ok 1575 - checkout attr=auto ident aeol=lf core.autocrlf=true core.eol=lf file=LF
expecting success of 0027.1576 'checkout attr=auto ident aeol=lf core.autocrlf=true core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_true_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 1576 - checkout attr=auto ident aeol=lf core.autocrlf=true core.eol=lf file=CRLF
expecting success of 0027.1577 'checkout attr=auto ident aeol=lf core.autocrlf=true core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_true_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1577 - checkout attr=auto ident aeol=lf core.autocrlf=true core.eol=lf file=CRLF_mix_LF
expecting success of 0027.1578 'checkout attr=auto ident aeol=lf core.autocrlf=true core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_true_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1578 - checkout attr=auto ident aeol=lf core.autocrlf=true core.eol=lf file=LF_mix_CR
expecting success of 0027.1579 'checkout attr=auto ident aeol=lf core.autocrlf=true core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_true_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 1579 - checkout attr=auto ident aeol=lf core.autocrlf=true core.eol=lf file=LF_nul
expecting success of 0027.1580 'setup config for checkout attr=auto ident=ident aeol=crlf core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1580 - setup config for checkout attr=auto ident=ident aeol=crlf core.autocrlf=true
expecting success of 0027.1581 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1581 - setup LF checkout with -c core.eol=lf
expecting success of 0027.1582 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1582 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.1583 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1583 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.1584 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1584 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.1585 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1585 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.1586 'ls-files --eol attr=auto ident aeol=crlf core.autocrlf=true core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1586 - ls-files --eol attr=auto ident aeol=crlf core.autocrlf=true core.eol=lf
expecting success of 0027.1587 'checkout attr=auto ident aeol=crlf core.autocrlf=true core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_true_attr_auto_ CRLF crlf_false_attr__LF.txt
ok 1587 - checkout attr=auto ident aeol=crlf core.autocrlf=true core.eol=lf file=LF
expecting success of 0027.1588 'checkout attr=auto ident aeol=crlf core.autocrlf=true core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_true_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 1588 - checkout attr=auto ident aeol=crlf core.autocrlf=true core.eol=lf file=CRLF
expecting success of 0027.1589 'checkout attr=auto ident aeol=crlf core.autocrlf=true core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_true_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1589 - checkout attr=auto ident aeol=crlf core.autocrlf=true core.eol=lf file=CRLF_mix_LF
expecting success of 0027.1590 'checkout attr=auto ident aeol=crlf core.autocrlf=true core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_true_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1590 - checkout attr=auto ident aeol=crlf core.autocrlf=true core.eol=lf file=LF_mix_CR
expecting success of 0027.1591 'checkout attr=auto ident aeol=crlf core.autocrlf=true core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_true_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 1591 - checkout attr=auto ident aeol=crlf core.autocrlf=true core.eol=lf file=LF_nul
expecting success of 0027.1592 'setup config for checkout attr=-text ident=ident aeol= core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1592 - setup config for checkout attr=-text ident=ident aeol= core.autocrlf=false
expecting success of 0027.1593 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1593 - setup LF checkout with -c core.eol=lf
expecting success of 0027.1594 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1594 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.1595 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1595 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.1596 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1596 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.1597 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1597 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.1598 'ls-files --eol attr=-text ident aeol= core.autocrlf=false core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1598 - ls-files --eol attr=-text ident aeol= core.autocrlf=false core.eol=lf
expecting success of 0027.1599 'checkout attr=-text ident aeol= core.autocrlf=false core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_false_attr_-text_ LF crlf_false_attr__LF.txt
ok 1599 - checkout attr=-text ident aeol= core.autocrlf=false core.eol=lf file=LF
expecting success of 0027.1600 'checkout attr=-text ident aeol= core.autocrlf=false core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_false_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 1600 - checkout attr=-text ident aeol= core.autocrlf=false core.eol=lf file=CRLF
expecting success of 0027.1601 'checkout attr=-text ident aeol= core.autocrlf=false core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_false_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1601 - checkout attr=-text ident aeol= core.autocrlf=false core.eol=lf file=CRLF_mix_LF
expecting success of 0027.1602 'checkout attr=-text ident aeol= core.autocrlf=false core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_false_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1602 - checkout attr=-text ident aeol= core.autocrlf=false core.eol=lf file=LF_mix_CR
expecting success of 0027.1603 'checkout attr=-text ident aeol= core.autocrlf=false core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_false_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 1603 - checkout attr=-text ident aeol= core.autocrlf=false core.eol=lf file=LF_nul
expecting success of 0027.1604 'setup config for checkout attr=-text ident=ident aeol=lf core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1604 - setup config for checkout attr=-text ident=ident aeol=lf core.autocrlf=false
expecting success of 0027.1605 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1605 - setup LF checkout with -c core.eol=lf
expecting success of 0027.1606 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1606 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.1607 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1607 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.1608 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1608 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.1609 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1609 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.1610 'ls-files --eol attr=-text ident aeol=lf core.autocrlf=false core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1610 - ls-files --eol attr=-text ident aeol=lf core.autocrlf=false core.eol=lf
expecting success of 0027.1611 'checkout attr=-text ident aeol=lf core.autocrlf=false core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_false_attr_-text_ LF crlf_false_attr__LF.txt
ok 1611 - checkout attr=-text ident aeol=lf core.autocrlf=false core.eol=lf file=LF
expecting success of 0027.1612 'checkout attr=-text ident aeol=lf core.autocrlf=false core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_false_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 1612 - checkout attr=-text ident aeol=lf core.autocrlf=false core.eol=lf file=CRLF
expecting success of 0027.1613 'checkout attr=-text ident aeol=lf core.autocrlf=false core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_false_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1613 - checkout attr=-text ident aeol=lf core.autocrlf=false core.eol=lf file=CRLF_mix_LF
expecting success of 0027.1614 'checkout attr=-text ident aeol=lf core.autocrlf=false core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_false_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1614 - checkout attr=-text ident aeol=lf core.autocrlf=false core.eol=lf file=LF_mix_CR
expecting success of 0027.1615 'checkout attr=-text ident aeol=lf core.autocrlf=false core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_false_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 1615 - checkout attr=-text ident aeol=lf core.autocrlf=false core.eol=lf file=LF_nul
expecting success of 0027.1616 'setup config for checkout attr=-text ident=ident aeol=crlf core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1616 - setup config for checkout attr=-text ident=ident aeol=crlf core.autocrlf=false
expecting success of 0027.1617 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1617 - setup LF checkout with -c core.eol=lf
expecting success of 0027.1618 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1618 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.1619 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1619 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.1620 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1620 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.1621 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1621 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.1622 'ls-files --eol attr=-text ident aeol=crlf core.autocrlf=false core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1622 - ls-files --eol attr=-text ident aeol=crlf core.autocrlf=false core.eol=lf
expecting success of 0027.1623 'checkout attr=-text ident aeol=crlf core.autocrlf=false core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_false_attr_-text_ LF crlf_false_attr__LF.txt
ok 1623 - checkout attr=-text ident aeol=crlf core.autocrlf=false core.eol=lf file=LF
expecting success of 0027.1624 'checkout attr=-text ident aeol=crlf core.autocrlf=false core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_false_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 1624 - checkout attr=-text ident aeol=crlf core.autocrlf=false core.eol=lf file=CRLF
expecting success of 0027.1625 'checkout attr=-text ident aeol=crlf core.autocrlf=false core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_false_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1625 - checkout attr=-text ident aeol=crlf core.autocrlf=false core.eol=lf file=CRLF_mix_LF
expecting success of 0027.1626 'checkout attr=-text ident aeol=crlf core.autocrlf=false core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_false_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1626 - checkout attr=-text ident aeol=crlf core.autocrlf=false core.eol=lf file=LF_mix_CR
expecting success of 0027.1627 'checkout attr=-text ident aeol=crlf core.autocrlf=false core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_false_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 1627 - checkout attr=-text ident aeol=crlf core.autocrlf=false core.eol=lf file=LF_nul
expecting success of 0027.1628 'setup config for checkout attr=text ident=ident aeol=lf core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1628 - setup config for checkout attr=text ident=ident aeol=lf core.autocrlf=false
expecting success of 0027.1629 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1629 - setup LF checkout with -c core.eol=lf
expecting success of 0027.1630 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1630 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.1631 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1631 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.1632 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1632 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.1633 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1633 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.1634 'ls-files --eol attr=text ident aeol=lf core.autocrlf=false core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1634 - ls-files --eol attr=text ident aeol=lf core.autocrlf=false core.eol=lf
expecting success of 0027.1635 'checkout attr=text ident aeol=lf core.autocrlf=false core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_false_attr_text_ LF crlf_false_attr__LF.txt
ok 1635 - checkout attr=text ident aeol=lf core.autocrlf=false core.eol=lf file=LF
expecting success of 0027.1636 'checkout attr=text ident aeol=lf core.autocrlf=false core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_false_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 1636 - checkout attr=text ident aeol=lf core.autocrlf=false core.eol=lf file=CRLF
expecting success of 0027.1637 'checkout attr=text ident aeol=lf core.autocrlf=false core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_false_attr_text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1637 - checkout attr=text ident aeol=lf core.autocrlf=false core.eol=lf file=CRLF_mix_LF
expecting success of 0027.1638 'checkout attr=text ident aeol=lf core.autocrlf=false core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_false_attr_text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1638 - checkout attr=text ident aeol=lf core.autocrlf=false core.eol=lf file=LF_mix_CR
expecting success of 0027.1639 'checkout attr=text ident aeol=lf core.autocrlf=false core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_false_attr_text_ LF_nul crlf_false_attr__LF_nul.txt
ok 1639 - checkout attr=text ident aeol=lf core.autocrlf=false core.eol=lf file=LF_nul
expecting success of 0027.1640 'setup config for checkout attr=text ident=ident aeol=crlf core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1640 - setup config for checkout attr=text ident=ident aeol=crlf core.autocrlf=false
expecting success of 0027.1641 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1641 - setup LF checkout with -c core.eol=lf
expecting success of 0027.1642 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1642 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.1643 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1643 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.1644 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1644 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.1645 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1645 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.1646 'ls-files --eol attr=text ident aeol=crlf core.autocrlf=false core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1646 - ls-files --eol attr=text ident aeol=crlf core.autocrlf=false core.eol=lf
expecting success of 0027.1647 'checkout attr=text ident aeol=crlf core.autocrlf=false core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_false_attr_text_ CRLF crlf_false_attr__LF.txt
ok 1647 - checkout attr=text ident aeol=crlf core.autocrlf=false core.eol=lf file=LF
expecting success of 0027.1648 'checkout attr=text ident aeol=crlf core.autocrlf=false core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_false_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 1648 - checkout attr=text ident aeol=crlf core.autocrlf=false core.eol=lf file=CRLF
expecting success of 0027.1649 'checkout attr=text ident aeol=crlf core.autocrlf=false core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_false_attr_text_ CRLF crlf_false_attr__CRLF_mix_LF.txt
ok 1649 - checkout attr=text ident aeol=crlf core.autocrlf=false core.eol=lf file=CRLF_mix_LF
expecting success of 0027.1650 'checkout attr=text ident aeol=crlf core.autocrlf=false core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_false_attr_text_ CRLF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1650 - checkout attr=text ident aeol=crlf core.autocrlf=false core.eol=lf file=LF_mix_CR
expecting success of 0027.1651 'checkout attr=text ident aeol=crlf core.autocrlf=false core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_false_attr_text_ CRLF_nul crlf_false_attr__LF_nul.txt
ok 1651 - checkout attr=text ident aeol=crlf core.autocrlf=false core.eol=lf file=LF_nul
expecting success of 0027.1652 'setup config for checkout attr=auto ident=ident aeol=lf core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1652 - setup config for checkout attr=auto ident=ident aeol=lf core.autocrlf=false
expecting success of 0027.1653 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1653 - setup LF checkout with -c core.eol=lf
expecting success of 0027.1654 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1654 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.1655 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1655 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.1656 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1656 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.1657 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1657 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.1658 'ls-files --eol attr=auto ident aeol=lf core.autocrlf=false core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1658 - ls-files --eol attr=auto ident aeol=lf core.autocrlf=false core.eol=lf
expecting success of 0027.1659 'checkout attr=auto ident aeol=lf core.autocrlf=false core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_false_attr_auto_ LF crlf_false_attr__LF.txt
ok 1659 - checkout attr=auto ident aeol=lf core.autocrlf=false core.eol=lf file=LF
expecting success of 0027.1660 'checkout attr=auto ident aeol=lf core.autocrlf=false core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_false_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 1660 - checkout attr=auto ident aeol=lf core.autocrlf=false core.eol=lf file=CRLF
expecting success of 0027.1661 'checkout attr=auto ident aeol=lf core.autocrlf=false core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_false_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1661 - checkout attr=auto ident aeol=lf core.autocrlf=false core.eol=lf file=CRLF_mix_LF
expecting success of 0027.1662 'checkout attr=auto ident aeol=lf core.autocrlf=false core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_false_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1662 - checkout attr=auto ident aeol=lf core.autocrlf=false core.eol=lf file=LF_mix_CR
expecting success of 0027.1663 'checkout attr=auto ident aeol=lf core.autocrlf=false core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_false_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 1663 - checkout attr=auto ident aeol=lf core.autocrlf=false core.eol=lf file=LF_nul
expecting success of 0027.1664 'setup config for checkout attr=auto ident=ident aeol=crlf core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1664 - setup config for checkout attr=auto ident=ident aeol=crlf core.autocrlf=false
expecting success of 0027.1665 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1665 - setup LF checkout with -c core.eol=lf
expecting success of 0027.1666 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1666 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.1667 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1667 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.1668 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1668 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.1669 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1669 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.1670 'ls-files --eol attr=auto ident aeol=crlf core.autocrlf=false core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1670 - ls-files --eol attr=auto ident aeol=crlf core.autocrlf=false core.eol=lf
expecting success of 0027.1671 'checkout attr=auto ident aeol=crlf core.autocrlf=false core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_false_attr_auto_ CRLF crlf_false_attr__LF.txt
ok 1671 - checkout attr=auto ident aeol=crlf core.autocrlf=false core.eol=lf file=LF
expecting success of 0027.1672 'checkout attr=auto ident aeol=crlf core.autocrlf=false core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_false_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 1672 - checkout attr=auto ident aeol=crlf core.autocrlf=false core.eol=lf file=CRLF
expecting success of 0027.1673 'checkout attr=auto ident aeol=crlf core.autocrlf=false core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_false_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1673 - checkout attr=auto ident aeol=crlf core.autocrlf=false core.eol=lf file=CRLF_mix_LF
expecting success of 0027.1674 'checkout attr=auto ident aeol=crlf core.autocrlf=false core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_false_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1674 - checkout attr=auto ident aeol=crlf core.autocrlf=false core.eol=lf file=LF_mix_CR
expecting success of 0027.1675 'checkout attr=auto ident aeol=crlf core.autocrlf=false core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_false_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 1675 - checkout attr=auto ident aeol=crlf core.autocrlf=false core.eol=lf file=LF_nul
expecting success of 0027.1676 'setup config for checkout attr=-text ident=ident aeol= core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1676 - setup config for checkout attr=-text ident=ident aeol= core.autocrlf=input
expecting success of 0027.1677 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1677 - setup LF checkout with -c core.eol=lf
expecting success of 0027.1678 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1678 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.1679 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1679 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.1680 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1680 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.1681 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1681 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.1682 'ls-files --eol attr=-text ident aeol= core.autocrlf=input core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1682 - ls-files --eol attr=-text ident aeol= core.autocrlf=input core.eol=lf
expecting success of 0027.1683 'checkout attr=-text ident aeol= core.autocrlf=input core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_input_attr_-text_ LF crlf_false_attr__LF.txt
ok 1683 - checkout attr=-text ident aeol= core.autocrlf=input core.eol=lf file=LF
expecting success of 0027.1684 'checkout attr=-text ident aeol= core.autocrlf=input core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_input_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 1684 - checkout attr=-text ident aeol= core.autocrlf=input core.eol=lf file=CRLF
expecting success of 0027.1685 'checkout attr=-text ident aeol= core.autocrlf=input core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_input_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1685 - checkout attr=-text ident aeol= core.autocrlf=input core.eol=lf file=CRLF_mix_LF
expecting success of 0027.1686 'checkout attr=-text ident aeol= core.autocrlf=input core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_input_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1686 - checkout attr=-text ident aeol= core.autocrlf=input core.eol=lf file=LF_mix_CR
expecting success of 0027.1687 'checkout attr=-text ident aeol= core.autocrlf=input core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_input_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 1687 - checkout attr=-text ident aeol= core.autocrlf=input core.eol=lf file=LF_nul
expecting success of 0027.1688 'setup config for checkout attr=-text ident=ident aeol=lf core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1688 - setup config for checkout attr=-text ident=ident aeol=lf core.autocrlf=input
expecting success of 0027.1689 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1689 - setup LF checkout with -c core.eol=lf
expecting success of 0027.1690 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1690 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.1691 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1691 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.1692 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1692 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.1693 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1693 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.1694 'ls-files --eol attr=-text ident aeol=lf core.autocrlf=input core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1694 - ls-files --eol attr=-text ident aeol=lf core.autocrlf=input core.eol=lf
expecting success of 0027.1695 'checkout attr=-text ident aeol=lf core.autocrlf=input core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_input_attr_-text_ LF crlf_false_attr__LF.txt
ok 1695 - checkout attr=-text ident aeol=lf core.autocrlf=input core.eol=lf file=LF
expecting success of 0027.1696 'checkout attr=-text ident aeol=lf core.autocrlf=input core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_input_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 1696 - checkout attr=-text ident aeol=lf core.autocrlf=input core.eol=lf file=CRLF
expecting success of 0027.1697 'checkout attr=-text ident aeol=lf core.autocrlf=input core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_input_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1697 - checkout attr=-text ident aeol=lf core.autocrlf=input core.eol=lf file=CRLF_mix_LF
expecting success of 0027.1698 'checkout attr=-text ident aeol=lf core.autocrlf=input core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_input_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1698 - checkout attr=-text ident aeol=lf core.autocrlf=input core.eol=lf file=LF_mix_CR
expecting success of 0027.1699 'checkout attr=-text ident aeol=lf core.autocrlf=input core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_input_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 1699 - checkout attr=-text ident aeol=lf core.autocrlf=input core.eol=lf file=LF_nul
expecting success of 0027.1700 'setup config for checkout attr=-text ident=ident aeol=crlf core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1700 - setup config for checkout attr=-text ident=ident aeol=crlf core.autocrlf=input
expecting success of 0027.1701 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1701 - setup LF checkout with -c core.eol=lf
expecting success of 0027.1702 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1702 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.1703 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1703 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.1704 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1704 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.1705 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1705 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.1706 'ls-files --eol attr=-text ident aeol=crlf core.autocrlf=input core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1706 - ls-files --eol attr=-text ident aeol=crlf core.autocrlf=input core.eol=lf
expecting success of 0027.1707 'checkout attr=-text ident aeol=crlf core.autocrlf=input core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_input_attr_-text_ LF crlf_false_attr__LF.txt
ok 1707 - checkout attr=-text ident aeol=crlf core.autocrlf=input core.eol=lf file=LF
expecting success of 0027.1708 'checkout attr=-text ident aeol=crlf core.autocrlf=input core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_input_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 1708 - checkout attr=-text ident aeol=crlf core.autocrlf=input core.eol=lf file=CRLF
expecting success of 0027.1709 'checkout attr=-text ident aeol=crlf core.autocrlf=input core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_input_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1709 - checkout attr=-text ident aeol=crlf core.autocrlf=input core.eol=lf file=CRLF_mix_LF
expecting success of 0027.1710 'checkout attr=-text ident aeol=crlf core.autocrlf=input core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_input_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1710 - checkout attr=-text ident aeol=crlf core.autocrlf=input core.eol=lf file=LF_mix_CR
expecting success of 0027.1711 'checkout attr=-text ident aeol=crlf core.autocrlf=input core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_input_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 1711 - checkout attr=-text ident aeol=crlf core.autocrlf=input core.eol=lf file=LF_nul
expecting success of 0027.1712 'setup config for checkout attr=text ident=ident aeol=lf core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1712 - setup config for checkout attr=text ident=ident aeol=lf core.autocrlf=input
expecting success of 0027.1713 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1713 - setup LF checkout with -c core.eol=lf
expecting success of 0027.1714 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1714 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.1715 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1715 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.1716 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1716 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.1717 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1717 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.1718 'ls-files --eol attr=text ident aeol=lf core.autocrlf=input core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1718 - ls-files --eol attr=text ident aeol=lf core.autocrlf=input core.eol=lf
expecting success of 0027.1719 'checkout attr=text ident aeol=lf core.autocrlf=input core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_input_attr_text_ LF crlf_false_attr__LF.txt
ok 1719 - checkout attr=text ident aeol=lf core.autocrlf=input core.eol=lf file=LF
expecting success of 0027.1720 'checkout attr=text ident aeol=lf core.autocrlf=input core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_input_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 1720 - checkout attr=text ident aeol=lf core.autocrlf=input core.eol=lf file=CRLF
expecting success of 0027.1721 'checkout attr=text ident aeol=lf core.autocrlf=input core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_input_attr_text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1721 - checkout attr=text ident aeol=lf core.autocrlf=input core.eol=lf file=CRLF_mix_LF
expecting success of 0027.1722 'checkout attr=text ident aeol=lf core.autocrlf=input core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_input_attr_text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1722 - checkout attr=text ident aeol=lf core.autocrlf=input core.eol=lf file=LF_mix_CR
expecting success of 0027.1723 'checkout attr=text ident aeol=lf core.autocrlf=input core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_input_attr_text_ LF_nul crlf_false_attr__LF_nul.txt
ok 1723 - checkout attr=text ident aeol=lf core.autocrlf=input core.eol=lf file=LF_nul
expecting success of 0027.1724 'setup config for checkout attr=text ident=ident aeol=crlf core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1724 - setup config for checkout attr=text ident=ident aeol=crlf core.autocrlf=input
expecting success of 0027.1725 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1725 - setup LF checkout with -c core.eol=lf
expecting success of 0027.1726 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1726 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.1727 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1727 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.1728 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1728 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.1729 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1729 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.1730 'ls-files --eol attr=text ident aeol=crlf core.autocrlf=input core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1730 - ls-files --eol attr=text ident aeol=crlf core.autocrlf=input core.eol=lf
expecting success of 0027.1731 'checkout attr=text ident aeol=crlf core.autocrlf=input core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_input_attr_text_ CRLF crlf_false_attr__LF.txt
ok 1731 - checkout attr=text ident aeol=crlf core.autocrlf=input core.eol=lf file=LF
expecting success of 0027.1732 'checkout attr=text ident aeol=crlf core.autocrlf=input core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_input_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 1732 - checkout attr=text ident aeol=crlf core.autocrlf=input core.eol=lf file=CRLF
expecting success of 0027.1733 'checkout attr=text ident aeol=crlf core.autocrlf=input core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_input_attr_text_ CRLF crlf_false_attr__CRLF_mix_LF.txt
ok 1733 - checkout attr=text ident aeol=crlf core.autocrlf=input core.eol=lf file=CRLF_mix_LF
expecting success of 0027.1734 'checkout attr=text ident aeol=crlf core.autocrlf=input core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_input_attr_text_ CRLF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1734 - checkout attr=text ident aeol=crlf core.autocrlf=input core.eol=lf file=LF_mix_CR
expecting success of 0027.1735 'checkout attr=text ident aeol=crlf core.autocrlf=input core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_input_attr_text_ CRLF_nul crlf_false_attr__LF_nul.txt
ok 1735 - checkout attr=text ident aeol=crlf core.autocrlf=input core.eol=lf file=LF_nul
expecting success of 0027.1736 'setup config for checkout attr=auto ident=ident aeol=lf core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1736 - setup config for checkout attr=auto ident=ident aeol=lf core.autocrlf=input
expecting success of 0027.1737 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1737 - setup LF checkout with -c core.eol=lf
expecting success of 0027.1738 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1738 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.1739 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1739 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.1740 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1740 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.1741 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1741 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.1742 'ls-files --eol attr=auto ident aeol=lf core.autocrlf=input core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1742 - ls-files --eol attr=auto ident aeol=lf core.autocrlf=input core.eol=lf
expecting success of 0027.1743 'checkout attr=auto ident aeol=lf core.autocrlf=input core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_input_attr_auto_ LF crlf_false_attr__LF.txt
ok 1743 - checkout attr=auto ident aeol=lf core.autocrlf=input core.eol=lf file=LF
expecting success of 0027.1744 'checkout attr=auto ident aeol=lf core.autocrlf=input core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_input_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 1744 - checkout attr=auto ident aeol=lf core.autocrlf=input core.eol=lf file=CRLF
expecting success of 0027.1745 'checkout attr=auto ident aeol=lf core.autocrlf=input core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_input_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1745 - checkout attr=auto ident aeol=lf core.autocrlf=input core.eol=lf file=CRLF_mix_LF
expecting success of 0027.1746 'checkout attr=auto ident aeol=lf core.autocrlf=input core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_input_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1746 - checkout attr=auto ident aeol=lf core.autocrlf=input core.eol=lf file=LF_mix_CR
expecting success of 0027.1747 'checkout attr=auto ident aeol=lf core.autocrlf=input core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_input_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 1747 - checkout attr=auto ident aeol=lf core.autocrlf=input core.eol=lf file=LF_nul
expecting success of 0027.1748 'setup config for checkout attr=auto ident=ident aeol=crlf core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1748 - setup config for checkout attr=auto ident=ident aeol=crlf core.autocrlf=input
expecting success of 0027.1749 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1749 - setup LF checkout with -c core.eol=lf
expecting success of 0027.1750 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1750 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.1751 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1751 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.1752 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1752 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.1753 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1753 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.1754 'ls-files --eol attr=auto ident aeol=crlf core.autocrlf=input core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1754 - ls-files --eol attr=auto ident aeol=crlf core.autocrlf=input core.eol=lf
expecting success of 0027.1755 'checkout attr=auto ident aeol=crlf core.autocrlf=input core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_input_attr_auto_ CRLF crlf_false_attr__LF.txt
ok 1755 - checkout attr=auto ident aeol=crlf core.autocrlf=input core.eol=lf file=LF
expecting success of 0027.1756 'checkout attr=auto ident aeol=crlf core.autocrlf=input core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_input_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 1756 - checkout attr=auto ident aeol=crlf core.autocrlf=input core.eol=lf file=CRLF
expecting success of 0027.1757 'checkout attr=auto ident aeol=crlf core.autocrlf=input core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_input_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1757 - checkout attr=auto ident aeol=crlf core.autocrlf=input core.eol=lf file=CRLF_mix_LF
expecting success of 0027.1758 'checkout attr=auto ident aeol=crlf core.autocrlf=input core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_input_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1758 - checkout attr=auto ident aeol=crlf core.autocrlf=input core.eol=lf file=LF_mix_CR
expecting success of 0027.1759 'checkout attr=auto ident aeol=crlf core.autocrlf=input core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_input_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 1759 - checkout attr=auto ident aeol=crlf core.autocrlf=input core.eol=lf file=LF_nul
expecting success of 0027.1760 'setup config for checkout attr= ident=ident aeol= core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1760 - setup config for checkout attr= ident=ident aeol= core.autocrlf=false
expecting success of 0027.1761 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1761 - setup LF checkout with -c core.eol=lf
expecting success of 0027.1762 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1762 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.1763 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1763 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.1764 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1764 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.1765 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1765 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.1766 'ls-files --eol attr= ident aeol= core.autocrlf=false core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1766 - ls-files --eol attr= ident aeol= core.autocrlf=false core.eol=lf
expecting success of 0027.1767 'checkout attr= ident aeol= core.autocrlf=false core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_false_attr__ LF crlf_false_attr__LF.txt
ok 1767 - checkout attr= ident aeol= core.autocrlf=false core.eol=lf file=LF
expecting success of 0027.1768 'checkout attr= ident aeol= core.autocrlf=false core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_false_attr__ CRLF crlf_false_attr__CRLF.txt
ok 1768 - checkout attr= ident aeol= core.autocrlf=false core.eol=lf file=CRLF
expecting success of 0027.1769 'checkout attr= ident aeol= core.autocrlf=false core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_false_attr__ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1769 - checkout attr= ident aeol= core.autocrlf=false core.eol=lf file=CRLF_mix_LF
expecting success of 0027.1770 'checkout attr= ident aeol= core.autocrlf=false core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_false_attr__ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1770 - checkout attr= ident aeol= core.autocrlf=false core.eol=lf file=LF_mix_CR
expecting success of 0027.1771 'checkout attr= ident aeol= core.autocrlf=false core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_false_attr__ LF_nul crlf_false_attr__LF_nul.txt
ok 1771 - checkout attr= ident aeol= core.autocrlf=false core.eol=lf file=LF_nul
expecting success of 0027.1772 'setup config for checkout attr= ident=ident aeol= core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1772 - setup config for checkout attr= ident=ident aeol= core.autocrlf=true
expecting success of 0027.1773 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1773 - setup LF checkout with -c core.eol=lf
expecting success of 0027.1774 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1774 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.1775 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1775 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.1776 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1776 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.1777 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1777 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.1778 'ls-files --eol attr= ident aeol= core.autocrlf=true core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1778 - ls-files --eol attr= ident aeol= core.autocrlf=true core.eol=lf
expecting success of 0027.1779 'checkout attr= ident aeol= core.autocrlf=true core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_true_attr__ CRLF crlf_false_attr__LF.txt
ok 1779 - checkout attr= ident aeol= core.autocrlf=true core.eol=lf file=LF
expecting success of 0027.1780 'checkout attr= ident aeol= core.autocrlf=true core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_true_attr__ CRLF crlf_false_attr__CRLF.txt
ok 1780 - checkout attr= ident aeol= core.autocrlf=true core.eol=lf file=CRLF
expecting success of 0027.1781 'checkout attr= ident aeol= core.autocrlf=true core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_true_attr__ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1781 - checkout attr= ident aeol= core.autocrlf=true core.eol=lf file=CRLF_mix_LF
expecting success of 0027.1782 'checkout attr= ident aeol= core.autocrlf=true core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_true_attr__ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1782 - checkout attr= ident aeol= core.autocrlf=true core.eol=lf file=LF_mix_CR
expecting success of 0027.1783 'checkout attr= ident aeol= core.autocrlf=true core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_true_attr__ LF_nul crlf_false_attr__LF_nul.txt
ok 1783 - checkout attr= ident aeol= core.autocrlf=true core.eol=lf file=LF_nul
expecting success of 0027.1784 'setup config for checkout attr=auto ident=ident aeol= core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1784 - setup config for checkout attr=auto ident=ident aeol= core.autocrlf=true
expecting success of 0027.1785 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1785 - setup LF checkout with -c core.eol=lf
expecting success of 0027.1786 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1786 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.1787 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1787 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.1788 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1788 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.1789 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1789 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.1790 'ls-files --eol attr=auto ident aeol= core.autocrlf=true core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1790 - ls-files --eol attr=auto ident aeol= core.autocrlf=true core.eol=lf
expecting success of 0027.1791 'checkout attr=auto ident aeol= core.autocrlf=true core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_true_attr_auto_ CRLF crlf_false_attr__LF.txt
ok 1791 - checkout attr=auto ident aeol= core.autocrlf=true core.eol=lf file=LF
expecting success of 0027.1792 'checkout attr=auto ident aeol= core.autocrlf=true core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_true_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 1792 - checkout attr=auto ident aeol= core.autocrlf=true core.eol=lf file=CRLF
expecting success of 0027.1793 'checkout attr=auto ident aeol= core.autocrlf=true core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_true_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1793 - checkout attr=auto ident aeol= core.autocrlf=true core.eol=lf file=CRLF_mix_LF
expecting success of 0027.1794 'checkout attr=auto ident aeol= core.autocrlf=true core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_true_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1794 - checkout attr=auto ident aeol= core.autocrlf=true core.eol=lf file=LF_mix_CR
expecting success of 0027.1795 'checkout attr=auto ident aeol= core.autocrlf=true core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_true_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 1795 - checkout attr=auto ident aeol= core.autocrlf=true core.eol=lf file=LF_nul
expecting success of 0027.1796 'setup config for checkout attr=text ident=ident aeol= core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1796 - setup config for checkout attr=text ident=ident aeol= core.autocrlf=true
expecting success of 0027.1797 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1797 - setup LF checkout with -c core.eol=lf
expecting success of 0027.1798 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1798 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.1799 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1799 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.1800 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1800 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.1801 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1801 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.1802 'ls-files --eol attr=text ident aeol= core.autocrlf=true core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1802 - ls-files --eol attr=text ident aeol= core.autocrlf=true core.eol=lf
expecting success of 0027.1803 'checkout attr=text ident aeol= core.autocrlf=true core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_true_attr_text_ CRLF crlf_false_attr__LF.txt
ok 1803 - checkout attr=text ident aeol= core.autocrlf=true core.eol=lf file=LF
expecting success of 0027.1804 'checkout attr=text ident aeol= core.autocrlf=true core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_true_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 1804 - checkout attr=text ident aeol= core.autocrlf=true core.eol=lf file=CRLF
expecting success of 0027.1805 'checkout attr=text ident aeol= core.autocrlf=true core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_true_attr_text_ CRLF crlf_false_attr__CRLF_mix_LF.txt
ok 1805 - checkout attr=text ident aeol= core.autocrlf=true core.eol=lf file=CRLF_mix_LF
expecting success of 0027.1806 'checkout attr=text ident aeol= core.autocrlf=true core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_true_attr_text_ CRLF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1806 - checkout attr=text ident aeol= core.autocrlf=true core.eol=lf file=LF_mix_CR
expecting success of 0027.1807 'checkout attr=text ident aeol= core.autocrlf=true core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_true_attr_text_ CRLF_nul crlf_false_attr__LF_nul.txt
ok 1807 - checkout attr=text ident aeol= core.autocrlf=true core.eol=lf file=LF_nul
expecting success of 0027.1808 'setup config for checkout attr=text ident=ident aeol= core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1808 - setup config for checkout attr=text ident=ident aeol= core.autocrlf=input
expecting success of 0027.1809 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1809 - setup LF checkout with -c core.eol=lf
expecting success of 0027.1810 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1810 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.1811 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1811 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.1812 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1812 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.1813 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1813 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.1814 'ls-files --eol attr=text ident aeol= core.autocrlf=input core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1814 - ls-files --eol attr=text ident aeol= core.autocrlf=input core.eol=lf
expecting success of 0027.1815 'checkout attr=text ident aeol= core.autocrlf=input core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_input_attr_text_ LF crlf_false_attr__LF.txt
ok 1815 - checkout attr=text ident aeol= core.autocrlf=input core.eol=lf file=LF
expecting success of 0027.1816 'checkout attr=text ident aeol= core.autocrlf=input core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_input_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 1816 - checkout attr=text ident aeol= core.autocrlf=input core.eol=lf file=CRLF
expecting success of 0027.1817 'checkout attr=text ident aeol= core.autocrlf=input core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_input_attr_text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1817 - checkout attr=text ident aeol= core.autocrlf=input core.eol=lf file=CRLF_mix_LF
expecting success of 0027.1818 'checkout attr=text ident aeol= core.autocrlf=input core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_input_attr_text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1818 - checkout attr=text ident aeol= core.autocrlf=input core.eol=lf file=LF_mix_CR
expecting success of 0027.1819 'checkout attr=text ident aeol= core.autocrlf=input core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_input_attr_text_ LF_nul crlf_false_attr__LF_nul.txt
ok 1819 - checkout attr=text ident aeol= core.autocrlf=input core.eol=lf file=LF_nul
expecting success of 0027.1820 'setup config for checkout attr=auto ident=ident aeol= core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1820 - setup config for checkout attr=auto ident=ident aeol= core.autocrlf=input
expecting success of 0027.1821 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1821 - setup LF checkout with -c core.eol=lf
expecting success of 0027.1822 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1822 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.1823 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1823 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.1824 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1824 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.1825 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1825 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.1826 'ls-files --eol attr=auto ident aeol= core.autocrlf=input core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1826 - ls-files --eol attr=auto ident aeol= core.autocrlf=input core.eol=lf
expecting success of 0027.1827 'checkout attr=auto ident aeol= core.autocrlf=input core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_input_attr_auto_ LF crlf_false_attr__LF.txt
ok 1827 - checkout attr=auto ident aeol= core.autocrlf=input core.eol=lf file=LF
expecting success of 0027.1828 'checkout attr=auto ident aeol= core.autocrlf=input core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_input_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 1828 - checkout attr=auto ident aeol= core.autocrlf=input core.eol=lf file=CRLF
expecting success of 0027.1829 'checkout attr=auto ident aeol= core.autocrlf=input core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_input_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1829 - checkout attr=auto ident aeol= core.autocrlf=input core.eol=lf file=CRLF_mix_LF
expecting success of 0027.1830 'checkout attr=auto ident aeol= core.autocrlf=input core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_input_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1830 - checkout attr=auto ident aeol= core.autocrlf=input core.eol=lf file=LF_mix_CR
expecting success of 0027.1831 'checkout attr=auto ident aeol= core.autocrlf=input core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_input_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 1831 - checkout attr=auto ident aeol= core.autocrlf=input core.eol=lf file=LF_nul
expecting success of 0027.1832 'setup config for checkout attr=-text ident=ident aeol= core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1832 - setup config for checkout attr=-text ident=ident aeol= core.autocrlf=true
expecting success of 0027.1833 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1833 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.1834 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1834 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.1835 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1835 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.1836 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1836 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.1837 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1837 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.1838 'ls-files --eol attr=-text ident aeol= core.autocrlf=true core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1838 - ls-files --eol attr=-text ident aeol= core.autocrlf=true core.eol=crlf
expecting success of 0027.1839 'checkout attr=-text ident aeol= core.autocrlf=true core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_true_attr_-text_ LF crlf_false_attr__LF.txt
ok 1839 - checkout attr=-text ident aeol= core.autocrlf=true core.eol=crlf file=LF
expecting success of 0027.1840 'checkout attr=-text ident aeol= core.autocrlf=true core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_true_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 1840 - checkout attr=-text ident aeol= core.autocrlf=true core.eol=crlf file=CRLF
expecting success of 0027.1841 'checkout attr=-text ident aeol= core.autocrlf=true core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_true_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1841 - checkout attr=-text ident aeol= core.autocrlf=true core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.1842 'checkout attr=-text ident aeol= core.autocrlf=true core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_true_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1842 - checkout attr=-text ident aeol= core.autocrlf=true core.eol=crlf file=LF_mix_CR
expecting success of 0027.1843 'checkout attr=-text ident aeol= core.autocrlf=true core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_true_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 1843 - checkout attr=-text ident aeol= core.autocrlf=true core.eol=crlf file=LF_nul
expecting success of 0027.1844 'setup config for checkout attr=-text ident=ident aeol=lf core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1844 - setup config for checkout attr=-text ident=ident aeol=lf core.autocrlf=true
expecting success of 0027.1845 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1845 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.1846 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1846 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.1847 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1847 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.1848 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1848 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.1849 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1849 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.1850 'ls-files --eol attr=-text ident aeol=lf core.autocrlf=true core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1850 - ls-files --eol attr=-text ident aeol=lf core.autocrlf=true core.eol=crlf
expecting success of 0027.1851 'checkout attr=-text ident aeol=lf core.autocrlf=true core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_true_attr_-text_ LF crlf_false_attr__LF.txt
ok 1851 - checkout attr=-text ident aeol=lf core.autocrlf=true core.eol=crlf file=LF
expecting success of 0027.1852 'checkout attr=-text ident aeol=lf core.autocrlf=true core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_true_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 1852 - checkout attr=-text ident aeol=lf core.autocrlf=true core.eol=crlf file=CRLF
expecting success of 0027.1853 'checkout attr=-text ident aeol=lf core.autocrlf=true core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_true_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1853 - checkout attr=-text ident aeol=lf core.autocrlf=true core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.1854 'checkout attr=-text ident aeol=lf core.autocrlf=true core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_true_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1854 - checkout attr=-text ident aeol=lf core.autocrlf=true core.eol=crlf file=LF_mix_CR
expecting success of 0027.1855 'checkout attr=-text ident aeol=lf core.autocrlf=true core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_true_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 1855 - checkout attr=-text ident aeol=lf core.autocrlf=true core.eol=crlf file=LF_nul
expecting success of 0027.1856 'setup config for checkout attr=-text ident=ident aeol=crlf core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1856 - setup config for checkout attr=-text ident=ident aeol=crlf core.autocrlf=true
expecting success of 0027.1857 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1857 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.1858 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1858 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.1859 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1859 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.1860 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1860 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.1861 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1861 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.1862 'ls-files --eol attr=-text ident aeol=crlf core.autocrlf=true core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1862 - ls-files --eol attr=-text ident aeol=crlf core.autocrlf=true core.eol=crlf
expecting success of 0027.1863 'checkout attr=-text ident aeol=crlf core.autocrlf=true core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_true_attr_-text_ LF crlf_false_attr__LF.txt
ok 1863 - checkout attr=-text ident aeol=crlf core.autocrlf=true core.eol=crlf file=LF
expecting success of 0027.1864 'checkout attr=-text ident aeol=crlf core.autocrlf=true core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_true_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 1864 - checkout attr=-text ident aeol=crlf core.autocrlf=true core.eol=crlf file=CRLF
expecting success of 0027.1865 'checkout attr=-text ident aeol=crlf core.autocrlf=true core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_true_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1865 - checkout attr=-text ident aeol=crlf core.autocrlf=true core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.1866 'checkout attr=-text ident aeol=crlf core.autocrlf=true core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_true_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1866 - checkout attr=-text ident aeol=crlf core.autocrlf=true core.eol=crlf file=LF_mix_CR
expecting success of 0027.1867 'checkout attr=-text ident aeol=crlf core.autocrlf=true core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_true_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 1867 - checkout attr=-text ident aeol=crlf core.autocrlf=true core.eol=crlf file=LF_nul
expecting success of 0027.1868 'setup config for checkout attr=text ident=ident aeol=lf core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1868 - setup config for checkout attr=text ident=ident aeol=lf core.autocrlf=true
expecting success of 0027.1869 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1869 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.1870 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1870 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.1871 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1871 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.1872 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1872 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.1873 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1873 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.1874 'ls-files --eol attr=text ident aeol=lf core.autocrlf=true core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1874 - ls-files --eol attr=text ident aeol=lf core.autocrlf=true core.eol=crlf
expecting success of 0027.1875 'checkout attr=text ident aeol=lf core.autocrlf=true core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_true_attr_text_ LF crlf_false_attr__LF.txt
ok 1875 - checkout attr=text ident aeol=lf core.autocrlf=true core.eol=crlf file=LF
expecting success of 0027.1876 'checkout attr=text ident aeol=lf core.autocrlf=true core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_true_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 1876 - checkout attr=text ident aeol=lf core.autocrlf=true core.eol=crlf file=CRLF
expecting success of 0027.1877 'checkout attr=text ident aeol=lf core.autocrlf=true core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_true_attr_text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1877 - checkout attr=text ident aeol=lf core.autocrlf=true core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.1878 'checkout attr=text ident aeol=lf core.autocrlf=true core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_true_attr_text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1878 - checkout attr=text ident aeol=lf core.autocrlf=true core.eol=crlf file=LF_mix_CR
expecting success of 0027.1879 'checkout attr=text ident aeol=lf core.autocrlf=true core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_true_attr_text_ LF_nul crlf_false_attr__LF_nul.txt
ok 1879 - checkout attr=text ident aeol=lf core.autocrlf=true core.eol=crlf file=LF_nul
expecting success of 0027.1880 'setup config for checkout attr=text ident=ident aeol=crlf core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1880 - setup config for checkout attr=text ident=ident aeol=crlf core.autocrlf=true
expecting success of 0027.1881 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1881 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.1882 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1882 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.1883 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1883 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.1884 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1884 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.1885 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1885 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.1886 'ls-files --eol attr=text ident aeol=crlf core.autocrlf=true core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1886 - ls-files --eol attr=text ident aeol=crlf core.autocrlf=true core.eol=crlf
expecting success of 0027.1887 'checkout attr=text ident aeol=crlf core.autocrlf=true core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_true_attr_text_ CRLF crlf_false_attr__LF.txt
ok 1887 - checkout attr=text ident aeol=crlf core.autocrlf=true core.eol=crlf file=LF
expecting success of 0027.1888 'checkout attr=text ident aeol=crlf core.autocrlf=true core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_true_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 1888 - checkout attr=text ident aeol=crlf core.autocrlf=true core.eol=crlf file=CRLF
expecting success of 0027.1889 'checkout attr=text ident aeol=crlf core.autocrlf=true core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_true_attr_text_ CRLF crlf_false_attr__CRLF_mix_LF.txt
ok 1889 - checkout attr=text ident aeol=crlf core.autocrlf=true core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.1890 'checkout attr=text ident aeol=crlf core.autocrlf=true core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_true_attr_text_ CRLF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1890 - checkout attr=text ident aeol=crlf core.autocrlf=true core.eol=crlf file=LF_mix_CR
expecting success of 0027.1891 'checkout attr=text ident aeol=crlf core.autocrlf=true core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_true_attr_text_ CRLF_nul crlf_false_attr__LF_nul.txt
ok 1891 - checkout attr=text ident aeol=crlf core.autocrlf=true core.eol=crlf file=LF_nul
expecting success of 0027.1892 'setup config for checkout attr=auto ident=ident aeol=lf core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1892 - setup config for checkout attr=auto ident=ident aeol=lf core.autocrlf=true
expecting success of 0027.1893 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1893 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.1894 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1894 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.1895 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1895 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.1896 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1896 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.1897 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1897 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.1898 'ls-files --eol attr=auto ident aeol=lf core.autocrlf=true core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1898 - ls-files --eol attr=auto ident aeol=lf core.autocrlf=true core.eol=crlf
expecting success of 0027.1899 'checkout attr=auto ident aeol=lf core.autocrlf=true core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_true_attr_auto_ LF crlf_false_attr__LF.txt
ok 1899 - checkout attr=auto ident aeol=lf core.autocrlf=true core.eol=crlf file=LF
expecting success of 0027.1900 'checkout attr=auto ident aeol=lf core.autocrlf=true core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_true_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 1900 - checkout attr=auto ident aeol=lf core.autocrlf=true core.eol=crlf file=CRLF
expecting success of 0027.1901 'checkout attr=auto ident aeol=lf core.autocrlf=true core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_true_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1901 - checkout attr=auto ident aeol=lf core.autocrlf=true core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.1902 'checkout attr=auto ident aeol=lf core.autocrlf=true core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_true_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1902 - checkout attr=auto ident aeol=lf core.autocrlf=true core.eol=crlf file=LF_mix_CR
expecting success of 0027.1903 'checkout attr=auto ident aeol=lf core.autocrlf=true core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_true_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 1903 - checkout attr=auto ident aeol=lf core.autocrlf=true core.eol=crlf file=LF_nul
expecting success of 0027.1904 'setup config for checkout attr=auto ident=ident aeol=crlf core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1904 - setup config for checkout attr=auto ident=ident aeol=crlf core.autocrlf=true
expecting success of 0027.1905 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1905 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.1906 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1906 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.1907 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1907 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.1908 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1908 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.1909 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1909 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.1910 'ls-files --eol attr=auto ident aeol=crlf core.autocrlf=true core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1910 - ls-files --eol attr=auto ident aeol=crlf core.autocrlf=true core.eol=crlf
expecting success of 0027.1911 'checkout attr=auto ident aeol=crlf core.autocrlf=true core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_true_attr_auto_ CRLF crlf_false_attr__LF.txt
ok 1911 - checkout attr=auto ident aeol=crlf core.autocrlf=true core.eol=crlf file=LF
expecting success of 0027.1912 'checkout attr=auto ident aeol=crlf core.autocrlf=true core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_true_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 1912 - checkout attr=auto ident aeol=crlf core.autocrlf=true core.eol=crlf file=CRLF
expecting success of 0027.1913 'checkout attr=auto ident aeol=crlf core.autocrlf=true core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_true_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1913 - checkout attr=auto ident aeol=crlf core.autocrlf=true core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.1914 'checkout attr=auto ident aeol=crlf core.autocrlf=true core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_true_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1914 - checkout attr=auto ident aeol=crlf core.autocrlf=true core.eol=crlf file=LF_mix_CR
expecting success of 0027.1915 'checkout attr=auto ident aeol=crlf core.autocrlf=true core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_true_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 1915 - checkout attr=auto ident aeol=crlf core.autocrlf=true core.eol=crlf file=LF_nul
expecting success of 0027.1916 'setup config for checkout attr=-text ident=ident aeol= core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1916 - setup config for checkout attr=-text ident=ident aeol= core.autocrlf=false
expecting success of 0027.1917 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1917 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.1918 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1918 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.1919 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1919 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.1920 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1920 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.1921 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1921 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.1922 'ls-files --eol attr=-text ident aeol= core.autocrlf=false core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1922 - ls-files --eol attr=-text ident aeol= core.autocrlf=false core.eol=crlf
expecting success of 0027.1923 'checkout attr=-text ident aeol= core.autocrlf=false core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_false_attr_-text_ LF crlf_false_attr__LF.txt
ok 1923 - checkout attr=-text ident aeol= core.autocrlf=false core.eol=crlf file=LF
expecting success of 0027.1924 'checkout attr=-text ident aeol= core.autocrlf=false core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_false_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 1924 - checkout attr=-text ident aeol= core.autocrlf=false core.eol=crlf file=CRLF
expecting success of 0027.1925 'checkout attr=-text ident aeol= core.autocrlf=false core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_false_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1925 - checkout attr=-text ident aeol= core.autocrlf=false core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.1926 'checkout attr=-text ident aeol= core.autocrlf=false core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_false_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1926 - checkout attr=-text ident aeol= core.autocrlf=false core.eol=crlf file=LF_mix_CR
expecting success of 0027.1927 'checkout attr=-text ident aeol= core.autocrlf=false core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_false_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 1927 - checkout attr=-text ident aeol= core.autocrlf=false core.eol=crlf file=LF_nul
expecting success of 0027.1928 'setup config for checkout attr=-text ident=ident aeol=lf core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1928 - setup config for checkout attr=-text ident=ident aeol=lf core.autocrlf=false
expecting success of 0027.1929 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1929 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.1930 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1930 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.1931 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1931 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.1932 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1932 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.1933 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1933 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.1934 'ls-files --eol attr=-text ident aeol=lf core.autocrlf=false core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1934 - ls-files --eol attr=-text ident aeol=lf core.autocrlf=false core.eol=crlf
expecting success of 0027.1935 'checkout attr=-text ident aeol=lf core.autocrlf=false core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_false_attr_-text_ LF crlf_false_attr__LF.txt
ok 1935 - checkout attr=-text ident aeol=lf core.autocrlf=false core.eol=crlf file=LF
expecting success of 0027.1936 'checkout attr=-text ident aeol=lf core.autocrlf=false core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_false_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 1936 - checkout attr=-text ident aeol=lf core.autocrlf=false core.eol=crlf file=CRLF
expecting success of 0027.1937 'checkout attr=-text ident aeol=lf core.autocrlf=false core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_false_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1937 - checkout attr=-text ident aeol=lf core.autocrlf=false core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.1938 'checkout attr=-text ident aeol=lf core.autocrlf=false core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_false_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1938 - checkout attr=-text ident aeol=lf core.autocrlf=false core.eol=crlf file=LF_mix_CR
expecting success of 0027.1939 'checkout attr=-text ident aeol=lf core.autocrlf=false core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_false_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 1939 - checkout attr=-text ident aeol=lf core.autocrlf=false core.eol=crlf file=LF_nul
expecting success of 0027.1940 'setup config for checkout attr=-text ident=ident aeol=crlf core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1940 - setup config for checkout attr=-text ident=ident aeol=crlf core.autocrlf=false
expecting success of 0027.1941 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1941 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.1942 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1942 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.1943 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1943 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.1944 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1944 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.1945 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1945 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.1946 'ls-files --eol attr=-text ident aeol=crlf core.autocrlf=false core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1946 - ls-files --eol attr=-text ident aeol=crlf core.autocrlf=false core.eol=crlf
expecting success of 0027.1947 'checkout attr=-text ident aeol=crlf core.autocrlf=false core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_false_attr_-text_ LF crlf_false_attr__LF.txt
ok 1947 - checkout attr=-text ident aeol=crlf core.autocrlf=false core.eol=crlf file=LF
expecting success of 0027.1948 'checkout attr=-text ident aeol=crlf core.autocrlf=false core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_false_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 1948 - checkout attr=-text ident aeol=crlf core.autocrlf=false core.eol=crlf file=CRLF
expecting success of 0027.1949 'checkout attr=-text ident aeol=crlf core.autocrlf=false core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_false_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1949 - checkout attr=-text ident aeol=crlf core.autocrlf=false core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.1950 'checkout attr=-text ident aeol=crlf core.autocrlf=false core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_false_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1950 - checkout attr=-text ident aeol=crlf core.autocrlf=false core.eol=crlf file=LF_mix_CR
expecting success of 0027.1951 'checkout attr=-text ident aeol=crlf core.autocrlf=false core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_false_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 1951 - checkout attr=-text ident aeol=crlf core.autocrlf=false core.eol=crlf file=LF_nul
expecting success of 0027.1952 'setup config for checkout attr=text ident=ident aeol=lf core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1952 - setup config for checkout attr=text ident=ident aeol=lf core.autocrlf=false
expecting success of 0027.1953 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1953 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.1954 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1954 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.1955 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1955 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.1956 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1956 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.1957 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1957 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.1958 'ls-files --eol attr=text ident aeol=lf core.autocrlf=false core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1958 - ls-files --eol attr=text ident aeol=lf core.autocrlf=false core.eol=crlf
expecting success of 0027.1959 'checkout attr=text ident aeol=lf core.autocrlf=false core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_false_attr_text_ LF crlf_false_attr__LF.txt
ok 1959 - checkout attr=text ident aeol=lf core.autocrlf=false core.eol=crlf file=LF
expecting success of 0027.1960 'checkout attr=text ident aeol=lf core.autocrlf=false core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_false_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 1960 - checkout attr=text ident aeol=lf core.autocrlf=false core.eol=crlf file=CRLF
expecting success of 0027.1961 'checkout attr=text ident aeol=lf core.autocrlf=false core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_false_attr_text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1961 - checkout attr=text ident aeol=lf core.autocrlf=false core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.1962 'checkout attr=text ident aeol=lf core.autocrlf=false core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_false_attr_text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1962 - checkout attr=text ident aeol=lf core.autocrlf=false core.eol=crlf file=LF_mix_CR
expecting success of 0027.1963 'checkout attr=text ident aeol=lf core.autocrlf=false core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_false_attr_text_ LF_nul crlf_false_attr__LF_nul.txt
ok 1963 - checkout attr=text ident aeol=lf core.autocrlf=false core.eol=crlf file=LF_nul
expecting success of 0027.1964 'setup config for checkout attr=text ident=ident aeol=crlf core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1964 - setup config for checkout attr=text ident=ident aeol=crlf core.autocrlf=false
expecting success of 0027.1965 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1965 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.1966 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1966 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.1967 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1967 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.1968 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1968 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.1969 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1969 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.1970 'ls-files --eol attr=text ident aeol=crlf core.autocrlf=false core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1970 - ls-files --eol attr=text ident aeol=crlf core.autocrlf=false core.eol=crlf
expecting success of 0027.1971 'checkout attr=text ident aeol=crlf core.autocrlf=false core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_false_attr_text_ CRLF crlf_false_attr__LF.txt
ok 1971 - checkout attr=text ident aeol=crlf core.autocrlf=false core.eol=crlf file=LF
expecting success of 0027.1972 'checkout attr=text ident aeol=crlf core.autocrlf=false core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_false_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 1972 - checkout attr=text ident aeol=crlf core.autocrlf=false core.eol=crlf file=CRLF
expecting success of 0027.1973 'checkout attr=text ident aeol=crlf core.autocrlf=false core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_false_attr_text_ CRLF crlf_false_attr__CRLF_mix_LF.txt
ok 1973 - checkout attr=text ident aeol=crlf core.autocrlf=false core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.1974 'checkout attr=text ident aeol=crlf core.autocrlf=false core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_false_attr_text_ CRLF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1974 - checkout attr=text ident aeol=crlf core.autocrlf=false core.eol=crlf file=LF_mix_CR
expecting success of 0027.1975 'checkout attr=text ident aeol=crlf core.autocrlf=false core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_false_attr_text_ CRLF_nul crlf_false_attr__LF_nul.txt
ok 1975 - checkout attr=text ident aeol=crlf core.autocrlf=false core.eol=crlf file=LF_nul
expecting success of 0027.1976 'setup config for checkout attr=auto ident=ident aeol=lf core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1976 - setup config for checkout attr=auto ident=ident aeol=lf core.autocrlf=false
expecting success of 0027.1977 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1977 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.1978 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1978 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.1979 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1979 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.1980 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1980 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.1981 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1981 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.1982 'ls-files --eol attr=auto ident aeol=lf core.autocrlf=false core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1982 - ls-files --eol attr=auto ident aeol=lf core.autocrlf=false core.eol=crlf
expecting success of 0027.1983 'checkout attr=auto ident aeol=lf core.autocrlf=false core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_false_attr_auto_ LF crlf_false_attr__LF.txt
ok 1983 - checkout attr=auto ident aeol=lf core.autocrlf=false core.eol=crlf file=LF
expecting success of 0027.1984 'checkout attr=auto ident aeol=lf core.autocrlf=false core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_false_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 1984 - checkout attr=auto ident aeol=lf core.autocrlf=false core.eol=crlf file=CRLF
expecting success of 0027.1985 'checkout attr=auto ident aeol=lf core.autocrlf=false core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_false_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1985 - checkout attr=auto ident aeol=lf core.autocrlf=false core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.1986 'checkout attr=auto ident aeol=lf core.autocrlf=false core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_false_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1986 - checkout attr=auto ident aeol=lf core.autocrlf=false core.eol=crlf file=LF_mix_CR
expecting success of 0027.1987 'checkout attr=auto ident aeol=lf core.autocrlf=false core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_false_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 1987 - checkout attr=auto ident aeol=lf core.autocrlf=false core.eol=crlf file=LF_nul
expecting success of 0027.1988 'setup config for checkout attr=auto ident=ident aeol=crlf core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 1988 - setup config for checkout attr=auto ident=ident aeol=crlf core.autocrlf=false
expecting success of 0027.1989 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1989 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.1990 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1990 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.1991 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1991 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.1992 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1992 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.1993 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 1993 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.1994 'ls-files --eol attr=auto ident aeol=crlf core.autocrlf=false core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 1994 - ls-files --eol attr=auto ident aeol=crlf core.autocrlf=false core.eol=crlf
expecting success of 0027.1995 'checkout attr=auto ident aeol=crlf core.autocrlf=false core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_false_attr_auto_ CRLF crlf_false_attr__LF.txt
ok 1995 - checkout attr=auto ident aeol=crlf core.autocrlf=false core.eol=crlf file=LF
expecting success of 0027.1996 'checkout attr=auto ident aeol=crlf core.autocrlf=false core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_false_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 1996 - checkout attr=auto ident aeol=crlf core.autocrlf=false core.eol=crlf file=CRLF
expecting success of 0027.1997 'checkout attr=auto ident aeol=crlf core.autocrlf=false core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_false_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 1997 - checkout attr=auto ident aeol=crlf core.autocrlf=false core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.1998 'checkout attr=auto ident aeol=crlf core.autocrlf=false core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_false_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 1998 - checkout attr=auto ident aeol=crlf core.autocrlf=false core.eol=crlf file=LF_mix_CR
expecting success of 0027.1999 'checkout attr=auto ident aeol=crlf core.autocrlf=false core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_false_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 1999 - checkout attr=auto ident aeol=crlf core.autocrlf=false core.eol=crlf file=LF_nul
expecting success of 0027.2000 'setup config for checkout attr=-text ident=ident aeol= core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2000 - setup config for checkout attr=-text ident=ident aeol= core.autocrlf=input
expecting success of 0027.2001 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2001 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.2002 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2002 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.2003 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2003 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.2004 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2004 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.2005 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2005 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.2006 'ls-files --eol attr=-text ident aeol= core.autocrlf=input core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2006 - ls-files --eol attr=-text ident aeol= core.autocrlf=input core.eol=crlf
expecting success of 0027.2007 'checkout attr=-text ident aeol= core.autocrlf=input core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_input_attr_-text_ LF crlf_false_attr__LF.txt
ok 2007 - checkout attr=-text ident aeol= core.autocrlf=input core.eol=crlf file=LF
expecting success of 0027.2008 'checkout attr=-text ident aeol= core.autocrlf=input core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_input_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 2008 - checkout attr=-text ident aeol= core.autocrlf=input core.eol=crlf file=CRLF
expecting success of 0027.2009 'checkout attr=-text ident aeol= core.autocrlf=input core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_input_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 2009 - checkout attr=-text ident aeol= core.autocrlf=input core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.2010 'checkout attr=-text ident aeol= core.autocrlf=input core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_input_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2010 - checkout attr=-text ident aeol= core.autocrlf=input core.eol=crlf file=LF_mix_CR
expecting success of 0027.2011 'checkout attr=-text ident aeol= core.autocrlf=input core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_input_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 2011 - checkout attr=-text ident aeol= core.autocrlf=input core.eol=crlf file=LF_nul
expecting success of 0027.2012 'setup config for checkout attr=-text ident=ident aeol=lf core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2012 - setup config for checkout attr=-text ident=ident aeol=lf core.autocrlf=input
expecting success of 0027.2013 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2013 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.2014 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2014 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.2015 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2015 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.2016 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2016 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.2017 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2017 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.2018 'ls-files --eol attr=-text ident aeol=lf core.autocrlf=input core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2018 - ls-files --eol attr=-text ident aeol=lf core.autocrlf=input core.eol=crlf
expecting success of 0027.2019 'checkout attr=-text ident aeol=lf core.autocrlf=input core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_input_attr_-text_ LF crlf_false_attr__LF.txt
ok 2019 - checkout attr=-text ident aeol=lf core.autocrlf=input core.eol=crlf file=LF
expecting success of 0027.2020 'checkout attr=-text ident aeol=lf core.autocrlf=input core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_input_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 2020 - checkout attr=-text ident aeol=lf core.autocrlf=input core.eol=crlf file=CRLF
expecting success of 0027.2021 'checkout attr=-text ident aeol=lf core.autocrlf=input core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_input_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 2021 - checkout attr=-text ident aeol=lf core.autocrlf=input core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.2022 'checkout attr=-text ident aeol=lf core.autocrlf=input core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_input_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2022 - checkout attr=-text ident aeol=lf core.autocrlf=input core.eol=crlf file=LF_mix_CR
expecting success of 0027.2023 'checkout attr=-text ident aeol=lf core.autocrlf=input core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_input_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 2023 - checkout attr=-text ident aeol=lf core.autocrlf=input core.eol=crlf file=LF_nul
expecting success of 0027.2024 'setup config for checkout attr=-text ident=ident aeol=crlf core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2024 - setup config for checkout attr=-text ident=ident aeol=crlf core.autocrlf=input
expecting success of 0027.2025 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2025 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.2026 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2026 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.2027 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2027 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.2028 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2028 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.2029 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2029 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.2030 'ls-files --eol attr=-text ident aeol=crlf core.autocrlf=input core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2030 - ls-files --eol attr=-text ident aeol=crlf core.autocrlf=input core.eol=crlf
expecting success of 0027.2031 'checkout attr=-text ident aeol=crlf core.autocrlf=input core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_input_attr_-text_ LF crlf_false_attr__LF.txt
ok 2031 - checkout attr=-text ident aeol=crlf core.autocrlf=input core.eol=crlf file=LF
expecting success of 0027.2032 'checkout attr=-text ident aeol=crlf core.autocrlf=input core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_input_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 2032 - checkout attr=-text ident aeol=crlf core.autocrlf=input core.eol=crlf file=CRLF
expecting success of 0027.2033 'checkout attr=-text ident aeol=crlf core.autocrlf=input core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_input_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 2033 - checkout attr=-text ident aeol=crlf core.autocrlf=input core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.2034 'checkout attr=-text ident aeol=crlf core.autocrlf=input core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_input_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2034 - checkout attr=-text ident aeol=crlf core.autocrlf=input core.eol=crlf file=LF_mix_CR
expecting success of 0027.2035 'checkout attr=-text ident aeol=crlf core.autocrlf=input core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_input_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 2035 - checkout attr=-text ident aeol=crlf core.autocrlf=input core.eol=crlf file=LF_nul
expecting success of 0027.2036 'setup config for checkout attr=text ident=ident aeol=lf core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2036 - setup config for checkout attr=text ident=ident aeol=lf core.autocrlf=input
expecting success of 0027.2037 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2037 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.2038 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2038 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.2039 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2039 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.2040 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2040 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.2041 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2041 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.2042 'ls-files --eol attr=text ident aeol=lf core.autocrlf=input core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2042 - ls-files --eol attr=text ident aeol=lf core.autocrlf=input core.eol=crlf
expecting success of 0027.2043 'checkout attr=text ident aeol=lf core.autocrlf=input core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_input_attr_text_ LF crlf_false_attr__LF.txt
ok 2043 - checkout attr=text ident aeol=lf core.autocrlf=input core.eol=crlf file=LF
expecting success of 0027.2044 'checkout attr=text ident aeol=lf core.autocrlf=input core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_input_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 2044 - checkout attr=text ident aeol=lf core.autocrlf=input core.eol=crlf file=CRLF
expecting success of 0027.2045 'checkout attr=text ident aeol=lf core.autocrlf=input core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_input_attr_text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 2045 - checkout attr=text ident aeol=lf core.autocrlf=input core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.2046 'checkout attr=text ident aeol=lf core.autocrlf=input core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_input_attr_text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2046 - checkout attr=text ident aeol=lf core.autocrlf=input core.eol=crlf file=LF_mix_CR
expecting success of 0027.2047 'checkout attr=text ident aeol=lf core.autocrlf=input core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_input_attr_text_ LF_nul crlf_false_attr__LF_nul.txt
ok 2047 - checkout attr=text ident aeol=lf core.autocrlf=input core.eol=crlf file=LF_nul
expecting success of 0027.2048 'setup config for checkout attr=text ident=ident aeol=crlf core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2048 - setup config for checkout attr=text ident=ident aeol=crlf core.autocrlf=input
expecting success of 0027.2049 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2049 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.2050 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2050 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.2051 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2051 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.2052 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2052 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.2053 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2053 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.2054 'ls-files --eol attr=text ident aeol=crlf core.autocrlf=input core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2054 - ls-files --eol attr=text ident aeol=crlf core.autocrlf=input core.eol=crlf
expecting success of 0027.2055 'checkout attr=text ident aeol=crlf core.autocrlf=input core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_input_attr_text_ CRLF crlf_false_attr__LF.txt
ok 2055 - checkout attr=text ident aeol=crlf core.autocrlf=input core.eol=crlf file=LF
expecting success of 0027.2056 'checkout attr=text ident aeol=crlf core.autocrlf=input core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_input_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 2056 - checkout attr=text ident aeol=crlf core.autocrlf=input core.eol=crlf file=CRLF
expecting success of 0027.2057 'checkout attr=text ident aeol=crlf core.autocrlf=input core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_input_attr_text_ CRLF crlf_false_attr__CRLF_mix_LF.txt
ok 2057 - checkout attr=text ident aeol=crlf core.autocrlf=input core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.2058 'checkout attr=text ident aeol=crlf core.autocrlf=input core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_input_attr_text_ CRLF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2058 - checkout attr=text ident aeol=crlf core.autocrlf=input core.eol=crlf file=LF_mix_CR
expecting success of 0027.2059 'checkout attr=text ident aeol=crlf core.autocrlf=input core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_input_attr_text_ CRLF_nul crlf_false_attr__LF_nul.txt
ok 2059 - checkout attr=text ident aeol=crlf core.autocrlf=input core.eol=crlf file=LF_nul
expecting success of 0027.2060 'setup config for checkout attr=auto ident=ident aeol=lf core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2060 - setup config for checkout attr=auto ident=ident aeol=lf core.autocrlf=input
expecting success of 0027.2061 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2061 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.2062 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2062 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.2063 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2063 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.2064 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2064 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.2065 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2065 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.2066 'ls-files --eol attr=auto ident aeol=lf core.autocrlf=input core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2066 - ls-files --eol attr=auto ident aeol=lf core.autocrlf=input core.eol=crlf
expecting success of 0027.2067 'checkout attr=auto ident aeol=lf core.autocrlf=input core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_input_attr_auto_ LF crlf_false_attr__LF.txt
ok 2067 - checkout attr=auto ident aeol=lf core.autocrlf=input core.eol=crlf file=LF
expecting success of 0027.2068 'checkout attr=auto ident aeol=lf core.autocrlf=input core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_input_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 2068 - checkout attr=auto ident aeol=lf core.autocrlf=input core.eol=crlf file=CRLF
expecting success of 0027.2069 'checkout attr=auto ident aeol=lf core.autocrlf=input core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_input_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 2069 - checkout attr=auto ident aeol=lf core.autocrlf=input core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.2070 'checkout attr=auto ident aeol=lf core.autocrlf=input core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_input_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2070 - checkout attr=auto ident aeol=lf core.autocrlf=input core.eol=crlf file=LF_mix_CR
expecting success of 0027.2071 'checkout attr=auto ident aeol=lf core.autocrlf=input core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_input_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 2071 - checkout attr=auto ident aeol=lf core.autocrlf=input core.eol=crlf file=LF_nul
expecting success of 0027.2072 'setup config for checkout attr=auto ident=ident aeol=crlf core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2072 - setup config for checkout attr=auto ident=ident aeol=crlf core.autocrlf=input
expecting success of 0027.2073 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2073 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.2074 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2074 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.2075 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2075 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.2076 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2076 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.2077 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2077 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.2078 'ls-files --eol attr=auto ident aeol=crlf core.autocrlf=input core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2078 - ls-files --eol attr=auto ident aeol=crlf core.autocrlf=input core.eol=crlf
expecting success of 0027.2079 'checkout attr=auto ident aeol=crlf core.autocrlf=input core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_input_attr_auto_ CRLF crlf_false_attr__LF.txt
ok 2079 - checkout attr=auto ident aeol=crlf core.autocrlf=input core.eol=crlf file=LF
expecting success of 0027.2080 'checkout attr=auto ident aeol=crlf core.autocrlf=input core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_input_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 2080 - checkout attr=auto ident aeol=crlf core.autocrlf=input core.eol=crlf file=CRLF
expecting success of 0027.2081 'checkout attr=auto ident aeol=crlf core.autocrlf=input core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_input_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 2081 - checkout attr=auto ident aeol=crlf core.autocrlf=input core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.2082 'checkout attr=auto ident aeol=crlf core.autocrlf=input core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_input_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2082 - checkout attr=auto ident aeol=crlf core.autocrlf=input core.eol=crlf file=LF_mix_CR
expecting success of 0027.2083 'checkout attr=auto ident aeol=crlf core.autocrlf=input core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_input_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 2083 - checkout attr=auto ident aeol=crlf core.autocrlf=input core.eol=crlf file=LF_nul
expecting success of 0027.2084 'setup config for checkout attr= ident=ident aeol= core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2084 - setup config for checkout attr= ident=ident aeol= core.autocrlf=false
expecting success of 0027.2085 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2085 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.2086 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2086 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.2087 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2087 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.2088 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2088 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.2089 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2089 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.2090 'ls-files --eol attr= ident aeol= core.autocrlf=false core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2090 - ls-files --eol attr= ident aeol= core.autocrlf=false core.eol=crlf
expecting success of 0027.2091 'checkout attr= ident aeol= core.autocrlf=false core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_false_attr__ LF crlf_false_attr__LF.txt
ok 2091 - checkout attr= ident aeol= core.autocrlf=false core.eol=crlf file=LF
expecting success of 0027.2092 'checkout attr= ident aeol= core.autocrlf=false core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_false_attr__ CRLF crlf_false_attr__CRLF.txt
ok 2092 - checkout attr= ident aeol= core.autocrlf=false core.eol=crlf file=CRLF
expecting success of 0027.2093 'checkout attr= ident aeol= core.autocrlf=false core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_false_attr__ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 2093 - checkout attr= ident aeol= core.autocrlf=false core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.2094 'checkout attr= ident aeol= core.autocrlf=false core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_false_attr__ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2094 - checkout attr= ident aeol= core.autocrlf=false core.eol=crlf file=LF_mix_CR
expecting success of 0027.2095 'checkout attr= ident aeol= core.autocrlf=false core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_false_attr__ LF_nul crlf_false_attr__LF_nul.txt
ok 2095 - checkout attr= ident aeol= core.autocrlf=false core.eol=crlf file=LF_nul
expecting success of 0027.2096 'setup config for checkout attr= ident=ident aeol= core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2096 - setup config for checkout attr= ident=ident aeol= core.autocrlf=true
expecting success of 0027.2097 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2097 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.2098 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2098 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.2099 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2099 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.2100 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2100 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.2101 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2101 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.2102 'ls-files --eol attr= ident aeol= core.autocrlf=true core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2102 - ls-files --eol attr= ident aeol= core.autocrlf=true core.eol=crlf
expecting success of 0027.2103 'checkout attr= ident aeol= core.autocrlf=true core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_true_attr__ CRLF crlf_false_attr__LF.txt
ok 2103 - checkout attr= ident aeol= core.autocrlf=true core.eol=crlf file=LF
expecting success of 0027.2104 'checkout attr= ident aeol= core.autocrlf=true core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_true_attr__ CRLF crlf_false_attr__CRLF.txt
ok 2104 - checkout attr= ident aeol= core.autocrlf=true core.eol=crlf file=CRLF
expecting success of 0027.2105 'checkout attr= ident aeol= core.autocrlf=true core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_true_attr__ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 2105 - checkout attr= ident aeol= core.autocrlf=true core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.2106 'checkout attr= ident aeol= core.autocrlf=true core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_true_attr__ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2106 - checkout attr= ident aeol= core.autocrlf=true core.eol=crlf file=LF_mix_CR
expecting success of 0027.2107 'checkout attr= ident aeol= core.autocrlf=true core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_true_attr__ LF_nul crlf_false_attr__LF_nul.txt
ok 2107 - checkout attr= ident aeol= core.autocrlf=true core.eol=crlf file=LF_nul
expecting success of 0027.2108 'setup config for checkout attr=auto ident=ident aeol= core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2108 - setup config for checkout attr=auto ident=ident aeol= core.autocrlf=true
expecting success of 0027.2109 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2109 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.2110 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2110 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.2111 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2111 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.2112 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2112 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.2113 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2113 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.2114 'ls-files --eol attr=auto ident aeol= core.autocrlf=true core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2114 - ls-files --eol attr=auto ident aeol= core.autocrlf=true core.eol=crlf
expecting success of 0027.2115 'checkout attr=auto ident aeol= core.autocrlf=true core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_true_attr_auto_ CRLF crlf_false_attr__LF.txt
ok 2115 - checkout attr=auto ident aeol= core.autocrlf=true core.eol=crlf file=LF
expecting success of 0027.2116 'checkout attr=auto ident aeol= core.autocrlf=true core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_true_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 2116 - checkout attr=auto ident aeol= core.autocrlf=true core.eol=crlf file=CRLF
expecting success of 0027.2117 'checkout attr=auto ident aeol= core.autocrlf=true core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_true_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 2117 - checkout attr=auto ident aeol= core.autocrlf=true core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.2118 'checkout attr=auto ident aeol= core.autocrlf=true core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_true_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2118 - checkout attr=auto ident aeol= core.autocrlf=true core.eol=crlf file=LF_mix_CR
expecting success of 0027.2119 'checkout attr=auto ident aeol= core.autocrlf=true core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_true_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 2119 - checkout attr=auto ident aeol= core.autocrlf=true core.eol=crlf file=LF_nul
expecting success of 0027.2120 'setup config for checkout attr=text ident=ident aeol= core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2120 - setup config for checkout attr=text ident=ident aeol= core.autocrlf=true
expecting success of 0027.2121 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2121 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.2122 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2122 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.2123 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2123 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.2124 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2124 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.2125 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2125 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.2126 'ls-files --eol attr=text ident aeol= core.autocrlf=true core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2126 - ls-files --eol attr=text ident aeol= core.autocrlf=true core.eol=crlf
expecting success of 0027.2127 'checkout attr=text ident aeol= core.autocrlf=true core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_true_attr_text_ CRLF crlf_false_attr__LF.txt
ok 2127 - checkout attr=text ident aeol= core.autocrlf=true core.eol=crlf file=LF
expecting success of 0027.2128 'checkout attr=text ident aeol= core.autocrlf=true core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_true_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 2128 - checkout attr=text ident aeol= core.autocrlf=true core.eol=crlf file=CRLF
expecting success of 0027.2129 'checkout attr=text ident aeol= core.autocrlf=true core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_true_attr_text_ CRLF crlf_false_attr__CRLF_mix_LF.txt
ok 2129 - checkout attr=text ident aeol= core.autocrlf=true core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.2130 'checkout attr=text ident aeol= core.autocrlf=true core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_true_attr_text_ CRLF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2130 - checkout attr=text ident aeol= core.autocrlf=true core.eol=crlf file=LF_mix_CR
expecting success of 0027.2131 'checkout attr=text ident aeol= core.autocrlf=true core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_true_attr_text_ CRLF_nul crlf_false_attr__LF_nul.txt
ok 2131 - checkout attr=text ident aeol= core.autocrlf=true core.eol=crlf file=LF_nul
expecting success of 0027.2132 'setup config for checkout attr=text ident=ident aeol= core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2132 - setup config for checkout attr=text ident=ident aeol= core.autocrlf=input
expecting success of 0027.2133 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2133 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.2134 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2134 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.2135 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2135 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.2136 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2136 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.2137 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2137 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.2138 'ls-files --eol attr=text ident aeol= core.autocrlf=input core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2138 - ls-files --eol attr=text ident aeol= core.autocrlf=input core.eol=crlf
expecting success of 0027.2139 'checkout attr=text ident aeol= core.autocrlf=input core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_input_attr_text_ LF crlf_false_attr__LF.txt
ok 2139 - checkout attr=text ident aeol= core.autocrlf=input core.eol=crlf file=LF
expecting success of 0027.2140 'checkout attr=text ident aeol= core.autocrlf=input core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_input_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 2140 - checkout attr=text ident aeol= core.autocrlf=input core.eol=crlf file=CRLF
expecting success of 0027.2141 'checkout attr=text ident aeol= core.autocrlf=input core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_input_attr_text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 2141 - checkout attr=text ident aeol= core.autocrlf=input core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.2142 'checkout attr=text ident aeol= core.autocrlf=input core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_input_attr_text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2142 - checkout attr=text ident aeol= core.autocrlf=input core.eol=crlf file=LF_mix_CR
expecting success of 0027.2143 'checkout attr=text ident aeol= core.autocrlf=input core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_input_attr_text_ LF_nul crlf_false_attr__LF_nul.txt
ok 2143 - checkout attr=text ident aeol= core.autocrlf=input core.eol=crlf file=LF_nul
expecting success of 0027.2144 'setup config for checkout attr=auto ident=ident aeol= core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2144 - setup config for checkout attr=auto ident=ident aeol= core.autocrlf=input
expecting success of 0027.2145 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2145 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.2146 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2146 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.2147 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2147 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.2148 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2148 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.2149 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2149 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.2150 'ls-files --eol attr=auto ident aeol= core.autocrlf=input core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2150 - ls-files --eol attr=auto ident aeol= core.autocrlf=input core.eol=crlf
expecting success of 0027.2151 'checkout attr=auto ident aeol= core.autocrlf=input core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_input_attr_auto_ LF crlf_false_attr__LF.txt
ok 2151 - checkout attr=auto ident aeol= core.autocrlf=input core.eol=crlf file=LF
expecting success of 0027.2152 'checkout attr=auto ident aeol= core.autocrlf=input core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_input_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 2152 - checkout attr=auto ident aeol= core.autocrlf=input core.eol=crlf file=CRLF
expecting success of 0027.2153 'checkout attr=auto ident aeol= core.autocrlf=input core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_input_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 2153 - checkout attr=auto ident aeol= core.autocrlf=input core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.2154 'checkout attr=auto ident aeol= core.autocrlf=input core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_input_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2154 - checkout attr=auto ident aeol= core.autocrlf=input core.eol=crlf file=LF_mix_CR
expecting success of 0027.2155 'checkout attr=auto ident aeol= core.autocrlf=input core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_input_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 2155 - checkout attr=auto ident aeol= core.autocrlf=input core.eol=crlf file=LF_nul
expecting success of 0027.2156 'setup config for checkout attr=-text ident=ident aeol= core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2156 - setup config for checkout attr=-text ident=ident aeol= core.autocrlf=true
expecting success of 0027.2157 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2157 - setup LF checkout with -c core.eol=native
expecting success of 0027.2158 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2158 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.2159 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2159 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.2160 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2160 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.2161 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2161 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.2162 'ls-files --eol attr=-text ident aeol= core.autocrlf=true core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2162 - ls-files --eol attr=-text ident aeol= core.autocrlf=true core.eol=native
expecting success of 0027.2163 'checkout attr=-text ident aeol= core.autocrlf=true core.eol=native file=LF':
compare_ws_file eol_native_crlf_true_attr_-text_ LF crlf_false_attr__LF.txt
ok 2163 - checkout attr=-text ident aeol= core.autocrlf=true core.eol=native file=LF
expecting success of 0027.2164 'checkout attr=-text ident aeol= core.autocrlf=true core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_true_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 2164 - checkout attr=-text ident aeol= core.autocrlf=true core.eol=native file=CRLF
expecting success of 0027.2165 'checkout attr=-text ident aeol= core.autocrlf=true core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_true_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 2165 - checkout attr=-text ident aeol= core.autocrlf=true core.eol=native file=CRLF_mix_LF
expecting success of 0027.2166 'checkout attr=-text ident aeol= core.autocrlf=true core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_true_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2166 - checkout attr=-text ident aeol= core.autocrlf=true core.eol=native file=LF_mix_CR
expecting success of 0027.2167 'checkout attr=-text ident aeol= core.autocrlf=true core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_true_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 2167 - checkout attr=-text ident aeol= core.autocrlf=true core.eol=native file=LF_nul
expecting success of 0027.2168 'setup config for checkout attr=-text ident=ident aeol=lf core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2168 - setup config for checkout attr=-text ident=ident aeol=lf core.autocrlf=true
expecting success of 0027.2169 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2169 - setup LF checkout with -c core.eol=native
expecting success of 0027.2170 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2170 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.2171 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2171 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.2172 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2172 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.2173 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2173 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.2174 'ls-files --eol attr=-text ident aeol=lf core.autocrlf=true core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2174 - ls-files --eol attr=-text ident aeol=lf core.autocrlf=true core.eol=native
expecting success of 0027.2175 'checkout attr=-text ident aeol=lf core.autocrlf=true core.eol=native file=LF':
compare_ws_file eol_native_crlf_true_attr_-text_ LF crlf_false_attr__LF.txt
ok 2175 - checkout attr=-text ident aeol=lf core.autocrlf=true core.eol=native file=LF
expecting success of 0027.2176 'checkout attr=-text ident aeol=lf core.autocrlf=true core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_true_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 2176 - checkout attr=-text ident aeol=lf core.autocrlf=true core.eol=native file=CRLF
expecting success of 0027.2177 'checkout attr=-text ident aeol=lf core.autocrlf=true core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_true_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 2177 - checkout attr=-text ident aeol=lf core.autocrlf=true core.eol=native file=CRLF_mix_LF
expecting success of 0027.2178 'checkout attr=-text ident aeol=lf core.autocrlf=true core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_true_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2178 - checkout attr=-text ident aeol=lf core.autocrlf=true core.eol=native file=LF_mix_CR
expecting success of 0027.2179 'checkout attr=-text ident aeol=lf core.autocrlf=true core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_true_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 2179 - checkout attr=-text ident aeol=lf core.autocrlf=true core.eol=native file=LF_nul
expecting success of 0027.2180 'setup config for checkout attr=-text ident=ident aeol=crlf core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2180 - setup config for checkout attr=-text ident=ident aeol=crlf core.autocrlf=true
expecting success of 0027.2181 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2181 - setup LF checkout with -c core.eol=native
expecting success of 0027.2182 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2182 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.2183 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2183 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.2184 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2184 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.2185 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2185 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.2186 'ls-files --eol attr=-text ident aeol=crlf core.autocrlf=true core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2186 - ls-files --eol attr=-text ident aeol=crlf core.autocrlf=true core.eol=native
expecting success of 0027.2187 'checkout attr=-text ident aeol=crlf core.autocrlf=true core.eol=native file=LF':
compare_ws_file eol_native_crlf_true_attr_-text_ LF crlf_false_attr__LF.txt
ok 2187 - checkout attr=-text ident aeol=crlf core.autocrlf=true core.eol=native file=LF
expecting success of 0027.2188 'checkout attr=-text ident aeol=crlf core.autocrlf=true core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_true_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 2188 - checkout attr=-text ident aeol=crlf core.autocrlf=true core.eol=native file=CRLF
expecting success of 0027.2189 'checkout attr=-text ident aeol=crlf core.autocrlf=true core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_true_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 2189 - checkout attr=-text ident aeol=crlf core.autocrlf=true core.eol=native file=CRLF_mix_LF
expecting success of 0027.2190 'checkout attr=-text ident aeol=crlf core.autocrlf=true core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_true_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2190 - checkout attr=-text ident aeol=crlf core.autocrlf=true core.eol=native file=LF_mix_CR
expecting success of 0027.2191 'checkout attr=-text ident aeol=crlf core.autocrlf=true core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_true_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 2191 - checkout attr=-text ident aeol=crlf core.autocrlf=true core.eol=native file=LF_nul
expecting success of 0027.2192 'setup config for checkout attr=text ident=ident aeol=lf core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2192 - setup config for checkout attr=text ident=ident aeol=lf core.autocrlf=true
expecting success of 0027.2193 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2193 - setup LF checkout with -c core.eol=native
expecting success of 0027.2194 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2194 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.2195 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2195 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.2196 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2196 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.2197 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2197 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.2198 'ls-files --eol attr=text ident aeol=lf core.autocrlf=true core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2198 - ls-files --eol attr=text ident aeol=lf core.autocrlf=true core.eol=native
expecting success of 0027.2199 'checkout attr=text ident aeol=lf core.autocrlf=true core.eol=native file=LF':
compare_ws_file eol_native_crlf_true_attr_text_ LF crlf_false_attr__LF.txt
ok 2199 - checkout attr=text ident aeol=lf core.autocrlf=true core.eol=native file=LF
expecting success of 0027.2200 'checkout attr=text ident aeol=lf core.autocrlf=true core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_true_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 2200 - checkout attr=text ident aeol=lf core.autocrlf=true core.eol=native file=CRLF
expecting success of 0027.2201 'checkout attr=text ident aeol=lf core.autocrlf=true core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_true_attr_text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 2201 - checkout attr=text ident aeol=lf core.autocrlf=true core.eol=native file=CRLF_mix_LF
expecting success of 0027.2202 'checkout attr=text ident aeol=lf core.autocrlf=true core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_true_attr_text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2202 - checkout attr=text ident aeol=lf core.autocrlf=true core.eol=native file=LF_mix_CR
expecting success of 0027.2203 'checkout attr=text ident aeol=lf core.autocrlf=true core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_true_attr_text_ LF_nul crlf_false_attr__LF_nul.txt
ok 2203 - checkout attr=text ident aeol=lf core.autocrlf=true core.eol=native file=LF_nul
expecting success of 0027.2204 'setup config for checkout attr=text ident=ident aeol=crlf core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2204 - setup config for checkout attr=text ident=ident aeol=crlf core.autocrlf=true
expecting success of 0027.2205 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2205 - setup LF checkout with -c core.eol=native
expecting success of 0027.2206 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2206 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.2207 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2207 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.2208 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2208 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.2209 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2209 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.2210 'ls-files --eol attr=text ident aeol=crlf core.autocrlf=true core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2210 - ls-files --eol attr=text ident aeol=crlf core.autocrlf=true core.eol=native
expecting success of 0027.2211 'checkout attr=text ident aeol=crlf core.autocrlf=true core.eol=native file=LF':
compare_ws_file eol_native_crlf_true_attr_text_ CRLF crlf_false_attr__LF.txt
ok 2211 - checkout attr=text ident aeol=crlf core.autocrlf=true core.eol=native file=LF
expecting success of 0027.2212 'checkout attr=text ident aeol=crlf core.autocrlf=true core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_true_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 2212 - checkout attr=text ident aeol=crlf core.autocrlf=true core.eol=native file=CRLF
expecting success of 0027.2213 'checkout attr=text ident aeol=crlf core.autocrlf=true core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_true_attr_text_ CRLF crlf_false_attr__CRLF_mix_LF.txt
ok 2213 - checkout attr=text ident aeol=crlf core.autocrlf=true core.eol=native file=CRLF_mix_LF
expecting success of 0027.2214 'checkout attr=text ident aeol=crlf core.autocrlf=true core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_true_attr_text_ CRLF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2214 - checkout attr=text ident aeol=crlf core.autocrlf=true core.eol=native file=LF_mix_CR
expecting success of 0027.2215 'checkout attr=text ident aeol=crlf core.autocrlf=true core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_true_attr_text_ CRLF_nul crlf_false_attr__LF_nul.txt
ok 2215 - checkout attr=text ident aeol=crlf core.autocrlf=true core.eol=native file=LF_nul
expecting success of 0027.2216 'setup config for checkout attr=auto ident=ident aeol=lf core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2216 - setup config for checkout attr=auto ident=ident aeol=lf core.autocrlf=true
expecting success of 0027.2217 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2217 - setup LF checkout with -c core.eol=native
expecting success of 0027.2218 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2218 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.2219 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2219 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.2220 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2220 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.2221 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2221 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.2222 'ls-files --eol attr=auto ident aeol=lf core.autocrlf=true core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2222 - ls-files --eol attr=auto ident aeol=lf core.autocrlf=true core.eol=native
expecting success of 0027.2223 'checkout attr=auto ident aeol=lf core.autocrlf=true core.eol=native file=LF':
compare_ws_file eol_native_crlf_true_attr_auto_ LF crlf_false_attr__LF.txt
ok 2223 - checkout attr=auto ident aeol=lf core.autocrlf=true core.eol=native file=LF
expecting success of 0027.2224 'checkout attr=auto ident aeol=lf core.autocrlf=true core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_true_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 2224 - checkout attr=auto ident aeol=lf core.autocrlf=true core.eol=native file=CRLF
expecting success of 0027.2225 'checkout attr=auto ident aeol=lf core.autocrlf=true core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_true_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 2225 - checkout attr=auto ident aeol=lf core.autocrlf=true core.eol=native file=CRLF_mix_LF
expecting success of 0027.2226 'checkout attr=auto ident aeol=lf core.autocrlf=true core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_true_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2226 - checkout attr=auto ident aeol=lf core.autocrlf=true core.eol=native file=LF_mix_CR
expecting success of 0027.2227 'checkout attr=auto ident aeol=lf core.autocrlf=true core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_true_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 2227 - checkout attr=auto ident aeol=lf core.autocrlf=true core.eol=native file=LF_nul
expecting success of 0027.2228 'setup config for checkout attr=auto ident=ident aeol=crlf core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2228 - setup config for checkout attr=auto ident=ident aeol=crlf core.autocrlf=true
expecting success of 0027.2229 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2229 - setup LF checkout with -c core.eol=native
expecting success of 0027.2230 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2230 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.2231 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2231 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.2232 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2232 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.2233 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2233 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.2234 'ls-files --eol attr=auto ident aeol=crlf core.autocrlf=true core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2234 - ls-files --eol attr=auto ident aeol=crlf core.autocrlf=true core.eol=native
expecting success of 0027.2235 'checkout attr=auto ident aeol=crlf core.autocrlf=true core.eol=native file=LF':
compare_ws_file eol_native_crlf_true_attr_auto_ CRLF crlf_false_attr__LF.txt
ok 2235 - checkout attr=auto ident aeol=crlf core.autocrlf=true core.eol=native file=LF
expecting success of 0027.2236 'checkout attr=auto ident aeol=crlf core.autocrlf=true core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_true_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 2236 - checkout attr=auto ident aeol=crlf core.autocrlf=true core.eol=native file=CRLF
expecting success of 0027.2237 'checkout attr=auto ident aeol=crlf core.autocrlf=true core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_true_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 2237 - checkout attr=auto ident aeol=crlf core.autocrlf=true core.eol=native file=CRLF_mix_LF
expecting success of 0027.2238 'checkout attr=auto ident aeol=crlf core.autocrlf=true core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_true_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2238 - checkout attr=auto ident aeol=crlf core.autocrlf=true core.eol=native file=LF_mix_CR
expecting success of 0027.2239 'checkout attr=auto ident aeol=crlf core.autocrlf=true core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_true_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 2239 - checkout attr=auto ident aeol=crlf core.autocrlf=true core.eol=native file=LF_nul
expecting success of 0027.2240 'setup config for checkout attr=-text ident=ident aeol= core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2240 - setup config for checkout attr=-text ident=ident aeol= core.autocrlf=false
expecting success of 0027.2241 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2241 - setup LF checkout with -c core.eol=native
expecting success of 0027.2242 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2242 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.2243 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2243 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.2244 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2244 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.2245 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2245 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.2246 'ls-files --eol attr=-text ident aeol= core.autocrlf=false core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2246 - ls-files --eol attr=-text ident aeol= core.autocrlf=false core.eol=native
expecting success of 0027.2247 'checkout attr=-text ident aeol= core.autocrlf=false core.eol=native file=LF':
compare_ws_file eol_native_crlf_false_attr_-text_ LF crlf_false_attr__LF.txt
ok 2247 - checkout attr=-text ident aeol= core.autocrlf=false core.eol=native file=LF
expecting success of 0027.2248 'checkout attr=-text ident aeol= core.autocrlf=false core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_false_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 2248 - checkout attr=-text ident aeol= core.autocrlf=false core.eol=native file=CRLF
expecting success of 0027.2249 'checkout attr=-text ident aeol= core.autocrlf=false core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_false_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 2249 - checkout attr=-text ident aeol= core.autocrlf=false core.eol=native file=CRLF_mix_LF
expecting success of 0027.2250 'checkout attr=-text ident aeol= core.autocrlf=false core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_false_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2250 - checkout attr=-text ident aeol= core.autocrlf=false core.eol=native file=LF_mix_CR
expecting success of 0027.2251 'checkout attr=-text ident aeol= core.autocrlf=false core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_false_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 2251 - checkout attr=-text ident aeol= core.autocrlf=false core.eol=native file=LF_nul
expecting success of 0027.2252 'setup config for checkout attr=-text ident=ident aeol=lf core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2252 - setup config for checkout attr=-text ident=ident aeol=lf core.autocrlf=false
expecting success of 0027.2253 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2253 - setup LF checkout with -c core.eol=native
expecting success of 0027.2254 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2254 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.2255 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2255 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.2256 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2256 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.2257 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2257 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.2258 'ls-files --eol attr=-text ident aeol=lf core.autocrlf=false core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2258 - ls-files --eol attr=-text ident aeol=lf core.autocrlf=false core.eol=native
expecting success of 0027.2259 'checkout attr=-text ident aeol=lf core.autocrlf=false core.eol=native file=LF':
compare_ws_file eol_native_crlf_false_attr_-text_ LF crlf_false_attr__LF.txt
ok 2259 - checkout attr=-text ident aeol=lf core.autocrlf=false core.eol=native file=LF
expecting success of 0027.2260 'checkout attr=-text ident aeol=lf core.autocrlf=false core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_false_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 2260 - checkout attr=-text ident aeol=lf core.autocrlf=false core.eol=native file=CRLF
expecting success of 0027.2261 'checkout attr=-text ident aeol=lf core.autocrlf=false core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_false_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 2261 - checkout attr=-text ident aeol=lf core.autocrlf=false core.eol=native file=CRLF_mix_LF
expecting success of 0027.2262 'checkout attr=-text ident aeol=lf core.autocrlf=false core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_false_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2262 - checkout attr=-text ident aeol=lf core.autocrlf=false core.eol=native file=LF_mix_CR
expecting success of 0027.2263 'checkout attr=-text ident aeol=lf core.autocrlf=false core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_false_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 2263 - checkout attr=-text ident aeol=lf core.autocrlf=false core.eol=native file=LF_nul
expecting success of 0027.2264 'setup config for checkout attr=-text ident=ident aeol=crlf core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2264 - setup config for checkout attr=-text ident=ident aeol=crlf core.autocrlf=false
expecting success of 0027.2265 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2265 - setup LF checkout with -c core.eol=native
expecting success of 0027.2266 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2266 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.2267 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2267 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.2268 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2268 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.2269 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2269 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.2270 'ls-files --eol attr=-text ident aeol=crlf core.autocrlf=false core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2270 - ls-files --eol attr=-text ident aeol=crlf core.autocrlf=false core.eol=native
expecting success of 0027.2271 'checkout attr=-text ident aeol=crlf core.autocrlf=false core.eol=native file=LF':
compare_ws_file eol_native_crlf_false_attr_-text_ LF crlf_false_attr__LF.txt
ok 2271 - checkout attr=-text ident aeol=crlf core.autocrlf=false core.eol=native file=LF
expecting success of 0027.2272 'checkout attr=-text ident aeol=crlf core.autocrlf=false core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_false_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 2272 - checkout attr=-text ident aeol=crlf core.autocrlf=false core.eol=native file=CRLF
expecting success of 0027.2273 'checkout attr=-text ident aeol=crlf core.autocrlf=false core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_false_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 2273 - checkout attr=-text ident aeol=crlf core.autocrlf=false core.eol=native file=CRLF_mix_LF
expecting success of 0027.2274 'checkout attr=-text ident aeol=crlf core.autocrlf=false core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_false_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2274 - checkout attr=-text ident aeol=crlf core.autocrlf=false core.eol=native file=LF_mix_CR
expecting success of 0027.2275 'checkout attr=-text ident aeol=crlf core.autocrlf=false core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_false_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 2275 - checkout attr=-text ident aeol=crlf core.autocrlf=false core.eol=native file=LF_nul
expecting success of 0027.2276 'setup config for checkout attr=text ident=ident aeol=lf core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2276 - setup config for checkout attr=text ident=ident aeol=lf core.autocrlf=false
expecting success of 0027.2277 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2277 - setup LF checkout with -c core.eol=native
expecting success of 0027.2278 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2278 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.2279 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2279 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.2280 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2280 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.2281 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2281 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.2282 'ls-files --eol attr=text ident aeol=lf core.autocrlf=false core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2282 - ls-files --eol attr=text ident aeol=lf core.autocrlf=false core.eol=native
expecting success of 0027.2283 'checkout attr=text ident aeol=lf core.autocrlf=false core.eol=native file=LF':
compare_ws_file eol_native_crlf_false_attr_text_ LF crlf_false_attr__LF.txt
ok 2283 - checkout attr=text ident aeol=lf core.autocrlf=false core.eol=native file=LF
expecting success of 0027.2284 'checkout attr=text ident aeol=lf core.autocrlf=false core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_false_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 2284 - checkout attr=text ident aeol=lf core.autocrlf=false core.eol=native file=CRLF
expecting success of 0027.2285 'checkout attr=text ident aeol=lf core.autocrlf=false core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_false_attr_text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 2285 - checkout attr=text ident aeol=lf core.autocrlf=false core.eol=native file=CRLF_mix_LF
expecting success of 0027.2286 'checkout attr=text ident aeol=lf core.autocrlf=false core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_false_attr_text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2286 - checkout attr=text ident aeol=lf core.autocrlf=false core.eol=native file=LF_mix_CR
expecting success of 0027.2287 'checkout attr=text ident aeol=lf core.autocrlf=false core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_false_attr_text_ LF_nul crlf_false_attr__LF_nul.txt
ok 2287 - checkout attr=text ident aeol=lf core.autocrlf=false core.eol=native file=LF_nul
expecting success of 0027.2288 'setup config for checkout attr=text ident=ident aeol=crlf core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2288 - setup config for checkout attr=text ident=ident aeol=crlf core.autocrlf=false
expecting success of 0027.2289 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2289 - setup LF checkout with -c core.eol=native
expecting success of 0027.2290 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2290 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.2291 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2291 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.2292 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2292 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.2293 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2293 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.2294 'ls-files --eol attr=text ident aeol=crlf core.autocrlf=false core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2294 - ls-files --eol attr=text ident aeol=crlf core.autocrlf=false core.eol=native
expecting success of 0027.2295 'checkout attr=text ident aeol=crlf core.autocrlf=false core.eol=native file=LF':
compare_ws_file eol_native_crlf_false_attr_text_ CRLF crlf_false_attr__LF.txt
ok 2295 - checkout attr=text ident aeol=crlf core.autocrlf=false core.eol=native file=LF
expecting success of 0027.2296 'checkout attr=text ident aeol=crlf core.autocrlf=false core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_false_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 2296 - checkout attr=text ident aeol=crlf core.autocrlf=false core.eol=native file=CRLF
expecting success of 0027.2297 'checkout attr=text ident aeol=crlf core.autocrlf=false core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_false_attr_text_ CRLF crlf_false_attr__CRLF_mix_LF.txt
ok 2297 - checkout attr=text ident aeol=crlf core.autocrlf=false core.eol=native file=CRLF_mix_LF
expecting success of 0027.2298 'checkout attr=text ident aeol=crlf core.autocrlf=false core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_false_attr_text_ CRLF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2298 - checkout attr=text ident aeol=crlf core.autocrlf=false core.eol=native file=LF_mix_CR
expecting success of 0027.2299 'checkout attr=text ident aeol=crlf core.autocrlf=false core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_false_attr_text_ CRLF_nul crlf_false_attr__LF_nul.txt
ok 2299 - checkout attr=text ident aeol=crlf core.autocrlf=false core.eol=native file=LF_nul
expecting success of 0027.2300 'setup config for checkout attr=auto ident=ident aeol=lf core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2300 - setup config for checkout attr=auto ident=ident aeol=lf core.autocrlf=false
expecting success of 0027.2301 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2301 - setup LF checkout with -c core.eol=native
expecting success of 0027.2302 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2302 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.2303 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2303 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.2304 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2304 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.2305 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2305 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.2306 'ls-files --eol attr=auto ident aeol=lf core.autocrlf=false core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2306 - ls-files --eol attr=auto ident aeol=lf core.autocrlf=false core.eol=native
expecting success of 0027.2307 'checkout attr=auto ident aeol=lf core.autocrlf=false core.eol=native file=LF':
compare_ws_file eol_native_crlf_false_attr_auto_ LF crlf_false_attr__LF.txt
ok 2307 - checkout attr=auto ident aeol=lf core.autocrlf=false core.eol=native file=LF
expecting success of 0027.2308 'checkout attr=auto ident aeol=lf core.autocrlf=false core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_false_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 2308 - checkout attr=auto ident aeol=lf core.autocrlf=false core.eol=native file=CRLF
expecting success of 0027.2309 'checkout attr=auto ident aeol=lf core.autocrlf=false core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_false_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 2309 - checkout attr=auto ident aeol=lf core.autocrlf=false core.eol=native file=CRLF_mix_LF
expecting success of 0027.2310 'checkout attr=auto ident aeol=lf core.autocrlf=false core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_false_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2310 - checkout attr=auto ident aeol=lf core.autocrlf=false core.eol=native file=LF_mix_CR
expecting success of 0027.2311 'checkout attr=auto ident aeol=lf core.autocrlf=false core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_false_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 2311 - checkout attr=auto ident aeol=lf core.autocrlf=false core.eol=native file=LF_nul
expecting success of 0027.2312 'setup config for checkout attr=auto ident=ident aeol=crlf core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2312 - setup config for checkout attr=auto ident=ident aeol=crlf core.autocrlf=false
expecting success of 0027.2313 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2313 - setup LF checkout with -c core.eol=native
expecting success of 0027.2314 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2314 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.2315 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2315 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.2316 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2316 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.2317 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2317 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.2318 'ls-files --eol attr=auto ident aeol=crlf core.autocrlf=false core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2318 - ls-files --eol attr=auto ident aeol=crlf core.autocrlf=false core.eol=native
expecting success of 0027.2319 'checkout attr=auto ident aeol=crlf core.autocrlf=false core.eol=native file=LF':
compare_ws_file eol_native_crlf_false_attr_auto_ CRLF crlf_false_attr__LF.txt
ok 2319 - checkout attr=auto ident aeol=crlf core.autocrlf=false core.eol=native file=LF
expecting success of 0027.2320 'checkout attr=auto ident aeol=crlf core.autocrlf=false core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_false_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 2320 - checkout attr=auto ident aeol=crlf core.autocrlf=false core.eol=native file=CRLF
expecting success of 0027.2321 'checkout attr=auto ident aeol=crlf core.autocrlf=false core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_false_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 2321 - checkout attr=auto ident aeol=crlf core.autocrlf=false core.eol=native file=CRLF_mix_LF
expecting success of 0027.2322 'checkout attr=auto ident aeol=crlf core.autocrlf=false core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_false_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2322 - checkout attr=auto ident aeol=crlf core.autocrlf=false core.eol=native file=LF_mix_CR
expecting success of 0027.2323 'checkout attr=auto ident aeol=crlf core.autocrlf=false core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_false_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 2323 - checkout attr=auto ident aeol=crlf core.autocrlf=false core.eol=native file=LF_nul
expecting success of 0027.2324 'setup config for checkout attr=-text ident=ident aeol= core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2324 - setup config for checkout attr=-text ident=ident aeol= core.autocrlf=input
expecting success of 0027.2325 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2325 - setup LF checkout with -c core.eol=native
expecting success of 0027.2326 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2326 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.2327 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2327 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.2328 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2328 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.2329 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2329 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.2330 'ls-files --eol attr=-text ident aeol= core.autocrlf=input core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2330 - ls-files --eol attr=-text ident aeol= core.autocrlf=input core.eol=native
expecting success of 0027.2331 'checkout attr=-text ident aeol= core.autocrlf=input core.eol=native file=LF':
compare_ws_file eol_native_crlf_input_attr_-text_ LF crlf_false_attr__LF.txt
ok 2331 - checkout attr=-text ident aeol= core.autocrlf=input core.eol=native file=LF
expecting success of 0027.2332 'checkout attr=-text ident aeol= core.autocrlf=input core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_input_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 2332 - checkout attr=-text ident aeol= core.autocrlf=input core.eol=native file=CRLF
expecting success of 0027.2333 'checkout attr=-text ident aeol= core.autocrlf=input core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_input_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 2333 - checkout attr=-text ident aeol= core.autocrlf=input core.eol=native file=CRLF_mix_LF
expecting success of 0027.2334 'checkout attr=-text ident aeol= core.autocrlf=input core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_input_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2334 - checkout attr=-text ident aeol= core.autocrlf=input core.eol=native file=LF_mix_CR
expecting success of 0027.2335 'checkout attr=-text ident aeol= core.autocrlf=input core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_input_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 2335 - checkout attr=-text ident aeol= core.autocrlf=input core.eol=native file=LF_nul
expecting success of 0027.2336 'setup config for checkout attr=-text ident=ident aeol=lf core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2336 - setup config for checkout attr=-text ident=ident aeol=lf core.autocrlf=input
expecting success of 0027.2337 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2337 - setup LF checkout with -c core.eol=native
expecting success of 0027.2338 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2338 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.2339 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2339 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.2340 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2340 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.2341 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2341 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.2342 'ls-files --eol attr=-text ident aeol=lf core.autocrlf=input core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2342 - ls-files --eol attr=-text ident aeol=lf core.autocrlf=input core.eol=native
expecting success of 0027.2343 'checkout attr=-text ident aeol=lf core.autocrlf=input core.eol=native file=LF':
compare_ws_file eol_native_crlf_input_attr_-text_ LF crlf_false_attr__LF.txt
ok 2343 - checkout attr=-text ident aeol=lf core.autocrlf=input core.eol=native file=LF
expecting success of 0027.2344 'checkout attr=-text ident aeol=lf core.autocrlf=input core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_input_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 2344 - checkout attr=-text ident aeol=lf core.autocrlf=input core.eol=native file=CRLF
expecting success of 0027.2345 'checkout attr=-text ident aeol=lf core.autocrlf=input core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_input_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 2345 - checkout attr=-text ident aeol=lf core.autocrlf=input core.eol=native file=CRLF_mix_LF
expecting success of 0027.2346 'checkout attr=-text ident aeol=lf core.autocrlf=input core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_input_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2346 - checkout attr=-text ident aeol=lf core.autocrlf=input core.eol=native file=LF_mix_CR
expecting success of 0027.2347 'checkout attr=-text ident aeol=lf core.autocrlf=input core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_input_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 2347 - checkout attr=-text ident aeol=lf core.autocrlf=input core.eol=native file=LF_nul
expecting success of 0027.2348 'setup config for checkout attr=-text ident=ident aeol=crlf core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2348 - setup config for checkout attr=-text ident=ident aeol=crlf core.autocrlf=input
expecting success of 0027.2349 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2349 - setup LF checkout with -c core.eol=native
expecting success of 0027.2350 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2350 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.2351 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2351 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.2352 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2352 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.2353 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2353 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.2354 'ls-files --eol attr=-text ident aeol=crlf core.autocrlf=input core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2354 - ls-files --eol attr=-text ident aeol=crlf core.autocrlf=input core.eol=native
expecting success of 0027.2355 'checkout attr=-text ident aeol=crlf core.autocrlf=input core.eol=native file=LF':
compare_ws_file eol_native_crlf_input_attr_-text_ LF crlf_false_attr__LF.txt
ok 2355 - checkout attr=-text ident aeol=crlf core.autocrlf=input core.eol=native file=LF
expecting success of 0027.2356 'checkout attr=-text ident aeol=crlf core.autocrlf=input core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_input_attr_-text_ CRLF crlf_false_attr__CRLF.txt
ok 2356 - checkout attr=-text ident aeol=crlf core.autocrlf=input core.eol=native file=CRLF
expecting success of 0027.2357 'checkout attr=-text ident aeol=crlf core.autocrlf=input core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_input_attr_-text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 2357 - checkout attr=-text ident aeol=crlf core.autocrlf=input core.eol=native file=CRLF_mix_LF
expecting success of 0027.2358 'checkout attr=-text ident aeol=crlf core.autocrlf=input core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_input_attr_-text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2358 - checkout attr=-text ident aeol=crlf core.autocrlf=input core.eol=native file=LF_mix_CR
expecting success of 0027.2359 'checkout attr=-text ident aeol=crlf core.autocrlf=input core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_input_attr_-text_ LF_nul crlf_false_attr__LF_nul.txt
ok 2359 - checkout attr=-text ident aeol=crlf core.autocrlf=input core.eol=native file=LF_nul
expecting success of 0027.2360 'setup config for checkout attr=text ident=ident aeol=lf core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2360 - setup config for checkout attr=text ident=ident aeol=lf core.autocrlf=input
expecting success of 0027.2361 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2361 - setup LF checkout with -c core.eol=native
expecting success of 0027.2362 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2362 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.2363 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2363 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.2364 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2364 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.2365 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2365 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.2366 'ls-files --eol attr=text ident aeol=lf core.autocrlf=input core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2366 - ls-files --eol attr=text ident aeol=lf core.autocrlf=input core.eol=native
expecting success of 0027.2367 'checkout attr=text ident aeol=lf core.autocrlf=input core.eol=native file=LF':
compare_ws_file eol_native_crlf_input_attr_text_ LF crlf_false_attr__LF.txt
ok 2367 - checkout attr=text ident aeol=lf core.autocrlf=input core.eol=native file=LF
expecting success of 0027.2368 'checkout attr=text ident aeol=lf core.autocrlf=input core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_input_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 2368 - checkout attr=text ident aeol=lf core.autocrlf=input core.eol=native file=CRLF
expecting success of 0027.2369 'checkout attr=text ident aeol=lf core.autocrlf=input core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_input_attr_text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 2369 - checkout attr=text ident aeol=lf core.autocrlf=input core.eol=native file=CRLF_mix_LF
expecting success of 0027.2370 'checkout attr=text ident aeol=lf core.autocrlf=input core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_input_attr_text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2370 - checkout attr=text ident aeol=lf core.autocrlf=input core.eol=native file=LF_mix_CR
expecting success of 0027.2371 'checkout attr=text ident aeol=lf core.autocrlf=input core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_input_attr_text_ LF_nul crlf_false_attr__LF_nul.txt
ok 2371 - checkout attr=text ident aeol=lf core.autocrlf=input core.eol=native file=LF_nul
expecting success of 0027.2372 'setup config for checkout attr=text ident=ident aeol=crlf core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2372 - setup config for checkout attr=text ident=ident aeol=crlf core.autocrlf=input
expecting success of 0027.2373 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2373 - setup LF checkout with -c core.eol=native
expecting success of 0027.2374 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2374 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.2375 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2375 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.2376 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2376 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.2377 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2377 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.2378 'ls-files --eol attr=text ident aeol=crlf core.autocrlf=input core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2378 - ls-files --eol attr=text ident aeol=crlf core.autocrlf=input core.eol=native
expecting success of 0027.2379 'checkout attr=text ident aeol=crlf core.autocrlf=input core.eol=native file=LF':
compare_ws_file eol_native_crlf_input_attr_text_ CRLF crlf_false_attr__LF.txt
ok 2379 - checkout attr=text ident aeol=crlf core.autocrlf=input core.eol=native file=LF
expecting success of 0027.2380 'checkout attr=text ident aeol=crlf core.autocrlf=input core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_input_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 2380 - checkout attr=text ident aeol=crlf core.autocrlf=input core.eol=native file=CRLF
expecting success of 0027.2381 'checkout attr=text ident aeol=crlf core.autocrlf=input core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_input_attr_text_ CRLF crlf_false_attr__CRLF_mix_LF.txt
ok 2381 - checkout attr=text ident aeol=crlf core.autocrlf=input core.eol=native file=CRLF_mix_LF
expecting success of 0027.2382 'checkout attr=text ident aeol=crlf core.autocrlf=input core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_input_attr_text_ CRLF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2382 - checkout attr=text ident aeol=crlf core.autocrlf=input core.eol=native file=LF_mix_CR
expecting success of 0027.2383 'checkout attr=text ident aeol=crlf core.autocrlf=input core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_input_attr_text_ CRLF_nul crlf_false_attr__LF_nul.txt
ok 2383 - checkout attr=text ident aeol=crlf core.autocrlf=input core.eol=native file=LF_nul
expecting success of 0027.2384 'setup config for checkout attr=auto ident=ident aeol=lf core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2384 - setup config for checkout attr=auto ident=ident aeol=lf core.autocrlf=input
expecting success of 0027.2385 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2385 - setup LF checkout with -c core.eol=native
expecting success of 0027.2386 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2386 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.2387 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2387 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.2388 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2388 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.2389 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2389 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.2390 'ls-files --eol attr=auto ident aeol=lf core.autocrlf=input core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2390 - ls-files --eol attr=auto ident aeol=lf core.autocrlf=input core.eol=native
expecting success of 0027.2391 'checkout attr=auto ident aeol=lf core.autocrlf=input core.eol=native file=LF':
compare_ws_file eol_native_crlf_input_attr_auto_ LF crlf_false_attr__LF.txt
ok 2391 - checkout attr=auto ident aeol=lf core.autocrlf=input core.eol=native file=LF
expecting success of 0027.2392 'checkout attr=auto ident aeol=lf core.autocrlf=input core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_input_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 2392 - checkout attr=auto ident aeol=lf core.autocrlf=input core.eol=native file=CRLF
expecting success of 0027.2393 'checkout attr=auto ident aeol=lf core.autocrlf=input core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_input_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 2393 - checkout attr=auto ident aeol=lf core.autocrlf=input core.eol=native file=CRLF_mix_LF
expecting success of 0027.2394 'checkout attr=auto ident aeol=lf core.autocrlf=input core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_input_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2394 - checkout attr=auto ident aeol=lf core.autocrlf=input core.eol=native file=LF_mix_CR
expecting success of 0027.2395 'checkout attr=auto ident aeol=lf core.autocrlf=input core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_input_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 2395 - checkout attr=auto ident aeol=lf core.autocrlf=input core.eol=native file=LF_nul
expecting success of 0027.2396 'setup config for checkout attr=auto ident=ident aeol=crlf core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2396 - setup config for checkout attr=auto ident=ident aeol=crlf core.autocrlf=input
expecting success of 0027.2397 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2397 - setup LF checkout with -c core.eol=native
expecting success of 0027.2398 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2398 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.2399 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2399 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.2400 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2400 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.2401 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2401 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.2402 'ls-files --eol attr=auto ident aeol=crlf core.autocrlf=input core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2402 - ls-files --eol attr=auto ident aeol=crlf core.autocrlf=input core.eol=native
expecting success of 0027.2403 'checkout attr=auto ident aeol=crlf core.autocrlf=input core.eol=native file=LF':
compare_ws_file eol_native_crlf_input_attr_auto_ CRLF crlf_false_attr__LF.txt
ok 2403 - checkout attr=auto ident aeol=crlf core.autocrlf=input core.eol=native file=LF
expecting success of 0027.2404 'checkout attr=auto ident aeol=crlf core.autocrlf=input core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_input_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 2404 - checkout attr=auto ident aeol=crlf core.autocrlf=input core.eol=native file=CRLF
expecting success of 0027.2405 'checkout attr=auto ident aeol=crlf core.autocrlf=input core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_input_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 2405 - checkout attr=auto ident aeol=crlf core.autocrlf=input core.eol=native file=CRLF_mix_LF
expecting success of 0027.2406 'checkout attr=auto ident aeol=crlf core.autocrlf=input core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_input_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2406 - checkout attr=auto ident aeol=crlf core.autocrlf=input core.eol=native file=LF_mix_CR
expecting success of 0027.2407 'checkout attr=auto ident aeol=crlf core.autocrlf=input core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_input_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 2407 - checkout attr=auto ident aeol=crlf core.autocrlf=input core.eol=native file=LF_nul
expecting success of 0027.2408 'setup config for checkout attr= ident=ident aeol= core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2408 - setup config for checkout attr= ident=ident aeol= core.autocrlf=false
expecting success of 0027.2409 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2409 - setup LF checkout with -c core.eol=native
expecting success of 0027.2410 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2410 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.2411 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2411 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.2412 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2412 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.2413 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2413 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.2414 'ls-files --eol attr= ident aeol= core.autocrlf=false core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2414 - ls-files --eol attr= ident aeol= core.autocrlf=false core.eol=native
expecting success of 0027.2415 'checkout attr= ident aeol= core.autocrlf=false core.eol=native file=LF':
compare_ws_file eol_native_crlf_false_attr__ LF crlf_false_attr__LF.txt
ok 2415 - checkout attr= ident aeol= core.autocrlf=false core.eol=native file=LF
expecting success of 0027.2416 'checkout attr= ident aeol= core.autocrlf=false core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_false_attr__ CRLF crlf_false_attr__CRLF.txt
ok 2416 - checkout attr= ident aeol= core.autocrlf=false core.eol=native file=CRLF
expecting success of 0027.2417 'checkout attr= ident aeol= core.autocrlf=false core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_false_attr__ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 2417 - checkout attr= ident aeol= core.autocrlf=false core.eol=native file=CRLF_mix_LF
expecting success of 0027.2418 'checkout attr= ident aeol= core.autocrlf=false core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_false_attr__ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2418 - checkout attr= ident aeol= core.autocrlf=false core.eol=native file=LF_mix_CR
expecting success of 0027.2419 'checkout attr= ident aeol= core.autocrlf=false core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_false_attr__ LF_nul crlf_false_attr__LF_nul.txt
ok 2419 - checkout attr= ident aeol= core.autocrlf=false core.eol=native file=LF_nul
expecting success of 0027.2420 'setup config for checkout attr= ident=ident aeol= core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2420 - setup config for checkout attr= ident=ident aeol= core.autocrlf=true
expecting success of 0027.2421 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2421 - setup LF checkout with -c core.eol=native
expecting success of 0027.2422 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2422 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.2423 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2423 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.2424 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2424 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.2425 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2425 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.2426 'ls-files --eol attr= ident aeol= core.autocrlf=true core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2426 - ls-files --eol attr= ident aeol= core.autocrlf=true core.eol=native
expecting success of 0027.2427 'checkout attr= ident aeol= core.autocrlf=true core.eol=native file=LF':
compare_ws_file eol_native_crlf_true_attr__ CRLF crlf_false_attr__LF.txt
ok 2427 - checkout attr= ident aeol= core.autocrlf=true core.eol=native file=LF
expecting success of 0027.2428 'checkout attr= ident aeol= core.autocrlf=true core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_true_attr__ CRLF crlf_false_attr__CRLF.txt
ok 2428 - checkout attr= ident aeol= core.autocrlf=true core.eol=native file=CRLF
expecting success of 0027.2429 'checkout attr= ident aeol= core.autocrlf=true core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_true_attr__ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 2429 - checkout attr= ident aeol= core.autocrlf=true core.eol=native file=CRLF_mix_LF
expecting success of 0027.2430 'checkout attr= ident aeol= core.autocrlf=true core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_true_attr__ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2430 - checkout attr= ident aeol= core.autocrlf=true core.eol=native file=LF_mix_CR
expecting success of 0027.2431 'checkout attr= ident aeol= core.autocrlf=true core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_true_attr__ LF_nul crlf_false_attr__LF_nul.txt
ok 2431 - checkout attr= ident aeol= core.autocrlf=true core.eol=native file=LF_nul
expecting success of 0027.2432 'setup config for checkout attr=auto ident=ident aeol= core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2432 - setup config for checkout attr=auto ident=ident aeol= core.autocrlf=true
expecting success of 0027.2433 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2433 - setup LF checkout with -c core.eol=native
expecting success of 0027.2434 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2434 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.2435 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2435 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.2436 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2436 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.2437 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2437 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.2438 'ls-files --eol attr=auto ident aeol= core.autocrlf=true core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2438 - ls-files --eol attr=auto ident aeol= core.autocrlf=true core.eol=native
expecting success of 0027.2439 'checkout attr=auto ident aeol= core.autocrlf=true core.eol=native file=LF':
compare_ws_file eol_native_crlf_true_attr_auto_ CRLF crlf_false_attr__LF.txt
ok 2439 - checkout attr=auto ident aeol= core.autocrlf=true core.eol=native file=LF
expecting success of 0027.2440 'checkout attr=auto ident aeol= core.autocrlf=true core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_true_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 2440 - checkout attr=auto ident aeol= core.autocrlf=true core.eol=native file=CRLF
expecting success of 0027.2441 'checkout attr=auto ident aeol= core.autocrlf=true core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_true_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 2441 - checkout attr=auto ident aeol= core.autocrlf=true core.eol=native file=CRLF_mix_LF
expecting success of 0027.2442 'checkout attr=auto ident aeol= core.autocrlf=true core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_true_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2442 - checkout attr=auto ident aeol= core.autocrlf=true core.eol=native file=LF_mix_CR
expecting success of 0027.2443 'checkout attr=auto ident aeol= core.autocrlf=true core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_true_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 2443 - checkout attr=auto ident aeol= core.autocrlf=true core.eol=native file=LF_nul
expecting success of 0027.2444 'setup config for checkout attr=text ident=ident aeol= core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2444 - setup config for checkout attr=text ident=ident aeol= core.autocrlf=true
expecting success of 0027.2445 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2445 - setup LF checkout with -c core.eol=native
expecting success of 0027.2446 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2446 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.2447 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2447 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.2448 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2448 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.2449 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2449 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.2450 'ls-files --eol attr=text ident aeol= core.autocrlf=true core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2450 - ls-files --eol attr=text ident aeol= core.autocrlf=true core.eol=native
expecting success of 0027.2451 'checkout attr=text ident aeol= core.autocrlf=true core.eol=native file=LF':
compare_ws_file eol_native_crlf_true_attr_text_ CRLF crlf_false_attr__LF.txt
ok 2451 - checkout attr=text ident aeol= core.autocrlf=true core.eol=native file=LF
expecting success of 0027.2452 'checkout attr=text ident aeol= core.autocrlf=true core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_true_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 2452 - checkout attr=text ident aeol= core.autocrlf=true core.eol=native file=CRLF
expecting success of 0027.2453 'checkout attr=text ident aeol= core.autocrlf=true core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_true_attr_text_ CRLF crlf_false_attr__CRLF_mix_LF.txt
ok 2453 - checkout attr=text ident aeol= core.autocrlf=true core.eol=native file=CRLF_mix_LF
expecting success of 0027.2454 'checkout attr=text ident aeol= core.autocrlf=true core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_true_attr_text_ CRLF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2454 - checkout attr=text ident aeol= core.autocrlf=true core.eol=native file=LF_mix_CR
expecting success of 0027.2455 'checkout attr=text ident aeol= core.autocrlf=true core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_true_attr_text_ CRLF_nul crlf_false_attr__LF_nul.txt
ok 2455 - checkout attr=text ident aeol= core.autocrlf=true core.eol=native file=LF_nul
expecting success of 0027.2456 'setup config for checkout attr=text ident=ident aeol= core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2456 - setup config for checkout attr=text ident=ident aeol= core.autocrlf=input
expecting success of 0027.2457 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2457 - setup LF checkout with -c core.eol=native
expecting success of 0027.2458 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2458 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.2459 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2459 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.2460 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2460 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.2461 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2461 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.2462 'ls-files --eol attr=text ident aeol= core.autocrlf=input core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2462 - ls-files --eol attr=text ident aeol= core.autocrlf=input core.eol=native
expecting success of 0027.2463 'checkout attr=text ident aeol= core.autocrlf=input core.eol=native file=LF':
compare_ws_file eol_native_crlf_input_attr_text_ LF crlf_false_attr__LF.txt
ok 2463 - checkout attr=text ident aeol= core.autocrlf=input core.eol=native file=LF
expecting success of 0027.2464 'checkout attr=text ident aeol= core.autocrlf=input core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_input_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 2464 - checkout attr=text ident aeol= core.autocrlf=input core.eol=native file=CRLF
expecting success of 0027.2465 'checkout attr=text ident aeol= core.autocrlf=input core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_input_attr_text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 2465 - checkout attr=text ident aeol= core.autocrlf=input core.eol=native file=CRLF_mix_LF
expecting success of 0027.2466 'checkout attr=text ident aeol= core.autocrlf=input core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_input_attr_text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2466 - checkout attr=text ident aeol= core.autocrlf=input core.eol=native file=LF_mix_CR
expecting success of 0027.2467 'checkout attr=text ident aeol= core.autocrlf=input core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_input_attr_text_ LF_nul crlf_false_attr__LF_nul.txt
ok 2467 - checkout attr=text ident aeol= core.autocrlf=input core.eol=native file=LF_nul
expecting success of 0027.2468 'setup config for checkout attr=auto ident=ident aeol= core.autocrlf=input':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2468 - setup config for checkout attr=auto ident=ident aeol= core.autocrlf=input
expecting success of 0027.2469 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2469 - setup LF checkout with -c core.eol=native
expecting success of 0027.2470 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2470 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.2471 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2471 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.2472 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2472 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.2473 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2473 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.2474 'ls-files --eol attr=auto ident aeol= core.autocrlf=input core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2474 - ls-files --eol attr=auto ident aeol= core.autocrlf=input core.eol=native
expecting success of 0027.2475 'checkout attr=auto ident aeol= core.autocrlf=input core.eol=native file=LF':
compare_ws_file eol_native_crlf_input_attr_auto_ LF crlf_false_attr__LF.txt
ok 2475 - checkout attr=auto ident aeol= core.autocrlf=input core.eol=native file=LF
expecting success of 0027.2476 'checkout attr=auto ident aeol= core.autocrlf=input core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_input_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 2476 - checkout attr=auto ident aeol= core.autocrlf=input core.eol=native file=CRLF
expecting success of 0027.2477 'checkout attr=auto ident aeol= core.autocrlf=input core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_input_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 2477 - checkout attr=auto ident aeol= core.autocrlf=input core.eol=native file=CRLF_mix_LF
expecting success of 0027.2478 'checkout attr=auto ident aeol= core.autocrlf=input core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_input_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2478 - checkout attr=auto ident aeol= core.autocrlf=input core.eol=native file=LF_mix_CR
expecting success of 0027.2479 'checkout attr=auto ident aeol= core.autocrlf=input core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_input_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 2479 - checkout attr=auto ident aeol= core.autocrlf=input core.eol=native file=LF_nul
expecting success of 0027.2480 'setup config for checkout attr=text ident=ident aeol= core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2480 - setup config for checkout attr=text ident=ident aeol= core.autocrlf=false
expecting success of 0027.2481 'setup LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2481 - setup LF checkout with -c core.eol=crlf
expecting success of 0027.2482 'setup CRLF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2482 - setup CRLF checkout with -c core.eol=crlf
expecting success of 0027.2483 'setup LF_mix_CR checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2483 - setup LF_mix_CR checkout with -c core.eol=crlf
expecting success of 0027.2484 'setup CRLF_mix_LF checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2484 - setup CRLF_mix_LF checkout with -c core.eol=crlf
expecting success of 0027.2485 'setup LF_nul checkout with -c core.eol=crlf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2485 - setup LF_nul checkout with -c core.eol=crlf
expecting success of 0027.2486 'ls-files --eol attr=text ident aeol= core.autocrlf=false core.eol=crlf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2486 - ls-files --eol attr=text ident aeol= core.autocrlf=false core.eol=crlf
expecting success of 0027.2487 'checkout attr=text ident aeol= core.autocrlf=false core.eol=crlf file=LF':
compare_ws_file eol_crlf_crlf_false_attr_text_ CRLF crlf_false_attr__LF.txt
ok 2487 - checkout attr=text ident aeol= core.autocrlf=false core.eol=crlf file=LF
expecting success of 0027.2488 'checkout attr=text ident aeol= core.autocrlf=false core.eol=crlf file=CRLF':
compare_ws_file eol_crlf_crlf_false_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 2488 - checkout attr=text ident aeol= core.autocrlf=false core.eol=crlf file=CRLF
expecting success of 0027.2489 'checkout attr=text ident aeol= core.autocrlf=false core.eol=crlf file=CRLF_mix_LF':
compare_ws_file eol_crlf_crlf_false_attr_text_ CRLF crlf_false_attr__CRLF_mix_LF.txt
ok 2489 - checkout attr=text ident aeol= core.autocrlf=false core.eol=crlf file=CRLF_mix_LF
expecting success of 0027.2490 'checkout attr=text ident aeol= core.autocrlf=false core.eol=crlf file=LF_mix_CR':
compare_ws_file eol_crlf_crlf_false_attr_text_ CRLF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2490 - checkout attr=text ident aeol= core.autocrlf=false core.eol=crlf file=LF_mix_CR
expecting success of 0027.2491 'checkout attr=text ident aeol= core.autocrlf=false core.eol=crlf file=LF_nul':
compare_ws_file eol_crlf_crlf_false_attr_text_ CRLF_nul crlf_false_attr__LF_nul.txt
ok 2491 - checkout attr=text ident aeol= core.autocrlf=false core.eol=crlf file=LF_nul
expecting success of 0027.2492 'setup config for checkout attr=text ident=ident aeol= core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2492 - setup config for checkout attr=text ident=ident aeol= core.autocrlf=false
expecting success of 0027.2493 'setup LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2493 - setup LF checkout with -c core.eol=lf
expecting success of 0027.2494 'setup CRLF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2494 - setup CRLF checkout with -c core.eol=lf
expecting success of 0027.2495 'setup LF_mix_CR checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2495 - setup LF_mix_CR checkout with -c core.eol=lf
expecting success of 0027.2496 'setup CRLF_mix_LF checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2496 - setup CRLF_mix_LF checkout with -c core.eol=lf
expecting success of 0027.2497 'setup LF_nul checkout with -c core.eol=lf':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2497 - setup LF_nul checkout with -c core.eol=lf
expecting success of 0027.2498 'ls-files --eol attr=text ident aeol= core.autocrlf=false core.eol=lf':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2498 - ls-files --eol attr=text ident aeol= core.autocrlf=false core.eol=lf
expecting success of 0027.2499 'checkout attr=text ident aeol= core.autocrlf=false core.eol=lf file=LF':
compare_ws_file eol_lf_crlf_false_attr_text_ LF crlf_false_attr__LF.txt
ok 2499 - checkout attr=text ident aeol= core.autocrlf=false core.eol=lf file=LF
expecting success of 0027.2500 'checkout attr=text ident aeol= core.autocrlf=false core.eol=lf file=CRLF':
compare_ws_file eol_lf_crlf_false_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 2500 - checkout attr=text ident aeol= core.autocrlf=false core.eol=lf file=CRLF
expecting success of 0027.2501 'checkout attr=text ident aeol= core.autocrlf=false core.eol=lf file=CRLF_mix_LF':
compare_ws_file eol_lf_crlf_false_attr_text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 2501 - checkout attr=text ident aeol= core.autocrlf=false core.eol=lf file=CRLF_mix_LF
expecting success of 0027.2502 'checkout attr=text ident aeol= core.autocrlf=false core.eol=lf file=LF_mix_CR':
compare_ws_file eol_lf_crlf_false_attr_text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2502 - checkout attr=text ident aeol= core.autocrlf=false core.eol=lf file=LF_mix_CR
expecting success of 0027.2503 'checkout attr=text ident aeol= core.autocrlf=false core.eol=lf file=LF_nul':
compare_ws_file eol_lf_crlf_false_attr_text_ LF_nul crlf_false_attr__LF_nul.txt
ok 2503 - checkout attr=text ident aeol= core.autocrlf=false core.eol=lf file=LF_nul
expecting success of 0027.2504 'setup config for checkout attr=text ident=ident aeol= core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2504 - setup config for checkout attr=text ident=ident aeol= core.autocrlf=false
expecting success of 0027.2505 'setup LF checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2505 - setup LF checkout
expecting success of 0027.2506 'setup CRLF checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2506 - setup CRLF checkout
expecting success of 0027.2507 'setup LF_mix_CR checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2507 - setup LF_mix_CR checkout
expecting success of 0027.2508 'setup CRLF_mix_LF checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2508 - setup CRLF_mix_LF checkout
expecting success of 0027.2509 'setup LF_nul checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2509 - setup LF_nul checkout
expecting success of 0027.2510 'ls-files --eol attr=text ident aeol= core.autocrlf=false core.eol=':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2510 - ls-files --eol attr=text ident aeol= core.autocrlf=false core.eol=
expecting success of 0027.2511 'checkout attr=text ident aeol= core.autocrlf=false core.eol= file=LF':
compare_ws_file eol__crlf_false_attr_text_ LF crlf_false_attr__LF.txt
ok 2511 - checkout attr=text ident aeol= core.autocrlf=false core.eol= file=LF
expecting success of 0027.2512 'checkout attr=text ident aeol= core.autocrlf=false core.eol= file=CRLF':
compare_ws_file eol__crlf_false_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 2512 - checkout attr=text ident aeol= core.autocrlf=false core.eol= file=CRLF
expecting success of 0027.2513 'checkout attr=text ident aeol= core.autocrlf=false core.eol= file=CRLF_mix_LF':
compare_ws_file eol__crlf_false_attr_text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 2513 - checkout attr=text ident aeol= core.autocrlf=false core.eol= file=CRLF_mix_LF
expecting success of 0027.2514 'checkout attr=text ident aeol= core.autocrlf=false core.eol= file=LF_mix_CR':
compare_ws_file eol__crlf_false_attr_text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2514 - checkout attr=text ident aeol= core.autocrlf=false core.eol= file=LF_mix_CR
expecting success of 0027.2515 'checkout attr=text ident aeol= core.autocrlf=false core.eol= file=LF_nul':
compare_ws_file eol__crlf_false_attr_text_ LF_nul crlf_false_attr__LF_nul.txt
ok 2515 - checkout attr=text ident aeol= core.autocrlf=false core.eol= file=LF_nul
expecting success of 0027.2516 'setup config for checkout attr=text ident=ident aeol= core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2516 - setup config for checkout attr=text ident=ident aeol= core.autocrlf=false
expecting success of 0027.2517 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2517 - setup LF checkout with -c core.eol=native
expecting success of 0027.2518 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2518 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.2519 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2519 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.2520 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2520 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.2521 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2521 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.2522 'ls-files --eol attr=text ident aeol= core.autocrlf=false core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2522 - ls-files --eol attr=text ident aeol= core.autocrlf=false core.eol=native
expecting success of 0027.2523 'checkout attr=text ident aeol= core.autocrlf=false core.eol=native file=LF':
compare_ws_file eol_native_crlf_false_attr_text_ LF crlf_false_attr__LF.txt
ok 2523 - checkout attr=text ident aeol= core.autocrlf=false core.eol=native file=LF
expecting success of 0027.2524 'checkout attr=text ident aeol= core.autocrlf=false core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_false_attr_text_ CRLF crlf_false_attr__CRLF.txt
ok 2524 - checkout attr=text ident aeol= core.autocrlf=false core.eol=native file=CRLF
expecting success of 0027.2525 'checkout attr=text ident aeol= core.autocrlf=false core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_false_attr_text_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 2525 - checkout attr=text ident aeol= core.autocrlf=false core.eol=native file=CRLF_mix_LF
expecting success of 0027.2526 'checkout attr=text ident aeol= core.autocrlf=false core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_false_attr_text_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2526 - checkout attr=text ident aeol= core.autocrlf=false core.eol=native file=LF_mix_CR
expecting success of 0027.2527 'checkout attr=text ident aeol= core.autocrlf=false core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_false_attr_text_ LF_nul crlf_false_attr__LF_nul.txt
ok 2527 - checkout attr=text ident aeol= core.autocrlf=false core.eol=native file=LF_nul
expecting success of 0027.2528 'setup config for checkout attr=auto ident=ident aeol= core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2528 - setup config for checkout attr=auto ident=ident aeol= core.autocrlf=false
expecting success of 0027.2529 'setup LF checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2529 - setup LF checkout
expecting success of 0027.2530 'setup CRLF checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2530 - setup CRLF checkout
expecting success of 0027.2531 'setup LF_mix_CR checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2531 - setup LF_mix_CR checkout
expecting success of 0027.2532 'setup CRLF_mix_LF checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2532 - setup CRLF_mix_LF checkout
expecting success of 0027.2533 'setup LF_nul checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2533 - setup LF_nul checkout
expecting success of 0027.2534 'ls-files --eol attr=auto ident aeol= core.autocrlf=false core.eol=':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2534 - ls-files --eol attr=auto ident aeol= core.autocrlf=false core.eol=
expecting success of 0027.2535 'checkout attr=auto ident aeol= core.autocrlf=false core.eol= file=LF':
compare_ws_file eol__crlf_false_attr_auto_ LF crlf_false_attr__LF.txt
ok 2535 - checkout attr=auto ident aeol= core.autocrlf=false core.eol= file=LF
expecting success of 0027.2536 'checkout attr=auto ident aeol= core.autocrlf=false core.eol= file=CRLF':
compare_ws_file eol__crlf_false_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 2536 - checkout attr=auto ident aeol= core.autocrlf=false core.eol= file=CRLF
expecting success of 0027.2537 'checkout attr=auto ident aeol= core.autocrlf=false core.eol= file=CRLF_mix_LF':
compare_ws_file eol__crlf_false_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 2537 - checkout attr=auto ident aeol= core.autocrlf=false core.eol= file=CRLF_mix_LF
expecting success of 0027.2538 'checkout attr=auto ident aeol= core.autocrlf=false core.eol= file=LF_mix_CR':
compare_ws_file eol__crlf_false_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2538 - checkout attr=auto ident aeol= core.autocrlf=false core.eol= file=LF_mix_CR
expecting success of 0027.2539 'checkout attr=auto ident aeol= core.autocrlf=false core.eol= file=LF_nul':
compare_ws_file eol__crlf_false_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 2539 - checkout attr=auto ident aeol= core.autocrlf=false core.eol= file=LF_nul
expecting success of 0027.2540 'setup config for checkout attr=auto ident=ident aeol= core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2540 - setup config for checkout attr=auto ident=ident aeol= core.autocrlf=false
expecting success of 0027.2541 'setup LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2541 - setup LF checkout with -c core.eol=native
expecting success of 0027.2542 'setup CRLF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2542 - setup CRLF checkout with -c core.eol=native
expecting success of 0027.2543 'setup LF_mix_CR checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2543 - setup LF_mix_CR checkout with -c core.eol=native
expecting success of 0027.2544 'setup CRLF_mix_LF checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2544 - setup CRLF_mix_LF checkout with -c core.eol=native
expecting success of 0027.2545 'setup LF_nul checkout with -c core.eol=native':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2545 - setup LF_nul checkout with -c core.eol=native
expecting success of 0027.2546 'ls-files --eol attr=auto ident aeol= core.autocrlf=false core.eol=native':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2546 - ls-files --eol attr=auto ident aeol= core.autocrlf=false core.eol=native
expecting success of 0027.2547 'checkout attr=auto ident aeol= core.autocrlf=false core.eol=native file=LF':
compare_ws_file eol_native_crlf_false_attr_auto_ LF crlf_false_attr__LF.txt
ok 2547 - checkout attr=auto ident aeol= core.autocrlf=false core.eol=native file=LF
expecting success of 0027.2548 'checkout attr=auto ident aeol= core.autocrlf=false core.eol=native file=CRLF':
compare_ws_file eol_native_crlf_false_attr_auto_ CRLF crlf_false_attr__CRLF.txt
ok 2548 - checkout attr=auto ident aeol= core.autocrlf=false core.eol=native file=CRLF
expecting success of 0027.2549 'checkout attr=auto ident aeol= core.autocrlf=false core.eol=native file=CRLF_mix_LF':
compare_ws_file eol_native_crlf_false_attr_auto_ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 2549 - checkout attr=auto ident aeol= core.autocrlf=false core.eol=native file=CRLF_mix_LF
expecting success of 0027.2550 'checkout attr=auto ident aeol= core.autocrlf=false core.eol=native file=LF_mix_CR':
compare_ws_file eol_native_crlf_false_attr_auto_ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2550 - checkout attr=auto ident aeol= core.autocrlf=false core.eol=native file=LF_mix_CR
expecting success of 0027.2551 'checkout attr=auto ident aeol= core.autocrlf=false core.eol=native file=LF_nul':
compare_ws_file eol_native_crlf_false_attr_auto_ LF_nul crlf_false_attr__LF_nul.txt
ok 2551 - checkout attr=auto ident aeol= core.autocrlf=false core.eol=native file=LF_nul
expecting success of 0027.2552 'setup config for checkout attr= ident=ident aeol=lf core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2552 - setup config for checkout attr= ident=ident aeol=lf core.autocrlf=false
expecting success of 0027.2553 'setup LF checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2553 - setup LF checkout
expecting success of 0027.2554 'setup CRLF checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2554 - setup CRLF checkout
expecting success of 0027.2555 'setup LF_mix_CR checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2555 - setup LF_mix_CR checkout
expecting success of 0027.2556 'setup CRLF_mix_LF checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2556 - setup CRLF_mix_LF checkout
expecting success of 0027.2557 'setup LF_nul checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2557 - setup LF_nul checkout
expecting success of 0027.2558 'ls-files --eol attr= ident aeol=lf core.autocrlf=false core.eol=':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2558 - ls-files --eol attr= ident aeol=lf core.autocrlf=false core.eol=
expecting success of 0027.2559 'checkout attr= ident aeol=lf core.autocrlf=false core.eol= file=LF':
compare_ws_file eol__crlf_false_attr__ LF crlf_false_attr__LF.txt
ok 2559 - checkout attr= ident aeol=lf core.autocrlf=false core.eol= file=LF
expecting success of 0027.2560 'checkout attr= ident aeol=lf core.autocrlf=false core.eol= file=CRLF':
compare_ws_file eol__crlf_false_attr__ CRLF crlf_false_attr__CRLF.txt
ok 2560 - checkout attr= ident aeol=lf core.autocrlf=false core.eol= file=CRLF
expecting success of 0027.2561 'checkout attr= ident aeol=lf core.autocrlf=false core.eol= file=CRLF_mix_LF':
compare_ws_file eol__crlf_false_attr__ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 2561 - checkout attr= ident aeol=lf core.autocrlf=false core.eol= file=CRLF_mix_LF
expecting success of 0027.2562 'checkout attr= ident aeol=lf core.autocrlf=false core.eol= file=LF_mix_CR':
compare_ws_file eol__crlf_false_attr__ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2562 - checkout attr= ident aeol=lf core.autocrlf=false core.eol= file=LF_mix_CR
expecting success of 0027.2563 'checkout attr= ident aeol=lf core.autocrlf=false core.eol= file=LF_nul':
compare_ws_file eol__crlf_false_attr__ LF_nul crlf_false_attr__LF_nul.txt
ok 2563 - checkout attr= ident aeol=lf core.autocrlf=false core.eol= file=LF_nul
expecting success of 0027.2564 'setup config for checkout attr= ident=ident aeol=crlf core.autocrlf=false':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2564 - setup config for checkout attr= ident=ident aeol=crlf core.autocrlf=false
expecting success of 0027.2565 'setup LF checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2565 - setup LF checkout
expecting success of 0027.2566 'setup CRLF checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2566 - setup CRLF checkout
expecting success of 0027.2567 'setup LF_mix_CR checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2567 - setup LF_mix_CR checkout
expecting success of 0027.2568 'setup CRLF_mix_LF checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2568 - setup CRLF_mix_LF checkout
expecting success of 0027.2569 'setup LF_nul checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2569 - setup LF_nul checkout
expecting success of 0027.2570 'ls-files --eol attr= ident aeol=crlf core.autocrlf=false core.eol=':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2570 - ls-files --eol attr= ident aeol=crlf core.autocrlf=false core.eol=
expecting success of 0027.2571 'checkout attr= ident aeol=crlf core.autocrlf=false core.eol= file=LF':
compare_ws_file eol__crlf_false_attr__ CRLF crlf_false_attr__LF.txt
ok 2571 - checkout attr= ident aeol=crlf core.autocrlf=false core.eol= file=LF
expecting success of 0027.2572 'checkout attr= ident aeol=crlf core.autocrlf=false core.eol= file=CRLF':
compare_ws_file eol__crlf_false_attr__ CRLF crlf_false_attr__CRLF.txt
ok 2572 - checkout attr= ident aeol=crlf core.autocrlf=false core.eol= file=CRLF
expecting success of 0027.2573 'checkout attr= ident aeol=crlf core.autocrlf=false core.eol= file=CRLF_mix_LF':
compare_ws_file eol__crlf_false_attr__ CRLF crlf_false_attr__CRLF_mix_LF.txt
ok 2573 - checkout attr= ident aeol=crlf core.autocrlf=false core.eol= file=CRLF_mix_LF
expecting success of 0027.2574 'checkout attr= ident aeol=crlf core.autocrlf=false core.eol= file=LF_mix_CR':
compare_ws_file eol__crlf_false_attr__ CRLF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2574 - checkout attr= ident aeol=crlf core.autocrlf=false core.eol= file=LF_mix_CR
expecting success of 0027.2575 'checkout attr= ident aeol=crlf core.autocrlf=false core.eol= file=LF_nul':
compare_ws_file eol__crlf_false_attr__ CRLF_nul crlf_false_attr__LF_nul.txt
ok 2575 - checkout attr= ident aeol=crlf core.autocrlf=false core.eol= file=LF_nul
expecting success of 0027.2576 'setup config for checkout attr= ident=ident aeol=lf core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2576 - setup config for checkout attr= ident=ident aeol=lf core.autocrlf=true
expecting success of 0027.2577 'setup LF checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2577 - setup LF checkout
expecting success of 0027.2578 'setup CRLF checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2578 - setup CRLF checkout
expecting success of 0027.2579 'setup LF_mix_CR checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2579 - setup LF_mix_CR checkout
expecting success of 0027.2580 'setup CRLF_mix_LF checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2580 - setup CRLF_mix_LF checkout
expecting success of 0027.2581 'setup LF_nul checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2581 - setup LF_nul checkout
expecting success of 0027.2582 'ls-files --eol attr= ident aeol=lf core.autocrlf=true core.eol=':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2582 - ls-files --eol attr= ident aeol=lf core.autocrlf=true core.eol=
expecting success of 0027.2583 'checkout attr= ident aeol=lf core.autocrlf=true core.eol= file=LF':
compare_ws_file eol__crlf_true_attr__ LF crlf_false_attr__LF.txt
ok 2583 - checkout attr= ident aeol=lf core.autocrlf=true core.eol= file=LF
expecting success of 0027.2584 'checkout attr= ident aeol=lf core.autocrlf=true core.eol= file=CRLF':
compare_ws_file eol__crlf_true_attr__ CRLF crlf_false_attr__CRLF.txt
ok 2584 - checkout attr= ident aeol=lf core.autocrlf=true core.eol= file=CRLF
expecting success of 0027.2585 'checkout attr= ident aeol=lf core.autocrlf=true core.eol= file=CRLF_mix_LF':
compare_ws_file eol__crlf_true_attr__ CRLF_mix_LF crlf_false_attr__CRLF_mix_LF.txt
ok 2585 - checkout attr= ident aeol=lf core.autocrlf=true core.eol= file=CRLF_mix_LF
expecting success of 0027.2586 'checkout attr= ident aeol=lf core.autocrlf=true core.eol= file=LF_mix_CR':
compare_ws_file eol__crlf_true_attr__ LF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2586 - checkout attr= ident aeol=lf core.autocrlf=true core.eol= file=LF_mix_CR
expecting success of 0027.2587 'checkout attr= ident aeol=lf core.autocrlf=true core.eol= file=LF_nul':
compare_ws_file eol__crlf_true_attr__ LF_nul crlf_false_attr__LF_nul.txt
ok 2587 - checkout attr= ident aeol=lf core.autocrlf=true core.eol= file=LF_nul
expecting success of 0027.2588 'setup config for checkout attr= ident=ident aeol=crlf core.autocrlf=true':
create_gitattributes "$attr" $ident $aeol &&
git config core.autocrlf $crlf
ok 2588 - setup config for checkout attr= ident=ident aeol=crlf core.autocrlf=true
expecting success of 0027.2589 'setup LF checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2589 - setup LF checkout
expecting success of 0027.2590 'setup CRLF checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2590 - setup CRLF checkout
expecting success of 0027.2591 'setup LF_mix_CR checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2591 - setup LF_mix_CR checkout
expecting success of 0027.2592 'setup CRLF_mix_LF checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2592 - setup CRLF_mix_LF checkout
expecting success of 0027.2593 'setup LF_nul checkout ':
rm -f crlf_false_attr__$f.txt &&
git ${ceol:+-c core.eol=$ceol} checkout -- crlf_false_attr__$f.txt
ok 2593 - setup LF_nul checkout
expecting success of 0027.2594 'ls-files --eol attr= ident aeol=crlf core.autocrlf=true core.eol=':
test_when_finished "rm expect actual" &&
sort <<-EOF >expect &&
i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt
i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt
i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt
i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt
i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt
EOF
git ls-files --eol crlf_false_attr__* >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2594 - ls-files --eol attr= ident aeol=crlf core.autocrlf=true core.eol=
expecting success of 0027.2595 'checkout attr= ident aeol=crlf core.autocrlf=true core.eol= file=LF':
compare_ws_file eol__crlf_true_attr__ CRLF crlf_false_attr__LF.txt
ok 2595 - checkout attr= ident aeol=crlf core.autocrlf=true core.eol= file=LF
expecting success of 0027.2596 'checkout attr= ident aeol=crlf core.autocrlf=true core.eol= file=CRLF':
compare_ws_file eol__crlf_true_attr__ CRLF crlf_false_attr__CRLF.txt
ok 2596 - checkout attr= ident aeol=crlf core.autocrlf=true core.eol= file=CRLF
expecting success of 0027.2597 'checkout attr= ident aeol=crlf core.autocrlf=true core.eol= file=CRLF_mix_LF':
compare_ws_file eol__crlf_true_attr__ CRLF crlf_false_attr__CRLF_mix_LF.txt
ok 2597 - checkout attr= ident aeol=crlf core.autocrlf=true core.eol= file=CRLF_mix_LF
expecting success of 0027.2598 'checkout attr= ident aeol=crlf core.autocrlf=true core.eol= file=LF_mix_CR':
compare_ws_file eol__crlf_true_attr__ CRLF_mix_CR crlf_false_attr__LF_mix_CR.txt
ok 2598 - checkout attr= ident aeol=crlf core.autocrlf=true core.eol= file=LF_mix_CR
expecting success of 0027.2599 'checkout attr= ident aeol=crlf core.autocrlf=true core.eol= file=LF_nul':
compare_ws_file eol__crlf_true_attr__ CRLF_nul crlf_false_attr__LF_nul.txt
ok 2599 - checkout attr= ident aeol=crlf core.autocrlf=true core.eol= file=LF_nul
expecting success of 0027.2600 'ls-files --eol -d -z':
rm crlf_false_attr__CRLF.txt crlf_false_attr__CRLF_mix_LF.txt crlf_false_attr__LF.txt .gitattributes &&
cat >expect <<-\EOF &&
i/crlf w/ crlf_false_attr__CRLF.txt
i/lf w/ .gitattributes
i/lf w/ crlf_false_attr__LF.txt
i/mixed w/ crlf_false_attr__CRLF_mix_LF.txt
EOF
git ls-files --eol -d >tmp &&
sed -e "s!attr/[^ ]*!!g" -e "s/ / /g" -e "s/ */ /g" tmp |
sort >actual &&
test_cmp expect actual
ok 2600 - ls-files --eol -d -z
# passed all 2600 test(s)
1..2600
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1401-symbolic-ref.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1401-symbolic-ref/.git/
expecting success of 1401.1 'setup':
git symbolic-ref HEAD refs/heads/foo &&
test_commit file &&
"$TAR" cf .git.tar .git/
[foo (root-commit) 4c1911f] file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file.t
ok 1 - setup
expecting success of 1401.2 'symbolic-ref read/write roundtrip':
git symbolic-ref HEAD refs/heads/read-write-roundtrip &&
echo refs/heads/read-write-roundtrip >expect &&
git symbolic-ref HEAD >actual &&
test_cmp expect actual
ok 2 - symbolic-ref read/write roundtrip
expecting success of 1401.3 'symbolic-ref refuses non-ref for HEAD':
test_must_fail git symbolic-ref HEAD foo
fatal: Refusing to point HEAD outside of refs/
ok 3 - symbolic-ref refuses non-ref for HEAD
expecting success of 1401.4 'symbolic-ref refuses bare sha1':
rev=$(git rev-parse HEAD) &&
test_must_fail git symbolic-ref HEAD "$rev"
fatal: Refusing to point HEAD outside of refs/
ok 4 - symbolic-ref refuses bare sha1
expecting success of 1401.5 'HEAD cannot be removed':
test_must_fail git symbolic-ref -d HEAD
fatal: deleting 'HEAD' is not allowed
ok 5 - HEAD cannot be removed
expecting success of 1401.6 'symbolic-ref can be deleted':
git symbolic-ref NOTHEAD refs/heads/foo &&
git symbolic-ref -d NOTHEAD &&
git rev-parse refs/heads/foo &&
test_must_fail git symbolic-ref NOTHEAD
4c1911ffa61819af2268cf7c64ef8f9aa3c96d97
fatal: ref NOTHEAD is not a symbolic ref
ok 6 - symbolic-ref can be deleted
expecting success of 1401.7 'symbolic-ref can delete dangling symref':
git symbolic-ref NOTHEAD refs/heads/missing &&
git symbolic-ref -d NOTHEAD &&
test_must_fail git rev-parse refs/heads/missing &&
test_must_fail git symbolic-ref NOTHEAD
fatal: ambiguous argument 'refs/heads/missing': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
refs/heads/missing
fatal: ref NOTHEAD is not a symbolic ref
ok 7 - symbolic-ref can delete dangling symref
expecting success of 1401.8 'symbolic-ref fails to delete missing FOO':
echo "fatal: Cannot delete FOO, not a symbolic ref" >expect &&
test_must_fail git symbolic-ref -d FOO >actual 2>&1 &&
test_cmp expect actual
ok 8 - symbolic-ref fails to delete missing FOO
expecting success of 1401.9 'symbolic-ref fails to delete real ref':
echo "fatal: Cannot delete refs/heads/foo, not a symbolic ref" >expect &&
test_must_fail git symbolic-ref -d refs/heads/foo >actual 2>&1 &&
git rev-parse --verify refs/heads/foo &&
test_cmp expect actual
4c1911ffa61819af2268cf7c64ef8f9aa3c96d97
ok 9 - symbolic-ref fails to delete real ref
expecting success of 1401.10 'create large ref name':
# make 256+ character ref; some systems may not handle that,
# so be gentle
long=0123456789abcdef &&
long=$long/$long/$long/$long &&
long=$long/$long/$long/$long &&
long_ref=refs/heads/$long &&
tree=$(git write-tree) &&
commit=$(echo foo | git commit-tree $tree) &&
if git update-ref $long_ref $commit; then
test_set_prereq LONG_REF
else
echo >&2 "long refs not supported"
fi
ok 10 - create large ref name
expecting success of 1401.11 'symbolic-ref can point to large ref name':
git symbolic-ref HEAD $long_ref &&
echo $long_ref >expect &&
git symbolic-ref HEAD >actual &&
test_cmp expect actual
ok 11 - symbolic-ref can point to large ref name
expecting success of 1401.12 'we can parse long symbolic ref':
echo $commit >expect &&
git rev-parse --verify HEAD >actual &&
test_cmp expect actual
ok 12 - we can parse long symbolic ref
expecting success of 1401.13 'symbolic-ref reports failure in exit code':
test_when_finished "rm -f .git/HEAD.lock" &&
>.git/HEAD.lock &&
test_must_fail git symbolic-ref HEAD refs/heads/whatever
error: Unable to create '/<<PKGBUILDDIR>>/t/trash directory.t1401-symbolic-ref/.git/HEAD.lock': File exists.
Another git process seems to be running in this repository, e.g.
an editor opened by 'git commit'. Please make sure all processes
are terminated then try again. If it still fails, a git process
may have crashed in this repository earlier:
remove the file manually to continue.
ok 13 - symbolic-ref reports failure in exit code
expecting success of 1401.14 'symbolic-ref writes reflog entry':
git checkout -b log1 &&
test_commit one &&
git checkout -b log2 &&
test_commit two &&
git checkout --orphan orphan &&
git symbolic-ref -m create HEAD refs/heads/log1 &&
git symbolic-ref -m update HEAD refs/heads/log2 &&
cat >expect <<-\EOF &&
update
create
EOF
git log --format=%gs -g -2 >actual &&
test_cmp expect actual
Switched to a new branch 'log1'
[log1 aaba2f7] one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 one.t
Switched to a new branch 'log2'
[log2 a5e11db] two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 two.t
Switched to a new branch 'orphan'
ok 14 - symbolic-ref writes reflog entry
expecting success of 1401.15 'symbolic-ref does not create ref d/f conflicts':
git checkout -b df &&
test_commit df &&
test_must_fail git symbolic-ref refs/heads/df/conflict refs/heads/df &&
git pack-refs --all --prune &&
test_must_fail git symbolic-ref refs/heads/df/conflict refs/heads/df
Switched to a new branch 'df'
[df b4cb97a] df
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 df.t
error: Unable to create '/<<PKGBUILDDIR>>/t/trash directory.t1401-symbolic-ref/.git/refs/heads/df/conflict.lock': Not a directory
error: 'refs/heads/df' exists; cannot create 'refs/heads/df/conflict'
ok 15 - symbolic-ref does not create ref d/f conflicts
expecting success of 1401.16 'symbolic-ref can overwrite pointer to invalid name':
test_when_finished reset_to_sane &&
head=$(git rev-parse HEAD) &&
git symbolic-ref HEAD refs/heads/outer &&
test_when_finished "git update-ref -d refs/heads/outer/inner" &&
git update-ref refs/heads/outer/inner $head &&
git symbolic-ref HEAD refs/heads/unrelated
ok 16 - symbolic-ref can overwrite pointer to invalid name
expecting success of 1401.17 'symbolic-ref can resolve d/f name (EISDIR)':
test_when_finished reset_to_sane &&
head=$(git rev-parse HEAD) &&
git symbolic-ref HEAD refs/heads/outer/inner &&
test_when_finished "git update-ref -d refs/heads/outer" &&
git update-ref refs/heads/outer $head &&
echo refs/heads/outer/inner >expect &&
git symbolic-ref HEAD >actual &&
test_cmp expect actual
ok 17 - symbolic-ref can resolve d/f name (EISDIR)
expecting success of 1401.18 'symbolic-ref can resolve d/f name (ENOTDIR)':
test_when_finished reset_to_sane &&
head=$(git rev-parse HEAD) &&
git symbolic-ref HEAD refs/heads/outer &&
test_when_finished "git update-ref -d refs/heads/outer/inner" &&
git update-ref refs/heads/outer/inner $head &&
echo refs/heads/outer >expect &&
git symbolic-ref HEAD >actual &&
test_cmp expect actual
ok 18 - symbolic-ref can resolve d/f name (ENOTDIR)
expecting success of 1401.19 'symbolic-ref refuses invalid target for non-HEAD':
test_must_fail git symbolic-ref refs/heads/invalid foo..bar
fatal: Refusing to set 'refs/heads/invalid' to invalid ref 'foo..bar'
ok 19 - symbolic-ref refuses invalid target for non-HEAD
expecting success of 1401.20 'symbolic-ref allows top-level target for non-HEAD':
git symbolic-ref refs/heads/top-level FETCH_HEAD &&
git update-ref FETCH_HEAD HEAD &&
test_cmp_rev top-level HEAD
ok 20 - symbolic-ref allows top-level target for non-HEAD
expecting success of 1401.21 'symbolic-ref pointing at another':
git update-ref refs/heads/maint-2.37 HEAD &&
git symbolic-ref refs/heads/maint refs/heads/maint-2.37 &&
git checkout maint &&
git symbolic-ref HEAD >actual &&
echo refs/heads/maint-2.37 >expect &&
test_cmp expect actual &&
git symbolic-ref --no-recurse HEAD >actual &&
echo refs/heads/maint >expect &&
test_cmp expect actual
Switched to branch 'maint'
ok 21 - symbolic-ref pointing at another
expecting success of 1401.22 'symbolic-ref --short handles complex utf8 case':
name="测试-加-增加-加-增加" &&
git symbolic-ref TEST_SYMREF "refs/heads/$name" &&
# In the real world, we saw problems with this case only
# when the locale includes UTF-8. Set it here to try to make things as
# hard as possible for us to pass, but in practice we should do the
# right thing regardless (and of course some platforms may not even
# have this locale).
LC_ALL=en_US.UTF-8 git symbolic-ref --short TEST_SYMREF >actual &&
echo "$name" >expect &&
test_cmp expect actual
ok 22 - symbolic-ref --short handles complex utf8 case
expecting success of 1401.23 'symbolic-ref --short handles name with suffix':
git symbolic-ref TEST_SYMREF "refs/remotes/origin/HEAD" &&
git symbolic-ref --short TEST_SYMREF >actual &&
echo "origin" >expect &&
test_cmp expect actual
ok 23 - symbolic-ref --short handles name with suffix
expecting success of 1401.24 'symbolic-ref --short handles almost-matching name':
git symbolic-ref TEST_SYMREF "refs/headsXfoo" &&
git symbolic-ref --short TEST_SYMREF >actual &&
echo "headsXfoo" >expect &&
test_cmp expect actual
ok 24 - symbolic-ref --short handles almost-matching name
expecting success of 1401.25 'symbolic-ref --short handles name with percent':
git symbolic-ref TEST_SYMREF "refs/heads/%foo" &&
git symbolic-ref --short TEST_SYMREF >actual &&
echo "%foo" >expect &&
test_cmp expect actual
ok 25 - symbolic-ref --short handles name with percent
# passed all 25 test(s)
1..25
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1402-check-ref-format.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1402-check-ref-format/.git/
expecting success of 1402.1 'ref name '' is invalid':
test_must_fail git check-ref-format ''
ok 1 - ref name '' is invalid
expecting success of 1402.2 'ref name '/' is invalid':
test_must_fail git check-ref-format '/'
ok 2 - ref name '/' is invalid
expecting success of 1402.3 'ref name '/' is invalid with options --allow-onelevel':
test_must_fail git check-ref-format --allow-onelevel '/'
ok 3 - ref name '/' is invalid with options --allow-onelevel
expecting success of 1402.4 'ref name '/' is invalid with options --normalize':
test_must_fail git check-ref-format --normalize '/'
ok 4 - ref name '/' is invalid with options --normalize
expecting success of 1402.5 'ref name '/' is invalid with options --allow-onelevel --normalize':
test_must_fail git check-ref-format --allow-onelevel --normalize '/'
ok 5 - ref name '/' is invalid with options --allow-onelevel --normalize
expecting success of 1402.6 'ref name 'foo/bar/baz' is valid':
git check-ref-format 'foo/bar/baz'
ok 6 - ref name 'foo/bar/baz' is valid
expecting success of 1402.7 'ref name 'foo/bar/baz' is valid with options --normalize':
git check-ref-format --normalize 'foo/bar/baz'
foo/bar/baz
ok 7 - ref name 'foo/bar/baz' is valid with options --normalize
expecting success of 1402.8 'ref name 'refs///heads/foo' is invalid':
test_must_fail git check-ref-format 'refs///heads/foo'
ok 8 - ref name 'refs///heads/foo' is invalid
expecting success of 1402.9 'ref name 'refs///heads/foo' is valid with options --normalize':
git check-ref-format --normalize 'refs///heads/foo'
refs/heads/foo
ok 9 - ref name 'refs///heads/foo' is valid with options --normalize
expecting success of 1402.10 'ref name 'heads/foo/' is invalid':
test_must_fail git check-ref-format 'heads/foo/'
ok 10 - ref name 'heads/foo/' is invalid
expecting success of 1402.11 'ref name '/heads/foo' is invalid':
test_must_fail git check-ref-format '/heads/foo'
ok 11 - ref name '/heads/foo' is invalid
expecting success of 1402.12 'ref name '/heads/foo' is valid with options --normalize':
git check-ref-format --normalize '/heads/foo'
heads/foo
ok 12 - ref name '/heads/foo' is valid with options --normalize
expecting success of 1402.13 'ref name '///heads/foo' is invalid':
test_must_fail git check-ref-format '///heads/foo'
ok 13 - ref name '///heads/foo' is invalid
expecting success of 1402.14 'ref name '///heads/foo' is valid with options --normalize':
git check-ref-format --normalize '///heads/foo'
heads/foo
ok 14 - ref name '///heads/foo' is valid with options --normalize
expecting success of 1402.15 'ref name './foo' is invalid':
test_must_fail git check-ref-format './foo'
ok 15 - ref name './foo' is invalid
expecting success of 1402.16 'ref name './foo/bar' is invalid':
test_must_fail git check-ref-format './foo/bar'
ok 16 - ref name './foo/bar' is invalid
expecting success of 1402.17 'ref name 'foo/./bar' is invalid':
test_must_fail git check-ref-format 'foo/./bar'
ok 17 - ref name 'foo/./bar' is invalid
expecting success of 1402.18 'ref name 'foo/bar/.' is invalid':
test_must_fail git check-ref-format 'foo/bar/.'
ok 18 - ref name 'foo/bar/.' is invalid
expecting success of 1402.19 'ref name '.refs/foo' is invalid':
test_must_fail git check-ref-format '.refs/foo'
ok 19 - ref name '.refs/foo' is invalid
expecting success of 1402.20 'ref name 'refs/heads/foo.' is invalid':
test_must_fail git check-ref-format 'refs/heads/foo.'
ok 20 - ref name 'refs/heads/foo.' is invalid
expecting success of 1402.21 'ref name 'heads/foo..bar' is invalid':
test_must_fail git check-ref-format 'heads/foo..bar'
ok 21 - ref name 'heads/foo..bar' is invalid
expecting success of 1402.22 'ref name 'heads/foo?bar' is invalid':
test_must_fail git check-ref-format 'heads/foo?bar'
ok 22 - ref name 'heads/foo?bar' is invalid
expecting success of 1402.23 'ref name 'foo./bar' is valid':
git check-ref-format 'foo./bar'
ok 23 - ref name 'foo./bar' is valid
expecting success of 1402.24 'ref name 'heads/foo.lock' is invalid':
test_must_fail git check-ref-format 'heads/foo.lock'
ok 24 - ref name 'heads/foo.lock' is invalid
expecting success of 1402.25 'ref name 'heads///foo.lock' is invalid':
test_must_fail git check-ref-format 'heads///foo.lock'
ok 25 - ref name 'heads///foo.lock' is invalid
expecting success of 1402.26 'ref name 'foo.lock/bar' is invalid':
test_must_fail git check-ref-format 'foo.lock/bar'
ok 26 - ref name 'foo.lock/bar' is invalid
expecting success of 1402.27 'ref name 'foo.lock///bar' is invalid':
test_must_fail git check-ref-format 'foo.lock///bar'
ok 27 - ref name 'foo.lock///bar' is invalid
expecting success of 1402.28 'ref name 'heads/foo@bar' is valid':
git check-ref-format 'heads/foo@bar'
ok 28 - ref name 'heads/foo@bar' is valid
expecting success of 1402.29 'ref name 'heads/v@{ation' is invalid':
test_must_fail git check-ref-format 'heads/v@{ation'
ok 29 - ref name 'heads/v@{ation' is invalid
expecting success of 1402.30 'ref name 'heads/foo\bar' is invalid':
test_must_fail git check-ref-format 'heads/foo\bar'
ok 30 - ref name 'heads/foo\bar' is invalid
expecting success of 1402.31 'ref name 'heads/foo ' is invalid':
test_must_fail git check-ref-format 'heads/foo '
ok 31 - ref name 'heads/foo ' is invalid
expecting success of 1402.32 'ref name 'heads/foo' is invalid':
test_must_fail git check-ref-format 'heads/foo'
ok 32 - ref name 'heads/foo' is invalid
expecting success of 1402.33 'ref name 'heads/fuß' is valid':
git check-ref-format 'heads/fuß'
ok 33 - ref name 'heads/fuß' is valid
expecting success of 1402.34 'ref name 'heads/*foo/bar' is valid with options --refspec-pattern':
git check-ref-format --refspec-pattern 'heads/*foo/bar'
ok 34 - ref name 'heads/*foo/bar' is valid with options --refspec-pattern
expecting success of 1402.35 'ref name 'heads/foo*/bar' is valid with options --refspec-pattern':
git check-ref-format --refspec-pattern 'heads/foo*/bar'
ok 35 - ref name 'heads/foo*/bar' is valid with options --refspec-pattern
expecting success of 1402.36 'ref name 'heads/f*o/bar' is valid with options --refspec-pattern':
git check-ref-format --refspec-pattern 'heads/f*o/bar'
ok 36 - ref name 'heads/f*o/bar' is valid with options --refspec-pattern
expecting success of 1402.37 'ref name 'heads/f*o*/bar' is invalid with options --refspec-pattern':
test_must_fail git check-ref-format --refspec-pattern 'heads/f*o*/bar'
ok 37 - ref name 'heads/f*o*/bar' is invalid with options --refspec-pattern
expecting success of 1402.38 'ref name 'heads/foo*/bar*' is invalid with options --refspec-pattern':
test_must_fail git check-ref-format --refspec-pattern 'heads/foo*/bar*'
ok 38 - ref name 'heads/foo*/bar*' is invalid with options --refspec-pattern
expecting success of 1402.39 'ref name 'foo' is invalid':
test_must_fail git check-ref-format 'foo'
ok 39 - ref name 'foo' is invalid
expecting success of 1402.40 'ref name 'foo' is valid with options --allow-onelevel':
git check-ref-format --allow-onelevel 'foo'
ok 40 - ref name 'foo' is valid with options --allow-onelevel
expecting success of 1402.41 'ref name 'foo' is invalid with options --refspec-pattern':
test_must_fail git check-ref-format --refspec-pattern 'foo'
ok 41 - ref name 'foo' is invalid with options --refspec-pattern
expecting success of 1402.42 'ref name 'foo' is valid with options --refspec-pattern --allow-onelevel':
git check-ref-format --refspec-pattern --allow-onelevel 'foo'
ok 42 - ref name 'foo' is valid with options --refspec-pattern --allow-onelevel
expecting success of 1402.43 'ref name 'foo' is invalid with options --normalize':
test_must_fail git check-ref-format --normalize 'foo'
ok 43 - ref name 'foo' is invalid with options --normalize
expecting success of 1402.44 'ref name 'foo' is valid with options --allow-onelevel --normalize':
git check-ref-format --allow-onelevel --normalize 'foo'
foo
ok 44 - ref name 'foo' is valid with options --allow-onelevel --normalize
expecting success of 1402.45 'ref name 'foo/bar' is valid':
git check-ref-format 'foo/bar'
ok 45 - ref name 'foo/bar' is valid
expecting success of 1402.46 'ref name 'foo/bar' is valid with options --allow-onelevel':
git check-ref-format --allow-onelevel 'foo/bar'
ok 46 - ref name 'foo/bar' is valid with options --allow-onelevel
expecting success of 1402.47 'ref name 'foo/bar' is valid with options --refspec-pattern':
git check-ref-format --refspec-pattern 'foo/bar'
ok 47 - ref name 'foo/bar' is valid with options --refspec-pattern
expecting success of 1402.48 'ref name 'foo/bar' is valid with options --refspec-pattern --allow-onelevel':
git check-ref-format --refspec-pattern --allow-onelevel 'foo/bar'
ok 48 - ref name 'foo/bar' is valid with options --refspec-pattern --allow-onelevel
expecting success of 1402.49 'ref name 'foo/bar' is valid with options --normalize':
git check-ref-format --normalize 'foo/bar'
foo/bar
ok 49 - ref name 'foo/bar' is valid with options --normalize
expecting success of 1402.50 'ref name 'foo/*' is invalid':
test_must_fail git check-ref-format 'foo/*'
ok 50 - ref name 'foo/*' is invalid
expecting success of 1402.51 'ref name 'foo/*' is invalid with options --allow-onelevel':
test_must_fail git check-ref-format --allow-onelevel 'foo/*'
ok 51 - ref name 'foo/*' is invalid with options --allow-onelevel
expecting success of 1402.52 'ref name 'foo/*' is valid with options --refspec-pattern':
git check-ref-format --refspec-pattern 'foo/*'
ok 52 - ref name 'foo/*' is valid with options --refspec-pattern
expecting success of 1402.53 'ref name 'foo/*' is valid with options --refspec-pattern --allow-onelevel':
git check-ref-format --refspec-pattern --allow-onelevel 'foo/*'
ok 53 - ref name 'foo/*' is valid with options --refspec-pattern --allow-onelevel
expecting success of 1402.54 'ref name '*/foo' is invalid':
test_must_fail git check-ref-format '*/foo'
ok 54 - ref name '*/foo' is invalid
expecting success of 1402.55 'ref name '*/foo' is invalid with options --allow-onelevel':
test_must_fail git check-ref-format --allow-onelevel '*/foo'
ok 55 - ref name '*/foo' is invalid with options --allow-onelevel
expecting success of 1402.56 'ref name '*/foo' is valid with options --refspec-pattern':
git check-ref-format --refspec-pattern '*/foo'
ok 56 - ref name '*/foo' is valid with options --refspec-pattern
expecting success of 1402.57 'ref name '*/foo' is valid with options --refspec-pattern --allow-onelevel':
git check-ref-format --refspec-pattern --allow-onelevel '*/foo'
ok 57 - ref name '*/foo' is valid with options --refspec-pattern --allow-onelevel
expecting success of 1402.58 'ref name '*/foo' is invalid with options --normalize':
test_must_fail git check-ref-format --normalize '*/foo'
ok 58 - ref name '*/foo' is invalid with options --normalize
expecting success of 1402.59 'ref name '*/foo' is valid with options --refspec-pattern --normalize':
git check-ref-format --refspec-pattern --normalize '*/foo'
*/foo
ok 59 - ref name '*/foo' is valid with options --refspec-pattern --normalize
expecting success of 1402.60 'ref name 'foo/*/bar' is invalid':
test_must_fail git check-ref-format 'foo/*/bar'
ok 60 - ref name 'foo/*/bar' is invalid
expecting success of 1402.61 'ref name 'foo/*/bar' is invalid with options --allow-onelevel':
test_must_fail git check-ref-format --allow-onelevel 'foo/*/bar'
ok 61 - ref name 'foo/*/bar' is invalid with options --allow-onelevel
expecting success of 1402.62 'ref name 'foo/*/bar' is valid with options --refspec-pattern':
git check-ref-format --refspec-pattern 'foo/*/bar'
ok 62 - ref name 'foo/*/bar' is valid with options --refspec-pattern
expecting success of 1402.63 'ref name 'foo/*/bar' is valid with options --refspec-pattern --allow-onelevel':
git check-ref-format --refspec-pattern --allow-onelevel 'foo/*/bar'
ok 63 - ref name 'foo/*/bar' is valid with options --refspec-pattern --allow-onelevel
expecting success of 1402.64 'ref name '*' is invalid':
test_must_fail git check-ref-format '*'
ok 64 - ref name '*' is invalid
expecting success of 1402.65 'ref name '*' is invalid with options --allow-onelevel':
test_must_fail git check-ref-format --allow-onelevel '*'
ok 65 - ref name '*' is invalid with options --allow-onelevel
expecting success of 1402.66 'ref name '*' is invalid with options --refspec-pattern':
test_must_fail git check-ref-format --refspec-pattern '*'
ok 66 - ref name '*' is invalid with options --refspec-pattern
expecting success of 1402.67 'ref name '*' is valid with options --refspec-pattern --allow-onelevel':
git check-ref-format --refspec-pattern --allow-onelevel '*'
ok 67 - ref name '*' is valid with options --refspec-pattern --allow-onelevel
expecting success of 1402.68 'ref name 'foo/*/*' is invalid with options --refspec-pattern':
test_must_fail git check-ref-format --refspec-pattern 'foo/*/*'
ok 68 - ref name 'foo/*/*' is invalid with options --refspec-pattern
expecting success of 1402.69 'ref name 'foo/*/*' is invalid with options --refspec-pattern --allow-onelevel':
test_must_fail git check-ref-format --refspec-pattern --allow-onelevel 'foo/*/*'
ok 69 - ref name 'foo/*/*' is invalid with options --refspec-pattern --allow-onelevel
expecting success of 1402.70 'ref name '*/foo/*' is invalid with options --refspec-pattern':
test_must_fail git check-ref-format --refspec-pattern '*/foo/*'
ok 70 - ref name '*/foo/*' is invalid with options --refspec-pattern
expecting success of 1402.71 'ref name '*/foo/*' is invalid with options --refspec-pattern --allow-onelevel':
test_must_fail git check-ref-format --refspec-pattern --allow-onelevel '*/foo/*'
ok 71 - ref name '*/foo/*' is invalid with options --refspec-pattern --allow-onelevel
expecting success of 1402.72 'ref name '*/*/foo' is invalid with options --refspec-pattern':
test_must_fail git check-ref-format --refspec-pattern '*/*/foo'
ok 72 - ref name '*/*/foo' is invalid with options --refspec-pattern
expecting success of 1402.73 'ref name '*/*/foo' is invalid with options --refspec-pattern --allow-onelevel':
test_must_fail git check-ref-format --refspec-pattern --allow-onelevel '*/*/foo'
ok 73 - ref name '*/*/foo' is invalid with options --refspec-pattern --allow-onelevel
expecting success of 1402.74 'ref name '/foo' is invalid':
test_must_fail git check-ref-format '/foo'
ok 74 - ref name '/foo' is invalid
expecting success of 1402.75 'ref name '/foo' is invalid with options --allow-onelevel':
test_must_fail git check-ref-format --allow-onelevel '/foo'
ok 75 - ref name '/foo' is invalid with options --allow-onelevel
expecting success of 1402.76 'ref name '/foo' is invalid with options --refspec-pattern':
test_must_fail git check-ref-format --refspec-pattern '/foo'
ok 76 - ref name '/foo' is invalid with options --refspec-pattern
expecting success of 1402.77 'ref name '/foo' is invalid with options --refspec-pattern --allow-onelevel':
test_must_fail git check-ref-format --refspec-pattern --allow-onelevel '/foo'
ok 77 - ref name '/foo' is invalid with options --refspec-pattern --allow-onelevel
expecting success of 1402.78 'ref name '/foo' is invalid with options --normalize':
test_must_fail git check-ref-format --normalize '/foo'
ok 78 - ref name '/foo' is invalid with options --normalize
expecting success of 1402.79 'ref name '/foo' is valid with options --allow-onelevel --normalize':
git check-ref-format --allow-onelevel --normalize '/foo'
foo
ok 79 - ref name '/foo' is valid with options --allow-onelevel --normalize
expecting success of 1402.80 'ref name '/foo' is invalid with options --refspec-pattern --normalize':
test_must_fail git check-ref-format --refspec-pattern --normalize '/foo'
ok 80 - ref name '/foo' is invalid with options --refspec-pattern --normalize
expecting success of 1402.81 'ref name '/foo' is valid with options --refspec-pattern --allow-onelevel --normalize':
git check-ref-format --refspec-pattern --allow-onelevel --normalize '/foo'
foo
ok 81 - ref name '/foo' is valid with options --refspec-pattern --allow-onelevel --normalize
expecting success of 1402.82 'check-ref-format --branch @{-1}':
T=$(git write-tree) &&
sha1=$(echo A | git commit-tree $T) &&
git update-ref refs/heads/main $sha1 &&
git update-ref refs/remotes/origin/main $sha1 &&
git checkout main &&
git checkout origin/main &&
git checkout main &&
refname=$(git check-ref-format --branch @{-1}) &&
test "$refname" = "$sha1" &&
refname2=$(git check-ref-format --branch @{-2}) &&
test "$refname2" = main
Switched to branch 'main'
Note: switching to 'origin/main'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 58052da A
Switched to branch 'main'
ok 82 - check-ref-format --branch @{-1}
expecting success of 1402.83 'check-ref-format --branch -nain':
test_must_fail git check-ref-format --branch -nain >actual &&
test_must_be_empty actual
fatal: '-nain' is not a valid branch name
ok 83 - check-ref-format --branch -nain
expecting success of 1402.84 'check-ref-format --branch from subdir':
mkdir subdir &&
T=$(git write-tree) &&
sha1=$(echo A | git commit-tree $T) &&
git update-ref refs/heads/main $sha1 &&
git update-ref refs/remotes/origin/main $sha1 &&
git checkout main &&
git checkout origin/main &&
git checkout main &&
refname=$(
cd subdir &&
git check-ref-format --branch @{-1}
) &&
test "$refname" = "$sha1"
Already on 'main'
Note: switching to 'origin/main'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 58052da A
Switched to branch 'main'
ok 84 - check-ref-format --branch from subdir
expecting success of 1402.85 'check-ref-format --branch @{-1} from non-repo':
nongit test_must_fail git check-ref-format --branch @{-1} >actual &&
test_must_be_empty actual
fatal: '@{-1}' is not a valid branch name
ok 85 - check-ref-format --branch @{-1} from non-repo
expecting success of 1402.86 'check-ref-format --branch main from non-repo':
echo main >expect &&
nongit git check-ref-format --branch main >actual &&
test_cmp expect actual
ok 86 - check-ref-format --branch main from non-repo
expecting success of 1402.87 'ref name 'heads/foo' simplifies to 'heads/foo'':
refname=$(git check-ref-format --normalize 'heads/foo') &&
test "$refname" = 'heads/foo'
ok 87 - ref name 'heads/foo' simplifies to 'heads/foo'
expecting success of 1402.88 'ref name 'refs///heads/foo' simplifies to 'refs/heads/foo'':
refname=$(git check-ref-format --normalize 'refs///heads/foo') &&
test "$refname" = 'refs/heads/foo'
ok 88 - ref name 'refs///heads/foo' simplifies to 'refs/heads/foo'
expecting success of 1402.89 'ref name '/heads/foo' simplifies to 'heads/foo'':
refname=$(git check-ref-format --normalize '/heads/foo') &&
test "$refname" = 'heads/foo'
ok 89 - ref name '/heads/foo' simplifies to 'heads/foo'
expecting success of 1402.90 'ref name '///heads/foo' simplifies to 'heads/foo'':
refname=$(git check-ref-format --normalize '///heads/foo') &&
test "$refname" = 'heads/foo'
ok 90 - ref name '///heads/foo' simplifies to 'heads/foo'
expecting success of 1402.91 'check-ref-format --normalize rejects 'foo'':
test_must_fail git check-ref-format --normalize 'foo'
ok 91 - check-ref-format --normalize rejects 'foo'
expecting success of 1402.92 'check-ref-format --normalize rejects '/foo'':
test_must_fail git check-ref-format --normalize '/foo'
ok 92 - check-ref-format --normalize rejects '/foo'
expecting success of 1402.93 'check-ref-format --normalize rejects 'heads/foo/../bar'':
test_must_fail git check-ref-format --normalize 'heads/foo/../bar'
ok 93 - check-ref-format --normalize rejects 'heads/foo/../bar'
expecting success of 1402.94 'check-ref-format --normalize rejects 'heads/./foo'':
test_must_fail git check-ref-format --normalize 'heads/./foo'
ok 94 - check-ref-format --normalize rejects 'heads/./foo'
expecting success of 1402.95 'check-ref-format --normalize rejects 'heads\foo'':
test_must_fail git check-ref-format --normalize 'heads\foo'
ok 95 - check-ref-format --normalize rejects 'heads\foo'
expecting success of 1402.96 'check-ref-format --normalize rejects 'heads/foo.lock'':
test_must_fail git check-ref-format --normalize 'heads/foo.lock'
ok 96 - check-ref-format --normalize rejects 'heads/foo.lock'
expecting success of 1402.97 'check-ref-format --normalize rejects 'heads///foo.lock'':
test_must_fail git check-ref-format --normalize 'heads///foo.lock'
ok 97 - check-ref-format --normalize rejects 'heads///foo.lock'
expecting success of 1402.98 'check-ref-format --normalize rejects 'foo.lock/bar'':
test_must_fail git check-ref-format --normalize 'foo.lock/bar'
ok 98 - check-ref-format --normalize rejects 'foo.lock/bar'
expecting success of 1402.99 'check-ref-format --normalize rejects 'foo.lock///bar'':
test_must_fail git check-ref-format --normalize 'foo.lock///bar'
ok 99 - check-ref-format --normalize rejects 'foo.lock///bar'
# passed all 99 test(s)
1..99
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1403-show-ref.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1403-show-ref/.git/
expecting success of 1403.1 'setup':
test_commit --annotate A &&
git checkout -b side &&
test_commit --annotate B &&
git checkout main &&
test_commit C &&
git branch B A^0
[main (root-commit) 0ddfaf1] A
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 A.t
Switched to a new branch 'side'
[side 72702e6] B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 B.t
Switched to branch 'main'
[main b75428b] C
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 C.t
ok 1 - setup
expecting success of 1403.2 'show-ref':
echo $(git rev-parse refs/tags/A) refs/tags/A >expect &&
git show-ref A >actual &&
test_cmp expect actual &&
git show-ref tags/A >actual &&
test_cmp expect actual &&
git show-ref refs/tags/A >actual &&
test_cmp expect actual &&
test_must_fail git show-ref D >actual &&
test_must_be_empty actual
ok 2 - show-ref
expecting success of 1403.3 'show-ref -q':
git show-ref -q A >actual &&
test_must_be_empty actual &&
git show-ref -q tags/A >actual &&
test_must_be_empty actual &&
git show-ref -q refs/tags/A >actual &&
test_must_be_empty actual &&
test_must_fail git show-ref -q D >actual &&
test_must_be_empty actual
ok 3 - show-ref -q
expecting success of 1403.4 'show-ref --verify':
echo $(git rev-parse refs/tags/A) refs/tags/A >expect &&
git show-ref --verify refs/tags/A >actual &&
test_cmp expect actual &&
test_must_fail git show-ref --verify A >actual &&
test_must_be_empty actual &&
test_must_fail git show-ref --verify tags/A >actual &&
test_must_be_empty actual &&
test_must_fail git show-ref --verify D >actual &&
test_must_be_empty actual
fatal: 'A' - not a valid ref
fatal: 'tags/A' - not a valid ref
fatal: 'D' - not a valid ref
ok 4 - show-ref --verify
expecting success of 1403.5 'show-ref --verify -q':
git show-ref --verify -q refs/tags/A >actual &&
test_must_be_empty actual &&
test_must_fail git show-ref --verify -q A >actual &&
test_must_be_empty actual &&
test_must_fail git show-ref --verify -q tags/A >actual &&
test_must_be_empty actual &&
test_must_fail git show-ref --verify -q D >actual &&
test_must_be_empty actual
ok 5 - show-ref --verify -q
expecting success of 1403.6 'show-ref -d':
{
echo $(git rev-parse refs/tags/A) refs/tags/A &&
echo $(git rev-parse refs/tags/A^0) "refs/tags/A^{}" &&
echo $(git rev-parse refs/tags/C) refs/tags/C
} >expect &&
git show-ref -d A C >actual &&
test_cmp expect actual &&
git show-ref -d tags/A tags/C >actual &&
test_cmp expect actual &&
git show-ref -d refs/tags/A refs/tags/C >actual &&
test_cmp expect actual &&
git show-ref --verify -d refs/tags/A refs/tags/C >actual &&
test_cmp expect actual &&
echo $(git rev-parse refs/heads/main) refs/heads/main >expect &&
git show-ref -d main >actual &&
test_cmp expect actual &&
git show-ref -d heads/main >actual &&
test_cmp expect actual &&
git show-ref -d refs/heads/main >actual &&
test_cmp expect actual &&
git show-ref -d --verify refs/heads/main >actual &&
test_cmp expect actual &&
test_must_fail git show-ref -d --verify main >actual &&
test_must_be_empty actual &&
test_must_fail git show-ref -d --verify heads/main >actual &&
test_must_be_empty actual &&
test_must_fail git show-ref --verify -d A C >actual &&
test_must_be_empty actual &&
test_must_fail git show-ref --verify -d tags/A tags/C >actual &&
test_must_be_empty actual
fatal: 'main' - not a valid ref
fatal: 'heads/main' - not a valid ref
fatal: 'A' - not a valid ref
fatal: 'tags/A' - not a valid ref
ok 6 - show-ref -d
expecting success of 1403.7 'show-ref --heads, --tags, --head, pattern':
for branch in B main side
do
echo $(git rev-parse refs/heads/$branch) refs/heads/$branch || return 1
done >expect.heads &&
git show-ref --heads >actual &&
test_cmp expect.heads actual &&
for tag in A B C
do
echo $(git rev-parse refs/tags/$tag) refs/tags/$tag || return 1
done >expect.tags &&
git show-ref --tags >actual &&
test_cmp expect.tags actual &&
cat expect.heads expect.tags >expect &&
git show-ref --heads --tags >actual &&
test_cmp expect actual &&
{
echo $(git rev-parse HEAD) HEAD &&
cat expect.heads expect.tags
} >expect &&
git show-ref --heads --tags --head >actual &&
test_cmp expect actual &&
{
echo $(git rev-parse HEAD) HEAD &&
echo $(git rev-parse refs/heads/B) refs/heads/B &&
echo $(git rev-parse refs/tags/B) refs/tags/B
} >expect &&
git show-ref --head B >actual &&
test_cmp expect actual &&
{
echo $(git rev-parse HEAD) HEAD &&
echo $(git rev-parse refs/heads/B) refs/heads/B &&
echo $(git rev-parse refs/tags/B) refs/tags/B &&
echo $(git rev-parse refs/tags/B^0) "refs/tags/B^{}"
} >expect &&
git show-ref --head -d B >actual &&
test_cmp expect actual
ok 7 - show-ref --heads, --tags, --head, pattern
expecting success of 1403.8 'show-ref --verify HEAD':
echo $(git rev-parse HEAD) HEAD >expect &&
git show-ref --verify HEAD >actual &&
test_cmp expect actual &&
git show-ref --verify -q HEAD >actual &&
test_must_be_empty actual
ok 8 - show-ref --verify HEAD
expecting success of 1403.9 'show-ref --verify with dangling ref':
sha1_file() {
echo "$*" | sed "s#..#.git/objects/&/#"
} &&
remove_object() {
file=$(sha1_file "$*") &&
test -e "$file" &&
rm -f "$file"
} &&
test_when_finished "rm -rf dangling" &&
(
git init dangling &&
cd dangling &&
test_commit dangling &&
sha=$(git rev-parse refs/tags/dangling) &&
remove_object $sha &&
test_must_fail git show-ref --verify refs/tags/dangling
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1403-show-ref/dangling/.git/
[main (root-commit) 7b6c85a] dangling
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 dangling.t
fatal: git show-ref: bad ref refs/tags/dangling (7b6c85aed8ac906de9f4214d9c12b4d66316df20)
ok 9 - show-ref --verify with dangling ref
# passed all 9 test(s)
1..9
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1400-update-ref.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1400-update-ref/.git/
expecting success of 1400.1 'setup':
git checkout --orphan main &&
create_test_commits "" &&
mkdir $bare &&
cd $bare &&
git init --bare -b main &&
create_test_commits "bare" &&
cd -
Switched to a new branch 'main'
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1400-update-ref/bare-repo/
/<<PKGBUILDDIR>>/t/trash directory.t1400-update-ref
ok 1 - setup
expecting success of 1400.2 'create refs/heads/main':
git update-ref $m $A &&
test $A = $(git show-ref -s --verify $m)
ok 2 - create refs/heads/main
expecting success of 1400.3 'create refs/heads/main with oldvalue verification':
git update-ref $m $B $A &&
test $B = $(git show-ref -s --verify $m)
ok 3 - create refs/heads/main with oldvalue verification
expecting success of 1400.4 'fail to delete refs/heads/main with stale ref':
test_must_fail git update-ref -d $m $A &&
test $B = "$(git show-ref -s --verify $m)"
error: cannot lock ref 'refs/heads/main': is at 56d5c1374e8028a1e122ab046ab7b98165342dc4 but expected 102939797ab91a4f201d131418d2c9d919dcdd2c
ok 4 - fail to delete refs/heads/main with stale ref
expecting success of 1400.5 'delete refs/heads/main':
test_when_finished "git update-ref -d $m" &&
git update-ref -d $m $B &&
test_must_fail git show-ref --verify -q $m
ok 5 - delete refs/heads/main
expecting success of 1400.6 'delete refs/heads/main without oldvalue verification':
test_when_finished "git update-ref -d $m" &&
git update-ref $m $A &&
test $A = $(git show-ref -s --verify $m) &&
git update-ref -d $m &&
test_must_fail git show-ref --verify -q $m
ok 6 - delete refs/heads/main without oldvalue verification
expecting success of 1400.7 'fail to create refs/heads/gu/fixes':
test_when_finished "rm -f .git/$n_dir" &&
touch .git/$n_dir &&
test_must_fail git update-ref $n $A
fatal: update_ref failed for ref 'refs/heads/gu/fixes': cannot lock ref 'refs/heads/gu/fixes': unable to create lock file .git/refs/heads/gu/fixes.lock; non-directory in the way
ok 7 - fail to create refs/heads/gu/fixes
expecting success of 1400.8 'create refs/heads/main (by HEAD)':
git update-ref HEAD $A &&
test $A = $(git show-ref -s --verify $m)
ok 8 - create refs/heads/main (by HEAD)
expecting success of 1400.9 'create refs/heads/main (by HEAD) with oldvalue verification':
git update-ref HEAD $B $A &&
test $B = $(git show-ref -s --verify $m)
ok 9 - create refs/heads/main (by HEAD) with oldvalue verification
expecting success of 1400.10 'fail to delete refs/heads/main (by HEAD) with stale ref':
test_must_fail git update-ref -d HEAD $A &&
test $B = $(git show-ref -s --verify $m)
error: cannot lock ref 'HEAD': is at 56d5c1374e8028a1e122ab046ab7b98165342dc4 but expected 102939797ab91a4f201d131418d2c9d919dcdd2c
ok 10 - fail to delete refs/heads/main (by HEAD) with stale ref
expecting success of 1400.11 'delete refs/heads/main (by HEAD)':
test_when_finished "git update-ref -d $m" &&
git update-ref -d HEAD $B &&
test_must_fail git show-ref --verify -q $m
ok 11 - delete refs/heads/main (by HEAD)
expecting success of 1400.12 'deleting current branch adds message to HEAD's log':
test_when_finished "git update-ref -d $m" &&
git update-ref $m $A &&
git symbolic-ref HEAD $m &&
git update-ref -m delete-$m -d $m &&
test_must_fail git show-ref --verify -q $m &&
grep "delete-$m$" .git/logs/HEAD
102939797ab91a4f201d131418d2c9d919dcdd2c 0000000000000000000000000000000000000000 C O Mitter <committer@example.com> 1112912653 -0700 delete-refs/heads/main
ok 12 - deleting current branch adds message to HEAD's log
expecting success of 1400.13 'deleting by HEAD adds message to HEAD's log':
test_when_finished "git update-ref -d $m" &&
git update-ref $m $A &&
git symbolic-ref HEAD $m &&
git update-ref -m delete-by-head -d HEAD &&
test_must_fail git show-ref --verify -q $m &&
grep "delete-by-head$" .git/logs/HEAD
102939797ab91a4f201d131418d2c9d919dcdd2c 0000000000000000000000000000000000000000 C O Mitter <committer@example.com> 1112912653 -0700 delete-by-head
ok 13 - deleting by HEAD adds message to HEAD's log
expecting success of 1400.14 'update-ref does not create reflogs by default':
test_when_finished "git update-ref -d $outside" &&
git update-ref $outside $A &&
git rev-parse $A >expect &&
git rev-parse $outside >actual &&
test_cmp expect actual &&
test_must_fail git reflog exists $outside
ok 14 - update-ref does not create reflogs by default
expecting success of 1400.15 'update-ref creates reflogs with --create-reflog':
test_when_finished "git update-ref -d $outside" &&
git update-ref --create-reflog $outside $A &&
git rev-parse $A >expect &&
git rev-parse $outside >actual &&
test_cmp expect actual &&
git reflog exists $outside
ok 15 - update-ref creates reflogs with --create-reflog
expecting success of 1400.16 'creates no reflog in bare repository':
git -C $bare update-ref $m $bareA &&
git -C $bare rev-parse $bareA >expect &&
git -C $bare rev-parse $m >actual &&
test_cmp expect actual &&
test_must_fail git -C $bare reflog exists $m
ok 16 - creates no reflog in bare repository
expecting success of 1400.17 'core.logAllRefUpdates=true creates reflog in bare repository':
test_when_finished "git -C $bare config --unset core.logAllRefUpdates && \
rm $bare/logs/$m" &&
git -C $bare config core.logAllRefUpdates true &&
git -C $bare update-ref $m $bareB &&
git -C $bare rev-parse $bareB >expect &&
git -C $bare rev-parse $m >actual &&
test_cmp expect actual &&
git -C $bare reflog exists $m
ok 17 - core.logAllRefUpdates=true creates reflog in bare repository
expecting success of 1400.18 'core.logAllRefUpdates=true does not create reflog by default':
test_config core.logAllRefUpdates true &&
test_when_finished "git update-ref -d $outside" &&
git update-ref $outside $A &&
git rev-parse $A >expect &&
git rev-parse $outside >actual &&
test_cmp expect actual &&
test_must_fail git reflog exists $outside
ok 18 - core.logAllRefUpdates=true does not create reflog by default
expecting success of 1400.19 'core.logAllRefUpdates=always creates reflog by default':
test_config core.logAllRefUpdates always &&
test_when_finished "git update-ref -d $outside" &&
git update-ref $outside $A &&
git rev-parse $A >expect &&
git rev-parse $outside >actual &&
test_cmp expect actual &&
git reflog exists $outside
ok 19 - core.logAllRefUpdates=always creates reflog by default
expecting success of 1400.20 'core.logAllRefUpdates=always creates reflog for ORIG_HEAD':
test_config core.logAllRefUpdates always &&
git update-ref ORIG_HEAD $A &&
git reflog exists ORIG_HEAD
ok 20 - core.logAllRefUpdates=always creates reflog for ORIG_HEAD
expecting success of 1400.21 '--no-create-reflog overrides core.logAllRefUpdates=always':
test_config core.logAllRefUpdates true &&
test_when_finished "git update-ref -d $outside" &&
git update-ref --no-create-reflog $outside $A &&
git rev-parse $A >expect &&
git rev-parse $outside >actual &&
test_cmp expect actual &&
test_must_fail git reflog exists $outside
ok 21 - --no-create-reflog overrides core.logAllRefUpdates=always
expecting success of 1400.22 'create refs/heads/main (by HEAD)':
git update-ref HEAD $A &&
test $A = $(git show-ref -s --verify $m)
ok 22 - create refs/heads/main (by HEAD)
expecting success of 1400.23 'pack refs':
git pack-refs --all
ok 23 - pack refs
expecting success of 1400.24 'move refs/heads/main (by HEAD)':
git update-ref HEAD $B $A &&
test $B = $(git show-ref -s --verify $m)
ok 24 - move refs/heads/main (by HEAD)
expecting success of 1400.25 'delete refs/heads/main (by HEAD) should remove both packed and loose refs/heads/main':
test_when_finished "git update-ref -d $m" &&
git update-ref -d HEAD $B &&
! grep "$m" .git/packed-refs &&
test_must_fail git show-ref --verify -q $m
ok 25 - delete refs/heads/main (by HEAD) should remove both packed and loose refs/heads/main
expecting success of 1400.26 'delete symref without dereference':
test_when_finished "git update-ref -d $m" &&
echo foo >foo.c &&
git add foo.c &&
git commit -m foo &&
git symbolic-ref SYMREF $m &&
git update-ref --no-deref -d SYMREF &&
git show-ref --verify -q $m &&
test_must_fail git show-ref --verify -q SYMREF &&
test_must_fail git symbolic-ref SYMREF
[main (root-commit) fc83d41] foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo.c
fatal: ref SYMREF is not a symbolic ref
ok 26 - delete symref without dereference
expecting success of 1400.27 'delete symref without dereference when the referred ref is packed':
test_when_finished "git update-ref -d $m" &&
echo foo >foo.c &&
git add foo.c &&
git commit -m foo &&
git symbolic-ref SYMREF $m &&
git pack-refs --all &&
git update-ref --no-deref -d SYMREF &&
git show-ref --verify -q $m &&
test_must_fail git show-ref --verify -q SYMREF &&
test_must_fail git symbolic-ref SYMREF
[main (root-commit) fc83d41] foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo.c
fatal: ref SYMREF is not a symbolic ref
ok 27 - delete symref without dereference when the referred ref is packed
expecting success of 1400.28 'update-ref -d is not confused by self-reference':
git symbolic-ref refs/heads/self refs/heads/self &&
test_when_finished "rm -f .git/refs/heads/self" &&
test_path_is_file .git/refs/heads/self &&
test_must_fail git update-ref -d refs/heads/self &&
test_path_is_file .git/refs/heads/self
error: multiple updates for 'refs/heads/self' (including one via symref 'refs/heads/self') are not allowed
ok 28 - update-ref -d is not confused by self-reference
expecting success of 1400.29 'update-ref --no-deref -d can delete self-reference':
git symbolic-ref refs/heads/self refs/heads/self &&
test_when_finished "rm -f .git/refs/heads/self" &&
test_path_is_file .git/refs/heads/self &&
git update-ref --no-deref -d refs/heads/self &&
test_must_fail git show-ref --verify -q refs/heads/self
ok 29 - update-ref --no-deref -d can delete self-reference
expecting success of 1400.30 'update-ref --no-deref -d can delete reference to bad ref':
>.git/refs/heads/bad &&
test_when_finished "rm -f .git/refs/heads/bad" &&
git symbolic-ref refs/heads/ref-to-bad refs/heads/bad &&
test_when_finished "git update-ref -d refs/heads/ref-to-bad" &&
test_path_is_file .git/refs/heads/ref-to-bad &&
git update-ref --no-deref -d refs/heads/ref-to-bad &&
test_must_fail git show-ref --verify -q refs/heads/ref-to-bad
ok 30 - update-ref --no-deref -d can delete reference to bad ref
expecting success of 1400.31 '(not) create HEAD with old sha1':
test_must_fail git update-ref HEAD $A $B
fatal: update_ref failed for ref 'HEAD': cannot lock ref 'HEAD': unable to resolve reference 'refs/heads/main'
ok 31 - (not) create HEAD with old sha1
expecting success of 1400.32 '(not) prior created .git/refs/heads/main':
test_when_finished "git update-ref -d $m" &&
test_must_fail git show-ref --verify -q $m
ok 32 - (not) prior created .git/refs/heads/main
expecting success of 1400.33 'create HEAD':
git update-ref HEAD $A
ok 33 - create HEAD
expecting success of 1400.34 '(not) change HEAD with wrong SHA1':
test_must_fail git update-ref HEAD $B $Z
fatal: update_ref failed for ref 'HEAD': cannot lock ref 'HEAD': reference already exists
ok 34 - (not) change HEAD with wrong SHA1
expecting success of 1400.35 '(not) changed .git/refs/heads/main':
test_when_finished "git update-ref -d $m" &&
! test $B = $(git show-ref -s --verify $m)
ok 35 - (not) changed .git/refs/heads/main
expecting success of 1400.36 'create refs/heads/main (logged by touch)':
test_config core.logAllRefUpdates false &&
GIT_COMMITTER_DATE="2005-05-26 23:30" \
git update-ref --create-reflog HEAD $A -m "Initial Creation" &&
test $A = $(git show-ref -s --verify $m)
ok 36 - create refs/heads/main (logged by touch)
expecting success of 1400.37 'update refs/heads/main (logged by touch)':
test_config core.logAllRefUpdates false &&
GIT_COMMITTER_DATE="2005-05-26 23:31" \
git update-ref HEAD $B $A -m "Switch" &&
test $B = $(git show-ref -s --verify $m)
ok 37 - update refs/heads/main (logged by touch)
expecting success of 1400.38 'set refs/heads/main (logged by touch)':
test_config core.logAllRefUpdates false &&
GIT_COMMITTER_DATE="2005-05-26 23:41" \
git update-ref HEAD $A &&
test $A = $(git show-ref -s --verify $m)
ok 38 - set refs/heads/main (logged by touch)
expecting success of 1400.39 'empty directory removal':
git branch d1/d2/r1 HEAD &&
git branch d1/r2 HEAD &&
test_path_is_file .git/refs/heads/d1/d2/r1 &&
test_path_is_file .git/logs/refs/heads/d1/d2/r1 &&
git branch -d d1/d2/r1 &&
test_must_fail git show-ref --verify -q refs/heads/d1/d2 &&
test_must_fail git show-ref --verify -q logs/refs/heads/d1/d2 &&
test_path_is_file .git/refs/heads/d1/r2 &&
test_path_is_file .git/logs/refs/heads/d1/r2
Deleted branch d1/d2/r1 (was 1029397).
ok 39 - empty directory removal
expecting success of 1400.40 'symref empty directory removal':
git branch e1/e2/r1 HEAD &&
git branch e1/r2 HEAD &&
git checkout e1/e2/r1 &&
test_when_finished "git checkout main" &&
test_path_is_file .git/refs/heads/e1/e2/r1 &&
test_path_is_file .git/logs/refs/heads/e1/e2/r1 &&
git update-ref -d HEAD &&
test_must_fail git show-ref --verify -q refs/heads/e1/e2 &&
test_must_fail git show-ref --verify -q logs/refs/heads/e1/e2 &&
test_path_is_file .git/refs/heads/e1/r2 &&
test_path_is_file .git/logs/refs/heads/e1/r2 &&
test_path_is_file .git/logs/HEAD
Switched to branch 'e1/e2/r1'
A foo.c
Switched to branch 'main'
A foo.c
ok 40 - symref empty directory removal
expecting success of 1400.41 'verifying refs/heads/main's log (logged by touch)':
test_when_finished "git update-ref -d $m && rm -rf .git/logs actual expect" &&
test-tool ref-store main for-each-reflog-ent $m >actual &&
test_cmp actual expect
ok 41 - verifying refs/heads/main's log (logged by touch)
expecting success of 1400.42 'create refs/heads/main (logged by config)':
test_config core.logAllRefUpdates true &&
GIT_COMMITTER_DATE="2005-05-26 23:32" \
git update-ref HEAD $A -m "Initial Creation" &&
test $A = $(git show-ref -s --verify $m)
ok 42 - create refs/heads/main (logged by config)
expecting success of 1400.43 'update refs/heads/main (logged by config)':
test_config core.logAllRefUpdates true &&
GIT_COMMITTER_DATE="2005-05-26 23:33" \
git update-ref HEAD $B $A -m "Switch" &&
test $B = $(git show-ref -s --verify $m)
ok 43 - update refs/heads/main (logged by config)
expecting success of 1400.44 'set refs/heads/main (logged by config)':
test_config core.logAllRefUpdates true &&
GIT_COMMITTER_DATE="2005-05-26 23:43" \
git update-ref HEAD $A &&
test $A = $(git show-ref -s --verify $m)
ok 44 - set refs/heads/main (logged by config)
expecting success of 1400.45 'verifying refs/heads/main's log (logged by config)':
test_when_finished "git update-ref -d $m && rm -rf .git/logs actual expect" &&
test-tool ref-store main for-each-reflog-ent $m >actual &&
test_cmp actual expect
ok 45 - verifying refs/heads/main's log (logged by config)
expecting success of 1400.46 'set up for querying the reflog':
git update-ref $m $D &&
cat >.git/logs/$m <<-EOF
$Z $C $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> 1117150320 -0500
$C $A $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> 1117150350 -0500
$A $B $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> 1117150380 -0500
$F $Z $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> 1117150680 -0500
$Z $E $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> 1117150980 -0500
EOF
ok 46 - set up for querying the reflog
expecting success of 1400.47 'Query "main@{May 25 2005}" (before history)':
test_when_finished "rm -f o e" &&
git rev-parse --verify "main@{May 25 2005}" >o 2>e &&
echo "$C" >expect &&
test_cmp expect o &&
echo "warning: log for 'main' only goes back to $ed" >expect &&
test_cmp expect e
ok 47 - Query "main@{May 25 2005}" (before history)
expecting success of 1400.48 'Query main@{2005-05-25} (before history)':
test_when_finished "rm -f o e" &&
git rev-parse --verify main@{2005-05-25} >o 2>e &&
echo "$C" >expect &&
test_cmp expect o &&
echo "warning: log for 'main' only goes back to $ed" >expect &&
test_cmp expect e
ok 48 - Query main@{2005-05-25} (before history)
expecting success of 1400.49 'Query "main@{May 26 2005 23:31:59}" (1 second before history)':
test_when_finished "rm -f o e" &&
git rev-parse --verify "main@{May 26 2005 23:31:59}" >o 2>e &&
echo "$C" >expect &&
test_cmp expect o &&
echo "warning: log for 'main' only goes back to $ed" >expect &&
test_cmp expect e
ok 49 - Query "main@{May 26 2005 23:31:59}" (1 second before history)
expecting success of 1400.50 'Query "main@{May 26 2005 23:32:00}" (exactly history start)':
test_when_finished "rm -f o e" &&
git rev-parse --verify "main@{May 26 2005 23:32:00}" >o 2>e &&
echo "$C" >expect &&
test_cmp expect o &&
test_must_be_empty e
ok 50 - Query "main@{May 26 2005 23:32:00}" (exactly history start)
expecting success of 1400.51 'Query "main@{May 26 2005 23:32:30}" (first non-creation change)':
test_when_finished "rm -f o e" &&
git rev-parse --verify "main@{May 26 2005 23:32:30}" >o 2>e &&
echo "$A" >expect &&
test_cmp expect o &&
test_must_be_empty e
ok 51 - Query "main@{May 26 2005 23:32:30}" (first non-creation change)
expecting success of 1400.52 'Query "main@{2005-05-26 23:33:01}" (middle of history with gap)':
test_when_finished "rm -f o e" &&
git rev-parse --verify "main@{2005-05-26 23:33:01}" >o 2>e &&
echo "$B" >expect &&
test_cmp expect o &&
test_i18ngrep -F "warning: log for ref $m has gap after $gd" e
warning: log for ref refs/heads/main has gap after Thu, 26 May 2005 18:33:00 -0500
ok 52 - Query "main@{2005-05-26 23:33:01}" (middle of history with gap)
expecting success of 1400.53 'Query "main@{2005-05-26 23:38:00}" (middle of history)':
test_when_finished "rm -f o e" &&
git rev-parse --verify "main@{2005-05-26 23:38:00}" >o 2>e &&
echo "$Z" >expect &&
test_cmp expect o &&
test_must_be_empty e
ok 53 - Query "main@{2005-05-26 23:38:00}" (middle of history)
expecting success of 1400.54 'Query "main@{2005-05-26 23:43:00}" (exact end of history)':
test_when_finished "rm -f o e" &&
git rev-parse --verify "main@{2005-05-26 23:43:00}" >o 2>e &&
echo "$E" >expect &&
test_cmp expect o &&
test_must_be_empty e
ok 54 - Query "main@{2005-05-26 23:43:00}" (exact end of history)
expecting success of 1400.55 'Query "main@{2005-05-28}" (past end of history)':
test_when_finished "rm -f o e" &&
git rev-parse --verify "main@{2005-05-28}" >o 2>e &&
echo "$D" >expect &&
test_cmp expect o &&
test_i18ngrep -F "warning: log for ref $m unexpectedly ended on $ld" e
warning: log for ref refs/heads/main unexpectedly ended on Thu, 26 May 2005 18:43:00 -0500
ok 55 - Query "main@{2005-05-28}" (past end of history)
expecting success of 1400.56 'creating initial files':
test_when_finished rm -f M &&
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)
[main (root-commit) 0c23f5f] add
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 F
create mode 100644 foo.c
[main d3968db] The other day this did not work. And then Bob told me how to fix it.
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[main e66de33] The other day this did not work. And then Bob told me how to fix it.
Author: A U Thor <author@example.com>
Date: Thu May 26 23:41:00 2005 +0000
1 file changed, 1 insertion(+), 1 deletion(-)
[main 29d1ccd] Merged initial commit and a later commit.
Author: A U Thor <author@example.com>
ok 56 - creating initial files
expecting success of 1400.57 'git commit logged updates':
test-tool ref-store main for-each-reflog-ent $m >actual &&
test_cmp expect actual
ok 57 - git commit logged updates
expecting success of 1400.58 'git cat-file blob main:F (expect OTHER)':
test OTHER = $(git cat-file blob main:F)
ok 58 - git cat-file blob main:F (expect OTHER)
expecting success of 1400.59 'git cat-file blob main@{2005-05-26 23:30}:F (expect TEST)':
test TEST = $(git cat-file blob "main@{2005-05-26 23:30}:F")
ok 59 - git cat-file blob main@{2005-05-26 23:30}:F (expect TEST)
expecting success of 1400.60 'git cat-file blob main@{2005-05-26 23:42}:F (expect OTHER)':
test OTHER = $(git cat-file blob "main@{2005-05-26 23:42}:F")
ok 60 - git cat-file blob main@{2005-05-26 23:42}:F (expect OTHER)
expecting success of 1400.61 'given old value for missing pseudoref, do not create':
test_must_fail git update-ref PSEUDOREF $A $B 2>err &&
test_must_fail git rev-parse PSEUDOREF &&
test_i18ngrep "unable to resolve reference" err
fatal: ambiguous argument 'PSEUDOREF': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
PSEUDOREF
fatal: update_ref failed for ref 'PSEUDOREF': cannot lock ref 'PSEUDOREF': unable to resolve reference 'PSEUDOREF'
ok 61 - given old value for missing pseudoref, do not create
expecting success of 1400.62 'create pseudoref':
git update-ref PSEUDOREF $A &&
test $A = $(git rev-parse PSEUDOREF)
ok 62 - create pseudoref
expecting success of 1400.63 'overwrite pseudoref with no old value given':
git update-ref PSEUDOREF $B &&
test $B = $(git rev-parse PSEUDOREF)
ok 63 - overwrite pseudoref with no old value given
expecting success of 1400.64 'overwrite pseudoref with correct old value':
git update-ref PSEUDOREF $C $B &&
test $C = $(git rev-parse PSEUDOREF)
ok 64 - overwrite pseudoref with correct old value
expecting success of 1400.65 'do not overwrite pseudoref with wrong old value':
test_must_fail git update-ref PSEUDOREF $D $E 2>err &&
test $C = $(git rev-parse PSEUDOREF) &&
test_i18ngrep "cannot lock ref.*expected" err
fatal: update_ref failed for ref 'PSEUDOREF': cannot lock ref 'PSEUDOREF': is at 3cceb89b690679aecbe1db39079f99221f1aaaa6 but expected a6166d2809963b1da1148e6922729c21214390c8
ok 65 - do not overwrite pseudoref with wrong old value
expecting success of 1400.66 'delete pseudoref':
git update-ref -d PSEUDOREF &&
test_must_fail git rev-parse PSEUDOREF
fatal: ambiguous argument 'PSEUDOREF': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
PSEUDOREF
ok 66 - delete pseudoref
expecting success of 1400.67 'do not delete pseudoref with wrong old value':
git update-ref PSEUDOREF $A &&
test_must_fail git update-ref -d PSEUDOREF $B 2>err &&
test $A = $(git rev-parse PSEUDOREF) &&
test_i18ngrep "cannot lock ref.*expected" err
error: cannot lock ref 'PSEUDOREF': is at 102939797ab91a4f201d131418d2c9d919dcdd2c but expected 56d5c1374e8028a1e122ab046ab7b98165342dc4
ok 67 - do not delete pseudoref with wrong old value
expecting success of 1400.68 'delete pseudoref with correct old value':
git update-ref -d PSEUDOREF $A &&
test_must_fail git rev-parse PSEUDOREF
fatal: ambiguous argument 'PSEUDOREF': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
PSEUDOREF
ok 68 - delete pseudoref with correct old value
expecting success of 1400.69 'create pseudoref with old OID zero':
git update-ref PSEUDOREF $A $Z &&
test $A = $(git rev-parse PSEUDOREF)
ok 69 - create pseudoref with old OID zero
expecting success of 1400.70 'do not overwrite pseudoref with old OID zero':
test_when_finished git update-ref -d PSEUDOREF &&
test_must_fail git update-ref PSEUDOREF $B $Z 2>err &&
test $A = $(git rev-parse PSEUDOREF) &&
test_i18ngrep "already exists" err
fatal: update_ref failed for ref 'PSEUDOREF': cannot lock ref 'PSEUDOREF': reference already exists
ok 70 - do not overwrite pseudoref with old OID zero
expecting success of 1400.71 'stdin test setup':
echo "$pws" >"$pws" &&
git add -- "$pws" &&
git commit -m "$pws"
[main 536da9b] path with space
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 path with space
ok 71 - stdin test setup
expecting success of 1400.72 '-z fails without --stdin':
test_must_fail git update-ref -z $m $m $m 2>err &&
test_i18ngrep "usage: git update-ref" err
usage: git update-ref [<options>] -d <refname> [<old-val>]
ok 72 - -z fails without --stdin
expecting success of 1400.73 'stdin works with no input':
>stdin &&
git update-ref --stdin <stdin &&
git rev-parse --verify -q $m
536da9bc9e8e6d0baf01b41cf3cc49bb819559e6
ok 73 - stdin works with no input
expecting success of 1400.74 'stdin fails on empty line':
echo "" >stdin &&
test_must_fail git update-ref --stdin <stdin 2>err &&
grep "fatal: empty command in input" err
fatal: empty command in input
ok 74 - stdin fails on empty line
expecting success of 1400.75 'stdin fails on only whitespace':
echo " " >stdin &&
test_must_fail git update-ref --stdin <stdin 2>err &&
grep "fatal: whitespace before command: " err
fatal: whitespace before command:
ok 75 - stdin fails on only whitespace
expecting success of 1400.76 'stdin fails on leading whitespace':
echo " create $a $m" >stdin &&
test_must_fail git update-ref --stdin <stdin 2>err &&
grep "fatal: whitespace before command: create $a $m" err
fatal: whitespace before command: create refs/heads/a refs/heads/main
ok 76 - stdin fails on leading whitespace
expecting success of 1400.77 'stdin fails on unknown command':
echo "unknown $a" >stdin &&
test_must_fail git update-ref --stdin <stdin 2>err &&
grep "fatal: unknown command: unknown $a" err
fatal: unknown command: unknown refs/heads/a
ok 77 - stdin fails on unknown command
expecting success of 1400.78 'stdin fails on unbalanced quotes':
echo "create $a \"main" >stdin &&
test_must_fail git update-ref --stdin <stdin 2>err &&
grep "fatal: badly quoted argument: \\\"main" err
fatal: badly quoted argument: "main
ok 78 - stdin fails on unbalanced quotes
expecting success of 1400.79 'stdin fails on invalid escape':
echo "create $a \"ma\zn\"" >stdin &&
test_must_fail git update-ref --stdin <stdin 2>err &&
grep "fatal: badly quoted argument: \\\"ma\\\\zn\\\"" err
fatal: badly quoted argument: "ma\zn"
ok 79 - stdin fails on invalid escape
expecting success of 1400.80 'stdin fails on junk after quoted argument':
echo "create \"$a\"main" >stdin &&
test_must_fail git update-ref --stdin <stdin 2>err &&
grep "fatal: unexpected character after quoted argument: \\\"$a\\\"main" err
fatal: unexpected character after quoted argument: "refs/heads/a"main
ok 80 - stdin fails on junk after quoted argument
expecting success of 1400.81 'stdin fails create with no ref':
echo "create " >stdin &&
test_must_fail git update-ref --stdin <stdin 2>err &&
grep "fatal: create: missing <ref>" err
fatal: create: missing <ref>
ok 81 - stdin fails create with no ref
expecting success of 1400.82 'stdin fails create with no new value':
echo "create $a" >stdin &&
test_must_fail git update-ref --stdin <stdin 2>err &&
grep "fatal: create $a: missing <newvalue>" err
fatal: create refs/heads/a: missing <newvalue>
ok 82 - stdin fails create with no new value
expecting success of 1400.83 'stdin fails create with too many arguments':
echo "create $a $m $m" >stdin &&
test_must_fail git update-ref --stdin <stdin 2>err &&
grep "fatal: create $a: extra input: $m" err
fatal: create refs/heads/a: extra input: refs/heads/main
ok 83 - stdin fails create with too many arguments
expecting success of 1400.84 'stdin fails update with no ref':
echo "update " >stdin &&
test_must_fail git update-ref --stdin <stdin 2>err &&
grep "fatal: update: missing <ref>" err
fatal: update: missing <ref>
ok 84 - stdin fails update with no ref
expecting success of 1400.85 'stdin fails update with no new value':
echo "update $a" >stdin &&
test_must_fail git update-ref --stdin <stdin 2>err &&
grep "fatal: update $a: missing <newvalue>" err
fatal: update refs/heads/a: missing <newvalue>
ok 85 - stdin fails update with no new value
expecting success of 1400.86 'stdin fails update with too many arguments':
echo "update $a $m $m $m" >stdin &&
test_must_fail git update-ref --stdin <stdin 2>err &&
grep "fatal: update $a: extra input: $m" err
fatal: update refs/heads/a: extra input: refs/heads/main
ok 86 - stdin fails update with too many arguments
expecting success of 1400.87 'stdin fails delete with no ref':
echo "delete " >stdin &&
test_must_fail git update-ref --stdin <stdin 2>err &&
grep "fatal: delete: missing <ref>" err
fatal: delete: missing <ref>
ok 87 - stdin fails delete with no ref
expecting success of 1400.88 'stdin fails delete with too many arguments':
echo "delete $a $m $m" >stdin &&
test_must_fail git update-ref --stdin <stdin 2>err &&
grep "fatal: delete $a: extra input: $m" err
fatal: delete refs/heads/a: extra input: refs/heads/main
ok 88 - stdin fails delete with too many arguments
expecting success of 1400.89 'stdin fails verify with too many arguments':
echo "verify $a $m $m" >stdin &&
test_must_fail git update-ref --stdin <stdin 2>err &&
grep "fatal: verify $a: extra input: $m" err
fatal: verify refs/heads/a: extra input: refs/heads/main
ok 89 - stdin fails verify with too many arguments
expecting success of 1400.90 'stdin fails option with unknown name':
echo "option unknown" >stdin &&
test_must_fail git update-ref --stdin <stdin 2>err &&
grep "fatal: option unknown: unknown" err
fatal: option unknown: unknown
ok 90 - stdin fails option with unknown name
expecting success of 1400.91 'stdin fails with duplicate refs':
cat >stdin <<-EOF &&
create $a $m
create $b $m
create $a $m
EOF
test_must_fail git update-ref --stdin <stdin 2>err &&
test_i18ngrep "fatal: multiple updates for ref '$a' not allowed" err
fatal: multiple updates for ref 'refs/heads/a' not allowed
ok 91 - stdin fails with duplicate refs
expecting success of 1400.92 'stdin create ref works':
echo "create $a $m" >stdin &&
git update-ref --stdin <stdin &&
git rev-parse $m >expect &&
git rev-parse $a >actual &&
test_cmp expect actual
ok 92 - stdin create ref works
expecting success of 1400.93 'stdin does not create reflogs by default':
test_when_finished "git update-ref -d $outside" &&
echo "create $outside $m" >stdin &&
git update-ref --stdin <stdin &&
git rev-parse $m >expect &&
git rev-parse $outside >actual &&
test_cmp expect actual &&
test_must_fail git reflog exists $outside
ok 93 - stdin does not create reflogs by default
expecting success of 1400.94 'stdin creates reflogs with --create-reflog':
test_when_finished "git update-ref -d $outside" &&
echo "create $outside $m" >stdin &&
git update-ref --create-reflog --stdin <stdin &&
git rev-parse $m >expect &&
git rev-parse $outside >actual &&
test_cmp expect actual &&
git reflog exists $outside
ok 94 - stdin creates reflogs with --create-reflog
expecting success of 1400.95 'stdin succeeds with quoted argument':
git update-ref -d $a &&
echo "create $a \"$m\"" >stdin &&
git update-ref --stdin <stdin &&
git rev-parse $m >expect &&
git rev-parse $a >actual &&
test_cmp expect actual
ok 95 - stdin succeeds with quoted argument
expecting success of 1400.96 'stdin succeeds with escaped character':
git update-ref -d $a &&
echo "create $a \"ma\\151n\"" >stdin &&
git update-ref --stdin <stdin &&
git rev-parse $m >expect &&
git rev-parse $a >actual &&
test_cmp expect actual
ok 96 - stdin succeeds with escaped character
expecting success of 1400.97 'stdin update ref creates with zero old value':
echo "update $b $m $Z" >stdin &&
git update-ref --stdin <stdin &&
git rev-parse $m >expect &&
git rev-parse $b >actual &&
test_cmp expect actual &&
git update-ref -d $b
ok 97 - stdin update ref creates with zero old value
expecting success of 1400.98 'stdin update ref creates with empty old value':
echo "update $b $m $E" >stdin &&
git update-ref --stdin <stdin &&
git rev-parse $m >expect &&
git rev-parse $b >actual &&
test_cmp expect actual
ok 98 - stdin update ref creates with empty old value
expecting success of 1400.99 'stdin create ref works with path with space to blob':
echo "create refs/blobs/pws \"$m:$pws\"" >stdin &&
git update-ref --stdin <stdin &&
git rev-parse "$m:$pws" >expect &&
git rev-parse refs/blobs/pws >actual &&
test_cmp expect actual &&
git update-ref -d refs/blobs/pws
ok 99 - stdin create ref works with path with space to blob
expecting success of 1400.100 'stdin update ref fails with wrong old value':
echo "update $c $m $m~1" >stdin &&
test_must_fail git update-ref --stdin <stdin 2>err &&
grep "fatal: cannot lock ref '$c'" err &&
test_must_fail git rev-parse --verify -q $c
fatal: cannot lock ref 'refs/heads/c': unable to resolve reference 'refs/heads/c'
ok 100 - stdin update ref fails with wrong old value
expecting success of 1400.101 'stdin update ref fails with bad old value':
echo "update $c $m does-not-exist" >stdin &&
test_must_fail git update-ref --stdin <stdin 2>err &&
grep "fatal: update $c: invalid <oldvalue>: does-not-exist" err &&
test_must_fail git rev-parse --verify -q $c
fatal: update refs/heads/c: invalid <oldvalue>: does-not-exist
ok 101 - stdin update ref fails with bad old value
expecting success of 1400.102 'stdin create ref fails with bad new value':
echo "create $c does-not-exist" >stdin &&
test_must_fail git update-ref --stdin <stdin 2>err &&
grep "fatal: create $c: invalid <newvalue>: does-not-exist" err &&
test_must_fail git rev-parse --verify -q $c
fatal: create refs/heads/c: invalid <newvalue>: does-not-exist
ok 102 - stdin create ref fails with bad new value
expecting success of 1400.103 'stdin create ref fails with zero new value':
echo "create $c " >stdin &&
test_must_fail git update-ref --stdin <stdin 2>err &&
grep "fatal: create $c: zero <newvalue>" err &&
test_must_fail git rev-parse --verify -q $c
fatal: create refs/heads/c: zero <newvalue>
ok 103 - stdin create ref fails with zero new value
expecting success of 1400.104 'stdin update ref works with right old value':
echo "update $b $m~1 $m" >stdin &&
git update-ref --stdin <stdin &&
git rev-parse $m~1 >expect &&
git rev-parse $b >actual &&
test_cmp expect actual
ok 104 - stdin update ref works with right old value
expecting success of 1400.105 'stdin delete ref fails with wrong old value':
echo "delete $a $m~1" >stdin &&
test_must_fail git update-ref --stdin <stdin 2>err &&
grep "fatal: cannot lock ref '$a'" err &&
git rev-parse $m >expect &&
git rev-parse $a >actual &&
test_cmp expect actual
fatal: cannot lock ref 'refs/heads/a': is at 536da9bc9e8e6d0baf01b41cf3cc49bb819559e6 but expected 29d1ccdc7ee9fe415beb2415b6206b8a20f76b1c
ok 105 - stdin delete ref fails with wrong old value
expecting success of 1400.106 'stdin delete ref fails with zero old value':
echo "delete $a " >stdin &&
test_must_fail git update-ref --stdin <stdin 2>err &&
grep "fatal: delete $a: zero <oldvalue>" err &&
git rev-parse $m >expect &&
git rev-parse $a >actual &&
test_cmp expect actual
fatal: delete refs/heads/a: zero <oldvalue>
ok 106 - stdin delete ref fails with zero old value
expecting success of 1400.107 'stdin update symref works option no-deref':
git symbolic-ref TESTSYMREF $b &&
cat >stdin <<-EOF &&
option no-deref
update TESTSYMREF $a $b
EOF
git update-ref --stdin <stdin &&
git rev-parse TESTSYMREF >expect &&
git rev-parse $a >actual &&
test_cmp expect actual &&
git rev-parse $m~1 >expect &&
git rev-parse $b >actual &&
test_cmp expect actual
ok 107 - stdin update symref works option no-deref
expecting success of 1400.108 'stdin delete symref works option no-deref':
git symbolic-ref TESTSYMREF $b &&
cat >stdin <<-EOF &&
option no-deref
delete TESTSYMREF $b
EOF
git update-ref --stdin <stdin &&
test_must_fail git rev-parse --verify -q TESTSYMREF &&
git rev-parse $m~1 >expect &&
git rev-parse $b >actual &&
test_cmp expect actual
ok 108 - stdin delete symref works option no-deref
expecting success of 1400.109 'stdin update symref works flag --no-deref':
git symbolic-ref TESTSYMREFONE $b &&
git symbolic-ref TESTSYMREFTWO $b &&
cat >stdin <<-EOF &&
update TESTSYMREFONE $a $b
update TESTSYMREFTWO $a $b
EOF
git update-ref --no-deref --stdin <stdin &&
git rev-parse TESTSYMREFONE TESTSYMREFTWO >expect &&
git rev-parse $a $a >actual &&
test_cmp expect actual &&
git rev-parse $m~1 >expect &&
git rev-parse $b >actual &&
test_cmp expect actual
ok 109 - stdin update symref works flag --no-deref
expecting success of 1400.110 'stdin delete symref works flag --no-deref':
git symbolic-ref TESTSYMREFONE $b &&
git symbolic-ref TESTSYMREFTWO $b &&
cat >stdin <<-EOF &&
delete TESTSYMREFONE $b
delete TESTSYMREFTWO $b
EOF
git update-ref --no-deref --stdin <stdin &&
test_must_fail git rev-parse --verify -q TESTSYMREFONE &&
test_must_fail git rev-parse --verify -q TESTSYMREFTWO &&
git rev-parse $m~1 >expect &&
git rev-parse $b >actual &&
test_cmp expect actual
ok 110 - stdin delete symref works flag --no-deref
expecting success of 1400.111 'stdin delete ref works with right old value':
echo "delete $b $m~1" >stdin &&
git update-ref --stdin <stdin &&
test_must_fail git rev-parse --verify -q $b
ok 111 - stdin delete ref works with right old value
expecting success of 1400.112 'stdin update/create/verify combination works':
cat >stdin <<-EOF &&
update $a $m
create $b $m
verify $c
EOF
git update-ref --stdin <stdin &&
git rev-parse $m >expect &&
git rev-parse $a >actual &&
test_cmp expect actual &&
git rev-parse $b >actual &&
test_cmp expect actual &&
test_must_fail git rev-parse --verify -q $c
ok 112 - stdin update/create/verify combination works
expecting success of 1400.113 'stdin verify succeeds for correct value':
git rev-parse $m >expect &&
echo "verify $m $m" >stdin &&
git update-ref --stdin <stdin &&
git rev-parse $m >actual &&
test_cmp expect actual
ok 113 - stdin verify succeeds for correct value
expecting success of 1400.114 'stdin verify succeeds for missing reference':
echo "verify refs/heads/missing $Z" >stdin &&
git update-ref --stdin <stdin &&
test_must_fail git rev-parse --verify -q refs/heads/missing
ok 114 - stdin verify succeeds for missing reference
expecting success of 1400.115 'stdin verify treats no value as missing':
echo "verify refs/heads/missing" >stdin &&
git update-ref --stdin <stdin &&
test_must_fail git rev-parse --verify -q refs/heads/missing
ok 115 - stdin verify treats no value as missing
expecting success of 1400.116 'stdin verify fails for wrong value':
git rev-parse $m >expect &&
echo "verify $m $m~1" >stdin &&
test_must_fail git update-ref --stdin <stdin &&
git rev-parse $m >actual &&
test_cmp expect actual
fatal: cannot lock ref 'refs/heads/main': is at 536da9bc9e8e6d0baf01b41cf3cc49bb819559e6 but expected 29d1ccdc7ee9fe415beb2415b6206b8a20f76b1c
ok 116 - stdin verify fails for wrong value
expecting success of 1400.117 'stdin verify fails for mistaken null value':
git rev-parse $m >expect &&
echo "verify $m $Z" >stdin &&
test_must_fail git update-ref --stdin <stdin &&
git rev-parse $m >actual &&
test_cmp expect actual
fatal: cannot lock ref 'refs/heads/main': reference already exists
ok 117 - stdin verify fails for mistaken null value
expecting success of 1400.118 'stdin verify fails for mistaken empty value':
M=$(git rev-parse $m) &&
test_when_finished "git update-ref $m $M" &&
git rev-parse $m >expect &&
echo "verify $m" >stdin &&
test_must_fail git update-ref --stdin <stdin &&
git rev-parse $m >actual &&
test_cmp expect actual
fatal: cannot lock ref 'refs/heads/main': reference already exists
ok 118 - stdin verify fails for mistaken empty value
expecting success of 1400.119 'stdin update refs works with identity updates':
cat >stdin <<-EOF &&
update $a $m $m
update $b $m $m
update $c $Z $E
EOF
git update-ref --stdin <stdin &&
git rev-parse $m >expect &&
git rev-parse $a >actual &&
test_cmp expect actual &&
git rev-parse $b >actual &&
test_cmp expect actual &&
test_must_fail git rev-parse --verify -q $c
ok 119 - stdin update refs works with identity updates
expecting success of 1400.120 'stdin update refs fails with wrong old value':
git update-ref $c $m &&
cat >stdin <<-EOF &&
update $a $m $m
update $b $m $m
update $c
EOF
test_must_fail git update-ref --stdin <stdin 2>err &&
grep "fatal: cannot lock ref '$c'" err &&
git rev-parse $m >expect &&
git rev-parse $a >actual &&
test_cmp expect actual &&
git rev-parse $b >actual &&
test_cmp expect actual &&
git rev-parse $c >actual &&
test_cmp expect actual
fatal: cannot lock ref 'refs/heads/c': reference already exists
ok 120 - stdin update refs fails with wrong old value
expecting success of 1400.121 'stdin delete refs works with packed and loose refs':
git pack-refs --all &&
git update-ref $c $m~1 &&
cat >stdin <<-EOF &&
delete $a $m
update $b $Z $m
update $c $E $m~1
EOF
git update-ref --stdin <stdin &&
test_must_fail git rev-parse --verify -q $a &&
test_must_fail git rev-parse --verify -q $b &&
test_must_fail git rev-parse --verify -q $c
ok 121 - stdin delete refs works with packed and loose refs
expecting success of 1400.122 'stdin -z works on empty input':
>stdin &&
git update-ref -z --stdin <stdin &&
git rev-parse --verify -q $m
536da9bc9e8e6d0baf01b41cf3cc49bb819559e6
ok 122 - stdin -z works on empty input
expecting success of 1400.123 'stdin -z fails on empty line':
echo "" >stdin &&
test_must_fail git update-ref -z --stdin <stdin 2>err &&
grep "fatal: whitespace before command: " err
fatal: whitespace before command:
ok 123 - stdin -z fails on empty line
expecting success of 1400.124 'stdin -z fails on empty command':
printf $F "" >stdin &&
test_must_fail git update-ref -z --stdin <stdin 2>err &&
grep "fatal: empty command in input" err
fatal: empty command in input
ok 124 - stdin -z fails on empty command
expecting success of 1400.125 'stdin -z fails on only whitespace':
printf $F " " >stdin &&
test_must_fail git update-ref -z --stdin <stdin 2>err &&
grep "fatal: whitespace before command: " err
fatal: whitespace before command:
ok 125 - stdin -z fails on only whitespace
expecting success of 1400.126 'stdin -z fails on leading whitespace':
printf $F " create $a" "$m" >stdin &&
test_must_fail git update-ref -z --stdin <stdin 2>err &&
grep "fatal: whitespace before command: create $a" err
fatal: whitespace before command: create refs/heads/a
ok 126 - stdin -z fails on leading whitespace
expecting success of 1400.127 'stdin -z fails on unknown command':
printf $F "unknown $a" >stdin &&
test_must_fail git update-ref -z --stdin <stdin 2>err &&
grep "fatal: unknown command: unknown $a" err
fatal: unknown command: unknown refs/heads/a
ok 127 - stdin -z fails on unknown command
expecting success of 1400.128 'stdin -z fails create with no ref':
printf $F "create " >stdin &&
test_must_fail git update-ref -z --stdin <stdin 2>err &&
grep "fatal: create: missing <ref>" err
fatal: create: missing <ref>
ok 128 - stdin -z fails create with no ref
expecting success of 1400.129 'stdin -z fails create with no new value':
printf $F "create $a" >stdin &&
test_must_fail git update-ref -z --stdin <stdin 2>err &&
grep "fatal: create $a: unexpected end of input when reading <newvalue>" err
fatal: create refs/heads/a: unexpected end of input when reading <newvalue>
ok 129 - stdin -z fails create with no new value
expecting success of 1400.130 'stdin -z fails create with too many arguments':
printf $F "create $a" "$m" "$m" >stdin &&
test_must_fail git update-ref -z --stdin <stdin 2>err &&
grep "fatal: unknown command: $m" err
fatal: unknown command: refs/heads/main
ok 130 - stdin -z fails create with too many arguments
expecting success of 1400.131 'stdin -z fails update with no ref':
printf $F "update " >stdin &&
test_must_fail git update-ref -z --stdin <stdin 2>err &&
grep "fatal: update: missing <ref>" err
fatal: update: missing <ref>
ok 131 - stdin -z fails update with no ref
expecting success of 1400.132 'stdin -z fails update with too few args':
printf $F "update $a" "$m" >stdin &&
test_must_fail git update-ref -z --stdin <stdin 2>err &&
grep "fatal: update $a: unexpected end of input when reading <oldvalue>" err
fatal: update refs/heads/a: unexpected end of input when reading <oldvalue>
ok 132 - stdin -z fails update with too few args
expecting success of 1400.133 'stdin -z emits warning with empty new value':
git update-ref $a $m &&
printf $F "update $a" "" "" >stdin &&
git update-ref -z --stdin <stdin 2>err &&
grep "warning: update $a: missing <newvalue>, treating as zero" err &&
test_must_fail git rev-parse --verify -q $a
warning: update refs/heads/a: missing <newvalue>, treating as zero
ok 133 - stdin -z emits warning with empty new value
expecting success of 1400.134 'stdin -z fails update with no new value':
printf $F "update $a" >stdin &&
test_must_fail git update-ref -z --stdin <stdin 2>err &&
grep "fatal: update $a: unexpected end of input when reading <newvalue>" err
fatal: update refs/heads/a: unexpected end of input when reading <newvalue>
ok 134 - stdin -z fails update with no new value
expecting success of 1400.135 'stdin -z fails update with no old value':
printf $F "update $a" "$m" >stdin &&
test_must_fail git update-ref -z --stdin <stdin 2>err &&
grep "fatal: update $a: unexpected end of input when reading <oldvalue>" err
fatal: update refs/heads/a: unexpected end of input when reading <oldvalue>
ok 135 - stdin -z fails update with no old value
expecting success of 1400.136 'stdin -z fails update with too many arguments':
printf $F "update $a" "$m" "$m" "$m" >stdin &&
test_must_fail git update-ref -z --stdin <stdin 2>err &&
grep "fatal: unknown command: $m" err
fatal: unknown command: refs/heads/main
ok 136 - stdin -z fails update with too many arguments
expecting success of 1400.137 'stdin -z fails delete with no ref':
printf $F "delete " >stdin &&
test_must_fail git update-ref -z --stdin <stdin 2>err &&
grep "fatal: delete: missing <ref>" err
fatal: delete: missing <ref>
ok 137 - stdin -z fails delete with no ref
expecting success of 1400.138 'stdin -z fails delete with no old value':
printf $F "delete $a" >stdin &&
test_must_fail git update-ref -z --stdin <stdin 2>err &&
grep "fatal: delete $a: unexpected end of input when reading <oldvalue>" err
fatal: delete refs/heads/a: unexpected end of input when reading <oldvalue>
ok 138 - stdin -z fails delete with no old value
expecting success of 1400.139 'stdin -z fails delete with too many arguments':
printf $F "delete $a" "$m" "$m" >stdin &&
test_must_fail git update-ref -z --stdin <stdin 2>err &&
grep "fatal: unknown command: $m" err
fatal: unknown command: refs/heads/main
ok 139 - stdin -z fails delete with too many arguments
expecting success of 1400.140 'stdin -z fails verify with too many arguments':
printf $F "verify $a" "$m" "$m" >stdin &&
test_must_fail git update-ref -z --stdin <stdin 2>err &&
grep "fatal: unknown command: $m" err
fatal: unknown command: refs/heads/main
ok 140 - stdin -z fails verify with too many arguments
expecting success of 1400.141 'stdin -z fails verify with no old value':
printf $F "verify $a" >stdin &&
test_must_fail git update-ref -z --stdin <stdin 2>err &&
grep "fatal: verify $a: unexpected end of input when reading <oldvalue>" err
fatal: verify refs/heads/a: unexpected end of input when reading <oldvalue>
ok 141 - stdin -z fails verify with no old value
expecting success of 1400.142 'stdin -z fails option with unknown name':
printf $F "option unknown" >stdin &&
test_must_fail git update-ref -z --stdin <stdin 2>err &&
grep "fatal: option unknown: unknown" err
fatal: option unknown: unknown
ok 142 - stdin -z fails option with unknown name
expecting success of 1400.143 'stdin -z fails with duplicate refs':
printf $F "create $a" "$m" "create $b" "$m" "create $a" "$m" >stdin &&
test_must_fail git update-ref -z --stdin <stdin 2>err &&
test_i18ngrep "fatal: multiple updates for ref '$a' not allowed" err
fatal: multiple updates for ref 'refs/heads/a' not allowed
ok 143 - stdin -z fails with duplicate refs
expecting success of 1400.144 'stdin -z create ref works':
printf $F "create $a" "$m" >stdin &&
git update-ref -z --stdin <stdin &&
git rev-parse $m >expect &&
git rev-parse $a >actual &&
test_cmp expect actual
ok 144 - stdin -z create ref works
expecting success of 1400.145 'stdin -z update ref creates with zero old value':
printf $F "update $b" "$m" "$Z" >stdin &&
git update-ref -z --stdin <stdin &&
git rev-parse $m >expect &&
git rev-parse $b >actual &&
test_cmp expect actual &&
git update-ref -d $b
ok 145 - stdin -z update ref creates with zero old value
expecting success of 1400.146 'stdin -z update ref creates with empty old value':
printf $F "update $b" "$m" "" >stdin &&
git update-ref -z --stdin <stdin &&
git rev-parse $m >expect &&
git rev-parse $b >actual &&
test_cmp expect actual
ok 146 - stdin -z update ref creates with empty old value
expecting success of 1400.147 'stdin -z create ref works with path with space to blob':
printf $F "create refs/blobs/pws" "$m:$pws" >stdin &&
git update-ref -z --stdin <stdin &&
git rev-parse "$m:$pws" >expect &&
git rev-parse refs/blobs/pws >actual &&
test_cmp expect actual &&
git update-ref -d refs/blobs/pws
ok 147 - stdin -z create ref works with path with space to blob
expecting success of 1400.148 'stdin -z update ref fails with wrong old value':
printf $F "update $c" "$m" "$m~1" >stdin &&
test_must_fail git update-ref -z --stdin <stdin 2>err &&
grep "fatal: cannot lock ref '$c'" err &&
test_must_fail git rev-parse --verify -q $c
fatal: cannot lock ref 'refs/heads/c': unable to resolve reference 'refs/heads/c'
ok 148 - stdin -z update ref fails with wrong old value
expecting success of 1400.149 'stdin -z update ref fails with bad old value':
printf $F "update $c" "$m" "does-not-exist" >stdin &&
test_must_fail git update-ref -z --stdin <stdin 2>err &&
grep "fatal: update $c: invalid <oldvalue>: does-not-exist" err &&
test_must_fail git rev-parse --verify -q $c
fatal: update refs/heads/c: invalid <oldvalue>: does-not-exist
ok 149 - stdin -z update ref fails with bad old value
expecting success of 1400.150 'stdin -z create ref fails when ref exists':
git update-ref $c $m &&
git rev-parse "$c" >expect &&
printf $F "create $c" "$m~1" >stdin &&
test_must_fail git update-ref -z --stdin <stdin 2>err &&
grep "fatal: cannot lock ref '$c'" err &&
git rev-parse "$c" >actual &&
test_cmp expect actual
fatal: cannot lock ref 'refs/heads/c': reference already exists
ok 150 - stdin -z create ref fails when ref exists
expecting success of 1400.151 'stdin -z create ref fails with bad new value':
git update-ref -d "$c" &&
printf $F "create $c" "does-not-exist" >stdin &&
test_must_fail git update-ref -z --stdin <stdin 2>err &&
grep "fatal: create $c: invalid <newvalue>: does-not-exist" err &&
test_must_fail git rev-parse --verify -q $c
fatal: create refs/heads/c: invalid <newvalue>: does-not-exist
ok 151 - stdin -z create ref fails with bad new value
expecting success of 1400.152 'stdin -z create ref fails with empty new value':
printf $F "create $c" "" >stdin &&
test_must_fail git update-ref -z --stdin <stdin 2>err &&
grep "fatal: create $c: missing <newvalue>" err &&
test_must_fail git rev-parse --verify -q $c
fatal: create refs/heads/c: missing <newvalue>
ok 152 - stdin -z create ref fails with empty new value
expecting success of 1400.153 'stdin -z update ref works with right old value':
printf $F "update $b" "$m~1" "$m" >stdin &&
git update-ref -z --stdin <stdin &&
git rev-parse $m~1 >expect &&
git rev-parse $b >actual &&
test_cmp expect actual
ok 153 - stdin -z update ref works with right old value
expecting success of 1400.154 'stdin -z delete ref fails with wrong old value':
printf $F "delete $a" "$m~1" >stdin &&
test_must_fail git update-ref -z --stdin <stdin 2>err &&
grep "fatal: cannot lock ref '$a'" err &&
git rev-parse $m >expect &&
git rev-parse $a >actual &&
test_cmp expect actual
fatal: cannot lock ref 'refs/heads/a': is at 536da9bc9e8e6d0baf01b41cf3cc49bb819559e6 but expected 29d1ccdc7ee9fe415beb2415b6206b8a20f76b1c
ok 154 - stdin -z delete ref fails with wrong old value
expecting success of 1400.155 'stdin -z delete ref fails with zero old value':
printf $F "delete $a" "$Z" >stdin &&
test_must_fail git update-ref -z --stdin <stdin 2>err &&
grep "fatal: delete $a: zero <oldvalue>" err &&
git rev-parse $m >expect &&
git rev-parse $a >actual &&
test_cmp expect actual
fatal: delete refs/heads/a: zero <oldvalue>
ok 155 - stdin -z delete ref fails with zero old value
expecting success of 1400.156 'stdin -z update symref works option no-deref':
git symbolic-ref TESTSYMREF $b &&
printf $F "option no-deref" "update TESTSYMREF" "$a" "$b" >stdin &&
git update-ref -z --stdin <stdin &&
git rev-parse TESTSYMREF >expect &&
git rev-parse $a >actual &&
test_cmp expect actual &&
git rev-parse $m~1 >expect &&
git rev-parse $b >actual &&
test_cmp expect actual
ok 156 - stdin -z update symref works option no-deref
expecting success of 1400.157 'stdin -z delete symref works option no-deref':
git symbolic-ref TESTSYMREF $b &&
printf $F "option no-deref" "delete TESTSYMREF" "$b" >stdin &&
git update-ref -z --stdin <stdin &&
test_must_fail git rev-parse --verify -q TESTSYMREF &&
git rev-parse $m~1 >expect &&
git rev-parse $b >actual &&
test_cmp expect actual
ok 157 - stdin -z delete symref works option no-deref
expecting success of 1400.158 'stdin -z delete ref works with right old value':
printf $F "delete $b" "$m~1" >stdin &&
git update-ref -z --stdin <stdin &&
test_must_fail git rev-parse --verify -q $b
ok 158 - stdin -z delete ref works with right old value
expecting success of 1400.159 'stdin -z update/create/verify combination works':
printf $F "update $a" "$m" "" "create $b" "$m" "verify $c" "" >stdin &&
git update-ref -z --stdin <stdin &&
git rev-parse $m >expect &&
git rev-parse $a >actual &&
test_cmp expect actual &&
git rev-parse $b >actual &&
test_cmp expect actual &&
test_must_fail git rev-parse --verify -q $c
ok 159 - stdin -z update/create/verify combination works
expecting success of 1400.160 'stdin -z verify succeeds for correct value':
git rev-parse $m >expect &&
printf $F "verify $m" "$m" >stdin &&
git update-ref -z --stdin <stdin &&
git rev-parse $m >actual &&
test_cmp expect actual
ok 160 - stdin -z verify succeeds for correct value
expecting success of 1400.161 'stdin -z verify succeeds for missing reference':
printf $F "verify refs/heads/missing" "$Z" >stdin &&
git update-ref -z --stdin <stdin &&
test_must_fail git rev-parse --verify -q refs/heads/missing
ok 161 - stdin -z verify succeeds for missing reference
expecting success of 1400.162 'stdin -z verify treats no value as missing':
printf $F "verify refs/heads/missing" "" >stdin &&
git update-ref -z --stdin <stdin &&
test_must_fail git rev-parse --verify -q refs/heads/missing
ok 162 - stdin -z verify treats no value as missing
expecting success of 1400.163 'stdin -z verify fails for wrong value':
git rev-parse $m >expect &&
printf $F "verify $m" "$m~1" >stdin &&
test_must_fail git update-ref -z --stdin <stdin &&
git rev-parse $m >actual &&
test_cmp expect actual
fatal: cannot lock ref 'refs/heads/main': is at 536da9bc9e8e6d0baf01b41cf3cc49bb819559e6 but expected 29d1ccdc7ee9fe415beb2415b6206b8a20f76b1c
ok 163 - stdin -z verify fails for wrong value
expecting success of 1400.164 'stdin -z verify fails for mistaken null value':
git rev-parse $m >expect &&
printf $F "verify $m" "$Z" >stdin &&
test_must_fail git update-ref -z --stdin <stdin &&
git rev-parse $m >actual &&
test_cmp expect actual
fatal: cannot lock ref 'refs/heads/main': reference already exists
ok 164 - stdin -z verify fails for mistaken null value
expecting success of 1400.165 'stdin -z verify fails for mistaken empty value':
M=$(git rev-parse $m) &&
test_when_finished "git update-ref $m $M" &&
git rev-parse $m >expect &&
printf $F "verify $m" "" >stdin &&
test_must_fail git update-ref -z --stdin <stdin &&
git rev-parse $m >actual &&
test_cmp expect actual
fatal: cannot lock ref 'refs/heads/main': reference already exists
ok 165 - stdin -z verify fails for mistaken empty value
expecting success of 1400.166 'stdin -z update refs works with identity updates':
printf $F "update $a" "$m" "$m" "update $b" "$m" "$m" "update $c" "$Z" "" >stdin &&
git update-ref -z --stdin <stdin &&
git rev-parse $m >expect &&
git rev-parse $a >actual &&
test_cmp expect actual &&
git rev-parse $b >actual &&
test_cmp expect actual &&
test_must_fail git rev-parse --verify -q $c
ok 166 - stdin -z update refs works with identity updates
expecting success of 1400.167 'stdin -z update refs fails with wrong old value':
git update-ref $c $m &&
printf $F "update $a" "$m" "$m" "update $b" "$m" "$m" "update $c" "$m" "$Z" >stdin &&
test_must_fail git update-ref -z --stdin <stdin 2>err &&
grep "fatal: cannot lock ref '$c'" err &&
git rev-parse $m >expect &&
git rev-parse $a >actual &&
test_cmp expect actual &&
git rev-parse $b >actual &&
test_cmp expect actual &&
git rev-parse $c >actual &&
test_cmp expect actual
fatal: cannot lock ref 'refs/heads/c': reference already exists
ok 167 - stdin -z update refs fails with wrong old value
expecting success of 1400.168 'stdin -z delete refs works with packed and loose refs':
git pack-refs --all &&
git update-ref $c $m~1 &&
printf $F "delete $a" "$m" "update $b" "$Z" "$m" "update $c" "" "$m~1" >stdin &&
git update-ref -z --stdin <stdin &&
test_must_fail git rev-parse --verify -q $a &&
test_must_fail git rev-parse --verify -q $b &&
test_must_fail git rev-parse --verify -q $c
warning: update refs/heads/c: missing <newvalue>, treating as zero
ok 168 - stdin -z delete refs works with packed and loose refs
expecting success of 1400.169 'fails with duplicate HEAD update':
git branch target1 $A &&
git checkout target1 &&
cat >stdin <<-EOF &&
update refs/heads/target1 $C
option no-deref
update HEAD $B
EOF
test_must_fail git update-ref --stdin <stdin 2>err &&
test_i18ngrep "fatal: multiple updates for 'HEAD' (including one via its referent .refs/heads/target1.) are not allowed" err &&
echo "refs/heads/target1" >expect &&
git symbolic-ref HEAD >actual &&
test_cmp expect actual &&
echo "$A" >expect &&
git rev-parse refs/heads/target1 >actual &&
test_cmp expect actual
Switched to branch 'target1'
fatal: multiple updates for 'HEAD' (including one via its referent 'refs/heads/target1') are not allowed
ok 169 - fails with duplicate HEAD update
expecting success of 1400.170 'fails with duplicate ref update via symref':
git branch target2 $A &&
git symbolic-ref refs/heads/symref2 refs/heads/target2 &&
cat >stdin <<-EOF &&
update refs/heads/target2 $C
update refs/heads/symref2 $B
EOF
test_must_fail git update-ref --stdin <stdin 2>err &&
test_i18ngrep "fatal: multiple updates for 'refs/heads/target2' (including one via symref .refs/heads/symref2.) are not allowed" err &&
echo "refs/heads/target2" >expect &&
git symbolic-ref refs/heads/symref2 >actual &&
test_cmp expect actual &&
echo "$A" >expect &&
git rev-parse refs/heads/target2 >actual &&
test_cmp expect actual
fatal: multiple updates for 'refs/heads/target2' (including one via symref 'refs/heads/symref2') are not allowed
ok 170 - fails with duplicate ref update via symref
checking prerequisite: ULIMIT_FILE_DESCRIPTORS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-ULIMIT_FILE_DESCRIPTORS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-ULIMIT_FILE_DESCRIPTORS" &&
test_have_prereq !MINGW,!CYGWIN &&
run_with_limited_open_files true
)
prerequisite ULIMIT_FILE_DESCRIPTORS ok
expecting success of 1400.171 'large transaction creating branches does not burst open file limit':
(
for i in $(test_seq 33)
do
echo "create refs/heads/$i HEAD" || exit 1
done >large_input &&
run_with_limited_open_files git update-ref --stdin <large_input &&
git rev-parse --verify -q refs/heads/33
)
102939797ab91a4f201d131418d2c9d919dcdd2c
ok 171 - large transaction creating branches does not burst open file limit
expecting success of 1400.172 'large transaction deleting branches does not burst open file limit':
(
for i in $(test_seq 33)
do
echo "delete refs/heads/$i HEAD" || exit 1
done >large_input &&
run_with_limited_open_files git update-ref --stdin <large_input &&
test_must_fail git rev-parse --verify -q refs/heads/33
)
ok 172 - large transaction deleting branches does not burst open file limit
expecting success of 1400.173 'handle per-worktree refs in refs/bisect':
git commit --allow-empty -m "initial commit" &&
git worktree add -b branch worktree &&
(
cd worktree &&
git commit --allow-empty -m "test commit" &&
git for-each-ref >for-each-ref.out &&
! grep refs/bisect for-each-ref.out &&
git update-ref refs/bisect/something HEAD &&
git rev-parse refs/bisect/something >../worktree-head &&
git for-each-ref | grep refs/bisect/something
) &&
git show-ref >actual &&
! grep refs/bisect actual &&
test_must_fail git rev-parse refs/bisect/something &&
git update-ref refs/bisect/something HEAD &&
git rev-parse refs/bisect/something >main-head &&
! test_cmp main-head worktree-head
[target1 58a0522] initial commit
Author: A U Thor <author@example.com>
Preparing worktree (new branch 'branch')
HEAD is now at 58a0522 initial commit
[branch b62e0cb] test commit
Author: A U Thor <author@example.com>
b62e0cb4990da3244885da90fe7d493334cca9f5 commit refs/bisect/something
fatal: ambiguous argument 'refs/bisect/something': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
refs/bisect/something
--- main-head 2023-10-09 02:18:06.189168392 +0000
+++ worktree-head 2023-10-09 02:18:06.169168393 +0000
@@ -1 +1 @@
-58a052250c09f010b95ad9bfe32f35d704eda1a0
+b62e0cb4990da3244885da90fe7d493334cca9f5
ok 173 - handle per-worktree refs in refs/bisect
expecting success of 1400.174 'transaction handles empty commit':
cat >stdin <<-EOF &&
start
prepare
commit
EOF
git update-ref --stdin <stdin >actual &&
printf "%s: ok\n" start prepare commit >expect &&
test_cmp expect actual
ok 174 - transaction handles empty commit
expecting success of 1400.175 'transaction handles empty commit with missing prepare':
cat >stdin <<-EOF &&
start
commit
EOF
git update-ref --stdin <stdin >actual &&
printf "%s: ok\n" start commit >expect &&
test_cmp expect actual
ok 175 - transaction handles empty commit with missing prepare
expecting success of 1400.176 'transaction handles sole commit':
cat >stdin <<-EOF &&
commit
EOF
git update-ref --stdin <stdin >actual &&
printf "%s: ok\n" commit >expect &&
test_cmp expect actual
ok 176 - transaction handles sole commit
expecting success of 1400.177 'transaction handles empty abort':
cat >stdin <<-EOF &&
start
prepare
abort
EOF
git update-ref --stdin <stdin >actual &&
printf "%s: ok\n" start prepare abort >expect &&
test_cmp expect actual
ok 177 - transaction handles empty abort
expecting success of 1400.178 'transaction exits on multiple aborts':
cat >stdin <<-EOF &&
abort
abort
EOF
test_must_fail git update-ref --stdin <stdin >actual 2>err &&
printf "%s: ok\n" abort >expect &&
test_cmp expect actual &&
grep "fatal: transaction is closed" err
fatal: transaction is closed
ok 178 - transaction exits on multiple aborts
expecting success of 1400.179 'transaction exits on start after prepare':
cat >stdin <<-EOF &&
prepare
start
EOF
test_must_fail git update-ref --stdin <stdin 2>err >actual &&
printf "%s: ok\n" prepare >expect &&
test_cmp expect actual &&
grep "fatal: prepared transactions can only be closed" err
fatal: prepared transactions can only be closed
ok 179 - transaction exits on start after prepare
expecting success of 1400.180 'transaction handles empty abort with missing prepare':
cat >stdin <<-EOF &&
start
abort
EOF
git update-ref --stdin <stdin >actual &&
printf "%s: ok\n" start abort >expect &&
test_cmp expect actual
ok 180 - transaction handles empty abort with missing prepare
expecting success of 1400.181 'transaction handles sole abort':
cat >stdin <<-EOF &&
abort
EOF
git update-ref --stdin <stdin >actual &&
printf "%s: ok\n" abort >expect &&
test_cmp expect actual
ok 181 - transaction handles sole abort
expecting success of 1400.182 'transaction can handle commit':
cat >stdin <<-EOF &&
start
create $a HEAD
commit
EOF
git update-ref --stdin <stdin >actual &&
printf "%s: ok\n" start commit >expect &&
test_cmp expect actual &&
git rev-parse HEAD >expect &&
git rev-parse $a >actual &&
test_cmp expect actual
ok 182 - transaction can handle commit
expecting success of 1400.183 'transaction can handle abort':
cat >stdin <<-EOF &&
start
create $b HEAD
abort
EOF
git update-ref --stdin <stdin >actual &&
printf "%s: ok\n" start abort >expect &&
test_cmp expect actual &&
test_must_fail git show-ref --verify -q $b
ok 183 - transaction can handle abort
expecting success of 1400.184 'transaction aborts by default':
cat >stdin <<-EOF &&
start
create $b HEAD
EOF
git update-ref --stdin <stdin >actual &&
printf "%s: ok\n" start >expect &&
test_cmp expect actual &&
test_must_fail git show-ref --verify -q $b
ok 184 - transaction aborts by default
expecting success of 1400.185 'transaction with prepare aborts by default':
cat >stdin <<-EOF &&
start
create $b HEAD
prepare
EOF
git update-ref --stdin <stdin >actual &&
printf "%s: ok\n" start prepare >expect &&
test_cmp expect actual &&
test_must_fail git show-ref --verify -q $b
ok 185 - transaction with prepare aborts by default
expecting success of 1400.186 'transaction can commit multiple times':
cat >stdin <<-EOF &&
start
create refs/heads/branch-1 $A
commit
start
create refs/heads/branch-2 $B
commit
EOF
git update-ref --stdin <stdin >actual &&
printf "%s: ok\n" start commit start commit >expect &&
test_cmp expect actual &&
echo "$A" >expect &&
git rev-parse refs/heads/branch-1 >actual &&
test_cmp expect actual &&
echo "$B" >expect &&
git rev-parse refs/heads/branch-2 >actual &&
test_cmp expect actual
ok 186 - transaction can commit multiple times
expecting success of 1400.187 'transaction can create and delete':
cat >stdin <<-EOF &&
start
create refs/heads/create-and-delete $A
commit
start
delete refs/heads/create-and-delete $A
commit
EOF
git update-ref --stdin <stdin >actual &&
printf "%s: ok\n" start commit start commit >expect &&
test_cmp expect actual &&
test_must_fail git show-ref --verify refs/heads/create-and-delete
fatal: 'refs/heads/create-and-delete' - not a valid ref
ok 187 - transaction can create and delete
expecting success of 1400.188 'transaction can commit after abort':
cat >stdin <<-EOF &&
start
create refs/heads/abort $A
abort
start
create refs/heads/abort $A
commit
EOF
git update-ref --stdin <stdin >actual &&
printf "%s: ok\n" start abort start commit >expect &&
echo "$A" >expect &&
git rev-parse refs/heads/abort >actual &&
test_cmp expect actual
ok 188 - transaction can commit after abort
expecting success of 1400.189 'transaction cannot restart ongoing transaction':
cat >stdin <<-EOF &&
start
create refs/heads/restart $A
start
commit
EOF
test_must_fail git update-ref --stdin <stdin >actual &&
printf "%s: ok\n" start >expect &&
test_cmp expect actual &&
test_must_fail git show-ref --verify refs/heads/restart
fatal: cannot restart ongoing transaction
fatal: 'refs/heads/restart' - not a valid ref
ok 189 - transaction cannot restart ongoing transaction
checking prerequisite: PIPE
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-PIPE" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-PIPE" &&
# test whether the filesystem supports FIFOs
test_have_prereq !MINGW,!CYGWIN &&
rm -f testfifo && mkfifo testfifo
)
prerequisite PIPE ok
expecting success of 1400.190 'transaction flushes status updates':
mkfifo in out &&
(git update-ref --stdin <in >out &) &&
exec 9>in &&
exec 8<out &&
test_when_finished "exec 9>&-" &&
test_when_finished "exec 8<&-" &&
echo "start" >&9 &&
echo "start: ok" >expected &&
read line <&8 &&
echo "$line" >actual &&
test_cmp expected actual &&
echo "create refs/heads/flush $A" >&9 &&
echo prepare >&9 &&
echo "prepare: ok" >expected &&
read line <&8 &&
echo "$line" >actual &&
test_cmp expected actual &&
# This must now fail given that we have locked the ref.
test_must_fail git update-ref refs/heads/flush $B 2>stderr &&
grep "fatal: update_ref failed for ref ${SQ}refs/heads/flush${SQ}: cannot lock ref" stderr &&
echo commit >&9 &&
echo "commit: ok" >expected &&
read line <&8 &&
echo "$line" >actual &&
test_cmp expected actual
fatal: update_ref failed for ref 'refs/heads/flush': cannot lock ref 'refs/heads/flush': Unable to create '/<<PKGBUILDDIR>>/t/trash directory.t1400-update-ref/.git/refs/heads/flush.lock': File exists.
ok 190 - transaction flushes status updates
expecting success of 1400.191 'directory not created deleting packed ref':
git branch d1/d2/r1 HEAD &&
git pack-refs --all &&
test_path_is_missing .git/refs/heads/d1/d2 &&
git update-ref -d refs/heads/d1/d2/r1 &&
test_path_is_missing .git/refs/heads/d1/d2 &&
test_path_is_missing .git/refs/heads/d1
ok 191 - directory not created deleting packed ref
# passed all 191 test(s)
1..191
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1405-main-ref-store.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1405-main-ref-store/.git/
expecting success of 1405.1 'setup':
test_commit one
[main (root-commit) d79ce16] one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 one.t
ok 1 - setup
expecting success of 1405.2 'pack_refs(PACK_REFS_ALL | PACK_REFS_PRUNE)':
N=`find .git/refs -type f | wc -l` &&
test "$N" != 0 &&
$RUN pack-refs PACK_REFS_PRUNE,PACK_REFS_ALL &&
N=`find .git/refs -type f` &&
test -z "$N"
ok 2 - pack_refs(PACK_REFS_ALL | PACK_REFS_PRUNE)
expecting success of 1405.3 'create_symref(FOO, refs/heads/main)':
$RUN create-symref FOO refs/heads/main nothing &&
echo refs/heads/main >expected &&
git symbolic-ref FOO >actual &&
test_cmp expected actual
ok 3 - create_symref(FOO, refs/heads/main)
expecting success of 1405.4 'delete_refs(FOO, refs/tags/new-tag)':
git tag -a -m new-tag new-tag HEAD &&
git rev-parse FOO -- &&
git rev-parse refs/tags/new-tag -- &&
m=$(git rev-parse main) &&
$RUN delete-refs REF_NO_DEREF nothing FOO refs/tags/new-tag &&
test_must_fail git rev-parse --symbolic-full-name FOO &&
test_must_fail git rev-parse FOO -- &&
test_must_fail git rev-parse refs/tags/new-tag --
d79ce1670bdcb76e6d1da2ae095e890ccb326ae9
--
407ffbd56c168afa4e9302a7cdfe469155f84482
--
fatal: ambiguous argument 'FOO': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
FOO
fatal: bad revision 'FOO'
fatal: bad revision 'refs/tags/new-tag'
ok 4 - delete_refs(FOO, refs/tags/new-tag)
ok 5 # skip delete-reflog(FOO, refs/tags/new-tag) (missing !REFFILES)
expecting success of 1405.6 'rename_refs(main, new-main)':
git rev-parse main >expected &&
$RUN rename-ref refs/heads/main refs/heads/new-main &&
git rev-parse new-main >actual &&
test_cmp expected actual &&
test_commit recreate-main
[main (root-commit) ff283f4] recreate-main
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 one.t
create mode 100644 recreate-main.t
ok 6 - rename_refs(main, new-main)
expecting success of 1405.7 'for_each_ref(refs/heads/)':
$RUN for-each-ref refs/heads/ | cut -d" " -f 2- >actual &&
cat >expected <<-\EOF &&
main 0x0
new-main 0x0
EOF
test_cmp expected actual
ok 7 - for_each_ref(refs/heads/)
expecting success of 1405.8 'for_each_ref() is sorted':
$RUN for-each-ref refs/heads/ | cut -d" " -f 2- >actual &&
sort actual > expected &&
test_cmp expected actual
ok 8 - for_each_ref() is sorted
expecting success of 1405.9 'resolve_ref(new-main)':
SHA1=`git rev-parse new-main` &&
echo "$SHA1 refs/heads/new-main 0x0" >expected &&
$RUN resolve-ref refs/heads/new-main 0 >actual &&
test_cmp expected actual
ok 9 - resolve_ref(new-main)
expecting success of 1405.10 'verify_ref(new-main)':
$RUN verify-ref refs/heads/new-main
ok 10 - verify_ref(new-main)
expecting success of 1405.11 'for_each_reflog()':
$RUN for-each-reflog | sort -k2 | cut -d" " -f 2- >actual &&
cat >expected <<-\EOF &&
HEAD 0x1
refs/heads/main 0x0
refs/heads/new-main 0x0
EOF
test_cmp expected actual
ok 11 - for_each_reflog()
expecting success of 1405.12 'for_each_reflog_ent()':
$RUN for-each-reflog-ent HEAD >actual &&
head -n1 actual | grep one &&
tail -n1 actual | grep recreate-main
0000000000000000000000000000000000000000 d79ce1670bdcb76e6d1da2ae095e890ccb326ae9 C O Mitter <committer@example.com> 1112911993 -0700 commit (initial): one
0000000000000000000000000000000000000000 ff283f48d5b4f118f57230316ac4d562b4a6eed7 C O Mitter <committer@example.com> 1112912053 -0700 commit (initial): recreate-main
ok 12 - for_each_reflog_ent()
expecting success of 1405.13 'for_each_reflog_ent_reverse()':
$RUN for-each-reflog-ent-reverse HEAD >actual &&
head -n1 actual | grep recreate-main &&
tail -n1 actual | grep one
0000000000000000000000000000000000000000 ff283f48d5b4f118f57230316ac4d562b4a6eed7 C O Mitter <committer@example.com> 1112912053 -0700 commit (initial): recreate-main
0000000000000000000000000000000000000000 d79ce1670bdcb76e6d1da2ae095e890ccb326ae9 C O Mitter <committer@example.com> 1112911993 -0700 commit (initial): one
ok 13 - for_each_reflog_ent_reverse()
expecting success of 1405.14 'reflog_exists(HEAD)':
$RUN reflog-exists HEAD
ok 14 - reflog_exists(HEAD)
expecting success of 1405.15 'delete_reflog(HEAD)':
$RUN delete-reflog HEAD &&
test_must_fail git reflog exists HEAD
ok 15 - delete_reflog(HEAD)
expecting success of 1405.16 'create-reflog(HEAD)':
$RUN create-reflog HEAD &&
git reflog exists HEAD
ok 16 - create-reflog(HEAD)
expecting success of 1405.17 'delete_ref(refs/heads/foo)':
git checkout -b foo &&
FOO_SHA1=`git rev-parse foo` &&
git checkout --detach &&
test_commit bar-commit &&
git checkout -b bar &&
BAR_SHA1=`git rev-parse bar` &&
$RUN update-ref updating refs/heads/foo $BAR_SHA1 $FOO_SHA1 0 &&
echo $BAR_SHA1 >expected &&
git rev-parse refs/heads/foo >actual &&
test_cmp expected actual
Switched to a new branch 'foo'
HEAD is now at ff283f4 recreate-main
[detached HEAD 12c332b] bar-commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 bar-commit.t
Switched to a new branch 'bar'
ok 17 - delete_ref(refs/heads/foo)
expecting success of 1405.18 'delete_ref(refs/heads/foo)':
SHA1=`git rev-parse foo` &&
git checkout --detach &&
$RUN delete-ref msg refs/heads/foo $SHA1 0 &&
test_must_fail git rev-parse refs/heads/foo --
HEAD is now at 12c332b bar-commit
fatal: bad revision 'refs/heads/foo'
ok 18 - delete_ref(refs/heads/foo)
# passed all 18 test(s)
1..18
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1406-submodule-ref-store.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1406-submodule-ref-store/.git/
expecting success of 1406.1 'setup':
git init sub &&
(
cd sub &&
test_commit first &&
git checkout -b new-main &&
git tag -a -m new-tag new-tag HEAD
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1406-submodule-ref-store/sub/.git/
[main (root-commit) 50e526b] first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 first.t
Switched to a new branch 'new-main'
ok 1 - setup
expecting success of 1406.2 'pack_refs() not allowed':
test_must_fail $RUN pack-refs 3
fatal: unknown flag "3"
ok 2 - pack_refs() not allowed
expecting success of 1406.3 'create_symref() not allowed':
test_must_fail $RUN create-symref FOO refs/heads/main nothing
BUG: refs/files-backend.c:148: operation create_symref requires abilities 0x2, but only have 0x5
ok 3 - create_symref() not allowed
expecting success of 1406.4 'delete_refs() not allowed':
test_must_fail $RUN delete-refs 0 nothing FOO refs/tags/new-tag
BUG: refs/files-backend.c:148: operation delete_refs requires abilities 0x2, but only have 0x5
ok 4 - delete_refs() not allowed
expecting success of 1406.5 'rename_refs() not allowed':
test_must_fail $RUN rename-ref refs/heads/main refs/heads/new-main
BUG: refs/files-backend.c:148: operation rename_ref requires abilities 0x2, but only have 0x5
ok 5 - rename_refs() not allowed
expecting success of 1406.6 'for_each_ref(refs/heads/)':
$RUN for-each-ref refs/heads/ | cut -d" " -f 2- >actual &&
cat >expected <<-\EOF &&
main 0x0
new-main 0x0
EOF
test_cmp expected actual
ok 6 - for_each_ref(refs/heads/)
expecting success of 1406.7 'for_each_ref() is sorted':
$RUN for-each-ref refs/heads/ | cut -d" " -f 2- >actual &&
sort actual > expected &&
test_cmp expected actual
ok 7 - for_each_ref() is sorted
expecting success of 1406.8 'resolve_ref(main)':
SHA1=`git -C sub rev-parse main` &&
echo "$SHA1 refs/heads/main 0x0" >expected &&
$RUN resolve-ref refs/heads/main 0 >actual &&
test_cmp expected actual
ok 8 - resolve_ref(main)
expecting success of 1406.9 'verify_ref(new-main)':
$RUN verify-ref refs/heads/new-main
ok 9 - verify_ref(new-main)
expecting success of 1406.10 'for_each_reflog()':
$RUN for-each-reflog | sort | cut -d" " -f 2- >actual &&
cat >expected <<-\EOF &&
HEAD 0x1
refs/heads/main 0x0
refs/heads/new-main 0x0
EOF
test_cmp expected actual
ok 10 - for_each_reflog()
expecting success of 1406.11 'for_each_reflog_ent()':
$RUN for-each-reflog-ent HEAD >actual &&
head -n1 actual | grep first &&
tail -n1 actual | grep main.to.new
0000000000000000000000000000000000000000 50e526bb426771f6036ad3a8b0c81d511d91fc2a C O Mitter <committer@example.com> 1112911993 -0700 commit (initial): first
50e526bb426771f6036ad3a8b0c81d511d91fc2a 50e526bb426771f6036ad3a8b0c81d511d91fc2a C O Mitter <committer@example.com> 1112911993 -0700 checkout: moving from main to new-main
ok 11 - for_each_reflog_ent()
expecting success of 1406.12 'for_each_reflog_ent_reverse()':
$RUN for-each-reflog-ent-reverse HEAD >actual &&
head -n1 actual | grep main.to.new &&
tail -n1 actual | grep first
50e526bb426771f6036ad3a8b0c81d511d91fc2a 50e526bb426771f6036ad3a8b0c81d511d91fc2a C O Mitter <committer@example.com> 1112911993 -0700 checkout: moving from main to new-main
0000000000000000000000000000000000000000 50e526bb426771f6036ad3a8b0c81d511d91fc2a C O Mitter <committer@example.com> 1112911993 -0700 commit (initial): first
ok 12 - for_each_reflog_ent_reverse()
expecting success of 1406.13 'reflog_exists(HEAD)':
$RUN reflog-exists HEAD
ok 13 - reflog_exists(HEAD)
expecting success of 1406.14 'delete_reflog() not allowed':
test_must_fail $RUN delete-reflog HEAD
BUG: refs/files-backend.c:148: operation delete_reflog requires abilities 0x2, but only have 0x5
ok 14 - delete_reflog() not allowed
expecting success of 1406.15 'create-reflog() not allowed':
test_must_fail $RUN create-reflog HEAD
BUG: refs/files-backend.c:148: operation create_reflog requires abilities 0x2, but only have 0x5
ok 15 - create-reflog() not allowed
# passed all 15 test(s)
1..15
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1407-worktree-ref-store.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1407-worktree-ref-store/.git/
expecting success of 1407.1 'setup':
test_commit first &&
git worktree add -b wt-main wt &&
(
cd wt &&
test_commit second
)
[main (root-commit) 50e526b] first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 first.t
Preparing worktree (new branch 'wt-main')
HEAD is now at 50e526b first
[wt-main d662100] second
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 second.t
ok 1 - setup
expecting success of 1407.2 'resolve_ref(<shared-ref>)':
SHA1=`git rev-parse main` &&
echo "$SHA1 refs/heads/main 0x0" >expected &&
$RWT resolve-ref refs/heads/main 0 >actual &&
test_cmp expected actual &&
$RMAIN resolve-ref refs/heads/main 0 >actual &&
test_cmp expected actual
ok 2 - resolve_ref(<shared-ref>)
expecting success of 1407.3 'resolve_ref(<per-worktree-ref>)':
SHA1=`git -C wt rev-parse HEAD` &&
echo "$SHA1 refs/heads/wt-main 0x1" >expected &&
$RWT resolve-ref HEAD 0 >actual &&
test_cmp expected actual &&
SHA1=`git rev-parse HEAD` &&
echo "$SHA1 refs/heads/main 0x1" >expected &&
$RMAIN resolve-ref HEAD 0 >actual &&
test_cmp expected actual
ok 3 - resolve_ref(<per-worktree-ref>)
expecting success of 1407.4 'create_symref(FOO, refs/heads/main)':
$RWT create-symref FOO refs/heads/main nothing &&
echo refs/heads/main >expected &&
git -C wt symbolic-ref FOO >actual &&
test_cmp expected actual &&
$RMAIN create-symref FOO refs/heads/wt-main nothing &&
echo refs/heads/wt-main >expected &&
git symbolic-ref FOO >actual &&
test_cmp expected actual
ok 4 - create_symref(FOO, refs/heads/main)
expecting success of 1407.5 'for_each_reflog()':
echo $ZERO_OID > .git/logs/PSEUDO-MAIN &&
mkdir -p .git/logs/refs/bisect &&
echo $ZERO_OID > .git/logs/refs/bisect/random &&
echo $ZERO_OID > .git/worktrees/wt/logs/PSEUDO-WT &&
mkdir -p .git/worktrees/wt/logs/refs/bisect &&
echo $ZERO_OID > .git/worktrees/wt/logs/refs/bisect/wt-random &&
$RWT for-each-reflog | cut -d" " -f 2- | sort >actual &&
cat >expected <<-\EOF &&
HEAD 0x1
PSEUDO-WT 0x0
refs/bisect/wt-random 0x0
refs/heads/main 0x0
refs/heads/wt-main 0x0
EOF
test_cmp expected actual &&
$RMAIN for-each-reflog | cut -d" " -f 2- | sort >actual &&
cat >expected <<-\EOF &&
HEAD 0x1
PSEUDO-MAIN 0x0
refs/bisect/random 0x0
refs/heads/main 0x0
refs/heads/wt-main 0x0
EOF
test_cmp expected actual
ok 5 - for_each_reflog()
# passed all 5 test(s)
1..5
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1408-packed-refs.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1408-packed-refs/.git/
expecting success of 1408.1 'setup':
test_tick &&
git commit --allow-empty -m one &&
one=$(git rev-parse HEAD) &&
git for-each-ref >actual &&
echo "$one commit refs/heads/main" >expect &&
test_cmp expect actual &&
git pack-refs --all &&
git for-each-ref >actual &&
echo "$one commit refs/heads/main" >expect &&
test_cmp expect actual &&
git checkout --orphan another &&
test_tick &&
git commit --allow-empty -m two &&
two=$(git rev-parse HEAD) &&
git checkout -B main &&
git branch -D another &&
git for-each-ref >actual &&
echo "$two commit refs/heads/main" >expect &&
test_cmp expect actual &&
git reflog expire --expire=now --all &&
git prune &&
git tag -m v1.0 v1.0 main
[main (root-commit) 76a57ce] one
Author: A U Thor <author@example.com>
Switched to a new branch 'another'
[another (root-commit) 169e1dc] two
Author: A U Thor <author@example.com>
Switched to and reset branch 'main'
Deleted branch another (was 169e1dc).
ok 1 - setup
expecting success of 1408.2 'no error from stale entry in packed-refs':
git describe main >actual 2>&1 &&
echo "v1.0" >expect &&
test_cmp expect actual
ok 2 - no error from stale entry in packed-refs
# passed all 2 test(s)
1..2
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1409-avoid-packing-refs.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1409-avoid-packing-refs/.git/
expecting success of 1409.1 'setup':
git commit --allow-empty -m "Commit A" &&
A=$(git rev-parse HEAD) &&
git commit --allow-empty -m "Commit B" &&
B=$(git rev-parse HEAD) &&
git commit --allow-empty -m "Commit C" &&
C=$(git rev-parse HEAD)
[master (root-commit) 8d09622] Commit A
Author: A U Thor <author@example.com>
[master 241b9d6] Commit B
Author: A U Thor <author@example.com>
[master 8d1dbac] Commit C
Author: A U Thor <author@example.com>
ok 1 - setup
expecting success of 1409.2 'do not create packed-refs file gratuitously':
test_path_is_missing .git/packed-refs &&
git update-ref refs/heads/foo $A &&
test_path_is_missing .git/packed-refs &&
git update-ref refs/heads/foo $B &&
test_path_is_missing .git/packed-refs &&
git update-ref refs/heads/foo $C $B &&
test_path_is_missing .git/packed-refs &&
git update-ref -d refs/heads/foo &&
test_path_is_missing .git/packed-refs
ok 2 - do not create packed-refs file gratuitously
expecting success of 1409.3 'check that marking the packed-refs file works':
git for-each-ref >expected &&
git pack-refs --all &&
mark_packed_refs &&
check_packed_refs_marked &&
git for-each-ref >actual &&
test_cmp expected actual &&
git pack-refs --all &&
! check_packed_refs_marked &&
git for-each-ref >actual2 &&
test_cmp expected actual2
ok 3 - check that marking the packed-refs file works
expecting success of 1409.4 'leave packed-refs untouched on update of packed':
git update-ref refs/heads/packed-update $A &&
git pack-refs --all &&
mark_packed_refs &&
git update-ref refs/heads/packed-update $B &&
check_packed_refs_marked
ok 4 - leave packed-refs untouched on update of packed
expecting success of 1409.5 'leave packed-refs untouched on checked update of packed':
git update-ref refs/heads/packed-checked-update $A &&
git pack-refs --all &&
mark_packed_refs &&
git update-ref refs/heads/packed-checked-update $B $A &&
check_packed_refs_marked
ok 5 - leave packed-refs untouched on checked update of packed
expecting success of 1409.6 'leave packed-refs untouched on verify of packed':
git update-ref refs/heads/packed-verify $A &&
git pack-refs --all &&
mark_packed_refs &&
echo "verify refs/heads/packed-verify $A" | git update-ref --stdin &&
check_packed_refs_marked
ok 6 - leave packed-refs untouched on verify of packed
expecting success of 1409.7 'touch packed-refs on delete of packed':
git update-ref refs/heads/packed-delete $A &&
git pack-refs --all &&
mark_packed_refs &&
git update-ref -d refs/heads/packed-delete &&
! check_packed_refs_marked
ok 7 - touch packed-refs on delete of packed
expecting success of 1409.8 'leave packed-refs untouched on update of loose':
git pack-refs --all &&
git update-ref refs/heads/loose-update $A &&
mark_packed_refs &&
git update-ref refs/heads/loose-update $B &&
check_packed_refs_marked
ok 8 - leave packed-refs untouched on update of loose
expecting success of 1409.9 'leave packed-refs untouched on checked update of loose':
git pack-refs --all &&
git update-ref refs/heads/loose-checked-update $A &&
mark_packed_refs &&
git update-ref refs/heads/loose-checked-update $B $A &&
check_packed_refs_marked
ok 9 - leave packed-refs untouched on checked update of loose
expecting success of 1409.10 'leave packed-refs untouched on verify of loose':
git pack-refs --all &&
git update-ref refs/heads/loose-verify $A &&
mark_packed_refs &&
echo "verify refs/heads/loose-verify $A" | git update-ref --stdin &&
check_packed_refs_marked
ok 10 - leave packed-refs untouched on verify of loose
expecting success of 1409.11 'leave packed-refs untouched on delete of loose':
git pack-refs --all &&
git update-ref refs/heads/loose-delete $A &&
mark_packed_refs &&
git update-ref -d refs/heads/loose-delete &&
check_packed_refs_marked
ok 11 - leave packed-refs untouched on delete of loose
# passed all 11 test(s)
1..11
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1410-reflog.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1410-reflog/.git/
expecting success of 1410.1 'setup':
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 &&
test_chmod +x 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 &&
git reflog refs/heads/main >output &&
test_line_count = 4 output
[main (root-commit) 07fcc4f] rabbit
Author: A U Thor <author@example.com>
3 files changed, 3 insertions(+)
create mode 100644 A/B/E
create mode 100644 A/D
create mode 100644 C
[main 7d1a0b8] dragon
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
mode change 100644 => 100755 C
[main 15ab5f0] sheep
Author: A U Thor <author@example.com>
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
[main 3ac530f] monkey
Author: A U Thor <author@example.com>
1 file changed, 1 deletion(-)
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 of 1410.2 'correct usage on sub-command -h':
test_expect_code 129 git reflog expire -h >err &&
grep "git reflog expire" err
usage: git reflog expire [--expire=<time>] [--expire-unreachable=<time>]
ok 2 - correct usage on sub-command -h
expecting success of 1410.3 'correct usage on "git reflog show -h"':
test_expect_code 129 git reflog show -h >err &&
grep -F "git reflog [show]" err
usage: git reflog [show] [<log-options>] [<ref>]
ok 3 - correct usage on "git reflog show -h"
expecting success of 1410.4 'pass through -- to sub-command':
test_when_finished "rm -rf repo" &&
git init repo &&
test_commit -C repo message --a-file contents dash-tag &&
git -C repo reflog show -- --does-not-exist >out &&
test_must_be_empty out &&
git -C repo reflog show >expect &&
git -C repo reflog show -- --a-file >actual &&
test_cmp expect actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1410-reflog/repo/.git/
[main (root-commit) 85b7e86] message
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 --a-file
ok 4 - pass through -- to sub-command
expecting success of 1410.5 'rewind':
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 &&
git reflog refs/heads/main >output &&
test_line_count = 5 output
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 5 - rewind
expecting success of 1410.6 'corrupt and check':
corrupt $F &&
check_fsck "missing blob $F"
missing blob 9ae84adb2704cbd49549e52169b4043871e13432
ok 6 - corrupt and check
expecting success of 1410.7 'reflog expire --dry-run should not touch reflog':
git reflog expire --dry-run \
--expire=$(($test_tick - 10000)) \
--expire-unreachable=$(($test_tick - 10000)) \
--stale-fix \
--all &&
git reflog refs/heads/main >output &&
test_line_count = 5 output &&
check_fsck "missing blob $F"
missing blob 9ae84adb2704cbd49549e52169b4043871e13432
ok 7 - reflog expire --dry-run should not touch reflog
expecting success of 1410.8 'reflog expire':
git reflog expire --verbose \
--expire=$(($test_tick - 10000)) \
--expire-unreachable=$(($test_tick - 10000)) \
--stale-fix \
--all &&
git reflog refs/heads/main >output &&
test_line_count = 2 output &&
check_fsck "dangling commit $K"
Marking reachable objects...
keep commit (initial): rabbit
keep commit: dragon
prune commit: sheep
prune commit: monkey
prune reset: moving to HEAD~2
keep commit (initial): rabbit
keep commit: dragon
prune commit: sheep
prune commit: monkey
prune reset: moving to HEAD~2
dangling commit 3ac530f2f6c3a45206a6b2d455baf89d1c8f672d
ok 8 - reflog expire
expecting success of 1410.9 '--stale-fix handles missing objects generously':
git -c core.logAllRefUpdates=false fast-import --date-format=now <<-EOS &&
commit refs/heads/stale-fix
mark :1
committer Author <a@uth.or> now
data <<EOF
start stale fix
EOF
M 100644 inline file
data <<EOF
contents
EOF
commit refs/heads/stale-fix
committer Author <a@uth.or> now
data <<EOF
stale fix branch tip
EOF
from :1
EOS
parent_oid=$(git rev-parse stale-fix^) &&
test_when_finished "recover $parent_oid" &&
corrupt $parent_oid &&
git reflog expire --stale-fix
fast-import statistics:
---------------------------------------------------------------------
Alloc'd objects: 5000
Total objects: 4 ( 0 duplicates )
blobs : 1 ( 0 duplicates 0 deltas of 0 attempts)
trees : 1 ( 0 duplicates 0 deltas of 0 attempts)
commits: 2 ( 0 duplicates 0 deltas of 0 attempts)
tags : 0 ( 0 duplicates 0 deltas of 0 attempts)
Total branches: 1 ( 1 loads )
marks: 1024 ( 1 unique )
atoms: 1
Memory total: 2446 KiB
pools: 2133 KiB
objects: 312 KiB
---------------------------------------------------------------------
pack_report: getpagesize() = 4096
pack_report: core.packedGitWindowSize = 33554432
pack_report: core.packedGitLimit = 268435456
pack_report: pack_used_ctr = 0
pack_report: pack_mmap_calls = 0
pack_report: pack_open_windows = 0 / 0
pack_report: pack_mapped = 0 / 0
---------------------------------------------------------------------
ok 9 - --stale-fix handles missing objects generously
expecting success of 1410.10 'prune and fsck':
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
fatal: git cat-file: could not get object info
fatal: git cat-file: could not get object info
fatal: git cat-file: could not get object info
fatal: git cat-file: could not get object info
fatal: git cat-file: could not get object info
ok 10 - prune and fsck
expecting success of 1410.11 'recover and check':
recover $F &&
check_fsck "dangling blob $F"
dangling blob 9ae84adb2704cbd49549e52169b4043871e13432
ok 11 - recover and check
expecting success of 1410.12 'delete':
echo 1 > C &&
test_tick &&
git commit -m rat C &&
echo 2 > C &&
test_tick &&
git commit -m ox C &&
echo 3 > C &&
test_tick &&
git commit -m tiger C &&
HEAD_entry_count=$(git reflog | wc -l) &&
main_entry_count=$(git reflog show main | wc -l) &&
test $HEAD_entry_count = 5 &&
test $main_entry_count = 5 &&
git reflog delete main@{1} &&
git reflog show main > output &&
test_line_count = $(($main_entry_count - 1)) output &&
test $HEAD_entry_count = $(git reflog | wc -l) &&
! grep ox < output &&
main_entry_count=$(wc -l < output) &&
git reflog delete HEAD@{1} &&
test $(($HEAD_entry_count -1)) = $(git reflog | wc -l) &&
test $main_entry_count = $(git reflog show main | wc -l) &&
HEAD_entry_count=$(git reflog | wc -l) &&
git reflog delete main@{07.04.2005.15:15:00.-0700} &&
git reflog show main > output &&
test_line_count = $(($main_entry_count - 1)) output &&
! grep dragon < output
[main f392752] rat
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[main 7e525ff] ox
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[main 3740c00] tiger
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 12 - delete
expecting success of 1410.13 'rewind2':
test_tick && git reset --hard HEAD~2 &&
git reflog refs/heads/main >output &&
test_line_count = 4 output
HEAD is now at f392752 rat
ok 13 - rewind2
expecting success of 1410.14 '--expire=never':
git reflog expire --verbose \
--expire=never \
--expire-unreachable=never \
--all &&
git reflog refs/heads/main >output &&
test_line_count = 4 output
keep commit (initial): rabbit
keep commit: rat
keep commit: tiger
keep reset: moving to HEAD~2
keep commit (initial): rabbit
keep commit: dragon
keep commit: rat
keep commit: tiger
keep reset: moving to HEAD~2
ok 14 - --expire=never
expecting success of 1410.15 'gc.reflogexpire=never':
test_config gc.reflogexpire never &&
test_config gc.reflogexpireunreachable never &&
git reflog expire --verbose --all >output &&
test_line_count = 9 output &&
git reflog refs/heads/main >output &&
test_line_count = 4 output
ok 15 - gc.reflogexpire=never
expecting success of 1410.16 'gc.reflogexpire=false':
test_config gc.reflogexpire false &&
test_config gc.reflogexpireunreachable false &&
git reflog expire --verbose --all &&
git reflog refs/heads/main >output &&
test_line_count = 4 output
keep commit (initial): rabbit
keep commit: rat
keep commit: tiger
keep reset: moving to HEAD~2
keep commit (initial): rabbit
keep commit: dragon
keep commit: rat
keep commit: tiger
keep reset: moving to HEAD~2
ok 16 - gc.reflogexpire=false
expecting success of 1410.17 'git reflog expire unknown reference':
test_config gc.reflogexpire never &&
test_config gc.reflogexpireunreachable never &&
test_must_fail git reflog expire main@{123} 2>stderr &&
test_i18ngrep "points nowhere" stderr &&
test_must_fail git reflog expire does-not-exist 2>stderr &&
test_i18ngrep "points nowhere" stderr
error: main@{123} points nowhere!
error: does-not-exist points nowhere!
ok 17 - git reflog expire unknown reference
expecting success of 1410.18 'checkout should not delete log for packed ref':
test $(git reflog main | wc -l) = 4 &&
git branch foo &&
git pack-refs --all &&
git checkout foo &&
test $(git reflog main | wc -l) = 4
Switched to branch 'foo'
ok 18 - checkout should not delete log for packed ref
expecting success of 1410.19 'stale dirs do not cause d/f conflicts (reflogs on)':
test_when_finished "git branch -d one || git branch -d one/two" &&
git branch one/two main &&
echo "one/two@{0} branch: Created from main" >expect &&
git log -g --format="%gd %gs" one/two >actual &&
test_cmp expect actual &&
git branch -d one/two &&
# now logs/refs/heads/one is a stale directory, but
# we should move it out of the way to create "one" reflog
git branch one main &&
echo "one@{0} branch: Created from main" >expect &&
git log -g --format="%gd %gs" one >actual &&
test_cmp expect actual
Deleted branch one/two (was f392752).
Deleted branch one (was f392752).
ok 19 - stale dirs do not cause d/f conflicts (reflogs on)
expecting success of 1410.20 'stale dirs do not cause d/f conflicts (reflogs off)':
test_when_finished "git branch -d one || git branch -d one/two" &&
git branch one/two main &&
echo "one/two@{0} branch: Created from main" >expect &&
git log -g --format="%gd %gs" one/two >actual &&
test_cmp expect actual &&
git branch -d one/two &&
# same as before, but we only create a reflog for "one" if
# it already exists, which it does not
git -c core.logallrefupdates=false branch one main &&
git log -g --format="%gd %gs" one >actual &&
test_must_be_empty actual
Deleted branch one/two (was f392752).
Deleted branch one (was f392752).
ok 20 - stale dirs do not cause d/f conflicts (reflogs off)
checking prerequisite: SHA1
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SHA1" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SHA1" &&
case "$GIT_DEFAULT_HASH" in
sha1) true ;;
"") test $(git hash-object /dev/null) = e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 ;;
*) false ;;
esac
)
prerequisite SHA1 ok
expecting success of 1410.21 'parsing reverse reflogs at BUFSIZ boundaries':
git checkout -b reflogskip &&
zf=$(test_oid zero_2) &&
ident="abc <xyz> 0000000001 +0000" &&
for i in $(test_seq 1 75); do
printf "$zf%02d $zf%02d %s\t" $i $(($i+1)) "$ident" &&
if test $i = 75; then
for j in $(test_seq 1 89); do
printf X || return 1
done
else
printf X
fi &&
printf "\n" || return 1
done >.git/logs/refs/heads/reflogskip &&
git rev-parse reflogskip@{73} >actual &&
echo ${zf}03 >expect &&
test_cmp expect actual
Switched to a new branch 'reflogskip'
ok 21 - parsing reverse reflogs at BUFSIZ boundaries
expecting success of 1410.22 'no segfaults for reflog containing non-commit sha1s':
git update-ref --create-reflog -m "Creating ref" \
refs/tests/tree-in-reflog HEAD &&
git update-ref -m "Forcing tree" refs/tests/tree-in-reflog HEAD^{tree} &&
git update-ref -m "Restoring to commit" refs/tests/tree-in-reflog HEAD &&
git reflog refs/tests/tree-in-reflog
f392752 refs/tests/tree-in-reflog@{0}: Restoring to commit
f392752 refs/tests/tree-in-reflog@{2}: Creating ref
ok 22 - no segfaults for reflog containing non-commit sha1s
checking known breakage of 1410.23 'reflog with non-commit entries displays all entries':
git reflog refs/tests/tree-in-reflog >actual &&
test_line_count = 3 actual
test_line_count: line count for actual != 3
f392752 refs/tests/tree-in-reflog@{0}: Restoring to commit
f392752 refs/tests/tree-in-reflog@{2}: Creating ref
not ok 23 - reflog with non-commit entries displays all entries # TODO known breakage
expecting success of 1410.24 'reflog expire operates on symref not referrent':
git branch --create-reflog the_symref &&
git branch --create-reflog referrent &&
git update-ref referrent HEAD &&
git symbolic-ref refs/heads/the_symref refs/heads/referrent &&
test_when_finished "rm -f .git/refs/heads/referrent.lock" &&
touch .git/refs/heads/referrent.lock &&
git reflog expire --expire=all the_symref
ok 24 - reflog expire operates on symref not referrent
expecting success of 1410.25 'continue walking past root commits':
git init orphanage &&
(
cd orphanage &&
cat >expect <<-\EOF &&
HEAD@{0} commit (initial): orphan2-1
HEAD@{1} commit: orphan1-2
HEAD@{2} commit (initial): orphan1-1
HEAD@{3} commit (initial): initial
EOF
test_commit initial &&
git checkout --orphan orphan1 &&
test_commit orphan1-1 &&
test_commit orphan1-2 &&
git checkout --orphan orphan2 &&
test_commit orphan2-1 &&
git log -g --format="%gd %gs" >actual &&
test_cmp expect actual
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1410-reflog/orphanage/.git/
[main (root-commit) 3805046] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 initial.t
Switched to a new branch 'orphan1'
[orphan1 (root-commit) 5906753] orphan1-1
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 initial.t
create mode 100644 orphan1-1.t
[orphan1 4e641d7] orphan1-2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 orphan1-2.t
Switched to a new branch 'orphan2'
[orphan2 (root-commit) 593a89b] orphan2-1
Author: A U Thor <author@example.com>
4 files changed, 4 insertions(+)
create mode 100644 initial.t
create mode 100644 orphan1-1.t
create mode 100644 orphan1-2.t
create mode 100644 orphan2-1.t
ok 25 - continue walking past root commits
expecting success of 1410.26 'expire with multiple worktrees':
git init main-wt &&
(
cd main-wt &&
test_tick &&
test_commit foo &&
git worktree add link-wt &&
test_tick &&
test_commit -C link-wt foobar &&
test_tick &&
git reflog expire --verbose --all --expire=$test_tick &&
test-tool ref-store worktree:link-wt for-each-reflog-ent HEAD >actual &&
test_must_be_empty actual
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1410-reflog/main-wt/.git/
[main (root-commit) 7745948] foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo.t
Preparing worktree (new branch 'link-wt')
HEAD is now at 7745948 foo
[link-wt 25ae450] foobar
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foobar.t
prune commit (initial): foo
prune commit (initial): foo
prune branch: Created from HEAD
prune commit: foobar
prune
prune reset: moving to HEAD
prune commit: foobar
ok 26 - expire with multiple worktrees
expecting success of 1410.27 'empty reflog':
test_when_finished "rm -rf empty" &&
git init empty &&
test_commit -C empty A &&
>empty/.git/logs/refs/heads/foo &&
git -C empty reflog expire --all 2>err &&
test_must_be_empty err
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1410-reflog/empty/.git/
[main (root-commit) d4404d5] A
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 A.t
ok 27 - empty reflog
# still have 1 known breakage(s)
# passed all remaining 26 test(s)
1..27
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1411-reflog-show.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1411-reflog-show/.git/
expecting success of 1411.1 'setup':
echo content >file &&
git add file &&
test_tick &&
git commit -m one
[main (root-commit) e46513e] one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
ok 1 - setup
expecting success of 1411.2 'log -g shows reflog headers':
git log -g -1 >tmp &&
grep ^Reflog <tmp >actual &&
test_cmp expect actual
ok 2 - log -g shows reflog headers
expecting success of 1411.3 'oneline reflog format':
git log -g -1 --oneline >actual &&
test_cmp expect actual
ok 3 - oneline reflog format
expecting success of 1411.4 'reflog default format':
git reflog -1 >actual &&
test_cmp expect actual
ok 4 - reflog default format
expecting success of 1411.5 'override reflog default format':
git reflog --format=short -1 >actual &&
test_cmp expect actual
ok 5 - override reflog default format
expecting success of 1411.6 'using @{now} syntax shows reflog date (multiline)':
git log -g -1 HEAD@{now} >tmp &&
grep ^Reflog <tmp >actual &&
test_cmp expect actual
ok 6 - using @{now} syntax shows reflog date (multiline)
expecting success of 1411.7 'using @{now} syntax shows reflog date (oneline)':
git log -g -1 --oneline HEAD@{now} >actual &&
test_cmp expect actual
ok 7 - using @{now} syntax shows reflog date (oneline)
expecting success of 1411.8 'using @{now} syntax shows reflog date (format=%gd)':
git log -g -1 --format=%gd HEAD@{now} >actual &&
test_cmp expect actual
ok 8 - using @{now} syntax shows reflog date (format=%gd)
expecting success of 1411.9 'using --date= shows reflog date (multiline)':
git log -g -1 --date=default >tmp &&
grep ^Reflog <tmp >actual &&
test_cmp expect actual
ok 9 - using --date= shows reflog date (multiline)
expecting success of 1411.10 'using --date= shows reflog date (oneline)':
git log -g -1 --oneline --date=default >actual &&
test_cmp expect actual
ok 10 - using --date= shows reflog date (oneline)
expecting success of 1411.11 'using --date= shows reflog date (format=%gd)':
git log -g -1 --format=%gd --date=raw >actual &&
test_cmp expect actual
ok 11 - using --date= shows reflog date (format=%gd)
expecting success of 1411.12 'log.date does not invoke "--date" magic (multiline)':
test_config log.date raw &&
git log -g -1 >tmp &&
grep ^Reflog <tmp >actual &&
test_cmp expect actual
ok 12 - log.date does not invoke "--date" magic (multiline)
expecting success of 1411.13 'log.date does not invoke "--date" magic (oneline)':
test_config log.date raw &&
git log -g -1 --oneline >actual &&
test_cmp expect actual
ok 13 - log.date does not invoke "--date" magic (oneline)
expecting success of 1411.14 'log.date does not invoke "--date" magic (format=%gd)':
test_config log.date raw &&
git log -g -1 --format=%gd >actual &&
test_cmp expect actual
ok 14 - log.date does not invoke "--date" magic (format=%gd)
expecting success of 1411.15 '--date magic does not override explicit @{0} syntax':
git log -g -1 --format=%gd --date=raw HEAD@{0} >actual &&
test_cmp expect actual
ok 15 - --date magic does not override explicit @{0} syntax
expecting success of 1411.16 'empty reflog file':
git branch empty &&
git reflog expire --expire=all refs/heads/empty &&
git log -g empty >actual &&
test_must_be_empty actual
ok 16 - empty reflog file
expecting success of 1411.17 'git log -g -p shows diffs vs. parents':
test_commit two &&
git branch flipflop &&
git update-ref refs/heads/flipflop -m flip1 HEAD^ &&
git update-ref refs/heads/flipflop -m flop1 HEAD &&
git update-ref refs/heads/flipflop -m flip2 HEAD^ &&
git log -g -p flipflop >reflog &&
grep -v ^Reflog reflog >actual &&
git log -1 -p HEAD^ >log.one &&
git log -1 -p HEAD >log.two &&
(
cat log.one && echo &&
cat log.two && echo &&
cat log.one && echo &&
cat log.two
) >expect &&
test_cmp expect actual
[main fc3e0aa] two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 two.t
ok 17 - git log -g -p shows diffs vs. parents
# passed all 17 test(s)
1..17
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1013-read-tree-submodule.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/.git/
expecting success of 1013.1 'git read-tree -u -m --recurse-submodules: added submodule is checked out':
prolog &&
reset_work_tree_to_interested no_submodule &&
(
cd submodule_update &&
git branch -t add_sub1 origin/add_sub1 &&
$command add_sub1 &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1/.git/
[master (root-commit) 63c4304] Base inside first submodule
Author: A U Thor <author@example.com>
3 files changed, 4 insertions(+)
create mode 100644 .gitignore
create mode 100644 file1
create mode 100644 file2
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub2/.git/
[master (root-commit) 27c5769] nested submodule base
Author: A U Thor <author@example.com>
3 files changed, 4 insertions(+)
create mode 100644 .gitignore
create mode 100644 file1
create mode 100644 file2
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_repo/.git/
[master (root-commit) 27611a5] Base
Author: A U Thor <author@example.com>
3 files changed, 4 insertions(+)
create mode 100644 .gitignore
create mode 100644 file1
create mode 100644 file2
Switched to a new branch 'add_sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_repo/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_repo/uninitialized_sub'...
done.
[add_sub1 09bcf53] Add sub1
Author: A U Thor <author@example.com>
2 files changed, 8 insertions(+)
create mode 100644 .gitmodules
create mode 160000 uninitialized_sub
Switched to a new branch 'remove_sub1'
warning: unable to rmdir 'sub1': Directory not empty
warning: unable to rmdir 'uninitialized_sub': Directory not empty
[remove_sub1 d6ba723] Revert "Add sub1"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
3 files changed, 9 deletions(-)
delete mode 100644 .gitmodules
delete mode 160000 sub1
delete mode 160000 uninitialized_sub
Switched to a new branch 'modify_sub1'
Switched to a new branch 'modifications'
[modifications 03da4ea] modified file2 and added file3
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+), 1 deletion(-)
create mode 100644 file3
To /<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1
* [new branch] modifications -> modifications
[modify_sub1 cb2bda7] Modify sub1
Author: A U Thor <author@example.com>
Switched to a new branch 'add_nested_sub'
Switched to a new branch 'add_nested_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_repo/sub1/sub2'...
done.
[add_nested_sub 8b3b335] add a nested submodule
Author: A U Thor <author@example.com>
2 files changed, 5 insertions(+)
create mode 100644 .gitmodules
create mode 160000 sub2
[add_nested_sub 5bc57bf] update submodule, that updates a nested submodule
Author: A U Thor <author@example.com>
Switched to a new branch 'modify_sub1_recursively'
Switched to a new branch 'modify_sub1_recursively'
Switched to a new branch 'modify_sub1_recursively'
[modify_sub1_recursively c7c4624] make a change in nested sub
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file3
[modify_sub1_recursively 92fc14a] update nested sub
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[modify_sub1_recursively 953e869] update sub1, that updates nested sub
Author: A U Thor <author@example.com>
To /<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1
* [new branch] modify_sub1_recursively -> modify_sub1_recursively
To /<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub2
* [new branch] modify_sub1_recursively -> modify_sub1_recursively
Cleared directory 'sub2'
Submodule 'sub2' (../submodule_update_sub2) unregistered for path 'sub2'
Switched to a new branch 'replace_sub1_with_directory'
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Previous HEAD position was 63c4304 Base inside first submodule
Switched to branch 'modifications'
rm 'sub1'
[replace_sub1_with_directory cb28587] Replace sub1 with directory
Author: A U Thor <author@example.com>
5 files changed, 3 insertions(+), 5 deletions(-)
delete mode 160000 sub1
create mode 100644 sub1/file1
create mode 100644 sub1/file2
create mode 100644 sub1/file3
Switched to a new branch 'replace_directory_with_sub1'
[replace_directory_with_sub1 a2e65d5] Revert "Replace sub1 with directory"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
4 files changed, 4 insertions(+), 3 deletions(-)
delete mode 100644 sub1/file1
delete mode 100644 sub1/file2
delete mode 100644 sub1/file3
Switched to a new branch 'replace_sub1_with_file'
rm 'sub1'
[replace_sub1_with_file 2364f5a] Replace sub1 with file
Author: A U Thor <author@example.com>
2 files changed, 1 insertion(+), 5 deletions(-)
mode change 160000 => 100644 sub1
Switched to a new branch 'replace_file_with_sub1'
[replace_file_with_sub1 8b6fdfc] Revert "Replace sub1 with file"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
2 files changed, 5 insertions(+), 1 deletion(-)
mode change 100644 => 160000 sub1
Switched to a new branch 'invalid_sub1'
[invalid_sub1 e6169bf] Invalid sub1 commit
Author: A U Thor <author@example.com>
Switched to a new branch 'valid_sub1'
[valid_sub1 3036e4e] Revert "Invalid sub1 commit"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
warning: unable to rmdir 'uninitialized_sub': Directory not empty
Switched to branch 'master'
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
ok 1 - git read-tree -u -m --recurse-submodules: added submodule is checked out
expecting success of 1013.2 'git read-tree -u -m --recurse-submodules: added submodule is checked out in empty dir':
prolog &&
reset_work_tree_to_interested no_submodule &&
(
cd submodule_update &&
mkdir sub1 &&
git branch -t add_sub1 origin/add_sub1 &&
$command add_sub1 &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
ok 2 - git read-tree -u -m --recurse-submodules: added submodule is checked out in empty dir
expecting success of 1013.3 'git read-tree -u -m --recurse-submodules: replace tracked file with submodule checks out submodule':
prolog &&
reset_work_tree_to_interested replace_sub1_with_file &&
(
cd submodule_update &&
git branch -t replace_file_with_sub1 origin/replace_file_with_sub1 &&
$command replace_file_with_sub1 &&
test_superproject_content origin/replace_file_with_sub1 &&
test_submodule_content sub1 origin/replace_file_with_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'replace_sub1_with_file'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
fatal: Needed a single revision
branch 'replace_file_with_sub1' set up to track 'origin/replace_file_with_sub1'.
ok 3 - git read-tree -u -m --recurse-submodules: replace tracked file with submodule checks out submodule
expecting success of 1013.4 'git read-tree -u -m --recurse-submodules: replace directory with submodule':
prolog &&
reset_work_tree_to_interested replace_sub1_with_directory &&
(
cd submodule_update &&
git branch -t replace_directory_with_sub1 origin/replace_directory_with_sub1 &&
$command replace_directory_with_sub1 &&
test_superproject_content origin/replace_directory_with_sub1 &&
test_submodule_content sub1 origin/replace_directory_with_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'replace_sub1_with_directory'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
fatal: Needed a single revision
branch 'replace_directory_with_sub1' set up to track 'origin/replace_directory_with_sub1'.
ok 4 - git read-tree -u -m --recurse-submodules: replace directory with submodule
expecting success of 1013.5 'git read-tree -u -m --recurse-submodules: nested submodules are checked out':
prolog &&
reset_work_tree_to_interested no_submodule &&
(
cd submodule_update &&
git branch -t modify_sub1_recursively origin/modify_sub1_recursively &&
$command modify_sub1_recursively &&
test_superproject_content origin/modify_sub1_recursively &&
test_submodule_content sub1 origin/modify_sub1_recursively &&
test_submodule_content -C sub1 sub2 origin/modify_sub1_recursively
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'modify_sub1_recursively' set up to track 'origin/modify_sub1_recursively'.
ok 5 - git read-tree -u -m --recurse-submodules: nested submodules are checked out
expecting success of 1013.6 'git read-tree -u -m --recurse-submodules: removed submodule removes submodules working tree':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git branch -t remove_sub1 origin/remove_sub1 &&
$command remove_sub1 &&
test_superproject_content origin/remove_sub1 &&
! test -e sub1 &&
test_must_fail git config -f .git/modules/sub1/config core.worktree
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'remove_sub1' set up to track 'origin/remove_sub1'.
ok 6 - git read-tree -u -m --recurse-submodules: removed submodule removes submodules working tree
expecting success of 1013.7 'git read-tree -u -m --recurse-submodules: removed submodule absorbs submodules .git directory':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git branch -t remove_sub1 origin/remove_sub1 &&
replace_gitfile_with_git_dir sub1 &&
rm -rf .git/modules &&
$command remove_sub1 &&
test_superproject_content origin/remove_sub1 &&
! test -e sub1 &&
test_git_directory_exists sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'remove_sub1' set up to track 'origin/remove_sub1'.
Migrating git directory of 'sub1' from
'/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1/.git' to
'/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/.git/modules/sub1'
ok 7 - git read-tree -u -m --recurse-submodules: removed submodule absorbs submodules .git directory
expecting success of 1013.8 'git read-tree -u -m --recurse-submodules: replace submodule with a file':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_file origin/replace_sub1_with_file &&
$command replace_sub1_with_file &&
test_superproject_content origin/replace_sub1_with_file &&
test -f sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
ok 8 - git read-tree -u -m --recurse-submodules: replace submodule with a file
checking known breakage of 1013.9 'git read-tree -u -m --recurse-submodules: replace submodule with a file must fail with untracked files':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_file origin/replace_sub1_with_file &&
: >sub1/untrackedfile &&
test_must_fail $command replace_sub1_with_file &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1 &&
test -f sub1/untracked_file
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
test_must_fail: command succeeded: git read-tree -u -m --recurse-submodules replace_sub1_with_file
not ok 9 - git read-tree -u -m --recurse-submodules: replace submodule with a file must fail with untracked files # TODO known breakage
expecting success of 1013.10 'git read-tree -u -m --recurse-submodules: worktrees of nested submodules are removed':
prolog &&
reset_work_tree_to_interested add_nested_sub &&
(
cd submodule_update &&
git branch -t no_submodule origin/no_submodule &&
$command no_submodule &&
test_superproject_content origin/no_submodule &&
test_path_is_missing sub1 &&
test_must_fail git config -f .git/modules/sub1/config core.worktree &&
test_must_fail git config -f .git/modules/sub1/modules/sub2/config core.worktree
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_nested_sub'
branch 'add_nested_sub' set up to track 'origin/add_nested_sub'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '8b3b3353ac8999eb3d8af8e947e0ef2a08a60008'
Submodule 'sub2' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub2) registered for path 'sub1/sub2'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1/sub2'...
done.
Submodule path 'sub1/sub2': checked out '27c5769ac0ebf2d924e34d3aa503345baaaa98b2'
branch 'no_submodule' set up to track 'origin/no_submodule'.
ok 10 - git read-tree -u -m --recurse-submodules: worktrees of nested submodules are removed
expecting success of 1013.11 'git read-tree -u -m --recurse-submodules: modified submodule updates submodule work tree':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git branch -t modify_sub1 origin/modify_sub1 &&
$command modify_sub1 &&
test_superproject_content origin/modify_sub1 &&
test_submodule_content sub1 origin/modify_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'modify_sub1' set up to track 'origin/modify_sub1'.
ok 11 - git read-tree -u -m --recurse-submodules: modified submodule updates submodule work tree
expecting success of 1013.12 'git read-tree -u -m --recurse-submodules: updating to a missing submodule commit fails':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git branch -t invalid_sub1 origin/invalid_sub1 &&
test_must_fail $command invalid_sub1 2>err &&
test_i18ngrep sub1 err &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'invalid_sub1' set up to track 'origin/invalid_sub1'.
error: Submodule 'sub1' could not be updated.
error: Submodule 'sub1' cannot checkout new HEAD.
ok 12 - git read-tree -u -m --recurse-submodules: updating to a missing submodule commit fails
expecting success of 1013.13 'git read-tree -u -m --recurse-submodules: submodule branch is not changed, detach HEAD instead':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git -C sub1 checkout -b keep_branch &&
git -C sub1 rev-parse HEAD >expect &&
git branch -t modify_sub1 origin/modify_sub1 &&
$command modify_sub1 &&
test_superproject_content origin/modify_sub1 &&
test_submodule_content sub1 origin/modify_sub1 &&
git -C sub1 rev-parse keep_branch >actual &&
test_cmp expect actual &&
test_must_fail git -C sub1 symbolic-ref HEAD
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Switched to a new branch 'keep_branch'
branch 'modify_sub1' set up to track 'origin/modify_sub1'.
fatal: ref HEAD is not a symbolic ref
ok 13 - git read-tree -u -m --recurse-submodules: submodule branch is not changed, detach HEAD instead
expecting success of 1013.14 'git read-tree -u -m --recurse-submodules: added submodule doesn't remove untracked file with same name':
prolog &&
reset_work_tree_to_interested no_submodule &&
(
cd submodule_update &&
git branch -t add_sub1 origin/add_sub1 &&
: >sub1 &&
test_must_fail $command add_sub1 &&
test_superproject_content origin/no_submodule &&
test_must_be_empty sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
error: Untracked working tree file 'sub1' would be overwritten by merge.
ok 14 - git read-tree -u -m --recurse-submodules: added submodule doesn't remove untracked file with same name
expecting success of 1013.15 'git read-tree -u -m --recurse-submodules: added submodule removes an untracked ignored file':
test_when_finished "rm -rf submodule_update/.git/info" &&
prolog &&
reset_work_tree_to_interested no_submodule &&
(
cd submodule_update &&
git branch -t add_sub1 origin/add_sub1 &&
: >sub1 &&
mkdir .git/info &&
echo sub1 >.git/info/exclude &&
$command add_sub1 &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
ok 15 - git read-tree -u -m --recurse-submodules: added submodule removes an untracked ignored file
checking known breakage of 1013.16 'git read-tree -u -m --recurse-submodules: replace submodule with a directory':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_directory origin/replace_sub1_with_directory &&
$command replace_sub1_with_directory &&
test_superproject_content origin/replace_sub1_with_directory &&
test_submodule_content sub1 origin/replace_sub1_with_directory
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
error: Untracked working tree file 'sub1/file1' would be overwritten by merge.
not ok 16 - git read-tree -u -m --recurse-submodules: replace submodule with a directory # TODO known breakage
checking known breakage of 1013.17 'git read-tree -u -m --recurse-submodules: replace submodule containing a .git directory with a directory must absorb the git dir':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_directory origin/replace_sub1_with_directory &&
replace_gitfile_with_git_dir sub1 &&
rm -rf .git/modules &&
$command replace_sub1_with_directory &&
test_superproject_content origin/replace_sub1_with_directory &&
test_git_directory_exists sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
error: Untracked working tree file 'sub1/file1' would be overwritten by merge.
not ok 17 - git read-tree -u -m --recurse-submodules: replace submodule containing a .git directory with a directory must absorb the git dir # TODO known breakage
expecting success of 1013.18 'git read-tree -u -m --recurse-submodules: replace submodule with a file works ignores ignored files in submodule':
test_when_finished "rm submodule_update/.git/modules/sub1/info/exclude" &&
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
rm -rf .git/modules/sub1/info &&
git branch -t replace_sub1_with_file origin/replace_sub1_with_file &&
mkdir .git/modules/sub1/info &&
echo ignored >.git/modules/sub1/info/exclude &&
: >sub1/ignored &&
$command replace_sub1_with_file &&
test_superproject_content origin/replace_sub1_with_file &&
test -f sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
ok 18 - git read-tree -u -m --recurse-submodules: replace submodule with a file works ignores ignored files in submodule
expecting success of 1013.19 'git -c submodule.recurse=true read-tree -u -m: modified submodule updates submodule work tree':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git branch -t modify_sub1 origin/modify_sub1 &&
git -c submodule.recurse=true $cmd_args modify_sub1 &&
test_superproject_content origin/modify_sub1 &&
test_submodule_content sub1 origin/modify_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'modify_sub1' set up to track 'origin/modify_sub1'.
ok 19 - git -c submodule.recurse=true read-tree -u -m: modified submodule updates submodule work tree
expecting success of 1013.20 'git read-tree -u -m --recurse-submodules: modified submodule updates submodule recursively':
prolog &&
reset_work_tree_to_interested add_nested_sub &&
(
cd submodule_update &&
git branch -t modify_sub1_recursively origin/modify_sub1_recursively &&
$command modify_sub1_recursively &&
test_superproject_content origin/modify_sub1_recursively &&
test_submodule_content sub1 origin/modify_sub1_recursively &&
test_submodule_content -C sub1 sub2 origin/modify_sub1_recursively
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_nested_sub'
branch 'add_nested_sub' set up to track 'origin/add_nested_sub'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '8b3b3353ac8999eb3d8af8e947e0ef2a08a60008'
Submodule 'sub2' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub2) registered for path 'sub1/sub2'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1/sub2'...
done.
Submodule path 'sub1/sub2': checked out '27c5769ac0ebf2d924e34d3aa503345baaaa98b2'
branch 'modify_sub1_recursively' set up to track 'origin/modify_sub1_recursively'.
ok 20 - git read-tree -u -m --recurse-submodules: modified submodule updates submodule recursively
expecting success of 1013.21 'git read-tree -u --reset --recurse-submodules: added submodule is checked out':
prolog &&
reset_work_tree_to_interested no_submodule &&
(
cd submodule_update &&
git branch -t add_sub1 origin/add_sub1 &&
$command add_sub1 &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
ok 21 - git read-tree -u --reset --recurse-submodules: added submodule is checked out
expecting success of 1013.22 'git read-tree -u --reset --recurse-submodules: added submodule is checked out in empty dir':
prolog &&
reset_work_tree_to_interested no_submodule &&
(
cd submodule_update &&
mkdir sub1 &&
git branch -t add_sub1 origin/add_sub1 &&
$command add_sub1 &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
ok 22 - git read-tree -u --reset --recurse-submodules: added submodule is checked out in empty dir
expecting success of 1013.23 'git read-tree -u --reset --recurse-submodules: replace tracked file with submodule checks out submodule':
prolog &&
reset_work_tree_to_interested replace_sub1_with_file &&
(
cd submodule_update &&
git branch -t replace_file_with_sub1 origin/replace_file_with_sub1 &&
$command replace_file_with_sub1 &&
test_superproject_content origin/replace_file_with_sub1 &&
test_submodule_content sub1 origin/replace_file_with_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'replace_sub1_with_file'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
fatal: Needed a single revision
branch 'replace_file_with_sub1' set up to track 'origin/replace_file_with_sub1'.
ok 23 - git read-tree -u --reset --recurse-submodules: replace tracked file with submodule checks out submodule
expecting success of 1013.24 'git read-tree -u --reset --recurse-submodules: replace directory with submodule':
prolog &&
reset_work_tree_to_interested replace_sub1_with_directory &&
(
cd submodule_update &&
git branch -t replace_directory_with_sub1 origin/replace_directory_with_sub1 &&
$command replace_directory_with_sub1 &&
test_superproject_content origin/replace_directory_with_sub1 &&
test_submodule_content sub1 origin/replace_directory_with_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'replace_sub1_with_directory'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
fatal: Needed a single revision
branch 'replace_directory_with_sub1' set up to track 'origin/replace_directory_with_sub1'.
ok 24 - git read-tree -u --reset --recurse-submodules: replace directory with submodule
expecting success of 1013.25 'git read-tree -u --reset --recurse-submodules: nested submodules are checked out':
prolog &&
reset_work_tree_to_interested no_submodule &&
(
cd submodule_update &&
git branch -t modify_sub1_recursively origin/modify_sub1_recursively &&
$command modify_sub1_recursively &&
test_superproject_content origin/modify_sub1_recursively &&
test_submodule_content sub1 origin/modify_sub1_recursively &&
test_submodule_content -C sub1 sub2 origin/modify_sub1_recursively
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'modify_sub1_recursively' set up to track 'origin/modify_sub1_recursively'.
ok 25 - git read-tree -u --reset --recurse-submodules: nested submodules are checked out
expecting success of 1013.26 'git read-tree -u --reset --recurse-submodules: removed submodule removes submodules working tree':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git branch -t remove_sub1 origin/remove_sub1 &&
$command remove_sub1 &&
test_superproject_content origin/remove_sub1 &&
! test -e sub1 &&
test_must_fail git config -f .git/modules/sub1/config core.worktree
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'remove_sub1' set up to track 'origin/remove_sub1'.
ok 26 - git read-tree -u --reset --recurse-submodules: removed submodule removes submodules working tree
expecting success of 1013.27 'git read-tree -u --reset --recurse-submodules: removed submodule absorbs submodules .git directory':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git branch -t remove_sub1 origin/remove_sub1 &&
replace_gitfile_with_git_dir sub1 &&
rm -rf .git/modules &&
$command remove_sub1 &&
test_superproject_content origin/remove_sub1 &&
! test -e sub1 &&
test_git_directory_exists sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'remove_sub1' set up to track 'origin/remove_sub1'.
Migrating git directory of 'sub1' from
'/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1/.git' to
'/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/.git/modules/sub1'
ok 27 - git read-tree -u --reset --recurse-submodules: removed submodule absorbs submodules .git directory
expecting success of 1013.28 'git read-tree -u --reset --recurse-submodules: replace submodule with a file':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_file origin/replace_sub1_with_file &&
$command replace_sub1_with_file &&
test_superproject_content origin/replace_sub1_with_file &&
test -f sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
ok 28 - git read-tree -u --reset --recurse-submodules: replace submodule with a file
checking known breakage of 1013.29 'git read-tree -u --reset --recurse-submodules: replace submodule with a file must fail with untracked files':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_file origin/replace_sub1_with_file &&
: >sub1/untrackedfile &&
test_must_fail $command replace_sub1_with_file &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1 &&
test -f sub1/untracked_file
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
test_must_fail: command succeeded: git read-tree -u --reset --recurse-submodules replace_sub1_with_file
not ok 29 - git read-tree -u --reset --recurse-submodules: replace submodule with a file must fail with untracked files # TODO known breakage
expecting success of 1013.30 'git read-tree -u --reset --recurse-submodules: worktrees of nested submodules are removed':
prolog &&
reset_work_tree_to_interested add_nested_sub &&
(
cd submodule_update &&
git branch -t no_submodule origin/no_submodule &&
$command no_submodule &&
test_superproject_content origin/no_submodule &&
test_path_is_missing sub1 &&
test_must_fail git config -f .git/modules/sub1/config core.worktree &&
test_must_fail git config -f .git/modules/sub1/modules/sub2/config core.worktree
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_nested_sub'
branch 'add_nested_sub' set up to track 'origin/add_nested_sub'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '8b3b3353ac8999eb3d8af8e947e0ef2a08a60008'
Submodule 'sub2' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub2) registered for path 'sub1/sub2'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1/sub2'...
done.
Submodule path 'sub1/sub2': checked out '27c5769ac0ebf2d924e34d3aa503345baaaa98b2'
branch 'no_submodule' set up to track 'origin/no_submodule'.
ok 30 - git read-tree -u --reset --recurse-submodules: worktrees of nested submodules are removed
expecting success of 1013.31 'git read-tree -u --reset --recurse-submodules: modified submodule updates submodule work tree':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git branch -t modify_sub1 origin/modify_sub1 &&
$command modify_sub1 &&
test_superproject_content origin/modify_sub1 &&
test_submodule_content sub1 origin/modify_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'modify_sub1' set up to track 'origin/modify_sub1'.
ok 31 - git read-tree -u --reset --recurse-submodules: modified submodule updates submodule work tree
expecting success of 1013.32 'git read-tree -u --reset --recurse-submodules: updating to a missing submodule commit fails':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git branch -t invalid_sub1 origin/invalid_sub1 &&
test_must_fail $command invalid_sub1 2>err &&
test_i18ngrep sub1 err &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'invalid_sub1' set up to track 'origin/invalid_sub1'.
error: Submodule 'sub1' could not be updated.
error: Submodule 'sub1' cannot checkout new HEAD.
ok 32 - git read-tree -u --reset --recurse-submodules: updating to a missing submodule commit fails
expecting success of 1013.33 'git read-tree -u --reset --recurse-submodules: submodule branch is not changed, detach HEAD instead':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git -C sub1 checkout -b keep_branch &&
git -C sub1 rev-parse HEAD >expect &&
git branch -t modify_sub1 origin/modify_sub1 &&
$command modify_sub1 &&
test_superproject_content origin/modify_sub1 &&
test_submodule_content sub1 origin/modify_sub1 &&
git -C sub1 rev-parse keep_branch >actual &&
test_cmp expect actual &&
test_must_fail git -C sub1 symbolic-ref HEAD
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Switched to a new branch 'keep_branch'
branch 'modify_sub1' set up to track 'origin/modify_sub1'.
fatal: ref HEAD is not a symbolic ref
ok 33 - git read-tree -u --reset --recurse-submodules: submodule branch is not changed, detach HEAD instead
expecting success of 1013.34 'git read-tree -u --reset --recurse-submodules: added submodule does remove untracked unignored file with same name when forced':
prolog &&
reset_work_tree_to_interested no_submodule &&
(
cd submodule_update &&
git branch -t add_sub1 origin/add_sub1 &&
>sub1 &&
$command add_sub1 &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
ok 34 - git read-tree -u --reset --recurse-submodules: added submodule does remove untracked unignored file with same name when forced
expecting success of 1013.35 'git read-tree -u --reset --recurse-submodules: replace submodule with a directory':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_directory origin/replace_sub1_with_directory &&
$command replace_sub1_with_directory &&
test_superproject_content origin/replace_sub1_with_directory
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
ok 35 - git read-tree -u --reset --recurse-submodules: replace submodule with a directory
expecting success of 1013.36 'git read-tree -u --reset --recurse-submodules: replace submodule containing a .git directory with a directory must fail':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_directory origin/replace_sub1_with_directory &&
replace_gitfile_with_git_dir sub1 &&
rm -rf .git/modules/sub1 &&
$command replace_sub1_with_directory &&
test_superproject_content origin/replace_sub1_with_directory &&
test_git_directory_exists sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
Migrating git directory of 'sub1' from
'/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1/.git' to
'/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/.git/modules/sub1'
ok 36 - git read-tree -u --reset --recurse-submodules: replace submodule containing a .git directory with a directory must fail
expecting success of 1013.37 'git read-tree -u --reset --recurse-submodules: replace submodule with a file ignoring ignored files':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_file origin/replace_sub1_with_file &&
: >sub1/expect &&
$command replace_sub1_with_file &&
test_superproject_content origin/replace_sub1_with_file
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
ok 37 - git read-tree -u --reset --recurse-submodules: replace submodule with a file ignoring ignored files
expecting success of 1013.38 'git read-tree -u --reset --recurse-submodules: modified submodule does update submodule work tree from invalid commit':
prolog &&
reset_work_tree_to_interested invalid_sub1 &&
(
cd submodule_update &&
git branch -t valid_sub1 origin/valid_sub1 &&
$command valid_sub1 &&
test_superproject_content origin/valid_sub1 &&
test_submodule_content sub1 origin/valid_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'invalid_sub1'
branch 'invalid_sub1' set up to track 'origin/invalid_sub1'.
fatal: Needed a single revision
branch 'valid_sub1' set up to track 'origin/valid_sub1'.
ok 38 - git read-tree -u --reset --recurse-submodules: modified submodule does update submodule work tree from invalid commit
expecting success of 1013.39 'git read-tree -u --reset --recurse-submodules: updating submodules fixes .git links':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git branch -t modify_sub1 origin/modify_sub1 &&
echo "gitdir: bogus/path" >sub1/.git &&
$command modify_sub1 &&
test_superproject_content origin/modify_sub1 &&
test_submodule_content sub1 origin/modify_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'modify_sub1' set up to track 'origin/modify_sub1'.
ok 39 - git read-tree -u --reset --recurse-submodules: updating submodules fixes .git links
expecting success of 1013.40 'git read-tree -u --reset --recurse-submodules: changed submodule worktree is reset':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
rm sub1/file1 &&
: >sub1/new_file &&
git -C sub1 add new_file &&
$command HEAD &&
test_path_is_file sub1/file1 &&
test_path_is_missing sub1/new_file
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 40 - git read-tree -u --reset --recurse-submodules: changed submodule worktree is reset
expecting success of 1013.41 'git_test_func: added submodule creates empty directory':
prolog &&
reset_work_tree_to no_submodule &&
(
cd submodule_update &&
git branch -t add_sub1 origin/add_sub1 &&
$command add_sub1 &&
test_superproject_content origin/add_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Submodule path 'uninitialized_sub': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 41 - git_test_func: added submodule creates empty directory
expecting success of 1013.42 'git_test_func: added submodule leaves existing empty directory alone':
prolog &&
reset_work_tree_to no_submodule &&
(
cd submodule_update &&
mkdir sub1 &&
git branch -t add_sub1 origin/add_sub1 &&
$command add_sub1 &&
test_superproject_content origin/add_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Submodule path 'uninitialized_sub': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 42 - git_test_func: added submodule leaves existing empty directory alone
expecting success of 1013.43 'git_test_func: replace tracked file with submodule creates empty directory':
prolog &&
reset_work_tree_to replace_sub1_with_file &&
(
cd submodule_update &&
git branch -t replace_file_with_sub1 origin/replace_file_with_sub1 &&
$command replace_file_with_sub1 &&
test_superproject_content origin/replace_file_with_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/replace_file_with_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'replace_sub1_with_file'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
fatal: Needed a single revision
branch 'replace_file_with_sub1' set up to track 'origin/replace_file_with_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Submodule path 'uninitialized_sub': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 43 - git_test_func: replace tracked file with submodule creates empty directory
expecting success of 1013.44 'git_test_func: replace directory with submodule':
prolog &&
reset_work_tree_to replace_sub1_with_directory &&
(
cd submodule_update &&
git branch -t replace_directory_with_sub1 origin/replace_directory_with_sub1 &&
$command replace_directory_with_sub1 &&
test_superproject_content origin/replace_directory_with_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/replace_directory_with_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'replace_sub1_with_directory'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
fatal: Needed a single revision
branch 'replace_directory_with_sub1' set up to track 'origin/replace_directory_with_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Submodule path 'uninitialized_sub': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 44 - git_test_func: replace directory with submodule
expecting success of 1013.45 'git_test_func: removed submodule leaves submodule directory and its contents in place':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t remove_sub1 origin/remove_sub1 &&
$command remove_sub1 &&
test_superproject_content origin/remove_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'remove_sub1' set up to track 'origin/remove_sub1'.
warning: unable to rmdir 'sub1': Directory not empty
ok 45 - git_test_func: removed submodule leaves submodule directory and its contents in place
expecting success of 1013.46 'git_test_func: removed submodule leaves submodule containing a .git directory alone':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t remove_sub1 origin/remove_sub1 &&
replace_gitfile_with_git_dir sub1 &&
$command remove_sub1 &&
test_superproject_content origin/remove_sub1 &&
test_git_directory_is_unchanged sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'remove_sub1' set up to track 'origin/remove_sub1'.
warning: unable to rmdir 'sub1': Directory not empty
ok 46 - git_test_func: removed submodule leaves submodule containing a .git directory alone
expecting success of 1013.47 'git_test_func: replace submodule with a directory must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_directory origin/replace_sub1_with_directory &&
$command replace_sub1_with_directory test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
error: Untracked working tree file 'sub1/file1' would be overwritten by merge.
ok 47 - git_test_func: replace submodule with a directory must fail
expecting success of 1013.48 'git_test_func: replace submodule containing a .git directory with a directory must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_directory origin/replace_sub1_with_directory &&
replace_gitfile_with_git_dir sub1 &&
$command replace_sub1_with_directory test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_git_directory_is_unchanged sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
error: Untracked working tree file 'sub1/file1' would be overwritten by merge.
ok 48 - git_test_func: replace submodule containing a .git directory with a directory must fail
checking known breakage of 1013.49 'git_test_func: replace submodule with a file must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_file origin/replace_sub1_with_file &&
$command replace_sub1_with_file test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
test_must_fail: command succeeded: git read-tree -u -m replace_sub1_with_file
not ok 49 - git_test_func: replace submodule with a file must fail # TODO known breakage
checking known breakage of 1013.50 'git_test_func: replace submodule containing a .git directory with a file must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_file origin/replace_sub1_with_file &&
replace_gitfile_with_git_dir sub1 &&
$command replace_sub1_with_file test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_git_directory_is_unchanged sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
test_must_fail: command succeeded: git read-tree -u -m replace_sub1_with_file
not ok 50 - git_test_func: replace submodule containing a .git directory with a file must fail # TODO known breakage
expecting success of 1013.51 'git_test_func: modified submodule does not update submodule work tree':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t modify_sub1 origin/modify_sub1 &&
$command modify_sub1 &&
test_superproject_content origin/modify_sub1 &&
test_submodule_content sub1 origin/add_sub1 &&
git submodule update &&
test_submodule_content sub1 origin/modify_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'modify_sub1' set up to track 'origin/modify_sub1'.
Submodule path 'sub1': checked out '03da4ea88bb165bd26ee0b2e5c657f2858b23f53'
ok 51 - git_test_func: modified submodule does not update submodule work tree
expecting success of 1013.52 'git_test_func: modified submodule does not update submodule work tree to invalid commit':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t invalid_sub1 origin/invalid_sub1 &&
$command invalid_sub1 &&
test_superproject_content origin/invalid_sub1 &&
test_submodule_content sub1 origin/add_sub1 &&
test_must_fail git submodule update &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'invalid_sub1' set up to track 'origin/invalid_sub1'.
fatal: remote error: upload-pack: not our ref 0123456789012345678901234567890123456789
fatal: Fetched in submodule path 'sub1', but it did not contain 0123456789012345678901234567890123456789. Direct fetching of that commit failed.
fatal: git upload-pack: not our ref 0123456789012345678901234567890123456789
ok 52 - git_test_func: modified submodule does not update submodule work tree to invalid commit
expecting success of 1013.53 'git_test_func: modified submodule does not update submodule work tree from invalid commit':
prolog &&
reset_work_tree_to invalid_sub1 &&
(
cd submodule_update &&
git branch -t valid_sub1 origin/valid_sub1 &&
$command valid_sub1 &&
test_superproject_content origin/valid_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/valid_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'invalid_sub1'
branch 'invalid_sub1' set up to track 'origin/invalid_sub1'.
fatal: Needed a single revision
branch 'valid_sub1' set up to track 'origin/valid_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Submodule path 'uninitialized_sub': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 53 - git_test_func: modified submodule does not update submodule work tree from invalid commit
expecting success of 1013.54 'git_test_func: added submodule doesn't remove untracked unignored file with same name':
prolog &&
reset_work_tree_to no_submodule &&
(
cd submodule_update &&
git branch -t add_sub1 origin/add_sub1 &&
>sub1 &&
$command add_sub1 test_must_fail &&
test_superproject_content origin/no_submodule &&
test_must_be_empty sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
error: Untracked working tree file 'sub1' would be overwritten by merge.
ok 54 - git_test_func: added submodule doesn't remove untracked unignored file with same name
expecting success of 1013.55 'git_test_func: added submodule creates empty directory':
prolog &&
reset_work_tree_to no_submodule &&
(
cd submodule_update &&
git branch -t add_sub1 origin/add_sub1 &&
$command add_sub1 &&
test_superproject_content origin/add_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Submodule path 'uninitialized_sub': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 55 - git_test_func: added submodule creates empty directory
expecting success of 1013.56 'git_test_func: added submodule leaves existing empty directory alone':
prolog &&
reset_work_tree_to no_submodule &&
(
cd submodule_update &&
mkdir sub1 &&
git branch -t add_sub1 origin/add_sub1 &&
$command add_sub1 &&
test_superproject_content origin/add_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Submodule path 'uninitialized_sub': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 56 - git_test_func: added submodule leaves existing empty directory alone
expecting success of 1013.57 'git_test_func: replace tracked file with submodule creates empty directory':
prolog &&
reset_work_tree_to replace_sub1_with_file &&
(
cd submodule_update &&
git branch -t replace_file_with_sub1 origin/replace_file_with_sub1 &&
$command replace_file_with_sub1 &&
test_superproject_content origin/replace_file_with_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/replace_file_with_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'replace_sub1_with_file'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
fatal: Needed a single revision
branch 'replace_file_with_sub1' set up to track 'origin/replace_file_with_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Submodule path 'uninitialized_sub': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 57 - git_test_func: replace tracked file with submodule creates empty directory
expecting success of 1013.58 'git_test_func: replace directory with submodule':
prolog &&
reset_work_tree_to replace_sub1_with_directory &&
(
cd submodule_update &&
git branch -t replace_directory_with_sub1 origin/replace_directory_with_sub1 &&
$command replace_directory_with_sub1 &&
test_superproject_content origin/replace_directory_with_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/replace_directory_with_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'replace_sub1_with_directory'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
fatal: Needed a single revision
branch 'replace_directory_with_sub1' set up to track 'origin/replace_directory_with_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Submodule path 'uninitialized_sub': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 58 - git_test_func: replace directory with submodule
expecting success of 1013.59 'git_test_func: removed submodule leaves submodule directory and its contents in place':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t remove_sub1 origin/remove_sub1 &&
$command remove_sub1 &&
test_superproject_content origin/remove_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'remove_sub1' set up to track 'origin/remove_sub1'.
warning: unable to rmdir 'sub1': Directory not empty
ok 59 - git_test_func: removed submodule leaves submodule directory and its contents in place
expecting success of 1013.60 'git_test_func: removed submodule leaves submodule containing a .git directory alone':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t remove_sub1 origin/remove_sub1 &&
replace_gitfile_with_git_dir sub1 &&
$command remove_sub1 &&
test_superproject_content origin/remove_sub1 &&
test_git_directory_is_unchanged sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'remove_sub1' set up to track 'origin/remove_sub1'.
warning: unable to rmdir 'sub1': Directory not empty
ok 60 - git_test_func: removed submodule leaves submodule containing a .git directory alone
checking known breakage of 1013.61 'git_test_func: replace submodule with a directory must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_directory origin/replace_sub1_with_directory &&
$command replace_sub1_with_directory test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
warning: unable to rmdir 'sub1': Directory not empty
test_must_fail: command succeeded: git read-tree -u --reset replace_sub1_with_directory
not ok 61 - git_test_func: replace submodule with a directory must fail # TODO known breakage
checking known breakage of 1013.62 'git_test_func: replace submodule containing a .git directory with a directory must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_directory origin/replace_sub1_with_directory &&
replace_gitfile_with_git_dir sub1 &&
$command replace_sub1_with_directory test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_git_directory_is_unchanged sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
warning: unable to rmdir 'sub1': Directory not empty
test_must_fail: command succeeded: git read-tree -u --reset replace_sub1_with_directory
not ok 62 - git_test_func: replace submodule containing a .git directory with a directory must fail # TODO known breakage
checking known breakage of 1013.63 'git_test_func: replace submodule with a file must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_file origin/replace_sub1_with_file &&
$command replace_sub1_with_file test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
test_must_fail: command succeeded: git read-tree -u --reset replace_sub1_with_file
not ok 63 - git_test_func: replace submodule with a file must fail # TODO known breakage
checking known breakage of 1013.64 'git_test_func: replace submodule containing a .git directory with a file must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_file origin/replace_sub1_with_file &&
replace_gitfile_with_git_dir sub1 &&
$command replace_sub1_with_file test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_git_directory_is_unchanged sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
test_must_fail: command succeeded: git read-tree -u --reset replace_sub1_with_file
not ok 64 - git_test_func: replace submodule containing a .git directory with a file must fail # TODO known breakage
expecting success of 1013.65 'git_test_func: modified submodule does not update submodule work tree':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t modify_sub1 origin/modify_sub1 &&
$command modify_sub1 &&
test_superproject_content origin/modify_sub1 &&
test_submodule_content sub1 origin/add_sub1 &&
git submodule update &&
test_submodule_content sub1 origin/modify_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'modify_sub1' set up to track 'origin/modify_sub1'.
Submodule path 'sub1': checked out '03da4ea88bb165bd26ee0b2e5c657f2858b23f53'
ok 65 - git_test_func: modified submodule does not update submodule work tree
expecting success of 1013.66 'git_test_func: modified submodule does not update submodule work tree to invalid commit':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t invalid_sub1 origin/invalid_sub1 &&
$command invalid_sub1 &&
test_superproject_content origin/invalid_sub1 &&
test_submodule_content sub1 origin/add_sub1 &&
test_must_fail git submodule update &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'invalid_sub1' set up to track 'origin/invalid_sub1'.
fatal: git upload-pack: not our ref 0123456789012345678901234567890123456789
fatal: remote error: upload-pack: not our ref 0123456789012345678901234567890123456789
fatal: Fetched in submodule path 'sub1', but it did not contain 0123456789012345678901234567890123456789. Direct fetching of that commit failed.
ok 66 - git_test_func: modified submodule does not update submodule work tree to invalid commit
expecting success of 1013.67 'git_test_func: modified submodule does not update submodule work tree from invalid commit':
prolog &&
reset_work_tree_to invalid_sub1 &&
(
cd submodule_update &&
git branch -t valid_sub1 origin/valid_sub1 &&
$command valid_sub1 &&
test_superproject_content origin/valid_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/valid_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'invalid_sub1'
branch 'invalid_sub1' set up to track 'origin/invalid_sub1'.
fatal: Needed a single revision
branch 'valid_sub1' set up to track 'origin/valid_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1013-read-tree-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Submodule path 'uninitialized_sub': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 67 - git_test_func: modified submodule does not update submodule work tree from invalid commit
expecting success of 1013.68 'git_test_func: added submodule does remove untracked unignored file with same name when forced':
prolog &&
reset_work_tree_to no_submodule &&
(
cd submodule_update &&
git branch -t add_sub1 origin/add_sub1 &&
>sub1 &&
$command add_sub1 &&
test_superproject_content origin/add_sub1 &&
test_dir_is_empty sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
ok 68 - git_test_func: added submodule does remove untracked unignored file with same name when forced
# still have 10 known breakage(s)
# passed all remaining 58 test(s)
1..68
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1412-reflog-loop.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1412-reflog-loop/.git/
expecting success of 1412.1 'setup commits':
test_commit one file content &&
test_commit --append two file content
[master (root-commit) e46513e] one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
[master 98995b2] two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
ok 1 - setup commits
expecting success of 1412.2 'setup reflog with alternating commits':
git checkout -b topic &&
git reset one &&
git reset two &&
git reset one &&
git reset two
Switched to a new branch 'topic'
Unstaged changes after reset:
M file
Unstaged changes after reset:
M file
ok 2 - setup reflog with alternating commits
expecting success of 1412.3 'reflog shows all entries':
cat >expect <<-\EOF &&
topic@{0} reset: moving to two
topic@{1} reset: moving to one
topic@{2} reset: moving to two
topic@{3} reset: moving to one
topic@{4} branch: Created from HEAD
EOF
git log -g --format="%gd %gs" topic >actual &&
test_cmp expect actual
ok 3 - reflog shows all entries
# passed all 3 test(s)
1..3
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1404-update-ref-errors.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1404-update-ref-errors/.git/
expecting success of 1404.1 'setup':
git commit --allow-empty -m Initial &&
C=$(git rev-parse HEAD) &&
git commit --allow-empty -m Second &&
D=$(git rev-parse HEAD) &&
git commit --allow-empty -m Third &&
E=$(git rev-parse HEAD)
[master (root-commit) d31adcd] Initial
Author: A U Thor <author@example.com>
[master e6940ad] Second
Author: A U Thor <author@example.com>
[master c2327cb] Third
Author: A U Thor <author@example.com>
ok 1 - setup
expecting success of 1404.2 'existing loose ref is a simple prefix of new':
prefix=refs/1l &&
test_update_rejected "a c e" false "b c/x d" \
"$SQ$prefix/c$SQ exists; cannot create $SQ$prefix/c/x$SQ"
fatal: cannot lock ref 'refs/1l/c/x': 'refs/1l/c' exists; cannot create 'refs/1l/c/x'
ok 2 - existing loose ref is a simple prefix of new
expecting success of 1404.3 'existing packed ref is a simple prefix of new':
prefix=refs/1p &&
test_update_rejected "a c e" true "b c/x d" \
"$SQ$prefix/c$SQ exists; cannot create $SQ$prefix/c/x$SQ"
fatal: cannot lock ref 'refs/1p/c/x': 'refs/1p/c' exists; cannot create 'refs/1p/c/x'
ok 3 - existing packed ref is a simple prefix of new
expecting success of 1404.4 'existing loose ref is a deeper prefix of new':
prefix=refs/2l &&
test_update_rejected "a c e" false "b c/x/y d" \
"$SQ$prefix/c$SQ exists; cannot create $SQ$prefix/c/x/y$SQ"
fatal: cannot lock ref 'refs/2l/c/x/y': 'refs/2l/c' exists; cannot create 'refs/2l/c/x/y'
ok 4 - existing loose ref is a deeper prefix of new
expecting success of 1404.5 'existing packed ref is a deeper prefix of new':
prefix=refs/2p &&
test_update_rejected "a c e" true "b c/x/y d" \
"$SQ$prefix/c$SQ exists; cannot create $SQ$prefix/c/x/y$SQ"
fatal: cannot lock ref 'refs/2p/c/x/y': 'refs/2p/c' exists; cannot create 'refs/2p/c/x/y'
ok 5 - existing packed ref is a deeper prefix of new
expecting success of 1404.6 'new ref is a simple prefix of existing loose':
prefix=refs/3l &&
test_update_rejected "a c/x e" false "b c d" \
"$SQ$prefix/c/x$SQ exists; cannot create $SQ$prefix/c$SQ"
fatal: cannot lock ref 'refs/3l/c': 'refs/3l/c/x' exists; cannot create 'refs/3l/c'
ok 6 - new ref is a simple prefix of existing loose
expecting success of 1404.7 'new ref is a simple prefix of existing packed':
prefix=refs/3p &&
test_update_rejected "a c/x e" true "b c d" \
"$SQ$prefix/c/x$SQ exists; cannot create $SQ$prefix/c$SQ"
fatal: cannot lock ref 'refs/3p/c': 'refs/3p/c/x' exists; cannot create 'refs/3p/c'
ok 7 - new ref is a simple prefix of existing packed
expecting success of 1404.8 'new ref is a deeper prefix of existing loose':
prefix=refs/4l &&
test_update_rejected "a c/x/y e" false "b c d" \
"$SQ$prefix/c/x/y$SQ exists; cannot create $SQ$prefix/c$SQ"
fatal: cannot lock ref 'refs/4l/c': 'refs/4l/c/x/y' exists; cannot create 'refs/4l/c'
ok 8 - new ref is a deeper prefix of existing loose
expecting success of 1404.9 'new ref is a deeper prefix of existing packed':
prefix=refs/4p &&
test_update_rejected "a c/x/y e" true "b c d" \
"$SQ$prefix/c/x/y$SQ exists; cannot create $SQ$prefix/c$SQ"
fatal: cannot lock ref 'refs/4p/c': 'refs/4p/c/x/y' exists; cannot create 'refs/4p/c'
ok 9 - new ref is a deeper prefix of existing packed
expecting success of 1404.10 'one new ref is a simple prefix of another':
prefix=refs/5 &&
test_update_rejected "a e" false "b c c/x d" \
"cannot process $SQ$prefix/c$SQ and $SQ$prefix/c/x$SQ at the same time"
fatal: cannot lock ref 'refs/5/c': cannot process 'refs/5/c' and 'refs/5/c/x' at the same time
ok 10 - one new ref is a simple prefix of another
expecting success of 1404.11 'empty directory should not fool rev-parse':
prefix=refs/e-rev-parse &&
git update-ref $prefix/foo $C &&
git pack-refs --all &&
mkdir -p .git/$prefix/foo/bar/baz &&
echo "$C" >expected &&
git rev-parse $prefix/foo >actual &&
test_cmp expected actual
ok 11 - empty directory should not fool rev-parse
expecting success of 1404.12 'empty directory should not fool for-each-ref':
prefix=refs/e-for-each-ref &&
git update-ref $prefix/foo $C &&
git for-each-ref $prefix >expected &&
git pack-refs --all &&
mkdir -p .git/$prefix/foo/bar/baz &&
git for-each-ref $prefix >actual &&
test_cmp expected actual
ok 12 - empty directory should not fool for-each-ref
expecting success of 1404.13 'empty directory should not fool create':
prefix=refs/e-create &&
mkdir -p .git/$prefix/foo/bar/baz &&
printf "create %s $C\n" $prefix/foo |
git update-ref --stdin
ok 13 - empty directory should not fool create
expecting success of 1404.14 'empty directory should not fool verify':
prefix=refs/e-verify &&
git update-ref $prefix/foo $C &&
git pack-refs --all &&
mkdir -p .git/$prefix/foo/bar/baz &&
printf "verify %s $C\n" $prefix/foo |
git update-ref --stdin
ok 14 - empty directory should not fool verify
expecting success of 1404.15 'empty directory should not fool 1-arg update':
prefix=refs/e-update-1 &&
git update-ref $prefix/foo $C &&
git pack-refs --all &&
mkdir -p .git/$prefix/foo/bar/baz &&
printf "update %s $D\n" $prefix/foo |
git update-ref --stdin
ok 15 - empty directory should not fool 1-arg update
expecting success of 1404.16 'empty directory should not fool 2-arg update':
prefix=refs/e-update-2 &&
git update-ref $prefix/foo $C &&
git pack-refs --all &&
mkdir -p .git/$prefix/foo/bar/baz &&
printf "update %s $D $C\n" $prefix/foo |
git update-ref --stdin
ok 16 - empty directory should not fool 2-arg update
expecting success of 1404.17 'empty directory should not fool 0-arg delete':
prefix=refs/e-delete-0 &&
git update-ref $prefix/foo $C &&
git pack-refs --all &&
mkdir -p .git/$prefix/foo/bar/baz &&
printf "delete %s\n" $prefix/foo |
git update-ref --stdin
ok 17 - empty directory should not fool 0-arg delete
expecting success of 1404.18 'empty directory should not fool 1-arg delete':
prefix=refs/e-delete-1 &&
git update-ref $prefix/foo $C &&
git pack-refs --all &&
mkdir -p .git/$prefix/foo/bar/baz &&
printf "delete %s $C\n" $prefix/foo |
git update-ref --stdin
ok 18 - empty directory should not fool 1-arg delete
expecting success of 1404.19 'D/F conflict prevents add long + delete short':
df_test refs/df-al-ds --add-del foo/bar foo
ok 19 - D/F conflict prevents add long + delete short
expecting success of 1404.20 'D/F conflict prevents add short + delete long':
df_test refs/df-as-dl --add-del foo foo/bar
ok 20 - D/F conflict prevents add short + delete long
expecting success of 1404.21 'D/F conflict prevents delete long + add short':
df_test refs/df-dl-as --del-add foo/bar foo
ok 21 - D/F conflict prevents delete long + add short
expecting success of 1404.22 'D/F conflict prevents delete short + add long':
df_test refs/df-ds-al --del-add foo foo/bar
ok 22 - D/F conflict prevents delete short + add long
expecting success of 1404.23 'D/F conflict prevents add long + delete short packed':
df_test refs/df-al-dsp --pack --add-del foo/bar foo
ok 23 - D/F conflict prevents add long + delete short packed
expecting success of 1404.24 'D/F conflict prevents add short + delete long packed':
df_test refs/df-as-dlp --pack --add-del foo foo/bar
ok 24 - D/F conflict prevents add short + delete long packed
expecting success of 1404.25 'D/F conflict prevents delete long packed + add short':
df_test refs/df-dlp-as --pack --del-add foo/bar foo
ok 25 - D/F conflict prevents delete long packed + add short
expecting success of 1404.26 'D/F conflict prevents delete short packed + add long':
df_test refs/df-dsp-al --pack --del-add foo foo/bar
ok 26 - D/F conflict prevents delete short packed + add long
expecting success of 1404.27 'D/F conflict prevents indirect add long + delete short':
df_test refs/df-ial-ds --sym-add --add-del foo/bar foo
ok 27 - D/F conflict prevents indirect add long + delete short
expecting success of 1404.28 'D/F conflict prevents indirect add long + indirect delete short':
df_test refs/df-ial-ids --sym-add --sym-del --add-del foo/bar foo
ok 28 - D/F conflict prevents indirect add long + indirect delete short
expecting success of 1404.29 'D/F conflict prevents indirect add short + indirect delete long':
df_test refs/df-ias-idl --sym-add --sym-del --add-del foo foo/bar
ok 29 - D/F conflict prevents indirect add short + indirect delete long
expecting success of 1404.30 'D/F conflict prevents indirect delete long + indirect add short':
df_test refs/df-idl-ias --sym-add --sym-del --del-add foo/bar foo
ok 30 - D/F conflict prevents indirect delete long + indirect add short
expecting success of 1404.31 'D/F conflict prevents indirect add long + delete short packed':
df_test refs/df-ial-dsp --sym-add --pack --add-del foo/bar foo
ok 31 - D/F conflict prevents indirect add long + delete short packed
expecting success of 1404.32 'D/F conflict prevents indirect add long + indirect delete short packed':
df_test refs/df-ial-idsp --sym-add --sym-del --pack --add-del foo/bar foo
ok 32 - D/F conflict prevents indirect add long + indirect delete short packed
expecting success of 1404.33 'D/F conflict prevents add long + indirect delete short packed':
df_test refs/df-al-idsp --sym-del --pack --add-del foo/bar foo
ok 33 - D/F conflict prevents add long + indirect delete short packed
expecting success of 1404.34 'D/F conflict prevents indirect delete long packed + indirect add short':
df_test refs/df-idlp-ias --sym-add --sym-del --pack --del-add foo/bar foo
ok 34 - D/F conflict prevents indirect delete long packed + indirect add short
expecting success of 1404.35 'missing old value blocks update':
prefix=refs/missing-update &&
cat >expected <<-EOF &&
fatal: cannot lock ref $SQ$prefix/foo$SQ: unable to resolve reference $SQ$prefix/foo$SQ
EOF
printf "%s\n" "update $prefix/foo $E $D" |
test_must_fail git update-ref --stdin 2>output.err &&
test_cmp expected output.err
ok 35 - missing old value blocks update
expecting success of 1404.36 'incorrect old value blocks update':
prefix=refs/incorrect-update &&
git update-ref $prefix/foo $C &&
cat >expected <<-EOF &&
fatal: cannot lock ref $SQ$prefix/foo$SQ: is at $C but expected $D
EOF
printf "%s\n" "update $prefix/foo $E $D" |
test_must_fail git update-ref --stdin 2>output.err &&
test_cmp expected output.err
ok 36 - incorrect old value blocks update
expecting success of 1404.37 'existing old value blocks create':
prefix=refs/existing-create &&
git update-ref $prefix/foo $C &&
cat >expected <<-EOF &&
fatal: cannot lock ref $SQ$prefix/foo$SQ: reference already exists
EOF
printf "%s\n" "create $prefix/foo $E" |
test_must_fail git update-ref --stdin 2>output.err &&
test_cmp expected output.err
ok 37 - existing old value blocks create
expecting success of 1404.38 'incorrect old value blocks delete':
prefix=refs/incorrect-delete &&
git update-ref $prefix/foo $C &&
cat >expected <<-EOF &&
fatal: cannot lock ref $SQ$prefix/foo$SQ: is at $C but expected $D
EOF
printf "%s\n" "delete $prefix/foo $D" |
test_must_fail git update-ref --stdin 2>output.err &&
test_cmp expected output.err
ok 38 - incorrect old value blocks delete
expecting success of 1404.39 'missing old value blocks indirect update':
prefix=refs/missing-indirect-update &&
git symbolic-ref $prefix/symref $prefix/foo &&
cat >expected <<-EOF &&
fatal: cannot lock ref $SQ$prefix/symref$SQ: unable to resolve reference $SQ$prefix/foo$SQ
EOF
printf "%s\n" "update $prefix/symref $E $D" |
test_must_fail git update-ref --stdin 2>output.err &&
test_cmp expected output.err
ok 39 - missing old value blocks indirect update
expecting success of 1404.40 'incorrect old value blocks indirect update':
prefix=refs/incorrect-indirect-update &&
git symbolic-ref $prefix/symref $prefix/foo &&
git update-ref $prefix/foo $C &&
cat >expected <<-EOF &&
fatal: cannot lock ref $SQ$prefix/symref$SQ: is at $C but expected $D
EOF
printf "%s\n" "update $prefix/symref $E $D" |
test_must_fail git update-ref --stdin 2>output.err &&
test_cmp expected output.err
ok 40 - incorrect old value blocks indirect update
expecting success of 1404.41 'existing old value blocks indirect create':
prefix=refs/existing-indirect-create &&
git symbolic-ref $prefix/symref $prefix/foo &&
git update-ref $prefix/foo $C &&
cat >expected <<-EOF &&
fatal: cannot lock ref $SQ$prefix/symref$SQ: reference already exists
EOF
printf "%s\n" "create $prefix/symref $E" |
test_must_fail git update-ref --stdin 2>output.err &&
test_cmp expected output.err
ok 41 - existing old value blocks indirect create
expecting success of 1404.42 'incorrect old value blocks indirect delete':
prefix=refs/incorrect-indirect-delete &&
git symbolic-ref $prefix/symref $prefix/foo &&
git update-ref $prefix/foo $C &&
cat >expected <<-EOF &&
fatal: cannot lock ref $SQ$prefix/symref$SQ: is at $C but expected $D
EOF
printf "%s\n" "delete $prefix/symref $D" |
test_must_fail git update-ref --stdin 2>output.err &&
test_cmp expected output.err
ok 42 - incorrect old value blocks indirect delete
expecting success of 1404.43 'missing old value blocks indirect no-deref update':
prefix=refs/missing-noderef-update &&
git symbolic-ref $prefix/symref $prefix/foo &&
cat >expected <<-EOF &&
fatal: cannot lock ref $SQ$prefix/symref$SQ: reference is missing but expected $D
EOF
printf "%s\n" "option no-deref" "update $prefix/symref $E $D" |
test_must_fail git update-ref --stdin 2>output.err &&
test_cmp expected output.err
ok 43 - missing old value blocks indirect no-deref update
expecting success of 1404.44 'incorrect old value blocks indirect no-deref update':
prefix=refs/incorrect-noderef-update &&
git symbolic-ref $prefix/symref $prefix/foo &&
git update-ref $prefix/foo $C &&
cat >expected <<-EOF &&
fatal: cannot lock ref $SQ$prefix/symref$SQ: is at $C but expected $D
EOF
printf "%s\n" "option no-deref" "update $prefix/symref $E $D" |
test_must_fail git update-ref --stdin 2>output.err &&
test_cmp expected output.err
ok 44 - incorrect old value blocks indirect no-deref update
expecting success of 1404.45 'existing old value blocks indirect no-deref create':
prefix=refs/existing-noderef-create &&
git symbolic-ref $prefix/symref $prefix/foo &&
git update-ref $prefix/foo $C &&
cat >expected <<-EOF &&
fatal: cannot lock ref $SQ$prefix/symref$SQ: reference already exists
EOF
printf "%s\n" "option no-deref" "create $prefix/symref $E" |
test_must_fail git update-ref --stdin 2>output.err &&
test_cmp expected output.err
ok 45 - existing old value blocks indirect no-deref create
expecting success of 1404.46 'incorrect old value blocks indirect no-deref delete':
prefix=refs/incorrect-noderef-delete &&
git symbolic-ref $prefix/symref $prefix/foo &&
git update-ref $prefix/foo $C &&
cat >expected <<-EOF &&
fatal: cannot lock ref $SQ$prefix/symref$SQ: is at $C but expected $D
EOF
printf "%s\n" "option no-deref" "delete $prefix/symref $D" |
test_must_fail git update-ref --stdin 2>output.err &&
test_cmp expected output.err
ok 46 - incorrect old value blocks indirect no-deref delete
expecting success of 1404.47 'non-empty directory blocks create':
prefix=refs/ne-create &&
mkdir -p .git/$prefix/foo/bar &&
: >.git/$prefix/foo/bar/baz.lock &&
test_when_finished "rm -f .git/$prefix/foo/bar/baz.lock" &&
cat >expected <<-EOF &&
fatal: cannot lock ref $SQ$prefix/foo$SQ: there is a non-empty directory $SQ.git/$prefix/foo$SQ blocking reference $SQ$prefix/foo$SQ
EOF
printf "%s\n" "update $prefix/foo $C" |
test_must_fail git update-ref --stdin 2>output.err &&
test_cmp expected output.err &&
cat >expected <<-EOF &&
fatal: cannot lock ref $SQ$prefix/foo$SQ: unable to resolve reference $SQ$prefix/foo$SQ
EOF
printf "%s\n" "update $prefix/foo $D $C" |
test_must_fail git update-ref --stdin 2>output.err &&
test_cmp expected output.err
ok 47 - non-empty directory blocks create
expecting success of 1404.48 'broken reference blocks create':
prefix=refs/broken-create &&
mkdir -p .git/$prefix &&
echo "gobbledigook" >.git/$prefix/foo &&
test_when_finished "rm -f .git/$prefix/foo" &&
cat >expected <<-EOF &&
fatal: cannot lock ref $SQ$prefix/foo$SQ: unable to resolve reference $SQ$prefix/foo$SQ: reference broken
EOF
printf "%s\n" "update $prefix/foo $C" |
test_must_fail git update-ref --stdin 2>output.err &&
test_cmp expected output.err &&
cat >expected <<-EOF &&
fatal: cannot lock ref $SQ$prefix/foo$SQ: unable to resolve reference $SQ$prefix/foo$SQ: reference broken
EOF
printf "%s\n" "update $prefix/foo $D $C" |
test_must_fail git update-ref --stdin 2>output.err &&
test_cmp expected output.err
ok 48 - broken reference blocks create
expecting success of 1404.49 'non-empty directory blocks indirect create':
prefix=refs/ne-indirect-create &&
git symbolic-ref $prefix/symref $prefix/foo &&
mkdir -p .git/$prefix/foo/bar &&
: >.git/$prefix/foo/bar/baz.lock &&
test_when_finished "rm -f .git/$prefix/foo/bar/baz.lock" &&
cat >expected <<-EOF &&
fatal: cannot lock ref $SQ$prefix/symref$SQ: there is a non-empty directory $SQ.git/$prefix/foo$SQ blocking reference $SQ$prefix/foo$SQ
EOF
printf "%s\n" "update $prefix/symref $C" |
test_must_fail git update-ref --stdin 2>output.err &&
test_cmp expected output.err &&
cat >expected <<-EOF &&
fatal: cannot lock ref $SQ$prefix/symref$SQ: unable to resolve reference $SQ$prefix/foo$SQ
EOF
printf "%s\n" "update $prefix/symref $D $C" |
test_must_fail git update-ref --stdin 2>output.err &&
test_cmp expected output.err
ok 49 - non-empty directory blocks indirect create
expecting success of 1404.50 'broken reference blocks indirect create':
prefix=refs/broken-indirect-create &&
git symbolic-ref $prefix/symref $prefix/foo &&
echo "gobbledigook" >.git/$prefix/foo &&
test_when_finished "rm -f .git/$prefix/foo" &&
cat >expected <<-EOF &&
fatal: cannot lock ref $SQ$prefix/symref$SQ: unable to resolve reference $SQ$prefix/foo$SQ: reference broken
EOF
printf "%s\n" "update $prefix/symref $C" |
test_must_fail git update-ref --stdin 2>output.err &&
test_cmp expected output.err &&
cat >expected <<-EOF &&
fatal: cannot lock ref $SQ$prefix/symref$SQ: unable to resolve reference $SQ$prefix/foo$SQ: reference broken
EOF
printf "%s\n" "update $prefix/symref $D $C" |
test_must_fail git update-ref --stdin 2>output.err &&
test_cmp expected output.err
ok 50 - broken reference blocks indirect create
expecting success of 1404.51 'no bogus intermediate values during delete':
prefix=refs/slow-transaction &&
# Set up a reference with differing loose and packed versions:
git update-ref $prefix/foo $C &&
git pack-refs --all &&
git update-ref $prefix/foo $D &&
# Now try to update the reference, but hold the `packed-refs` lock
# for a while to see what happens while the process is blocked:
: >.git/packed-refs.lock &&
test_when_finished "rm -f .git/packed-refs.lock" &&
{
# Note: the following command is intentionally run in the
# background. We increase the timeout so that `update-ref`
# attempts to acquire the `packed-refs` lock for much longer
# than it takes for us to do the check then delete it:
git -c core.packedrefstimeout=30000 update-ref -d $prefix/foo &
} &&
pid2=$! &&
# Give update-ref plenty of time to get to the point where it tries
# to lock packed-refs:
sleep 1 &&
# Make sure that update-ref did not complete despite the lock:
kill -0 $pid2 &&
# Verify that the reference still has its old value:
sha1=$(git rev-parse --verify --quiet $prefix/foo || echo undefined) &&
case "$sha1" in
$D)
# This is what we hope for; it means that nothing
# user-visible has changed yet.
: ;;
undefined)
# This is not correct; it means the deletion has happened
# already even though update-ref should not have been
# able to acquire the lock yet.
echo "$prefix/foo deleted prematurely" &&
break
;;
$C)
# This value should never be seen. Probably the loose
# reference has been deleted but the packed reference
# is still there:
echo "$prefix/foo incorrectly observed to be C" &&
break
;;
*)
# WTF?
echo "unexpected value observed for $prefix/foo: $sha1" &&
break
;;
esac >out &&
rm -f .git/packed-refs.lock &&
wait $pid2 &&
test_must_be_empty out &&
test_must_fail git rev-parse --verify --quiet $prefix/foo
ok 51 - no bogus intermediate values during delete
expecting success of 1404.52 'delete fails cleanly if packed-refs file is locked':
prefix=refs/locked-packed-refs &&
# Set up a reference with differing loose and packed versions:
git update-ref $prefix/foo $C &&
git pack-refs --all &&
git update-ref $prefix/foo $D &&
git for-each-ref $prefix >unchanged &&
# Now try to delete it while the `packed-refs` lock is held:
: >.git/packed-refs.lock &&
test_when_finished "rm -f .git/packed-refs.lock" &&
test_must_fail git update-ref -d $prefix/foo >out 2>err &&
git for-each-ref $prefix >actual &&
test_i18ngrep "Unable to create $SQ.*packed-refs.lock$SQ: " err &&
test_cmp unchanged actual
error: Unable to create '/<<PKGBUILDDIR>>/t/trash directory.t1404-update-ref-errors/.git/packed-refs.lock': File exists.
ok 52 - delete fails cleanly if packed-refs file is locked
expecting success of 1404.53 'delete fails cleanly if packed-refs.new write fails':
# Setup and expectations are similar to the test above.
prefix=refs/failed-packed-refs &&
git update-ref $prefix/foo $C &&
git pack-refs --all &&
git update-ref $prefix/foo $D &&
git for-each-ref $prefix >unchanged &&
# This should not happen in practice, but it is an easy way to get a
# reliable error (we open with create_tempfile(), which uses O_EXCL).
: >.git/packed-refs.new &&
test_when_finished "rm -f .git/packed-refs.new" &&
test_must_fail git update-ref -d $prefix/foo &&
git for-each-ref $prefix >actual &&
test_cmp unchanged actual
error: unable to create file /<<PKGBUILDDIR>>/t/trash directory.t1404-update-ref-errors/.git/packed-refs.new: File exists
ok 53 - delete fails cleanly if packed-refs.new write fails
# passed all 53 test(s)
1..53
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1413-reflog-detach.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1413-reflog-detach/.git/
expecting success of 1413.1 'setup':
test_tick &&
git commit --allow-empty -m initial &&
git branch side &&
test_tick &&
git commit --allow-empty -m second &&
"$TAR" cf .git-saved.tar .git
[main (root-commit) 66fe8b3] initial
Author: A U Thor <author@example.com>
[main 5ce2b00] second
Author: A U Thor <author@example.com>
ok 1 - setup
expecting success of 1413.2 'baseline':
reset_state &&
git rev-parse main main^ >expect &&
git log -g --format=%H >actual &&
test_cmp expect actual
ok 2 - baseline
expecting success of 1413.3 'switch to branch':
reset_state &&
git rev-parse side main main^ >expect &&
git checkout side &&
git log -g --format=%H >actual &&
test_cmp expect actual
Switched to branch 'side'
ok 3 - switch to branch
expecting success of 1413.4 'detach to other':
reset_state &&
git rev-parse main side main main^ >expect &&
git checkout side &&
git checkout main^0 &&
git log -g --format=%H >actual &&
test_cmp expect actual
Switched to branch 'side'
Note: switching to 'main^0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 5ce2b00 second
ok 4 - detach to other
expecting success of 1413.5 'detach to self':
reset_state &&
git rev-parse main main main^ >expect &&
git checkout main^0 &&
git log -g --format=%H >actual &&
test_cmp expect actual
Note: switching to 'main^0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 5ce2b00 second
ok 5 - detach to self
expecting success of 1413.6 'attach to self':
reset_state &&
git rev-parse main main main main^ >expect &&
git checkout main^0 &&
git checkout main &&
git log -g --format=%H >actual &&
test_cmp expect actual
Note: switching to 'main^0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 5ce2b00 second
Switched to branch 'main'
ok 6 - attach to self
expecting success of 1413.7 'attach to other':
reset_state &&
git rev-parse side main main main^ >expect &&
git checkout main^0 &&
git checkout side &&
git log -g --format=%H >actual &&
test_cmp expect actual
Note: switching to 'main^0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 5ce2b00 second
Previous HEAD position was 5ce2b00 second
Switched to branch 'side'
ok 7 - attach to other
# passed all 7 test(s)
1..7
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1414-reflog-walk.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1414-reflog-walk/.git/
expecting success of 1414.1 'set up some reflog entries':
test_commit one &&
test_commit two &&
git checkout -b side HEAD^ &&
test_commit three &&
git merge --no-commit main &&
echo evil-merge-content >>one.t &&
test_tick &&
git commit --no-edit -a
[main (root-commit) d79ce16] one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 one.t
[main 139b20d] two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 two.t
Switched to a new branch 'side'
[side 897c206] three
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 three.t
Automatic merge went well; stopped before committing as requested
[side 6635cc5] Merge branch 'main' into side
Author: A U Thor <author@example.com>
ok 1 - set up some reflog entries
expecting success of 1414.2 'set up expected reflog':
cat >expect.all <<-EOF
HEAD@{0} commit (merge): Merge branch ${SQ}main${SQ} into side
HEAD@{1} commit: three
HEAD@{2} checkout: moving from main to side
HEAD@{3} commit: two
HEAD@{4} commit (initial): one
EOF
ok 2 - set up expected reflog
expecting success of 1414.3 'reflog walk shows expected logs':
do_walk >actual &&
test_cmp expect.all actual
ok 3 - reflog walk shows expected logs
expecting success of 1414.4 'reflog can limit with --no-merges':
grep -v merge expect.all >expect &&
do_walk --no-merges >actual &&
test_cmp expect actual
ok 4 - reflog can limit with --no-merges
expecting success of 1414.5 'reflog can limit with pathspecs':
grep two expect.all >expect &&
do_walk -- two.t >actual &&
test_cmp expect actual
ok 5 - reflog can limit with pathspecs
expecting success of 1414.6 'pathspec limiting handles merges':
# we pick up:
# - the initial commit of one
# - the checkout back to commit one
# - the evil merge which touched one
sed -n "1p;3p;5p" expect.all >expect &&
do_walk -- one.t >actual &&
test_cmp expect actual
ok 6 - pathspec limiting handles merges
expecting success of 1414.7 '--parents shows true parents':
# convert newlines to spaces
echo $(git rev-parse HEAD HEAD^1 HEAD^2) >expect &&
git rev-list -g --parents -1 HEAD >actual &&
test_cmp expect actual
ok 7 - --parents shows true parents
expecting success of 1414.8 'walking multiple reflogs shows all':
# We expect to see all entries for all reflogs, but interleaved by
# date, with order on the command line breaking ties. We
# can use "sort" on the separate lists to generate this,
# but note two tricks:
#
# 1. We use "{" as the delimiter, which lets us skip to the reflog
# date specifier as our second field, and then our "-n" numeric
# sort ignores the bits after the timestamp.
#
# 2. POSIX leaves undefined whether this is a stable sort or not. So
# we use "-k 1" to ensure that we see HEAD before main before
# side when breaking ties.
{
do_walk --date=unix HEAD &&
do_walk --date=unix side &&
do_walk --date=unix main
} >expect.raw &&
sort -t "{" -k 2nr -k 1 <expect.raw >expect &&
do_walk --date=unix HEAD main side >actual &&
test_cmp expect actual
ok 8 - walking multiple reflogs shows all
expecting success of 1414.9 'date-limiting does not interfere with other logs':
do_walk HEAD@{1979-01-01} HEAD >actual &&
test_cmp expect.all actual
warning: log for 'HEAD' only goes back to Thu, 7 Apr 2005 15:13:13 -0700
ok 9 - date-limiting does not interfere with other logs
expecting success of 1414.10 'min/max age uses entry date to limit':
# Flip between commits one and two so each ref update actually
# does something (and does not get optimized out). We know
# that the timestamps of those commits will be before our "min".
git update-ref -m before refs/heads/minmax one &&
test_tick &&
min=$test_tick &&
git update-ref -m min refs/heads/minmax two &&
test_tick &&
max=$test_tick &&
git update-ref -m max refs/heads/minmax one &&
test_tick &&
git update-ref -m after refs/heads/minmax two &&
cat >expect <<-\EOF &&
max
min
EOF
git log -g --since=$min --until=$max --format=%gs minmax >actual &&
test_cmp expect actual
ok 10 - min/max age uses entry date to limit
expecting success of 1414.11 'walk prefers reflog to ref tip':
head=$(git rev-parse HEAD) &&
one=$(git rev-parse one) &&
ident="$GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE" &&
echo "$head $one $ident broken reflog entry" >>.git/logs/HEAD &&
echo $one >expect &&
git log -g --format=%H -1 >actual &&
test_cmp expect actual
ok 11 - walk prefers reflog to ref tip
expecting success of 1414.12 'rev-list -g complains when there are no reflogs':
test_must_fail git rev-list -g
usage: git rev-list [<options>] <commit>... [--] [<path>...]
limiting output:
--max-count=<n>
--max-age=<epoch>
--min-age=<epoch>
--sparse
--no-merges
--min-parents=<n>
--no-min-parents
--max-parents=<n>
--no-max-parents
--remove-empty
--all
--branches
--tags
--remotes
--stdin
--exclude-hidden=[fetch|receive|uploadpack]
--quiet
ordering output:
--topo-order
--date-order
--reverse
formatting output:
--parents
--children
--objects | --objects-edge
--disk-usage[=human]
--unpacked
--header | --pretty
--[no-]object-names
--abbrev=<n> | --no-abbrev
--abbrev-commit
--left-right
--count
special purpose:
--bisect
--bisect-vars
--bisect-all
ok 12 - rev-list -g complains when there are no reflogs
# passed all 12 test(s)
1..12
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1416-ref-transaction-hooks.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1416-ref-transaction-hooks/.git/
expecting success of 1416.1 'setup':
test_commit PRE &&
PRE_OID=$(git rev-parse PRE) &&
test_commit POST &&
POST_OID=$(git rev-parse POST)
[main (root-commit) 63ac8e7] PRE
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 PRE.t
[main 99d5316] POST
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 POST.t
ok 1 - setup
expecting success of 1416.2 'hook allows updating ref if successful':
git reset --hard PRE &&
test_hook reference-transaction <<-\EOF &&
echo "$*" >>actual
EOF
cat >expect <<-EOF &&
prepared
committed
EOF
git update-ref HEAD POST &&
test_cmp expect actual
HEAD is now at 63ac8e7 PRE
ok 2 - hook allows updating ref if successful
expecting success of 1416.3 'hook aborts updating ref in prepared state':
git reset --hard PRE &&
test_hook reference-transaction <<-\EOF &&
if test "$1" = prepared
then
exit 1
fi
EOF
test_must_fail git update-ref HEAD POST 2>err &&
test_i18ngrep "ref updates aborted by hook" err
HEAD is now at 63ac8e7 PRE
fatal: ref updates aborted by hook
ok 3 - hook aborts updating ref in prepared state
expecting success of 1416.4 'hook gets all queued updates in prepared state':
test_when_finished "rm actual" &&
git reset --hard PRE &&
test_hook reference-transaction <<-\EOF &&
if test "$1" = prepared
then
while read -r line
do
printf "%s\n" "$line"
done >actual
fi
EOF
cat >expect <<-EOF &&
$ZERO_OID $POST_OID HEAD
$ZERO_OID $POST_OID refs/heads/main
EOF
git update-ref HEAD POST <<-EOF &&
update HEAD $ZERO_OID $POST_OID
update refs/heads/main $ZERO_OID $POST_OID
EOF
test_cmp expect actual
HEAD is now at 63ac8e7 PRE
ok 4 - hook gets all queued updates in prepared state
expecting success of 1416.5 'hook gets all queued updates in committed state':
test_when_finished "rm actual" &&
git reset --hard PRE &&
test_hook reference-transaction <<-\EOF &&
if test "$1" = committed
then
while read -r line
do
printf "%s\n" "$line"
done >actual
fi
EOF
cat >expect <<-EOF &&
$ZERO_OID $POST_OID HEAD
$ZERO_OID $POST_OID refs/heads/main
EOF
git update-ref HEAD POST &&
test_cmp expect actual
HEAD is now at 63ac8e7 PRE
ok 5 - hook gets all queued updates in committed state
expecting success of 1416.6 'hook gets all queued updates in aborted state':
test_when_finished "rm actual" &&
git reset --hard PRE &&
test_hook reference-transaction <<-\EOF &&
if test "$1" = aborted
then
while read -r line
do
printf "%s\n" "$line"
done >actual
fi
EOF
cat >expect <<-EOF &&
$ZERO_OID $POST_OID HEAD
$ZERO_OID $POST_OID refs/heads/main
EOF
git update-ref --stdin <<-EOF &&
start
update HEAD POST $ZERO_OID
update refs/heads/main POST $ZERO_OID
abort
EOF
test_cmp expect actual
HEAD is now at 63ac8e7 PRE
start: ok
abort: ok
ok 6 - hook gets all queued updates in aborted state
expecting success of 1416.7 'interleaving hook calls succeed':
test_when_finished "rm -r target-repo.git" &&
git init --bare target-repo.git &&
test_hook -C target-repo.git reference-transaction <<-\EOF &&
echo $0 "$@" >>actual
EOF
test_hook -C target-repo.git update <<-\EOF &&
echo $0 "$@" >>actual
EOF
cat >expect <<-EOF &&
hooks/update refs/tags/PRE $ZERO_OID $PRE_OID
hooks/reference-transaction prepared
hooks/reference-transaction committed
hooks/update refs/tags/POST $ZERO_OID $POST_OID
hooks/reference-transaction prepared
hooks/reference-transaction committed
EOF
git push ./target-repo.git PRE POST &&
test_cmp expect target-repo.git/actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1416-ref-transaction-hooks/target-repo.git/
To ./target-repo.git
* [new tag] PRE -> PRE
* [new tag] POST -> POST
ok 7 - interleaving hook calls succeed
# passed all 7 test(s)
1..7
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1415-worktree-refs.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1415-worktree-refs/.git/
expecting success of 1415.1 'setup':
test_commit initial &&
test_commit wt1 &&
test_commit wt2 &&
git worktree add wt1 wt1 &&
git worktree add wt2 wt2 &&
git checkout initial &&
git update-ref refs/worktree/foo HEAD &&
git -C wt1 update-ref refs/worktree/foo HEAD &&
git -C wt2 update-ref refs/worktree/foo HEAD
[master (root-commit) 24b24cf] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 initial.t
[master 42fba42] wt1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 wt1.t
[master 83df652] wt2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 wt2.t
Preparing worktree (detached HEAD 42fba42)
HEAD is now at 42fba42 wt1
Preparing worktree (detached HEAD 83df652)
HEAD is now at 83df652 wt2
Note: switching to 'initial'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 24b24cf initial
ok 1 - setup
expecting success of 1415.2 'refs/worktree must not be packed':
git pack-refs --all &&
test_path_is_missing .git/refs/tags/wt1 &&
test_path_is_file .git/refs/worktree/foo &&
test_path_is_file .git/worktrees/wt1/refs/worktree/foo &&
test_path_is_file .git/worktrees/wt2/refs/worktree/foo
ok 2 - refs/worktree must not be packed
expecting success of 1415.3 'refs/worktree are per-worktree':
test_cmp_rev worktree/foo initial &&
( cd wt1 && test_cmp_rev worktree/foo wt1 ) &&
( cd wt2 && test_cmp_rev worktree/foo wt2 )
ok 3 - refs/worktree are per-worktree
expecting success of 1415.4 'resolve main-worktree/HEAD':
test_cmp_rev main-worktree/HEAD initial &&
( cd wt1 && test_cmp_rev main-worktree/HEAD initial ) &&
( cd wt2 && test_cmp_rev main-worktree/HEAD initial )
ok 4 - resolve main-worktree/HEAD
expecting success of 1415.5 'ambiguous main-worktree/HEAD':
test_when_finished git update-ref -d refs/heads/main-worktree/HEAD &&
git update-ref refs/heads/main-worktree/HEAD $(git rev-parse HEAD) &&
git rev-parse main-worktree/HEAD 2>warn &&
grep "main-worktree/HEAD.*ambiguous" warn
24b24cf8a829f5b8c30dfc018b0a459a2ccaf380
warning: refname 'main-worktree/HEAD' is ambiguous.
ok 5 - ambiguous main-worktree/HEAD
expecting success of 1415.6 'resolve worktrees/xx/HEAD':
test_cmp_rev worktrees/wt1/HEAD wt1 &&
( cd wt1 && test_cmp_rev worktrees/wt1/HEAD wt1 ) &&
( cd wt2 && test_cmp_rev worktrees/wt1/HEAD wt1 )
ok 6 - resolve worktrees/xx/HEAD
expecting success of 1415.7 'ambiguous worktrees/xx/HEAD':
git update-ref refs/heads/worktrees/wt1/HEAD $(git rev-parse HEAD) &&
test_when_finished git update-ref -d refs/heads/worktrees/wt1/HEAD &&
git rev-parse worktrees/wt1/HEAD 2>warn &&
grep "worktrees/wt1/HEAD.*ambiguous" warn
42fba42569eaa325aaade18832dfa5432d54ffd1
warning: refname 'worktrees/wt1/HEAD' is ambiguous.
ok 7 - ambiguous worktrees/xx/HEAD
expecting success of 1415.8 'reflog of main-worktree/HEAD':
git reflog HEAD | sed "s/HEAD/main-worktree\/HEAD/" >expected &&
git reflog main-worktree/HEAD >actual &&
test_cmp expected actual &&
git -C wt1 reflog main-worktree/HEAD >actual.wt1 &&
test_cmp expected actual.wt1
ok 8 - reflog of main-worktree/HEAD
expecting success of 1415.9 'reflog of worktrees/xx/HEAD':
git -C wt2 reflog HEAD | sed "s/HEAD/worktrees\/wt2\/HEAD/" >expected &&
git reflog worktrees/wt2/HEAD >actual &&
test_cmp expected actual &&
git -C wt1 reflog worktrees/wt2/HEAD >actual.wt1 &&
test_cmp expected actual.wt1 &&
git -C wt2 reflog worktrees/wt2/HEAD >actual.wt2 &&
test_cmp expected actual.wt2
ok 9 - reflog of worktrees/xx/HEAD
expecting success of 1415.10 'for-each-ref from main worktree':
mkdir fer1 &&
git -C fer1 init repo &&
test_commit -C fer1/repo initial &&
git -C fer1/repo worktree add ../second &&
git -C fer1/repo update-ref refs/bisect/first HEAD &&
git -C fer1/repo update-ref refs/rewritten/first HEAD &&
git -C fer1/repo update-ref refs/worktree/first HEAD &&
git -C fer1/repo for-each-ref --format="%(refname)" | grep first >actual &&
cat >expected <<-\EOF &&
refs/bisect/first
refs/rewritten/first
refs/worktree/first
EOF
test_cmp expected actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1415-worktree-refs/fer1/repo/.git/
[master (root-commit) 1935181] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 initial.t
Preparing worktree (new branch 'second')
HEAD is now at 1935181 initial
ok 10 - for-each-ref from main worktree
expecting success of 1415.11 'for-each-ref from linked worktree':
mkdir fer2 &&
git -C fer2 init repo &&
test_commit -C fer2/repo initial &&
git -C fer2/repo worktree add ../second &&
git -C fer2/second update-ref refs/bisect/second HEAD &&
git -C fer2/second update-ref refs/rewritten/second HEAD &&
git -C fer2/second update-ref refs/worktree/second HEAD &&
git -C fer2/second for-each-ref --format="%(refname)" | grep second >actual &&
cat >expected <<-\EOF &&
refs/bisect/second
refs/heads/second
refs/rewritten/second
refs/worktree/second
EOF
test_cmp expected actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1415-worktree-refs/fer2/repo/.git/
[master (root-commit) 23fa7ba] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 initial.t
Preparing worktree (new branch 'second')
HEAD is now at 23fa7ba initial
ok 11 - for-each-ref from linked worktree
# passed all 11 test(s)
1..11
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1418-reflog-exists.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1418-reflog-exists/.git/
expecting success of 1418.1 'setup':
test_commit A
[main (root-commit) 0ddfaf1] A
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 A.t
ok 1 - setup
expecting success of 1418.2 'usage':
test_expect_code 129 git reflog exists &&
test_expect_code 129 git reflog exists -h
usage: git reflog exists <ref>
usage: git reflog exists <ref>
ok 2 - usage
expecting success of 1418.3 'usage: unknown option':
test_expect_code 129 git reflog exists --unknown-option
error: unknown option `unknown-option'
usage: git reflog exists <ref>
ok 3 - usage: unknown option
expecting success of 1418.4 'reflog exists works':
git reflog exists refs/heads/main &&
test_must_fail git reflog exists refs/heads/nonexistent
ok 4 - reflog exists works
expecting success of 1418.5 'reflog exists works with a "--" delimiter':
git reflog exists -- refs/heads/main &&
test_must_fail git reflog exists -- refs/heads/nonexistent
ok 5 - reflog exists works with a "--" delimiter
expecting success of 1418.6 'reflog exists works with a "--end-of-options" delimiter':
git reflog exists --end-of-options refs/heads/main &&
test_must_fail git reflog exists --end-of-options refs/heads/nonexistent
ok 6 - reflog exists works with a "--end-of-options" delimiter
# passed all 6 test(s)
1..6
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1420-lost-found.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1420-lost-found/.git/
expecting success of 1420.1 'setup':
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
[master (root-commit) 9bb1ae9] initial
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file1
[master 8ad33be] second
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 file2
ok 1 - setup
expecting success of 1420.2 'lost and found something':
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)
1..2
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1419-exclude-refs.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1419-exclude-refs/.git/
expecting success of 1419.1 'setup':
test_commit --no-tag base &&
base="$(git rev-parse HEAD)" &&
for name in foo bar baz quux
do
for i in 1 2 3
do
echo "create refs/heads/$name/$i $base" || return 1
done || return 1
done >in &&
echo "delete refs/heads/main" >>in &&
git update-ref --stdin <in &&
git pack-refs --all
[main (root-commit) d1ff1c9] base
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 base.t
ok 1 - setup
expecting success of 1419.2 'excluded region in middle':
for_each_ref__exclude refs/heads refs/heads/foo >actual 2>perf &&
for_each_ref refs/heads/bar refs/heads/baz refs/heads/quux >expect &&
test_cmp expect actual &&
assert_jumps 1 perf
ok 2 - excluded region in middle
expecting success of 1419.3 'excluded region at beginning':
for_each_ref__exclude refs/heads refs/heads/bar >actual 2>perf &&
for_each_ref refs/heads/baz refs/heads/foo refs/heads/quux >expect &&
test_cmp expect actual &&
assert_jumps 1 perf
ok 3 - excluded region at beginning
expecting success of 1419.4 'excluded region at end':
for_each_ref__exclude refs/heads refs/heads/quux >actual 2>perf &&
for_each_ref refs/heads/foo refs/heads/bar refs/heads/baz >expect &&
test_cmp expect actual &&
assert_jumps 1 perf
ok 4 - excluded region at end
expecting success of 1419.5 'disjoint excluded regions':
for_each_ref__exclude refs/heads refs/heads/bar refs/heads/quux >actual 2>perf &&
for_each_ref refs/heads/baz refs/heads/foo >expect &&
test_cmp expect actual &&
assert_jumps 2 perf
ok 5 - disjoint excluded regions
expecting success of 1419.6 'adjacent, non-overlapping excluded regions':
for_each_ref__exclude refs/heads refs/heads/bar refs/heads/baz >actual 2>perf &&
for_each_ref refs/heads/foo refs/heads/quux >expect &&
test_cmp expect actual &&
assert_jumps 1 perf
ok 6 - adjacent, non-overlapping excluded regions
expecting success of 1419.7 'overlapping excluded regions':
for_each_ref__exclude refs/heads refs/heads/ba refs/heads/baz >actual 2>perf &&
for_each_ref refs/heads/foo refs/heads/quux >expect &&
test_cmp expect actual &&
assert_jumps 1 perf
ok 7 - overlapping excluded regions
expecting success of 1419.8 'several overlapping excluded regions':
for_each_ref__exclude refs/heads \
refs/heads/bar refs/heads/baz refs/heads/foo >actual 2>perf &&
for_each_ref refs/heads/quux >expect &&
test_cmp expect actual &&
assert_jumps 1 perf
ok 8 - several overlapping excluded regions
expecting success of 1419.9 'non-matching excluded section':
for_each_ref__exclude refs/heads refs/heads/does/not/exist >actual 2>perf &&
for_each_ref >expect &&
test_cmp expect actual &&
assert_no_jumps perf
ok 9 - non-matching excluded section
expecting success of 1419.10 'meta-characters are discarded':
for_each_ref__exclude refs/heads "refs/heads/ba*" >actual 2>perf &&
for_each_ref >expect &&
test_cmp expect actual &&
assert_no_jumps perf
ok 10 - meta-characters are discarded
# passed all 10 test(s)
1..10
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1417-reflog-updateref.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1417-reflog-updateref/.git/
expecting success of 1417.1 'setup':
git init -b main repo &&
(
cd repo &&
test_commit A &&
test_commit B &&
test_commit C &&
cp .git/logs/HEAD HEAD.old &&
git reset --hard HEAD~ &&
cp HEAD.old .git/logs/HEAD
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1417-reflog-updateref/repo/.git/
[main (root-commit) 0ddfaf1] A
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 A.t
[main d9df450] B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 B.t
[main 35a8500] C
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 C.t
HEAD is now at d9df450 B
ok 1 - setup
expecting success of 1417.2 'get 'B' with 'git reflog delete --updateref HEAD@{0}'':
test_when_finished "rm -rf copy" &&
cp -R repo copy &&
(
cd copy &&
$args &&
git rev-parse $exp >expect &&
git rev-parse HEAD >actual &&
test_cmp expect actual
)
ok 2 - get 'B' with 'git reflog delete --updateref HEAD@{0}'
expecting success of 1417.3 'get 'B' with 'git reflog delete --updateref HEAD@{1}'':
test_when_finished "rm -rf copy" &&
cp -R repo copy &&
(
cd copy &&
$args &&
git rev-parse $exp >expect &&
git rev-parse HEAD >actual &&
test_cmp expect actual
)
ok 3 - get 'B' with 'git reflog delete --updateref HEAD@{1}'
expecting success of 1417.4 'get 'C' with 'git reflog delete --updateref main@{0}'':
test_when_finished "rm -rf copy" &&
cp -R repo copy &&
(
cd copy &&
$args &&
git rev-parse $exp >expect &&
git rev-parse HEAD >actual &&
test_cmp expect actual
)
ok 4 - get 'C' with 'git reflog delete --updateref main@{0}'
expecting success of 1417.5 'get 'B' with 'git reflog delete --updateref main@{1}'':
test_when_finished "rm -rf copy" &&
cp -R repo copy &&
(
cd copy &&
$args &&
git rev-parse $exp >expect &&
git rev-parse HEAD >actual &&
test_cmp expect actual
)
ok 5 - get 'B' with 'git reflog delete --updateref main@{1}'
expecting success of 1417.6 'get 'B' with 'git reflog delete --updateref --rewrite HEAD@{0}'':
test_when_finished "rm -rf copy" &&
cp -R repo copy &&
(
cd copy &&
$args &&
git rev-parse $exp >expect &&
git rev-parse HEAD >actual &&
test_cmp expect actual
)
ok 6 - get 'B' with 'git reflog delete --updateref --rewrite HEAD@{0}'
expecting success of 1417.7 'get 'B' with 'git reflog delete --updateref --rewrite HEAD@{1}'':
test_when_finished "rm -rf copy" &&
cp -R repo copy &&
(
cd copy &&
$args &&
git rev-parse $exp >expect &&
git rev-parse HEAD >actual &&
test_cmp expect actual
)
ok 7 - get 'B' with 'git reflog delete --updateref --rewrite HEAD@{1}'
expecting success of 1417.8 'get 'C' with 'git reflog delete --updateref --rewrite main@{0}'':
test_when_finished "rm -rf copy" &&
cp -R repo copy &&
(
cd copy &&
$args &&
git rev-parse $exp >expect &&
git rev-parse HEAD >actual &&
test_cmp expect actual
)
ok 8 - get 'C' with 'git reflog delete --updateref --rewrite main@{0}'
expecting success of 1417.9 'get 'B' with 'git reflog delete --updateref --rewrite main@{1}'':
test_when_finished "rm -rf copy" &&
cp -R repo copy &&
(
cd copy &&
$args &&
git rev-parse $exp >expect &&
git rev-parse HEAD >actual &&
test_cmp expect actual
)
ok 9 - get 'B' with 'git reflog delete --updateref --rewrite main@{1}'
expecting success of 1417.10 'get 'B' with 'test_must_fail git reflog expire HEAD@{0}'':
test_when_finished "rm -rf copy" &&
cp -R repo copy &&
(
cd copy &&
$args &&
git rev-parse $exp >expect &&
git rev-parse HEAD >actual &&
test_cmp expect actual
)
error: HEAD@{0} points nowhere!
ok 10 - get 'B' with 'test_must_fail git reflog expire HEAD@{0}'
expecting success of 1417.11 'get 'B' with 'test_must_fail git reflog expire HEAD@{1}'':
test_when_finished "rm -rf copy" &&
cp -R repo copy &&
(
cd copy &&
$args &&
git rev-parse $exp >expect &&
git rev-parse HEAD >actual &&
test_cmp expect actual
)
error: HEAD@{1} points nowhere!
ok 11 - get 'B' with 'test_must_fail git reflog expire HEAD@{1}'
expecting success of 1417.12 'get 'B' with 'test_must_fail git reflog expire main@{0}'':
test_when_finished "rm -rf copy" &&
cp -R repo copy &&
(
cd copy &&
$args &&
git rev-parse $exp >expect &&
git rev-parse HEAD >actual &&
test_cmp expect actual
)
error: main@{0} points nowhere!
ok 12 - get 'B' with 'test_must_fail git reflog expire main@{0}'
expecting success of 1417.13 'get 'B' with 'test_must_fail git reflog expire main@{1}'':
test_when_finished "rm -rf copy" &&
cp -R repo copy &&
(
cd copy &&
$args &&
git rev-parse $exp >expect &&
git rev-parse HEAD >actual &&
test_cmp expect actual
)
error: main@{1} points nowhere!
ok 13 - get 'B' with 'test_must_fail git reflog expire main@{1}'
expecting success of 1417.14 'get 'B' with 'test_must_fail git reflog expire --updateref HEAD@{0}'':
test_when_finished "rm -rf copy" &&
cp -R repo copy &&
(
cd copy &&
$args &&
git rev-parse $exp >expect &&
git rev-parse HEAD >actual &&
test_cmp expect actual
)
error: HEAD@{0} points nowhere!
ok 14 - get 'B' with 'test_must_fail git reflog expire --updateref HEAD@{0}'
expecting success of 1417.15 'get 'B' with 'test_must_fail git reflog expire --updateref HEAD@{1}'':
test_when_finished "rm -rf copy" &&
cp -R repo copy &&
(
cd copy &&
$args &&
git rev-parse $exp >expect &&
git rev-parse HEAD >actual &&
test_cmp expect actual
)
error: HEAD@{1} points nowhere!
ok 15 - get 'B' with 'test_must_fail git reflog expire --updateref HEAD@{1}'
expecting success of 1417.16 'get 'B' with 'test_must_fail git reflog expire --updateref main@{0}'':
test_when_finished "rm -rf copy" &&
cp -R repo copy &&
(
cd copy &&
$args &&
git rev-parse $exp >expect &&
git rev-parse HEAD >actual &&
test_cmp expect actual
)
error: main@{0} points nowhere!
ok 16 - get 'B' with 'test_must_fail git reflog expire --updateref main@{0}'
expecting success of 1417.17 'get 'B' with 'test_must_fail git reflog expire --updateref main@{1}'':
test_when_finished "rm -rf copy" &&
cp -R repo copy &&
(
cd copy &&
$args &&
git rev-parse $exp >expect &&
git rev-parse HEAD >actual &&
test_cmp expect actual
)
error: main@{1} points nowhere!
ok 17 - get 'B' with 'test_must_fail git reflog expire --updateref main@{1}'
expecting success of 1417.18 'get 'B' with 'test_must_fail git reflog expire --updateref --rewrite HEAD@{0}'':
test_when_finished "rm -rf copy" &&
cp -R repo copy &&
(
cd copy &&
$args &&
git rev-parse $exp >expect &&
git rev-parse HEAD >actual &&
test_cmp expect actual
)
error: HEAD@{0} points nowhere!
ok 18 - get 'B' with 'test_must_fail git reflog expire --updateref --rewrite HEAD@{0}'
expecting success of 1417.19 'get 'B' with 'test_must_fail git reflog expire --updateref --rewrite HEAD@{1}'':
test_when_finished "rm -rf copy" &&
cp -R repo copy &&
(
cd copy &&
$args &&
git rev-parse $exp >expect &&
git rev-parse HEAD >actual &&
test_cmp expect actual
)
error: HEAD@{1} points nowhere!
ok 19 - get 'B' with 'test_must_fail git reflog expire --updateref --rewrite HEAD@{1}'
expecting success of 1417.20 'get 'B' with 'test_must_fail git reflog expire --updateref --rewrite main@{0}'':
test_when_finished "rm -rf copy" &&
cp -R repo copy &&
(
cd copy &&
$args &&
git rev-parse $exp >expect &&
git rev-parse HEAD >actual &&
test_cmp expect actual
)
error: main@{0} points nowhere!
ok 20 - get 'B' with 'test_must_fail git reflog expire --updateref --rewrite main@{0}'
expecting success of 1417.21 'get 'B' with 'test_must_fail git reflog expire --updateref --rewrite main@{1}'':
test_when_finished "rm -rf copy" &&
cp -R repo copy &&
(
cd copy &&
$args &&
git rev-parse $exp >expect &&
git rev-parse HEAD >actual &&
test_cmp expect actual
)
error: main@{1} points nowhere!
ok 21 - get 'B' with 'test_must_fail git reflog expire --updateref --rewrite main@{1}'
# passed all 21 test(s)
1..21
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1451-fsck-buffer.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1451-fsck-buffer/.git/
expecting success of 1451.1 'create valid objects':
git commit --allow-empty -m foo &&
commit=$(git rev-parse --verify HEAD) &&
tree=$(git rev-parse --verify HEAD^{tree})
[master (root-commit) 2093db0] foo
Author: A U Thor <author@example.com>
ok 1 - create valid objects
expecting success of 1451.2 'reset input to empty':
>base
ok 2 - reset input to empty
expecting success of 1451.3 'truncated commit (missingTree, "")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: missingTree: invalid format - expected 'tree' line
ok 3 - truncated commit (missingTree, "")
expecting success of 1451.4 'truncated commit (missingTree, "tr")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: missingTree: invalid format - expected 'tree' line
ok 4 - truncated commit (missingTree, "tr")
expecting success of 1451.5 'truncated commit (missingTree, "tree")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: missingTree: invalid format - expected 'tree' line
ok 5 - truncated commit (missingTree, "tree")
expecting success of 1451.6 'truncated commit (badTreeSha1, "tree ")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: badTreeSha1: invalid 'tree' line format - bad sha1
ok 6 - truncated commit (badTreeSha1, "tree ")
expecting success of 1451.7 'truncated commit (badTreeSha1, "tree 1234")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: badTreeSha1: invalid 'tree' line format - bad sha1
ok 7 - truncated commit (badTreeSha1, "tree 1234")
expecting success of 1451.8 'add tree line':
echo "$content" >>base
ok 8 - add tree line
expecting success of 1451.9 'truncated commit (missingAuthor, "")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: missingAuthor: invalid format - expected 'author' line
ok 9 - truncated commit (missingAuthor, "")
expecting success of 1451.10 'truncated commit (missingAuthor, "par")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: missingAuthor: invalid format - expected 'author' line
ok 10 - truncated commit (missingAuthor, "par")
expecting success of 1451.11 'truncated commit (missingAuthor, "parent")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: missingAuthor: invalid format - expected 'author' line
ok 11 - truncated commit (missingAuthor, "parent")
expecting success of 1451.12 'truncated commit (badParentSha1, "parent ")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: badParentSha1: invalid 'parent' line format - bad sha1
ok 12 - truncated commit (badParentSha1, "parent ")
expecting success of 1451.13 'truncated commit (badParentSha1, "parent 1234")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: badParentSha1: invalid 'parent' line format - bad sha1
ok 13 - truncated commit (badParentSha1, "parent 1234")
expecting success of 1451.14 'add parent line':
echo "$content" >>base
ok 14 - add parent line
expecting success of 1451.15 'truncated commit (missingAuthor, "")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: missingAuthor: invalid format - expected 'author' line
ok 15 - truncated commit (missingAuthor, "")
expecting success of 1451.16 'truncated commit (missingAuthor, "au")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: missingAuthor: invalid format - expected 'author' line
ok 16 - truncated commit (missingAuthor, "au")
expecting success of 1451.17 'truncated commit (missingAuthor, "author")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: missingAuthor: invalid format - expected 'author' line
ok 17 - truncated commit (missingAuthor, "author")
expecting success of 1451.18 'truncated commit (missingEmail, "author ")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: missingEmail: invalid author/committer line - missing email
ok 18 - truncated commit (missingEmail, "author ")
expecting success of 1451.19 'truncated commit (missingEmail, "author name")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: missingEmail: invalid author/committer line - missing email
ok 19 - truncated commit (missingEmail, "author name")
expecting success of 1451.20 'truncated commit (badEmail, "author name <")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: badEmail: invalid author/committer line - bad email
ok 20 - truncated commit (badEmail, "author name <")
expecting success of 1451.21 'truncated commit (badEmail, "author name <email")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: badEmail: invalid author/committer line - bad email
ok 21 - truncated commit (badEmail, "author name <email")
expecting success of 1451.22 'truncated commit (missingSpaceBeforeDate, "author name <email>")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: missingSpaceBeforeDate: invalid author/committer line - missing space before date
ok 22 - truncated commit (missingSpaceBeforeDate, "author name <email>")
expecting success of 1451.23 'truncated commit (badDate, "author name <email> ")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: badDate: invalid author/committer line - bad date
ok 23 - truncated commit (badDate, "author name <email> ")
expecting success of 1451.24 'truncated commit (badDate, "author name <email> 1234")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: badDate: invalid author/committer line - bad date
ok 24 - truncated commit (badDate, "author name <email> 1234")
expecting success of 1451.25 'truncated commit (badTimezone, "author name <email> 1234 ")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: badTimezone: invalid author/committer line - bad time zone
ok 25 - truncated commit (badTimezone, "author name <email> 1234 ")
expecting success of 1451.26 'truncated commit (badTimezone, "author name <email> 1234 +")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: badTimezone: invalid author/committer line - bad time zone
ok 26 - truncated commit (badTimezone, "author name <email> 1234 +")
expecting success of 1451.27 'add author line':
echo "$content" >>base
ok 27 - add author line
expecting success of 1451.28 'truncated commit (missingCommitter, "")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: missingCommitter: invalid format - expected 'committer' line
ok 28 - truncated commit (missingCommitter, "")
expecting success of 1451.29 'truncated commit (missingCommitter, "co")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: missingCommitter: invalid format - expected 'committer' line
ok 29 - truncated commit (missingCommitter, "co")
expecting success of 1451.30 'truncated commit (missingCommitter, "committer")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: missingCommitter: invalid format - expected 'committer' line
ok 30 - truncated commit (missingCommitter, "committer")
expecting success of 1451.31 'truncated commit (missingEmail, "committer ")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: missingEmail: invalid author/committer line - missing email
ok 31 - truncated commit (missingEmail, "committer ")
expecting success of 1451.32 'truncated commit (missingEmail, "committer name")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: missingEmail: invalid author/committer line - missing email
ok 32 - truncated commit (missingEmail, "committer name")
expecting success of 1451.33 'truncated commit (badEmail, "committer name <")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: badEmail: invalid author/committer line - bad email
ok 33 - truncated commit (badEmail, "committer name <")
expecting success of 1451.34 'truncated commit (badEmail, "committer name <email")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: badEmail: invalid author/committer line - bad email
ok 34 - truncated commit (badEmail, "committer name <email")
expecting success of 1451.35 'truncated commit (missingSpaceBeforeDate, "committer name <email>")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: missingSpaceBeforeDate: invalid author/committer line - missing space before date
ok 35 - truncated commit (missingSpaceBeforeDate, "committer name <email>")
expecting success of 1451.36 'truncated commit (badDate, "committer name <email> ")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: badDate: invalid author/committer line - bad date
ok 36 - truncated commit (badDate, "committer name <email> ")
expecting success of 1451.37 'truncated commit (badDate, "committer name <email> 1234")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: badDate: invalid author/committer line - bad date
ok 37 - truncated commit (badDate, "committer name <email> 1234")
expecting success of 1451.38 'truncated commit (badTimezone, "committer name <email> 1234 ")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: badTimezone: invalid author/committer line - bad time zone
ok 38 - truncated commit (badTimezone, "committer name <email> 1234 ")
expecting success of 1451.39 'truncated commit (badTimezone, "committer name <email> 1234 +")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: badTimezone: invalid author/committer line - bad time zone
ok 39 - truncated commit (badTimezone, "committer name <email> 1234 +")
expecting success of 1451.40 'add committer line':
echo "$content" >>base
ok 40 - add committer line
expecting success of 1451.41 'reset input to empty':
>base
ok 41 - reset input to empty
expecting success of 1451.42 'truncated tag (missingObject, "")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: missingObject: invalid format - expected 'object' line
ok 42 - truncated tag (missingObject, "")
expecting success of 1451.43 'truncated tag (missingObject, "obj")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: missingObject: invalid format - expected 'object' line
ok 43 - truncated tag (missingObject, "obj")
expecting success of 1451.44 'truncated tag (missingObject, "object")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: missingObject: invalid format - expected 'object' line
ok 44 - truncated tag (missingObject, "object")
expecting success of 1451.45 'truncated tag (badObjectSha1, "object ")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: badObjectSha1: invalid 'object' line format - bad sha1
ok 45 - truncated tag (badObjectSha1, "object ")
expecting success of 1451.46 'truncated tag (badObjectSha1, "object 1234")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: badObjectSha1: invalid 'object' line format - bad sha1
ok 46 - truncated tag (badObjectSha1, "object 1234")
expecting success of 1451.47 'add object line':
echo "$content" >>base
ok 47 - add object line
expecting success of 1451.48 'truncated tag (missingType, "")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: missingTypeEntry: invalid format - expected 'type' line
ok 48 - truncated tag (missingType, "")
expecting success of 1451.49 'truncated tag (missingType, "ty")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: missingTypeEntry: invalid format - expected 'type' line
ok 49 - truncated tag (missingType, "ty")
expecting success of 1451.50 'truncated tag (missingType, "type")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: missingTypeEntry: invalid format - expected 'type' line
ok 50 - truncated tag (missingType, "type")
expecting success of 1451.51 'truncated tag (badType, "type ")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: badType: invalid 'type' value
ok 51 - truncated tag (badType, "type ")
expecting success of 1451.52 'truncated tag (badType, "type com")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: badType: invalid 'type' value
ok 52 - truncated tag (badType, "type com")
expecting success of 1451.53 'add type line':
echo "$content" >>base
ok 53 - add type line
expecting success of 1451.54 'truncated tag (missingTagEntry, "")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: missingTagEntry: invalid format - expected 'tag' line
ok 54 - truncated tag (missingTagEntry, "")
expecting success of 1451.55 'truncated tag (missingTagEntry, "ta")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: missingTagEntry: invalid format - expected 'tag' line
ok 55 - truncated tag (missingTagEntry, "ta")
expecting success of 1451.56 'truncated tag (missingTagEntry, "tag")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: missingTagEntry: invalid format - expected 'tag' line
ok 56 - truncated tag (missingTagEntry, "tag")
expecting success of 1451.57 'truncated tag (badTagName, "tag ")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: badTagName: invalid 'tag' name:
ok 57 - truncated tag (badTagName, "tag ")
expecting success of 1451.58 'add tag line':
echo "$content" >>base
ok 58 - add tag line
expecting success of 1451.59 'truncated tag (missingTagger, "")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: missingTaggerEntry: invalid format - expected 'tagger' line
ok 59 - truncated tag (missingTagger, "")
expecting success of 1451.60 'truncated tag (missingTagger, "ta")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: missingTaggerEntry: invalid format - expected 'tagger' line
ok 60 - truncated tag (missingTagger, "ta")
expecting success of 1451.61 'truncated tag (missingTagger, "tagger")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: missingTaggerEntry: invalid format - expected 'tagger' line
ok 61 - truncated tag (missingTagger, "tagger")
expecting success of 1451.62 'truncated tag (missingEmail, "tagger ")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: missingEmail: invalid author/committer line - missing email
ok 62 - truncated tag (missingEmail, "tagger ")
expecting success of 1451.63 'truncated tag (missingEmail, "tagger name")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: missingEmail: invalid author/committer line - missing email
ok 63 - truncated tag (missingEmail, "tagger name")
expecting success of 1451.64 'truncated tag (badEmail, "tagger name <")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: badEmail: invalid author/committer line - bad email
ok 64 - truncated tag (badEmail, "tagger name <")
expecting success of 1451.65 'truncated tag (badEmail, "tagger name <email")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: badEmail: invalid author/committer line - bad email
ok 65 - truncated tag (badEmail, "tagger name <email")
expecting success of 1451.66 'truncated tag (missingSpaceBeforeDate, "tagger name <email>")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: missingSpaceBeforeDate: invalid author/committer line - missing space before date
ok 66 - truncated tag (missingSpaceBeforeDate, "tagger name <email>")
expecting success of 1451.67 'truncated tag (badDate, "tagger name <email> ")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: badDate: invalid author/committer line - bad date
ok 67 - truncated tag (badDate, "tagger name <email> ")
expecting success of 1451.68 'truncated tag (badDate, "tagger name <email> 1234")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: badDate: invalid author/committer line - bad date
ok 68 - truncated tag (badDate, "tagger name <email> 1234")
expecting success of 1451.69 'truncated tag (badTimezone, "tagger name <email> 1234 ")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: badTimezone: invalid author/committer line - bad time zone
ok 69 - truncated tag (badTimezone, "tagger name <email> 1234 ")
expecting success of 1451.70 'truncated tag (badTimezone, "tagger name <email> 1234 +")':
# do not pipe into hash-object here; we want to increase
# the chance that it uses a fixed-size buffer or mmap,
# and a pipe would be read into a strbuf.
{
cat base &&
echo "$content"
} >input &&
test_must_fail git hash-object -t "$type" input 2>err &&
grep "$fsck" err
error: object fails fsck: badTimezone: invalid author/committer line - bad time zone
ok 70 - truncated tag (badTimezone, "tagger name <email> 1234 +")
expecting success of 1451.71 'truncated tree (short hash)':
printf "100644 foo\0\1\1\1\1" >input &&
test_must_fail git hash-object -t tree input 2>err &&
grep badTree err
error: object fails fsck: badTree: cannot be parsed as a tree
ok 71 - truncated tree (short hash)
expecting success of 1451.72 'truncated tree (missing nul)':
# these two things are indistinguishable to the parser. The important
# thing about this is example is that there are enough bytes to
# make up a hash, and that there is no NUL (and we confirm that the
# parser does not walk past the end of the buffer).
printf "100644 a long filename, or a hash with missing nul?" >input &&
test_must_fail git hash-object -t tree input 2>err &&
grep badTree err
error: object fails fsck: badTree: cannot be parsed as a tree
ok 72 - truncated tree (missing nul)
# passed all 72 test(s)
1..72
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1430-bad-ref-name.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1430-bad-ref-name/.git/
expecting success of 1430.1 'setup':
test_commit one &&
test_commit two &&
main_sha1=$(git rev-parse refs/heads/main)
[main (root-commit) d79ce16] one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 one.t
[main 139b20d] two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 two.t
ok 1 - setup
expecting success of 1430.2 'fast-import: fail on invalid branch name ".badbranchname"':
test_when_finished "rm -f .git/objects/pack_* .git/objects/index_*" &&
cat >input <<-INPUT_END &&
commit .badbranchname
committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
data <<COMMIT
corrupt
COMMIT
from refs/heads/main
INPUT_END
test_must_fail git fast-import <input
fatal: Branch name doesn't conform to GIT standards: .badbranchname
fast-import: dumping crash report to .git/fast_import_crash_1525279
ok 2 - fast-import: fail on invalid branch name ".badbranchname"
expecting success of 1430.3 'fast-import: fail on invalid branch name "bad[branch]name"':
test_when_finished "rm -f .git/objects/pack_* .git/objects/index_*" &&
cat >input <<-INPUT_END &&
commit bad[branch]name
committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
data <<COMMIT
corrupt
COMMIT
from refs/heads/main
INPUT_END
test_must_fail git fast-import <input
fatal: Branch name doesn't conform to GIT standards: bad[branch]name
fast-import: dumping crash report to .git/fast_import_crash_1525290
ok 3 - fast-import: fail on invalid branch name "bad[branch]name"
expecting success of 1430.4 'git branch shows badly named ref as warning':
test-tool ref-store main update-ref msg "refs/heads/broken...ref" $main_sha1 $ZERO_OID REF_SKIP_REFNAME_VERIFICATION &&
test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...ref" &&
git branch >output 2>error &&
test_i18ngrep -e "ignoring ref with broken name refs/heads/broken\.\.\.ref" error &&
! grep -e "broken\.\.\.ref" output
warning: ignoring ref with broken name refs/heads/broken...ref
ok 4 - git branch shows badly named ref as warning
expecting success of 1430.5 'branch -d can delete badly named ref':
test-tool ref-store main update-ref msg "refs/heads/broken...ref" $main_sha1 $ZERO_OID REF_SKIP_REFNAME_VERIFICATION &&
test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...ref" &&
git branch -d broken...ref &&
git branch >output 2>error &&
! grep -e "broken\.\.\.ref" error &&
! grep -e "broken\.\.\.ref" output
Deleted branch broken...ref (was broken).
ok 5 - branch -d can delete badly named ref
expecting success of 1430.6 'branch -D can delete badly named ref':
test-tool ref-store main update-ref msg "refs/heads/broken...ref" $main_sha1 $ZERO_OID REF_SKIP_REFNAME_VERIFICATION &&
test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...ref" &&
git branch -D broken...ref &&
git branch >output 2>error &&
! grep -e "broken\.\.\.ref" error &&
! grep -e "broken\.\.\.ref" output
Deleted branch broken...ref (was broken).
ok 6 - branch -D can delete badly named ref
expecting success of 1430.7 'branch -D cannot delete non-ref in .git dir':
echo precious >.git/my-private-file &&
echo precious >expect &&
test_must_fail git branch -D ../../my-private-file &&
test_cmp expect .git/my-private-file
error: branch '../../my-private-file' not found.
ok 7 - branch -D cannot delete non-ref in .git dir
expecting success of 1430.8 'branch -D cannot delete ref in .git dir':
git rev-parse HEAD >.git/my-private-file &&
git rev-parse HEAD >expect &&
git branch foo/legit &&
test_must_fail git branch -D foo////./././../../../my-private-file &&
test_cmp expect .git/my-private-file
error: branch 'foo////./././../../../my-private-file' not found.
ok 8 - branch -D cannot delete ref in .git dir
expecting success of 1430.9 'branch -D cannot delete absolute path':
git branch -f extra &&
test_must_fail git branch -D "$(pwd)/.git/refs/heads/extra" &&
test_cmp_rev HEAD extra
error: branch '/<<PKGBUILDDIR>>/t/trash directory.t1430-bad-ref-name/.git/refs/heads/extra' not found.
ok 9 - branch -D cannot delete absolute path
expecting success of 1430.10 'git branch cannot create a badly named ref':
test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...ref" &&
test_must_fail git branch broken...ref &&
git branch >output 2>error &&
! grep -e "broken\.\.\.ref" error &&
! grep -e "broken\.\.\.ref" output
fatal: 'broken...ref' is not a valid branch name
ok 10 - git branch cannot create a badly named ref
expecting success of 1430.11 'branch -m cannot rename to a bad ref name':
test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...ref" &&
test_might_fail git branch -D goodref &&
git branch goodref &&
test_must_fail git branch -m goodref broken...ref &&
test_cmp_rev main goodref &&
git branch >output 2>error &&
! grep -e "broken\.\.\.ref" error &&
! grep -e "broken\.\.\.ref" output
error: branch 'goodref' not found.
fatal: 'broken...ref' is not a valid branch name
ok 11 - branch -m cannot rename to a bad ref name
checking known breakage of 1430.12 'branch -m can rename from a bad ref name':
test-tool ref-store main update-ref msg "refs/heads/broken...ref" $main_sha1 $ZERO_OID REF_SKIP_REFNAME_VERIFICATION &&
test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...ref" &&
git branch -m broken...ref renamed &&
test_cmp_rev main renamed &&
git branch >output 2>error &&
! grep -e "broken\.\.\.ref" error &&
! grep -e "broken\.\.\.ref" output
fatal: Invalid branch name: 'broken...ref'
not ok 12 - branch -m can rename from a bad ref name # TODO known breakage
expecting success of 1430.13 'push cannot create a badly named ref':
test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...ref" &&
test_must_fail git push "file://$(pwd)" HEAD:refs/heads/broken...ref &&
git branch >output 2>error &&
! grep -e "broken\.\.\.ref" error &&
! grep -e "broken\.\.\.ref" output
fatal: invalid refspec 'HEAD:refs/heads/broken...ref'
ok 13 - push cannot create a badly named ref
checking known breakage of 1430.14 'push --mirror can delete badly named ref':
top=$(pwd) &&
git init src &&
git init dest &&
(
cd src &&
test_commit one
) &&
(
cd dest &&
test_commit two &&
git checkout --detach &&
test-tool ref-store main update-ref msg "refs/heads/broken...ref" $main_sha1 $ZERO_OID REF_SKIP_REFNAME_VERIFICATION
) &&
git -C src push --mirror "file://$top/dest" &&
git -C dest branch >output 2>error &&
! grep -e "broken\.\.\.ref" error &&
! grep -e "broken\.\.\.ref" output
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1430-bad-ref-name/src/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1430-bad-ref-name/dest/.git/
[main (root-commit) 4331c28] one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 one.t
[main (root-commit) 9db02ea] two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 two.t
HEAD is now at 9db02ea two
fatal: update_ref failed for ref 'refs/heads/broken...ref': cannot update ref 'refs/heads/broken...ref': trying to write ref 'refs/heads/broken...ref' with nonexistent object 139b20d8e6c5b496de61f033f642d0e3dbff528d
not ok 14 - push --mirror can delete badly named ref # TODO known breakage
expecting success of 1430.15 'rev-parse skips symref pointing to broken name':
test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...ref" &&
git branch shadow one &&
test-tool ref-store main update-ref msg "refs/heads/broken...ref" $main_sha1 $ZERO_OID REF_SKIP_REFNAME_VERIFICATION &&
test-tool ref-store main create-symref refs/tags/shadow refs/heads/broken...ref msg &&
test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/tags/shadow" &&
git rev-parse --verify one >expect &&
git rev-parse --verify shadow >actual 2>err &&
test_cmp expect actual &&
test_i18ngrep "ignoring dangling symref refs/tags/shadow" err
warning: ignoring dangling symref refs/tags/shadow
ok 15 - rev-parse skips symref pointing to broken name
expecting success of 1430.16 'for-each-ref emits warnings for broken names':
test-tool ref-store main update-ref msg "refs/heads/broken...ref" $main_sha1 $ZERO_OID REF_SKIP_REFNAME_VERIFICATION &&
test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...ref" &&
printf "ref: refs/heads/broken...ref\n" >.git/refs/heads/badname &&
test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/badname" &&
printf "ref: refs/heads/main\n" >.git/refs/heads/broken...symref &&
test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...symref" &&
git for-each-ref >output 2>error &&
! grep -e "broken\.\.\.ref" output &&
! grep -e "badname" output &&
! grep -e "broken\.\.\.symref" output &&
test_i18ngrep "ignoring ref with broken name refs/heads/broken\.\.\.ref" error &&
test_i18ngrep ! "ignoring broken ref refs/heads/badname" error &&
test_i18ngrep "ignoring ref with broken name refs/heads/broken\.\.\.symref" error
warning: ignoring ref with broken name refs/heads/broken...ref
warning: ignoring ref with broken name refs/heads/broken...symref
ok 16 - for-each-ref emits warnings for broken names
expecting success of 1430.17 'update-ref -d can delete broken name':
test-tool ref-store main update-ref msg "refs/heads/broken...ref" $main_sha1 $ZERO_OID REF_SKIP_REFNAME_VERIFICATION &&
test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...ref" &&
git update-ref -d refs/heads/broken...ref >output 2>error &&
test_must_be_empty output &&
test_must_be_empty error &&
git branch >output 2>error &&
! grep -e "broken\.\.\.ref" error &&
! grep -e "broken\.\.\.ref" output
ok 17 - update-ref -d can delete broken name
expecting success of 1430.18 'branch -d can delete broken name':
test-tool ref-store main update-ref msg "refs/heads/broken...ref" $main_sha1 $ZERO_OID REF_SKIP_REFNAME_VERIFICATION &&
test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...ref" &&
git branch -d broken...ref >output 2>error &&
test_i18ngrep "Deleted branch broken...ref (was broken)" output &&
test_must_be_empty error &&
git branch >output 2>error &&
! grep -e "broken\.\.\.ref" error &&
! grep -e "broken\.\.\.ref" output
Deleted branch broken...ref (was broken).
ok 18 - branch -d can delete broken name
expecting success of 1430.19 'update-ref --no-deref -d can delete symref to broken name':
test-tool ref-store main update-ref msg "refs/heads/broken...ref" $main_sha1 $ZERO_OID REF_SKIP_REFNAME_VERIFICATION &&
test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...ref" &&
test-tool ref-store main create-symref refs/heads/badname refs/heads/broken...ref msg &&
test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/badname" &&
git update-ref --no-deref -d refs/heads/badname >output 2>error &&
test_path_is_missing .git/refs/heads/badname &&
test_must_be_empty output &&
test_must_be_empty error
ok 19 - update-ref --no-deref -d can delete symref to broken name
expecting success of 1430.20 'branch -d can delete symref to broken name':
test-tool ref-store main update-ref msg "refs/heads/broken...ref" $main_sha1 $ZERO_OID REF_SKIP_REFNAME_VERIFICATION &&
test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...ref" &&
test-tool ref-store main create-symref refs/heads/badname refs/heads/broken...ref msg &&
test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/badname" &&
git branch -d badname >output 2>error &&
test_path_is_missing .git/refs/heads/badname &&
test_i18ngrep "Deleted branch badname (was refs/heads/broken\.\.\.ref)" output &&
test_must_be_empty error
Deleted branch badname (was refs/heads/broken...ref).
ok 20 - branch -d can delete symref to broken name
expecting success of 1430.21 'update-ref --no-deref -d can delete dangling symref to broken name':
test-tool ref-store main create-symref refs/heads/badname refs/heads/broken...ref msg &&
test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/badname" &&
git update-ref --no-deref -d refs/heads/badname >output 2>error &&
test_path_is_missing .git/refs/heads/badname &&
test_must_be_empty output &&
test_must_be_empty error
ok 21 - update-ref --no-deref -d can delete dangling symref to broken name
expecting success of 1430.22 'branch -d can delete dangling symref to broken name':
test-tool ref-store main create-symref refs/heads/badname refs/heads/broken...ref msg &&
test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/badname" &&
git branch -d badname >output 2>error &&
test_path_is_missing .git/refs/heads/badname &&
test_i18ngrep "Deleted branch badname (was refs/heads/broken\.\.\.ref)" output &&
test_must_be_empty error
Deleted branch badname (was refs/heads/broken...ref).
ok 22 - branch -d can delete dangling symref to broken name
expecting success of 1430.23 'update-ref -d can delete broken name through symref':
test-tool ref-store main update-ref msg "refs/heads/broken...ref" $main_sha1 $ZERO_OID REF_SKIP_REFNAME_VERIFICATION &&
test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...ref" &&
test-tool ref-store main create-symref refs/heads/badname refs/heads/broken...ref msg &&
test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/badname" &&
git update-ref -d refs/heads/badname >output 2>error &&
test_path_is_missing .git/refs/heads/broken...ref &&
test_must_be_empty output &&
test_must_be_empty error
ok 23 - update-ref -d can delete broken name through symref
expecting success of 1430.24 'update-ref --no-deref -d can delete symref with broken name':
printf "ref: refs/heads/main\n" >.git/refs/heads/broken...symref &&
test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...symref" &&
git update-ref --no-deref -d refs/heads/broken...symref >output 2>error &&
test_path_is_missing .git/refs/heads/broken...symref &&
test_must_be_empty output &&
test_must_be_empty error
ok 24 - update-ref --no-deref -d can delete symref with broken name
expecting success of 1430.25 'branch -d can delete symref with broken name':
printf "ref: refs/heads/main\n" >.git/refs/heads/broken...symref &&
test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...symref" &&
git branch -d broken...symref >output 2>error &&
test_path_is_missing .git/refs/heads/broken...symref &&
test_i18ngrep "Deleted branch broken...symref (was refs/heads/main)" output &&
test_must_be_empty error
Deleted branch broken...symref (was refs/heads/main).
ok 25 - branch -d can delete symref with broken name
expecting success of 1430.26 'update-ref --no-deref -d can delete dangling symref with broken name':
printf "ref: refs/heads/idonotexist\n" >.git/refs/heads/broken...symref &&
test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...symref" &&
git update-ref --no-deref -d refs/heads/broken...symref >output 2>error &&
test_path_is_missing .git/refs/heads/broken...symref &&
test_must_be_empty output &&
test_must_be_empty error
ok 26 - update-ref --no-deref -d can delete dangling symref with broken name
expecting success of 1430.27 'branch -d can delete dangling symref with broken name':
printf "ref: refs/heads/idonotexist\n" >.git/refs/heads/broken...symref &&
test_when_finished "test-tool ref-store main delete-refs REF_NO_DEREF msg refs/heads/broken...symref" &&
git branch -d broken...symref >output 2>error &&
test_path_is_missing .git/refs/heads/broken...symref &&
test_i18ngrep "Deleted branch broken...symref (was refs/heads/idonotexist)" output &&
test_must_be_empty error
Deleted branch broken...symref (was refs/heads/idonotexist).
ok 27 - branch -d can delete dangling symref with broken name
expecting success of 1430.28 'update-ref -d cannot delete non-ref in .git dir':
echo precious >.git/my-private-file &&
echo precious >expect &&
test_must_fail git update-ref -d my-private-file >output 2>error &&
test_must_be_empty output &&
test_i18ngrep -e "refusing to update ref with bad name" error &&
test_cmp expect .git/my-private-file
error: refusing to update ref with bad name 'my-private-file'
ok 28 - update-ref -d cannot delete non-ref in .git dir
expecting success of 1430.29 'update-ref -d cannot delete absolute path':
git branch -f extra &&
test_must_fail git update-ref -d "$(pwd)/.git/refs/heads/extra" &&
test_cmp_rev HEAD extra
error: refusing to update ref with bad name '/<<PKGBUILDDIR>>/t/trash directory.t1430-bad-ref-name/.git/refs/heads/extra'
ok 29 - update-ref -d cannot delete absolute path
expecting success of 1430.30 'update-ref --stdin fails create with bad ref name':
echo "create ~a refs/heads/main" >stdin &&
test_must_fail git update-ref --stdin <stdin 2>err &&
grep "fatal: invalid ref format: ~a" err
fatal: invalid ref format: ~a
ok 30 - update-ref --stdin fails create with bad ref name
expecting success of 1430.31 'update-ref --stdin fails update with bad ref name':
echo "update ~a refs/heads/main" >stdin &&
test_must_fail git update-ref --stdin <stdin 2>err &&
grep "fatal: invalid ref format: ~a" err
fatal: invalid ref format: ~a
ok 31 - update-ref --stdin fails update with bad ref name
expecting success of 1430.32 'update-ref --stdin fails delete with bad ref name':
echo "delete ~a refs/heads/main" >stdin &&
test_must_fail git update-ref --stdin <stdin 2>err &&
grep "fatal: invalid ref format: ~a" err
fatal: invalid ref format: ~a
ok 32 - update-ref --stdin fails delete with bad ref name
expecting success of 1430.33 'update-ref --stdin -z fails create with bad ref name':
printf "%s\0" "create ~a " refs/heads/main >stdin &&
test_must_fail git update-ref -z --stdin <stdin 2>err &&
grep "fatal: invalid ref format: ~a " err
fatal: invalid ref format: ~a
ok 33 - update-ref --stdin -z fails create with bad ref name
expecting success of 1430.34 'update-ref --stdin -z fails update with bad ref name':
printf "%s\0" "update ~a" refs/heads/main "" >stdin &&
test_must_fail git update-ref -z --stdin <stdin 2>err &&
grep "fatal: invalid ref format: ~a" err
fatal: invalid ref format: ~a
ok 34 - update-ref --stdin -z fails update with bad ref name
expecting success of 1430.35 'update-ref --stdin -z fails delete with bad ref name':
printf "%s\0" "delete ~a" refs/heads/main >stdin &&
test_must_fail git update-ref -z --stdin <stdin 2>err &&
grep "fatal: invalid ref format: ~a" err
fatal: invalid ref format: ~a
ok 35 - update-ref --stdin -z fails delete with bad ref name
expecting success of 1430.36 'branch rejects HEAD as a branch name':
test_must_fail git branch HEAD HEAD^ &&
test_must_fail git show-ref refs/heads/HEAD
fatal: 'HEAD' is not a valid branch name
ok 36 - branch rejects HEAD as a branch name
expecting success of 1430.37 'checkout -b rejects HEAD as a branch name':
test_must_fail git checkout -B HEAD HEAD^ &&
test_must_fail git show-ref refs/heads/HEAD
fatal: 'HEAD' is not a valid branch name
ok 37 - checkout -b rejects HEAD as a branch name
expecting success of 1430.38 'update-ref can operate on refs/heads/HEAD':
git update-ref refs/heads/HEAD HEAD^ &&
git show-ref refs/heads/HEAD &&
git update-ref -d refs/heads/HEAD &&
test_must_fail git show-ref refs/heads/HEAD
d79ce1670bdcb76e6d1da2ae095e890ccb326ae9 refs/heads/HEAD
ok 38 - update-ref can operate on refs/heads/HEAD
expecting success of 1430.39 'branch -d can remove refs/heads/HEAD':
git update-ref refs/heads/HEAD HEAD^ &&
git branch -d HEAD &&
test_must_fail git show-ref refs/heads/HEAD
Deleted branch HEAD (was d79ce16).
ok 39 - branch -d can remove refs/heads/HEAD
expecting success of 1430.40 'branch -m can rename refs/heads/HEAD':
git update-ref refs/heads/HEAD HEAD^ &&
git branch -m HEAD tail &&
test_must_fail git show-ref refs/heads/HEAD &&
git show-ref refs/heads/tail
warning: Renamed a misnamed branch 'HEAD' away
d79ce1670bdcb76e6d1da2ae095e890ccb326ae9 refs/heads/tail
ok 40 - branch -m can rename refs/heads/HEAD
expecting success of 1430.41 'branch -d can remove refs/heads/-dash':
git update-ref refs/heads/-dash HEAD^ &&
git branch -d -- -dash &&
test_must_fail git show-ref refs/heads/-dash
Deleted branch -dash (was d79ce16).
ok 41 - branch -d can remove refs/heads/-dash
expecting success of 1430.42 'branch -m can rename refs/heads/-dash':
git update-ref refs/heads/-dash HEAD^ &&
git branch -m -- -dash dash &&
test_must_fail git show-ref refs/heads/-dash &&
git show-ref refs/heads/dash
warning: Renamed a misnamed branch '-dash' away
d79ce1670bdcb76e6d1da2ae095e890ccb326ae9 refs/heads/dash
ok 42 - branch -m can rename refs/heads/-dash
# still have 2 known breakage(s)
# passed all remaining 40 test(s)
1..42
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1501-work-tree.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1501-work-tree/.git/
expecting success of 1501.1 'setup':
EMPTY_TREE=$(git write-tree) &&
EMPTY_BLOB=$(git hash-object -t blob --stdin </dev/null) &&
CHANGED_BLOB=$(echo changed | git hash-object -t blob --stdin) &&
EMPTY_BLOB7=$(echo $EMPTY_BLOB | sed "s/\(.......\).*/\1/") &&
CHANGED_BLOB7=$(echo $CHANGED_BLOB | sed "s/\(.......\).*/\1/") &&
mkdir -p work/sub/dir &&
mkdir -p work2 &&
mv .git repo.git
ok 1 - setup
expecting success of 1501.2 'setup: helper for testing rev-parse':
test_rev_parse() {
echo $1 >expected.bare &&
echo $2 >expected.inside-git &&
echo $3 >expected.inside-worktree &&
if test $# -ge 4
then
echo $4 >expected.prefix
fi &&
git rev-parse --is-bare-repository >actual.bare &&
git rev-parse --is-inside-git-dir >actual.inside-git &&
git rev-parse --is-inside-work-tree >actual.inside-worktree &&
if test $# -ge 4
then
git rev-parse --show-prefix >actual.prefix
fi &&
test_cmp expected.bare actual.bare &&
test_cmp expected.inside-git actual.inside-git &&
test_cmp expected.inside-worktree actual.inside-worktree &&
if test $# -ge 4
then
# rev-parse --show-prefix should output
# a single newline when at the top of the work tree,
# but we test for that separately.
test -z "$4" && test_must_be_empty actual.prefix ||
test_cmp expected.prefix actual.prefix
fi
}
ok 2 - setup: helper for testing rev-parse
expecting success of 1501.3 'setup: core.worktree = relative path':
sane_unset GIT_WORK_TREE &&
GIT_DIR=repo.git &&
GIT_CONFIG="$(pwd)"/$GIT_DIR/config &&
export GIT_DIR GIT_CONFIG &&
git config core.worktree ../work
ok 3 - setup: core.worktree = relative path
expecting success of 1501.4 'outside':
test_rev_parse false false false
ok 4 - outside
expecting success of 1501.5 'inside work tree':
(
cd work &&
GIT_DIR=../repo.git &&
GIT_CONFIG="$(pwd)"/$GIT_DIR/config &&
test_rev_parse false false true ""
)
'actual.prefix' is not empty, it contains:
ok 5 - inside work tree
expecting success of 1501.6 'empty prefix is actually written out':
echo >expected &&
(
cd work &&
GIT_DIR=../repo.git &&
GIT_CONFIG="$(pwd)"/$GIT_DIR/config &&
git rev-parse --show-prefix >../actual
) &&
test_cmp expected actual
ok 6 - empty prefix is actually written out
expecting success of 1501.7 'subdir of work tree':
(
cd work/sub/dir &&
GIT_DIR=../../../repo.git &&
GIT_CONFIG="$(pwd)"/$GIT_DIR/config &&
test_rev_parse false false true sub/dir/
)
ok 7 - subdir of work tree
expecting success of 1501.8 'setup: core.worktree = absolute path':
sane_unset GIT_WORK_TREE &&
GIT_DIR=$(pwd)/repo.git &&
GIT_CONFIG=$GIT_DIR/config &&
export GIT_DIR GIT_CONFIG &&
git config core.worktree "$(pwd)/work"
ok 8 - setup: core.worktree = absolute path
expecting success of 1501.9 'outside':
test_rev_parse false false false &&
(
cd work2 &&
test_rev_parse false false false
)
ok 9 - outside
expecting success of 1501.10 'inside work tree':
(
cd work &&
test_rev_parse false false true ""
)
'actual.prefix' is not empty, it contains:
ok 10 - inside work tree
expecting success of 1501.11 'subdir of work tree':
(
cd work/sub/dir &&
test_rev_parse false false true sub/dir/
)
ok 11 - subdir of work tree
expecting success of 1501.12 'setup: GIT_WORK_TREE=relative (override core.worktree)':
GIT_DIR=$(pwd)/repo.git &&
GIT_CONFIG=$GIT_DIR/config &&
git config core.worktree non-existent &&
GIT_WORK_TREE=work &&
export GIT_DIR GIT_CONFIG GIT_WORK_TREE
ok 12 - setup: GIT_WORK_TREE=relative (override core.worktree)
expecting success of 1501.13 'outside':
test_rev_parse false false false &&
(
cd work2 &&
test_rev_parse false false false
)
ok 13 - outside
expecting success of 1501.14 'inside work tree':
(
cd work &&
GIT_WORK_TREE=. &&
test_rev_parse false false true ""
)
'actual.prefix' is not empty, it contains:
ok 14 - inside work tree
expecting success of 1501.15 'subdir of work tree':
(
cd work/sub/dir &&
GIT_WORK_TREE=../.. &&
test_rev_parse false false true sub/dir/
)
ok 15 - subdir of work tree
expecting success of 1501.16 'setup: GIT_WORK_TREE=absolute, below git dir':
mv work repo.git/work &&
mv work2 repo.git/work2 &&
GIT_DIR=$(pwd)/repo.git &&
GIT_CONFIG=$GIT_DIR/config &&
GIT_WORK_TREE=$(pwd)/repo.git/work &&
export GIT_DIR GIT_CONFIG GIT_WORK_TREE
ok 16 - setup: GIT_WORK_TREE=absolute, below git dir
expecting success of 1501.17 'outside':
echo outside &&
test_rev_parse false false false
outside
ok 17 - outside
expecting success of 1501.18 'in repo.git':
(
cd repo.git &&
test_rev_parse false true false
) &&
(
cd repo.git/objects &&
test_rev_parse false true false
) &&
(
cd repo.git/work2 &&
test_rev_parse false true false
)
ok 18 - in repo.git
expecting success of 1501.19 'inside work tree':
(
cd repo.git/work &&
test_rev_parse false true true ""
)
'actual.prefix' is not empty, it contains:
ok 19 - inside work tree
expecting success of 1501.20 'subdir of work tree':
(
cd repo.git/work/sub/dir &&
test_rev_parse false true true sub/dir/
)
ok 20 - subdir of work tree
expecting success of 1501.21 'find work tree from repo':
echo sub/dir/untracked >expected &&
cat <<-\EOF >repo.git/work/.gitignore &&
expected.*
actual.*
.gitignore
EOF
>repo.git/work/sub/dir/untracked &&
(
cd repo.git &&
git ls-files --others --exclude-standard >../actual
) &&
test_cmp expected actual
ok 21 - find work tree from repo
expecting success of 1501.22 'find work tree from work tree':
echo sub/dir/tracked >expected &&
>repo.git/work/sub/dir/tracked &&
(
cd repo.git/work/sub/dir &&
git --git-dir=../../.. add tracked
) &&
(
cd repo.git &&
git ls-files >../actual
) &&
test_cmp expected actual
ok 22 - find work tree from work tree
expecting success of 1501.23 '_gently() groks relative GIT_DIR & GIT_WORK_TREE':
(
cd repo.git/work/sub/dir &&
GIT_DIR=../../.. &&
GIT_WORK_TREE=../.. &&
GIT_PAGER= &&
export GIT_DIR GIT_WORK_TREE GIT_PAGER &&
git diff --exit-code tracked &&
echo changed >tracked &&
test_must_fail 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 23 - _gently() groks relative GIT_DIR & GIT_WORK_TREE
expecting success of 1501.24 'diff-index respects work tree under .git dir':
cat >diff-index-cached.expected <<-EOF &&
:000000 100644 $ZERO_OID $EMPTY_BLOB A sub/dir/tracked
EOF
cat >diff-index.expected <<-EOF &&
:000000 100644 $ZERO_OID $ZERO_OID A sub/dir/tracked
EOF
(
GIT_DIR=repo.git &&
GIT_WORK_TREE=repo.git/work &&
export GIT_DIR GIT_WORK_TREE &&
git diff-index $EMPTY_TREE >diff-index.actual &&
git diff-index --cached $EMPTY_TREE >diff-index-cached.actual
) &&
test_cmp diff-index.expected diff-index.actual &&
test_cmp diff-index-cached.expected diff-index-cached.actual
ok 24 - diff-index respects work tree under .git dir
expecting success of 1501.25 'diff-files respects work tree under .git dir':
cat >diff-files.expected <<-EOF &&
:100644 100644 $EMPTY_BLOB $ZERO_OID M sub/dir/tracked
EOF
(
GIT_DIR=repo.git &&
GIT_WORK_TREE=repo.git/work &&
export GIT_DIR GIT_WORK_TREE &&
git diff-files >diff-files.actual
) &&
test_cmp diff-files.expected diff-files.actual
ok 25 - diff-files respects work tree under .git dir
expecting success of 1501.26 'git diff respects work tree under .git dir':
cat >diff-TREE.expected <<-EOF &&
diff --git a/sub/dir/tracked b/sub/dir/tracked
new file mode 100644
index 0000000..$CHANGED_BLOB7
--- /dev/null
+++ b/sub/dir/tracked
@@ -0,0 +1 @@
+changed
EOF
cat >diff-TREE-cached.expected <<-EOF &&
diff --git a/sub/dir/tracked b/sub/dir/tracked
new file mode 100644
index 0000000..$EMPTY_BLOB7
EOF
cat >diff-FILES.expected <<-EOF &&
diff --git a/sub/dir/tracked b/sub/dir/tracked
index $EMPTY_BLOB7..$CHANGED_BLOB7 100644
--- a/sub/dir/tracked
+++ b/sub/dir/tracked
@@ -0,0 +1 @@
+changed
EOF
(
GIT_DIR=repo.git &&
GIT_WORK_TREE=repo.git/work &&
export GIT_DIR GIT_WORK_TREE &&
git diff $EMPTY_TREE >diff-TREE.actual &&
git diff --cached $EMPTY_TREE >diff-TREE-cached.actual &&
git diff >diff-FILES.actual
) &&
test_cmp diff-TREE.expected diff-TREE.actual &&
test_cmp diff-TREE-cached.expected diff-TREE-cached.actual &&
test_cmp diff-FILES.expected diff-FILES.actual
ok 26 - git diff respects work tree under .git dir
expecting success of 1501.27 'git grep':
echo dir/tracked >expected.grep &&
(
cd repo.git/work/sub &&
GIT_DIR=../.. &&
GIT_WORK_TREE=.. &&
export GIT_DIR GIT_WORK_TREE &&
git grep -l changed >../../../actual.grep
) &&
test_cmp expected.grep actual.grep
ok 27 - git grep
expecting success of 1501.28 'git commit':
(
cd repo.git &&
GIT_DIR=. GIT_WORK_TREE=work git commit -a -m done
)
[master (root-commit) 271ed29] done
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 sub/dir/tracked
ok 28 - git commit
expecting success of 1501.29 'absolute pathspec should fail gracefully':
(
cd repo.git &&
test_might_fail git config --unset core.worktree &&
test_must_fail git log HEAD -- /home
)
fatal: /home: '/home' is outside repository at '/<<PKGBUILDDIR>>/t/trash directory.t1501-work-tree/repo.git/work'
ok 29 - absolute pathspec should fail gracefully
expecting success of 1501.30 'make_relative_path handles double slashes in GIT_DIR':
>dummy_file &&
echo git --git-dir="$(pwd)//repo.git" --work-tree="$(pwd)" add dummy_file &&
git --git-dir="$(pwd)//repo.git" --work-tree="$(pwd)" add dummy_file
git --git-dir=/<<PKGBUILDDIR>>/t/trash directory.t1501-work-tree//repo.git --work-tree=/<<PKGBUILDDIR>>/t/trash directory.t1501-work-tree add dummy_file
ok 30 - make_relative_path handles double slashes in GIT_DIR
expecting success of 1501.31 'relative $GIT_WORK_TREE and git subprocesses':
GIT_DIR=repo.git GIT_WORK_TREE=repo.git/work \
test-tool subprocess --setup-work-tree rev-parse --show-toplevel >actual &&
echo "$(pwd)/repo.git/work" >expected &&
test_cmp expected actual
ok 31 - relative $GIT_WORK_TREE and git subprocesses
expecting success of 1501.32 'Multi-worktree setup':
mkdir work &&
mkdir -p repo.git/repos/foo &&
cp repo.git/HEAD repo.git/index repo.git/repos/foo &&
{ cp repo.git/sharedindex.* repo.git/repos/foo || :; } &&
sane_unset GIT_DIR GIT_CONFIG GIT_WORK_TREE
cp: cannot stat 'repo.git/sharedindex.*': No such file or directory
ok 32 - Multi-worktree setup
expecting success of 1501.33 'GIT_DIR set (1)':
echo "gitdir: repo.git/repos/foo" >gitfile &&
echo ../.. >repo.git/repos/foo/commondir &&
(
cd work &&
GIT_DIR=../gitfile git rev-parse --git-common-dir >actual &&
test-tool path-utils real_path "$TRASH_DIRECTORY/repo.git" >expect &&
test_cmp expect actual
)
ok 33 - GIT_DIR set (1)
expecting success of 1501.34 'GIT_DIR set (2)':
echo "gitdir: repo.git/repos/foo" >gitfile &&
echo "$(pwd)/repo.git" >repo.git/repos/foo/commondir &&
(
cd work &&
GIT_DIR=../gitfile git rev-parse --git-common-dir >actual &&
test-tool path-utils real_path "$TRASH_DIRECTORY/repo.git" >expect &&
test_cmp expect actual
)
ok 34 - GIT_DIR set (2)
expecting success of 1501.35 'Auto discovery':
echo "gitdir: repo.git/repos/foo" >.git &&
echo ../.. >repo.git/repos/foo/commondir &&
(
cd work &&
git rev-parse --git-common-dir >actual &&
test-tool path-utils real_path "$TRASH_DIRECTORY/repo.git" >expect &&
test_cmp expect actual &&
echo haha >data1 &&
git add data1 &&
git ls-files --full-name :/ | grep data1 >actual &&
echo work/data1 >expect &&
test_cmp expect actual
)
ok 35 - Auto discovery
expecting success of 1501.36 '$GIT_DIR/common overrides core.worktree':
mkdir elsewhere &&
git --git-dir=repo.git config core.worktree "$TRASH_DIRECTORY/elsewhere" &&
echo "gitdir: repo.git/repos/foo" >.git &&
echo ../.. >repo.git/repos/foo/commondir &&
(
cd work &&
git rev-parse --git-common-dir >actual &&
test-tool path-utils real_path "$TRASH_DIRECTORY/repo.git" >expect &&
test_cmp expect actual &&
echo haha >data2 &&
git add data2 &&
git ls-files --full-name :/ | grep data2 >actual &&
echo work/data2 >expect &&
test_cmp expect actual
)
ok 36 - $GIT_DIR/common overrides core.worktree
expecting success of 1501.37 '$GIT_WORK_TREE overrides $GIT_DIR/common':
echo "gitdir: repo.git/repos/foo" >.git &&
echo ../.. >repo.git/repos/foo/commondir &&
(
cd work &&
echo haha >data3 &&
git --git-dir=../.git --work-tree=. add data3 &&
git ls-files --full-name -- :/ | grep data3 >actual &&
echo data3 >expect &&
test_cmp expect actual
)
ok 37 - $GIT_WORK_TREE overrides $GIT_DIR/common
expecting success of 1501.38 'error out gracefully on invalid $GIT_WORK_TREE':
(
GIT_WORK_TREE=/.invalid/work/tree &&
export GIT_WORK_TREE &&
test_expect_code 128 git rev-parse
)
fatal: Invalid path '/.invalid': No such file or directory
ok 38 - error out gracefully on invalid $GIT_WORK_TREE
expecting success of 1501.39 'refs work with relative gitdir and work tree':
git init relative &&
git -C relative commit --allow-empty -m one &&
git -C relative commit --allow-empty -m two &&
GIT_DIR=relative/.git GIT_WORK_TREE=relative git reset HEAD^ &&
git -C relative log -1 --format=%s >actual &&
echo one >expect &&
test_cmp expect actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1501-work-tree/relative/.git/
[master (root-commit) 61ba98b] one
Author: A U Thor <author@example.com>
[master 2b4e70d] two
Author: A U Thor <author@example.com>
ok 39 - refs work with relative gitdir and work tree
# passed all 39 test(s)
1..39
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1502-rev-parse-parseopt.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1502-rev-parse-parseopt/.git/
expecting success of 1502.1 'setup optionspec':
sed -e "s/^|//" >optionspec <<\EOF
|some-command [options] <args>...
|
|some-command does foo and bar!
|--
|h,help show the help
|
|foo some nifty option --foo
|bar= some cool option --bar with an argument
|b,baz a short and long option
|
| An option group Header
|C? option C with an optional argument
|d,data? short and long option with an optional argument
|
| Argument hints
|B=arg short option required argument
|bar2=arg long option required argument
|e,fuz=with-space short and long option required argument
|s?some short option optional argument
|long?data long option optional argument
|g,fluf?path short and long option optional argument
|longest=very-long-argument-hint a very long argument hint
|pair=key=value with an equals sign in the hint
|aswitch help te=t contains? fl*g characters!`
|bswitch=hint hint has trailing tab character
|cswitch switch has trailing tab character
|short-hint=a with a one symbol hint
|
|Extras
|extra1 line above used to cause a segfault but no longer does
EOF
ok 1 - setup optionspec
expecting success of 1502.2 'setup optionspec-no-switches':
sed -e "s/^|//" >optionspec_no_switches <<\EOF
|some-command [options] <args>...
|
|some-command does foo and bar!
|--
EOF
ok 2 - setup optionspec-no-switches
expecting success of 1502.3 'setup optionspec-only-hidden-switches':
sed -e "s/^|//" >optionspec_only_hidden_switches <<\EOF
|some-command [options] <args>...
|
|some-command does foo and bar!
|--
|hidden1* A hidden switch
EOF
ok 3 - setup optionspec-only-hidden-switches
expecting success of 1502.4 'test --parseopt help output':
sed -e "s/^|//" >expect <<\END_EXPECT &&
|cat <<\EOF
|usage: some-command [options] <args>...
|
| some-command does foo and bar!
|
| -h, --help show the help
| --foo some nifty option --foo
| --bar ... some cool option --bar with an argument
| -b, --baz a short and long option
|
|An option group Header
| -C[...] option C with an optional argument
| -d, --data[=...] short and long option with an optional argument
|
|Argument hints
| -B <arg> short option required argument
| --bar2 <arg> long option required argument
| -e, --fuz <with-space>
| short and long option required argument
| -s[<some>] short option optional argument
| --long[=<data>] long option optional argument
| -g, --fluf[=<path>] short and long option optional argument
| --longest <very-long-argument-hint>
| a very long argument hint
| --pair <key=value> with an equals sign in the hint
| --aswitch help te=t contains? fl*g characters!`
| --bswitch <hint> hint has trailing tab character
| --cswitch switch has trailing tab character
| --short-hint <a> with a one symbol hint
|
|Extras
| --extra1 line above used to cause a segfault but no longer does
|
|EOF
END_EXPECT
test_expect_code 129 git rev-parse --parseopt -- -h > output < optionspec &&
test_cmp expect output
ok 4 - test --parseopt help output
expecting success of 1502.5 'test --parseopt help output no switches':
sed -e "s/^|//" >expect <<\END_EXPECT &&
|cat <<\EOF
|usage: some-command [options] <args>...
|
| some-command does foo and bar!
|
|EOF
END_EXPECT
test_expect_code 129 git rev-parse --parseopt -- -h > output < optionspec_no_switches &&
test_cmp expect output
ok 5 - test --parseopt help output no switches
expecting success of 1502.6 'test --parseopt help output hidden switches':
sed -e "s/^|//" >expect <<\END_EXPECT &&
|cat <<\EOF
|usage: some-command [options] <args>...
|
| some-command does foo and bar!
|
|EOF
END_EXPECT
test_expect_code 129 git rev-parse --parseopt -- -h > output < optionspec_only_hidden_switches &&
test_cmp expect output
ok 6 - test --parseopt help output hidden switches
expecting success of 1502.7 'test --parseopt help-all output hidden switches':
sed -e "s/^|//" >expect <<\END_EXPECT &&
|cat <<\EOF
|usage: some-command [options] <args>...
|
| some-command does foo and bar!
|
| --hidden1 A hidden switch
|
|EOF
END_EXPECT
test_expect_code 129 git rev-parse --parseopt -- --help-all > output < optionspec_only_hidden_switches &&
test_cmp expect output
ok 7 - test --parseopt help-all output hidden switches
expecting success of 1502.8 'test --parseopt invalid switch help output':
sed -e "s/^|//" >expect <<\END_EXPECT &&
|error: unknown option `does-not-exist'
|usage: some-command [options] <args>...
|
| some-command does foo and bar!
|
| -h, --help show the help
| --foo some nifty option --foo
| --bar ... some cool option --bar with an argument
| -b, --baz a short and long option
|
|An option group Header
| -C[...] option C with an optional argument
| -d, --data[=...] short and long option with an optional argument
|
|Argument hints
| -B <arg> short option required argument
| --bar2 <arg> long option required argument
| -e, --fuz <with-space>
| short and long option required argument
| -s[<some>] short option optional argument
| --long[=<data>] long option optional argument
| -g, --fluf[=<path>] short and long option optional argument
| --longest <very-long-argument-hint>
| a very long argument hint
| --pair <key=value> with an equals sign in the hint
| --aswitch help te=t contains? fl*g characters!`
| --bswitch <hint> hint has trailing tab character
| --cswitch switch has trailing tab character
| --short-hint <a> with a one symbol hint
|
|Extras
| --extra1 line above used to cause a segfault but no longer does
|
END_EXPECT
test_expect_code 129 git rev-parse --parseopt -- --does-not-exist 1>/dev/null 2>output < optionspec &&
test_cmp expect output
ok 8 - test --parseopt invalid switch help output
expecting success of 1502.9 'setup expect.1':
cat > expect <<EOF
set -- --foo --bar 'ham' -b --aswitch -- 'arg'
EOF
ok 9 - setup expect.1
expecting success of 1502.10 'test --parseopt':
git rev-parse --parseopt -- --foo --bar=ham --baz --aswitch arg < optionspec > output &&
test_cmp expect output
ok 10 - test --parseopt
expecting success of 1502.11 'test --parseopt with mixed options and arguments':
git rev-parse --parseopt -- --foo arg --bar=ham --baz --aswitch < optionspec > output &&
test_cmp expect output
ok 11 - test --parseopt with mixed options and arguments
expecting success of 1502.12 'setup expect.2':
cat > expect <<EOF
set -- --foo -- 'arg' '--bar=ham'
EOF
ok 12 - setup expect.2
expecting success of 1502.13 'test --parseopt with --':
git rev-parse --parseopt -- --foo -- arg --bar=ham < optionspec > output &&
test_cmp expect output
ok 13 - test --parseopt with --
expecting success of 1502.14 'test --parseopt --stop-at-non-option':
git rev-parse --parseopt --stop-at-non-option -- --foo arg --bar=ham < optionspec > output &&
test_cmp expect output
ok 14 - test --parseopt --stop-at-non-option
expecting success of 1502.15 'setup expect.3':
cat > expect <<EOF
set -- --foo -- '--' 'arg' '--bar=ham'
EOF
ok 15 - setup expect.3
expecting success of 1502.16 'test --parseopt --keep-dashdash':
git rev-parse --parseopt --keep-dashdash -- --foo -- arg --bar=ham < optionspec > output &&
test_cmp expect output
ok 16 - test --parseopt --keep-dashdash
expecting success of 1502.17 'setup expect.4':
cat >expect <<EOF
set -- --foo -- '--' 'arg' '--spam=ham'
EOF
ok 17 - setup expect.4
expecting success of 1502.18 'test --parseopt --keep-dashdash --stop-at-non-option with --':
git rev-parse --parseopt --keep-dashdash --stop-at-non-option -- --foo -- arg --spam=ham <optionspec >output &&
test_cmp expect output
ok 18 - test --parseopt --keep-dashdash --stop-at-non-option with --
expecting success of 1502.19 'setup expect.5':
cat > expect <<EOF
set -- --foo -- 'arg' '--spam=ham'
EOF
ok 19 - setup expect.5
expecting success of 1502.20 'test --parseopt --keep-dashdash --stop-at-non-option without --':
git rev-parse --parseopt --keep-dashdash --stop-at-non-option -- --foo arg --spam=ham <optionspec >output &&
test_cmp expect output
ok 20 - test --parseopt --keep-dashdash --stop-at-non-option without --
expecting success of 1502.21 'setup expect.6':
cat > expect <<EOF
set -- --foo --bar='z' --baz -C'Z' --data='A' -- 'arg'
EOF
ok 21 - setup expect.6
expecting success of 1502.22 'test --parseopt --stuck-long':
git rev-parse --parseopt --stuck-long -- --foo --bar=z -b arg -CZ -dA <optionspec >output &&
test_cmp expect output
ok 22 - test --parseopt --stuck-long
expecting success of 1502.23 'setup expect.7':
cat > expect <<EOF
set -- --data='' -C --baz -- 'arg'
EOF
ok 23 - setup expect.7
expecting success of 1502.24 'test --parseopt --stuck-long and empty optional argument':
git rev-parse --parseopt --stuck-long -- --data= arg -C -b <optionspec >output &&
test_cmp expect output
ok 24 - test --parseopt --stuck-long and empty optional argument
expecting success of 1502.25 'setup expect.8':
cat > expect <<EOF
set -- --data --baz -- 'arg'
EOF
ok 25 - setup expect.8
expecting success of 1502.26 'test --parseopt --stuck-long and long option with unset optional argument':
git rev-parse --parseopt --stuck-long -- --data arg -b <optionspec >output &&
test_cmp expect output
ok 26 - test --parseopt --stuck-long and long option with unset optional argument
expecting success of 1502.27 'test --parseopt --stuck-long and short option with unset optional argument':
git rev-parse --parseopt --stuck-long -- -d arg -b <optionspec >output &&
test_cmp expect output
ok 27 - test --parseopt --stuck-long and short option with unset optional argument
expecting success of 1502.28 'test --parseopt help output: "wrapped" options normal "or:" lines':
sed -e "s/^|//" >spec <<-\EOF &&
|cmd [--some-option]
| [--another-option]
|cmd [--yet-another-option]
|--
|h,help show the help
EOF
sed -e "s/^|//" >expect <<-\END_EXPECT &&
|cat <<\EOF
|usage: cmd [--some-option]
| or: [--another-option]
| or: cmd [--yet-another-option]
|
| -h, --help show the help
|
|EOF
END_EXPECT
test_must_fail git rev-parse --parseopt -- -h <spec >actual &&
test_cmp expect actual
ok 28 - test --parseopt help output: "wrapped" options normal "or:" lines
expecting success of 1502.29 'test --parseopt invalid opt-spec':
test_write_lines x -- "=, x" >spec &&
echo "fatal: missing opt-spec before option flags" >expect &&
test_must_fail git rev-parse --parseopt -- <spec 2>err &&
test_cmp expect err
ok 29 - test --parseopt invalid opt-spec
expecting success of 1502.30 'test --parseopt help output: multi-line blurb after empty line':
sed -e "s/^|//" >spec <<-\EOF &&
|cmd [--some-option]
| [--another-option]
|
|multi
|line
|blurb
|--
|h,help show the help
EOF
sed -e "s/^|//" >expect <<-\END_EXPECT &&
|cat <<\EOF
|usage: cmd [--some-option]
| or: [--another-option]
|
| multi
| line
| blurb
|
| -h, --help show the help
|
|EOF
END_EXPECT
test_must_fail git rev-parse --parseopt -- -h <spec >actual &&
test_cmp expect actual
ok 30 - test --parseopt help output: multi-line blurb after empty line
# passed all 30 test(s)
1..30
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1500-rev-parse.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1500-rev-parse/.git/
expecting success of 1500.1 'setup':
mkdir -p sub/dir work &&
cp -R .git repo.git &&
git checkout -B main &&
test_commit abc &&
git checkout -b side &&
test_commit def &&
git checkout main &&
git worktree add worktree side
Switched to a new branch 'main'
[main (root-commit) 4decab4] abc
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 abc.t
Switched to a new branch 'side'
[side 0620bdf] def
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 def.t
Switched to branch 'main'
Preparing worktree (checking out 'side')
HEAD is now at 0620bdf def
ok 1 - setup
expecting success of 1500.2 'toplevel: --is-bare-repository':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 2 - toplevel: --is-bare-repository
expecting success of 1500.3 'toplevel: --is-inside-git-dir':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 3 - toplevel: --is-inside-git-dir
expecting success of 1500.4 'toplevel: --is-inside-work-tree':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 4 - toplevel: --is-inside-work-tree
expecting success of 1500.5 'toplevel: --show-prefix':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 5 - toplevel: --show-prefix
expecting success of 1500.6 'toplevel: --git-dir':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 6 - toplevel: --git-dir
expecting success of 1500.7 'toplevel: --absolute-git-dir':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 7 - toplevel: --absolute-git-dir
expecting success of 1500.8 '.git/: --is-bare-repository':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 8 - .git/: --is-bare-repository
expecting success of 1500.9 '.git/: --is-inside-git-dir':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 9 - .git/: --is-inside-git-dir
expecting success of 1500.10 '.git/: --is-inside-work-tree':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 10 - .git/: --is-inside-work-tree
expecting success of 1500.11 '.git/: --show-prefix':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 11 - .git/: --show-prefix
expecting success of 1500.12 '.git/: --git-dir':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 12 - .git/: --git-dir
expecting success of 1500.13 '.git/: --absolute-git-dir':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 13 - .git/: --absolute-git-dir
expecting success of 1500.14 '.git/objects/: --is-bare-repository':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 14 - .git/objects/: --is-bare-repository
expecting success of 1500.15 '.git/objects/: --is-inside-git-dir':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 15 - .git/objects/: --is-inside-git-dir
expecting success of 1500.16 '.git/objects/: --is-inside-work-tree':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 16 - .git/objects/: --is-inside-work-tree
expecting success of 1500.17 '.git/objects/: --show-prefix':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 17 - .git/objects/: --show-prefix
expecting success of 1500.18 '.git/objects/: --git-dir':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 18 - .git/objects/: --git-dir
expecting success of 1500.19 '.git/objects/: --absolute-git-dir':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 19 - .git/objects/: --absolute-git-dir
expecting success of 1500.20 'subdirectory: --is-bare-repository':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 20 - subdirectory: --is-bare-repository
expecting success of 1500.21 'subdirectory: --is-inside-git-dir':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 21 - subdirectory: --is-inside-git-dir
expecting success of 1500.22 'subdirectory: --is-inside-work-tree':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 22 - subdirectory: --is-inside-work-tree
expecting success of 1500.23 'subdirectory: --show-prefix':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 23 - subdirectory: --show-prefix
expecting success of 1500.24 'subdirectory: --git-dir':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 24 - subdirectory: --git-dir
expecting success of 1500.25 'subdirectory: --absolute-git-dir':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 25 - subdirectory: --absolute-git-dir
expecting success of 1500.26 'core.bare = true: --is-bare-repository':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 26 - core.bare = true: --is-bare-repository
expecting success of 1500.27 'core.bare = true: --is-inside-git-dir':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 27 - core.bare = true: --is-inside-git-dir
expecting success of 1500.28 'core.bare = true: --is-inside-work-tree':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 28 - core.bare = true: --is-inside-work-tree
expecting success of 1500.29 'core.bare undefined: --is-bare-repository':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 29 - core.bare undefined: --is-bare-repository
expecting success of 1500.30 'core.bare undefined: --is-inside-git-dir':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 30 - core.bare undefined: --is-inside-git-dir
expecting success of 1500.31 'core.bare undefined: --is-inside-work-tree':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 31 - core.bare undefined: --is-inside-work-tree
expecting success of 1500.32 'GIT_DIR=../.git, core.bare = false: --is-bare-repository':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 32 - GIT_DIR=../.git, core.bare = false: --is-bare-repository
expecting success of 1500.33 'GIT_DIR=../.git, core.bare = false: --is-inside-git-dir':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 33 - GIT_DIR=../.git, core.bare = false: --is-inside-git-dir
expecting success of 1500.34 'GIT_DIR=../.git, core.bare = false: --is-inside-work-tree':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 34 - GIT_DIR=../.git, core.bare = false: --is-inside-work-tree
expecting success of 1500.35 'GIT_DIR=../.git, core.bare = false: --show-prefix':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 35 - GIT_DIR=../.git, core.bare = false: --show-prefix
expecting success of 1500.36 'GIT_DIR=../.git, core.bare = false: --git-dir':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 36 - GIT_DIR=../.git, core.bare = false: --git-dir
expecting success of 1500.37 'GIT_DIR=../.git, core.bare = false: --absolute-git-dir':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 37 - GIT_DIR=../.git, core.bare = false: --absolute-git-dir
expecting success of 1500.38 'GIT_DIR=../.git, core.bare = true: --is-bare-repository':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 38 - GIT_DIR=../.git, core.bare = true: --is-bare-repository
expecting success of 1500.39 'GIT_DIR=../.git, core.bare = true: --is-inside-git-dir':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 39 - GIT_DIR=../.git, core.bare = true: --is-inside-git-dir
expecting success of 1500.40 'GIT_DIR=../.git, core.bare = true: --is-inside-work-tree':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 40 - GIT_DIR=../.git, core.bare = true: --is-inside-work-tree
expecting success of 1500.41 'GIT_DIR=../.git, core.bare = true: --show-prefix':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 41 - GIT_DIR=../.git, core.bare = true: --show-prefix
expecting success of 1500.42 'GIT_DIR=../.git, core.bare undefined: --is-bare-repository':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 42 - GIT_DIR=../.git, core.bare undefined: --is-bare-repository
expecting success of 1500.43 'GIT_DIR=../.git, core.bare undefined: --is-inside-git-dir':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 43 - GIT_DIR=../.git, core.bare undefined: --is-inside-git-dir
expecting success of 1500.44 'GIT_DIR=../.git, core.bare undefined: --is-inside-work-tree':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 44 - GIT_DIR=../.git, core.bare undefined: --is-inside-work-tree
expecting success of 1500.45 'GIT_DIR=../.git, core.bare undefined: --show-prefix':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 45 - GIT_DIR=../.git, core.bare undefined: --show-prefix
expecting success of 1500.46 'GIT_DIR=../repo.git, core.bare = false: --is-bare-repository':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 46 - GIT_DIR=../repo.git, core.bare = false: --is-bare-repository
expecting success of 1500.47 'GIT_DIR=../repo.git, core.bare = false: --is-inside-git-dir':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 47 - GIT_DIR=../repo.git, core.bare = false: --is-inside-git-dir
expecting success of 1500.48 'GIT_DIR=../repo.git, core.bare = false: --is-inside-work-tree':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 48 - GIT_DIR=../repo.git, core.bare = false: --is-inside-work-tree
expecting success of 1500.49 'GIT_DIR=../repo.git, core.bare = false: --show-prefix':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 49 - GIT_DIR=../repo.git, core.bare = false: --show-prefix
expecting success of 1500.50 'GIT_DIR=../repo.git, core.bare = false: --git-dir':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 50 - GIT_DIR=../repo.git, core.bare = false: --git-dir
expecting success of 1500.51 'GIT_DIR=../repo.git, core.bare = false: --absolute-git-dir':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 51 - GIT_DIR=../repo.git, core.bare = false: --absolute-git-dir
expecting success of 1500.52 'GIT_DIR=../repo.git, core.bare = true: --is-bare-repository':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 52 - GIT_DIR=../repo.git, core.bare = true: --is-bare-repository
expecting success of 1500.53 'GIT_DIR=../repo.git, core.bare = true: --is-inside-git-dir':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 53 - GIT_DIR=../repo.git, core.bare = true: --is-inside-git-dir
expecting success of 1500.54 'GIT_DIR=../repo.git, core.bare = true: --is-inside-work-tree':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 54 - GIT_DIR=../repo.git, core.bare = true: --is-inside-work-tree
expecting success of 1500.55 'GIT_DIR=../repo.git, core.bare = true: --show-prefix':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 55 - GIT_DIR=../repo.git, core.bare = true: --show-prefix
expecting success of 1500.56 'GIT_DIR=../repo.git, core.bare undefined: --is-bare-repository':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 56 - GIT_DIR=../repo.git, core.bare undefined: --is-bare-repository
expecting success of 1500.57 'GIT_DIR=../repo.git, core.bare undefined: --is-inside-git-dir':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 57 - GIT_DIR=../repo.git, core.bare undefined: --is-inside-git-dir
expecting success of 1500.58 'GIT_DIR=../repo.git, core.bare undefined: --is-inside-work-tree':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 58 - GIT_DIR=../repo.git, core.bare undefined: --is-inside-work-tree
expecting success of 1500.59 'GIT_DIR=../repo.git, core.bare undefined: --show-prefix':
if test -n "$gitdir"
then
test_when_finished "unset GIT_DIR" &&
GIT_DIR="$gitdir" &&
export GIT_DIR
fi &&
case "$bare" in
t*) test_config ${d:+-C} ${d:+"$d"} core.bare true ;;
f*) test_config ${d:+-C} ${d:+"$d"} core.bare false ;;
u*) test_unconfig ${d:+-C} ${d:+"$d"} core.bare ;;
esac &&
echo "$expect" >expect &&
git ${d:+-C} ${d:+"$d"} rev-parse $o >actual &&
test_cmp expect actual
ok 59 - GIT_DIR=../repo.git, core.bare undefined: --show-prefix
expecting success of 1500.60 'rev-parse --path-format=absolute':
test_one "." "$ROOT/.git" --path-format=absolute --git-dir &&
test_one "." "$ROOT/.git" --path-format=absolute --git-common-dir &&
test_one "sub/dir" "$ROOT/.git" --path-format=absolute --git-dir &&
test_one "sub/dir" "$ROOT/.git" --path-format=absolute --git-common-dir &&
test_one "worktree" "$ROOT/.git/worktrees/worktree" --path-format=absolute --git-dir &&
test_one "worktree" "$ROOT/.git" --path-format=absolute --git-common-dir &&
test_one "." "$ROOT" --path-format=absolute --show-toplevel &&
test_one "." "$ROOT/.git/objects" --path-format=absolute --git-path objects &&
test_one "." "$ROOT/.git/objects/foo/bar/baz" --path-format=absolute --git-path objects/foo/bar/baz
ok 60 - rev-parse --path-format=absolute
expecting success of 1500.61 'rev-parse --path-format=relative':
test_one "." ".git" --path-format=relative --git-dir &&
test_one "." ".git" --path-format=relative --git-common-dir &&
test_one "sub/dir" "../../.git" --path-format=relative --git-dir &&
test_one "sub/dir" "../../.git" --path-format=relative --git-common-dir &&
test_one "worktree" "../.git/worktrees/worktree" --path-format=relative --git-dir &&
test_one "worktree" "../.git" --path-format=relative --git-common-dir &&
test_one "." "./" --path-format=relative --show-toplevel &&
test_one "." ".git/objects" --path-format=relative --git-path objects &&
test_one "." ".git/objects/foo/bar/baz" --path-format=relative --git-path objects/foo/bar/baz
ok 61 - rev-parse --path-format=relative
expecting success of 1500.62 '--path-format=relative does not affect --absolute-git-dir':
git rev-parse --path-format=relative --absolute-git-dir >actual &&
echo "$ROOT/.git" >expect &&
test_cmp expect actual
ok 62 - --path-format=relative does not affect --absolute-git-dir
expecting success of 1500.63 '--path-format can change in the middle of the command line':
git rev-parse --path-format=absolute --git-dir --path-format=relative --git-path objects/foo/bar >actual &&
cat >expect <<-EOF &&
$ROOT/.git
.git/objects/foo/bar
EOF
test_cmp expect actual
ok 63 - --path-format can change in the middle of the command line
expecting success of 1500.64 '--path-format does not segfault without an argument':
test_must_fail git rev-parse --path-format
fatal: --path-format requires an argument
ok 64 - --path-format does not segfault without an argument
expecting success of 1500.65 'git-common-dir from worktree root':
echo .git >expect &&
git rev-parse --git-common-dir >actual &&
test_cmp expect actual
ok 65 - git-common-dir from worktree root
expecting success of 1500.66 'git-common-dir inside sub-dir':
mkdir -p path/to/child &&
test_when_finished "rm -rf path" &&
echo "$(git -C path/to/child rev-parse --show-cdup).git" >expect &&
git -C path/to/child rev-parse --git-common-dir >actual &&
test_cmp expect actual
ok 66 - git-common-dir inside sub-dir
expecting success of 1500.67 'git-path from worktree root':
echo .git/objects >expect &&
git rev-parse --git-path objects >actual &&
test_cmp expect actual
ok 67 - git-path from worktree root
expecting success of 1500.68 'git-path inside sub-dir':
mkdir -p path/to/child &&
test_when_finished "rm -rf path" &&
echo "$(git -C path/to/child rev-parse --show-cdup).git/objects" >expect &&
git -C path/to/child rev-parse --git-path objects >actual &&
test_cmp expect actual
ok 68 - git-path inside sub-dir
expecting success of 1500.69 'rev-parse --is-shallow-repository in shallow repo':
test_commit test_commit &&
echo true >expect &&
git clone --depth 1 --no-local . shallow &&
test_when_finished "rm -rf shallow" &&
git -C shallow rev-parse --is-shallow-repository >actual &&
test_cmp expect actual
[main b250333] test_commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 test_commit.t
Cloning into 'shallow'...
ok 69 - rev-parse --is-shallow-repository in shallow repo
expecting success of 1500.70 'rev-parse --is-shallow-repository in non-shallow repo':
echo false >expect &&
git rev-parse --is-shallow-repository >actual &&
test_cmp expect actual
ok 70 - rev-parse --is-shallow-repository in non-shallow repo
expecting success of 1500.71 'rev-parse --show-object-format in repo':
test_oid algo >expect &&
git rev-parse --show-object-format >actual &&
test_cmp expect actual &&
git rev-parse --show-object-format=storage >actual &&
test_cmp expect actual &&
git rev-parse --show-object-format=input >actual &&
test_cmp expect actual &&
git rev-parse --show-object-format=output >actual &&
test_cmp expect actual &&
test_must_fail git rev-parse --show-object-format=squeamish-ossifrage 2>err &&
grep "unknown mode for --show-object-format: squeamish-ossifrage" err
fatal: unknown mode for --show-object-format: squeamish-ossifrage
ok 71 - rev-parse --show-object-format in repo
expecting success of 1500.72 '--show-toplevel from subdir of working tree':
pwd >expect &&
git -C sub/dir rev-parse --show-toplevel >actual &&
test_cmp expect actual
ok 72 - --show-toplevel from subdir of working tree
expecting success of 1500.73 '--show-toplevel from inside .git':
test_must_fail git -C .git rev-parse --show-toplevel
fatal: this operation must be run in a work tree
ok 73 - --show-toplevel from inside .git
expecting success of 1500.74 'showing the superproject correctly':
git rev-parse --show-superproject-working-tree >out &&
test_must_be_empty out &&
test_create_repo super &&
test_commit -C super test_commit &&
test_create_repo sub &&
test_commit -C sub test_commit &&
git -c protocol.file.allow=always \
-C super submodule add ../sub dir/sub &&
echo $(pwd)/super >expect &&
git -C super/dir/sub rev-parse --show-superproject-working-tree >out &&
test_cmp expect out &&
test_commit -C super submodule_add &&
git -C super checkout -b branch1 &&
git -C super/dir/sub checkout -b branch1 &&
test_commit -C super/dir/sub branch1_commit &&
git -C super add dir/sub &&
test_commit -C super branch1_commit &&
git -C super checkout -b branch2 main &&
git -C super/dir/sub checkout -b branch2 main &&
test_commit -C super/dir/sub branch2_commit &&
git -C super add dir/sub &&
test_commit -C super branch2_commit &&
test_must_fail git -C super merge branch1 &&
git -C super/dir/sub rev-parse --show-superproject-working-tree >out &&
test_cmp expect out
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1500-rev-parse/super/.git/
[main (root-commit) 6703cdc] test_commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 test_commit.t
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1500-rev-parse/sub/.git/
[main (root-commit) 5c184ab] test_commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 test_commit.t
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1500-rev-parse/super/dir/sub'...
done.
[main b28d39e] submodule_add
Author: A U Thor <author@example.com>
3 files changed, 5 insertions(+)
create mode 100644 .gitmodules
create mode 160000 dir/sub
create mode 100644 submodule_add.t
Switched to a new branch 'branch1'
Switched to a new branch 'branch1'
[branch1 7018b5f] branch1_commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 branch1_commit.t
[branch1 e08f379] branch1_commit
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+), 1 deletion(-)
create mode 100644 branch1_commit.t
Switched to a new branch 'branch2'
M dir/sub
Switched to a new branch 'branch2'
[branch2 6aad707] branch2_commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 branch2_commit.t
[branch2 32c6339] branch2_commit
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+), 1 deletion(-)
create mode 100644 branch2_commit.t
Failed to merge submodule dir/sub
CONFLICT (submodule): Merge conflict in dir/sub
Recursive merging with submodules currently only supports trivial cases.
Please manually handle the merging of each conflicted submodule.
This can be accomplished with the following steps:
- go to submodule (dir/sub), and either merge commit 7018b5f
or update to an existing commit which has merged those changes
- come back to superproject and run:
git add dir/sub
to record the above merge or update
- resolve any other conflicts in the superproject
- commit the resulting index in the superproject
Automatic merge failed; fix conflicts and then commit the result.
ok 74 - showing the superproject correctly
expecting success of 1500.75 'rev-parse --since= unsqueezed ordering':
x1=--since=1970-01-01T00:00:01Z &&
x2=--since=1970-01-01T00:00:02Z &&
x3=--since=1970-01-01T00:00:03Z &&
git rev-parse $x1 $x1 $x3 $x2 >actual &&
cat >expect <<-EOF &&
--max-age=1
--max-age=1
--max-age=3
--max-age=2
EOF
test_cmp expect actual
ok 75 - rev-parse --since= unsqueezed ordering
# passed all 75 test(s)
1..75
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1503-rev-parse-verify.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1503-rev-parse-verify/.git/
expecting success of 1503.1 'set up basic repo with 1 file (hello) and 4 commits':
add_line_into_file "1: Hello World" hello &&
HASH1=$(git rev-parse --verify HEAD) &&
add_line_into_file "2: A new day for git" hello &&
HASH2=$(git rev-parse --verify HEAD) &&
add_line_into_file "3: Another new day for git" hello &&
HASH3=$(git rev-parse --verify HEAD) &&
add_line_into_file "4: Ciao for now" hello &&
HASH4=$(git rev-parse --verify HEAD)
ok 1 - set up basic repo with 1 file (hello) and 4 commits
expecting success of 1503.2 'works with one good rev':
rev_hash1=$(git rev-parse --verify $HASH1) &&
test "$rev_hash1" = "$HASH1" &&
rev_hash2=$(git rev-parse --verify $HASH2) &&
test "$rev_hash2" = "$HASH2" &&
rev_hash3=$(git rev-parse --verify $HASH3) &&
test "$rev_hash3" = "$HASH3" &&
rev_hash4=$(git rev-parse --verify $HASH4) &&
test "$rev_hash4" = "$HASH4" &&
rev_main=$(git rev-parse --verify main) &&
test "$rev_main" = "$HASH4" &&
rev_head=$(git rev-parse --verify HEAD) &&
test "$rev_head" = "$HASH4"
ok 2 - works with one good rev
expecting success of 1503.3 'fails with any bad rev or many good revs':
test_must_fail git rev-parse --verify 2>error &&
grep "single revision" error &&
test_must_fail git rev-parse --verify foo 2>error &&
grep "single revision" error &&
test_must_fail git rev-parse --verify HEAD bar 2>error &&
grep "single revision" error &&
test_must_fail git rev-parse --verify baz HEAD 2>error &&
grep "single revision" error &&
test_must_fail git rev-parse --verify $HASH2 HEAD 2>error &&
grep "single revision" error
fatal: Needed a single revision
fatal: Needed a single revision
fatal: Needed a single revision
fatal: Needed a single revision
fatal: Needed a single revision
ok 3 - fails with any bad rev or many good revs
expecting success of 1503.4 'fails silently when using -q':
test_must_fail git rev-parse --verify --quiet 2>error &&
test_must_be_empty error &&
test_must_fail git rev-parse -q --verify foo 2>error &&
test_must_be_empty error &&
test_must_fail git rev-parse --verify -q HEAD bar 2>error &&
test_must_be_empty error &&
test_must_fail git rev-parse --quiet --verify baz HEAD 2>error &&
test_must_be_empty error &&
test_must_fail git rev-parse -q --verify $HASH2 HEAD 2>error &&
test_must_be_empty error
ok 4 - fails silently when using -q
expecting success of 1503.5 'fails silently when using -q with deleted reflogs':
ref=$(git rev-parse HEAD) &&
git update-ref --create-reflog -m "message for refs/test" refs/test "$ref" &&
git reflog delete --updateref --rewrite refs/test@{1} &&
test_must_fail git rev-parse -q --verify refs/test@{1} >error 2>&1 &&
test_must_be_empty error
ok 5 - fails silently when using -q with deleted reflogs
expecting success of 1503.6 'fails silently when using -q with not enough reflogs':
ref=$(git rev-parse HEAD) &&
git update-ref --create-reflog -m "message for refs/test2" refs/test2 "$ref" &&
test_must_fail git rev-parse -q --verify refs/test2@{999} >error 2>&1 &&
test_must_be_empty error
ok 6 - fails silently when using -q with not enough reflogs
expecting success of 1503.7 'succeeds silently with -q and reflogs that do not go far back enough in time':
ref=$(git rev-parse HEAD) &&
git update-ref --create-reflog -m "message for refs/test3" refs/test3 "$ref" &&
git rev-parse -q --verify refs/test3@{1.year.ago} >actual 2>error &&
test_must_be_empty error &&
echo "$ref" >expect &&
test_cmp expect actual
ok 7 - succeeds silently with -q and reflogs that do not go far back enough in time
expecting success of 1503.8 'no stdout output on error':
test -z "$(git rev-parse --verify)" &&
test -z "$(git rev-parse --verify foo)" &&
test -z "$(git rev-parse --verify baz HEAD)" &&
test -z "$(git rev-parse --verify HEAD bar)" &&
test -z "$(git rev-parse --verify $HASH2 HEAD)"
fatal: Needed a single revision
fatal: Needed a single revision
fatal: Needed a single revision
fatal: Needed a single revision
fatal: Needed a single revision
ok 8 - no stdout output on error
expecting success of 1503.9 'use --default':
git rev-parse --verify --default main &&
git rev-parse --verify --default main HEAD &&
git rev-parse --default main --verify &&
git rev-parse --default main --verify HEAD &&
git rev-parse --verify HEAD --default main &&
test_must_fail git rev-parse --verify foo --default main &&
test_must_fail git rev-parse --default HEAD --verify bar &&
test_must_fail git rev-parse --verify --default HEAD baz &&
test_must_fail git rev-parse --default foo --verify &&
test_must_fail git rev-parse --verify --default bar
32a594a3fdac2d57cf6d02987e30eec68511498c
32a594a3fdac2d57cf6d02987e30eec68511498c
32a594a3fdac2d57cf6d02987e30eec68511498c
32a594a3fdac2d57cf6d02987e30eec68511498c
32a594a3fdac2d57cf6d02987e30eec68511498c
fatal: Needed a single revision
fatal: Needed a single revision
fatal: Needed a single revision
fatal: Needed a single revision
fatal: Needed a single revision
ok 9 - use --default
expecting success of 1503.10 'main@{n} for various n':
git reflog >out &&
N=$(wc -l <out) &&
Nm1=$(($N-1)) &&
Np1=$(($N+1)) &&
git rev-parse --verify main@{0} &&
git rev-parse --verify main@{1} &&
git rev-parse --verify main@{$Nm1} &&
test_must_fail git rev-parse --verify main@{$N} &&
test_must_fail git rev-parse --verify main@{$Np1}
32a594a3fdac2d57cf6d02987e30eec68511498c
3de952f2416b6084f557ec417709eac740c6818c
88bcdc1839f0ad191ffdd65cae2a2a862d682151
fatal: log for 'main' only has 4 entries
fatal: log for 'main' only has 4 entries
ok 10 - main@{n} for various n
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
expecting success of 1503.11 'ref resolution not confused by broken symlinks':
ln -s does-not-exist .git/refs/heads/broken &&
test_must_fail git rev-parse --verify broken
fatal: Needed a single revision
ok 11 - ref resolution not confused by broken symlinks
expecting success of 1503.12 'options can appear after --verify':
git rev-parse --verify HEAD >expect &&
git rev-parse --verify -q HEAD >actual &&
test_cmp expect actual
ok 12 - options can appear after --verify
expecting success of 1503.13 'verify respects --end-of-options':
git update-ref refs/heads/-tricky HEAD &&
git rev-parse --verify HEAD >expect &&
git rev-parse --verify --end-of-options -tricky >actual &&
test_cmp expect actual
ok 13 - verify respects --end-of-options
# passed all 13 test(s)
1..13
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1505-rev-parse-last.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1505-rev-parse-last/.git/
expecting success of 1505.1 'setup':
make_commit 1 &&
git branch side &&
make_commit 2 &&
make_commit 3 &&
git checkout side &&
make_commit 4 &&
git merge main &&
git checkout main
[main (root-commit) c11cd10] 1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 1
[main ba98451] 2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 2
[main aefd701] 3
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 3
Switched to branch 'side'
[side 1d4df77] 4
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 4
Merge made by the 'ort' strategy.
2 | 1 +
3 | 1 +
2 files changed, 2 insertions(+)
create mode 100644 2
create mode 100644 3
Switched to branch 'main'
ok 1 - setup
expecting success of 1505.2 '@{-1} works':
test_cmp_rev side @{-1}
ok 2 - @{-1} works
expecting success of 1505.3 '@{-1}~2 works':
test_cmp_rev side~2 @{-1}~2
ok 3 - @{-1}~2 works
expecting success of 1505.4 '@{-1}^2 works':
test_cmp_rev side^2 @{-1}^2
ok 4 - @{-1}^2 works
expecting success of 1505.5 '@{-1}@{1} works':
test_cmp_rev side@{1} @{-1}@{1}
ok 5 - @{-1}@{1} works
expecting success of 1505.6 '@{-2} works':
test_cmp_rev main @{-2}
ok 6 - @{-2} works
expecting success of 1505.7 '@{-3} fails':
test_must_fail git rev-parse @{-3}
fatal: ambiguous argument '@{-3}': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
@{-3}
ok 7 - @{-3} fails
# passed all 7 test(s)
1..7
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1504-ceiling-dirs.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1504-ceiling-dirs/.git/
expecting success of 1504.1 'no_ceil: git rev-parse --show-prefix is ''':
echo "$expect" >expect &&
git rev-parse --show-prefix >actual &&
test_cmp expect actual
ok 1 - no_ceil: git rev-parse --show-prefix is ''
expecting success of 1504.2 'ceil_empty: git rev-parse --show-prefix is ''':
echo "$expect" >expect &&
git rev-parse --show-prefix >actual &&
test_cmp expect actual
ok 2 - ceil_empty: git rev-parse --show-prefix is ''
expecting success of 1504.3 'ceil_at_parent: git rev-parse --show-prefix is ''':
echo "$expect" >expect &&
git rev-parse --show-prefix >actual &&
test_cmp expect actual
ok 3 - ceil_at_parent: git rev-parse --show-prefix is ''
expecting success of 1504.4 'ceil_at_parent_slash: git rev-parse --show-prefix is ''':
echo "$expect" >expect &&
git rev-parse --show-prefix >actual &&
test_cmp expect actual
ok 4 - ceil_at_parent_slash: git rev-parse --show-prefix is ''
expecting success of 1504.5 'ceil_at_trash: git rev-parse --show-prefix is ''':
echo "$expect" >expect &&
git rev-parse --show-prefix >actual &&
test_cmp expect actual
ok 5 - ceil_at_trash: git rev-parse --show-prefix is ''
expecting success of 1504.6 'ceil_at_trash_slash: git rev-parse --show-prefix is ''':
echo "$expect" >expect &&
git rev-parse --show-prefix >actual &&
test_cmp expect actual
ok 6 - ceil_at_trash_slash: git rev-parse --show-prefix is ''
expecting success of 1504.7 'ceil_at_sub: git rev-parse --show-prefix is ''':
echo "$expect" >expect &&
git rev-parse --show-prefix >actual &&
test_cmp expect actual
ok 7 - ceil_at_sub: git rev-parse --show-prefix is ''
expecting success of 1504.8 'ceil_at_sub_slash: git rev-parse --show-prefix is ''':
echo "$expect" >expect &&
git rev-parse --show-prefix >actual &&
test_cmp expect actual
ok 8 - ceil_at_sub_slash: git rev-parse --show-prefix is ''
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
expecting success of 1504.9 'subdir_no_ceil: git rev-parse --show-prefix is 'sub/dir/'':
echo "$expect" >expect &&
git rev-parse --show-prefix >actual &&
test_cmp expect actual
ok 9 - subdir_no_ceil: git rev-parse --show-prefix is 'sub/dir/'
expecting success of 1504.10 'subdir_ceil_empty: git rev-parse --show-prefix is 'sub/dir/'':
echo "$expect" >expect &&
git rev-parse --show-prefix >actual &&
test_cmp expect actual
ok 10 - subdir_ceil_empty: git rev-parse --show-prefix is 'sub/dir/'
expecting success of 1504.11 'subdir_ceil_at_trash: prefix':
test_expect_code 128 git rev-parse --show-prefix
fatal: not a git repository (or any of the parent directories): .git
ok 11 - subdir_ceil_at_trash: prefix
expecting success of 1504.12 'subdir_ceil_at_trash_slash: prefix':
test_expect_code 128 git rev-parse --show-prefix
fatal: not a git repository (or any of the parent directories): .git
ok 12 - subdir_ceil_at_trash_slash: prefix
expecting success of 1504.13 'subdir_ceil_at_sub: prefix':
test_expect_code 128 git rev-parse --show-prefix
fatal: not a git repository (or any of the parent directories): .git
ok 13 - subdir_ceil_at_sub: prefix
expecting success of 1504.14 'subdir_ceil_at_sub_slash: prefix':
test_expect_code 128 git rev-parse --show-prefix
fatal: not a git repository (or any of the parent directories): .git
ok 14 - subdir_ceil_at_sub_slash: prefix
expecting success of 1504.15 'subdir_ceil_at_top: prefix':
test_expect_code 128 git rev-parse --show-prefix
fatal: not a git repository (or any of the parent directories): .git
ok 15 - subdir_ceil_at_top: prefix
expecting success of 1504.16 'subdir_ceil_at_top_slash: prefix':
test_expect_code 128 git rev-parse --show-prefix
fatal: not a git repository (or any of the parent directories): .git
ok 16 - subdir_ceil_at_top_slash: prefix
expecting success of 1504.17 'subdir_ceil_at_top_no_resolve: git rev-parse --show-prefix is 'sub/dir/'':
echo "$expect" >expect &&
git rev-parse --show-prefix >actual &&
test_cmp expect actual
ok 17 - subdir_ceil_at_top_no_resolve: git rev-parse --show-prefix is 'sub/dir/'
expecting success of 1504.18 'subdir_ceil_at_top_slash_no_resolve: git rev-parse --show-prefix is 'sub/dir/'':
echo "$expect" >expect &&
git rev-parse --show-prefix >actual &&
test_cmp expect actual
ok 18 - subdir_ceil_at_top_slash_no_resolve: git rev-parse --show-prefix is 'sub/dir/'
expecting success of 1504.19 'subdir_ceil_at_subdir: git rev-parse --show-prefix is 'sub/dir/'':
echo "$expect" >expect &&
git rev-parse --show-prefix >actual &&
test_cmp expect actual
ok 19 - subdir_ceil_at_subdir: git rev-parse --show-prefix is 'sub/dir/'
expecting success of 1504.20 'subdir_ceil_at_subdir_slash: git rev-parse --show-prefix is 'sub/dir/'':
echo "$expect" >expect &&
git rev-parse --show-prefix >actual &&
test_cmp expect actual
ok 20 - subdir_ceil_at_subdir_slash: git rev-parse --show-prefix is 'sub/dir/'
expecting success of 1504.21 'subdir_ceil_at_su: git rev-parse --show-prefix is 'sub/dir/'':
echo "$expect" >expect &&
git rev-parse --show-prefix >actual &&
test_cmp expect actual
ok 21 - subdir_ceil_at_su: git rev-parse --show-prefix is 'sub/dir/'
expecting success of 1504.22 'subdir_ceil_at_su_slash: git rev-parse --show-prefix is 'sub/dir/'':
echo "$expect" >expect &&
git rev-parse --show-prefix >actual &&
test_cmp expect actual
ok 22 - subdir_ceil_at_su_slash: git rev-parse --show-prefix is 'sub/dir/'
expecting success of 1504.23 'subdir_ceil_at_sub_di: git rev-parse --show-prefix is 'sub/dir/'':
echo "$expect" >expect &&
git rev-parse --show-prefix >actual &&
test_cmp expect actual
ok 23 - subdir_ceil_at_sub_di: git rev-parse --show-prefix is 'sub/dir/'
expecting success of 1504.24 'subdir_ceil_at_sub_di_slash: git rev-parse --show-prefix is 'sub/dir/'':
echo "$expect" >expect &&
git rev-parse --show-prefix >actual &&
test_cmp expect actual
ok 24 - subdir_ceil_at_sub_di_slash: git rev-parse --show-prefix is 'sub/dir/'
expecting success of 1504.25 'subdir_ceil_at_subdi: git rev-parse --show-prefix is 'sub/dir/'':
echo "$expect" >expect &&
git rev-parse --show-prefix >actual &&
test_cmp expect actual
ok 25 - subdir_ceil_at_subdi: git rev-parse --show-prefix is 'sub/dir/'
expecting success of 1504.26 'subdir_ceil_at_subdi_slash: git rev-parse --show-prefix is 'sub/dir/'':
echo "$expect" >expect &&
git rev-parse --show-prefix >actual &&
test_cmp expect actual
ok 26 - subdir_ceil_at_subdi_slash: git rev-parse --show-prefix is 'sub/dir/'
expecting success of 1504.27 'second_of_two: prefix':
test_expect_code 128 git rev-parse --show-prefix
fatal: not a git repository (or any of the parent directories): .git
ok 27 - second_of_two: prefix
expecting success of 1504.28 'first_of_two: prefix':
test_expect_code 128 git rev-parse --show-prefix
fatal: not a git repository (or any of the parent directories): .git
ok 28 - first_of_two: prefix
expecting success of 1504.29 'second_of_three: prefix':
test_expect_code 128 git rev-parse --show-prefix
fatal: not a git repository (or any of the parent directories): .git
ok 29 - second_of_three: prefix
expecting success of 1504.30 'git_dir_specified: git rev-parse --show-prefix is ''':
echo "$expect" >expect &&
git rev-parse --show-prefix >actual &&
test_cmp expect actual
ok 30 - git_dir_specified: git rev-parse --show-prefix is ''
expecting success of 1504.31 'sd_no_ceil: git rev-parse --show-prefix is 's/d/'':
echo "$expect" >expect &&
git rev-parse --show-prefix >actual &&
test_cmp expect actual
ok 31 - sd_no_ceil: git rev-parse --show-prefix is 's/d/'
expecting success of 1504.32 'sd_ceil_empty: git rev-parse --show-prefix is 's/d/'':
echo "$expect" >expect &&
git rev-parse --show-prefix >actual &&
test_cmp expect actual
ok 32 - sd_ceil_empty: git rev-parse --show-prefix is 's/d/'
expecting success of 1504.33 'sd_ceil_at_trash: prefix':
test_expect_code 128 git rev-parse --show-prefix
fatal: not a git repository (or any of the parent directories): .git
ok 33 - sd_ceil_at_trash: prefix
expecting success of 1504.34 'sd_ceil_at_trash_slash: prefix':
test_expect_code 128 git rev-parse --show-prefix
fatal: not a git repository (or any of the parent directories): .git
ok 34 - sd_ceil_at_trash_slash: prefix
expecting success of 1504.35 'sd_ceil_at_s: prefix':
test_expect_code 128 git rev-parse --show-prefix
fatal: not a git repository (or any of the parent directories): .git
ok 35 - sd_ceil_at_s: prefix
expecting success of 1504.36 'sd_ceil_at_s_slash: prefix':
test_expect_code 128 git rev-parse --show-prefix
fatal: not a git repository (or any of the parent directories): .git
ok 36 - sd_ceil_at_s_slash: prefix
expecting success of 1504.37 'sd_ceil_at_sd: git rev-parse --show-prefix is 's/d/'':
echo "$expect" >expect &&
git rev-parse --show-prefix >actual &&
test_cmp expect actual
ok 37 - sd_ceil_at_sd: git rev-parse --show-prefix is 's/d/'
expecting success of 1504.38 'sd_ceil_at_sd_slash: git rev-parse --show-prefix is 's/d/'':
echo "$expect" >expect &&
git rev-parse --show-prefix >actual &&
test_cmp expect actual
ok 38 - sd_ceil_at_sd_slash: git rev-parse --show-prefix is 's/d/'
expecting success of 1504.39 'sd_ceil_at_su: git rev-parse --show-prefix is 's/d/'':
echo "$expect" >expect &&
git rev-parse --show-prefix >actual &&
test_cmp expect actual
ok 39 - sd_ceil_at_su: git rev-parse --show-prefix is 's/d/'
expecting success of 1504.40 'sd_ceil_at_su_slash: git rev-parse --show-prefix is 's/d/'':
echo "$expect" >expect &&
git rev-parse --show-prefix >actual &&
test_cmp expect actual
ok 40 - sd_ceil_at_su_slash: git rev-parse --show-prefix is 's/d/'
expecting success of 1504.41 'sd_ceil_at_s_di: git rev-parse --show-prefix is 's/d/'':
echo "$expect" >expect &&
git rev-parse --show-prefix >actual &&
test_cmp expect actual
ok 41 - sd_ceil_at_s_di: git rev-parse --show-prefix is 's/d/'
expecting success of 1504.42 'sd_ceil_at_s_di_slash: git rev-parse --show-prefix is 's/d/'':
echo "$expect" >expect &&
git rev-parse --show-prefix >actual &&
test_cmp expect actual
ok 42 - sd_ceil_at_s_di_slash: git rev-parse --show-prefix is 's/d/'
expecting success of 1504.43 'sd_ceil_at_sdi: git rev-parse --show-prefix is 's/d/'':
echo "$expect" >expect &&
git rev-parse --show-prefix >actual &&
test_cmp expect actual
ok 43 - sd_ceil_at_sdi: git rev-parse --show-prefix is 's/d/'
expecting success of 1504.44 'sd_ceil_at_sdi_slash: git rev-parse --show-prefix is 's/d/'':
echo "$expect" >expect &&
git rev-parse --show-prefix >actual &&
test_cmp expect actual
ok 44 - sd_ceil_at_sdi_slash: git rev-parse --show-prefix is 's/d/'
# passed all 44 test(s)
1..44
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1506-rev-parse-diagnosis.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1506-rev-parse-diagnosis/.git/
expecting success of 1506.1 'set up basic repo':
echo one > file.txt &&
mkdir subdir &&
echo two > subdir/file.txt &&
echo three > subdir/file2.txt &&
git add . &&
git commit -m init &&
echo four > index-only.txt &&
git add index-only.txt &&
echo five > disk-only.txt
[main (root-commit) 724c7fc] init
Author: A U Thor <author@example.com>
3 files changed, 3 insertions(+)
create mode 100644 file.txt
create mode 100644 subdir/file.txt
create mode 100644 subdir/file2.txt
ok 1 - set up basic repo
expecting success of 1506.2 'correct file objects':
HASH_file=$(git rev-parse HEAD:file.txt) &&
git rev-parse HEAD:subdir/file.txt &&
git rev-parse :index-only.txt &&
(cd subdir &&
git rev-parse HEAD:subdir/file2.txt &&
test $HASH_file = $(git rev-parse HEAD:file.txt) &&
test $HASH_file = $(git rev-parse :file.txt) &&
test $HASH_file = $(git rev-parse :0:file.txt) )
f719efd430d52bcfc8566a43b2eb655688d38871
8510665149157c2bc901848c3e0b746954e9cbd9
2bdf67abb163a4ffb2d7f3f0880c9fe5068ce782
ok 2 - correct file objects
expecting success of 1506.3 'correct relative file objects (0)':
git rev-parse :file.txt >expected &&
git rev-parse :./file.txt >result &&
test_cmp expected result &&
git rev-parse :0:./file.txt >result &&
test_cmp expected result
ok 3 - correct relative file objects (0)
expecting success of 1506.4 'correct relative file objects (1)':
git rev-parse HEAD:file.txt >expected &&
git rev-parse HEAD:./file.txt >result &&
test_cmp expected result
ok 4 - correct relative file objects (1)
expecting success of 1506.5 'correct relative file objects (2)':
(
cd subdir &&
git rev-parse HEAD:../file.txt >result &&
test_cmp ../expected result
)
ok 5 - correct relative file objects (2)
expecting success of 1506.6 'correct relative file objects (3)':
(
cd subdir &&
git rev-parse HEAD:../subdir/../file.txt >result &&
test_cmp ../expected result
)
ok 6 - correct relative file objects (3)
expecting success of 1506.7 'correct relative file objects (4)':
git rev-parse HEAD:subdir/file.txt >expected &&
(
cd subdir &&
git rev-parse HEAD:./file.txt >result &&
test_cmp ../expected result
)
ok 7 - correct relative file objects (4)
expecting success of 1506.8 'correct relative file objects (5)':
git rev-parse :subdir/file.txt >expected &&
(
cd subdir &&
git rev-parse :./file.txt >result &&
test_cmp ../expected result &&
git rev-parse :0:./file.txt >result &&
test_cmp ../expected result
)
ok 8 - correct relative file objects (5)
expecting success of 1506.9 'correct relative file objects (6)':
git rev-parse :file.txt >expected &&
(
cd subdir &&
git rev-parse :../file.txt >result &&
test_cmp ../expected result &&
git rev-parse :0:../file.txt >result &&
test_cmp ../expected result
)
ok 9 - correct relative file objects (6)
expecting success of 1506.10 'incorrect revision id':
test_must_fail git rev-parse foobar:file.txt 2>error &&
test_i18ngrep "invalid object name .foobar." error &&
test_must_fail git rev-parse foobar 2>error &&
test_i18ngrep "unknown revision or path not in the working tree." error
foobar:file.txt
fatal: invalid object name 'foobar'.
foobar
fatal: ambiguous argument 'foobar': unknown revision or path not in the working tree.
ok 10 - incorrect revision id
expecting success of 1506.11 'incorrect file in sha1:path':
test_must_fail git rev-parse HEAD:nothing.txt 2>error &&
test_i18ngrep "path .nothing.txt. does not exist in .HEAD." error &&
test_must_fail git rev-parse HEAD:index-only.txt 2>error &&
test_i18ngrep "path .index-only.txt. exists on disk, but not in .HEAD." error &&
(cd subdir &&
test_must_fail git rev-parse HEAD:file2.txt 2>error &&
test_did_you_mean HEAD subdir/ file2.txt exists )
HEAD:nothing.txt
fatal: path 'nothing.txt' does not exist in 'HEAD'
HEAD:index-only.txt
fatal: path 'index-only.txt' exists on disk, but not in 'HEAD'
HEAD:file2.txt
ok 11 - incorrect file in sha1:path
expecting success of 1506.12 'incorrect file in :path and :N:path':
test_must_fail git rev-parse :nothing.txt 2>error &&
test_i18ngrep "path .nothing.txt. does not exist (neither on disk nor in the index)" error &&
test_must_fail git rev-parse :1:nothing.txt 2>error &&
test_i18ngrep "path .nothing.txt. does not exist (neither on disk nor in the index)" error &&
test_must_fail git rev-parse :1:file.txt 2>error &&
test_did_you_mean ":0" "" file.txt "is in the index" "at stage 1" &&
(cd subdir &&
test_must_fail git rev-parse :1:file.txt 2>error &&
test_did_you_mean ":0" "" file.txt "is in the index" "at stage 1" &&
test_must_fail git rev-parse :file2.txt 2>error &&
test_did_you_mean ":0" subdir/ file2.txt "is in the index" &&
test_must_fail git rev-parse :2:file2.txt 2>error &&
test_did_you_mean :0 subdir/ file2.txt "is in the index") &&
test_must_fail git rev-parse :disk-only.txt 2>error &&
test_i18ngrep "path .disk-only.txt. exists on disk, but not in the index" error
:nothing.txt
fatal: path 'nothing.txt' does not exist (neither on disk nor in the index)
:1:nothing.txt
fatal: path 'nothing.txt' does not exist (neither on disk nor in the index)
:1:file.txt
:1:file.txt
:file2.txt
:2:file2.txt
:disk-only.txt
fatal: path 'disk-only.txt' exists on disk, but not in the index
ok 12 - incorrect file in :path and :N:path
expecting success of 1506.13 'invalid @{n} reference':
test_must_fail git rev-parse main@{99999} >output 2>error &&
test_must_be_empty output &&
test_i18ngrep "log for [^ ]* only has [0-9][0-9]* entries" error &&
test_must_fail git rev-parse --verify main@{99999} >output 2>error &&
test_must_be_empty output &&
test_i18ngrep "log for [^ ]* only has [0-9][0-9]* entries" error
fatal: log for 'main' only has 1 entries
fatal: log for 'main' only has 1 entries
ok 13 - invalid @{n} reference
expecting success of 1506.14 'relative path not found':
(
cd subdir &&
test_must_fail git rev-parse HEAD:./nonexistent.txt 2>error &&
test_i18ngrep subdir/nonexistent.txt error
)
HEAD:./nonexistent.txt
fatal: path 'subdir/nonexistent.txt' does not exist in 'HEAD'
ok 14 - relative path not found
expecting success of 1506.15 'relative path outside worktree':
test_must_fail git rev-parse HEAD:../file.txt >output 2>error &&
test_must_be_empty output &&
test_i18ngrep "outside repository" error
fatal: '../file.txt' is outside repository at '/<<PKGBUILDDIR>>/t/trash directory.t1506-rev-parse-diagnosis'
ok 15 - relative path outside worktree
expecting success of 1506.16 'relative path when cwd is outside worktree':
test_must_fail git --git-dir=.git --work-tree=subdir rev-parse HEAD:./file.txt >output 2>error &&
test_must_be_empty output &&
test_i18ngrep "relative path syntax can.t be used outside working tree" error
fatal: relative path syntax can't be used outside working tree
ok 16 - relative path when cwd is outside worktree
expecting success of 1506.17 '<commit>:file correctly diagnosed after a pathname':
test_must_fail git rev-parse file.txt HEAD:file.txt 1>actual 2>error &&
test_i18ngrep ! "exists on disk" error &&
test_i18ngrep "no such path in the working tree" error &&
cat >expect <<-\EOF &&
file.txt
HEAD:file.txt
EOF
test_cmp expect actual
fatal: HEAD:file.txt: no such path in the working tree.
ok 17 - <commit>:file correctly diagnosed after a pathname
expecting success of 1506.18 'dotdot is not an empty set':
( H=$(git rev-parse HEAD) && echo $H && echo ^$H ) >expect &&
git rev-parse HEAD.. >actual &&
test_cmp expect actual &&
git rev-parse ..HEAD >actual &&
test_cmp expect actual &&
echo .. >expect &&
git rev-parse .. >actual &&
test_cmp expect actual
ok 18 - dotdot is not an empty set
expecting success of 1506.19 'dotdot does not peel endpoints':
git tag -a -m "annote" annotated HEAD &&
A=$(git rev-parse annotated) &&
H=$(git rev-parse annotated^0) &&
{
echo $A && echo ^$A
} >expect-with-two-dots &&
{
echo $A && echo $A && echo ^$H
} >expect-with-merge-base &&
git rev-parse annotated..annotated >actual-with-two-dots &&
test_cmp expect-with-two-dots actual-with-two-dots &&
git rev-parse annotated...annotated >actual-with-merge-base &&
test_cmp expect-with-merge-base actual-with-merge-base
ok 19 - dotdot does not peel endpoints
expecting success of 1506.20 'arg before dashdash must be a revision (missing)':
test_must_fail git rev-parse foobar -- 2>stderr &&
test_i18ngrep "bad revision" stderr
fatal: bad revision 'foobar'
ok 20 - arg before dashdash must be a revision (missing)
expecting success of 1506.21 'arg before dashdash must be a revision (file)':
>foobar &&
test_must_fail git rev-parse foobar -- 2>stderr &&
test_i18ngrep "bad revision" stderr
fatal: bad revision 'foobar'
ok 21 - arg before dashdash must be a revision (file)
expecting success of 1506.22 'arg before dashdash must be a revision (ambiguous)':
>foobar &&
git update-ref refs/heads/foobar HEAD &&
{
# we do not want to use rev-parse here, because
# we are testing it
git show-ref -s refs/heads/foobar &&
printf "%s\n" --
} >expect &&
git rev-parse foobar -- >actual &&
test_cmp expect actual
ok 22 - arg before dashdash must be a revision (ambiguous)
expecting success of 1506.23 'reject Nth parent if N is too high':
test_must_fail git rev-parse HEAD^100000000000000000000000000000000
fatal: ambiguous argument 'HEAD^100000000000000000000000000000000': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
HEAD^100000000000000000000000000000000
ok 23 - reject Nth parent if N is too high
expecting success of 1506.24 'reject Nth ancestor if N is too high':
test_must_fail git rev-parse HEAD~100000000000000000000000000000000
fatal: ambiguous argument 'HEAD~100000000000000000000000000000000': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
HEAD~100000000000000000000000000000000
ok 24 - reject Nth ancestor if N is too high
expecting success of 1506.25 'pathspecs with wildcards are not ambiguous':
echo "*.c" >expect &&
git rev-parse "*.c" >actual &&
test_cmp expect actual
ok 25 - pathspecs with wildcards are not ambiguous
expecting success of 1506.26 'backslash does not trigger wildcard rule':
test_must_fail git rev-parse "foo\\bar"
fatal: ambiguous argument 'foo\bar': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
foo\bar
ok 26 - backslash does not trigger wildcard rule
expecting success of 1506.27 'escaped char does not trigger wildcard rule':
test_must_fail git rev-parse "foo\\*bar"
fatal: ambiguous argument 'foo\*bar': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
foo\*bar
ok 27 - escaped char does not trigger wildcard rule
expecting success of 1506.28 'arg after dashdash not interpreted as option':
cat >expect <<-\EOF &&
--
--local-env-vars
EOF
git rev-parse -- --local-env-vars >actual &&
test_cmp expect actual
ok 28 - arg after dashdash not interpreted as option
expecting success of 1506.29 'arg after end-of-options not interpreted as option':
test_must_fail git rev-parse --end-of-options --not-real -- 2>err &&
test_i18ngrep bad.revision.*--not-real err
--end-of-options
fatal: bad revision '--not-real'
ok 29 - arg after end-of-options not interpreted as option
expecting success of 1506.30 'end-of-options still allows --':
cat >expect <<-EOF &&
--end-of-options
$(git rev-parse --verify HEAD)
--
path
EOF
git rev-parse --end-of-options HEAD -- path >actual &&
test_cmp expect actual
ok 30 - end-of-options still allows --
# passed all 30 test(s)
1..30
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1507-rev-parse-upstream.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1507-rev-parse-upstream/.git/
expecting success of 1507.1 'setup':
test_commit 1 &&
git checkout -b side &&
test_commit 2 &&
git checkout main &&
git clone . clone &&
test_commit 3 &&
(cd clone &&
test_commit 4 &&
git branch --track my-side origin/side &&
git branch --track local-main main &&
git branch --track fun@ny origin/side &&
git branch --track @funny origin/side &&
git branch --track funny@ origin/side &&
git remote add -t main main-only .. &&
git fetch main-only &&
git branch bad-upstream &&
git config branch.bad-upstream.remote main-only &&
git config branch.bad-upstream.merge refs/heads/side
)
[main (root-commit) d0dcf97] 1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 1.t
Switched to a new branch 'side'
[side 82335b2] 2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 2.t
Switched to branch 'main'
Cloning into 'clone'...
done.
[main 8f489d0] 3
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 3.t
[main 6efda21] 4
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 4.t
branch 'my-side' set up to track 'origin/side'.
branch 'local-main' set up to track 'main'.
branch 'fun@ny' set up to track 'origin/side'.
branch '@funny' set up to track 'origin/side'.
branch 'funny@' set up to track 'origin/side'.
From ..
* [new branch] main -> main-only/main
* [new tag] 3 -> 3
ok 1 - setup
expecting success of 1507.2 '@{upstream} resolves to correct full name':
echo refs/remotes/origin/main >expect &&
git -C clone rev-parse --symbolic-full-name @{upstream} >actual &&
test_cmp expect actual &&
git -C clone rev-parse --symbolic-full-name @{UPSTREAM} >actual &&
test_cmp expect actual &&
git -C clone rev-parse --symbolic-full-name @{UpSTReam} >actual &&
test_cmp expect actual
ok 2 - @{upstream} resolves to correct full name
expecting success of 1507.3 '@{u} resolves to correct full name':
echo refs/remotes/origin/main >expect &&
git -C clone rev-parse --symbolic-full-name @{u} >actual &&
test_cmp expect actual &&
git -C clone rev-parse --symbolic-full-name @{U} >actual &&
test_cmp expect actual
ok 3 - @{u} resolves to correct full name
expecting success of 1507.4 'my-side@{upstream} resolves to correct full name':
echo refs/remotes/origin/side >expect &&
git -C clone rev-parse --symbolic-full-name my-side@{u} >actual &&
test_cmp expect actual
ok 4 - my-side@{upstream} resolves to correct full name
expecting success of 1507.5 'upstream of branch with @ in middle':
git -C clone rev-parse --symbolic-full-name fun@ny@{u} >actual &&
echo refs/remotes/origin/side >expect &&
test_cmp expect actual &&
git -C clone rev-parse --symbolic-full-name fun@ny@{U} >actual &&
test_cmp expect actual
ok 5 - upstream of branch with @ in middle
expecting success of 1507.6 'upstream of branch with @ at start':
git -C clone rev-parse --symbolic-full-name @funny@{u} >actual &&
echo refs/remotes/origin/side >expect &&
test_cmp expect actual
ok 6 - upstream of branch with @ at start
expecting success of 1507.7 'upstream of branch with @ at end':
git -C clone rev-parse --symbolic-full-name funny@@{u} >actual &&
echo refs/remotes/origin/side >expect &&
test_cmp expect actual
ok 7 - upstream of branch with @ at end
expecting success of 1507.8 'refs/heads/my-side@{upstream} does not resolve to my-side{upstream}':
test_must_fail git -C clone rev-parse --symbolic-full-name refs/heads/my-side@{upstream}
fatal: no such branch: 'refs/heads/my-side'
ok 8 - refs/heads/my-side@{upstream} does not resolve to my-side{upstream}
expecting success of 1507.9 'my-side@{u} resolves to correct commit':
git checkout side &&
test_commit 5 &&
(cd clone && git fetch) &&
echo 2 >expect &&
commit_subject my-side >actual &&
test_cmp expect actual &&
echo 5 >expect &&
commit_subject my-side@{u} >actual &&
test_cmp expect actual
Switched to branch 'side'
[side e3f9627] 5
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 5.t
From /<<PKGBUILDDIR>>/t/trash directory.t1507-rev-parse-upstream/.
d0dcf97..8f489d0 main -> origin/main
82335b2..e3f9627 side -> origin/side
* [new tag] 5 -> 5
ok 9 - my-side@{u} resolves to correct commit
expecting success of 1507.10 'not-tracking@{u} fails':
test_must_fail git -C clone rev-parse --symbolic-full-name non-tracking@{u} &&
(cd clone && git checkout --no-track -b non-tracking) &&
test_must_fail git -C clone rev-parse --symbolic-full-name non-tracking@{u}
fatal: no such branch: 'non-tracking'
Switched to a new branch 'non-tracking'
fatal: no upstream configured for branch 'non-tracking'
ok 10 - not-tracking@{u} fails
expecting success of 1507.11 '<branch>@{u}@{1} resolves correctly':
test_commit 6 &&
(cd clone && git fetch) &&
echo 5 >expect &&
commit_subject my-side@{u}@{1} >actual &&
test_cmp expect actual &&
commit_subject my-side@{U}@{1} >actual &&
test_cmp expect actual
[side 8bf5882] 6
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 6.t
From /<<PKGBUILDDIR>>/t/trash directory.t1507-rev-parse-upstream/.
e3f9627..8bf5882 side -> origin/side
* [new tag] 6 -> 6
ok 11 - <branch>@{u}@{1} resolves correctly
expecting success of 1507.12 '@{u} without specifying branch fails on a detached HEAD':
git checkout HEAD^0 &&
test_must_fail git rev-parse @{u} &&
test_must_fail git rev-parse @{U}
Note: switching to 'HEAD^0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 8bf5882 6
fatal: HEAD does not point to a branch
fatal: HEAD does not point to a branch
ok 12 - @{u} without specifying branch fails on a detached HEAD
expecting success of 1507.13 'checkout -b new my-side@{u} forks from the same':
(
cd clone &&
git checkout -b new my-side@{u} &&
git rev-parse --symbolic-full-name my-side@{u} >expect &&
git rev-parse --symbolic-full-name new@{u} >actual &&
test_cmp expect actual
)
Switched to a new branch 'new'
branch 'new' set up to track 'origin/side'.
ok 13 - checkout -b new my-side@{u} forks from the same
expecting success of 1507.14 'merge my-side@{u} records the correct name':
(
cd clone &&
git checkout main &&
test_might_fail git branch -D new &&
git branch -t new my-side@{u} &&
git merge -s ours new@{u} &&
git show -s --pretty=tformat:%s >actual &&
echo "Merge remote-tracking branch ${SQ}origin/side${SQ}" >expect &&
test_cmp expect actual
)
Switched to branch 'main'
Your branch and 'origin/main' have diverged,
and have 1 and 1 different commits each, respectively.
(use "git pull" if you want to integrate the remote branch with yours)
Deleted branch new (was 8bf5882).
branch 'new' set up to track 'origin/side'.
Merge made by the 'ours' strategy.
ok 14 - merge my-side@{u} records the correct name
expecting success of 1507.15 'branch -d other@{u}':
git checkout -t -b other main &&
git branch -d @{u} &&
git for-each-ref refs/heads/main >actual &&
test_must_be_empty actual
Previous HEAD position was 8bf5882 6
Switched to a new branch 'other'
branch 'other' set up to track 'main'.
Deleted branch main (was 8f489d0).
ok 15 - branch -d other@{u}
expecting success of 1507.16 'checkout other@{u}':
git branch -f main HEAD &&
git checkout -t -b another main &&
git checkout @{u} &&
git symbolic-ref HEAD >actual &&
echo refs/heads/main >expect &&
test_cmp expect actual
Switched to a new branch 'another'
branch 'another' set up to track 'main'.
Switched to branch 'main'
ok 16 - checkout other@{u}
expecting success of 1507.17 'branch@{u} works when tracking a local branch':
echo refs/heads/main >expect &&
git -C clone rev-parse --symbolic-full-name local-main@{u} >actual &&
test_cmp expect actual
ok 17 - branch@{u} works when tracking a local branch
expecting success of 1507.18 'branch@{u} error message when no upstream':
cat >expect <<-EOF &&
fatal: no upstream configured for branch ${SQ}non-tracking${SQ}
EOF
error_message non-tracking@{u} &&
test_cmp expect error
ok 18 - branch@{u} error message when no upstream
expecting success of 1507.19 '@{u} error message when no upstream':
cat >expect <<-EOF &&
fatal: no upstream configured for branch ${SQ}main${SQ}
EOF
test_must_fail git rev-parse --verify @{u} 2>actual &&
test_cmp expect actual
ok 19 - @{u} error message when no upstream
expecting success of 1507.20 '@{u} silent error when no upstream':
test_must_fail git rev-parse --verify --quiet @{u} 2>actual &&
test_must_be_empty actual
ok 20 - @{u} silent error when no upstream
expecting success of 1507.21 'branch@{u} error message with misspelt branch':
cat >expect <<-EOF &&
fatal: no such branch: ${SQ}no-such-branch${SQ}
EOF
error_message no-such-branch@{u} &&
test_cmp expect error
ok 21 - branch@{u} error message with misspelt branch
expecting success of 1507.22 '@{u} error message when not on a branch':
cat >expect <<-EOF &&
fatal: HEAD does not point to a branch
EOF
git checkout HEAD^0 &&
test_must_fail git rev-parse --verify @{u} 2>actual &&
test_cmp expect actual
Note: switching to 'HEAD^0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 8f489d0 3
ok 22 - @{u} error message when not on a branch
expecting success of 1507.23 'branch@{u} error message if upstream branch not fetched':
cat >expect <<-EOF &&
fatal: upstream branch ${SQ}refs/heads/side${SQ} not stored as a remote-tracking branch
EOF
error_message bad-upstream@{u} &&
test_cmp expect error
ok 23 - branch@{u} error message if upstream branch not fetched
expecting success of 1507.24 'pull works when tracking a local branch':
(
cd clone &&
git checkout local-main &&
git pull
)
Switched to branch 'local-main'
Your branch is behind 'main' by 4 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
From .
* branch main -> FETCH_HEAD
Updating 6efda21..ac35135
Fast-forward
ok 24 - pull works when tracking a local branch
expecting success of 1507.25 '@{u} works when tracking a local branch':
echo refs/heads/main >expect &&
git -C clone rev-parse --symbolic-full-name @{u} >actual &&
test_cmp expect actual
ok 25 - @{u} works when tracking a local branch
expecting success of 1507.26 'log -g other@{u}':
commit=$(git rev-parse HEAD) &&
cat >expect <<-EOF &&
commit $commit
Reflog: main@{0} (C O Mitter <committer@example.com>)
Reflog message: branch: Created from HEAD
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
3
EOF
git log -1 -g other@{u} >actual &&
test_cmp expect actual
ok 26 - log -g other@{u}
expecting success of 1507.27 'log -g other@{u}@{now}':
commit=$(git rev-parse HEAD) &&
cat >expect <<-EOF &&
commit $commit
Reflog: main@{Thu Apr 7 15:17:13 2005 -0700} (C O Mitter <committer@example.com>)
Reflog message: branch: Created from HEAD
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
3
EOF
git log -1 -g other@{u}@{now} >actual &&
test_cmp expect actual
ok 27 - log -g other@{u}@{now}
expecting success of 1507.28 '@{reflog}-parsing does not look beyond colon':
echo content >@{yesterday} &&
git add @{yesterday} &&
git commit -m "funny reflog file" &&
git hash-object @{yesterday} >expect &&
git rev-parse HEAD:@{yesterday} >actual &&
test_cmp expect actual
[detached HEAD eae0df2] funny reflog file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 @{yesterday}
ok 28 - @{reflog}-parsing does not look beyond colon
expecting success of 1507.29 '@{upstream}-parsing does not look beyond colon':
echo content >@{upstream} &&
git add @{upstream} &&
git commit -m "funny upstream file" &&
git hash-object @{upstream} >expect &&
git rev-parse HEAD:@{upstream} >actual &&
test_cmp expect actual
[detached HEAD c358789] funny upstream file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 @{upstream}
ok 29 - @{upstream}-parsing does not look beyond colon
# passed all 29 test(s)
1..29
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1509-root-work-tree.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1509-root-work-tree/.git/
1..0 # SKIP Test requiring writable / skipped. Read this test if you want to run it
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1508-at-combinations.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1508-at-combinations/.git/
expecting success of 1508.1 'setup':
test_commit main-one &&
test_commit main-two &&
git checkout -b upstream-branch &&
test_commit upstream-one &&
test_commit upstream-two &&
if test_have_prereq !MINGW
then
git checkout -b @/at-test
fi &&
git checkout -b @@/at-test &&
git checkout -b @at-test &&
git checkout -b old-branch &&
test_commit old-one &&
test_commit old-two &&
git checkout -b new-branch &&
test_commit new-one &&
test_commit new-two &&
git branch -u main old-branch &&
git branch -u upstream-branch new-branch
[main (root-commit) 1b49f74] main-one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 main-one.t
[main 6d5691d] main-two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 main-two.t
Switched to a new branch 'upstream-branch'
[upstream-branch 6d93ee3] upstream-one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 upstream-one.t
[upstream-branch 2bb3c5b] upstream-two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 upstream-two.t
Switched to a new branch '@/at-test'
Switched to a new branch '@@/at-test'
Switched to a new branch '@at-test'
Switched to a new branch 'old-branch'
[old-branch a935743] old-one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 old-one.t
[old-branch 2c577ae] old-two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 old-two.t
Switched to a new branch 'new-branch'
[new-branch d3599bb] new-one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 new-one.t
[new-branch 8a88a27] new-two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 new-two.t
branch 'old-branch' set up to track 'main'.
branch 'new-branch' set up to track 'upstream-branch'.
ok 1 - setup
expecting success of 1508.2 'HEAD = refs/heads/new-branch':
echo 'refs/heads/new-branch' >expect &&
if test 'ref' = 'commit'
then
git log -1 --format=%s 'HEAD' >actual
elif test 'ref' = 'ref'
then
git rev-parse --symbolic-full-name 'HEAD' >actual
else
git cat-file -p 'HEAD' >actual
fi &&
test_cmp expect actual
ok 2 - HEAD = refs/heads/new-branch
expecting success of 1508.3 '@{1} = new-one':
echo 'new-one' >expect &&
if test 'commit' = 'commit'
then
git log -1 --format=%s '@{1}' >actual
elif test 'commit' = 'ref'
then
git rev-parse --symbolic-full-name '@{1}' >actual
else
git cat-file -p '@{1}' >actual
fi &&
test_cmp expect actual
ok 3 - @{1} = new-one
expecting success of 1508.4 'HEAD@{1} = new-one':
echo 'new-one' >expect &&
if test 'commit' = 'commit'
then
git log -1 --format=%s 'HEAD@{1}' >actual
elif test 'commit' = 'ref'
then
git rev-parse --symbolic-full-name 'HEAD@{1}' >actual
else
git cat-file -p 'HEAD@{1}' >actual
fi &&
test_cmp expect actual
ok 4 - HEAD@{1} = new-one
expecting success of 1508.5 '@{now} = new-two':
echo 'new-two' >expect &&
if test 'commit' = 'commit'
then
git log -1 --format=%s '@{now}' >actual
elif test 'commit' = 'ref'
then
git rev-parse --symbolic-full-name '@{now}' >actual
else
git cat-file -p '@{now}' >actual
fi &&
test_cmp expect actual
ok 5 - @{now} = new-two
expecting success of 1508.6 'HEAD@{now} = new-two':
echo 'new-two' >expect &&
if test 'commit' = 'commit'
then
git log -1 --format=%s 'HEAD@{now}' >actual
elif test 'commit' = 'ref'
then
git rev-parse --symbolic-full-name 'HEAD@{now}' >actual
else
git cat-file -p 'HEAD@{now}' >actual
fi &&
test_cmp expect actual
ok 6 - HEAD@{now} = new-two
expecting success of 1508.7 '@{-1} = refs/heads/old-branch':
echo 'refs/heads/old-branch' >expect &&
if test 'ref' = 'commit'
then
git log -1 --format=%s '@{-1}' >actual
elif test 'ref' = 'ref'
then
git rev-parse --symbolic-full-name '@{-1}' >actual
else
git cat-file -p '@{-1}' >actual
fi &&
test_cmp expect actual
ok 7 - @{-1} = refs/heads/old-branch
expecting success of 1508.8 '@{-1}@{0} = old-two':
echo 'old-two' >expect &&
if test 'commit' = 'commit'
then
git log -1 --format=%s '@{-1}@{0}' >actual
elif test 'commit' = 'ref'
then
git rev-parse --symbolic-full-name '@{-1}@{0}' >actual
else
git cat-file -p '@{-1}@{0}' >actual
fi &&
test_cmp expect actual
ok 8 - @{-1}@{0} = old-two
expecting success of 1508.9 '@{-1}@{1} = old-one':
echo 'old-one' >expect &&
if test 'commit' = 'commit'
then
git log -1 --format=%s '@{-1}@{1}' >actual
elif test 'commit' = 'ref'
then
git rev-parse --symbolic-full-name '@{-1}@{1}' >actual
else
git cat-file -p '@{-1}@{1}' >actual
fi &&
test_cmp expect actual
ok 9 - @{-1}@{1} = old-one
expecting success of 1508.10 '@{u} = refs/heads/upstream-branch':
echo 'refs/heads/upstream-branch' >expect &&
if test 'ref' = 'commit'
then
git log -1 --format=%s '@{u}' >actual
elif test 'ref' = 'ref'
then
git rev-parse --symbolic-full-name '@{u}' >actual
else
git cat-file -p '@{u}' >actual
fi &&
test_cmp expect actual
ok 10 - @{u} = refs/heads/upstream-branch
expecting success of 1508.11 'HEAD@{u} = refs/heads/upstream-branch':
echo 'refs/heads/upstream-branch' >expect &&
if test 'ref' = 'commit'
then
git log -1 --format=%s 'HEAD@{u}' >actual
elif test 'ref' = 'ref'
then
git rev-parse --symbolic-full-name 'HEAD@{u}' >actual
else
git cat-file -p 'HEAD@{u}' >actual
fi &&
test_cmp expect actual
ok 11 - HEAD@{u} = refs/heads/upstream-branch
expecting success of 1508.12 '@{u}@{1} = upstream-one':
echo 'upstream-one' >expect &&
if test 'commit' = 'commit'
then
git log -1 --format=%s '@{u}@{1}' >actual
elif test 'commit' = 'ref'
then
git rev-parse --symbolic-full-name '@{u}@{1}' >actual
else
git cat-file -p '@{u}@{1}' >actual
fi &&
test_cmp expect actual
ok 12 - @{u}@{1} = upstream-one
expecting success of 1508.13 '@{-1}@{u} = refs/heads/main':
echo 'refs/heads/main' >expect &&
if test 'ref' = 'commit'
then
git log -1 --format=%s '@{-1}@{u}' >actual
elif test 'ref' = 'ref'
then
git rev-parse --symbolic-full-name '@{-1}@{u}' >actual
else
git cat-file -p '@{-1}@{u}' >actual
fi &&
test_cmp expect actual
ok 13 - @{-1}@{u} = refs/heads/main
expecting success of 1508.14 '@{-1}@{u}@{1} = main-one':
echo 'main-one' >expect &&
if test 'commit' = 'commit'
then
git log -1 --format=%s '@{-1}@{u}@{1}' >actual
elif test 'commit' = 'ref'
then
git rev-parse --symbolic-full-name '@{-1}@{u}@{1}' >actual
else
git cat-file -p '@{-1}@{u}@{1}' >actual
fi &&
test_cmp expect actual
ok 14 - @{-1}@{u}@{1} = main-one
expecting success of 1508.15 '@ = new-two':
echo 'new-two' >expect &&
if test 'commit' = 'commit'
then
git log -1 --format=%s '@' >actual
elif test 'commit' = 'ref'
then
git rev-parse --symbolic-full-name '@' >actual
else
git cat-file -p '@' >actual
fi &&
test_cmp expect actual
ok 15 - @ = new-two
expecting success of 1508.16 '@@{u} = refs/heads/upstream-branch':
echo 'refs/heads/upstream-branch' >expect &&
if test 'ref' = 'commit'
then
git log -1 --format=%s '@@{u}' >actual
elif test 'ref' = 'ref'
then
git rev-parse --symbolic-full-name '@@{u}' >actual
else
git cat-file -p '@@{u}' >actual
fi &&
test_cmp expect actual
ok 16 - @@{u} = refs/heads/upstream-branch
expecting success of 1508.17 '@@/at-test = refs/heads/@@/at-test':
echo 'refs/heads/@@/at-test' >expect &&
if test 'ref' = 'commit'
then
git log -1 --format=%s '@@/at-test' >actual
elif test 'ref' = 'ref'
then
git rev-parse --symbolic-full-name '@@/at-test' >actual
else
git cat-file -p '@@/at-test' >actual
fi &&
test_cmp expect actual
ok 17 - @@/at-test = refs/heads/@@/at-test
expecting success of 1508.18 '@/at-test = refs/heads/@/at-test':
echo 'refs/heads/@/at-test' >expect &&
if test 'ref' = 'commit'
then
git log -1 --format=%s '@/at-test' >actual
elif test 'ref' = 'ref'
then
git rev-parse --symbolic-full-name '@/at-test' >actual
else
git cat-file -p '@/at-test' >actual
fi &&
test_cmp expect actual
ok 18 - @/at-test = refs/heads/@/at-test
expecting success of 1508.19 '@at-test = refs/heads/@at-test':
echo 'refs/heads/@at-test' >expect &&
if test 'ref' = 'commit'
then
git log -1 --format=%s '@at-test' >actual
elif test 'ref' = 'ref'
then
git rev-parse --symbolic-full-name '@at-test' >actual
else
git cat-file -p '@at-test' >actual
fi &&
test_cmp expect actual
ok 19 - @at-test = refs/heads/@at-test
expecting success of 1508.20 '@{u}@{-1} is nonsensical':
test_must_fail git rev-parse --verify '@{u}@{-1}'
fatal: Needed a single revision
ok 20 - @{u}@{-1} is nonsensical
expecting success of 1508.21 '@{0}@{0} is nonsensical':
test_must_fail git rev-parse --verify '@{0}@{0}'
fatal: Needed a single revision
ok 21 - @{0}@{0} is nonsensical
expecting success of 1508.22 '@{1}@{u} is nonsensical':
test_must_fail git rev-parse --verify '@{1}@{u}'
fatal: no such branch: '@{1}'
ok 22 - @{1}@{u} is nonsensical
expecting success of 1508.23 'HEAD@{-1} is nonsensical':
test_must_fail git rev-parse --verify 'HEAD@{-1}'
fatal: Needed a single revision
ok 23 - HEAD@{-1} is nonsensical
expecting success of 1508.24 '@{-1}@{-1} is nonsensical':
test_must_fail git rev-parse --verify '@{-1}@{-1}'
fatal: Needed a single revision
ok 24 - @{-1}@{-1} is nonsensical
expecting success of 1508.25 'HEAD@{3} = old-two':
echo 'old-two' >expect &&
if test 'commit' = 'commit'
then
git log -1 --format=%s 'HEAD@{3}' >actual
elif test 'commit' = 'ref'
then
git rev-parse --symbolic-full-name 'HEAD@{3}' >actual
else
git cat-file -p 'HEAD@{3}' >actual
fi &&
test_cmp expect actual
ok 25 - HEAD@{3} = old-two
expecting success of 1508.26 '@{3} is nonsensical':
test_must_fail git rev-parse --verify '@{3}'
fatal: log for 'new-branch' only has 3 entries
ok 26 - @{3} is nonsensical
expecting success of 1508.27 'switch to old-branch':
git checkout old-branch
Switched to branch 'old-branch'
Your branch is ahead of 'main' by 4 commits.
(use "git push" to publish your local commits)
ok 27 - switch to old-branch
expecting success of 1508.28 'HEAD = refs/heads/old-branch':
echo 'refs/heads/old-branch' >expect &&
if test 'ref' = 'commit'
then
git log -1 --format=%s 'HEAD' >actual
elif test 'ref' = 'ref'
then
git rev-parse --symbolic-full-name 'HEAD' >actual
else
git cat-file -p 'HEAD' >actual
fi &&
test_cmp expect actual
ok 28 - HEAD = refs/heads/old-branch
expecting success of 1508.29 'HEAD@{1} = new-two':
echo 'new-two' >expect &&
if test 'commit' = 'commit'
then
git log -1 --format=%s 'HEAD@{1}' >actual
elif test 'commit' = 'ref'
then
git rev-parse --symbolic-full-name 'HEAD@{1}' >actual
else
git cat-file -p 'HEAD@{1}' >actual
fi &&
test_cmp expect actual
ok 29 - HEAD@{1} = new-two
expecting success of 1508.30 '@{1} = old-one':
echo 'old-one' >expect &&
if test 'commit' = 'commit'
then
git log -1 --format=%s '@{1}' >actual
elif test 'commit' = 'ref'
then
git rev-parse --symbolic-full-name '@{1}' >actual
else
git cat-file -p '@{1}' >actual
fi &&
test_cmp expect actual
ok 30 - @{1} = old-one
expecting success of 1508.31 'create path with @':
echo content >normal &&
echo content >fun@ny &&
git add normal fun@ny &&
git commit -m "funny path"
[old-branch 7240585] funny path
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 fun@ny
create mode 100644 normal
ok 31 - create path with @
expecting success of 1508.32 '@:normal = content':
echo 'content' >expect &&
if test 'blob' = 'commit'
then
git log -1 --format=%s '@:normal' >actual
elif test 'blob' = 'ref'
then
git rev-parse --symbolic-full-name '@:normal' >actual
else
git cat-file -p '@:normal' >actual
fi &&
test_cmp expect actual
ok 32 - @:normal = content
expecting success of 1508.33 '@:fun@ny = content':
echo 'content' >expect &&
if test 'blob' = 'commit'
then
git log -1 --format=%s '@:fun@ny' >actual
elif test 'blob' = 'ref'
then
git rev-parse --symbolic-full-name '@:fun@ny' >actual
else
git cat-file -p '@:fun@ny' >actual
fi &&
test_cmp expect actual
ok 33 - @:fun@ny = content
expecting success of 1508.34 '@{1} works with only one reflog entry':
git checkout -B newbranch main &&
git reflog expire --expire=now refs/heads/newbranch &&
git commit --allow-empty -m "first after expiration" &&
test_cmp_rev newbranch~ newbranch@{1}
Switched to a new branch 'newbranch'
[newbranch b4bdce6] first after expiration
Author: A U Thor <author@example.com>
ok 34 - @{1} works with only one reflog entry
expecting success of 1508.35 '@{0} works with empty reflog':
git checkout -B newbranch main &&
git reflog expire --expire=now refs/heads/newbranch &&
test_cmp_rev newbranch newbranch@{0}
Reset branch 'newbranch'
ok 35 - @{0} works with empty reflog
# passed all 35 test(s)
1..35
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1511-rev-parse-caret.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1511-rev-parse-caret/.git/
expecting success of 1511.1 'setup':
echo blob >a-blob &&
git tag -a -m blob blob-tag $(git hash-object -w a-blob) &&
mkdir a-tree &&
echo moreblobs >a-tree/another-blob &&
git add . &&
TREE_SHA1=$(git write-tree) &&
git tag -a -m tree tree-tag "$TREE_SHA1" &&
git commit -m Initial &&
git tag -a -m commit commit-tag &&
git branch ref &&
git checkout main &&
echo modified >>a-blob &&
git add -u &&
git commit -m Modified &&
git branch modref &&
echo changed! >>a-blob &&
git add -u &&
git commit -m !Exp &&
git branch expref &&
echo changed >>a-blob &&
git add -u &&
git commit -m Changed &&
echo changed-again >>a-blob &&
git add -u &&
git commit -m Changed-again
[main (root-commit) 543146a] Initial
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 a-blob
create mode 100644 a-tree/another-blob
Already on 'main'
[main 921b76a] Modified
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[main e6ae3e8] !Exp
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[main ee9e0b8] Changed
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[main 8f5adaa] Changed-again
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
ok 1 - setup
expecting success of 1511.2 'ref^{non-existent}':
test_must_fail git rev-parse ref^{non-existent}
fatal: ambiguous argument 'ref^{non-existent}': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
ref^{non-existent}
ok 2 - ref^{non-existent}
expecting success of 1511.3 'ref^{}':
git rev-parse ref >expected &&
git rev-parse ref^{} >actual &&
test_cmp expected actual &&
git rev-parse commit-tag^{} >actual &&
test_cmp expected actual
ok 3 - ref^{}
expecting success of 1511.4 'ref^{commit}':
git rev-parse ref >expected &&
git rev-parse ref^{commit} >actual &&
test_cmp expected actual &&
git rev-parse commit-tag^{commit} >actual &&
test_cmp expected actual &&
test_must_fail git rev-parse tree-tag^{commit} &&
test_must_fail git rev-parse blob-tag^{commit}
error: tree-tag^{commit}: expected commit type, but the object dereferences to tree type
error: tree-tag^{commit}: expected commit type, but the object dereferences to tree type
fatal: ambiguous argument 'tree-tag^{commit}': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
tree-tag^{commit}
error: blob-tag^{commit}: expected commit type, but the object dereferences to blob type
error: blob-tag^{commit}: expected commit type, but the object dereferences to blob type
fatal: ambiguous argument 'blob-tag^{commit}': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
blob-tag^{commit}
ok 4 - ref^{commit}
expecting success of 1511.5 'ref^{tree}':
echo $TREE_SHA1 >expected &&
git rev-parse ref^{tree} >actual &&
test_cmp expected actual &&
git rev-parse commit-tag^{tree} >actual &&
test_cmp expected actual &&
git rev-parse tree-tag^{tree} >actual &&
test_cmp expected actual &&
test_must_fail git rev-parse blob-tag^{tree}
error: blob-tag^{tree}: expected tree type, but the object dereferences to blob type
error: blob-tag^{tree}: expected tree type, but the object dereferences to blob type
fatal: ambiguous argument 'blob-tag^{tree}': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
blob-tag^{tree}
ok 5 - ref^{tree}
expecting success of 1511.6 'ref^{tag}':
test_must_fail git rev-parse HEAD^{tag} &&
git rev-parse commit-tag >expected &&
git rev-parse commit-tag^{tag} >actual &&
test_cmp expected actual
error: HEAD^{tag}: expected tag type, but the object dereferences to tree type
error: HEAD^{tag}: expected tag type, but the object dereferences to tree type
fatal: ambiguous argument 'HEAD^{tag}': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
HEAD^{tag}
ok 6 - ref^{tag}
expecting success of 1511.7 'ref^{/.}':
git rev-parse main >expected &&
git rev-parse main^{/.} >actual &&
test_cmp expected actual
ok 7 - ref^{/.}
expecting success of 1511.8 'ref^{/non-existent}':
test_must_fail git rev-parse main^{/non-existent}
fatal: ambiguous argument 'main^{/non-existent}': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
main^{/non-existent}
ok 8 - ref^{/non-existent}
expecting success of 1511.9 'ref^{/Initial}':
git rev-parse ref >expected &&
git rev-parse main^{/Initial} >actual &&
test_cmp expected actual
ok 9 - ref^{/Initial}
expecting success of 1511.10 'ref^{/!Exp}':
test_must_fail git rev-parse main^{/!Exp}
fatal: ambiguous argument 'main^{/!Exp}': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
main^{/!Exp}
ok 10 - ref^{/!Exp}
expecting success of 1511.11 'ref^{/!}':
test_must_fail git rev-parse main^{/!}
fatal: ambiguous argument 'main^{/!}': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
main^{/!}
ok 11 - ref^{/!}
expecting success of 1511.12 'ref^{/!!Exp}':
git rev-parse expref >expected &&
git rev-parse main^{/!!Exp} >actual &&
test_cmp expected actual
ok 12 - ref^{/!!Exp}
expecting success of 1511.13 'ref^{/!-}':
test_must_fail git rev-parse main^{/!-}
fatal: ambiguous argument 'main^{/!-}': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
main^{/!-}
ok 13 - ref^{/!-}
expecting success of 1511.14 'ref^{/!-.}':
test_must_fail git rev-parse main^{/!-.}
fatal: ambiguous argument 'main^{/!-.}': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
main^{/!-.}
ok 14 - ref^{/!-.}
expecting success of 1511.15 'ref^{/!-non-existent}':
git rev-parse main >expected &&
git rev-parse main^{/!-non-existent} >actual &&
test_cmp expected actual
ok 15 - ref^{/!-non-existent}
expecting success of 1511.16 'ref^{/!-Changed}':
git rev-parse expref >expected &&
git rev-parse main^{/!-Changed} >actual &&
test_cmp expected actual
ok 16 - ref^{/!-Changed}
expecting success of 1511.17 'ref^{/!-!Exp}':
git rev-parse modref >expected &&
git rev-parse expref^{/!-!Exp} >actual &&
test_cmp expected actual
ok 17 - ref^{/!-!Exp}
# passed all 17 test(s)
1..17
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1512-rev-parse-disambiguation.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1512-rev-parse-disambiguation/.git/
expecting success of 1512.1 'ambiguous blob output':
git init --bare blob.prefix &&
(
cd blob.prefix &&
# Both start with "dead..", under both SHA-1 and SHA-256
echo brocdnra | git hash-object -w --stdin &&
echo brigddsv | git hash-object -w --stdin &&
# Both start with "beef.."
echo 1agllotbh | git hash-object -w --stdin &&
echo 1bbfctrkc | git hash-object -w --stdin
) &&
test_must_fail git -C blob.prefix rev-parse dead &&
test_cmp_failed_rev_parse blob.prefix beef <<-\EOF
error: short object ID beef... is ambiguous
hint: The candidates are:
hint: beef... blob
hint: beef... blob
fatal: ambiguous argument 'beef...': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
EOF
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1512-rev-parse-disambiguation/blob.prefix/
dead7b21a85f6dc7a24cbc4bb04a008db70bc04a
dead9d36640e108d9eb449ed5966fd0c6d4e6b7f
beefc9be42a87abd92326257a995bf20a24c788f
beef2b0b99a5a8a36d91ea9ecd766af6352eafd9
error: short object ID dead is ambiguous
hint: The candidates are:
hint: dead7b2 blob
hint: dead9d3 blob
fatal: ambiguous argument 'dead': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
dead
beef
ok 1 - ambiguous blob output
expecting success of 1512.2 'ambiguous loose bad object parsed as OBJ_BAD':
git init --bare blob.bad &&
(
cd blob.bad &&
# Both have the prefix "bad0"
echo xyzfaowcoh | git hash-object -t bad -w --stdin --literally &&
echo xyzhjpyvwl | git hash-object -t bad -w --stdin --literally
) &&
test_cmp_failed_rev_parse blob.bad bad0 <<-\EOF
error: short object ID bad0... is ambiguous
fatal: invalid object type
EOF
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1512-rev-parse-disambiguation/blob.bad/
bad0bd4672dee1b4d3b8088534ed5a0362bc8d59
bad0853730d9d114ac789f0ce89039d224bf66c9
ok 2 - ambiguous loose bad object parsed as OBJ_BAD
expecting success of 1512.3 'ambigous zlib corrupt loose blob':
git init --bare blob.corrupt &&
(
cd blob.corrupt &&
# Both have the prefix "cafe"
echo bnkxmdwz | git hash-object -w --stdin &&
oid=$(echo bmwsjxzi | git hash-object -w --stdin) &&
oidf=objects/$(test_oid_to_path "$oid") &&
chmod 755 $oidf &&
echo broken >$oidf
) &&
test_cmp_failed_rev_parse blob.corrupt cafe <<-\EOF
error: short object ID cafe... is ambiguous
error: inflate: data stream error (incorrect header check)
error: unable to unpack cafe... header
error: inflate: data stream error (incorrect header check)
error: unable to unpack cafe... header
hint: The candidates are:
hint: cafe... [bad object]
hint: cafe... blob
fatal: ambiguous argument 'cafe...': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
EOF
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1512-rev-parse-disambiguation/blob.corrupt/
cafe3f2e27174acdf9aa3a394d73714cdcf533d9
cafe
ok 3 - ambigous zlib corrupt loose blob
checking prerequisite: SHA1
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SHA1" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SHA1" &&
case "$GIT_DEFAULT_HASH" in
sha1) true ;;
"") test $(git hash-object /dev/null) = e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 ;;
*) false ;;
esac
)
prerequisite SHA1 ok
expecting success of 1512.4 'blob and tree':
test_tick &&
(
test_write_lines 0 1 2 3 4 5 6 7 8 9 &&
echo &&
echo b1rwzyc3
) >a0blgqsjc &&
# create one blob 0000000000b36
git add a0blgqsjc &&
# create one tree 0000000000cdc
git write-tree
0000000000cdcf04beb2fab69e65622616294984
ok 4 - blob and tree
expecting success of 1512.5 'warn ambiguity when no candidate matches type hint':
test_must_fail git rev-parse --verify 000000000^{commit} 2>actual &&
test_i18ngrep "short object ID 000000000 is ambiguous" actual
error: short object ID 000000000 is ambiguous
ok 5 - warn ambiguity when no candidate matches type hint
expecting success of 1512.6 'disambiguate tree-ish':
# feed tree-ish in an unambiguous way
git rev-parse --verify 0000000000cdc:a0blgqsjc &&
# ambiguous at the object name level, but there is only one
# such tree-ish (the other is a blob)
git rev-parse --verify 000000000:a0blgqsjc
0000000000b36b6aa7ea4b75318ed078f55505c3
0000000000b36b6aa7ea4b75318ed078f55505c3
ok 6 - disambiguate tree-ish
expecting success of 1512.7 'disambiguate blob':
sed -e "s/|$//" >patch <<-EOF &&
diff --git a/frotz b/frotz
index 000000000..ffffff 100644
--- a/frotz
+++ b/frotz
@@ -10,3 +10,4 @@
9
|
b1rwzyc3
+irwry
EOF
(
GIT_INDEX_FILE=frotz &&
export GIT_INDEX_FILE &&
git apply --build-fake-ancestor frotz patch &&
git cat-file blob :frotz >actual
) &&
test_cmp a0blgqsjc actual
ok 7 - disambiguate blob
expecting success of 1512.8 'disambiguate tree':
commit=$(echo "d7xm" | git commit-tree 000000000) &&
# this commit is fffff2e and not ambiguous with the 00000* objects
test $(git rev-parse $commit^{tree}) = $(git rev-parse 0000000000cdc)
ok 8 - disambiguate tree
expecting success of 1512.9 'first commit':
# create one commit 0000000000e4f
git commit -m a2onsxbvj
[main (root-commit) 0000000000e] a2onsxbvj
Author: A U Thor <author@example.com>
1 file changed, 12 insertions(+)
create mode 100644 a0blgqsjc
ok 9 - first commit
expecting success of 1512.10 'disambiguate commit-ish':
# feed commit-ish in an unambiguous way
git rev-parse --verify 0000000000e4f^{commit} &&
# ambiguous at the object name level, but there is only one
# such commit (the others are tree and blob)
git rev-parse --verify 000000000^{commit} &&
# likewise
git rev-parse --verify 000000000^0
0000000000e4f9fbd19cf1e932319e5ad0d1d00b
0000000000e4f9fbd19cf1e932319e5ad0d1d00b
0000000000e4f9fbd19cf1e932319e5ad0d1d00b
ok 10 - disambiguate commit-ish
expecting success of 1512.11 'disambiguate commit':
commit=$(echo "hoaxj" | git commit-tree 0000000000cdc -p 000000000) &&
# this commit is ffffffd8 and not ambiguous with the 00000* objects
test $(git rev-parse $commit^) = $(git rev-parse 0000000000e4f)
ok 11 - disambiguate commit
expecting success of 1512.12 'log name1..name2 takes only commit-ishes on both ends':
# These are underspecified from the prefix-length point of view
# to disambiguate the commit with other objects, but there is only
# one commit that has 00000* prefix at this point.
git log 000000000..000000000 &&
git log ..000000000 &&
git log 000000000.. &&
git log 000000000...000000000 &&
git log ...000000000 &&
git log 000000000...
ok 12 - log name1..name2 takes only commit-ishes on both ends
expecting success of 1512.13 'rev-parse name1..name2 takes only commit-ishes on both ends':
# Likewise.
git rev-parse 000000000..000000000 &&
git rev-parse ..000000000 &&
git rev-parse 000000000..
0000000000e4f9fbd19cf1e932319e5ad0d1d00b
^0000000000e4f9fbd19cf1e932319e5ad0d1d00b
0000000000e4f9fbd19cf1e932319e5ad0d1d00b
^0000000000e4f9fbd19cf1e932319e5ad0d1d00b
0000000000e4f9fbd19cf1e932319e5ad0d1d00b
^0000000000e4f9fbd19cf1e932319e5ad0d1d00b
ok 13 - rev-parse name1..name2 takes only commit-ishes on both ends
expecting success of 1512.14 'git log takes only commit-ish':
# Likewise.
git log 000000000
commit 0000000000e4f9fbd19cf1e932319e5ad0d1d00b
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:13:13 2005 -0700
a2onsxbvj
ok 14 - git log takes only commit-ish
expecting success of 1512.15 'git reset takes only commit-ish':
# Likewise.
git reset 000000000
ok 15 - git reset takes only commit-ish
expecting success of 1512.16 'first tag':
# create one tag 0000000000f8f
git tag -a -m j7cp83um v1.0.0
ok 16 - first tag
checking known breakage of 1512.17 'two semi-ambiguous commit-ish':
# At this point, we have a tag 0000000000f8f that points
# at a commit 0000000000e4f, and a tree and a blob that
# share 0000000000 prefix with these tag and commit.
#
# Once the parser becomes ultra-smart, it could notice that
# 0000000000 before ^{commit} name many different objects, but
# that only two (HEAD and v1.0.0 tag) can be peeled to commit,
# and that peeling them down to commit yield the same commit
# without ambiguity.
git rev-parse --verify 0000000000^{commit} &&
# likewise
git log 0000000000..0000000000 &&
git log ..0000000000 &&
git log 0000000000.. &&
git log 0000000000...0000000000 &&
git log ...0000000000 &&
git log 0000000000...
error: short object ID 0000000000 is ambiguous
hint: The candidates are:
hint: 0000000000f tag 2005-04-07 - v1.0.0
hint: 0000000000e commit 2005-04-07 - a2onsxbvj
fatal: Needed a single revision
not ok 17 - two semi-ambiguous commit-ish # TODO known breakage
checking known breakage of 1512.18 'three semi-ambiguous tree-ish':
# Likewise for tree-ish. HEAD, v1.0.0 and HEAD^{tree} share
# the prefix but peeling them to tree yields the same thing
git rev-parse --verify 0000000000^{tree}
error: short object ID 0000000000 is ambiguous
hint: The candidates are:
hint: 0000000000f tag 2005-04-07 - v1.0.0
hint: 0000000000e commit 2005-04-07 - a2onsxbvj
hint: 0000000000c tree
fatal: Needed a single revision
not ok 18 - three semi-ambiguous tree-ish # TODO known breakage
expecting success of 1512.19 'parse describe name':
# feed an unambiguous describe name
git rev-parse --verify v1.0.0-0-g0000000000e4f &&
# ambiguous at the object name level, but there is only one
# such commit (others are blob, tree and tag)
git rev-parse --verify v1.0.0-0-g000000000
0000000000e4f9fbd19cf1e932319e5ad0d1d00b
0000000000e4f9fbd19cf1e932319e5ad0d1d00b
ok 19 - parse describe name
expecting success of 1512.20 'more history':
# commit 0000000000043
git mv a0blgqsjc d12cr3h8t &&
echo h62xsjeu >>d12cr3h8t &&
git add d12cr3h8t &&
test_tick &&
git commit -m czy8f73t &&
# commit 00000000008ec
git mv d12cr3h8t j000jmpzn &&
echo j08bekfvt >>j000jmpzn &&
git add j000jmpzn &&
test_tick &&
git commit -m ioiley5o &&
# commit 0000000005b0
git checkout v1.0.0^0 &&
git mv a0blgqsjc f5518nwu &&
test_write_lines h62xsjeu j08bekfvt kg7xflhm >>f5518nwu &&
git add f5518nwu &&
test_tick &&
git commit -m b3wettvi &&
side=$(git rev-parse HEAD) &&
# commit 000000000066
git checkout main &&
# If you use recursive, merge will fail and you will need to
# clean up a0blgqsjc as well. If you use resolve, merge will
# succeed.
test_might_fail git merge --no-commit -s recursive $side &&
git rm -f f5518nwu j000jmpzn &&
test_might_fail git rm -f a0blgqsjc &&
(
git cat-file blob $side:f5518nwu &&
echo j3l0i9s6
) >ab2gs879 &&
git add ab2gs879 &&
test_tick &&
git commit -m ad2uee
[main 00000000000] czy8f73t
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
rename a0blgqsjc => d12cr3h8t (76%)
[main 00000000008] ioiley5o
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
rename d12cr3h8t => j000jmpzn (79%)
Note: switching to 'v1.0.0^0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 0000000000e a2onsxbvj
[detached HEAD 0000000005] b3wettvi
Author: A U Thor <author@example.com>
1 file changed, 3 insertions(+)
rename a0blgqsjc => f5518nwu (51%)
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
0000000005 b3wettvi
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 0000000005
Switched to branch 'main'
Auto-merging a0blgqsjc
CONFLICT (rename/rename): a0blgqsjc renamed to j000jmpzn in HEAD and to f5518nwu in 0000000005b0d85f595e1a98533157ea161798da.
Automatic merge failed; fix conflicts and then commit the result.
rm 'f5518nwu'
rm 'j000jmpzn'
rm 'a0blgqsjc'
[main 00000000006] ad2uee
Author: A U Thor <author@example.com>
ok 20 - more history
checking known breakage of 1512.21 'parse describe name taking advantage of generation':
# ambiguous at the object name level, but there is only one
# such commit at generation 0
git rev-parse --verify v1.0.0-0-g000000000 &&
# likewise for generation 2 and 4
git rev-parse --verify v1.0.0-2-g000000000 &&
git rev-parse --verify v1.0.0-4-g000000000
fatal: Needed a single revision
not ok 21 - parse describe name taking advantage of generation # TODO known breakage
expecting success of 1512.22 'parse describe name not ignoring ambiguity':
# ambiguous at the object name level, and there are two such
# commits at generation 1
test_must_fail git rev-parse --verify v1.0.0-1-g000000000
fatal: Needed a single revision
ok 22 - parse describe name not ignoring ambiguity
expecting success of 1512.23 'ambiguous commit-ish':
# Now there are many commits that begin with the
# common prefix, none of these should pick one at
# random. They all should result in ambiguity errors.
test_must_fail git rev-parse --verify 00000000^{commit} &&
# likewise
test_must_fail git log 000000000..000000000 &&
test_must_fail git log ..000000000 &&
test_must_fail git log 000000000.. &&
test_must_fail git log 000000000...000000000 &&
test_must_fail git log ...000000000 &&
test_must_fail git log 000000000...
error: short object ID 00000000 is ambiguous
hint: The candidates are:
hint: 0000000000f8 tag 2005-04-07 - v1.0.0
hint: 000000000004 commit 2005-04-07 - czy8f73t
hint: 00000000006 commit 2005-04-07 - ad2uee
hint: 00000000008 commit 2005-04-07 - ioiley5o
hint: 0000000000e commit 2005-04-07 - a2onsxbvj
hint: 0000000005 commit 2005-04-07 - b3wettvi
fatal: Needed a single revision
error: short object ID 000000000 is ambiguous
hint: The candidates are:
hint: 0000000000f8 tag 2005-04-07 - v1.0.0
hint: 000000000004 commit 2005-04-07 - czy8f73t
hint: 00000000006 commit 2005-04-07 - ad2uee
hint: 00000000008 commit 2005-04-07 - ioiley5o
hint: 0000000000e commit 2005-04-07 - a2onsxbvj
hint: 0000000005 commit 2005-04-07 - b3wettvi
fatal: ambiguous argument '000000000..000000000': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
error: short object ID 000000000 is ambiguous
hint: The candidates are:
hint: 0000000000f8 tag 2005-04-07 - v1.0.0
hint: 000000000004 commit 2005-04-07 - czy8f73t
hint: 00000000006 commit 2005-04-07 - ad2uee
hint: 00000000008 commit 2005-04-07 - ioiley5o
hint: 0000000000e commit 2005-04-07 - a2onsxbvj
hint: 0000000005 commit 2005-04-07 - b3wettvi
fatal: ambiguous argument '..000000000': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
error: short object ID 000000000 is ambiguous
hint: The candidates are:
hint: 0000000000f8 tag 2005-04-07 - v1.0.0
hint: 000000000004 commit 2005-04-07 - czy8f73t
hint: 00000000006 commit 2005-04-07 - ad2uee
hint: 00000000008 commit 2005-04-07 - ioiley5o
hint: 0000000000e commit 2005-04-07 - a2onsxbvj
hint: 0000000005 commit 2005-04-07 - b3wettvi
fatal: ambiguous argument '000000000..': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
error: short object ID 000000000 is ambiguous
hint: The candidates are:
hint: 0000000000f8 tag 2005-04-07 - v1.0.0
hint: 000000000004 commit 2005-04-07 - czy8f73t
hint: 00000000006 commit 2005-04-07 - ad2uee
hint: 00000000008 commit 2005-04-07 - ioiley5o
hint: 0000000000e commit 2005-04-07 - a2onsxbvj
hint: 0000000005 commit 2005-04-07 - b3wettvi
fatal: ambiguous argument '000000000...000000000': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
error: short object ID 000000000 is ambiguous
hint: The candidates are:
hint: 0000000000f8 tag 2005-04-07 - v1.0.0
hint: 000000000004 commit 2005-04-07 - czy8f73t
hint: 00000000006 commit 2005-04-07 - ad2uee
hint: 00000000008 commit 2005-04-07 - ioiley5o
hint: 0000000000e commit 2005-04-07 - a2onsxbvj
hint: 0000000005 commit 2005-04-07 - b3wettvi
fatal: ambiguous argument '...000000000': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
error: short object ID 000000000 is ambiguous
hint: The candidates are:
hint: 0000000000f8 tag 2005-04-07 - v1.0.0
hint: 000000000004 commit 2005-04-07 - czy8f73t
hint: 00000000006 commit 2005-04-07 - ad2uee
hint: 00000000008 commit 2005-04-07 - ioiley5o
hint: 0000000000e commit 2005-04-07 - a2onsxbvj
hint: 0000000005 commit 2005-04-07 - b3wettvi
fatal: ambiguous argument '000000000...': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
ok 23 - ambiguous commit-ish
expecting success of 1512.24 'ambiguous tags peel to treeish':
test_must_fail git rev-parse 0000000000f^{tree}
error: short object ID 0000000000f is ambiguous
hint: The candidates are:
hint: 0000000000f8 tag 2005-04-07 - v1.0.0
hint: 0000000000fd tree
fatal: ambiguous argument '0000000000f^{tree}': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
0000000000f^{tree}
ok 24 - ambiguous tags peel to treeish
expecting success of 1512.25 'rev-parse --disambiguate':
# The test creates 16 objects that share the prefix and two
# commits created by commit-tree in earlier tests share a
# different prefix.
git rev-parse --disambiguate=000000000 >actual &&
test_line_count = 16 actual &&
test "$(sed -e "s/^\(.........\).*/\1/" actual | sort -u)" = 000000000
ok 25 - rev-parse --disambiguate
expecting success of 1512.26 'rev-parse --disambiguate drops duplicates':
git rev-parse --disambiguate=000000000 >expect &&
git pack-objects .git/objects/pack/pack <expect &&
git rev-parse --disambiguate=000000000 >actual &&
test_cmp expect actual
bdfb78b16a1cd3c3b1ebf4cca29330c92a46fc43
ok 26 - rev-parse --disambiguate drops duplicates
expecting success of 1512.27 'ambiguous 40-hex ref':
TREE=$(git mktree </dev/null) &&
REF=$(git rev-parse HEAD) &&
VAL=$(git commit-tree $TREE </dev/null) &&
git update-ref refs/heads/$REF $VAL &&
test $(git rev-parse $REF 2>err) = $REF &&
grep "refname.*${REF}.*ambiguous" err
warning: refname '0000000000663a70a94c2b280b575855256220fa' is ambiguous.
ok 27 - ambiguous 40-hex ref
expecting success of 1512.28 'ambiguous short sha1 ref':
TREE=$(git mktree </dev/null) &&
REF=$(git rev-parse --short HEAD) &&
VAL=$(git commit-tree $TREE </dev/null) &&
git update-ref refs/heads/$REF $VAL &&
test $(git rev-parse $REF 2>err) = $VAL &&
grep "refname.*${REF}.*ambiguous" err
warning: refname '00000000006' is ambiguous.
ok 28 - ambiguous short sha1 ref
expecting success of 1512.29 'ambiguity errors are not repeated (raw)':
test_must_fail git rev-parse 00000 2>stderr &&
grep "is ambiguous" stderr >errors &&
test_line_count = 1 errors
00000
ok 29 - ambiguity errors are not repeated (raw)
expecting success of 1512.30 'ambiguity errors are not repeated (treeish)':
test_must_fail git rev-parse 00000:foo 2>stderr &&
grep "is ambiguous" stderr >errors &&
test_line_count = 1 errors
00000:foo
ok 30 - ambiguity errors are not repeated (treeish)
expecting success of 1512.31 'ambiguity errors are not repeated (peel)':
test_must_fail git rev-parse 00000^{commit} 2>stderr &&
grep "is ambiguous" stderr >errors &&
test_line_count = 1 errors
00000^{commit}
ok 31 - ambiguity errors are not repeated (peel)
expecting success of 1512.32 'ambiguity hints':
test_must_fail git rev-parse 000000000 2>stderr &&
grep ^hint: stderr >hints &&
# 16 candidates, plus one intro line
test_line_count = 17 hints
000000000
ok 32 - ambiguity hints
expecting success of 1512.33 'ambiguity hints respect type':
test_must_fail git rev-parse 000000000^{commit} 2>stderr &&
grep ^hint: stderr >hints &&
# 5 commits, 1 tag (which is a committish), plus intro line
test_line_count = 7 hints
000000000^{commit}
ok 33 - ambiguity hints respect type
expecting success of 1512.34 'failed type-selector still shows hint':
# these two blobs share the same prefix "ee3d", but neither
# will pass for a commit
echo 851 | git hash-object --stdin -w &&
echo 872 | git hash-object --stdin -w &&
test_must_fail git rev-parse ee3d^{commit} 2>stderr &&
grep ^hint: stderr >hints &&
test_line_count = 3 hints
ee3de9906b5e9a4a369e91cba4235487a7e10351
ee3d8abaa95a7395b373892b2593de2f426814e2
ee3d^{commit}
ok 34 - failed type-selector still shows hint
expecting success of 1512.35 'core.disambiguate config can prefer types':
# ambiguous between tree and tag
sha1=0000000000f &&
test_must_fail git rev-parse $sha1 &&
git rev-parse $sha1^{commit} &&
git -c core.disambiguate=committish rev-parse $sha1
error: short object ID 0000000000f is ambiguous
hint: The candidates are:
hint: 0000000000f8 tag 2005-04-07 - v1.0.0
hint: 0000000000fd tree
hint: 0000000000f2 blob
fatal: ambiguous argument '0000000000f': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
0000000000f
0000000000e4f9fbd19cf1e932319e5ad0d1d00b
0000000000f8f5507ab27a0d7bd3c75c0f64ffe0
ok 35 - core.disambiguate config can prefer types
expecting success of 1512.36 'core.disambiguate does not override context':
# treeish ambiguous between tag and tree
test_must_fail \
git -c core.disambiguate=committish rev-parse $sha1^{tree}
error: short object ID 0000000000f is ambiguous
hint: The candidates are:
hint: 0000000000f8 tag 2005-04-07 - v1.0.0
hint: 0000000000fd tree
fatal: ambiguous argument '0000000000f^{tree}': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
0000000000f^{tree}
ok 36 - core.disambiguate does not override context
expecting success of 1512.37 'ambiguous commits are printed by type first, then hash order':
test_must_fail git rev-parse 0000 2>stderr &&
grep ^hint: stderr >hints &&
grep 0000 hints >objects &&
cat >expected <<-\EOF &&
tag
commit
tree
blob
EOF
awk "{print \$3}" <objects >objects.types &&
uniq <objects.types >objects.types.uniq &&
test_cmp expected objects.types.uniq &&
for type in tag commit tree blob
do
grep $type objects >$type.objects &&
sort $type.objects >$type.objects.sorted &&
test_cmp $type.objects.sorted $type.objects || return 1
done
0000
ok 37 - ambiguous commits are printed by type first, then hash order
expecting success of 1512.38 'cat-file --batch and --batch-check show ambiguous':
echo "0000 ambiguous" >expect &&
echo 0000 | git cat-file --batch-check >actual 2>err &&
test_cmp expect actual &&
test_i18ngrep hint: err &&
echo 0000 | git cat-file --batch >actual 2>err &&
test_cmp expect actual &&
test_i18ngrep hint: err
hint: The candidates are:
hint: 0000000000f8 tag 2005-04-07 - v1.0.0
hint: 000000000004 commit 2005-04-07 - czy8f73t
hint: 00000000006 commit 2005-04-07 - ad2uee
hint: 00000000008 commit 2005-04-07 - ioiley5o
hint: 0000000000e commit 2005-04-07 - a2onsxbvj
hint: 0000000005 commit 2005-04-07 - b3wettvi
hint: 000000000002 tree
hint: 00000000005 tree
hint: 00000000009 tree
hint: 0000000000c tree
hint: 0000000000fd tree
hint: 00000000001 blob
hint: 00000000003 blob
hint: 0000000000a blob
hint: 0000000000b blob
hint: 0000000000f2 blob
hint: The candidates are:
hint: 0000000000f8 tag 2005-04-07 - v1.0.0
hint: 000000000004 commit 2005-04-07 - czy8f73t
hint: 00000000006 commit 2005-04-07 - ad2uee
hint: 00000000008 commit 2005-04-07 - ioiley5o
hint: 0000000000e commit 2005-04-07 - a2onsxbvj
hint: 0000000005 commit 2005-04-07 - b3wettvi
hint: 000000000002 tree
hint: 00000000005 tree
hint: 00000000009 tree
hint: 0000000000c tree
hint: 0000000000fd tree
hint: 00000000001 blob
hint: 00000000003 blob
hint: 0000000000a blob
hint: 0000000000b blob
hint: 0000000000f2 blob
ok 38 - cat-file --batch and --batch-check show ambiguous
# still have 3 known breakage(s)
# passed all remaining 35 test(s)
1..38
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1513-rev-parse-prefix.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1513-rev-parse-prefix/.git/
expecting success of 1513.1 'setup':
mkdir -p sub1/sub2 &&
echo top >top &&
echo file1 >sub1/file1 &&
echo file2 >sub1/sub2/file2 &&
git add top sub1/file1 sub1/sub2/file2 &&
git commit -m commit
[main (root-commit) 2a70803] commit
Author: A U Thor <author@example.com>
3 files changed, 3 insertions(+)
create mode 100644 sub1/file1
create mode 100644 sub1/sub2/file2
create mode 100644 top
ok 1 - setup
expecting success of 1513.2 'empty prefix -- file':
git rev-parse --prefix "" -- top sub1/file1 >actual &&
cat <<-\EOF >expected &&
--
top
sub1/file1
EOF
test_cmp expected actual
ok 2 - empty prefix -- file
expecting success of 1513.3 'valid prefix -- file':
git rev-parse --prefix sub1/ -- file1 sub2/file2 >actual &&
cat <<-\EOF >expected &&
--
sub1/file1
sub1/sub2/file2
EOF
test_cmp expected actual
ok 3 - valid prefix -- file
expecting success of 1513.4 'valid prefix -- ../file':
git rev-parse --prefix sub1/ -- ../top sub2/file2 >actual &&
cat <<-\EOF >expected &&
--
sub1/../top
sub1/sub2/file2
EOF
test_cmp expected actual
ok 4 - valid prefix -- ../file
expecting success of 1513.5 'empty prefix HEAD:./path':
git rev-parse --prefix "" HEAD:./top >actual &&
git rev-parse HEAD:top >expected &&
test_cmp expected actual
ok 5 - empty prefix HEAD:./path
expecting success of 1513.6 'valid prefix HEAD:./path':
git rev-parse --prefix sub1/ HEAD:./file1 >actual &&
git rev-parse HEAD:sub1/file1 >expected &&
test_cmp expected actual
ok 6 - valid prefix HEAD:./path
expecting success of 1513.7 'valid prefix HEAD:../path':
git rev-parse --prefix sub1/ HEAD:../top >actual &&
git rev-parse HEAD:top >expected &&
test_cmp expected actual
ok 7 - valid prefix HEAD:../path
expecting success of 1513.8 'prefix ignored with HEAD:top':
git rev-parse --prefix sub1/ HEAD:top >actual &&
git rev-parse HEAD:top >expected &&
test_cmp expected actual
ok 8 - prefix ignored with HEAD:top
expecting success of 1513.9 'disambiguate path with valid prefix':
git rev-parse --prefix sub1/ file1 >actual &&
cat <<-\EOF >expected &&
sub1/file1
EOF
test_cmp expected actual
ok 9 - disambiguate path with valid prefix
expecting success of 1513.10 'file and refs with prefix':
git rev-parse --prefix sub1/ main file1 >actual &&
cat <<-EOF >expected &&
$(git rev-parse main)
sub1/file1
EOF
test_cmp expected actual
ok 10 - file and refs with prefix
expecting success of 1513.11 'two-levels deep':
git rev-parse --prefix sub1/sub2/ -- file2 >actual &&
cat <<-\EOF >expected &&
--
sub1/sub2/file2
EOF
test_cmp expected actual
ok 11 - two-levels deep
# passed all 11 test(s)
1..11
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1514-rev-parse-push.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1514-rev-parse-push/.git/
expecting success of 1514.1 'setup':
git init --bare parent.git &&
git init --bare other.git &&
git remote add origin parent.git &&
git remote add other other.git &&
test_commit base &&
git push origin HEAD &&
git branch --set-upstream-to=origin/main main &&
git branch --track topic origin/main &&
git push origin topic &&
git push other topic
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1514-rev-parse-push/parent.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1514-rev-parse-push/other.git/
[main (root-commit) d1ff1c9] base
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 base.t
To parent.git
* [new branch] HEAD -> main
branch 'main' set up to track 'origin/main'.
branch 'topic' set up to track 'origin/main'.
To parent.git
* [new branch] topic -> topic
To other.git
* [new branch] topic -> topic
ok 1 - setup
expecting success of 1514.2 '@{push} with default=nothing':
test_config push.default nothing &&
test_must_fail git rev-parse main@{push} &&
test_must_fail git rev-parse main@{PUSH} &&
test_must_fail git rev-parse main@{PuSH}
fatal: push has no destination (push.default is 'nothing')
fatal: push has no destination (push.default is 'nothing')
fatal: push has no destination (push.default is 'nothing')
ok 2 - @{push} with default=nothing
expecting success of 1514.3 '@{push} with default=simple':
test_config push.default simple &&
resolve main@{push} refs/remotes/origin/main &&
resolve main@{PUSH} refs/remotes/origin/main &&
resolve main@{pUSh} refs/remotes/origin/main
ok 3 - @{push} with default=simple
expecting success of 1514.4 'triangular @{push} fails with default=simple':
test_config push.default simple &&
test_must_fail git rev-parse topic@{push}
fatal: cannot resolve 'simple' push to a single destination
ok 4 - triangular @{push} fails with default=simple
expecting success of 1514.5 '@{push} with default=current':
test_config push.default current &&
resolve topic@{push} refs/remotes/origin/topic
ok 5 - @{push} with default=current
expecting success of 1514.6 '@{push} with default=matching':
test_config push.default matching &&
resolve topic@{push} refs/remotes/origin/topic
ok 6 - @{push} with default=matching
expecting success of 1514.7 '@{push} with pushremote defined':
test_config push.default current &&
test_config branch.topic.pushremote other &&
resolve topic@{push} refs/remotes/other/topic
ok 7 - @{push} with pushremote defined
expecting success of 1514.8 '@{push} with push refspecs':
test_config push.default nothing &&
test_config remote.origin.push refs/heads/*:refs/heads/magic/* &&
git push &&
resolve topic@{push} refs/remotes/origin/magic/topic
To parent.git
* [new branch] main -> magic/main
* [new branch] topic -> magic/topic
ok 8 - @{push} with push refspecs
expecting success of 1514.9 'resolving @{push} fails with a detached HEAD':
git checkout HEAD^0 &&
test_when_finished "git checkout -" &&
test_must_fail git rev-parse @{push}
Note: switching to 'HEAD^0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at d1ff1c9 base
fatal: HEAD does not point to a branch
Switched to branch 'main'
Your branch is up to date with 'origin/main'.
ok 9 - resolving @{push} fails with a detached HEAD
# passed all 9 test(s)
1..9
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1515-rev-parse-outside-repo.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1515-rev-parse-outside-repo/.git/
expecting success of 1515.1 'set up non-repo directory':
GIT_CEILING_DIRECTORIES=$(pwd) &&
export GIT_CEILING_DIRECTORIES &&
mkdir non-repo &&
cd non-repo &&
# confirm that git does not find a repo
test_must_fail git rev-parse --git-dir
fatal: not a git repository (or any of the parent directories): .git
ok 1 - set up non-repo directory
expecting success of 1515.2 'rev-parse --sq-quote':
dump_args "$tricky" easy >expect &&
eval "dump_args $(git rev-parse --sq-quote "$tricky" easy)" >actual &&
test_cmp expect actual
ok 2 - rev-parse --sq-quote
expecting success of 1515.3 'rev-parse --local-env-vars':
git rev-parse --local-env-vars >actual &&
# we do not want to depend on the complete list here,
# so just look for something plausible
grep ^GIT_DIR actual
GIT_DIR
ok 3 - rev-parse --local-env-vars
expecting success of 1515.4 'rev-parse --resolve-git-dir':
git init --separate-git-dir repo dir &&
test_must_fail git rev-parse --resolve-git-dir . &&
echo "$(pwd)/repo" >expect &&
git rev-parse --resolve-git-dir dir/.git >actual &&
test_cmp expect actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1515-rev-parse-outside-repo/non-repo/repo/
fatal: not a gitdir '.'
ok 4 - rev-parse --resolve-git-dir
# passed all 4 test(s)
1..4
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1600-index.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1600-index/.git/
expecting success of 1600.1 'setup':
echo 1 >a
ok 1 - setup
expecting success of 1600.2 'bogus GIT_INDEX_VERSION issues warning':
(
rm -f .git/index &&
GIT_INDEX_VERSION=2bogus &&
export GIT_INDEX_VERSION &&
git add a 2>err &&
sed "s/[0-9]//" err >actual.err &&
sed -e "s/ Z$/ /" <<-\EOF >expect.err &&
warning: GIT_INDEX_VERSION set, but the value is invalid.
Using version Z
EOF
test_cmp expect.err actual.err
)
ok 2 - bogus GIT_INDEX_VERSION issues warning
expecting success of 1600.3 'out of bounds GIT_INDEX_VERSION issues warning':
(
rm -f .git/index &&
GIT_INDEX_VERSION=1 &&
export GIT_INDEX_VERSION &&
git add a 2>err &&
sed "s/[0-9]//" err >actual.err &&
sed -e "s/ Z$/ /" <<-\EOF >expect.err &&
warning: GIT_INDEX_VERSION set, but the value is invalid.
Using version Z
EOF
test_cmp expect.err actual.err
)
ok 3 - out of bounds GIT_INDEX_VERSION issues warning
expecting success of 1600.4 'no warning with bogus GIT_INDEX_VERSION and existing index':
(
GIT_INDEX_VERSION=1 &&
export GIT_INDEX_VERSION &&
git add a 2>actual.err &&
test_must_be_empty actual.err
)
ok 4 - no warning with bogus GIT_INDEX_VERSION and existing index
expecting success of 1600.5 'out of bounds index.version issues warning':
(
sane_unset GIT_INDEX_VERSION &&
rm -f .git/index &&
git config --add index.version 1 &&
git add a 2>err &&
sed "s/[0-9]//" err >actual.err &&
sed -e "s/ Z$/ /" <<-\EOF >expect.err &&
warning: index.version set, but the value is invalid.
Using version Z
EOF
test_cmp expect.err actual.err
)
ok 5 - out of bounds index.version issues warning
expecting success of 1600.6 'index.skipHash config option':
rm -f .git/index &&
git -c index.skipHash=true add a &&
test_trailing_hash .git/index >hash &&
echo $(test_oid zero) >expect &&
test_cmp expect hash &&
git fsck &&
rm -f .git/index &&
git -c feature.manyFiles=true add a &&
test_trailing_hash .git/index >hash &&
cmp expect hash &&
rm -f .git/index &&
git -c feature.manyFiles=true \
-c index.skipHash=false add a &&
test_trailing_hash .git/index >hash &&
! cmp expect hash &&
test_commit start &&
git -c protocol.file.allow=always submodule add ./ sub &&
git config index.skipHash false &&
git -C sub config index.skipHash true &&
rm -f .git/modules/sub/index &&
>sub/file &&
git -C sub add a &&
test_trailing_hash .git/modules/sub/index >hash &&
test_cmp expect hash &&
git -C sub fsck
warning: index.version set, but the value is invalid.
Using version 3
notice: HEAD points to an unborn branch (master)
notice: No default references
warning: index.version set, but the value is invalid.
Using version 3
warning: index.version set, but the value is invalid.
Using version 3
expect hash differ: char 1, line 1
[master (root-commit) 6d6aa2c] start
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 a
create mode 100644 start.t
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t1600-index/sub'...
done.
ok 6 - index.skipHash config option
expecting success of 1600.7 'index version config precedence':
test_index_version 0 false 0 2 &&
test_index_version 2 false 0 2 &&
test_index_version 3 false 0 2 &&
test_index_version 4 false 0 4 &&
test_index_version 2 false 4 4 &&
test_index_version 2 true 0 2 &&
test_index_version 0 true 0 4 &&
test_index_version 0 true 2 2
ok 7 - index version config precedence
# passed all 7 test(s)
1..7
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1601-index-bogus.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1601-index-bogus/.git/
expecting success of 1601.1 'create tree with null sha1':
tree=$(printf "160000 commit $ZERO_OID\\tbroken\\n" | git mktree)
ok 1 - create tree with null sha1
expecting success of 1601.2 'read-tree refuses to read null sha1':
test_must_fail git read-tree $tree
error: cache entry has null sha1: broken
fatal: unable to write new index file
ok 2 - read-tree refuses to read null sha1
expecting success of 1601.3 'GIT_ALLOW_NULL_SHA1 overrides refusal':
GIT_ALLOW_NULL_SHA1=1 git read-tree $tree
warning: cache entry has null sha1: broken
ok 3 - GIT_ALLOW_NULL_SHA1 overrides refusal
expecting success of 1601.4 'git write-tree refuses to write null sha1':
test_must_fail git write-tree
error: invalid object 160000 0000000000000000000000000000000000000000 for 'broken'
fatal: git-write-tree: error building trees
ok 4 - git write-tree refuses to write null sha1
# passed all 4 test(s)
1..4
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1450-fsck.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/.git/
expecting success of 1450.1 'setup':
git config gc.auto 0 &&
git config i18n.commitencoding ISO-8859-1 &&
test_commit A fileA one &&
git config --unset i18n.commitencoding &&
git checkout HEAD^0 &&
test_commit B fileB two &&
git tag -d A B &&
git reflog expire --expire=now --all
[master (root-commit) 1347563] A
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 fileA
Note: switching to 'HEAD^0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 1347563 A
[detached HEAD c9145d6] B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 fileB
Deleted tag 'A' (was 1347563)
Deleted tag 'B' (was c9145d6)
ok 1 - setup
expecting success of 1450.2 'loose objects borrowed from alternate are not missing':
mkdir another &&
(
cd another &&
git init &&
echo ../../../.git/objects >.git/objects/info/alternates &&
test_commit C fileC one &&
git fsck --no-dangling >../actual 2>&1
) &&
test_must_be_empty actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/another/.git/
[master (root-commit) 1aac250] C
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 fileC
ok 2 - loose objects borrowed from alternate are not missing
expecting success of 1450.3 'HEAD is part of refs, valid objects appear valid':
git fsck >actual 2>&1 &&
test_must_be_empty actual
ok 3 - HEAD is part of refs, valid objects appear valid
expecting success of 1450.4 'object with hash mismatch':
git init --bare hash-mismatch &&
(
cd hash-mismatch &&
oid=$(echo blob | git hash-object -w --stdin) &&
oldoid=$oid &&
old=$(test_oid_to_path "$oid") &&
new=$(dirname $old)/$(test_oid ff_2) &&
oid="$(dirname $new)$(basename $new)" &&
mv objects/$old objects/$new &&
git update-index --add --cacheinfo 100644 $oid foo &&
tree=$(git write-tree) &&
cmt=$(echo bogus | git commit-tree $tree) &&
git update-ref refs/heads/bogus $cmt &&
test_must_fail git fsck 2>out &&
grep "$oldoid: hash-path mismatch, found at: .*$new" out
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/hash-mismatch/
missing blob 63ffffffffffffffffffffffffffffffffffffff
error: 63499e4ea8e096b831515ceb1d5a7593e4d87ae5: hash-path mismatch, found at: ./objects/63/ffffffffffffffffffffffffffffffffffffff
ok 4 - object with hash mismatch
expecting success of 1450.5 'object with hash and type mismatch':
git init --bare hash-type-mismatch &&
(
cd hash-type-mismatch &&
oid=$(echo blob | git hash-object -w --stdin -t garbage --literally) &&
oldoid=$oid &&
old=$(test_oid_to_path "$oid") &&
new=$(dirname $old)/$(test_oid ff_2) &&
oid="$(dirname $new)$(basename $new)" &&
mv objects/$old objects/$new &&
git update-index --add --cacheinfo 100644 $oid foo &&
tree=$(git write-tree) &&
cmt=$(echo bogus | git commit-tree $tree) &&
git update-ref refs/heads/bogus $cmt &&
test_must_fail git fsck 2>out &&
grep "^error: $oldoid: hash-path mismatch, found at: .*$new" out &&
grep "^error: $oldoid: object is of unknown type 'garbage'" out
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/hash-type-mismatch/
missing blob 12ffffffffffffffffffffffffffffffffffffff
error: 121824d811d9a92c73a9c42ea7ee683e758723ce: hash-path mismatch, found at: ./objects/12/ffffffffffffffffffffffffffffffffffffff
error: 121824d811d9a92c73a9c42ea7ee683e758723ce: object is of unknown type 'garbage': ./objects/12/ffffffffffffffffffffffffffffffffffffff
ok 5 - object with hash and type mismatch
expecting success of 1450.6 'zlib corrupt loose object output ':
git init --bare corrupt-loose-output &&
(
cd corrupt-loose-output &&
oid=$(git hash-object -w --stdin --literally </dev/null) &&
oidf=objects/$(test_oid_to_path "$oid") &&
chmod +w $oidf &&
echo extra garbage >>$oidf &&
cat >expect.error <<-EOF &&
error: garbage at end of loose object '$oid'
error: unable to unpack contents of ./$oidf
error: $oid: object corrupt or missing: ./$oidf
EOF
test_must_fail git fsck 2>actual &&
grep ^error: actual >error &&
test_cmp expect.error error
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/corrupt-loose-output/
ok 6 - zlib corrupt loose object output
expecting success of 1450.7 'branch pointing to non-commit':
git rev-parse HEAD^{tree} >.git/refs/heads/invalid &&
test_when_finished "git update-ref -d refs/heads/invalid" &&
test_must_fail git fsck 2>out &&
test_i18ngrep "not a commit" out
error: refs/heads/invalid: not a commit
ok 7 - branch pointing to non-commit
expecting success of 1450.8 'HEAD link pointing at a funny object':
test_when_finished "mv .git/SAVED_HEAD .git/HEAD" &&
mv .git/HEAD .git/SAVED_HEAD &&
echo $ZERO_OID >.git/HEAD &&
# avoid corrupt/broken HEAD from interfering with repo discovery
test_must_fail env GIT_DIR=.git git fsck 2>out &&
test_i18ngrep "detached HEAD points" out
dangling commit c9145d6720f85544cc4bb6009a2e541660aa156b
error: HEAD: detached HEAD points at nothing
ok 8 - HEAD link pointing at a funny object
expecting success of 1450.9 'HEAD link pointing at a funny place':
test_when_finished "mv .git/SAVED_HEAD .git/HEAD" &&
mv .git/HEAD .git/SAVED_HEAD &&
echo "ref: refs/funny/place" >.git/HEAD &&
# avoid corrupt/broken HEAD from interfering with repo discovery
test_must_fail env GIT_DIR=.git git fsck 2>out &&
test_i18ngrep "HEAD points to something strange" out
dangling commit c9145d6720f85544cc4bb6009a2e541660aa156b
error: HEAD points to something strange (refs/funny/place)
ok 9 - HEAD link pointing at a funny place
expecting success of 1450.10 'HEAD link pointing at a funny object (from different wt)':
test_when_finished "mv .git/SAVED_HEAD .git/HEAD" &&
test_when_finished "rm -rf .git/worktrees wt" &&
git worktree add wt &&
mv .git/HEAD .git/SAVED_HEAD &&
echo $ZERO_OID >.git/HEAD &&
# avoid corrupt/broken HEAD from interfering with repo discovery
test_must_fail git -C wt fsck 2>out &&
test_i18ngrep "main-worktree/HEAD: detached HEAD points" out
Preparing worktree (new branch 'wt')
HEAD is now at c9145d6 B
error: main-worktree/HEAD: detached HEAD points at nothing
ok 10 - HEAD link pointing at a funny object (from different wt)
expecting success of 1450.11 'other worktree HEAD link pointing at a funny object':
test_when_finished "rm -rf .git/worktrees other" &&
git worktree add other &&
echo $ZERO_OID >.git/worktrees/other/HEAD &&
test_must_fail git fsck 2>out &&
test_i18ngrep "worktrees/other/HEAD: detached HEAD points" out
Preparing worktree (new branch 'other')
HEAD is now at c9145d6 B
error: worktrees/other/HEAD: detached HEAD points at nothing
ok 11 - other worktree HEAD link pointing at a funny object
expecting success of 1450.12 'other worktree HEAD link pointing at missing object':
test_when_finished "rm -rf .git/worktrees other" &&
git worktree add other &&
echo "Contents missing from repo" | git hash-object --stdin >.git/worktrees/other/HEAD &&
test_must_fail git fsck 2>out &&
test_i18ngrep "worktrees/other/HEAD: invalid sha1 pointer" out
Preparing worktree (checking out 'other')
HEAD is now at c9145d6 B
error: worktrees/other/HEAD: invalid sha1 pointer 45ea5fdbd862b3f0e413a6c2c951347efa0bb114
ok 12 - other worktree HEAD link pointing at missing object
expecting success of 1450.13 'other worktree HEAD link pointing at a funny place':
test_when_finished "rm -rf .git/worktrees other" &&
git worktree add other &&
echo "ref: refs/funny/place" >.git/worktrees/other/HEAD &&
test_must_fail git fsck 2>out &&
test_i18ngrep "worktrees/other/HEAD points to something strange" out
Preparing worktree (checking out 'other')
HEAD is now at c9145d6 B
error: worktrees/other/HEAD points to something strange (refs/funny/place)
ok 13 - other worktree HEAD link pointing at a funny place
expecting success of 1450.14 'commit with multiple signatures is okay':
git cat-file commit HEAD >basis &&
cat >sigs <<-EOF &&
gpgsig -----BEGIN PGP SIGNATURE-----
VGhpcyBpcyBub3QgcmVhbGx5IGEgc2lnbmF0dXJlLg==
-----END PGP SIGNATURE-----
gpgsig-sha256 -----BEGIN PGP SIGNATURE-----
VGhpcyBpcyBub3QgcmVhbGx5IGEgc2lnbmF0dXJlLg==
-----END PGP SIGNATURE-----
EOF
sed -e "/^committer/q" basis >okay &&
cat sigs >>okay &&
echo >>okay &&
sed -e "1,/^$/d" basis >>okay &&
cat okay &&
new=$(git hash-object -t commit -w --stdin <okay) &&
test_when_finished "remove_object $new" &&
git update-ref refs/heads/bogus "$new" &&
test_when_finished "git update-ref -d refs/heads/bogus" &&
git fsck 2>out &&
cat out &&
! grep "commit $new" out
tree c9176b0dd1a95c80ad8de21784b1eeffd3681f49
parent 134756353796a5439d93586be27999eea3807a34
author A U Thor <author@example.com> 1112912053 -0700
committer C O Mitter <committer@example.com> 1112912053 -0700
gpgsig -----BEGIN PGP SIGNATURE-----
VGhpcyBpcyBub3QgcmVhbGx5IGEgc2lnbmF0dXJlLg==
-----END PGP SIGNATURE-----
gpgsig-sha256 -----BEGIN PGP SIGNATURE-----
VGhpcyBpcyBub3QgcmVhbGx5IGEgc2lnbmF0dXJlLg==
-----END PGP SIGNATURE-----
B
ok 14 - commit with multiple signatures is okay
expecting success of 1450.15 'email without @ is okay':
git cat-file commit HEAD >basis &&
sed "s/@/AT/" basis >okay &&
new=$(git hash-object -t commit -w --stdin <okay) &&
test_when_finished "remove_object $new" &&
git update-ref refs/heads/bogus "$new" &&
test_when_finished "git update-ref -d refs/heads/bogus" &&
git fsck 2>out &&
! grep "commit $new" out
ok 15 - email without @ is okay
expecting success of 1450.16 'email with embedded > is not okay':
git cat-file commit HEAD >basis &&
sed "s/@[a-z]/&>/" basis >bad-email &&
new=$(git hash-object --literally -t commit -w --stdin <bad-email) &&
test_when_finished "remove_object $new" &&
git update-ref refs/heads/bogus "$new" &&
test_when_finished "git update-ref -d refs/heads/bogus" &&
test_must_fail git fsck 2>out &&
test_i18ngrep "error in commit $new" out
error in commit af421232fcba11d582d625f9041afbe3fccc01d9: missingSpaceBeforeDate: invalid author/committer line - missing space before date
ok 16 - email with embedded > is not okay
expecting success of 1450.17 'missing < email delimiter is reported nicely':
git cat-file commit HEAD >basis &&
sed "s/<//" basis >bad-email-2 &&
new=$(git hash-object --literally -t commit -w --stdin <bad-email-2) &&
test_when_finished "remove_object $new" &&
git update-ref refs/heads/bogus "$new" &&
test_when_finished "git update-ref -d refs/heads/bogus" &&
test_must_fail git fsck 2>out &&
test_i18ngrep "error in commit $new.* - bad name" out
error in commit c4b6d356e934be1cc10cb58c734fbcc5fa3a5285: badName: invalid author/committer line - bad name
ok 17 - missing < email delimiter is reported nicely
expecting success of 1450.18 'missing email is reported nicely':
git cat-file commit HEAD >basis &&
sed "s/[a-z]* <[^>]*>//" basis >bad-email-3 &&
new=$(git hash-object --literally -t commit -w --stdin <bad-email-3) &&
test_when_finished "remove_object $new" &&
git update-ref refs/heads/bogus "$new" &&
test_when_finished "git update-ref -d refs/heads/bogus" &&
test_must_fail git fsck 2>out &&
test_i18ngrep "error in commit $new.* - missing email" out
error in commit 35319efb0a67194811f8583362d460866d58b499: missingEmail: invalid author/committer line - missing email
ok 18 - missing email is reported nicely
expecting success of 1450.19 '> in name is reported':
git cat-file commit HEAD >basis &&
sed "s/ </> </" basis >bad-email-4 &&
new=$(git hash-object --literally -t commit -w --stdin <bad-email-4) &&
test_when_finished "remove_object $new" &&
git update-ref refs/heads/bogus "$new" &&
test_when_finished "git update-ref -d refs/heads/bogus" &&
test_must_fail git fsck 2>out &&
test_i18ngrep "error in commit $new" out
error in commit 301380051321b3e224015eea93b0ebc550c88198: badName: invalid author/committer line - bad name
ok 19 - > in name is reported
expecting success of 1450.20 'integer overflow in timestamps is reported':
git cat-file commit HEAD >basis &&
sed "s/^\\(author .*>\\) [0-9]*/\\1 18446744073709551617/" \
<basis >bad-timestamp &&
new=$(git hash-object --literally -t commit -w --stdin <bad-timestamp) &&
test_when_finished "remove_object $new" &&
git update-ref refs/heads/bogus "$new" &&
test_when_finished "git update-ref -d refs/heads/bogus" &&
test_must_fail git fsck 2>out &&
test_i18ngrep "error in commit $new.*integer overflow" out
error in commit c8453435c3587d0404f88f925c28a5944b73be1a: badDateOverflow: invalid author/committer line - date causes integer overflow
ok 20 - integer overflow in timestamps is reported
expecting success of 1450.21 'commit with NUL in header':
git cat-file commit HEAD >basis &&
sed "s/author ./author Q/" <basis | q_to_nul >commit-NUL-header &&
new=$(git hash-object --literally -t commit -w --stdin <commit-NUL-header) &&
test_when_finished "remove_object $new" &&
git update-ref refs/heads/bogus "$new" &&
test_when_finished "git update-ref -d refs/heads/bogus" &&
test_must_fail git fsck 2>out &&
test_i18ngrep "error in commit $new.*unterminated header: NUL at offset" out
error in commit b70520fa0e6346c648b4013350096f65f49946eb: nulInHeader: unterminated header: NUL at offset 101
ok 21 - commit with NUL in header
expecting success of 1450.22 'tree object with duplicate entries':
test_when_finished "for i in \$T; do remove_object \$i; done" &&
T=$(
GIT_INDEX_FILE=test-index &&
export GIT_INDEX_FILE &&
rm -f test-index &&
>x &&
git add x &&
git rev-parse :x &&
T=$(git write-tree) &&
echo $T &&
(
git cat-file tree $T &&
git cat-file tree $T
) |
git hash-object --literally -w -t tree --stdin
) &&
test_must_fail git fsck 2>out &&
test_i18ngrep "error in tree .*contains duplicate file entries" out
dangling tree 5805b676e247eb9a8046ad0c4d249cd2fb2513df
dangling tree 7997631de77b8a212b5c3e01eff5e9cf1d3c7580
error in tree 7997631de77b8a212b5c3e01eff5e9cf1d3c7580: duplicateEntries: contains duplicate file entries
ok 22 - tree object with duplicate entries
expecting success of 1450.23 'tree object with duplicate names: x x.1 x/':
test_when_finished "remove_object \$blob" &&
test_when_finished "remove_object \$tree" &&
test_when_finished "remove_object \$badtree" &&
blob=$(echo blob | git hash-object -w --stdin) &&
printf "100644 blob %s\t%s\n" $blob x.2 >tree &&
tree=$(git mktree <tree) &&
for name in $names
do
case "$name" in
*/) printf "040000 tree %s\t%s\n" $tree "${name%/}" ;;
*) printf "100644 blob %s\t%s\n" $blob "$name" ;;
esac
done >badtree &&
badtree=$(git mktree <badtree) &&
test_must_fail git fsck 2>out &&
test_i18ngrep "$badtree" out &&
test_i18ngrep "error in tree .*contains duplicate file entries" out
dangling tree 26c966b0589aae52be2c311b1ffbdd28e9ba7d67
error in tree 26c966b0589aae52be2c311b1ffbdd28e9ba7d67: duplicateEntries: contains duplicate file entries
error in tree 26c966b0589aae52be2c311b1ffbdd28e9ba7d67: duplicateEntries: contains duplicate file entries
ok 23 - tree object with duplicate names: x x.1 x/
expecting success of 1450.24 'tree object with duplicate names: x x.1.2 x.1/ x/':
test_when_finished "remove_object \$blob" &&
test_when_finished "remove_object \$tree" &&
test_when_finished "remove_object \$badtree" &&
blob=$(echo blob | git hash-object -w --stdin) &&
printf "100644 blob %s\t%s\n" $blob x.2 >tree &&
tree=$(git mktree <tree) &&
for name in $names
do
case "$name" in
*/) printf "040000 tree %s\t%s\n" $tree "${name%/}" ;;
*) printf "100644 blob %s\t%s\n" $blob "$name" ;;
esac
done >badtree &&
badtree=$(git mktree <badtree) &&
test_must_fail git fsck 2>out &&
test_i18ngrep "$badtree" out &&
test_i18ngrep "error in tree .*contains duplicate file entries" out
dangling tree 464b70bd0f13c75cfbde739fe1ba074454b55bdb
error in tree 464b70bd0f13c75cfbde739fe1ba074454b55bdb: duplicateEntries: contains duplicate file entries
error in tree 464b70bd0f13c75cfbde739fe1ba074454b55bdb: duplicateEntries: contains duplicate file entries
ok 24 - tree object with duplicate names: x x.1.2 x.1/ x/
expecting success of 1450.25 'tree object with duplicate names: x x.1 x.1.2 x/':
test_when_finished "remove_object \$blob" &&
test_when_finished "remove_object \$tree" &&
test_when_finished "remove_object \$badtree" &&
blob=$(echo blob | git hash-object -w --stdin) &&
printf "100644 blob %s\t%s\n" $blob x.2 >tree &&
tree=$(git mktree <tree) &&
for name in $names
do
case "$name" in
*/) printf "040000 tree %s\t%s\n" $tree "${name%/}" ;;
*) printf "100644 blob %s\t%s\n" $blob "$name" ;;
esac
done >badtree &&
badtree=$(git mktree <badtree) &&
test_must_fail git fsck 2>out &&
test_i18ngrep "$badtree" out &&
test_i18ngrep "error in tree .*contains duplicate file entries" out
dangling tree bfbeecf396ef7aaf4d8c67e3615296a445358420
error in tree bfbeecf396ef7aaf4d8c67e3615296a445358420: duplicateEntries: contains duplicate file entries
error in tree bfbeecf396ef7aaf4d8c67e3615296a445358420: duplicateEntries: contains duplicate file entries
ok 25 - tree object with duplicate names: x x.1 x.1.2 x/
expecting success of 1450.26 'unparseable tree object':
test_oid_cache <<-\EOF &&
junk sha1:twenty-bytes-of-junk
junk sha256:twenty-bytes-of-junk-twelve-more
EOF
test_when_finished "git update-ref -d refs/heads/wrong" &&
test_when_finished "remove_object \$tree_sha1" &&
test_when_finished "remove_object \$commit_sha1" &&
junk=$(test_oid junk) &&
tree_sha1=$(printf "100644 \0$junk" | git hash-object -t tree --stdin -w --literally) &&
commit_sha1=$(git commit-tree $tree_sha1) &&
git update-ref refs/heads/wrong $commit_sha1 &&
test_must_fail git fsck 2>out &&
test_i18ngrep "error: empty filename in tree entry" out &&
test_i18ngrep "$tree_sha1" out &&
test_i18ngrep ! "fatal: empty filename in tree entry" out
error: empty filename in tree entry
error: empty filename in tree entry
error: empty filename in tree entry
error in tree b1b45dcb979335e5f09d3b756c4639cab166c243: broken links
error in tree b1b45dcb979335e5f09d3b756c4639cab166c243: badTree: cannot be parsed as a tree
ok 26 - unparseable tree object
expecting success of 1450.27 'tree entry with type mismatch':
test_when_finished "remove_object \$blob" &&
test_when_finished "remove_object \$tree" &&
test_when_finished "remove_object \$commit" &&
test_when_finished "git update-ref -d refs/heads/type_mismatch" &&
blob=$(echo blob | git hash-object -w --stdin) &&
blob_bin=$(echo $blob | hex2oct) &&
tree=$(
printf "40000 dir\0${blob_bin}100644 file\0${blob_bin}" |
git hash-object -t tree --stdin -w --literally
) &&
commit=$(git commit-tree $tree) &&
git update-ref refs/heads/type_mismatch $commit &&
test_must_fail git fsck >out 2>&1 &&
test_i18ngrep "is a blob, not a tree" out &&
test_i18ngrep ! "dangling blob" out
error: object 63499e4ea8e096b831515ceb1d5a7593e4d87ae5 is a blob, not a tree
error: object 63499e4ea8e096b831515ceb1d5a7593e4d87ae5 is a blob, not a tree
ok 27 - tree entry with type mismatch
expecting success of 1450.28 'tree entry with bogus mode':
test_when_finished "remove_object \$blob" &&
test_when_finished "remove_object \$tree" &&
blob=$(echo blob | git hash-object -w --stdin) &&
blob_oct=$(echo $blob | hex2oct) &&
tree=$(printf "100000 foo\0${blob_oct}" |
git hash-object -t tree --stdin -w --literally) &&
git fsck 2>err &&
cat >expect <<-EOF &&
warning in tree $tree: badFilemode: contains bad file modes
EOF
test_cmp expect err
dangling tree fa6222e05ba24eb3b839e1bd1298d82db50e5d2c
ok 28 - tree entry with bogus mode
expecting success of 1450.29 'tag pointing to nonexistent':
badoid=$(test_oid deadbeef) &&
cat >invalid-tag <<-EOF &&
object $badoid
type commit
tag invalid
tagger T A Gger <tagger@example.com> 1234567890 -0000
This is an invalid tag.
EOF
tag=$(git hash-object -t tag -w --stdin <invalid-tag) &&
test_when_finished "remove_object $tag" &&
echo $tag >.git/refs/tags/invalid &&
test_when_finished "git update-ref -d refs/tags/invalid" &&
test_must_fail git fsck --tags >out &&
test_i18ngrep "broken link" out
broken link from tag 5248b3501322f3dd3ac19713bbbe83f70183da53
ok 29 - tag pointing to nonexistent
expecting success of 1450.30 'tag pointing to something else than its type':
sha=$(echo blob | git hash-object -w --stdin) &&
test_when_finished "remove_object $sha" &&
cat >wrong-tag <<-EOF &&
object $sha
type commit
tag wrong
tagger T A Gger <tagger@example.com> 1234567890 -0000
This is an invalid tag.
EOF
tag=$(git hash-object -t tag -w --stdin <wrong-tag) &&
test_when_finished "remove_object $tag" &&
echo $tag >.git/refs/tags/wrong &&
test_when_finished "git update-ref -d refs/tags/wrong" &&
test_must_fail git fsck --tags
error: object 63499e4ea8e096b831515ceb1d5a7593e4d87ae5 is a blob, not a commit
error: bad tag pointer to 63499e4ea8e096b831515ceb1d5a7593e4d87ae5 in 66f6581d549f70e05ca586bc2df5c15a95662c36
error: 66f6581d549f70e05ca586bc2df5c15a95662c36: object could not be parsed: .git/objects/66/f6581d549f70e05ca586bc2df5c15a95662c36
error: object 63499e4ea8e096b831515ceb1d5a7593e4d87ae5 is a blob, not a commit
error: bad tag pointer to 63499e4ea8e096b831515ceb1d5a7593e4d87ae5 in 66f6581d549f70e05ca586bc2df5c15a95662c36
error: refs/tags/wrong: invalid sha1 pointer 66f6581d549f70e05ca586bc2df5c15a95662c36
dangling blob 63499e4ea8e096b831515ceb1d5a7593e4d87ae5
ok 30 - tag pointing to something else than its type
expecting success of 1450.31 'tag with incorrect tag name & missing tagger':
sha=$(git rev-parse HEAD) &&
cat >wrong-tag <<-EOF &&
object $sha
type commit
tag wrong name format
This is an invalid tag.
EOF
tag=$(git hash-object --literally -t tag -w --stdin <wrong-tag) &&
test_when_finished "remove_object $tag" &&
echo $tag >.git/refs/tags/wrong &&
test_when_finished "git update-ref -d refs/tags/wrong" &&
git fsck --tags 2>out &&
cat >expect <<-EOF &&
warning in tag $tag: badTagName: invalid 'tag' name: wrong name format
warning in tag $tag: missingTaggerEntry: invalid format - expected 'tagger' line
EOF
test_cmp expect out
tagged commit c9145d6720f85544cc4bb6009a2e541660aa156b (wrong name format) in 6d73f1b4d41e4fdac4ba717a11e7409876bb75c3
ok 31 - tag with incorrect tag name & missing tagger
expecting success of 1450.32 'tag with bad tagger':
sha=$(git rev-parse HEAD) &&
cat >wrong-tag <<-EOF &&
object $sha
type commit
tag not-quite-wrong
tagger Bad Tagger Name
This is an invalid tag.
EOF
tag=$(git hash-object --literally -t tag -w --stdin <wrong-tag) &&
test_when_finished "remove_object $tag" &&
echo $tag >.git/refs/tags/wrong &&
test_when_finished "git update-ref -d refs/tags/wrong" &&
test_must_fail git fsck --tags 2>out &&
test_i18ngrep "error in tag .*: invalid author/committer" out
error in tag d037dcc834669cc0c5d3416130c899572cb1aedd: missingEmail: invalid author/committer line - missing email
ok 32 - tag with bad tagger
expecting success of 1450.33 'tag with NUL in header':
sha=$(git rev-parse HEAD) &&
q_to_nul >tag-NUL-header <<-EOF &&
object $sha
type commit
tag contains-Q-in-header
tagger T A Gger <tagger@example.com> 1234567890 -0000
This is an invalid tag.
EOF
tag=$(git hash-object --literally -t tag -w --stdin <tag-NUL-header) &&
test_when_finished "remove_object $tag" &&
echo $tag >.git/refs/tags/wrong &&
test_when_finished "git update-ref -d refs/tags/wrong" &&
test_must_fail git fsck --tags 2>out &&
test_i18ngrep "error in tag $tag.*unterminated header: NUL at offset" out
error in tag 6251166df5b0f4b7f840db1a9af555089418c925: nulInHeader: unterminated header: NUL at offset 73
ok 33 - tag with NUL in header
expecting success of 1450.34 'cleaned up':
git fsck >actual 2>&1 &&
test_must_be_empty actual
ok 34 - cleaned up
expecting success of 1450.35 'rev-list --verify-objects':
git rev-list --verify-objects --all >/dev/null 2>out &&
test_must_be_empty out
ok 35 - rev-list --verify-objects
expecting success of 1450.36 'rev-list --verify-objects with bad sha1':
sha=$(echo blob | git hash-object -w --stdin) &&
old=$(test_oid_to_path $sha) &&
new=$(dirname $old)/$(test_oid ff_2) &&
sha="$(dirname $new)$(basename $new)" &&
mv .git/objects/$old .git/objects/$new &&
test_when_finished "remove_object $sha" &&
git update-index --add --cacheinfo 100644 $sha foo &&
test_when_finished "git read-tree -u --reset HEAD" &&
tree=$(git write-tree) &&
test_when_finished "remove_object $tree" &&
cmt=$(echo bogus | git commit-tree $tree) &&
test_when_finished "remove_object $cmt" &&
git update-ref refs/heads/bogus $cmt &&
test_when_finished "git update-ref -d refs/heads/bogus" &&
test_might_fail git rev-list --verify-objects refs/heads/bogus >/dev/null 2>out &&
test_i18ngrep -q "error: hash mismatch $(dirname $new)$(test_oid ff_2)" out
ok 36 - rev-list --verify-objects with bad sha1
expecting success of 1450.37 'rev-list --verify-objects notices swapped commits':
git init swapped-commits &&
(
cd swapped-commits &&
test_commit one &&
test_commit two &&
one_oid=$(git rev-parse HEAD) &&
two_oid=$(git rev-parse HEAD^) &&
one=.git/objects/$(test_oid_to_path $one_oid) &&
two=.git/objects/$(test_oid_to_path $two_oid) &&
mv $one tmp &&
mv $two $one &&
mv tmp $two &&
test_must_fail git rev-list --verify-objects HEAD
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/swapped-commits/.git/
[master (root-commit) 4331c28] one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 one.t
[master 00bbe3d] two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 two.t
error: hash mismatch 00bbe3d52a615188595aba57d395b47d615da292
fatal: bad object HEAD
ok 37 - rev-list --verify-objects notices swapped commits
expecting success of 1450.38 'set up repository with commit-graph':
git init corrupt-graph &&
(
cd corrupt-graph &&
test_commit one &&
test_commit two &&
git commit-graph write --reachable
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/corrupt-graph/.git/
[master (root-commit) 4331c28] one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 one.t
[master 00bbe3d] two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 two.t
ok 38 - set up repository with commit-graph
expecting success of 1450.39 'rev-list --verify-objects with commit graph (tip)':
corrupt_graph_obj HEAD &&
test_must_fail git -C corrupt-graph rev-list --verify-objects HEAD
error: inflate: data stream error (incorrect header check)
error: unable to unpack 00bbe3d52a615188595aba57d395b47d615da292 header
error: inflate: data stream error (incorrect header check)
error: unable to unpack 00bbe3d52a615188595aba57d395b47d615da292 header
fatal: loose object 00bbe3d52a615188595aba57d395b47d615da292 (stored in .git/objects/00/bbe3d52a615188595aba57d395b47d615da292) is corrupt
ok 39 - rev-list --verify-objects with commit graph (tip)
expecting success of 1450.40 'rev-list --verify-objects with commit graph (parent)':
corrupt_graph_obj HEAD^ &&
test_must_fail git -C corrupt-graph rev-list --verify-objects HEAD
error: inflate: data stream error (incorrect header check)
error: unable to unpack 4331c280ae8691e937f22f78e998805a89a91a07 header
fatal: loose object 4331c280ae8691e937f22f78e998805a89a91a07 (stored in .git/objects/43/31c280ae8691e937f22f78e998805a89a91a07) is corrupt
ok 40 - rev-list --verify-objects with commit graph (parent)
expecting success of 1450.41 'force fsck to ignore double author':
git cat-file commit HEAD >basis &&
sed "s/^author .*/&,&/" <basis | tr , \\n >multiple-authors &&
new=$(git hash-object --literally -t commit -w --stdin <multiple-authors) &&
test_when_finished "remove_object $new" &&
git update-ref refs/heads/bogus "$new" &&
test_when_finished "git update-ref -d refs/heads/bogus" &&
test_must_fail git fsck &&
git -c fsck.multipleAuthors=ignore fsck
error in commit 3d94ae45b63882b239b90285e1f253e2d4cd5e9f: multipleAuthors: invalid format - multiple 'author' lines
ok 41 - force fsck to ignore double author
expecting success of 1450.42 'fsck notices blob entry pointing to null sha1':
(git init null-blob &&
cd null-blob &&
sha=$(printf "100644 file$_bz$_bzoid" |
git hash-object --literally -w --stdin -t tree) &&
git fsck 2>out &&
test_i18ngrep "warning.*null sha1" out
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/null-blob/.git/
dangling tree aaf928e9279b56c88bcc8d79f881e5c820ea23e8
warning in tree aaf928e9279b56c88bcc8d79f881e5c820ea23e8: nullSha1: contains entries pointing to null sha1
ok 42 - fsck notices blob entry pointing to null sha1
expecting success of 1450.43 'fsck notices submodule entry pointing to null sha1':
(git init null-commit &&
cd null-commit &&
sha=$(printf "160000 submodule$_bz$_bzoid" |
git hash-object --literally -w --stdin -t tree) &&
git fsck 2>out &&
test_i18ngrep "warning.*null sha1" out
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/null-commit/.git/
dangling tree f87f3eabd15018382578c00e3a71a46c842e17e6
warning in tree f87f3eabd15018382578c00e3a71a46c842e17e6: nullSha1: contains entries pointing to null sha1
ok 43 - fsck notices submodule entry pointing to null sha1
expecting success of 1450.44 'fsck notices . as blob':
(
git init $name-$type &&
cd $name-$type &&
git config core.protectNTFS false &&
echo content >file &&
git add file &&
git commit -m base &&
blob=$(git rev-parse :file) &&
tree=$(git rev-parse HEAD^{tree}) &&
value=$(eval "echo \$$type") &&
printf "$mode $type %s\t%s" "$value" "$path" >bad &&
bad_tree=$(git mktree <bad) &&
git fsck 2>out &&
test_i18ngrep "warning.*tree $bad_tree" out
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/dot-blob/.git/
[master (root-commit) ebd6d19] base
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
dangling tree 4d6a3deda84474ed5f701962ea9bf83c5fe08185
warning in tree 4d6a3deda84474ed5f701962ea9bf83c5fe08185: hasDot: contains '.'
ok 44 - fsck notices . as blob
expecting success of 1450.45 'fsck notices . as tree':
(
git init $name-$type &&
cd $name-$type &&
git config core.protectNTFS false &&
echo content >file &&
git add file &&
git commit -m base &&
blob=$(git rev-parse :file) &&
tree=$(git rev-parse HEAD^{tree}) &&
value=$(eval "echo \$$type") &&
printf "$mode $type %s\t%s" "$value" "$path" >bad &&
bad_tree=$(git mktree <bad) &&
git fsck 2>out &&
test_i18ngrep "warning.*tree $bad_tree" out
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/dot-tree/.git/
[master (root-commit) ebd6d19] base
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
dangling tree 8984d55df404e56c99a9c5a2e5a168084a913e8f
warning in tree 8984d55df404e56c99a9c5a2e5a168084a913e8f: hasDot: contains '.'
ok 45 - fsck notices . as tree
expecting success of 1450.46 'fsck notices .. as blob':
(
git init $name-$type &&
cd $name-$type &&
git config core.protectNTFS false &&
echo content >file &&
git add file &&
git commit -m base &&
blob=$(git rev-parse :file) &&
tree=$(git rev-parse HEAD^{tree}) &&
value=$(eval "echo \$$type") &&
printf "$mode $type %s\t%s" "$value" "$path" >bad &&
bad_tree=$(git mktree <bad) &&
git fsck 2>out &&
test_i18ngrep "warning.*tree $bad_tree" out
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/dotdot-blob/.git/
[master (root-commit) ebd6d19] base
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
dangling tree 879560d9e3297f45ca9c25d4eea563f8dd179a32
warning in tree 879560d9e3297f45ca9c25d4eea563f8dd179a32: hasDotdot: contains '..'
ok 46 - fsck notices .. as blob
expecting success of 1450.47 'fsck notices .. as tree':
(
git init $name-$type &&
cd $name-$type &&
git config core.protectNTFS false &&
echo content >file &&
git add file &&
git commit -m base &&
blob=$(git rev-parse :file) &&
tree=$(git rev-parse HEAD^{tree}) &&
value=$(eval "echo \$$type") &&
printf "$mode $type %s\t%s" "$value" "$path" >bad &&
bad_tree=$(git mktree <bad) &&
git fsck 2>out &&
test_i18ngrep "warning.*tree $bad_tree" out
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/dotdot-tree/.git/
[master (root-commit) ebd6d19] base
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
dangling tree e704ff9811f799e752c8894dbc145bc74e4561fa
warning in tree e704ff9811f799e752c8894dbc145bc74e4561fa: hasDotdot: contains '..'
ok 47 - fsck notices .. as tree
expecting success of 1450.48 'fsck notices .git as blob':
(
git init $name-$type &&
cd $name-$type &&
git config core.protectNTFS false &&
echo content >file &&
git add file &&
git commit -m base &&
blob=$(git rev-parse :file) &&
tree=$(git rev-parse HEAD^{tree}) &&
value=$(eval "echo \$$type") &&
printf "$mode $type %s\t%s" "$value" "$path" >bad &&
bad_tree=$(git mktree <bad) &&
git fsck 2>out &&
test_i18ngrep "warning.*tree $bad_tree" out
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/dotgit-blob/.git/
[master (root-commit) ebd6d19] base
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
dangling tree 8ac5f64528d35de17a03755d2f3387af1de58b5a
warning in tree 8ac5f64528d35de17a03755d2f3387af1de58b5a: hasDotgit: contains '.git'
ok 48 - fsck notices .git as blob
expecting success of 1450.49 'fsck notices .git as tree':
(
git init $name-$type &&
cd $name-$type &&
git config core.protectNTFS false &&
echo content >file &&
git add file &&
git commit -m base &&
blob=$(git rev-parse :file) &&
tree=$(git rev-parse HEAD^{tree}) &&
value=$(eval "echo \$$type") &&
printf "$mode $type %s\t%s" "$value" "$path" >bad &&
bad_tree=$(git mktree <bad) &&
git fsck 2>out &&
test_i18ngrep "warning.*tree $bad_tree" out
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/dotgit-tree/.git/
[master (root-commit) ebd6d19] base
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
dangling tree 69237360529ca48e6b6c1af14e753faabe339fb7
warning in tree 69237360529ca48e6b6c1af14e753faabe339fb7: hasDotgit: contains '.git'
ok 49 - fsck notices .git as tree
expecting success of 1450.50 'fsck notices .GIT as blob':
(
git init $name-$type &&
cd $name-$type &&
git config core.protectNTFS false &&
echo content >file &&
git add file &&
git commit -m base &&
blob=$(git rev-parse :file) &&
tree=$(git rev-parse HEAD^{tree}) &&
value=$(eval "echo \$$type") &&
printf "$mode $type %s\t%s" "$value" "$path" >bad &&
bad_tree=$(git mktree <bad) &&
git fsck 2>out &&
test_i18ngrep "warning.*tree $bad_tree" out
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/dotgit-case-blob/.git/
[master (root-commit) ebd6d19] base
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
dangling tree 56bac0d7a0a3c1451521352e3d40117e5ffc602e
warning in tree 56bac0d7a0a3c1451521352e3d40117e5ffc602e: hasDotgit: contains '.git'
ok 50 - fsck notices .GIT as blob
expecting success of 1450.51 'fsck notices .GIT as tree':
(
git init $name-$type &&
cd $name-$type &&
git config core.protectNTFS false &&
echo content >file &&
git add file &&
git commit -m base &&
blob=$(git rev-parse :file) &&
tree=$(git rev-parse HEAD^{tree}) &&
value=$(eval "echo \$$type") &&
printf "$mode $type %s\t%s" "$value" "$path" >bad &&
bad_tree=$(git mktree <bad) &&
git fsck 2>out &&
test_i18ngrep "warning.*tree $bad_tree" out
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/dotgit-case-tree/.git/
[master (root-commit) ebd6d19] base
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
dangling tree 968a2dfde1e164e0513456c00ef656b2497434a3
warning in tree 968a2dfde1e164e0513456c00ef656b2497434a3: hasDotgit: contains '.git'
ok 51 - fsck notices .GIT as tree
expecting success of 1450.52 'fsck notices .gI{u200c}T as blob':
(
git init $name-$type &&
cd $name-$type &&
git config core.protectNTFS false &&
echo content >file &&
git add file &&
git commit -m base &&
blob=$(git rev-parse :file) &&
tree=$(git rev-parse HEAD^{tree}) &&
value=$(eval "echo \$$type") &&
printf "$mode $type %s\t%s" "$value" "$path" >bad &&
bad_tree=$(git mktree <bad) &&
git fsck 2>out &&
test_i18ngrep "warning.*tree $bad_tree" out
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/dotgit-unicode-blob/.git/
[master (root-commit) ebd6d19] base
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
dangling tree 2b65491a1b39699fb2bffda8e997c85fcb9c7beb
warning in tree 2b65491a1b39699fb2bffda8e997c85fcb9c7beb: hasDotgit: contains '.git'
ok 52 - fsck notices .gI{u200c}T as blob
expecting success of 1450.53 'fsck notices .gI{u200c}T as tree':
(
git init $name-$type &&
cd $name-$type &&
git config core.protectNTFS false &&
echo content >file &&
git add file &&
git commit -m base &&
blob=$(git rev-parse :file) &&
tree=$(git rev-parse HEAD^{tree}) &&
value=$(eval "echo \$$type") &&
printf "$mode $type %s\t%s" "$value" "$path" >bad &&
bad_tree=$(git mktree <bad) &&
git fsck 2>out &&
test_i18ngrep "warning.*tree $bad_tree" out
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/dotgit-unicode-tree/.git/
[master (root-commit) ebd6d19] base
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
dangling tree 6a547d921721f1cf91601a53fcc7aae232947d23
warning in tree 6a547d921721f1cf91601a53fcc7aae232947d23: hasDotgit: contains '.git'
ok 53 - fsck notices .gI{u200c}T as tree
expecting success of 1450.54 'fsck notices .Git as blob':
(
git init $name-$type &&
cd $name-$type &&
git config core.protectNTFS false &&
echo content >file &&
git add file &&
git commit -m base &&
blob=$(git rev-parse :file) &&
tree=$(git rev-parse HEAD^{tree}) &&
value=$(eval "echo \$$type") &&
printf "$mode $type %s\t%s" "$value" "$path" >bad &&
bad_tree=$(git mktree <bad) &&
git fsck 2>out &&
test_i18ngrep "warning.*tree $bad_tree" out
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/dotgit-case2-blob/.git/
[master (root-commit) ebd6d19] base
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
dangling tree 3e29dd65f814deffead951c60da749fdf8a668c8
warning in tree 3e29dd65f814deffead951c60da749fdf8a668c8: hasDotgit: contains '.git'
ok 54 - fsck notices .Git as blob
expecting success of 1450.55 'fsck notices .Git as tree':
(
git init $name-$type &&
cd $name-$type &&
git config core.protectNTFS false &&
echo content >file &&
git add file &&
git commit -m base &&
blob=$(git rev-parse :file) &&
tree=$(git rev-parse HEAD^{tree}) &&
value=$(eval "echo \$$type") &&
printf "$mode $type %s\t%s" "$value" "$path" >bad &&
bad_tree=$(git mktree <bad) &&
git fsck 2>out &&
test_i18ngrep "warning.*tree $bad_tree" out
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/dotgit-case2-tree/.git/
[master (root-commit) ebd6d19] base
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
dangling tree 50c7c9624762f2fe0d4efe5cba98835f58822ef4
warning in tree 50c7c9624762f2fe0d4efe5cba98835f58822ef4: hasDotgit: contains '.git'
ok 55 - fsck notices .Git as tree
expecting success of 1450.56 'fsck notices git~1 as blob':
(
git init $name-$type &&
cd $name-$type &&
git config core.protectNTFS false &&
echo content >file &&
git add file &&
git commit -m base &&
blob=$(git rev-parse :file) &&
tree=$(git rev-parse HEAD^{tree}) &&
value=$(eval "echo \$$type") &&
printf "$mode $type %s\t%s" "$value" "$path" >bad &&
bad_tree=$(git mktree <bad) &&
git fsck 2>out &&
test_i18ngrep "warning.*tree $bad_tree" out
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/git-tilde1-blob/.git/
[master (root-commit) ebd6d19] base
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
dangling tree 1206e1b64fcedc2a9e7b8195c1c4c1a278285b20
warning in tree 1206e1b64fcedc2a9e7b8195c1c4c1a278285b20: hasDotgit: contains '.git'
ok 56 - fsck notices git~1 as blob
expecting success of 1450.57 'fsck notices git~1 as tree':
(
git init $name-$type &&
cd $name-$type &&
git config core.protectNTFS false &&
echo content >file &&
git add file &&
git commit -m base &&
blob=$(git rev-parse :file) &&
tree=$(git rev-parse HEAD^{tree}) &&
value=$(eval "echo \$$type") &&
printf "$mode $type %s\t%s" "$value" "$path" >bad &&
bad_tree=$(git mktree <bad) &&
git fsck 2>out &&
test_i18ngrep "warning.*tree $bad_tree" out
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/git-tilde1-tree/.git/
[master (root-commit) ebd6d19] base
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
dangling tree 06f99accfb778f3318c72f3ae1c809cca146d27c
warning in tree 06f99accfb778f3318c72f3ae1c809cca146d27c: hasDotgit: contains '.git'
ok 57 - fsck notices git~1 as tree
expecting success of 1450.58 'fsck notices .git. as blob':
(
git init $name-$type &&
cd $name-$type &&
git config core.protectNTFS false &&
echo content >file &&
git add file &&
git commit -m base &&
blob=$(git rev-parse :file) &&
tree=$(git rev-parse HEAD^{tree}) &&
value=$(eval "echo \$$type") &&
printf "$mode $type %s\t%s" "$value" "$path" >bad &&
bad_tree=$(git mktree <bad) &&
git fsck 2>out &&
test_i18ngrep "warning.*tree $bad_tree" out
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/dotgitdot-blob/.git/
[master (root-commit) ebd6d19] base
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
dangling tree 08554698725ae2bc2c2ae0172779111c62bda7a2
warning in tree 08554698725ae2bc2c2ae0172779111c62bda7a2: hasDotgit: contains '.git'
ok 58 - fsck notices .git. as blob
expecting success of 1450.59 'fsck notices .git. as tree':
(
git init $name-$type &&
cd $name-$type &&
git config core.protectNTFS false &&
echo content >file &&
git add file &&
git commit -m base &&
blob=$(git rev-parse :file) &&
tree=$(git rev-parse HEAD^{tree}) &&
value=$(eval "echo \$$type") &&
printf "$mode $type %s\t%s" "$value" "$path" >bad &&
bad_tree=$(git mktree <bad) &&
git fsck 2>out &&
test_i18ngrep "warning.*tree $bad_tree" out
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/dotgitdot-tree/.git/
[master (root-commit) ebd6d19] base
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
dangling tree 4d7df7e65b79aeef4640dbfba95705b94a2bc266
warning in tree 4d7df7e65b79aeef4640dbfba95705b94a2bc266: hasDotgit: contains '.git'
ok 59 - fsck notices .git. as tree
expecting success of 1450.60 'fsck notices .\.GIT\foobar as blob':
(
git init $name-$type &&
cd $name-$type &&
git config core.protectNTFS false &&
echo content >file &&
git add file &&
git commit -m base &&
blob=$(git rev-parse :file) &&
tree=$(git rev-parse HEAD^{tree}) &&
value=$(eval "echo \$$type") &&
printf "$mode $type %s\t%s" "$value" "$path" >bad &&
bad_tree=$(git mktree <bad) &&
git fsck 2>out &&
test_i18ngrep "warning.*tree $bad_tree" out
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/dot-backslash-case-blob/.git/
[master (root-commit) ebd6d19] base
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
dangling tree 4447c608c557aa9e2d0d226c7af1f06937133ea1
warning in tree 4447c608c557aa9e2d0d226c7af1f06937133ea1: hasDotgit: contains '.git'
ok 60 - fsck notices .\.GIT\foobar as blob
expecting success of 1450.61 'fsck notices .\.GIT\foobar as tree':
(
git init $name-$type &&
cd $name-$type &&
git config core.protectNTFS false &&
echo content >file &&
git add file &&
git commit -m base &&
blob=$(git rev-parse :file) &&
tree=$(git rev-parse HEAD^{tree}) &&
value=$(eval "echo \$$type") &&
printf "$mode $type %s\t%s" "$value" "$path" >bad &&
bad_tree=$(git mktree <bad) &&
git fsck 2>out &&
test_i18ngrep "warning.*tree $bad_tree" out
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/dot-backslash-case-tree/.git/
[master (root-commit) ebd6d19] base
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
dangling tree a8562dc6d26106f039fc8af6b2aa6fed2b1e14d4
warning in tree a8562dc6d26106f039fc8af6b2aa6fed2b1e14d4: hasDotgit: contains '.git'
ok 61 - fsck notices .\.GIT\foobar as tree
expecting success of 1450.62 'fsck notices .git\foobar as blob':
(
git init $name-$type &&
cd $name-$type &&
git config core.protectNTFS false &&
echo content >file &&
git add file &&
git commit -m base &&
blob=$(git rev-parse :file) &&
tree=$(git rev-parse HEAD^{tree}) &&
value=$(eval "echo \$$type") &&
printf "$mode $type %s\t%s" "$value" "$path" >bad &&
bad_tree=$(git mktree <bad) &&
git fsck 2>out &&
test_i18ngrep "warning.*tree $bad_tree" out
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/dotgit-case-backslash-blob/.git/
[master (root-commit) ebd6d19] base
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
dangling tree 707c253cde8e3742e9f02a3cf02fdc4ca0f55652
warning in tree 707c253cde8e3742e9f02a3cf02fdc4ca0f55652: hasDotgit: contains '.git'
ok 62 - fsck notices .git\foobar as blob
expecting success of 1450.63 'fsck notices .git\foobar as tree':
(
git init $name-$type &&
cd $name-$type &&
git config core.protectNTFS false &&
echo content >file &&
git add file &&
git commit -m base &&
blob=$(git rev-parse :file) &&
tree=$(git rev-parse HEAD^{tree}) &&
value=$(eval "echo \$$type") &&
printf "$mode $type %s\t%s" "$value" "$path" >bad &&
bad_tree=$(git mktree <bad) &&
git fsck 2>out &&
test_i18ngrep "warning.*tree $bad_tree" out
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/dotgit-case-backslash-tree/.git/
[master (root-commit) ebd6d19] base
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
dangling tree caa586f8ddde64c3fc9157a3a262c9bd6a6a41ff
warning in tree caa586f8ddde64c3fc9157a3a262c9bd6a6a41ff: hasDotgit: contains '.git'
ok 63 - fsck notices .git\foobar as tree
expecting success of 1450.64 'fsck allows .Ňit':
(
git init not-dotgit &&
cd not-dotgit &&
echo content >file &&
git add file &&
git commit -m base &&
blob=$(git rev-parse :file) &&
printf "100644 blob $blob\t.\\305\\207it" >tree &&
tree=$(git mktree <tree) &&
git fsck 2>err &&
test_line_count = 0 err
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/not-dotgit/.git/
[master (root-commit) ebd6d19] base
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
dangling tree b6cf3d0dca284724c6c6a7005056d573f86157d7
ok 64 - fsck allows .Ňit
expecting success of 1450.65 'NUL in commit':
rm -fr nul-in-commit &&
git init nul-in-commit &&
(
cd nul-in-commit &&
git commit --allow-empty -m "initial commitQNUL after message" &&
git cat-file commit HEAD >original &&
q_to_nul <original >munged &&
git hash-object --literally -w -t commit --stdin <munged >name &&
git branch bad $(cat name) &&
test_must_fail git -c fsck.nulInCommit=error fsck 2>warn.1 &&
test_i18ngrep nulInCommit warn.1 &&
git fsck 2>warn.2 &&
test_i18ngrep nulInCommit warn.2
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/nul-in-commit/.git/
[master (root-commit) c31a7f2] initial commitQNUL after message
Author: A U Thor <author@example.com>
error in commit f2f2305a657f7e4cfa7cd358e43c37ab0394720d: nulInCommit: NUL byte in the commit object body
warning in commit f2f2305a657f7e4cfa7cd358e43c37ab0394720d: nulInCommit: NUL byte in the commit object body
ok 65 - NUL in commit
expecting success of 1450.66 'fsck notices missing blob':
create_repo_missing HEAD:subdir/file &&
test_must_fail git -C missing fsck
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/missing/.git/
[master (root-commit) d38f542] one
Author: A U Thor <author@example.com>
[master ca32bda] two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 subdir/file
missing blob d95f3ad14dee633a758d2e331151e950dd13e4ed
ok 66 - fsck notices missing blob
expecting success of 1450.67 'fsck notices missing subtree':
create_repo_missing HEAD:subdir &&
test_must_fail git -C missing fsck
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/missing/.git/
[master (root-commit) d38f542] one
Author: A U Thor <author@example.com>
[master ca32bda] two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 subdir/file
error: 07753f428765ac1afe2020b24e40785869bd4a85: invalid sha1 pointer in cache-tree of .git/index
broken link from tree 5f9d5fe4279246e5b2ddcd446efc2aed53a52304
to tree 07753f428765ac1afe2020b24e40785869bd4a85
missing tree 07753f428765ac1afe2020b24e40785869bd4a85
ok 67 - fsck notices missing subtree
expecting success of 1450.68 'fsck notices missing root tree':
create_repo_missing HEAD^{tree} &&
test_must_fail git -C missing fsck
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/missing/.git/
[master (root-commit) d38f542] one
Author: A U Thor <author@example.com>
[master ca32bda] two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 subdir/file
error: 5f9d5fe4279246e5b2ddcd446efc2aed53a52304: invalid sha1 pointer in cache-tree of .git/index
broken link from commit ca32bdaaf4ee9eab00bafa6471c9a2fa98fc42c3
to tree 5f9d5fe4279246e5b2ddcd446efc2aed53a52304
dangling tree 07753f428765ac1afe2020b24e40785869bd4a85
missing tree 5f9d5fe4279246e5b2ddcd446efc2aed53a52304
ok 68 - fsck notices missing root tree
expecting success of 1450.69 'fsck notices missing parent':
create_repo_missing HEAD^ &&
test_must_fail git -C missing fsck
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/missing/.git/
[master (root-commit) d38f542] one
Author: A U Thor <author@example.com>
[master ca32bda] two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 subdir/file
error: HEAD: invalid reflog entry d38f542f2d868bcbbb09173528a3bb403f53a0f0
error: HEAD: invalid reflog entry d38f542f2d868bcbbb09173528a3bb403f53a0f0
error: refs/heads/master: invalid reflog entry d38f542f2d868bcbbb09173528a3bb403f53a0f0
error: refs/heads/master: invalid reflog entry d38f542f2d868bcbbb09173528a3bb403f53a0f0
broken link from commit ca32bdaaf4ee9eab00bafa6471c9a2fa98fc42c3
to commit d38f542f2d868bcbbb09173528a3bb403f53a0f0
dangling tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904
missing commit d38f542f2d868bcbbb09173528a3bb403f53a0f0
ok 69 - fsck notices missing parent
expecting success of 1450.70 'fsck notices missing tagged object':
create_repo_missing tag^{blob} &&
test_must_fail git -C missing fsck
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/missing/.git/
[master (root-commit) d38f542] one
Author: A U Thor <author@example.com>
[master ca32bda] two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 subdir/file
broken link from tag 7c115056e13b1f41142fe9e6f6cb98a1c077facd
to blob c21c9352f7526e9576892a6631e0e8cf1fccd34d
missing blob c21c9352f7526e9576892a6631e0e8cf1fccd34d
ok 70 - fsck notices missing tagged object
expecting success of 1450.71 'fsck notices ref pointing to missing commit':
create_repo_missing HEAD &&
test_must_fail git -C missing fsck
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/missing/.git/
[master (root-commit) d38f542] one
Author: A U Thor <author@example.com>
[master ca32bda] two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 subdir/file
error: refs/heads/master: invalid sha1 pointer ca32bdaaf4ee9eab00bafa6471c9a2fa98fc42c3
error: HEAD: invalid sha1 pointer ca32bdaaf4ee9eab00bafa6471c9a2fa98fc42c3
error: HEAD: invalid reflog entry ca32bdaaf4ee9eab00bafa6471c9a2fa98fc42c3
error: refs/heads/master: invalid reflog entry ca32bdaaf4ee9eab00bafa6471c9a2fa98fc42c3
ok 71 - fsck notices ref pointing to missing commit
expecting success of 1450.72 'fsck notices ref pointing to missing tag':
create_repo_missing tag &&
test_must_fail git -C missing fsck
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/missing/.git/
[master (root-commit) d38f542] one
Author: A U Thor <author@example.com>
[master ca32bda] two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 subdir/file
error: refs/tags/tag: invalid sha1 pointer 7c115056e13b1f41142fe9e6f6cb98a1c077facd
dangling blob c21c9352f7526e9576892a6631e0e8cf1fccd34d
ok 72 - fsck notices ref pointing to missing tag
expecting success of 1450.73 'fsck --connectivity-only':
rm -rf connectivity-only &&
git init connectivity-only &&
(
cd connectivity-only &&
touch empty &&
git add empty &&
test_commit empty &&
# Drop the index now; we want to be sure that we
# recursively notice the broken objects
# because they are reachable from refs, not because
# they are in the index.
rm -f .git/index &&
# corrupt the blob, but in a way that we can still identify
# its type. That lets us see that --connectivity-only is
# not actually looking at the contents, but leaves it
# free to examine the type if it chooses.
empty=.git/objects/$(test_oid_to_path $EMPTY_BLOB) &&
blob=$(echo unrelated | git hash-object -w --stdin) &&
mv -f $(sha1_file $blob) $empty &&
test_must_fail git fsck --strict &&
git fsck --strict --connectivity-only &&
tree=$(git rev-parse HEAD:) &&
suffix=${tree#??} &&
tree=.git/objects/${tree%$suffix}/$suffix &&
rm -f $tree &&
echo invalid >$tree &&
test_must_fail git fsck --strict --connectivity-only
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/connectivity-only/.git/
[master (root-commit) 86520b7] empty
Author: A U Thor <author@example.com>
2 files changed, 1 insertion(+)
create mode 100644 empty
create mode 100644 empty.t
error: c21c9352f7526e9576892a6631e0e8cf1fccd34d: hash-path mismatch, found at: .git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391
missing blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
error: inflate: data stream error (incorrect header check)
error: unable to unpack 0d3d3508cb204b9201d016862e6025a49e8c01d6 header
fatal: loose object 0d3d3508cb204b9201d016862e6025a49e8c01d6 (stored in .git/objects/0d/3d3508cb204b9201d016862e6025a49e8c01d6) is corrupt
ok 73 - fsck --connectivity-only
expecting success of 1450.74 'fsck --connectivity-only with explicit head':
rm -rf connectivity-only &&
git init connectivity-only &&
(
cd connectivity-only &&
test_commit foo &&
rm -f .git/index &&
tree=$(git rev-parse HEAD^{tree}) &&
remove_object $(git rev-parse HEAD:foo.t) &&
test_must_fail git fsck --connectivity-only $tree
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/connectivity-only/.git/
[master (root-commit) 31f3b95] foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo.t
broken link from tree 64fd3796c57084e7b8cbae358ce37970b8e954f6
to blob 257cc5642cb1a054f08cc83f2d943e56fd3ebe99
missing blob 257cc5642cb1a054f08cc83f2d943e56fd3ebe99
dangling commit 31f3b953b325df75c7b6fbf854b59ac67382ac3b
ok 74 - fsck --connectivity-only with explicit head
expecting success of 1450.75 'fsck --name-objects':
rm -rf name-objects &&
git init name-objects &&
(
cd name-objects &&
git config core.logAllRefUpdates false &&
test_commit julius caesar.t &&
test_commit augustus44 &&
test_commit caesar &&
remove_object $(git rev-parse julius:caesar.t) &&
tree=$(git rev-parse --verify julius:) &&
git tag -d julius &&
test_must_fail git fsck --name-objects >out &&
test_i18ngrep "$tree (refs/tags/augustus44\\^:" out
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/name-objects/.git/
[master (root-commit) 6ab43a8] julius
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 caesar.t
[master d65fd68] augustus44
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 augustus44.t
[master 6d0b31d] caesar
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Deleted tag 'julius' (was 6ab43a8)
broken link from tree c2fab98f409a47394d992eca10a20e0b22377c0c (refs/tags/augustus44^:)
ok 75 - fsck --name-objects
expecting success of 1450.76 'alternate objects are correctly blamed':
test_when_finished "rm -rf alt.git .git/objects/info/alternates" &&
name=$(test_oid numeric) &&
path=$(test_oid_to_path "$name") &&
git init --bare alt.git &&
echo "../../alt.git/objects" >.git/objects/info/alternates &&
mkdir alt.git/objects/$(dirname $path) &&
>alt.git/objects/$(dirname $path)/$(basename $path) &&
test_must_fail git fsck >out 2>&1 &&
test_i18ngrep alt.git out
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/alt.git/
error: object file /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/alt.git/objects/01/23456789012345678901234567890123456789 is empty
error: unable to mmap /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/alt.git/objects/01/23456789012345678901234567890123456789: No such file or directory
error: 0123456789012345678901234567890123456789: object corrupt or missing: /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/alt.git/objects/01/23456789012345678901234567890123456789
ok 76 - alternate objects are correctly blamed
expecting success of 1450.77 'fsck errors in packed objects':
git cat-file commit HEAD >basis &&
sed "s/</one/" basis >one &&
sed "s/</foo/" basis >two &&
one=$(git hash-object --literally -t commit -w one) &&
two=$(git hash-object --literally -t commit -w two) &&
pack=$(
{
echo $one &&
echo $two
} | git pack-objects .git/objects/pack/pack
) &&
test_when_finished "rm -f .git/objects/pack/pack-$pack.*" &&
remove_object $one &&
remove_object $two &&
test_must_fail git fsck 2>out &&
test_i18ngrep "error in commit $one.* - bad name" out &&
test_i18ngrep "error in commit $two.* - bad name" out &&
! grep corrupt out
dangling commit a55646b2b4c741ed105e2e5c54365a5b4051c7e2
dangling commit e705fceb9d8aec1503002ea31f4f68ea707e88ef
error in commit e705fceb9d8aec1503002ea31f4f68ea707e88ef: badName: invalid author/committer line - bad name
error in commit a55646b2b4c741ed105e2e5c54365a5b4051c7e2: badName: invalid author/committer line - bad name
ok 77 - fsck errors in packed objects
expecting success of 1450.78 'fsck fails on corrupt packfile':
hsh=$(git commit-tree -m mycommit HEAD^{tree}) &&
pack=$(echo $hsh | git pack-objects .git/objects/pack/pack) &&
# Corrupt the first byte of the first object. (It contains 3 type bits,
# at least one of which is not zero, so setting the first byte to 0 is
# sufficient.)
chmod a+w .git/objects/pack/pack-$pack.pack &&
printf "\0" | dd of=.git/objects/pack/pack-$pack.pack bs=1 conv=notrunc seek=12 &&
test_when_finished "rm -f .git/objects/pack/pack-$pack.*" &&
remove_object $hsh &&
test_must_fail git fsck 2>out &&
test_i18ngrep "checksum mismatch" out
1+0 records in
1+0 records out
1 byte copied, 0.000270204 s, 3.7 kB/s
error: .git/objects/pack/pack-8be9f6a4139bcddd74c3d2ed343bb71e87863c4b.pack pack checksum mismatch
ok 78 - fsck fails on corrupt packfile
expecting success of 1450.79 'fsck finds problems in duplicate loose objects':
rm -rf broken-duplicate &&
git init broken-duplicate &&
(
cd broken-duplicate &&
test_commit duplicate &&
# no "-d" here, so we end up with duplicates
git repack &&
# now corrupt the loose copy
oid="$(git rev-parse HEAD)" &&
file=$(sha1_file "$oid") &&
rm "$file" &&
echo broken >"$file" &&
test_must_fail git fsck 2>err &&
cat >expect <<-EOF &&
error: inflate: data stream error (incorrect header check)
error: unable to unpack header of $file
error: $oid: object corrupt or missing: $file
EOF
grep "^error: " err >actual &&
test_cmp expect actual
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/broken-duplicate/.git/
[master (root-commit) d19e0e2] duplicate
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 duplicate.t
ok 79 - fsck finds problems in duplicate loose objects
expecting success of 1450.80 'fsck detects trailing loose garbage (commit)':
git cat-file commit HEAD >basis &&
echo bump-commit-sha1 >>basis &&
commit=$(git hash-object -w -t commit basis) &&
file=$(sha1_file $commit) &&
test_when_finished "remove_object $commit" &&
chmod +w "$file" &&
echo garbage >>"$file" &&
test_must_fail git fsck 2>out &&
test_i18ngrep "garbage.*$commit" out
error: garbage at end of loose object '59ac8713639e31797addb7a886b8f5f6637bda3c'
ok 80 - fsck detects trailing loose garbage (commit)
expecting success of 1450.81 'fsck detects trailing loose garbage (large blob)':
blob=$(echo trailing | git hash-object -w --stdin) &&
file=$(sha1_file $blob) &&
test_when_finished "remove_object $blob" &&
chmod +w "$file" &&
echo garbage >>"$file" &&
test_must_fail git -c core.bigfilethreshold=5 fsck 2>out &&
test_i18ngrep "garbage.*$blob" out
error: garbage at end of loose object '1e285548b47be8577f0549b6ebcecb242e692df3'
ok 81 - fsck detects trailing loose garbage (large blob)
expecting success of 1450.82 'fsck detects truncated loose object':
# make it big enough that we know we will truncate in the data
# portion, not the header
test-tool genrandom truncate 4096 >file &&
blob=$(git hash-object -w file) &&
file=$(sha1_file $blob) &&
test_when_finished "remove_object $blob" &&
test_copy_bytes 1024 <"$file" >tmp &&
rm "$file" &&
mv -f tmp "$file" &&
# check both regular and streaming code paths
test_must_fail git fsck 2>out &&
test_i18ngrep corrupt.*$blob out &&
test_must_fail git -c core.bigfilethreshold=128 fsck 2>out &&
test_i18ngrep corrupt.*$blob out
error: corrupt loose object 'a56f9fb3e06dcfb3e5088f319ee1d4ccd1e05098'
error: corrupt loose object 'a56f9fb3e06dcfb3e5088f319ee1d4ccd1e05098'
ok 82 - fsck detects truncated loose object
expecting success of 1450.83 'create dangling-object repository':
git init dangling &&
(
cd dangling &&
blob=$(echo not-dangling | git hash-object -w --stdin) &&
dblob=$(echo dangling | git hash-object -w --stdin) &&
tree=$(printf "100644 blob %s\t%s\n" $blob one | git mktree) &&
dtree=$(printf "100644 blob %s\t%s\n" $blob two | git mktree) &&
commit=$(git commit-tree $tree) &&
dcommit=$(git commit-tree -p $commit $tree) &&
cat >expect <<-EOF
dangling blob $dblob
dangling commit $dcommit
dangling tree $dtree
EOF
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/dangling/.git/
ok 83 - create dangling-object repository
expecting success of 1450.84 'fsck notices dangling objects':
(
cd dangling &&
git fsck >actual &&
# the output order is non-deterministic, as it comes from a hash
sort <actual >actual.sorted &&
test_cmp expect actual.sorted
)
notice: HEAD points to an unborn branch (master)
notice: No default references
ok 84 - fsck notices dangling objects
expecting success of 1450.85 'fsck --connectivity-only notices dangling objects':
(
cd dangling &&
git fsck --connectivity-only >actual &&
# the output order is non-deterministic, as it comes from a hash
sort <actual >actual.sorted &&
test_cmp expect actual.sorted
)
notice: HEAD points to an unborn branch (master)
notice: No default references
ok 85 - fsck --connectivity-only notices dangling objects
expecting success of 1450.86 'fsck $name notices bogus $name':
test_must_fail git fsck bogus &&
test_must_fail git fsck $ZERO_OID
error: invalid parameter: expected sha1, got 'bogus'
dangling commit c9145d6720f85544cc4bb6009a2e541660aa156b
error: 0000000000000000000000000000000000000000: object missing
dangling commit c9145d6720f85544cc4bb6009a2e541660aa156b
ok 86 - fsck $name notices bogus $name
expecting success of 1450.87 'bogus head does not fallback to all heads':
# set up a case that will cause a reachability complaint
echo to-be-deleted >foo &&
git add foo &&
blob=$(git rev-parse :foo) &&
test_when_finished "git rm --cached foo" &&
remove_object $blob &&
test_must_fail git fsck $ZERO_OID >out 2>&1 &&
! grep $blob out
rm 'foo'
ok 87 - bogus head does not fallback to all heads
expecting success of 1450.88 'detect corrupt index file in fsck':
cp .git/index .git/index.backup &&
test_when_finished "mv .git/index.backup .git/index" &&
corrupt_index_checksum &&
test_must_fail git fsck --cache 2>errors &&
test_i18ngrep "bad index file" errors
error: bad index file sha1 signature
ok 88 - detect corrupt index file in fsck
expecting success of 1450.89 'fsck error and recovery on invalid object type':
git init --bare garbage-type &&
(
cd garbage-type &&
garbage_blob=$(git hash-object --stdin -w -t garbage --literally </dev/null) &&
test_must_fail git fsck 2>err &&
grep -e "^error" -e "^fatal" err >errors &&
test_line_count = 1 errors &&
grep "$garbage_blob: object is of unknown type 'garbage':" err
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1450-fsck/garbage-type/
error: 8315a83d2acc4c174aed59430f9a9c4ed926440f: object is of unknown type 'garbage': ./objects/83/15a83d2acc4c174aed59430f9a9c4ed926440f
ok 89 - fsck error and recovery on invalid object type
expecting success of 1450.90 'fsck error on gitattributes with excessive line lengths':
blob=$(printf "pattern %02048d" 1 | git hash-object -w --stdin) &&
test_when_finished "remove_object $blob" &&
tree=$(printf "100644 blob %s\t%s\n" $blob .gitattributes | git mktree) &&
test_when_finished "remove_object $tree" &&
cat >expected <<-EOF &&
error in blob $blob: gitattributesLineLength: .gitattributes has too long lines to parse
EOF
test_must_fail git fsck --no-dangling >actual 2>&1 &&
test_cmp expected actual
ok 90 - fsck error on gitattributes with excessive line lengths
expecting success of 1450.91 'fsck error on gitattributes with excessive size':
blob=$(test-tool genzeros $((100 * 1024 * 1024 + 1)) | git hash-object -w --stdin) &&
test_when_finished "remove_object $blob" &&
tree=$(printf "100644 blob %s\t%s\n" $blob .gitattributes | git mktree) &&
test_when_finished "remove_object $tree" &&
cat >expected <<-EOF &&
error in blob $blob: gitattributesLarge: .gitattributes too large to parse
EOF
test_must_fail git fsck --no-dangling >actual 2>&1 &&
test_cmp expected actual
ok 91 - fsck error on gitattributes with excessive size
expecting success of 1450.92 'fsck detects problems in worktree index':
test_when_finished "git worktree remove -f wt" &&
git worktree add wt &&
echo "this will be removed to break the worktree index" >wt/file &&
git -C wt add file &&
blob=$(git -C wt rev-parse :file) &&
remove_object $blob &&
test_must_fail git fsck --name-objects >actual 2>&1 &&
cat >expect <<-EOF &&
missing blob $blob (.git/worktrees/wt/index:file)
EOF
test_cmp expect actual
Preparing worktree (checking out 'wt')
HEAD is now at c9145d6 B
ok 92 - fsck detects problems in worktree index
expecting success of 1450.93 'fsck reports problems in current worktree index without filename':
test_when_finished "rm -f .git/index && git read-tree HEAD" &&
echo "this object will be removed to break current worktree index" >file &&
git add file &&
blob=$(git rev-parse :file) &&
remove_object $blob &&
test_must_fail git fsck --name-objects >actual 2>&1 &&
cat >expect <<-EOF &&
missing blob $blob (:file)
EOF
test_cmp expect actual
ok 93 - fsck reports problems in current worktree index without filename
# passed all 93 test(s)
1..93
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1700-split-index.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1700-split-index/.git/
expecting success of 1700.1 'setup':
test_oid_cache <<-EOF
own_v3 sha1:8299b0bcd1ac364e5f1d7768efb62fa2da79a339
own_v3 sha256:38a6d2925e3eceec33ad7b34cbff4e0086caa0daf28f31e51f5bd94b4a7af86b
base_v3 sha1:39d890139ee5356c7ef572216cebcd27aa41f9df
base_v3 sha256:c9baeadf905112bf6c17aefbd7d02267afd70ded613c30cafed2d40cb506e1ed
own_v4 sha1:432ef4b63f32193984f339431fd50ca796493569
own_v4 sha256:6738ac6319c25b694afa7bcc313deb182d1a59b68bf7a47b4296de83478c0420
base_v4 sha1:508851a7f0dfa8691e9f69c7f055865389012491
base_v4 sha256:3177d4adfdd4b6904f7e921d91d715a471c0dde7cf6a4bba574927f02b699508
EOF
ok 1 - setup
expecting success of 1700.2 'enable split index':
git config splitIndex.maxPercentChange 100 &&
git update-index --split-index &&
test-tool dump-split-index .git/index >actual &&
indexversion=$(test-tool index-version <.git/index) &&
# NEEDSWORK: Stop hard-coding checksums.
if test "$indexversion" = "4"
then
own=$(test_oid own_v4) &&
base=$(test_oid base_v4)
else
own=$(test_oid own_v3) &&
base=$(test_oid base_v3)
fi &&
cat >expect <<-EOF &&
own $own
base $base
replacements:
deletions:
EOF
test_cmp expect actual
ok 2 - enable split index
expecting success of 1700.3 'add one file':
create_non_racy_file one &&
git update-index --add one &&
git ls-files --stage >ls-files.actual &&
cat >ls-files.expect <<-EOF &&
100644 $EMPTY_BLOB 0 one
EOF
test_cmp ls-files.expect ls-files.actual &&
test-tool dump-split-index .git/index | sed "/^own/d" >actual &&
cat >expect <<-EOF &&
base $base
100644 $EMPTY_BLOB 0 one
replacements:
deletions:
EOF
test_cmp expect actual
ok 3 - add one file
expecting success of 1700.4 'disable split index':
git update-index --no-split-index &&
git ls-files --stage >ls-files.actual &&
cat >ls-files.expect <<-EOF &&
100644 $EMPTY_BLOB 0 one
EOF
test_cmp ls-files.expect ls-files.actual &&
BASE=$(test-tool dump-split-index .git/index | sed -n "s/^own/base/p") &&
test-tool dump-split-index .git/index | sed "/^own/d" >actual &&
cat >expect <<-EOF &&
not a split index
EOF
test_cmp expect actual
ok 4 - disable split index
expecting success of 1700.5 'enable split index again, "one" now belongs to base index"':
git update-index --split-index &&
git ls-files --stage >ls-files.actual &&
cat >ls-files.expect <<-EOF &&
100644 $EMPTY_BLOB 0 one
EOF
test_cmp ls-files.expect ls-files.actual &&
test-tool dump-split-index .git/index | sed "/^own/d" >actual &&
cat >expect <<-EOF &&
$BASE
replacements:
deletions:
EOF
test_cmp expect actual
ok 5 - enable split index again, "one" now belongs to base index"
expecting success of 1700.6 'modify original file, base index untouched':
echo modified | create_non_racy_file one &&
file1_blob=$(git hash-object one) &&
git update-index one &&
git ls-files --stage >ls-files.actual &&
cat >ls-files.expect <<-EOF &&
100644 $file1_blob 0 one
EOF
test_cmp ls-files.expect ls-files.actual &&
test-tool dump-split-index .git/index | sed "/^own/d" >actual &&
q_to_tab >expect <<-EOF &&
$BASE
100644 $file1_blob 0Q
replacements: 0
deletions:
EOF
test_cmp expect actual
ok 6 - modify original file, base index untouched
expecting success of 1700.7 'add another file, which stays index':
create_non_racy_file two &&
git update-index --add two &&
git ls-files --stage >ls-files.actual &&
cat >ls-files.expect <<-EOF &&
100644 $file1_blob 0 one
100644 $EMPTY_BLOB 0 two
EOF
test_cmp ls-files.expect ls-files.actual &&
test-tool dump-split-index .git/index | sed "/^own/d" >actual &&
q_to_tab >expect <<-EOF &&
$BASE
100644 $file1_blob 0Q
100644 $EMPTY_BLOB 0 two
replacements: 0
deletions:
EOF
test_cmp expect actual
ok 7 - add another file, which stays index
expecting success of 1700.8 'remove file not in base index':
git update-index --force-remove two &&
git ls-files --stage >ls-files.actual &&
cat >ls-files.expect <<-EOF &&
100644 $file1_blob 0 one
EOF
test_cmp ls-files.expect ls-files.actual &&
test-tool dump-split-index .git/index | sed "/^own/d" >actual &&
q_to_tab >expect <<-EOF &&
$BASE
100644 $file1_blob 0Q
replacements: 0
deletions:
EOF
test_cmp expect actual
ok 8 - remove file not in base index
expecting success of 1700.9 'remove file in base index':
git update-index --force-remove one &&
git ls-files --stage >ls-files.actual &&
test_must_be_empty ls-files.actual &&
test-tool dump-split-index .git/index | sed "/^own/d" >actual &&
cat >expect <<-EOF &&
$BASE
replacements:
deletions: 0
EOF
test_cmp expect actual
ok 9 - remove file in base index
expecting success of 1700.10 'add original file back':
create_non_racy_file one &&
git update-index --add one &&
git ls-files --stage >ls-files.actual &&
cat >ls-files.expect <<-EOF &&
100644 $EMPTY_BLOB 0 one
EOF
test_cmp ls-files.expect ls-files.actual &&
test-tool dump-split-index .git/index | sed "/^own/d" >actual &&
cat >expect <<-EOF &&
$BASE
100644 $EMPTY_BLOB 0 one
replacements:
deletions: 0
EOF
test_cmp expect actual
ok 10 - add original file back
expecting success of 1700.11 'add new file':
create_non_racy_file two &&
git update-index --add two &&
git ls-files --stage >actual &&
cat >expect <<-EOF &&
100644 $EMPTY_BLOB 0 one
100644 $EMPTY_BLOB 0 two
EOF
test_cmp expect actual
ok 11 - add new file
expecting success of 1700.12 'unify index, two files remain':
git update-index --no-split-index &&
git ls-files --stage >ls-files.actual &&
cat >ls-files.expect <<-EOF &&
100644 $EMPTY_BLOB 0 one
100644 $EMPTY_BLOB 0 two
EOF
test_cmp ls-files.expect ls-files.actual &&
test-tool dump-split-index .git/index | sed "/^own/d" >actual &&
cat >expect <<-EOF &&
not a split index
EOF
test_cmp expect actual
ok 12 - unify index, two files remain
expecting success of 1700.13 'rev-parse --shared-index-path':
test_create_repo split-index &&
(
cd split-index &&
git update-index --split-index &&
echo .git/sharedindex* >expect &&
git rev-parse --shared-index-path >actual &&
test_cmp expect actual &&
mkdir subdirectory &&
cd subdirectory &&
echo ../.git/sharedindex* >expect &&
git rev-parse --shared-index-path >actual &&
test_cmp expect actual
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1700-split-index/split-index/.git/
ok 13 - rev-parse --shared-index-path
expecting success of 1700.14 'set core.splitIndex config variable to true':
git config core.splitIndex true &&
create_non_racy_file three &&
git update-index --add three &&
git ls-files --stage >ls-files.actual &&
cat >ls-files.expect <<-EOF &&
100644 $EMPTY_BLOB 0 one
100644 $EMPTY_BLOB 0 three
100644 $EMPTY_BLOB 0 two
EOF
test_cmp ls-files.expect ls-files.actual &&
BASE=$(test-tool dump-split-index .git/index | grep "^base") &&
test-tool dump-split-index .git/index | sed "/^own/d" >actual &&
cat >expect <<-EOF &&
$BASE
replacements:
deletions:
EOF
test_cmp expect actual
ok 14 - set core.splitIndex config variable to true
expecting success of 1700.15 'set core.splitIndex config variable to false':
git config core.splitIndex false &&
git update-index --force-remove three &&
git ls-files --stage >ls-files.actual &&
cat >ls-files.expect <<-EOF &&
100644 $EMPTY_BLOB 0 one
100644 $EMPTY_BLOB 0 two
EOF
test_cmp ls-files.expect ls-files.actual &&
test-tool dump-split-index .git/index | sed "/^own/d" >actual &&
cat >expect <<-EOF &&
not a split index
EOF
test_cmp expect actual
ok 15 - set core.splitIndex config variable to false
expecting success of 1700.16 'set core.splitIndex config variable back to true':
git config core.splitIndex true &&
create_non_racy_file three &&
git update-index --add three &&
BASE=$(test-tool dump-split-index .git/index | grep "^base") &&
test-tool dump-split-index .git/index | sed "/^own/d" >actual &&
cat >expect <<-EOF &&
$BASE
replacements:
deletions:
EOF
test_cmp expect actual &&
create_non_racy_file four &&
git update-index --add four &&
test-tool dump-split-index .git/index | sed "/^own/d" >actual &&
cat >expect <<-EOF &&
$BASE
100644 $EMPTY_BLOB 0 four
replacements:
deletions:
EOF
test_cmp expect actual
ok 16 - set core.splitIndex config variable back to true
expecting success of 1700.17 'check behavior with splitIndex.maxPercentChange unset':
git config --unset splitIndex.maxPercentChange &&
create_non_racy_file five &&
git update-index --add five &&
BASE=$(test-tool dump-split-index .git/index | grep "^base") &&
test-tool dump-split-index .git/index | sed "/^own/d" >actual &&
cat >expect <<-EOF &&
$BASE
replacements:
deletions:
EOF
test_cmp expect actual &&
create_non_racy_file six &&
git update-index --add six &&
test-tool dump-split-index .git/index | sed "/^own/d" >actual &&
cat >expect <<-EOF &&
$BASE
100644 $EMPTY_BLOB 0 six
replacements:
deletions:
EOF
test_cmp expect actual
ok 17 - check behavior with splitIndex.maxPercentChange unset
expecting success of 1700.18 'check splitIndex.maxPercentChange set to 0':
git config splitIndex.maxPercentChange 0 &&
create_non_racy_file seven &&
git update-index --add seven &&
BASE=$(test-tool dump-split-index .git/index | grep "^base") &&
test-tool dump-split-index .git/index | sed "/^own/d" >actual &&
cat >expect <<-EOF &&
$BASE
replacements:
deletions:
EOF
test_cmp expect actual &&
create_non_racy_file eight &&
git update-index --add eight &&
BASE=$(test-tool dump-split-index .git/index | grep "^base") &&
test-tool dump-split-index .git/index | sed "/^own/d" >actual &&
cat >expect <<-EOF &&
$BASE
replacements:
deletions:
EOF
test_cmp expect actual
ok 18 - check splitIndex.maxPercentChange set to 0
expecting success of 1700.19 'shared index files expire after 2 weeks by default':
create_non_racy_file ten &&
git update-index --add ten &&
test $(ls .git/sharedindex.* | wc -l) -gt 2 &&
just_under_2_weeks_ago=$((5-14*86400)) &&
test-tool chmtime =$just_under_2_weeks_ago .git/sharedindex.* &&
create_non_racy_file eleven &&
git update-index --add eleven &&
test $(ls .git/sharedindex.* | wc -l) -gt 2 &&
just_over_2_weeks_ago=$((-1-14*86400)) &&
test-tool chmtime =$just_over_2_weeks_ago .git/sharedindex.* &&
create_non_racy_file twelve &&
git update-index --add twelve &&
test $(ls .git/sharedindex.* | wc -l) -le 2
ok 19 - shared index files expire after 2 weeks by default
expecting success of 1700.20 'check splitIndex.sharedIndexExpire set to 16 days':
git config splitIndex.sharedIndexExpire "16.days.ago" &&
test-tool chmtime =$just_over_2_weeks_ago .git/sharedindex.* &&
create_non_racy_file thirteen &&
git update-index --add thirteen &&
test $(ls .git/sharedindex.* | wc -l) -gt 2 &&
just_over_16_days_ago=$((-1-16*86400)) &&
test-tool chmtime =$just_over_16_days_ago .git/sharedindex.* &&
create_non_racy_file fourteen &&
git update-index --add fourteen &&
test $(ls .git/sharedindex.* | wc -l) -le 2
ok 20 - check splitIndex.sharedIndexExpire set to 16 days
expecting success of 1700.21 'check splitIndex.sharedIndexExpire set to "never" and "now"':
git config splitIndex.sharedIndexExpire never &&
just_10_years_ago=$((-365*10*86400)) &&
test-tool chmtime =$just_10_years_ago .git/sharedindex.* &&
create_non_racy_file fifteen &&
git update-index --add fifteen &&
test $(ls .git/sharedindex.* | wc -l) -gt 2 &&
git config splitIndex.sharedIndexExpire now &&
just_1_second_ago=-1 &&
test-tool chmtime =$just_1_second_ago .git/sharedindex.* &&
create_non_racy_file sixteen &&
git update-index --add sixteen &&
test $(ls .git/sharedindex.* | wc -l) -le 2
ok 21 - check splitIndex.sharedIndexExpire set to "never" and "now"
expecting success of 1700.22 'same mode for index & split index':
git init same-mode &&
(
cd same-mode &&
test_commit A &&
test_modebits .git/index >index_mode &&
test_must_fail git config core.sharedRepository &&
git -c core.splitIndex=true status &&
shared=$(ls .git/sharedindex.*) &&
case "$shared" in
*" "*)
# we have more than one???
false ;;
*)
test_modebits "$shared" >split_index_mode &&
test_cmp index_mode split_index_mode ;;
esac
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1700-split-index/same-mode/.git/
[main (root-commit) 0ddfaf1] A
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 A.t
On branch main
Untracked files:
(use "git add <file>..." to include in what will be committed)
index_mode
nothing added to commit but untracked files present (use "git add" to track)
ok 22 - same mode for index & split index
expecting success of 1700.23 'split index respects core.sharedrepository 0666':
# Remove existing shared index files
git config core.splitIndex false &&
git update-index --force-remove one &&
rm -f .git/sharedindex.* &&
# Create one new shared index file
git config core.sharedrepository "$mode" &&
git config core.splitIndex true &&
create_non_racy_file one &&
git update-index --add one &&
echo "$modebits" >expect &&
test_modebits .git/index >actual &&
test_cmp expect actual &&
shared=$(ls .git/sharedindex.*) &&
case "$shared" in
*" "*)
# we have more than one???
false ;;
*)
test_modebits "$shared" >actual &&
test_cmp expect actual ;;
esac
ok 23 - split index respects core.sharedrepository 0666
expecting success of 1700.24 'split index respects core.sharedrepository 0642':
# Remove existing shared index files
git config core.splitIndex false &&
git update-index --force-remove one &&
rm -f .git/sharedindex.* &&
# Create one new shared index file
git config core.sharedrepository "$mode" &&
git config core.splitIndex true &&
create_non_racy_file one &&
git update-index --add one &&
echo "$modebits" >expect &&
test_modebits .git/index >actual &&
test_cmp expect actual &&
shared=$(ls .git/sharedindex.*) &&
case "$shared" in
*" "*)
# we have more than one???
false ;;
*)
test_modebits "$shared" >actual &&
test_cmp expect actual ;;
esac
ok 24 - split index respects core.sharedrepository 0642
checking prerequisite: SANITY
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SANITY" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SANITY" &&
mkdir SANETESTD.1 SANETESTD.2 &&
chmod +w SANETESTD.1 SANETESTD.2 &&
>SANETESTD.1/x 2>SANETESTD.2/x &&
chmod -w SANETESTD.1 &&
chmod -r SANETESTD.1/x &&
chmod -rx SANETESTD.2 ||
BUG "cannot prepare SANETESTD"
! test -r SANETESTD.1/x &&
! rm SANETESTD.1/x && ! test -f SANETESTD.2/x
status=$?
chmod +rwx SANETESTD.1 SANETESTD.2 &&
rm -rf SANETESTD.1 SANETESTD.2 ||
BUG "cannot clean SANETESTD"
return $status
)
rm: cannot remove 'SANETESTD.1/x': Permission denied
prerequisite SANITY ok
expecting success of 1700.25 'graceful handling when splitting index is not allowed':
test_create_repo ro &&
(
cd ro &&
test_commit initial &&
git update-index --split-index &&
test -f .git/sharedindex.*
) &&
cp ro/.git/index new-index &&
test_when_finished "chmod u+w ro/.git" &&
chmod u-w ro/.git &&
GIT_INDEX_FILE="$(pwd)/new-index" git -C ro update-index --split-index &&
chmod u+w ro/.git &&
rm ro/.git/sharedindex.* &&
GIT_INDEX_FILE=new-index git ls-files >actual &&
echo initial.t >expected &&
test_cmp expected actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1700-split-index/ro/.git/
[main (root-commit) 24b24cf] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 initial.t
ok 25 - graceful handling when splitting index is not allowed
expecting success of 1700.26 'writing split index with null sha1 does not write cache tree':
git config core.splitIndex true &&
git config splitIndex.maxPercentChange 0 &&
git commit -m "commit" &&
{
git ls-tree HEAD &&
printf "160000 commit $ZERO_OID\\tbroken\\n"
} >broken-tree &&
echo "add broken entry" >msg &&
tree=$(git mktree <broken-tree) &&
test_tick &&
commit=$(git commit-tree $tree -p HEAD <msg) &&
git update-ref HEAD "$commit" &&
GIT_ALLOW_NULL_SHA1=1 git reset --hard &&
test_might_fail test-tool dump-cache-tree >cache-tree.out &&
test_line_count = 0 cache-tree.out
[main (root-commit) 57c62fa] commit
Author: A U Thor <author@example.com>
15 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 eight
create mode 100644 eleven
create mode 100644 fifteen
create mode 100644 five
create mode 100644 four
create mode 100644 fourteen
create mode 100644 one
create mode 100644 seven
create mode 100644 six
create mode 100644 sixteen
create mode 100644 ten
create mode 100644 thirteen
create mode 100644 three
create mode 100644 twelve
create mode 100644 two
warning: cache entry has null sha1: broken
HEAD is now at 57cc685 add broken entry
error: invalid object 160000 0000000000000000000000000000000000000000 for 'broken'
ok 26 - writing split index with null sha1 does not write cache tree
expecting success of 1700.27 'do not refresh null base index':
test_create_repo merge &&
(
cd merge &&
test_commit initial &&
git checkout -b side-branch &&
test_commit extra &&
git checkout main &&
git update-index --split-index &&
test_commit more &&
# must not write a new shareindex, or we wont catch the problem
git -c splitIndex.maxPercentChange=100 merge --no-edit side-branch 2>err &&
# i.e. do not expect warnings like
# could not freshen shared index .../shareindex.00000...
test_must_be_empty err
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1700-split-index/merge/.git/
[main (root-commit) 5e30013] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 initial.t
Switched to a new branch 'side-branch'
[side-branch 678a87c] extra
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 extra.t
Switched to branch 'main'
[main 34c8267] more
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 more.t
Merge made by the 'ort' strategy.
extra.t | 1 +
1 file changed, 1 insertion(+)
create mode 100644 extra.t
ok 27 - do not refresh null base index
expecting success of 1700.28 'reading split index at alternate location':
git init reading-alternate-location &&
(
cd reading-alternate-location &&
>file-in-alternate &&
git update-index --split-index --add file-in-alternate
) &&
echo file-in-alternate >expect &&
# Should be able to find the shared index both right next to
# the specified split index file ...
GIT_INDEX_FILE=./reading-alternate-location/.git/index \
git ls-files --cached >actual &&
test_cmp expect actual &&
# ... and, for backwards compatibility, in the current GIT_DIR
# as well.
mv -v ./reading-alternate-location/.git/sharedindex.* .git &&
GIT_INDEX_FILE=./reading-alternate-location/.git/index \
git ls-files --cached >actual &&
test_cmp expect actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1700-split-index/reading-alternate-location/.git/
renamed './reading-alternate-location/.git/sharedindex.1f1349cc41eaebf378f11b4ad5ee8dfa8d8307a6' -> '.git/sharedindex.1f1349cc41eaebf378f11b4ad5ee8dfa8d8307a6'
ok 28 - reading split index at alternate location
expecting success of 1700.29 'GIT_TEST_SPLIT_INDEX works':
git init git-test-split-index &&
(
cd git-test-split-index &&
>file &&
GIT_TEST_SPLIT_INDEX=1 git update-index --add file &&
ls -l .git/sharedindex.* >actual &&
test_line_count = 1 actual
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1700-split-index/git-test-split-index/.git/
ok 29 - GIT_TEST_SPLIT_INDEX works
# passed all 29 test(s)
1..29
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1800-hook.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1800-hook/.git/
expecting success of 1800.1 'git hook usage':
test_expect_code 129 git hook &&
test_expect_code 129 git hook run &&
test_expect_code 129 git hook run -h &&
test_expect_code 129 git hook run --unknown 2>err &&
grep "unknown option" err
error: need a subcommand
usage: git hook run [--ignore-missing] [--to-stdin=<path>] <hook-name> [-- <hook-args>]
usage: git hook run [--ignore-missing] [--to-stdin=<path>] <hook-name> [-- <hook-args>]
--ignore-missing silently ignore missing requested <hook-name>
--to-stdin <path> file to read into hooks' stdin
usage: git hook run [--ignore-missing] [--to-stdin=<path>] <hook-name> [-- <hook-args>]
--ignore-missing silently ignore missing requested <hook-name>
--to-stdin <path> file to read into hooks' stdin
error: unknown option `unknown'
ok 1 - git hook usage
expecting success of 1800.2 'git hook run: nonexistent hook':
cat >stderr.expect <<-\EOF &&
error: cannot find a hook named test-hook
EOF
test_expect_code 1 git hook run test-hook 2>stderr.actual &&
test_cmp stderr.expect stderr.actual
ok 2 - git hook run: nonexistent hook
expecting success of 1800.3 'git hook run: nonexistent hook with --ignore-missing':
git hook run --ignore-missing does-not-exist 2>stderr.actual &&
test_must_be_empty stderr.actual
ok 3 - git hook run: nonexistent hook with --ignore-missing
expecting success of 1800.4 'git hook run: basic':
test_hook test-hook <<-EOF &&
echo Test hook
EOF
cat >expect <<-\EOF &&
Test hook
EOF
git hook run test-hook 2>actual &&
test_cmp expect actual
ok 4 - git hook run: basic
expecting success of 1800.5 'git hook run: stdout and stderr both write to our stderr':
test_hook test-hook <<-EOF &&
echo >&1 Will end up on stderr
echo >&2 Will end up on stderr
EOF
cat >stderr.expect <<-\EOF &&
Will end up on stderr
Will end up on stderr
EOF
git hook run test-hook >stdout.actual 2>stderr.actual &&
test_cmp stderr.expect stderr.actual &&
test_must_be_empty stdout.actual
ok 5 - git hook run: stdout and stderr both write to our stderr
expecting success of 1800.6 'git hook run: exit code 1 is passed along':
test_hook test-hook <<-EOF &&
exit $code
EOF
test_expect_code $code git hook run test-hook
ok 6 - git hook run: exit code 1 is passed along
expecting success of 1800.7 'git hook run: exit code 2 is passed along':
test_hook test-hook <<-EOF &&
exit $code
EOF
test_expect_code $code git hook run test-hook
ok 7 - git hook run: exit code 2 is passed along
expecting success of 1800.8 'git hook run: exit code 128 is passed along':
test_hook test-hook <<-EOF &&
exit $code
EOF
test_expect_code $code git hook run test-hook
ok 8 - git hook run: exit code 128 is passed along
expecting success of 1800.9 'git hook run: exit code 129 is passed along':
test_hook test-hook <<-EOF &&
exit $code
EOF
test_expect_code $code git hook run test-hook
ok 9 - git hook run: exit code 129 is passed along
expecting success of 1800.10 'git hook run arg u ments without -- is not allowed':
test_expect_code 129 git hook run test-hook arg u ments
usage: git hook run [--ignore-missing] [--to-stdin=<path>] <hook-name> [-- <hook-args>]
--ignore-missing silently ignore missing requested <hook-name>
--to-stdin <path> file to read into hooks' stdin
ok 10 - git hook run arg u ments without -- is not allowed
expecting success of 1800.11 'git hook run -- pass arguments':
test_hook test-hook <<-\EOF &&
echo $1
echo $2
EOF
cat >expect <<-EOF &&
arg
u ments
EOF
git hook run test-hook -- arg "u ments" 2>actual &&
test_cmp expect actual
ok 11 - git hook run -- pass arguments
expecting success of 1800.12 'git hook run -- out-of-repo runs excluded':
test_hook test-hook <<-EOF &&
echo Test hook
EOF
nongit test_must_fail git hook run test-hook
fatal: not a git repository (or any of the parent directories): .git
ok 12 - git hook run -- out-of-repo runs excluded
expecting success of 1800.13 'git -c core.hooksPath=<PATH> hook run':
mkdir my-hooks &&
write_script my-hooks/test-hook <<-\EOF &&
echo Hook ran $1
EOF
cat >expect <<-\EOF &&
Test hook
Hook ran one
Hook ran two
Hook ran three
Hook ran four
EOF
test_hook test-hook <<-EOF &&
echo Test hook
EOF
# Test various ways of specifying the path. See also
# t1350-config-hooks-path.sh
>actual &&
git hook run test-hook -- ignored 2>>actual &&
git -c core.hooksPath=my-hooks hook run test-hook -- one 2>>actual &&
git -c core.hooksPath=my-hooks/ hook run test-hook -- two 2>>actual &&
git -c core.hooksPath="$PWD/my-hooks" hook run test-hook -- three 2>>actual &&
git -c core.hooksPath="$PWD/my-hooks/" hook run test-hook -- four 2>>actual &&
test_cmp expect actual
ok 13 - git -c core.hooksPath=<PATH> hook run
checking prerequisite: TTY
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-TTY" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-TTY" &&
test_have_prereq PERL &&
# Reading from the pty master seems to get stuck _sometimes_
# on Mac OS X 10.5.0, using Perl 5.10.0 or 5.8.9.
#
# Reproduction recipe: run
#
# i=0
# while ./test-terminal.perl echo hi $i
# do
# : $((i = $i + 1))
# done
#
# After 2000 iterations or so it hangs.
# https://rt.cpan.org/Ticket/Display.html?id=65692
#
test "$(uname -s)" != Darwin &&
perl "$TEST_DIRECTORY"/test-terminal.perl \
sh -c "test -t 1 && test -t 2"
)
prerequisite TTY ok
expecting success of 1800.14 'git hook run: stdout and stderr are connected to a TTY':
test_hook_tty hook run pre-commit
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1800-hook/repo/.git/
[master (root-commit) 0ddfaf1] A
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 A.t
[master d9df450] B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 B.t
ok 14 - git hook run: stdout and stderr are connected to a TTY
expecting success of 1800.15 'git commit: stdout and stderr are connected to a TTY':
test_hook_tty commit -m"B.new"
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1800-hook/repo/.git/
[master (root-commit) a3899a0] A
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 A.t
[master 7763d60] B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 B.t
[master 990192d] B.new
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 B.t
ok 15 - git commit: stdout and stderr are connected to a TTY
expecting success of 1800.16 'git hook run a hook with a bad shebang':
test_when_finished "rm -rf bad-hooks" &&
mkdir bad-hooks &&
write_script bad-hooks/test-hook "/bad/path/no/spaces" </dev/null &&
test_expect_code 1 git \
-c core.hooksPath=bad-hooks \
hook run test-hook >out 2>err &&
test_must_be_empty out &&
# TODO: We should emit the same (or at least a more similar)
# error on MINGW (essentially Git for Windows) and all other
# platforms.. See the OS-specific code in start_command()
grep -E "^(error|fatal): cannot (exec|spawn) .*bad-hooks/test-hook" err
fatal: cannot exec 'bad-hooks/test-hook': No such file or directory
ok 16 - git hook run a hook with a bad shebang
expecting success of 1800.17 'stdin to hooks':
write_script .git/hooks/test-hook <<-\EOF &&
echo BEGIN stdin
cat
echo END stdin
EOF
cat >expect <<-EOF &&
BEGIN stdin
hello
END stdin
EOF
echo hello >input &&
git hook run --to-stdin=input test-hook 2>actual &&
test_cmp expect actual
ok 17 - stdin to hooks
# passed all 17 test(s)
1..17
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2000-conflict-when-checking-files-out.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2000-conflict-when-checking-files-out/.git/
expecting success of 2000.1 'git update-index --add various paths.': git update-index --add path0 path1/file1
ok 1 - git update-index --add various paths.
expecting success of 2000.2 'git checkout-index without -f should fail on conflicting work tree.': test_must_fail git checkout-index -a
path0 already exists, no checkout
fatal: cannot create directory at 'path1': File exists
ok 2 - git checkout-index without -f should fail on conflicting work tree.
expecting success of 2000.3 'git checkout-index with -f should succeed.': git checkout-index -f -a
ok 3 - git checkout-index with -f should succeed.
expecting success of 2000.4 'git checkout-index conflicting paths.': test -f path0 && test -d path1 && test -f path1/file1
ok 4 - git checkout-index conflicting paths.
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
expecting success of 2000.5 'checkout-index -f twice with --prefix':
mkdir -p tar/get &&
ln -s tar/get there &&
echo first &&
git checkout-index -a -f --prefix=there/ &&
echo second &&
git checkout-index -a -f --prefix=there/
first
second
ok 5 - checkout-index -f twice with --prefix
expecting success of 2000.6 'git update-index --add path2/file0': git update-index --add path2/file0
ok 6 - git update-index --add path2/file0
expecting success of 2000.7 'writing tree out with git write-tree': tree1=$(git write-tree)
ok 7 - writing tree out with git write-tree
expecting success of 2000.8 'git update-index --add path3/file1': git update-index --add path3/file1
ok 8 - git update-index --add path3/file1
expecting success of 2000.9 'writing tree out with git write-tree': tree2=$(git write-tree)
ok 9 - writing tree out with git write-tree
expecting success of 2000.10 'read previously written tree and checkout.': git read-tree -m $tree1 && git checkout-index -f -a
ok 10 - read previously written tree and checkout.
expecting success of 2000.11 'add a symlink': test_ln_s_add path2 path3
ok 11 - add a symlink
expecting success of 2000.12 'writing tree out with git write-tree': tree3=$(git write-tree)
ok 12 - writing tree out with git write-tree
expecting success of 2000.13 'read previously written tree and checkout.': git read-tree $tree2 && git checkout-index -f -a
ok 13 - read previously written tree and checkout.
expecting success of 2000.14 'checking out conflicting path with -f': test ! -h path2 && test -d path2 &&
test ! -h path3 && test -d path3 &&
test ! -h path2/file0 && test -f path2/file0 &&
test ! -h path3/file1 && test -f path3/file1
ok 14 - checking out conflicting path with -f
# passed all 14 test(s)
1..14
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2002-checkout-cache-u.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2002-checkout-cache-u/.git/
expecting success of 2002.1 'preparation':
echo frotz >path0 &&
git update-index --add path0 &&
t=$(git write-tree)
ok 1 - preparation
expecting success of 2002.2 'without -u, git checkout-index smudges stat information.':
rm -f path0 &&
git read-tree $t &&
git checkout-index -f -a &&
test_must_fail git diff-files --exit-code
:100644 100644 8e4020bb5a8d8c873b25de15933e75cc0fc275df 0000000000000000000000000000000000000000 M path0
ok 2 - without -u, git checkout-index smudges stat information.
expecting success of 2002.3 'with -u, git checkout-index picks up stat information from new files.':
rm -f path0 &&
git read-tree $t &&
git checkout-index -u -f -a &&
git diff-files --exit-code
ok 3 - with -u, git checkout-index picks up stat information from new files.
# passed all 3 test(s)
1..3
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1510-repo-setup.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/.git/
expecting success of 1510.1 '#0: nonbare repo, no explicit configuration':
try_repo 0 unset unset unset "" unset \
.git "$here/0" "$here/0" "(null)" \
.git "$here/0" "$here/0" sub/ 2>message &&
test_must_be_empty message
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/0/.git/
ok 1 - #0: nonbare repo, no explicit configuration
expecting success of 1510.2 '#1: GIT_WORK_TREE without explicit GIT_DIR is accepted':
try_repo 1 "$here" unset unset "" unset \
"$here/1/.git" "$here" "$here" 1/ \
"$here/1/.git" "$here" "$here" 1/sub/ 2>message &&
test_must_be_empty message
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/1/.git/
ok 2 - #1: GIT_WORK_TREE without explicit GIT_DIR is accepted
expecting success of 1510.3 '#2: worktree defaults to cwd with explicit GIT_DIR':
try_repo 2 unset "$here/2/.git" unset "" unset \
"$here/2/.git" "$here/2" "$here/2" "(null)" \
"$here/2/.git" "$here/2/sub" "$here/2/sub" "(null)"
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/2/.git/
ok 3 - #2: worktree defaults to cwd with explicit GIT_DIR
expecting success of 1510.4 '#2b: relative GIT_DIR':
try_repo 2b unset ".git" unset "" unset \
".git" "$here/2b" "$here/2b" "(null)" \
"../.git" "$here/2b/sub" "$here/2b/sub" "(null)"
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/2b/.git/
ok 4 - #2b: relative GIT_DIR
expecting success of 1510.5 '#3: setup':
setup_repo 3 unset "" unset &&
mkdir -p 3/sub/sub 3/wt/sub
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/3/.git/
ok 5 - #3: setup
expecting success of 1510.6 '#3: explicit GIT_WORK_TREE and GIT_DIR at toplevel':
try_case $N "$here/$N" .git \
"$dotgit" "$here/$N" "$here/$N" "(null)" &&
try_case $N . .git \
"$dotgit" "$here/$N" "$here/$N" "(null)" &&
try_case $N "$here/$N" "$here/$N/.git" \
"$absgit" "$here/$N" "$here/$N" "(null)" &&
try_case $N . "$here/$N/.git" \
"$absgit" "$here/$N" "$here/$N" "(null)"
ok 6 - #3: explicit GIT_WORK_TREE and GIT_DIR at toplevel
expecting success of 1510.7 '#3: explicit GIT_WORK_TREE and GIT_DIR in subdir':
try_case $N/sub/sub "$here/$N" ../../.git \
"$absgit" "$here/$N" "$here/$N" sub/sub/ &&
try_case $N/sub/sub ../.. ../../.git \
"$absgit" "$here/$N" "$here/$N" sub/sub/ &&
try_case $N/sub/sub "$here/$N" "$here/$N/.git" \
"$absgit" "$here/$N" "$here/$N" sub/sub/ &&
try_case $N/sub/sub ../.. "$here/$N/.git" \
"$absgit" "$here/$N" "$here/$N" sub/sub/
ok 7 - #3: explicit GIT_WORK_TREE and GIT_DIR in subdir
expecting success of 1510.8 '#3: explicit GIT_WORK_TREE from parent of worktree':
try_case $N "$here/$N/wt" .git \
"$dotgit" "$here/$N/wt" "$here/$N" "(null)" &&
try_case $N wt .git \
"$dotgit" "$here/$N/wt" "$here/$N" "(null)" &&
try_case $N wt "$here/$N/.git" \
"$absgit" "$here/$N/wt" "$here/$N" "(null)" &&
try_case $N "$here/$N/wt" "$here/$N/.git" \
"$absgit" "$here/$N/wt" "$here/$N" "(null)"
ok 8 - #3: explicit GIT_WORK_TREE from parent of worktree
expecting success of 1510.9 '#3: explicit GIT_WORK_TREE from nephew of worktree':
try_case $N/sub/sub "$here/$N/wt" ../../.git \
"$dotdotgit" "$here/$N/wt" "$here/$N/sub/sub" "(null)" &&
try_case $N/sub/sub ../../wt ../../.git \
"$dotdotgit" "$here/$N/wt" "$here/$N/sub/sub" "(null)" &&
try_case $N/sub/sub ../../wt "$here/$N/.git" \
"$absgit" "$here/$N/wt" "$here/$N/sub/sub" "(null)" &&
try_case $N/sub/sub "$here/$N/wt" "$here/$N/.git" \
"$absgit" "$here/$N/wt" "$here/$N/sub/sub" "(null)"
ok 9 - #3: explicit GIT_WORK_TREE from nephew of worktree
expecting success of 1510.10 '#3: chdir_to_toplevel uses worktree, not git dir':
try_case $N "$here" .git \
"$absgit" "$here" "$here" $N/ &&
try_case $N .. .git \
"$absgit" "$here" "$here" $N/ &&
try_case $N .. "$here/$N/.git" \
"$absgit" "$here" "$here" $N/ &&
try_case $N "$here" "$here/$N/.git" \
"$absgit" "$here" "$here" $N/
ok 10 - #3: chdir_to_toplevel uses worktree, not git dir
expecting success of 1510.11 '#3: chdir_to_toplevel uses worktree (from subdir)':
try_case $N/sub/sub "$here" ../../.git \
"$absgit" "$here" "$here" $N/sub/sub/ &&
try_case $N/sub/sub ../../.. ../../.git \
"$absgit" "$here" "$here" $N/sub/sub/ &&
try_case $N/sub/sub ../../../ "$here/$N/.git" \
"$absgit" "$here" "$here" $N/sub/sub/ &&
try_case $N/sub/sub "$here" "$here/$N/.git" \
"$absgit" "$here" "$here" $N/sub/sub/
ok 11 - #3: chdir_to_toplevel uses worktree (from subdir)
expecting success of 1510.12 '#4: core.worktree without GIT_DIR set is accepted':
setup_repo 4 ../sub "" unset &&
mkdir -p 4/sub sub &&
try_case 4 unset unset \
.git "$here/4/sub" "$here/4" "(null)" \
"$here/4/.git" "$here/4/sub" "$here/4/sub" "(null)" 2>message &&
test_must_be_empty message
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/4/.git/
ok 12 - #4: core.worktree without GIT_DIR set is accepted
expecting success of 1510.13 '#5: core.worktree + GIT_WORK_TREE is accepted':
# or: you cannot intimidate away the lack of GIT_DIR setting
try_repo 5 "$here" unset "$here/5" "" unset \
"$here/5/.git" "$here" "$here" 5/ \
"$here/5/.git" "$here" "$here" 5/sub/ 2>message &&
try_repo 5a .. unset "$here/5a" "" unset \
"$here/5a/.git" "$here" "$here" 5a/ \
"$here/5a/.git" "$here/5a" "$here/5a" sub/ &&
test_must_be_empty message
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/5/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/5a/.git/
ok 13 - #5: core.worktree + GIT_WORK_TREE is accepted
expecting success of 1510.14 '#6: setting GIT_DIR brings core.worktree to life':
setup_repo 6 "$here/6" "" unset &&
try_case 6 unset .git \
.git "$here/6" "$here/6" "(null)" &&
try_case 6 unset "$here/6/.git" \
"$here/6/.git" "$here/6" "$here/6" "(null)" &&
try_case 6/sub/sub unset ../../.git \
"$here/6/.git" "$here/6" "$here/6" sub/sub/ &&
try_case 6/sub/sub unset "$here/6/.git" \
"$here/6/.git" "$here/6" "$here/6" sub/sub/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/6/.git/
ok 14 - #6: setting GIT_DIR brings core.worktree to life
expecting success of 1510.15 '#6b: GIT_DIR set, core.worktree relative':
setup_repo 6b .. "" unset &&
try_case 6b unset .git \
.git "$here/6b" "$here/6b" "(null)" &&
try_case 6b unset "$here/6b/.git" \
"$here/6b/.git" "$here/6b" "$here/6b" "(null)" &&
try_case 6b/sub/sub unset ../../.git \
"$here/6b/.git" "$here/6b" "$here/6b" sub/sub/ &&
try_case 6b/sub/sub unset "$here/6b/.git" \
"$here/6b/.git" "$here/6b" "$here/6b" sub/sub/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/6b/.git/
ok 15 - #6b: GIT_DIR set, core.worktree relative
expecting success of 1510.16 '#6c: GIT_DIR set, core.worktree=../wt (absolute)':
setup_repo 6c "$here/6c/wt" "" unset &&
mkdir -p 6c/wt/sub &&
try_case 6c unset .git \
.git "$here/6c/wt" "$here/6c" "(null)" &&
try_case 6c unset "$here/6c/.git" \
"$here/6c/.git" "$here/6c/wt" "$here/6c" "(null)" &&
try_case 6c/sub/sub unset ../../.git \
../../.git "$here/6c/wt" "$here/6c/sub/sub" "(null)" &&
try_case 6c/sub/sub unset "$here/6c/.git" \
"$here/6c/.git" "$here/6c/wt" "$here/6c/sub/sub" "(null)"
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/6c/.git/
ok 16 - #6c: GIT_DIR set, core.worktree=../wt (absolute)
expecting success of 1510.17 '#6d: GIT_DIR set, core.worktree=../wt (relative)':
setup_repo 6d "$here/6d/wt" "" unset &&
mkdir -p 6d/wt/sub &&
try_case 6d unset .git \
.git "$here/6d/wt" "$here/6d" "(null)" &&
try_case 6d unset "$here/6d/.git" \
"$here/6d/.git" "$here/6d/wt" "$here/6d" "(null)" &&
try_case 6d/sub/sub unset ../../.git \
../../.git "$here/6d/wt" "$here/6d/sub/sub" "(null)" &&
try_case 6d/sub/sub unset "$here/6d/.git" \
"$here/6d/.git" "$here/6d/wt" "$here/6d/sub/sub" "(null)"
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/6d/.git/
ok 17 - #6d: GIT_DIR set, core.worktree=../wt (relative)
expecting success of 1510.18 '#6e: GIT_DIR set, core.worktree=../.. (absolute)':
setup_repo 6e "$here" "" unset &&
try_case 6e unset .git \
"$here/6e/.git" "$here" "$here" 6e/ &&
try_case 6e unset "$here/6e/.git" \
"$here/6e/.git" "$here" "$here" 6e/ &&
try_case 6e/sub/sub unset ../../.git \
"$here/6e/.git" "$here" "$here" 6e/sub/sub/ &&
try_case 6e/sub/sub unset "$here/6e/.git" \
"$here/6e/.git" "$here" "$here" 6e/sub/sub/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/6e/.git/
ok 18 - #6e: GIT_DIR set, core.worktree=../.. (absolute)
expecting success of 1510.19 '#6f: GIT_DIR set, core.worktree=../.. (relative)':
setup_repo 6f ../../ "" unset &&
try_case 6f unset .git \
"$here/6f/.git" "$here" "$here" 6f/ &&
try_case 6f unset "$here/6f/.git" \
"$here/6f/.git" "$here" "$here" 6f/ &&
try_case 6f/sub/sub unset ../../.git \
"$here/6f/.git" "$here" "$here" 6f/sub/sub/ &&
try_case 6f/sub/sub unset "$here/6f/.git" \
"$here/6f/.git" "$here" "$here" 6f/sub/sub/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/6f/.git/
ok 19 - #6f: GIT_DIR set, core.worktree=../.. (relative)
expecting success of 1510.20 '#7: setup':
setup_repo 7 non-existent "" unset &&
mkdir -p 7/sub/sub 7/wt/sub
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/7/.git/
ok 20 - #7: setup
expecting success of 1510.21 '#7: explicit GIT_WORK_TREE and GIT_DIR at toplevel':
try_case $N "$here/$N" .git \
"$dotgit" "$here/$N" "$here/$N" "(null)" &&
try_case $N . .git \
"$dotgit" "$here/$N" "$here/$N" "(null)" &&
try_case $N "$here/$N" "$here/$N/.git" \
"$absgit" "$here/$N" "$here/$N" "(null)" &&
try_case $N . "$here/$N/.git" \
"$absgit" "$here/$N" "$here/$N" "(null)"
ok 21 - #7: explicit GIT_WORK_TREE and GIT_DIR at toplevel
expecting success of 1510.22 '#7: explicit GIT_WORK_TREE and GIT_DIR in subdir':
try_case $N/sub/sub "$here/$N" ../../.git \
"$absgit" "$here/$N" "$here/$N" sub/sub/ &&
try_case $N/sub/sub ../.. ../../.git \
"$absgit" "$here/$N" "$here/$N" sub/sub/ &&
try_case $N/sub/sub "$here/$N" "$here/$N/.git" \
"$absgit" "$here/$N" "$here/$N" sub/sub/ &&
try_case $N/sub/sub ../.. "$here/$N/.git" \
"$absgit" "$here/$N" "$here/$N" sub/sub/
ok 22 - #7: explicit GIT_WORK_TREE and GIT_DIR in subdir
expecting success of 1510.23 '#7: explicit GIT_WORK_TREE from parent of worktree':
try_case $N "$here/$N/wt" .git \
"$dotgit" "$here/$N/wt" "$here/$N" "(null)" &&
try_case $N wt .git \
"$dotgit" "$here/$N/wt" "$here/$N" "(null)" &&
try_case $N wt "$here/$N/.git" \
"$absgit" "$here/$N/wt" "$here/$N" "(null)" &&
try_case $N "$here/$N/wt" "$here/$N/.git" \
"$absgit" "$here/$N/wt" "$here/$N" "(null)"
ok 23 - #7: explicit GIT_WORK_TREE from parent of worktree
expecting success of 1510.24 '#7: explicit GIT_WORK_TREE from nephew of worktree':
try_case $N/sub/sub "$here/$N/wt" ../../.git \
"$dotdotgit" "$here/$N/wt" "$here/$N/sub/sub" "(null)" &&
try_case $N/sub/sub ../../wt ../../.git \
"$dotdotgit" "$here/$N/wt" "$here/$N/sub/sub" "(null)" &&
try_case $N/sub/sub ../../wt "$here/$N/.git" \
"$absgit" "$here/$N/wt" "$here/$N/sub/sub" "(null)" &&
try_case $N/sub/sub "$here/$N/wt" "$here/$N/.git" \
"$absgit" "$here/$N/wt" "$here/$N/sub/sub" "(null)"
ok 24 - #7: explicit GIT_WORK_TREE from nephew of worktree
expecting success of 1510.25 '#7: chdir_to_toplevel uses worktree, not git dir':
try_case $N "$here" .git \
"$absgit" "$here" "$here" $N/ &&
try_case $N .. .git \
"$absgit" "$here" "$here" $N/ &&
try_case $N .. "$here/$N/.git" \
"$absgit" "$here" "$here" $N/ &&
try_case $N "$here" "$here/$N/.git" \
"$absgit" "$here" "$here" $N/
ok 25 - #7: chdir_to_toplevel uses worktree, not git dir
expecting success of 1510.26 '#7: chdir_to_toplevel uses worktree (from subdir)':
try_case $N/sub/sub "$here" ../../.git \
"$absgit" "$here" "$here" $N/sub/sub/ &&
try_case $N/sub/sub ../../.. ../../.git \
"$absgit" "$here" "$here" $N/sub/sub/ &&
try_case $N/sub/sub ../../../ "$here/$N/.git" \
"$absgit" "$here" "$here" $N/sub/sub/ &&
try_case $N/sub/sub "$here" "$here/$N/.git" \
"$absgit" "$here" "$here" $N/sub/sub/
ok 26 - #7: chdir_to_toplevel uses worktree (from subdir)
expecting success of 1510.27 '#8: gitfile, easy case':
try_repo 8 unset unset unset gitfile unset \
"$here/8.git" "$here/8" "$here/8" "(null)" \
"$here/8.git" "$here/8" "$here/8" sub/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/8/.git/
ok 27 - #8: gitfile, easy case
expecting success of 1510.28 '#9: GIT_WORK_TREE accepted with gitfile':
mkdir -p 9/wt &&
try_repo 9 wt unset unset gitfile unset \
"$here/9.git" "$here/9/wt" "$here/9" "(null)" \
"$here/9.git" "$here/9/sub/wt" "$here/9/sub" "(null)" 2>message &&
test_must_be_empty message
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/9/.git/
ok 28 - #9: GIT_WORK_TREE accepted with gitfile
expecting success of 1510.29 '#10: GIT_DIR can point to gitfile':
try_repo 10 unset "$here/10/.git" unset gitfile unset \
"$here/10.git" "$here/10" "$here/10" "(null)" \
"$here/10.git" "$here/10/sub" "$here/10/sub" "(null)"
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/10/.git/
ok 29 - #10: GIT_DIR can point to gitfile
expecting success of 1510.30 '#10b: relative GIT_DIR can point to gitfile':
try_repo 10b unset .git unset gitfile unset \
"$here/10b.git" "$here/10b" "$here/10b" "(null)" \
"$here/10b.git" "$here/10b/sub" "$here/10b/sub" "(null)"
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/10b/.git/
ok 30 - #10b: relative GIT_DIR can point to gitfile
expecting success of 1510.31 '#11: setup':
setup_repo 11 unset gitfile unset &&
mkdir -p 11/sub/sub 11/wt/sub
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/11/.git/
ok 31 - #11: setup
expecting success of 1510.32 '#11: explicit GIT_WORK_TREE and GIT_DIR at toplevel':
try_case $N "$here/$N" .git \
"$dotgit" "$here/$N" "$here/$N" "(null)" &&
try_case $N . .git \
"$dotgit" "$here/$N" "$here/$N" "(null)" &&
try_case $N "$here/$N" "$here/$N/.git" \
"$absgit" "$here/$N" "$here/$N" "(null)" &&
try_case $N . "$here/$N/.git" \
"$absgit" "$here/$N" "$here/$N" "(null)"
ok 32 - #11: explicit GIT_WORK_TREE and GIT_DIR at toplevel
expecting success of 1510.33 '#11: explicit GIT_WORK_TREE and GIT_DIR in subdir':
try_case $N/sub/sub "$here/$N" ../../.git \
"$absgit" "$here/$N" "$here/$N" sub/sub/ &&
try_case $N/sub/sub ../.. ../../.git \
"$absgit" "$here/$N" "$here/$N" sub/sub/ &&
try_case $N/sub/sub "$here/$N" "$here/$N/.git" \
"$absgit" "$here/$N" "$here/$N" sub/sub/ &&
try_case $N/sub/sub ../.. "$here/$N/.git" \
"$absgit" "$here/$N" "$here/$N" sub/sub/
ok 33 - #11: explicit GIT_WORK_TREE and GIT_DIR in subdir
expecting success of 1510.34 '#11: explicit GIT_WORK_TREE from parent of worktree':
try_case $N "$here/$N/wt" .git \
"$dotgit" "$here/$N/wt" "$here/$N" "(null)" &&
try_case $N wt .git \
"$dotgit" "$here/$N/wt" "$here/$N" "(null)" &&
try_case $N wt "$here/$N/.git" \
"$absgit" "$here/$N/wt" "$here/$N" "(null)" &&
try_case $N "$here/$N/wt" "$here/$N/.git" \
"$absgit" "$here/$N/wt" "$here/$N" "(null)"
ok 34 - #11: explicit GIT_WORK_TREE from parent of worktree
expecting success of 1510.35 '#11: explicit GIT_WORK_TREE from nephew of worktree':
try_case $N/sub/sub "$here/$N/wt" ../../.git \
"$dotdotgit" "$here/$N/wt" "$here/$N/sub/sub" "(null)" &&
try_case $N/sub/sub ../../wt ../../.git \
"$dotdotgit" "$here/$N/wt" "$here/$N/sub/sub" "(null)" &&
try_case $N/sub/sub ../../wt "$here/$N/.git" \
"$absgit" "$here/$N/wt" "$here/$N/sub/sub" "(null)" &&
try_case $N/sub/sub "$here/$N/wt" "$here/$N/.git" \
"$absgit" "$here/$N/wt" "$here/$N/sub/sub" "(null)"
ok 35 - #11: explicit GIT_WORK_TREE from nephew of worktree
expecting success of 1510.36 '#11: chdir_to_toplevel uses worktree, not git dir':
try_case $N "$here" .git \
"$absgit" "$here" "$here" $N/ &&
try_case $N .. .git \
"$absgit" "$here" "$here" $N/ &&
try_case $N .. "$here/$N/.git" \
"$absgit" "$here" "$here" $N/ &&
try_case $N "$here" "$here/$N/.git" \
"$absgit" "$here" "$here" $N/
ok 36 - #11: chdir_to_toplevel uses worktree, not git dir
expecting success of 1510.37 '#11: chdir_to_toplevel uses worktree (from subdir)':
try_case $N/sub/sub "$here" ../../.git \
"$absgit" "$here" "$here" $N/sub/sub/ &&
try_case $N/sub/sub ../../.. ../../.git \
"$absgit" "$here" "$here" $N/sub/sub/ &&
try_case $N/sub/sub ../../../ "$here/$N/.git" \
"$absgit" "$here" "$here" $N/sub/sub/ &&
try_case $N/sub/sub "$here" "$here/$N/.git" \
"$absgit" "$here" "$here" $N/sub/sub/
ok 37 - #11: chdir_to_toplevel uses worktree (from subdir)
expecting success of 1510.38 '#12: core.worktree with gitfile is accepted':
try_repo 12 unset unset "$here/12" gitfile unset \
"$here/12.git" "$here/12" "$here/12" "(null)" \
"$here/12.git" "$here/12" "$here/12" sub/ 2>message &&
test_must_be_empty message
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/12/.git/
ok 38 - #12: core.worktree with gitfile is accepted
expecting success of 1510.39 '#13: core.worktree+GIT_WORK_TREE accepted (with gitfile)':
# or: you cannot intimidate away the lack of GIT_DIR setting
try_repo 13 non-existent-too unset non-existent gitfile unset \
"$here/13.git" "$here/13/non-existent-too" "$here/13" "(null)" \
"$here/13.git" "$here/13/sub/non-existent-too" "$here/13/sub" "(null)" 2>message &&
test_must_be_empty message
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/13/.git/
ok 39 - #13: core.worktree+GIT_WORK_TREE accepted (with gitfile)
expecting success of 1510.40 '#14: core.worktree with GIT_DIR pointing to gitfile':
setup_repo 14 "$here/14" gitfile unset &&
try_case 14 unset .git \
"$here/14.git" "$here/14" "$here/14" "(null)" &&
try_case 14 unset "$here/14/.git" \
"$here/14.git" "$here/14" "$here/14" "(null)" &&
try_case 14/sub/sub unset ../../.git \
"$here/14.git" "$here/14" "$here/14" sub/sub/ &&
try_case 14/sub/sub unset "$here/14/.git" \
"$here/14.git" "$here/14" "$here/14" sub/sub/ &&
setup_repo 14c "$here/14c/wt" gitfile unset &&
mkdir -p 14c/wt/sub &&
try_case 14c unset .git \
"$here/14c.git" "$here/14c/wt" "$here/14c" "(null)" &&
try_case 14c unset "$here/14c/.git" \
"$here/14c.git" "$here/14c/wt" "$here/14c" "(null)" &&
try_case 14c/sub/sub unset ../../.git \
"$here/14c.git" "$here/14c/wt" "$here/14c/sub/sub" "(null)" &&
try_case 14c/sub/sub unset "$here/14c/.git" \
"$here/14c.git" "$here/14c/wt" "$here/14c/sub/sub" "(null)" &&
setup_repo 14d "$here/14d/wt" gitfile unset &&
mkdir -p 14d/wt/sub &&
try_case 14d unset .git \
"$here/14d.git" "$here/14d/wt" "$here/14d" "(null)" &&
try_case 14d unset "$here/14d/.git" \
"$here/14d.git" "$here/14d/wt" "$here/14d" "(null)" &&
try_case 14d/sub/sub unset ../../.git \
"$here/14d.git" "$here/14d/wt" "$here/14d/sub/sub" "(null)" &&
try_case 14d/sub/sub unset "$here/14d/.git" \
"$here/14d.git" "$here/14d/wt" "$here/14d/sub/sub" "(null)" &&
setup_repo 14e "$here" gitfile unset &&
try_case 14e unset .git \
"$here/14e.git" "$here" "$here" 14e/ &&
try_case 14e unset "$here/14e/.git" \
"$here/14e.git" "$here" "$here" 14e/ &&
try_case 14e/sub/sub unset ../../.git \
"$here/14e.git" "$here" "$here" 14e/sub/sub/ &&
try_case 14e/sub/sub unset "$here/14e/.git" \
"$here/14e.git" "$here" "$here" 14e/sub/sub/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/14/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/14c/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/14d/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/14e/.git/
ok 40 - #14: core.worktree with GIT_DIR pointing to gitfile
expecting success of 1510.41 '#14b: core.worktree is relative to actual git dir':
setup_repo 14b ../14b gitfile unset &&
try_case 14b unset .git \
"$here/14b.git" "$here/14b" "$here/14b" "(null)" &&
try_case 14b unset "$here/14b/.git" \
"$here/14b.git" "$here/14b" "$here/14b" "(null)" &&
try_case 14b/sub/sub unset ../../.git \
"$here/14b.git" "$here/14b" "$here/14b" sub/sub/ &&
try_case 14b/sub/sub unset "$here/14b/.git" \
"$here/14b.git" "$here/14b" "$here/14b" sub/sub/ &&
setup_repo 14f ../ gitfile unset &&
try_case 14f unset .git \
"$here/14f.git" "$here" "$here" 14f/ &&
try_case 14f unset "$here/14f/.git" \
"$here/14f.git" "$here" "$here" 14f/ &&
try_case 14f/sub/sub unset ../../.git \
"$here/14f.git" "$here" "$here" 14f/sub/sub/ &&
try_case 14f/sub/sub unset "$here/14f/.git" \
"$here/14f.git" "$here" "$here" 14f/sub/sub/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/14b/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/14f/.git/
ok 41 - #14b: core.worktree is relative to actual git dir
expecting success of 1510.42 '#15: setup':
setup_repo 15 non-existent gitfile unset &&
mkdir -p 15/sub/sub 15/wt/sub
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/15/.git/
ok 42 - #15: setup
expecting success of 1510.43 '#15: explicit GIT_WORK_TREE and GIT_DIR at toplevel':
try_case $N "$here/$N" .git \
"$dotgit" "$here/$N" "$here/$N" "(null)" &&
try_case $N . .git \
"$dotgit" "$here/$N" "$here/$N" "(null)" &&
try_case $N "$here/$N" "$here/$N/.git" \
"$absgit" "$here/$N" "$here/$N" "(null)" &&
try_case $N . "$here/$N/.git" \
"$absgit" "$here/$N" "$here/$N" "(null)"
ok 43 - #15: explicit GIT_WORK_TREE and GIT_DIR at toplevel
expecting success of 1510.44 '#15: explicit GIT_WORK_TREE and GIT_DIR in subdir':
try_case $N/sub/sub "$here/$N" ../../.git \
"$absgit" "$here/$N" "$here/$N" sub/sub/ &&
try_case $N/sub/sub ../.. ../../.git \
"$absgit" "$here/$N" "$here/$N" sub/sub/ &&
try_case $N/sub/sub "$here/$N" "$here/$N/.git" \
"$absgit" "$here/$N" "$here/$N" sub/sub/ &&
try_case $N/sub/sub ../.. "$here/$N/.git" \
"$absgit" "$here/$N" "$here/$N" sub/sub/
ok 44 - #15: explicit GIT_WORK_TREE and GIT_DIR in subdir
expecting success of 1510.45 '#15: explicit GIT_WORK_TREE from parent of worktree':
try_case $N "$here/$N/wt" .git \
"$dotgit" "$here/$N/wt" "$here/$N" "(null)" &&
try_case $N wt .git \
"$dotgit" "$here/$N/wt" "$here/$N" "(null)" &&
try_case $N wt "$here/$N/.git" \
"$absgit" "$here/$N/wt" "$here/$N" "(null)" &&
try_case $N "$here/$N/wt" "$here/$N/.git" \
"$absgit" "$here/$N/wt" "$here/$N" "(null)"
ok 45 - #15: explicit GIT_WORK_TREE from parent of worktree
expecting success of 1510.46 '#15: explicit GIT_WORK_TREE from nephew of worktree':
try_case $N/sub/sub "$here/$N/wt" ../../.git \
"$dotdotgit" "$here/$N/wt" "$here/$N/sub/sub" "(null)" &&
try_case $N/sub/sub ../../wt ../../.git \
"$dotdotgit" "$here/$N/wt" "$here/$N/sub/sub" "(null)" &&
try_case $N/sub/sub ../../wt "$here/$N/.git" \
"$absgit" "$here/$N/wt" "$here/$N/sub/sub" "(null)" &&
try_case $N/sub/sub "$here/$N/wt" "$here/$N/.git" \
"$absgit" "$here/$N/wt" "$here/$N/sub/sub" "(null)"
ok 46 - #15: explicit GIT_WORK_TREE from nephew of worktree
expecting success of 1510.47 '#15: chdir_to_toplevel uses worktree, not git dir':
try_case $N "$here" .git \
"$absgit" "$here" "$here" $N/ &&
try_case $N .. .git \
"$absgit" "$here" "$here" $N/ &&
try_case $N .. "$here/$N/.git" \
"$absgit" "$here" "$here" $N/ &&
try_case $N "$here" "$here/$N/.git" \
"$absgit" "$here" "$here" $N/
ok 47 - #15: chdir_to_toplevel uses worktree, not git dir
expecting success of 1510.48 '#15: chdir_to_toplevel uses worktree (from subdir)':
try_case $N/sub/sub "$here" ../../.git \
"$absgit" "$here" "$here" $N/sub/sub/ &&
try_case $N/sub/sub ../../.. ../../.git \
"$absgit" "$here" "$here" $N/sub/sub/ &&
try_case $N/sub/sub ../../../ "$here/$N/.git" \
"$absgit" "$here" "$here" $N/sub/sub/ &&
try_case $N/sub/sub "$here" "$here/$N/.git" \
"$absgit" "$here" "$here" $N/sub/sub/
ok 48 - #15: chdir_to_toplevel uses worktree (from subdir)
expecting success of 1510.49 '#16a: implicitly bare repo (cwd inside .git dir)':
setup_repo 16a unset "" unset &&
mkdir -p 16a/.git/wt/sub &&
try_case 16a/.git unset unset \
. "(null)" "$here/16a/.git" "(null)" &&
try_case 16a/.git/wt unset unset \
"$here/16a/.git" "(null)" "$here/16a/.git/wt" "(null)" &&
try_case 16a/.git/wt/sub unset unset \
"$here/16a/.git" "(null)" "$here/16a/.git/wt/sub" "(null)"
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/16a/.git/
ok 49 - #16a: implicitly bare repo (cwd inside .git dir)
expecting success of 1510.50 '#16b: bare .git (cwd inside .git dir)':
setup_repo 16b unset "" true &&
mkdir -p 16b/.git/wt/sub &&
try_case 16b/.git unset unset \
. "(null)" "$here/16b/.git" "(null)" &&
try_case 16b/.git/wt unset unset \
"$here/16b/.git" "(null)" "$here/16b/.git/wt" "(null)" &&
try_case 16b/.git/wt/sub unset unset \
"$here/16b/.git" "(null)" "$here/16b/.git/wt/sub" "(null)"
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/16b/.git/
ok 50 - #16b: bare .git (cwd inside .git dir)
expecting success of 1510.51 '#16c: bare .git has no worktree':
try_repo 16c unset unset unset "" true \
.git "(null)" "$here/16c" "(null)" \
"$here/16c/.git" "(null)" "$here/16c/sub" "(null)"
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/16c/.git/
ok 51 - #16c: bare .git has no worktree
expecting success of 1510.52 '#16d: bareness preserved across alias':
setup_repo 16d unset "" unset &&
(
cd 16d/.git &&
test_must_fail git status &&
git config alias.st status &&
test_must_fail git st
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/16d/.git/
fatal: this operation must be run in a work tree
fatal: this operation must be run in a work tree
ok 52 - #16d: bareness preserved across alias
expecting success of 1510.53 '#16e: bareness preserved by --bare':
setup_repo 16e unset "" unset &&
(
cd 16e/.git &&
test_must_fail git status &&
test_must_fail git --bare status
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/16e/.git/
fatal: this operation must be run in a work tree
fatal: this operation must be run in a work tree
ok 53 - #16e: bareness preserved by --bare
expecting success of 1510.54 '#17: GIT_WORK_TREE without explicit GIT_DIR is accepted (bare case)':
# Just like #16.
setup_repo 17a unset "" true &&
setup_repo 17b unset "" true &&
mkdir -p 17a/.git/wt/sub &&
mkdir -p 17b/.git/wt/sub &&
try_case 17a/.git "$here/17a" unset \
"$here/17a/.git" "$here/17a" "$here/17a" .git/ \
2>message &&
try_case 17a/.git/wt "$here/17a" unset \
"$here/17a/.git" "$here/17a" "$here/17a" .git/wt/ &&
try_case 17a/.git/wt/sub "$here/17a" unset \
"$here/17a/.git" "$here/17a" "$here/17a" .git/wt/sub/ &&
try_case 17b/.git "$here/17b" unset \
"$here/17b/.git" "$here/17b" "$here/17b" .git/ &&
try_case 17b/.git/wt "$here/17b" unset \
"$here/17b/.git" "$here/17b" "$here/17b" .git/wt/ &&
try_case 17b/.git/wt/sub "$here/17b" unset \
"$here/17b/.git" "$here/17b" "$here/17b" .git/wt/sub/ &&
try_repo 17c "$here/17c" unset unset "" true \
.git "$here/17c" "$here/17c" "(null)" \
"$here/17c/.git" "$here/17c" "$here/17c" sub/ 2>message &&
test_must_be_empty message
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/17a/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/17b/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/17c/.git/
ok 54 - #17: GIT_WORK_TREE without explicit GIT_DIR is accepted (bare case)
expecting success of 1510.55 '#18: bare .git named by GIT_DIR has no worktree':
try_repo 18 unset .git unset "" true \
.git "(null)" "$here/18" "(null)" \
../.git "(null)" "$here/18/sub" "(null)" &&
try_repo 18b unset "$here/18b/.git" unset "" true \
"$here/18b/.git" "(null)" "$here/18b" "(null)" \
"$here/18b/.git" "(null)" "$here/18b/sub" "(null)"
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/18/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/18b/.git/
ok 55 - #18: bare .git named by GIT_DIR has no worktree
expecting success of 1510.56 '#19: setup':
setup_repo 19 unset "" true &&
mkdir -p 19/sub/sub 19/wt/sub
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/19/.git/
ok 56 - #19: setup
expecting success of 1510.57 '#19: explicit GIT_WORK_TREE and GIT_DIR at toplevel':
try_case $N "$here/$N" .git \
"$dotgit" "$here/$N" "$here/$N" "(null)" &&
try_case $N . .git \
"$dotgit" "$here/$N" "$here/$N" "(null)" &&
try_case $N "$here/$N" "$here/$N/.git" \
"$absgit" "$here/$N" "$here/$N" "(null)" &&
try_case $N . "$here/$N/.git" \
"$absgit" "$here/$N" "$here/$N" "(null)"
ok 57 - #19: explicit GIT_WORK_TREE and GIT_DIR at toplevel
expecting success of 1510.58 '#19: explicit GIT_WORK_TREE and GIT_DIR in subdir':
try_case $N/sub/sub "$here/$N" ../../.git \
"$absgit" "$here/$N" "$here/$N" sub/sub/ &&
try_case $N/sub/sub ../.. ../../.git \
"$absgit" "$here/$N" "$here/$N" sub/sub/ &&
try_case $N/sub/sub "$here/$N" "$here/$N/.git" \
"$absgit" "$here/$N" "$here/$N" sub/sub/ &&
try_case $N/sub/sub ../.. "$here/$N/.git" \
"$absgit" "$here/$N" "$here/$N" sub/sub/
ok 58 - #19: explicit GIT_WORK_TREE and GIT_DIR in subdir
expecting success of 1510.59 '#19: explicit GIT_WORK_TREE from parent of worktree':
try_case $N "$here/$N/wt" .git \
"$dotgit" "$here/$N/wt" "$here/$N" "(null)" &&
try_case $N wt .git \
"$dotgit" "$here/$N/wt" "$here/$N" "(null)" &&
try_case $N wt "$here/$N/.git" \
"$absgit" "$here/$N/wt" "$here/$N" "(null)" &&
try_case $N "$here/$N/wt" "$here/$N/.git" \
"$absgit" "$here/$N/wt" "$here/$N" "(null)"
ok 59 - #19: explicit GIT_WORK_TREE from parent of worktree
expecting success of 1510.60 '#19: explicit GIT_WORK_TREE from nephew of worktree':
try_case $N/sub/sub "$here/$N/wt" ../../.git \
"$dotdotgit" "$here/$N/wt" "$here/$N/sub/sub" "(null)" &&
try_case $N/sub/sub ../../wt ../../.git \
"$dotdotgit" "$here/$N/wt" "$here/$N/sub/sub" "(null)" &&
try_case $N/sub/sub ../../wt "$here/$N/.git" \
"$absgit" "$here/$N/wt" "$here/$N/sub/sub" "(null)" &&
try_case $N/sub/sub "$here/$N/wt" "$here/$N/.git" \
"$absgit" "$here/$N/wt" "$here/$N/sub/sub" "(null)"
ok 60 - #19: explicit GIT_WORK_TREE from nephew of worktree
expecting success of 1510.61 '#19: chdir_to_toplevel uses worktree, not git dir':
try_case $N "$here" .git \
"$absgit" "$here" "$here" $N/ &&
try_case $N .. .git \
"$absgit" "$here" "$here" $N/ &&
try_case $N .. "$here/$N/.git" \
"$absgit" "$here" "$here" $N/ &&
try_case $N "$here" "$here/$N/.git" \
"$absgit" "$here" "$here" $N/
ok 61 - #19: chdir_to_toplevel uses worktree, not git dir
expecting success of 1510.62 '#19: chdir_to_toplevel uses worktree (from subdir)':
try_case $N/sub/sub "$here" ../../.git \
"$absgit" "$here" "$here" $N/sub/sub/ &&
try_case $N/sub/sub ../../.. ../../.git \
"$absgit" "$here" "$here" $N/sub/sub/ &&
try_case $N/sub/sub ../../../ "$here/$N/.git" \
"$absgit" "$here" "$here" $N/sub/sub/ &&
try_case $N/sub/sub "$here" "$here/$N/.git" \
"$absgit" "$here" "$here" $N/sub/sub/
ok 62 - #19: chdir_to_toplevel uses worktree (from subdir)
expecting success of 1510.63 '#20a: core.worktree without GIT_DIR accepted (inside .git)':
# Unlike case #16a.
setup_repo 20a "$here/20a" "" unset &&
mkdir -p 20a/.git/wt/sub &&
try_case 20a/.git unset unset \
"$here/20a/.git" "$here/20a" "$here/20a" .git/ 2>message &&
try_case 20a/.git/wt unset unset \
"$here/20a/.git" "$here/20a" "$here/20a" .git/wt/ &&
try_case 20a/.git/wt/sub unset unset \
"$here/20a/.git" "$here/20a" "$here/20a" .git/wt/sub/ &&
test_must_be_empty message
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/20a/.git/
ok 63 - #20a: core.worktree without GIT_DIR accepted (inside .git)
expecting success of 1510.64 '#20b/c: core.worktree and core.bare conflict':
setup_repo 20b non-existent "" true &&
mkdir -p 20b/.git/wt/sub &&
(
cd 20b/.git &&
test_must_fail git status >/dev/null
) 2>message &&
grep "core.bare and core.worktree" message
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/20b/.git/
warning: core.bare and core.worktree do not make sense
ok 64 - #20b/c: core.worktree and core.bare conflict
expecting success of 1510.65 '#20d: core.worktree and core.bare OK when working tree not needed':
setup_repo 20d non-existent "" true &&
mkdir -p 20d/.git/wt/sub &&
(
cd 20d/.git &&
git config foo.bar value
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/20d/.git/
warning: core.bare and core.worktree do not make sense
ok 65 - #20d: core.worktree and core.bare OK when working tree not needed
expecting success of 1510.66 '#21: setup, core.worktree warns before overriding core.bare':
setup_repo 21 non-existent "" unset &&
mkdir -p 21/.git/wt/sub &&
(
cd 21/.git &&
GIT_WORK_TREE="$here/21" &&
export GIT_WORK_TREE &&
git status >/dev/null
) 2>message &&
test_must_be_empty message
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/21/.git/
ok 66 - #21: setup, core.worktree warns before overriding core.bare
expecting success of 1510.67 '#21: explicit GIT_WORK_TREE and GIT_DIR at toplevel':
try_case $N "$here/$N" .git \
"$dotgit" "$here/$N" "$here/$N" "(null)" &&
try_case $N . .git \
"$dotgit" "$here/$N" "$here/$N" "(null)" &&
try_case $N "$here/$N" "$here/$N/.git" \
"$absgit" "$here/$N" "$here/$N" "(null)" &&
try_case $N . "$here/$N/.git" \
"$absgit" "$here/$N" "$here/$N" "(null)"
ok 67 - #21: explicit GIT_WORK_TREE and GIT_DIR at toplevel
expecting success of 1510.68 '#21: explicit GIT_WORK_TREE and GIT_DIR in subdir':
try_case $N/sub/sub "$here/$N" ../../.git \
"$absgit" "$here/$N" "$here/$N" sub/sub/ &&
try_case $N/sub/sub ../.. ../../.git \
"$absgit" "$here/$N" "$here/$N" sub/sub/ &&
try_case $N/sub/sub "$here/$N" "$here/$N/.git" \
"$absgit" "$here/$N" "$here/$N" sub/sub/ &&
try_case $N/sub/sub ../.. "$here/$N/.git" \
"$absgit" "$here/$N" "$here/$N" sub/sub/
ok 68 - #21: explicit GIT_WORK_TREE and GIT_DIR in subdir
expecting success of 1510.69 '#21: explicit GIT_WORK_TREE from parent of worktree':
try_case $N "$here/$N/wt" .git \
"$dotgit" "$here/$N/wt" "$here/$N" "(null)" &&
try_case $N wt .git \
"$dotgit" "$here/$N/wt" "$here/$N" "(null)" &&
try_case $N wt "$here/$N/.git" \
"$absgit" "$here/$N/wt" "$here/$N" "(null)" &&
try_case $N "$here/$N/wt" "$here/$N/.git" \
"$absgit" "$here/$N/wt" "$here/$N" "(null)"
ok 69 - #21: explicit GIT_WORK_TREE from parent of worktree
expecting success of 1510.70 '#21: explicit GIT_WORK_TREE from nephew of worktree':
try_case $N/sub/sub "$here/$N/wt" ../../.git \
"$dotdotgit" "$here/$N/wt" "$here/$N/sub/sub" "(null)" &&
try_case $N/sub/sub ../../wt ../../.git \
"$dotdotgit" "$here/$N/wt" "$here/$N/sub/sub" "(null)" &&
try_case $N/sub/sub ../../wt "$here/$N/.git" \
"$absgit" "$here/$N/wt" "$here/$N/sub/sub" "(null)" &&
try_case $N/sub/sub "$here/$N/wt" "$here/$N/.git" \
"$absgit" "$here/$N/wt" "$here/$N/sub/sub" "(null)"
ok 70 - #21: explicit GIT_WORK_TREE from nephew of worktree
expecting success of 1510.71 '#21: chdir_to_toplevel uses worktree, not git dir':
try_case $N "$here" .git \
"$absgit" "$here" "$here" $N/ &&
try_case $N .. .git \
"$absgit" "$here" "$here" $N/ &&
try_case $N .. "$here/$N/.git" \
"$absgit" "$here" "$here" $N/ &&
try_case $N "$here" "$here/$N/.git" \
"$absgit" "$here" "$here" $N/
ok 71 - #21: chdir_to_toplevel uses worktree, not git dir
expecting success of 1510.72 '#21: chdir_to_toplevel uses worktree (from subdir)':
try_case $N/sub/sub "$here" ../../.git \
"$absgit" "$here" "$here" $N/sub/sub/ &&
try_case $N/sub/sub ../../.. ../../.git \
"$absgit" "$here" "$here" $N/sub/sub/ &&
try_case $N/sub/sub ../../../ "$here/$N/.git" \
"$absgit" "$here" "$here" $N/sub/sub/ &&
try_case $N/sub/sub "$here" "$here/$N/.git" \
"$absgit" "$here" "$here" $N/sub/sub/
ok 72 - #21: chdir_to_toplevel uses worktree (from subdir)
expecting success of 1510.73 '#22a: core.worktree = GIT_DIR = .git dir':
# like case #6.
setup_repo 22a "$here/22a/.git" "" unset &&
setup_repo 22ab . "" unset &&
mkdir -p 22a/.git/sub 22a/sub &&
mkdir -p 22ab/.git/sub 22ab/sub &&
try_case 22a/.git unset . \
. "$here/22a/.git" "$here/22a/.git" "(null)" &&
try_case 22a/.git unset "$here/22a/.git" \
"$here/22a/.git" "$here/22a/.git" "$here/22a/.git" "(null)" &&
try_case 22a/.git/sub unset .. \
"$here/22a/.git" "$here/22a/.git" "$here/22a/.git" sub/ &&
try_case 22a/.git/sub unset "$here/22a/.git" \
"$here/22a/.git" "$here/22a/.git" "$here/22a/.git" sub/ &&
try_case 22ab/.git unset . \
. "$here/22ab/.git" "$here/22ab/.git" "(null)" &&
try_case 22ab/.git unset "$here/22ab/.git" \
"$here/22ab/.git" "$here/22ab/.git" "$here/22ab/.git" "(null)" &&
try_case 22ab/.git/sub unset .. \
"$here/22ab/.git" "$here/22ab/.git" "$here/22ab/.git" sub/ &&
try_case 22ab/.git unset "$here/22ab/.git" \
"$here/22ab/.git" "$here/22ab/.git" "$here/22ab/.git" "(null)"
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/22a/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/22ab/.git/
ok 73 - #22a: core.worktree = GIT_DIR = .git dir
expecting success of 1510.74 '#22b: core.worktree child of .git, GIT_DIR=.git':
setup_repo 22b "$here/22b/.git/wt" "" unset &&
setup_repo 22bb wt "" unset &&
mkdir -p 22b/.git/sub 22b/sub 22b/.git/wt/sub 22b/wt/sub &&
mkdir -p 22bb/.git/sub 22bb/sub 22bb/.git/wt 22bb/wt &&
try_case 22b/.git unset . \
. "$here/22b/.git/wt" "$here/22b/.git" "(null)" &&
try_case 22b/.git unset "$here/22b/.git" \
"$here/22b/.git" "$here/22b/.git/wt" "$here/22b/.git" "(null)" &&
try_case 22b/.git/sub unset .. \
.. "$here/22b/.git/wt" "$here/22b/.git/sub" "(null)" &&
try_case 22b/.git/sub unset "$here/22b/.git" \
"$here/22b/.git" "$here/22b/.git/wt" "$here/22b/.git/sub" "(null)" &&
try_case 22bb/.git unset . \
. "$here/22bb/.git/wt" "$here/22bb/.git" "(null)" &&
try_case 22bb/.git unset "$here/22bb/.git" \
"$here/22bb/.git" "$here/22bb/.git/wt" "$here/22bb/.git" "(null)" &&
try_case 22bb/.git/sub unset .. \
.. "$here/22bb/.git/wt" "$here/22bb/.git/sub" "(null)" &&
try_case 22bb/.git/sub unset "$here/22bb/.git" \
"$here/22bb/.git" "$here/22bb/.git/wt" "$here/22bb/.git/sub" "(null)"
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/22b/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/22bb/.git/
ok 74 - #22b: core.worktree child of .git, GIT_DIR=.git
expecting success of 1510.75 '#22c: core.worktree = .git/.., GIT_DIR=.git':
setup_repo 22c "$here/22c" "" unset &&
setup_repo 22cb .. "" unset &&
mkdir -p 22c/.git/sub 22c/sub &&
mkdir -p 22cb/.git/sub 22cb/sub &&
try_case 22c/.git unset . \
"$here/22c/.git" "$here/22c" "$here/22c" .git/ &&
try_case 22c/.git unset "$here/22c/.git" \
"$here/22c/.git" "$here/22c" "$here/22c" .git/ &&
try_case 22c/.git/sub unset .. \
"$here/22c/.git" "$here/22c" "$here/22c" .git/sub/ &&
try_case 22c/.git/sub unset "$here/22c/.git" \
"$here/22c/.git" "$here/22c" "$here/22c" .git/sub/ &&
try_case 22cb/.git unset . \
"$here/22cb/.git" "$here/22cb" "$here/22cb" .git/ &&
try_case 22cb/.git unset "$here/22cb/.git" \
"$here/22cb/.git" "$here/22cb" "$here/22cb" .git/ &&
try_case 22cb/.git/sub unset .. \
"$here/22cb/.git" "$here/22cb" "$here/22cb" .git/sub/ &&
try_case 22cb/.git/sub unset "$here/22cb/.git" \
"$here/22cb/.git" "$here/22cb" "$here/22cb" .git/sub/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/22c/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/22cb/.git/
ok 75 - #22c: core.worktree = .git/.., GIT_DIR=.git
expecting success of 1510.76 '#22.2: core.worktree and core.bare conflict':
setup_repo 22 "$here/22" "" true &&
(
cd 22/.git &&
GIT_DIR=. &&
export GIT_DIR &&
test_must_fail git status 2>result
) &&
(
cd 22 &&
GIT_DIR=.git &&
export GIT_DIR &&
test_must_fail git status 2>result
) &&
grep "core.bare and core.worktree" 22/.git/result &&
grep "core.bare and core.worktree" 22/result
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/22/.git/
warning: core.bare and core.worktree do not make sense
warning: core.bare and core.worktree do not make sense
ok 76 - #22.2: core.worktree and core.bare conflict
expecting success of 1510.77 '#23: setup':
setup_repo 23 non-existent "" true &&
mkdir -p 23/sub/sub 23/wt/sub
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/23/.git/
ok 77 - #23: setup
expecting success of 1510.78 '#23: explicit GIT_WORK_TREE and GIT_DIR at toplevel':
try_case $N "$here/$N" .git \
"$dotgit" "$here/$N" "$here/$N" "(null)" &&
try_case $N . .git \
"$dotgit" "$here/$N" "$here/$N" "(null)" &&
try_case $N "$here/$N" "$here/$N/.git" \
"$absgit" "$here/$N" "$here/$N" "(null)" &&
try_case $N . "$here/$N/.git" \
"$absgit" "$here/$N" "$here/$N" "(null)"
ok 78 - #23: explicit GIT_WORK_TREE and GIT_DIR at toplevel
expecting success of 1510.79 '#23: explicit GIT_WORK_TREE and GIT_DIR in subdir':
try_case $N/sub/sub "$here/$N" ../../.git \
"$absgit" "$here/$N" "$here/$N" sub/sub/ &&
try_case $N/sub/sub ../.. ../../.git \
"$absgit" "$here/$N" "$here/$N" sub/sub/ &&
try_case $N/sub/sub "$here/$N" "$here/$N/.git" \
"$absgit" "$here/$N" "$here/$N" sub/sub/ &&
try_case $N/sub/sub ../.. "$here/$N/.git" \
"$absgit" "$here/$N" "$here/$N" sub/sub/
ok 79 - #23: explicit GIT_WORK_TREE and GIT_DIR in subdir
expecting success of 1510.80 '#23: explicit GIT_WORK_TREE from parent of worktree':
try_case $N "$here/$N/wt" .git \
"$dotgit" "$here/$N/wt" "$here/$N" "(null)" &&
try_case $N wt .git \
"$dotgit" "$here/$N/wt" "$here/$N" "(null)" &&
try_case $N wt "$here/$N/.git" \
"$absgit" "$here/$N/wt" "$here/$N" "(null)" &&
try_case $N "$here/$N/wt" "$here/$N/.git" \
"$absgit" "$here/$N/wt" "$here/$N" "(null)"
ok 80 - #23: explicit GIT_WORK_TREE from parent of worktree
expecting success of 1510.81 '#23: explicit GIT_WORK_TREE from nephew of worktree':
try_case $N/sub/sub "$here/$N/wt" ../../.git \
"$dotdotgit" "$here/$N/wt" "$here/$N/sub/sub" "(null)" &&
try_case $N/sub/sub ../../wt ../../.git \
"$dotdotgit" "$here/$N/wt" "$here/$N/sub/sub" "(null)" &&
try_case $N/sub/sub ../../wt "$here/$N/.git" \
"$absgit" "$here/$N/wt" "$here/$N/sub/sub" "(null)" &&
try_case $N/sub/sub "$here/$N/wt" "$here/$N/.git" \
"$absgit" "$here/$N/wt" "$here/$N/sub/sub" "(null)"
ok 81 - #23: explicit GIT_WORK_TREE from nephew of worktree
expecting success of 1510.82 '#23: chdir_to_toplevel uses worktree, not git dir':
try_case $N "$here" .git \
"$absgit" "$here" "$here" $N/ &&
try_case $N .. .git \
"$absgit" "$here" "$here" $N/ &&
try_case $N .. "$here/$N/.git" \
"$absgit" "$here" "$here" $N/ &&
try_case $N "$here" "$here/$N/.git" \
"$absgit" "$here" "$here" $N/
ok 82 - #23: chdir_to_toplevel uses worktree, not git dir
expecting success of 1510.83 '#23: chdir_to_toplevel uses worktree (from subdir)':
try_case $N/sub/sub "$here" ../../.git \
"$absgit" "$here" "$here" $N/sub/sub/ &&
try_case $N/sub/sub ../../.. ../../.git \
"$absgit" "$here" "$here" $N/sub/sub/ &&
try_case $N/sub/sub ../../../ "$here/$N/.git" \
"$absgit" "$here" "$here" $N/sub/sub/ &&
try_case $N/sub/sub "$here" "$here/$N/.git" \
"$absgit" "$here" "$here" $N/sub/sub/
ok 83 - #23: chdir_to_toplevel uses worktree (from subdir)
expecting success of 1510.84 '#24: bare repo has no worktree (gitfile case)':
try_repo 24 unset unset unset gitfile true \
"$here/24.git" "(null)" "$here/24" "(null)" \
"$here/24.git" "(null)" "$here/24/sub" "(null)"
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/24/.git/
ok 84 - #24: bare repo has no worktree (gitfile case)
expecting success of 1510.85 '#25: GIT_WORK_TREE accepted if GIT_DIR unset (bare gitfile case)':
try_repo 25 "$here/25" unset unset gitfile true \
"$here/25.git" "$here/25" "$here/25" "(null)" \
"$here/25.git" "$here/25" "$here/25" "sub/" 2>message &&
test_must_be_empty message
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/25/.git/
ok 85 - #25: GIT_WORK_TREE accepted if GIT_DIR unset (bare gitfile case)
expecting success of 1510.86 '#26: bare repo has no worktree (GIT_DIR -> gitfile case)':
try_repo 26 unset "$here/26/.git" unset gitfile true \
"$here/26.git" "(null)" "$here/26" "(null)" \
"$here/26.git" "(null)" "$here/26/sub" "(null)" &&
try_repo 26b unset .git unset gitfile true \
"$here/26b.git" "(null)" "$here/26b" "(null)" \
"$here/26b.git" "(null)" "$here/26b/sub" "(null)"
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/26/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/26b/.git/
ok 86 - #26: bare repo has no worktree (GIT_DIR -> gitfile case)
expecting success of 1510.87 '#27: setup':
setup_repo 27 unset gitfile true &&
mkdir -p 27/sub/sub 27/wt/sub
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/27/.git/
ok 87 - #27: setup
expecting success of 1510.88 '#27: explicit GIT_WORK_TREE and GIT_DIR at toplevel':
try_case $N "$here/$N" .git \
"$dotgit" "$here/$N" "$here/$N" "(null)" &&
try_case $N . .git \
"$dotgit" "$here/$N" "$here/$N" "(null)" &&
try_case $N "$here/$N" "$here/$N/.git" \
"$absgit" "$here/$N" "$here/$N" "(null)" &&
try_case $N . "$here/$N/.git" \
"$absgit" "$here/$N" "$here/$N" "(null)"
ok 88 - #27: explicit GIT_WORK_TREE and GIT_DIR at toplevel
expecting success of 1510.89 '#27: explicit GIT_WORK_TREE and GIT_DIR in subdir':
try_case $N/sub/sub "$here/$N" ../../.git \
"$absgit" "$here/$N" "$here/$N" sub/sub/ &&
try_case $N/sub/sub ../.. ../../.git \
"$absgit" "$here/$N" "$here/$N" sub/sub/ &&
try_case $N/sub/sub "$here/$N" "$here/$N/.git" \
"$absgit" "$here/$N" "$here/$N" sub/sub/ &&
try_case $N/sub/sub ../.. "$here/$N/.git" \
"$absgit" "$here/$N" "$here/$N" sub/sub/
ok 89 - #27: explicit GIT_WORK_TREE and GIT_DIR in subdir
expecting success of 1510.90 '#27: explicit GIT_WORK_TREE from parent of worktree':
try_case $N "$here/$N/wt" .git \
"$dotgit" "$here/$N/wt" "$here/$N" "(null)" &&
try_case $N wt .git \
"$dotgit" "$here/$N/wt" "$here/$N" "(null)" &&
try_case $N wt "$here/$N/.git" \
"$absgit" "$here/$N/wt" "$here/$N" "(null)" &&
try_case $N "$here/$N/wt" "$here/$N/.git" \
"$absgit" "$here/$N/wt" "$here/$N" "(null)"
ok 90 - #27: explicit GIT_WORK_TREE from parent of worktree
expecting success of 1510.91 '#27: explicit GIT_WORK_TREE from nephew of worktree':
try_case $N/sub/sub "$here/$N/wt" ../../.git \
"$dotdotgit" "$here/$N/wt" "$here/$N/sub/sub" "(null)" &&
try_case $N/sub/sub ../../wt ../../.git \
"$dotdotgit" "$here/$N/wt" "$here/$N/sub/sub" "(null)" &&
try_case $N/sub/sub ../../wt "$here/$N/.git" \
"$absgit" "$here/$N/wt" "$here/$N/sub/sub" "(null)" &&
try_case $N/sub/sub "$here/$N/wt" "$here/$N/.git" \
"$absgit" "$here/$N/wt" "$here/$N/sub/sub" "(null)"
ok 91 - #27: explicit GIT_WORK_TREE from nephew of worktree
expecting success of 1510.92 '#27: chdir_to_toplevel uses worktree, not git dir':
try_case $N "$here" .git \
"$absgit" "$here" "$here" $N/ &&
try_case $N .. .git \
"$absgit" "$here" "$here" $N/ &&
try_case $N .. "$here/$N/.git" \
"$absgit" "$here" "$here" $N/ &&
try_case $N "$here" "$here/$N/.git" \
"$absgit" "$here" "$here" $N/
ok 92 - #27: chdir_to_toplevel uses worktree, not git dir
expecting success of 1510.93 '#27: chdir_to_toplevel uses worktree (from subdir)':
try_case $N/sub/sub "$here" ../../.git \
"$absgit" "$here" "$here" $N/sub/sub/ &&
try_case $N/sub/sub ../../.. ../../.git \
"$absgit" "$here" "$here" $N/sub/sub/ &&
try_case $N/sub/sub ../../../ "$here/$N/.git" \
"$absgit" "$here" "$here" $N/sub/sub/ &&
try_case $N/sub/sub "$here" "$here/$N/.git" \
"$absgit" "$here" "$here" $N/sub/sub/
ok 93 - #27: chdir_to_toplevel uses worktree (from subdir)
expecting success of 1510.94 '#28: core.worktree and core.bare conflict (gitfile case)':
setup_repo 28 "$here/28" gitfile true &&
(
cd 28 &&
test_must_fail git status
) 2>message &&
grep "core.bare and core.worktree" message
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/28/.git/
warning: core.bare and core.worktree do not make sense
ok 94 - #28: core.worktree and core.bare conflict (gitfile case)
expecting success of 1510.95 '#29: setup':
setup_repo 29 non-existent gitfile true &&
mkdir -p 29/sub/sub 29/wt/sub &&
(
cd 29 &&
GIT_WORK_TREE="$here/29" &&
export GIT_WORK_TREE &&
git status
) 2>message &&
test_must_be_empty message
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/29/.git/
On branch master
No commits yet
nothing to commit (create/copy files and use "git add" to track)
ok 95 - #29: setup
expecting success of 1510.96 '#29: explicit GIT_WORK_TREE and GIT_DIR at toplevel':
try_case $N "$here/$N" .git \
"$dotgit" "$here/$N" "$here/$N" "(null)" &&
try_case $N . .git \
"$dotgit" "$here/$N" "$here/$N" "(null)" &&
try_case $N "$here/$N" "$here/$N/.git" \
"$absgit" "$here/$N" "$here/$N" "(null)" &&
try_case $N . "$here/$N/.git" \
"$absgit" "$here/$N" "$here/$N" "(null)"
ok 96 - #29: explicit GIT_WORK_TREE and GIT_DIR at toplevel
expecting success of 1510.97 '#29: explicit GIT_WORK_TREE and GIT_DIR in subdir':
try_case $N/sub/sub "$here/$N" ../../.git \
"$absgit" "$here/$N" "$here/$N" sub/sub/ &&
try_case $N/sub/sub ../.. ../../.git \
"$absgit" "$here/$N" "$here/$N" sub/sub/ &&
try_case $N/sub/sub "$here/$N" "$here/$N/.git" \
"$absgit" "$here/$N" "$here/$N" sub/sub/ &&
try_case $N/sub/sub ../.. "$here/$N/.git" \
"$absgit" "$here/$N" "$here/$N" sub/sub/
ok 97 - #29: explicit GIT_WORK_TREE and GIT_DIR in subdir
expecting success of 1510.98 '#29: explicit GIT_WORK_TREE from parent of worktree':
try_case $N "$here/$N/wt" .git \
"$dotgit" "$here/$N/wt" "$here/$N" "(null)" &&
try_case $N wt .git \
"$dotgit" "$here/$N/wt" "$here/$N" "(null)" &&
try_case $N wt "$here/$N/.git" \
"$absgit" "$here/$N/wt" "$here/$N" "(null)" &&
try_case $N "$here/$N/wt" "$here/$N/.git" \
"$absgit" "$here/$N/wt" "$here/$N" "(null)"
ok 98 - #29: explicit GIT_WORK_TREE from parent of worktree
expecting success of 1510.99 '#29: explicit GIT_WORK_TREE from nephew of worktree':
try_case $N/sub/sub "$here/$N/wt" ../../.git \
"$dotdotgit" "$here/$N/wt" "$here/$N/sub/sub" "(null)" &&
try_case $N/sub/sub ../../wt ../../.git \
"$dotdotgit" "$here/$N/wt" "$here/$N/sub/sub" "(null)" &&
try_case $N/sub/sub ../../wt "$here/$N/.git" \
"$absgit" "$here/$N/wt" "$here/$N/sub/sub" "(null)" &&
try_case $N/sub/sub "$here/$N/wt" "$here/$N/.git" \
"$absgit" "$here/$N/wt" "$here/$N/sub/sub" "(null)"
ok 99 - #29: explicit GIT_WORK_TREE from nephew of worktree
expecting success of 1510.100 '#29: chdir_to_toplevel uses worktree, not git dir':
try_case $N "$here" .git \
"$absgit" "$here" "$here" $N/ &&
try_case $N .. .git \
"$absgit" "$here" "$here" $N/ &&
try_case $N .. "$here/$N/.git" \
"$absgit" "$here" "$here" $N/ &&
try_case $N "$here" "$here/$N/.git" \
"$absgit" "$here" "$here" $N/
ok 100 - #29: chdir_to_toplevel uses worktree, not git dir
expecting success of 1510.101 '#29: chdir_to_toplevel uses worktree (from subdir)':
try_case $N/sub/sub "$here" ../../.git \
"$absgit" "$here" "$here" $N/sub/sub/ &&
try_case $N/sub/sub ../../.. ../../.git \
"$absgit" "$here" "$here" $N/sub/sub/ &&
try_case $N/sub/sub ../../../ "$here/$N/.git" \
"$absgit" "$here" "$here" $N/sub/sub/ &&
try_case $N/sub/sub "$here" "$here/$N/.git" \
"$absgit" "$here" "$here" $N/sub/sub/
ok 101 - #29: chdir_to_toplevel uses worktree (from subdir)
expecting success of 1510.102 '#30: core.worktree and core.bare conflict (gitfile version)':
# Just like case #22.
setup_repo 30 "$here/30" gitfile true &&
(
cd 30 &&
test_must_fail env GIT_DIR=.git git status 2>result
) &&
grep "core.bare and core.worktree" 30/result
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/30/.git/
warning: core.bare and core.worktree do not make sense
ok 102 - #30: core.worktree and core.bare conflict (gitfile version)
expecting success of 1510.103 '#31: setup':
setup_repo 31 non-existent gitfile true &&
mkdir -p 31/sub/sub 31/wt/sub
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1510-repo-setup/31/.git/
ok 103 - #31: setup
expecting success of 1510.104 '#31: explicit GIT_WORK_TREE and GIT_DIR at toplevel':
try_case $N "$here/$N" .git \
"$dotgit" "$here/$N" "$here/$N" "(null)" &&
try_case $N . .git \
"$dotgit" "$here/$N" "$here/$N" "(null)" &&
try_case $N "$here/$N" "$here/$N/.git" \
"$absgit" "$here/$N" "$here/$N" "(null)" &&
try_case $N . "$here/$N/.git" \
"$absgit" "$here/$N" "$here/$N" "(null)"
ok 104 - #31: explicit GIT_WORK_TREE and GIT_DIR at toplevel
expecting success of 1510.105 '#31: explicit GIT_WORK_TREE and GIT_DIR in subdir':
try_case $N/sub/sub "$here/$N" ../../.git \
"$absgit" "$here/$N" "$here/$N" sub/sub/ &&
try_case $N/sub/sub ../.. ../../.git \
"$absgit" "$here/$N" "$here/$N" sub/sub/ &&
try_case $N/sub/sub "$here/$N" "$here/$N/.git" \
"$absgit" "$here/$N" "$here/$N" sub/sub/ &&
try_case $N/sub/sub ../.. "$here/$N/.git" \
"$absgit" "$here/$N" "$here/$N" sub/sub/
ok 105 - #31: explicit GIT_WORK_TREE and GIT_DIR in subdir
expecting success of 1510.106 '#31: explicit GIT_WORK_TREE from parent of worktree':
try_case $N "$here/$N/wt" .git \
"$dotgit" "$here/$N/wt" "$here/$N" "(null)" &&
try_case $N wt .git \
"$dotgit" "$here/$N/wt" "$here/$N" "(null)" &&
try_case $N wt "$here/$N/.git" \
"$absgit" "$here/$N/wt" "$here/$N" "(null)" &&
try_case $N "$here/$N/wt" "$here/$N/.git" \
"$absgit" "$here/$N/wt" "$here/$N" "(null)"
ok 106 - #31: explicit GIT_WORK_TREE from parent of worktree
expecting success of 1510.107 '#31: explicit GIT_WORK_TREE from nephew of worktree':
try_case $N/sub/sub "$here/$N/wt" ../../.git \
"$dotdotgit" "$here/$N/wt" "$here/$N/sub/sub" "(null)" &&
try_case $N/sub/sub ../../wt ../../.git \
"$dotdotgit" "$here/$N/wt" "$here/$N/sub/sub" "(null)" &&
try_case $N/sub/sub ../../wt "$here/$N/.git" \
"$absgit" "$here/$N/wt" "$here/$N/sub/sub" "(null)" &&
try_case $N/sub/sub "$here/$N/wt" "$here/$N/.git" \
"$absgit" "$here/$N/wt" "$here/$N/sub/sub" "(null)"
ok 107 - #31: explicit GIT_WORK_TREE from nephew of worktree
expecting success of 1510.108 '#31: chdir_to_toplevel uses worktree, not git dir':
try_case $N "$here" .git \
"$absgit" "$here" "$here" $N/ &&
try_case $N .. .git \
"$absgit" "$here" "$here" $N/ &&
try_case $N .. "$here/$N/.git" \
"$absgit" "$here" "$here" $N/ &&
try_case $N "$here" "$here/$N/.git" \
"$absgit" "$here" "$here" $N/
ok 108 - #31: chdir_to_toplevel uses worktree, not git dir
expecting success of 1510.109 '#31: chdir_to_toplevel uses worktree (from subdir)':
try_case $N/sub/sub "$here" ../../.git \
"$absgit" "$here" "$here" $N/sub/sub/ &&
try_case $N/sub/sub ../../.. ../../.git \
"$absgit" "$here" "$here" $N/sub/sub/ &&
try_case $N/sub/sub ../../../ "$here/$N/.git" \
"$absgit" "$here" "$here" $N/sub/sub/ &&
try_case $N/sub/sub "$here" "$here/$N/.git" \
"$absgit" "$here" "$here" $N/sub/sub/
ok 109 - #31: chdir_to_toplevel uses worktree (from subdir)
# passed all 109 test(s)
1..109
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2003-checkout-cache-mkdir.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2003-checkout-cache-mkdir/.git/
expecting success of 2003.1 'setup':
mkdir path1 &&
echo frotz >path0 &&
echo rezrov >path1/file1 &&
git update-index --add path0 path1/file1
ok 1 - setup
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
expecting success of 2003.2 'have symlink in place where dir is expected.':
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 of 2003.3 'use --prefix=path2/':
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 of 2003.4 'use --prefix=tmp-':
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 of 2003.5 'use --prefix=tmp- but with a conflicting file and dir':
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 of 2003.6 'use --prefix=tmp/orary/ where tmp is a symlink':
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 of 2003.7 'use --prefix=tmp/orary- where tmp is a symlink':
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 of 2003.8 'use --prefix=tmp- where tmp-path1 is a symlink':
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
expecting success of 2003.9 'apply filter from working tree .gitattributes with --prefix':
rm -fr path0 path1 path2 tmp* &&
mkdir path1 &&
mkdir tmp &&
git config filter.replace-all.smudge "sed -e s/./,/g" &&
git config filter.replace-all.clean cat &&
git config filter.replace-all.required true &&
echo "file1 filter=replace-all" >path1/.gitattributes &&
git checkout-index --prefix=tmp/ -f -a &&
echo frotz >expected &&
test_cmp expected tmp/path0 &&
echo ,,,,,, >expected &&
test_cmp expected tmp/path1/file1
ok 9 - apply filter from working tree .gitattributes with --prefix
expecting success of 2003.10 'apply CRLF filter from working tree .gitattributes with --prefix':
rm -fr path0 path1 path2 tmp* &&
mkdir path1 &&
mkdir tmp &&
echo "file1 eol=crlf" >path1/.gitattributes &&
git checkout-index --prefix=tmp/ -f -a &&
echo rezrovQ >expected &&
tr \\015 Q <tmp/path1/file1 >actual &&
test_cmp expected actual
ok 10 - apply CRLF filter from working tree .gitattributes with --prefix
# passed all 10 test(s)
1..10
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2005-checkout-index-symlinks.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2005-checkout-index-symlinks/.git/
expecting success of 2005.1 'preparation':
git config core.symlinks false &&
l=$(printf file | git hash-object -t blob -w --stdin) &&
echo "120000 $l symlink" | git update-index --index-info
ok 1 - preparation
expecting success of 2005.2 'the checked-out symlink must be a file':
git checkout-index symlink &&
test -f symlink
ok 2 - the checked-out symlink must be a file
expecting success of 2005.3 'the file must be the blob we added during the setup':
echo "$l" >expect &&
git hash-object -t blob symlink >actual &&
test_cmp expect actual
ok 3 - the file must be the blob we added during the setup
# passed all 3 test(s)
1..3
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2004-checkout-cache-temp.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2004-checkout-cache-temp/.git/
expecting success of 2004.1 'setup':
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_* actual .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_* actual .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 - setup
expecting success of 2004.2 'checkout one stage 0 to temporary file':
rm -f path* .merge_* actual .git/index &&
git read-tree $t1 &&
git checkout-index --temp -- path1 >actual &&
test_line_count = 1 actual &&
test $(cut "-d " -f2 actual) = path1 &&
p=$(cut "-d " -f1 actual) &&
test -f $p &&
test $(cat $p) = tree1path1
ok 2 - checkout one stage 0 to temporary file
expecting success of 2004.3 'checkout all stage 0 to temporary files':
rm -f path* .merge_* actual .git/index &&
git read-tree $t1 &&
git checkout-index -a --temp >actual &&
test_line_count = 5 actual &&
for f in path0 path1 path3 path4 asubdir/path5
do
test $(grep $f actual | cut "-d " -f2) = $f &&
p=$(grep $f actual | cut "-d " -f1) &&
test -f $p &&
test $(cat $p) = tree1$f || return 1
done
ok 3 - checkout all stage 0 to temporary files
expecting success of 2004.4 'setup 3-way merge':
rm -f path* .merge_* actual .git/index &&
git read-tree -m $t1 $t2 $t3
ok 4 - setup 3-way merge
expecting success of 2004.5 'checkout one stage 2 to temporary file':
rm -f path* .merge_* actual &&
git checkout-index --stage=2 --temp -- path1 >actual &&
test_line_count = 1 actual &&
test $(cut "-d " -f2 actual) = path1 &&
p=$(cut "-d " -f1 actual) &&
test -f $p &&
test $(cat $p) = tree2path1
ok 5 - checkout one stage 2 to temporary file
expecting success of 2004.6 'checkout all stage 2 to temporary files':
rm -f path* .merge_* actual &&
git checkout-index --all --stage=2 --temp >actual &&
test_line_count = 3 actual &&
for f in path1 path2 path4
do
test $(grep $f actual | cut "-d " -f2) = $f &&
p=$(grep $f actual | cut "-d " -f1) &&
test -f $p &&
test $(cat $p) = tree2$f || return 1
done
ok 6 - checkout all stage 2 to temporary files
expecting success of 2004.7 'checkout all stages of unknown path':
rm -f path* .merge_* actual &&
test_must_fail git checkout-index --stage=all --temp \
-- does-not-exist 2>stderr &&
test_i18ngrep not.in.the.cache stderr
git checkout-index: does-not-exist is not in the cache
ok 7 - checkout all stages of unknown path
expecting success of 2004.8 'checkout all stages/one file to nothing':
rm -f path* .merge_* actual &&
git checkout-index --stage=all --temp -- path0 >actual 2>stderr &&
test_must_be_empty stderr &&
test_line_count = 0 actual
ok 8 - checkout all stages/one file to nothing
expecting success of 2004.9 'checkout all stages/one file to temporary files':
rm -f path* .merge_* actual &&
git checkout-index --stage=all --temp -- path1 >actual &&
test_line_count = 1 actual &&
test $(cut "-d " -f2 actual) = path1 &&
cut "-d " -f1 actual | (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 9 - checkout all stages/one file to temporary files
expecting success of 2004.10 'checkout some stages/one file to temporary files':
rm -f path* .merge_* actual &&
git checkout-index --stage=all --temp -- path2 >actual &&
test_line_count = 1 actual &&
test $(cut "-d " -f2 actual) = path2 &&
cut "-d " -f1 actual | (read s1 s2 s3 &&
test $s1 = . &&
test -f $s2 &&
test -f $s3 &&
test $(cat $s2) = tree2path2 &&
test $(cat $s3) = tree3path2)
ok 10 - checkout some stages/one file to temporary files
expecting success of 2004.11 'checkout all stages/all files to temporary files':
rm -f path* .merge_* actual &&
git checkout-index -a --stage=all --temp >actual &&
test_line_count = 5 actual
ok 11 - checkout all stages/all files to temporary files
expecting success of 2004.12 '-- path0: no entry':
test x$(grep path0 actual | cut "-d " -f2) = x
ok 12 - -- path0: no entry
expecting success of 2004.13 '-- path1: all 3 stages':
test $(grep path1 actual | cut "-d " -f2) = path1 &&
grep path1 actual | 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 13 - -- path1: all 3 stages
expecting success of 2004.14 '-- path2: no stage 1, have stage 2 and 3':
test $(grep path2 actual | cut "-d " -f2) = path2 &&
grep path2 actual | cut "-d " -f1 | (read s1 s2 s3 &&
test $s1 = . &&
test -f $s2 &&
test -f $s3 &&
test $(cat $s2) = tree2path2 &&
test $(cat $s3) = tree3path2)
ok 14 - -- path2: no stage 1, have stage 2 and 3
expecting success of 2004.15 '-- path3: no stage 2, have stage 1 and 3':
test $(grep path3 actual | cut "-d " -f2) = path3 &&
grep path3 actual | cut "-d " -f1 | (read s1 s2 s3 &&
test -f $s1 &&
test $s2 = . &&
test -f $s3 &&
test $(cat $s1) = tree1path3 &&
test $(cat $s3) = tree3path3)
ok 15 - -- path3: no stage 2, have stage 1 and 3
expecting success of 2004.16 '-- path4: no stage 3, have stage 1 and 3':
test $(grep path4 actual | cut "-d " -f2) = path4 &&
grep path4 actual | cut "-d " -f1 | (read s1 s2 s3 &&
test -f $s1 &&
test -f $s2 &&
test $s3 = . &&
test $(cat $s1) = tree1path4 &&
test $(cat $s2) = tree2path4)
ok 16 - -- path4: no stage 3, have stage 1 and 3
expecting success of 2004.17 '-- asubdir/path5: no stage 2 and 3 have stage 1':
test $(grep asubdir/path5 actual | cut "-d " -f2) = asubdir/path5 &&
grep asubdir/path5 actual | cut "-d " -f1 | (read s1 s2 s3 &&
test -f $s1 &&
test $s2 = . &&
test $s3 = . &&
test $(cat $s1) = tree1asubdir/path5)
ok 17 - -- asubdir/path5: no stage 2 and 3 have stage 1
expecting success of 2004.18 'checkout --temp within subdir':
(
cd asubdir &&
git checkout-index -a --stage=all >actual &&
test_line_count = 1 actual &&
test $(grep path5 actual | cut "-d " -f2) = path5 &&
grep path5 actual | cut "-d " -f1 | (read s1 s2 s3 &&
test -f ../$s1 &&
test $s2 = . &&
test $s3 = . &&
test $(cat ../$s1) = tree1asubdir/path5)
)
ok 18 - checkout --temp within subdir
expecting success of 2004.19 'checkout --temp symlink':
rm -f path* .merge_* actual .git/index &&
test_ln_s_add path7 path6 &&
git checkout-index --temp -a >actual &&
test_line_count = 1 actual &&
test $(cut "-d " -f2 actual) = path6 &&
p=$(cut "-d " -f1 actual) &&
test -f $p &&
test $(cat $p) = path7
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
ok 19 - checkout --temp symlink
expecting success of 2004.20 'emit well-formed relative path':
rm -f path* .merge_* actual .git/index &&
>path0123456789 &&
git update-index --add path0123456789 &&
(
cd asubdir &&
git checkout-index --temp -- ../path0123456789 >actual &&
test_line_count = 1 actual &&
test $(cut "-d " -f2 actual) = ../path0123456789
)
ok 20 - emit well-formed relative path
# passed all 20 test(s)
1..20
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2006-checkout-index-basic.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2006-checkout-index-basic/.git/
expecting success of 2006.1 'checkout-index --gobbledegook':
test_expect_code 129 git checkout-index --gobbledegook 2>err &&
test_i18ngrep "[Uu]sage" err
usage: git checkout-index [<options>] [--] [<file>...]
ok 1 - checkout-index --gobbledegook
expecting success of 2006.2 'checkout-index -h in broken repository':
mkdir broken &&
(
cd broken &&
git init &&
>.git/index &&
test_expect_code 129 git checkout-index -h >usage 2>&1
) &&
test_i18ngrep "[Uu]sage" broken/usage
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2006-checkout-index-basic/broken/.git/
usage: git checkout-index [<options>] [--] [<file>...]
ok 2 - checkout-index -h in broken repository
expecting success of 2006.3 'checkout-index reports errors (cmdline)':
test_must_fail git checkout-index -- does-not-exist 2>stderr &&
test_i18ngrep not.in.the.cache stderr
git checkout-index: does-not-exist is not in the cache
ok 3 - checkout-index reports errors (cmdline)
expecting success of 2006.4 'checkout-index reports errors (stdin)':
echo does-not-exist |
test_must_fail git checkout-index --stdin 2>stderr &&
test_i18ngrep not.in.the.cache stderr
git checkout-index: does-not-exist is not in the cache
ok 4 - checkout-index reports errors (stdin)
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
checking prerequisite: CASE_INSENSITIVE_FS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-CASE_INSENSITIVE_FS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-CASE_INSENSITIVE_FS" &&
echo good >CamelCase &&
echo bad >camelcase &&
test "$(cat CamelCase)" != good
)
prerequisite CASE_INSENSITIVE_FS not satisfied
ok 5 # skip checkout-index with case-collision don't write to the wrong place (missing CASE_INSENSITIVE_FS of SYMLINKS,CASE_INSENSITIVE_FS)
checking prerequisite: UTF8_NFD_TO_NFC
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-UTF8_NFD_TO_NFC" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-UTF8_NFD_TO_NFC" &&
# check whether FS converts nfd unicode to nfc
auml=$(printf "\303\244")
aumlcdiar=$(printf "\141\314\210")
>"$auml" &&
test -f "$aumlcdiar"
)
prerequisite UTF8_NFD_TO_NFC not satisfied
ok 6 # skip checkout-index with utf-8-collision don't write to the wrong place (missing UTF8_NFD_TO_NFC of SYMLINKS,UTF8_NFD_TO_NFC)
expecting success of 2006.7 'checkout-index --temp correctly reports error on missing blobs':
test_when_finished git reset --hard &&
missing_blob=$(echo "no such blob here" | git hash-object --stdin) &&
cat >objs <<-EOF &&
100644 $missing_blob file
120000 $missing_blob symlink
EOF
git update-index --index-info <objs &&
test_must_fail git checkout-index --temp symlink file 2>stderr &&
test_i18ngrep "unable to read sha1 file of file ($missing_blob)" stderr &&
test_i18ngrep "unable to read sha1 file of symlink ($missing_blob)" stderr
.merge_file_tEx5sw file
error: unable to read sha1 file of file (3685f0bc3974902b137f7dc59ac799c006cdec92)
error: unable to read sha1 file of symlink (3685f0bc3974902b137f7dc59ac799c006cdec92)
ok 7 - checkout-index --temp correctly reports error on missing blobs
expecting success of 2006.8 'checkout-index --temp correctly reports error for submodules':
git init sub &&
test_commit -C sub file &&
git submodule add ./sub &&
git commit -m sub &&
test_must_fail git checkout-index --temp sub 2>stderr &&
test_i18ngrep "cannot create temporary submodule sub" stderr
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2006-checkout-index-basic/sub/.git/
[master (root-commit) 4c1911f] file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file.t
Adding existing repo at 'sub' to the index
[master (root-commit) c4df02a] sub
Author: A U Thor <author@example.com>
2 files changed, 4 insertions(+)
create mode 100644 .gitmodules
create mode 160000 sub
error: cannot create temporary submodule sub
ok 8 - checkout-index --temp correctly reports error for submodules
# passed all 8 test(s)
1..8
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2007-checkout-symlink.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2007-checkout-symlink/.git/
expecting success of 2007.1 'setup':
mkdir frotz &&
echo hello >frotz/filfre &&
git add frotz/filfre &&
test_tick &&
git commit -m "main has file frotz/filfre" &&
git branch side &&
echo goodbye >nitfol &&
git add nitfol &&
test_tick &&
git commit -m "main adds file nitfol" &&
git checkout side &&
git rm --cached frotz/filfre &&
mv frotz xyzzy &&
test_ln_s_add xyzzy frotz &&
git add xyzzy/filfre &&
test_tick &&
git commit -m "side moves frotz/ to xyzzy/ and adds frotz->xyzzy/"
[main (root-commit) 608bc3a] main has file frotz/filfre
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 frotz/filfre
[main f539081] main adds file nitfol
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 nitfol
Switched to branch 'side'
rm 'frotz/filfre'
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
[side dc669bf] side moves frotz/ to xyzzy/ and adds frotz->xyzzy/
Author: A U Thor <author@example.com>
2 files changed, 1 insertion(+)
create mode 120000 frotz
rename {frotz => xyzzy}/filfre (100%)
ok 1 - setup
expecting success of 2007.2 'switch from symlink to dir':
git checkout main
Switched to branch 'main'
ok 2 - switch from symlink to dir
expecting success of 2007.3 'Remove temporary directories & switch to main':
rm -fr frotz xyzzy nitfol &&
git checkout -f main
Already on 'main'
ok 3 - Remove temporary directories & switch to main
expecting success of 2007.4 'switch from dir to symlink':
git checkout side
Switched to branch 'side'
ok 4 - switch from dir to symlink
# passed all 4 test(s)
1..4
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2008-checkout-subdir.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2008-checkout-subdir/.git/
expecting success of 2008.1 'setup':
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"
[master (root-commit) 15793b3] populate tree
Author: A U Thor <author@example.com>
3 files changed, 3 insertions(+)
create mode 100644 dir1/file1
create mode 100644 dir2/file2
create mode 100644 file0
ok 1 - setup
expecting success of 2008.2 'remove and restore with relative path':
(
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 of 2008.3 'checkout with empty prefix':
rm file0 &&
git checkout HEAD -- file0 &&
test "base" = "$(cat file0)"
ok 3 - checkout with empty prefix
expecting success of 2008.4 'checkout with simple prefix':
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 success of 2008.5 'checkout with complex relative path':
(
cd dir1 &&
rm file1 &&
git checkout HEAD -- ../dir1/../dir1/file1 &&
test "hello" = "$(cat file1)"
)
ok 5 - checkout with complex relative path
expecting success of 2008.6 'relative path outside tree should fail': test_must_fail git checkout HEAD -- ../../Makefile
fatal: ../../Makefile: '../../Makefile' is outside repository at '/<<PKGBUILDDIR>>/t/trash directory.t2008-checkout-subdir'
ok 6 - relative path outside tree should fail
expecting success of 2008.7 'incorrect relative path to file should fail (1)': test_must_fail git checkout HEAD -- ../file0
fatal: ../file0: '../file0' is outside repository at '/<<PKGBUILDDIR>>/t/trash directory.t2008-checkout-subdir'
ok 7 - incorrect relative path to file should fail (1)
expecting success of 2008.8 'incorrect relative path should fail (2)': ( cd dir1 && test_must_fail git checkout HEAD -- ./file0 )
error: pathspec './file0' did not match any file(s) known to git
ok 8 - incorrect relative path should fail (2)
expecting success of 2008.9 'incorrect relative path should fail (3)': ( cd dir1 && test_must_fail git checkout HEAD -- ../../file0 )
fatal: ../../file0: '../../file0' is outside repository at '/<<PKGBUILDDIR>>/t/trash directory.t2008-checkout-subdir'
ok 9 - incorrect relative path should fail (3)
# passed all 9 test(s)
1..9
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2009-checkout-statinfo.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2009-checkout-statinfo/.git/
expecting success of 2009.1 'setup':
echo hello >world &&
git update-index --add world &&
git commit -m initial &&
git branch side &&
echo goodbye >world &&
git update-index --add world &&
git commit -m second
[main (root-commit) b8cd0f7] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 world
[main 5892dcd] second
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 1 - setup
expecting success of 2009.2 'branch switching':
git reset --hard &&
test "$(git diff-files --raw)" = "" &&
git checkout main &&
test "$(git diff-files --raw)" = "" &&
git checkout side &&
test "$(git diff-files --raw)" = "" &&
git checkout main &&
test "$(git diff-files --raw)" = ""
HEAD is now at 5892dcd second
Already on 'main'
Switched to branch 'side'
Switched to branch 'main'
ok 2 - branch switching
expecting success of 2009.3 'path checkout':
git reset --hard &&
test "$(git diff-files --raw)" = "" &&
git checkout main world &&
test "$(git diff-files --raw)" = "" &&
git checkout side world &&
test "$(git diff-files --raw)" = "" &&
git checkout main world &&
test "$(git diff-files --raw)" = ""
HEAD is now at 5892dcd second
Updated 0 paths from c356a2a
Updated 1 path from dbd05ee
Updated 1 path from c356a2a
ok 3 - path checkout
# passed all 3 test(s)
1..3
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2010-checkout-ambiguous.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2010-checkout-ambiguous/.git/
expecting success of 2010.1 'setup':
echo hello >world &&
echo hello >all &&
git add all world &&
git commit -m initial &&
git branch world
[main (root-commit) c5e2eee] initial
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 all
create mode 100644 world
ok 1 - setup
expecting success of 2010.2 'reference must be a tree':
test_must_fail git checkout $(git hash-object ./all) --
fatal: reference is not a tree: ce013625030ba8dba906f756967f9e9ca394464a
ok 2 - reference must be a tree
expecting success of 2010.3 'branch switching':
test "refs/heads/main" = "$(git symbolic-ref HEAD)" &&
git checkout world -- &&
test "refs/heads/world" = "$(git symbolic-ref HEAD)"
Switched to branch 'world'
ok 3 - branch switching
expecting success of 2010.4 'checkout world from the index':
echo bye > world &&
git checkout -- world &&
git diff --exit-code --quiet
ok 4 - checkout world from the index
expecting success of 2010.5 'non ambiguous call':
git checkout all
Updated 0 paths from the index
ok 5 - non ambiguous call
expecting success of 2010.6 'allow the most common case':
git checkout world &&
test "refs/heads/world" = "$(git symbolic-ref HEAD)"
Already on 'world'
ok 6 - allow the most common case
expecting success of 2010.7 'check ambiguity':
test_must_fail git checkout world all
fatal: ambiguous argument 'world': both revision and filename
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
ok 7 - check ambiguity
expecting success of 2010.8 'check ambiguity in subdir':
mkdir sub &&
# not ambiguous because sub/world does not exist
git -C sub checkout world ../all &&
echo hello >sub/world &&
# ambiguous because sub/world does exist
test_must_fail git -C sub checkout world ../all
Updated 0 paths from dd4e7a7
fatal: ambiguous argument 'world': both revision and filename
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
ok 8 - check ambiguity in subdir
expecting success of 2010.9 'disambiguate checking out from a tree-ish':
echo bye > world &&
git checkout world -- world &&
git diff --exit-code --quiet
ok 9 - disambiguate checking out from a tree-ish
expecting success of 2010.10 'accurate error message with more than one ref':
test_must_fail git checkout HEAD main -- 2>actual &&
test_i18ngrep 2 actual &&
test_i18ngrep "one reference expected, 2 given" actual
fatal: only one reference expected, 2 given.
fatal: only one reference expected, 2 given.
ok 10 - accurate error message with more than one ref
# passed all 10 test(s)
1..10
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2011-checkout-invalid-head.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2011-checkout-invalid-head/.git/
expecting success of 2011.1 'setup':
echo hello >world &&
git add world &&
git commit -m initial
[main (root-commit) b8cd0f7] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 world
ok 1 - setup
expecting success of 2011.2 'checkout should not start branch from a tree':
test_must_fail git checkout -b newbranch main^{tree}
fatal: Cannot switch branch to a non-commit 'main^{tree}'
ok 2 - checkout should not start branch from a tree
expecting success of 2011.3 'checkout main from invalid HEAD':
echo $ZERO_OID >.git/HEAD &&
git checkout main --
Switched to branch 'main'
ok 3 - checkout main from invalid HEAD
expecting success of 2011.4 'checkout notices failure to lock HEAD':
test_when_finished "rm -f .git/HEAD.lock" &&
>.git/HEAD.lock &&
test_must_fail git checkout -b other
error: Unable to create '/<<PKGBUILDDIR>>/t/trash directory.t2011-checkout-invalid-head/.git/HEAD.lock': File exists.
Another git process seems to be running in this repository, e.g.
an editor opened by 'git commit'. Please make sure all processes
are terminated then try again. If it still fails, a git process
may have crashed in this repository earlier:
remove the file manually to continue.
fatal: unable to update HEAD
ok 4 - checkout notices failure to lock HEAD
expecting success of 2011.5 'create ref directory/file conflict scenario':
git update-ref refs/heads/outer/inner main &&
# do not rely on symbolic-ref to get a known state,
# as it may use the same code we are testing
reset_to_df () {
echo "ref: refs/heads/outer" >.git/HEAD
}
ok 5 - create ref directory/file conflict scenario
expecting success of 2011.6 'checkout away from d/f HEAD (unpacked, to branch)':
reset_to_df &&
git checkout main
Switched to branch 'main'
ok 6 - checkout away from d/f HEAD (unpacked, to branch)
expecting success of 2011.7 'checkout away from d/f HEAD (unpacked, to detached)':
reset_to_df &&
git checkout --detach main
HEAD is now at b8cd0f7 initial
ok 7 - checkout away from d/f HEAD (unpacked, to detached)
expecting success of 2011.8 'pack refs':
git pack-refs --all --prune
ok 8 - pack refs
expecting success of 2011.9 'checkout away from d/f HEAD (packed, to branch)':
reset_to_df &&
git checkout main
Switched to branch 'main'
ok 9 - checkout away from d/f HEAD (packed, to branch)
expecting success of 2011.10 'checkout away from d/f HEAD (packed, to detached)':
reset_to_df &&
git checkout --detach main
HEAD is now at b8cd0f7 initial
ok 10 - checkout away from d/f HEAD (packed, to detached)
# passed all 10 test(s)
1..10
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2012-checkout-last.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2012-checkout-last/.git/
expecting success of 2012.1 'setup':
test_commit initial world hello &&
git branch other &&
test_commit --append second world "hello again"
[main (root-commit) b77667e] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 world
[main 5146e8d] second
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
ok 1 - setup
expecting success of 2012.2 '"checkout -" does not work initially':
test_must_fail git checkout -
error: pathspec '-' did not match any file(s) known to git
ok 2 - "checkout -" does not work initially
expecting success of 2012.3 'first branch switch':
git checkout other
Switched to branch 'other'
ok 3 - first branch switch
expecting success of 2012.4 '"checkout -" switches back':
git checkout - &&
test_cmp_symbolic_HEAD_ref main
Switched to branch 'main'
ok 4 - "checkout -" switches back
expecting success of 2012.5 '"checkout -" switches forth':
git checkout - &&
test_cmp_symbolic_HEAD_ref other
Switched to branch 'other'
ok 5 - "checkout -" switches forth
expecting success of 2012.6 'detach HEAD':
git checkout $(git rev-parse HEAD)
Note: switching to 'b77667e36f2efc50d31c716f0d5e6db09fe4a8e9'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at b77667e initial
ok 6 - detach HEAD
expecting success of 2012.7 '"checkout -" attaches again':
git checkout - &&
test_cmp_symbolic_HEAD_ref other
Switched to branch 'other'
ok 7 - "checkout -" attaches again
expecting success of 2012.8 '"checkout -" detaches again':
git checkout - &&
git rev-parse other >expect &&
git rev-parse HEAD >actual &&
test_cmp expect actual &&
test_must_fail git symbolic-ref HEAD
Note: switching to 'b77667e36f2efc50d31c716f0d5e6db09fe4a8e9'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at b77667e initial
fatal: ref HEAD is not a symbolic ref
ok 8 - "checkout -" detaches again
expecting success of 2012.9 'more switches':
for i in 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
do
git checkout -b branch$i || return 1
done
Switched to a new branch 'branch16'
Switched to a new branch 'branch15'
Switched to a new branch 'branch14'
Switched to a new branch 'branch13'
Switched to a new branch 'branch12'
Switched to a new branch 'branch11'
Switched to a new branch 'branch10'
Switched to a new branch 'branch9'
Switched to a new branch 'branch8'
Switched to a new branch 'branch7'
Switched to a new branch 'branch6'
Switched to a new branch 'branch5'
Switched to a new branch 'branch4'
Switched to a new branch 'branch3'
Switched to a new branch 'branch2'
Switched to a new branch 'branch1'
ok 9 - more switches
expecting success of 2012.10 'switch to the last':
more_switches &&
git checkout @{-1} &&
test_cmp_symbolic_HEAD_ref branch2
Switched to branch 'branch16'
Switched to branch 'branch15'
Switched to branch 'branch14'
Switched to branch 'branch13'
Switched to branch 'branch12'
Switched to branch 'branch11'
Switched to branch 'branch10'
Switched to branch 'branch9'
Switched to branch 'branch8'
Switched to branch 'branch7'
Switched to branch 'branch6'
Switched to branch 'branch5'
Switched to branch 'branch4'
Switched to branch 'branch3'
Switched to branch 'branch2'
Switched to branch 'branch1'
Switched to branch 'branch2'
ok 10 - switch to the last
expecting success of 2012.11 'switch to second from the last':
more_switches &&
git checkout @{-2} &&
test_cmp_symbolic_HEAD_ref branch3
Switched to branch 'branch16'
Switched to branch 'branch15'
Switched to branch 'branch14'
Switched to branch 'branch13'
Switched to branch 'branch12'
Switched to branch 'branch11'
Switched to branch 'branch10'
Switched to branch 'branch9'
Switched to branch 'branch8'
Switched to branch 'branch7'
Switched to branch 'branch6'
Switched to branch 'branch5'
Switched to branch 'branch4'
Switched to branch 'branch3'
Switched to branch 'branch2'
Switched to branch 'branch1'
Switched to branch 'branch3'
ok 11 - switch to second from the last
expecting success of 2012.12 'switch to third from the last':
more_switches &&
git checkout @{-3} &&
test_cmp_symbolic_HEAD_ref branch4
Switched to branch 'branch16'
Switched to branch 'branch15'
Switched to branch 'branch14'
Switched to branch 'branch13'
Switched to branch 'branch12'
Switched to branch 'branch11'
Switched to branch 'branch10'
Switched to branch 'branch9'
Switched to branch 'branch8'
Switched to branch 'branch7'
Switched to branch 'branch6'
Switched to branch 'branch5'
Switched to branch 'branch4'
Switched to branch 'branch3'
Switched to branch 'branch2'
Switched to branch 'branch1'
Switched to branch 'branch4'
ok 12 - switch to third from the last
expecting success of 2012.13 'switch to fourth from the last':
more_switches &&
git checkout @{-4} &&
test_cmp_symbolic_HEAD_ref branch5
Switched to branch 'branch16'
Switched to branch 'branch15'
Switched to branch 'branch14'
Switched to branch 'branch13'
Switched to branch 'branch12'
Switched to branch 'branch11'
Switched to branch 'branch10'
Switched to branch 'branch9'
Switched to branch 'branch8'
Switched to branch 'branch7'
Switched to branch 'branch6'
Switched to branch 'branch5'
Switched to branch 'branch4'
Switched to branch 'branch3'
Switched to branch 'branch2'
Switched to branch 'branch1'
Switched to branch 'branch5'
ok 13 - switch to fourth from the last
expecting success of 2012.14 'switch to twelfth from the last':
more_switches &&
git checkout @{-12} &&
test_cmp_symbolic_HEAD_ref branch13
Switched to branch 'branch16'
Switched to branch 'branch15'
Switched to branch 'branch14'
Switched to branch 'branch13'
Switched to branch 'branch12'
Switched to branch 'branch11'
Switched to branch 'branch10'
Switched to branch 'branch9'
Switched to branch 'branch8'
Switched to branch 'branch7'
Switched to branch 'branch6'
Switched to branch 'branch5'
Switched to branch 'branch4'
Switched to branch 'branch3'
Switched to branch 'branch2'
Switched to branch 'branch1'
Switched to branch 'branch13'
ok 14 - switch to twelfth from the last
expecting success of 2012.15 'merge base test setup':
git checkout -b another other &&
test_commit --append third world "hello again"
Switched to a new branch 'another'
[another d04d7df] third
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
ok 15 - merge base test setup
expecting success of 2012.16 'another...main':
git checkout another &&
git checkout another...main &&
git rev-parse --verify main^ >expect &&
git rev-parse --verify HEAD >actual &&
test_cmp expect actual
Already on 'another'
Note: switching to 'another...main'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at b77667e initial
ok 16 - another...main
expecting success of 2012.17 '...main':
git checkout another &&
git checkout ...main &&
git rev-parse --verify main^ >expect &&
git rev-parse --verify HEAD >actual &&
test_cmp expect actual
Previous HEAD position was b77667e initial
Switched to branch 'another'
Note: switching to '...main'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at b77667e initial
ok 17 - ...main
expecting success of 2012.18 'main...':
git checkout another &&
git checkout main... &&
git rev-parse --verify main^ >expect &&
git rev-parse --verify HEAD >actual &&
test_cmp expect actual
Previous HEAD position was b77667e initial
Switched to branch 'another'
Note: switching to 'main...'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at b77667e initial
ok 18 - main...
expecting success of 2012.19 '"checkout -" works after a rebase A':
git checkout main &&
git checkout other &&
git rebase main &&
git checkout - &&
test_cmp_symbolic_HEAD_ref main
Previous HEAD position was b77667e initial
Switched to branch 'main'
Switched to branch 'other'
Successfully rebased and updated refs/heads/other.
Switched to branch 'main'
ok 19 - "checkout -" works after a rebase A
expecting success of 2012.20 '"checkout -" works after a rebase A B':
git branch moodle main~1 &&
git checkout main &&
git checkout other &&
git rebase main moodle &&
git checkout - &&
test_cmp_symbolic_HEAD_ref main
Already on 'main'
Switched to branch 'other'
Successfully rebased and updated refs/heads/moodle.
Switched to branch 'main'
ok 20 - "checkout -" works after a rebase A B
expecting success of 2012.21 '"checkout -" works after a rebase -i A':
git checkout main &&
git checkout other &&
git rebase -i main &&
git checkout - &&
test_cmp_symbolic_HEAD_ref main
Already on 'main'
Switched to branch 'other'
Successfully rebased and updated refs/heads/other.
Switched to branch 'main'
ok 21 - "checkout -" works after a rebase -i A
expecting success of 2012.22 '"checkout -" works after a rebase -i A B':
git branch foodle main~1 &&
git checkout main &&
git checkout other &&
git rebase main foodle &&
git checkout - &&
test_cmp_symbolic_HEAD_ref main
Already on 'main'
Switched to branch 'other'
Successfully rebased and updated refs/heads/foodle.
Switched to branch 'main'
ok 22 - "checkout -" works after a rebase -i A B
# passed all 22 test(s)
1..22
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2014-checkout-switch.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2014-checkout-switch/.git/
expecting success of 2014.1 'setup':
echo Hello >file &&
git add file &&
test_tick &&
git commit -m V1 &&
echo Hello world >file &&
git add file &&
git checkout -b other
[master (root-commit) 68a43dc] V1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
Switched to a new branch 'other'
ok 1 - setup
expecting success of 2014.2 'check all changes are staged':
git diff --exit-code
ok 2 - check all changes are staged
expecting success of 2014.3 'second commit':
git commit -m V2
[other c55967b] V2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 3 - second commit
expecting success of 2014.4 'check':
git diff --cached --exit-code
ok 4 - check
# passed all 4 test(s)
1..4
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2015-checkout-unborn.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2015-checkout-unborn/.git/
expecting success of 2015.1 'setup':
mkdir parent &&
(
cd parent &&
git init &&
echo content >file &&
git add file &&
git commit -m base
) &&
git fetch parent main:origin
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2015-checkout-unborn/parent/.git/
[main (root-commit) 5d770fe] base
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
From parent
* [new branch] main -> origin
ok 1 - setup
expecting success of 2015.2 'checkout from unborn preserves untracked files':
echo precious >expect &&
echo precious >file &&
test_must_fail git checkout -b new origin &&
test_cmp expect file
error: The following untracked working tree files would be overwritten by checkout:
file
Please move or remove them before you switch branches.
Aborting
ok 2 - checkout from unborn preserves untracked files
expecting success of 2015.3 'checkout from unborn preserves index contents':
echo precious >expect &&
echo precious >file &&
git add file &&
test_must_fail git checkout -b new origin &&
test_cmp expect file &&
git show :file >file &&
test_cmp expect file
error: Your local changes to the following files would be overwritten by checkout:
file
Please commit your changes or stash them before you switch branches.
Aborting
ok 3 - checkout from unborn preserves index contents
expecting success of 2015.4 'checkout from unborn merges identical index contents':
echo content >file &&
git add file &&
git checkout -b new origin
Switched to a new branch 'new'
ok 4 - checkout from unborn merges identical index contents
expecting success of 2015.5 'checking out another branch from unborn state':
git checkout --orphan newroot &&
git checkout -b anothername &&
test_must_fail git show-ref --verify refs/heads/newroot &&
git symbolic-ref HEAD >actual &&
echo refs/heads/anothername >expect &&
test_cmp expect actual
Switched to a new branch 'newroot'
Switched to a new branch 'anothername'
fatal: 'refs/heads/newroot' - not a valid ref
ok 5 - checking out another branch from unborn state
expecting success of 2015.6 'checking out in a newly created repo':
test_create_repo empty &&
(
cd empty &&
git symbolic-ref HEAD >expect &&
test_must_fail git checkout &&
git symbolic-ref HEAD >actual &&
test_cmp expect actual
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2015-checkout-unborn/empty/.git/
fatal: You are on a branch yet to be born
ok 6 - checking out in a newly created repo
# passed all 6 test(s)
1..6
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2016-checkout-patch.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2016-checkout-patch/.git/
expecting success of 2016.1 'setup':
mkdir dir &&
echo parent > dir/foo &&
echo dummy > bar &&
git add bar dir/foo &&
git commit -m initial &&
test_tick &&
test_commit second dir/foo head &&
set_and_save_state bar bar_work bar_index &&
save_head
[master (root-commit) 758b165] initial
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 bar
create mode 100644 dir/foo
[master 3319288] second
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 1 - setup
expecting success of 2016.2 'saying "n" does nothing':
set_and_save_state dir/foo work head &&
test_write_lines n n | git checkout -p &&
verify_saved_state bar &&
verify_saved_state dir/foo
diff --git a/bar b/bar
index 7780244..8c999e6 100644
--- a/bar
+++ b/bar
@@ -1 +1 @@
-bar_index
+bar_work
(1/1) Discard this hunk from worktree [y,n,q,a,d,e,?]?
diff --git a/dir/foo b/dir/foo
index 564b12f..b8f99f5 100644
--- a/dir/foo
+++ b/dir/foo
@@ -1 +1 @@
-head
+work
(1/1) Discard this hunk from worktree [y,n,q,a,d,e,?]?
ok 2 - saying "n" does nothing
expecting success of 2016.3 'git checkout -p':
test_write_lines n y | git checkout -p &&
verify_saved_state bar &&
verify_state dir/foo head head
diff --git a/bar b/bar
index 7780244..8c999e6 100644
--- a/bar
+++ b/bar
@@ -1 +1 @@
-bar_index
+bar_work
(1/1) Discard this hunk from worktree [y,n,q,a,d,e,?]?
diff --git a/dir/foo b/dir/foo
index 564b12f..b8f99f5 100644
--- a/dir/foo
+++ b/dir/foo
@@ -1 +1 @@
-head
+work
(1/1) Discard this hunk from worktree [y,n,q,a,d,e,?]?
ok 3 - git checkout -p
expecting success of 2016.4 'git checkout -p with staged changes':
set_state dir/foo work index &&
test_write_lines n y | git checkout -p &&
verify_saved_state bar &&
verify_state dir/foo index index
diff --git a/bar b/bar
index 7780244..8c999e6 100644
--- a/bar
+++ b/bar
@@ -1 +1 @@
-bar_index
+bar_work
(1/1) Discard this hunk from worktree [y,n,q,a,d,e,?]?
diff --git a/dir/foo b/dir/foo
index 9015a7a..b8f99f5 100644
--- a/dir/foo
+++ b/dir/foo
@@ -1 +1 @@
-index
+work
(1/1) Discard this hunk from worktree [y,n,q,a,d,e,?]?
ok 4 - git checkout -p with staged changes
expecting success of 2016.5 'git checkout -p HEAD with NO staged changes: abort':
set_and_save_state dir/foo work head &&
test_write_lines n y n | git checkout -p HEAD &&
verify_saved_state bar &&
verify_saved_state dir/foo
diff --git a/bar b/bar
index 421376d..8c999e6 100644
--- a/bar
+++ b/bar
@@ -1 +1 @@
-dummy
+bar_work
(1/1) Discard this hunk from index and worktree [y,n,q,a,d,e,?]?
diff --git a/dir/foo b/dir/foo
index 564b12f..b8f99f5 100644
--- a/dir/foo
+++ b/dir/foo
@@ -1 +1 @@
-head
+work
(1/1) Discard this hunk from index and worktree [y,n,q,a,d,e,?]? error: patch failed: dir/foo:1
error: dir/foo: patch does not apply
The selected hunks do not apply to the index!
Apply them to the worktree anyway? Nothing was applied.
ok 5 - git checkout -p HEAD with NO staged changes: abort
expecting success of 2016.6 'git checkout -p HEAD with NO staged changes: apply':
test_write_lines n y y | git checkout -p HEAD &&
verify_saved_state bar &&
verify_state dir/foo head head
diff --git a/bar b/bar
index 421376d..8c999e6 100644
--- a/bar
+++ b/bar
@@ -1 +1 @@
-dummy
+bar_work
(1/1) Discard this hunk from index and worktree [y,n,q,a,d,e,?]?
diff --git a/dir/foo b/dir/foo
index 564b12f..b8f99f5 100644
--- a/dir/foo
+++ b/dir/foo
@@ -1 +1 @@
-head
+work
(1/1) Discard this hunk from index and worktree [y,n,q,a,d,e,?]? error: patch failed: dir/foo:1
error: dir/foo: patch does not apply
The selected hunks do not apply to the index!
Apply them to the worktree anyway?
ok 6 - git checkout -p HEAD with NO staged changes: apply
expecting success of 2016.7 'git checkout -p HEAD with change already staged':
set_state dir/foo index index &&
# the third n is to get out in case it mistakenly does not apply
test_write_lines n y n | git checkout -p HEAD &&
verify_saved_state bar &&
verify_state dir/foo head head
diff --git a/bar b/bar
index 421376d..8c999e6 100644
--- a/bar
+++ b/bar
@@ -1 +1 @@
-dummy
+bar_work
(1/1) Discard this hunk from index and worktree [y,n,q,a,d,e,?]?
diff --git a/dir/foo b/dir/foo
index 564b12f..9015a7a 100644
--- a/dir/foo
+++ b/dir/foo
@@ -1 +1 @@
-head
+index
(1/1) Discard this hunk from index and worktree [y,n,q,a,d,e,?]?
ok 7 - git checkout -p HEAD with change already staged
expecting success of 2016.8 'git checkout -p HEAD^...':
# the third n is to get out in case it mistakenly does not apply
test_write_lines n y n | git checkout -p HEAD^... &&
verify_saved_state bar &&
verify_state dir/foo parent parent
diff --git b/bar a/bar
index 8c999e6..421376d 100644
--- b/bar
+++ a/bar
@@ -1 +1 @@
-bar_work
+dummy
(1/1) Apply this hunk to index and worktree [y,n,q,a,d,e,?]?
diff --git b/dir/foo a/dir/foo
index 564b12f..9676f5b 100644
--- b/dir/foo
+++ a/dir/foo
@@ -1 +1 @@
-head
+parent
(1/1) Apply this hunk to index and worktree [y,n,q,a,d,e,?]?
ok 8 - git checkout -p HEAD^...
expecting success of 2016.9 'git checkout -p HEAD^':
# the third n is to get out in case it mistakenly does not apply
test_write_lines n y n | git checkout -p HEAD^ &&
verify_saved_state bar &&
verify_state dir/foo parent parent
diff --git b/bar a/bar
index 8c999e6..421376d 100644
--- b/bar
+++ a/bar
@@ -1 +1 @@
-bar_work
+dummy
(1/1) Apply this hunk to index and worktree [y,n,q,a,d,e,?]?
ok 9 - git checkout -p HEAD^
expecting success of 2016.10 'git checkout -p handles deletion':
set_state dir/foo work index &&
rm dir/foo &&
test_write_lines n y | git checkout -p &&
verify_saved_state bar &&
verify_state dir/foo index index
diff --git a/bar b/bar
index 7780244..8c999e6 100644
--- a/bar
+++ b/bar
@@ -1 +1 @@
-bar_index
+bar_work
(1/1) Discard this hunk from worktree [y,n,q,a,d,e,?]?
diff --git a/dir/foo b/dir/foo
deleted file mode 100644
index 9015a7a..0000000
--- a/dir/foo
+++ /dev/null
@@ -1 +0,0 @@
-index
(1/1) Discard deletion from worktree [y,n,q,a,d,?]?
ok 10 - git checkout -p handles deletion
expecting success of 2016.11 'path limiting works: dir':
set_state dir/foo work head &&
test_write_lines y n | git checkout -p dir &&
verify_saved_state bar &&
verify_state dir/foo head head
diff --git a/dir/foo b/dir/foo
index 564b12f..b8f99f5 100644
--- a/dir/foo
+++ b/dir/foo
@@ -1 +1 @@
-head
+work
(1/1) Discard this hunk from worktree [y,n,q,a,d,e,?]?
ok 11 - path limiting works: dir
expecting success of 2016.12 'path limiting works: -- dir':
set_state dir/foo work head &&
test_write_lines y n | git checkout -p -- dir &&
verify_saved_state bar &&
verify_state dir/foo head head
diff --git a/dir/foo b/dir/foo
index 564b12f..b8f99f5 100644
--- a/dir/foo
+++ b/dir/foo
@@ -1 +1 @@
-head
+work
(1/1) Discard this hunk from worktree [y,n,q,a,d,e,?]?
ok 12 - path limiting works: -- dir
expecting success of 2016.13 'path limiting works: HEAD^ -- dir':
# the third n is to get out in case it mistakenly does not apply
test_write_lines y n n | git checkout -p HEAD^ -- dir &&
verify_saved_state bar &&
verify_state dir/foo parent parent
diff --git b/dir/foo a/dir/foo
index 564b12f..9676f5b 100644
--- b/dir/foo
+++ a/dir/foo
@@ -1 +1 @@
-head
+parent
(1/1) Apply this hunk to index and worktree [y,n,q,a,d,e,?]?
ok 13 - path limiting works: HEAD^ -- dir
expecting success of 2016.14 'path limiting works: foo inside dir':
set_state dir/foo work head &&
# the third n is to get out in case it mistakenly does not apply
test_write_lines y n n | (cd dir && git checkout -p foo) &&
verify_saved_state bar &&
verify_state dir/foo head head
diff --git a/dir/foo b/dir/foo
index 564b12f..b8f99f5 100644
--- a/dir/foo
+++ b/dir/foo
@@ -1 +1 @@
-head
+work
(1/1) Discard this hunk from worktree [y,n,q,a,d,e,?]?
ok 14 - path limiting works: foo inside dir
expecting success of 2016.15 'none of this moved HEAD':
verify_saved_head
ok 15 - none of this moved HEAD
expecting success of 2016.16 'empty tree can be handled':
test_when_finished "git reset --hard" &&
git checkout -p $(test_oid empty_tree) --
diff --git b/bar a/bar
deleted file mode 100644
index 8c999e6..0000000
--- b/bar
+++ /dev/null
@@ -1 +0,0 @@
-bar_work
(1/1) Apply deletion to index and worktree [y,n,q,a,d,?]?
diff --git b/dir/foo a/dir/foo
deleted file mode 100644
index 564b12f..0000000
--- b/dir/foo
+++ /dev/null
@@ -1 +0,0 @@
-head
(1/1) Apply deletion to index and worktree [y,n,q,a,d,?]?
HEAD is now at 3319288 second
ok 16 - empty tree can be handled
# passed all 16 test(s)
1..16
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2017-checkout-orphan.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2017-checkout-orphan/.git/
expecting success of 2017.1 'Setup':
echo "Initial" >"$TEST_FILE" &&
git add "$TEST_FILE" &&
git commit -m "First Commit" &&
test_tick &&
echo "State 1" >>"$TEST_FILE" &&
git add "$TEST_FILE" &&
test_tick &&
git commit -m "Second Commit"
[main (root-commit) df316c6] First Commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo
[main 8c3f362] Second Commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
ok 1 - Setup
expecting success of 2017.2 '--orphan creates a new orphan branch from HEAD':
git checkout --orphan alpha &&
test_must_fail git rev-parse --verify HEAD &&
test "refs/heads/alpha" = "$(git symbolic-ref HEAD)" &&
test_tick &&
git commit -m "Third Commit" &&
test_must_fail git rev-parse --verify HEAD^ &&
git diff-tree --quiet main alpha
Switched to a new branch 'alpha'
fatal: Needed a single revision
[alpha (root-commit) 6f20c32] Third Commit
Author: A U Thor <author@example.com>
1 file changed, 2 insertions(+)
create mode 100644 foo
fatal: Needed a single revision
ok 2 - --orphan creates a new orphan branch from HEAD
expecting success of 2017.3 '--orphan creates a new orphan branch from <start_point>':
git checkout main &&
git checkout --orphan beta main^ &&
test_must_fail git rev-parse --verify HEAD &&
test "refs/heads/beta" = "$(git symbolic-ref HEAD)" &&
test_tick &&
git commit -m "Fourth Commit" &&
test_must_fail git rev-parse --verify HEAD^ &&
git diff-tree --quiet main^ beta
Switched to branch 'main'
Switched to a new branch 'beta'
fatal: Needed a single revision
[beta (root-commit) 530edda] Fourth Commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo
fatal: Needed a single revision
ok 3 - --orphan creates a new orphan branch from <start_point>
expecting success of 2017.4 '--orphan must be rejected with -b':
git checkout main &&
test_must_fail git checkout --orphan new -b newer &&
test refs/heads/main = "$(git symbolic-ref HEAD)"
Switched to branch 'main'
fatal: options '-b', '-B', and '--orphan' cannot be used together
ok 4 - --orphan must be rejected with -b
expecting success of 2017.5 '--orphan must be rejected with -t':
git checkout main &&
test_must_fail git checkout --orphan new -t main &&
test refs/heads/main = "$(git symbolic-ref HEAD)"
Already on 'main'
fatal: '--orphan' cannot be used with '-t'
ok 5 - --orphan must be rejected with -t
expecting success of 2017.6 '--orphan ignores branch.autosetupmerge':
git checkout main &&
git config branch.autosetupmerge always &&
git checkout --orphan gamma &&
test_cmp_config "" --default "" branch.gamma.merge &&
test refs/heads/gamma = "$(git symbolic-ref HEAD)" &&
test_must_fail git rev-parse --verify HEAD^ &&
git checkout main &&
git config branch.autosetupmerge inherit &&
git checkout --orphan eta &&
test_cmp_config "" --default "" branch.eta.merge &&
test_cmp_config "" --default "" branch.eta.remote &&
echo refs/heads/eta >expected &&
git symbolic-ref HEAD >actual &&
test_cmp expected actual &&
test_must_fail git rev-parse --verify HEAD^
Already on 'main'
Switched to a new branch 'gamma'
fatal: Needed a single revision
Switched to branch 'main'
Switched to a new branch 'eta'
fatal: Needed a single revision
ok 6 - --orphan ignores branch.autosetupmerge
expecting success of 2017.7 '--orphan makes reflog by default':
git checkout main &&
git config --unset core.logAllRefUpdates &&
git checkout --orphan delta &&
test_must_fail git rev-parse --verify delta@{0} &&
git commit -m Delta &&
git rev-parse --verify delta@{0}
Switched to branch 'main'
Switched to a new branch 'delta'
fatal: Needed a single revision
[delta (root-commit) 9beee35] Delta
Author: A U Thor <author@example.com>
1 file changed, 2 insertions(+)
create mode 100644 foo
9beee35744aee191f8186ef0a6ab78f710cdd57c
ok 7 - --orphan makes reflog by default
expecting success of 2017.8 '--orphan does not make reflog when core.logAllRefUpdates = false':
git checkout main &&
git config core.logAllRefUpdates false &&
git checkout --orphan epsilon &&
test_must_fail git rev-parse --verify epsilon@{0} &&
git commit -m Epsilon &&
test_must_fail git rev-parse --verify epsilon@{0}
Switched to branch 'main'
Switched to a new branch 'epsilon'
fatal: Needed a single revision
[epsilon (root-commit) c5e7701] Epsilon
Author: A U Thor <author@example.com>
1 file changed, 2 insertions(+)
create mode 100644 foo
fatal: Needed a single revision
ok 8 - --orphan does not make reflog when core.logAllRefUpdates = false
expecting success of 2017.9 '--orphan with -l makes reflog when core.logAllRefUpdates = false':
git checkout main &&
git checkout -l --orphan zeta &&
test_must_fail git rev-parse --verify zeta@{0} &&
git commit -m Zeta &&
git rev-parse --verify zeta@{0}
Switched to branch 'main'
Switched to a new branch 'zeta'
fatal: Needed a single revision
[zeta (root-commit) 1b23595] Zeta
Author: A U Thor <author@example.com>
1 file changed, 2 insertions(+)
create mode 100644 foo
1b235958474dccc5c8f228713c620d22e7d1825d
ok 9 - --orphan with -l makes reflog when core.logAllRefUpdates = false
expecting success of 2017.10 'giving up --orphan not committed when -l and core.logAllRefUpdates = false deletes reflog':
git checkout main &&
git checkout -l --orphan eta &&
test_must_fail git rev-parse --verify eta@{0} &&
git checkout main &&
test_must_fail git rev-parse --verify eta@{0}
Switched to branch 'main'
Switched to a new branch 'eta'
fatal: Needed a single revision
Switched to branch 'main'
fatal: Needed a single revision
ok 10 - giving up --orphan not committed when -l and core.logAllRefUpdates = false deletes reflog
expecting success of 2017.11 '--orphan is rejected with an existing name':
git checkout main &&
test_must_fail git checkout --orphan main &&
test refs/heads/main = "$(git symbolic-ref HEAD)"
Already on 'main'
fatal: a branch named 'main' already exists
ok 11 - --orphan is rejected with an existing name
expecting success of 2017.12 '--orphan refuses to switch if a merge is needed':
git checkout main &&
git reset --hard &&
echo local >>"$TEST_FILE" &&
cat "$TEST_FILE" >"$TEST_FILE.saved" &&
test_must_fail git checkout --orphan new main^ &&
test refs/heads/main = "$(git symbolic-ref HEAD)" &&
test_cmp "$TEST_FILE" "$TEST_FILE.saved" &&
git diff-index --quiet --cached HEAD &&
git reset --hard
Already on 'main'
HEAD is now at 8c3f362 Second Commit
error: Your local changes to the following files would be overwritten by checkout:
foo
Please commit your changes or stash them before you switch branches.
Aborting
HEAD is now at 8c3f362 Second Commit
ok 12 - --orphan refuses to switch if a merge is needed
expecting success of 2017.13 'cannot --detach on an unborn branch':
git checkout main &&
git checkout --orphan new &&
test_must_fail git checkout --detach
Already on 'main'
Switched to a new branch 'new'
fatal: You are on a branch yet to be born
ok 13 - cannot --detach on an unborn branch
# passed all 13 test(s)
1..13
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2018-checkout-branch.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2018-checkout-branch/.git/
expecting success of 2018.1 'setup':
test_commit initial file1 &&
HEAD1=$(git rev-parse --verify HEAD) &&
test_commit change1 file1 &&
HEAD2=$(git rev-parse --verify HEAD) &&
git branch -m branch1
[master (root-commit) ee02a18] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file1
[master 5be17a9] change1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 1 - setup
expecting success of 2018.2 'checkout a branch without refs/heads/* prefix':
git clone --no-tags . repo-odd-prefix &&
(
cd repo-odd-prefix &&
origin=$(git symbolic-ref refs/remotes/origin/HEAD) &&
git symbolic-ref refs/heads/a-branch "$origin" &&
git checkout -f a-branch &&
git checkout -f a-branch
)
Cloning into 'repo-odd-prefix'...
done.
Switched to branch 'a-branch'
Switched to branch 'a-branch'
ok 2 - checkout a branch without refs/heads/* prefix
expecting success of 2018.3 'checkout -b to a new branch, set to HEAD':
test_when_finished "
git checkout branch1 &&
test_might_fail git branch -D branch2" &&
do_checkout branch2
Switched to a new branch 'branch2'
Switched to branch 'branch1'
Deleted branch branch2 (was 5be17a9).
ok 3 - checkout -b to a new branch, set to HEAD
expecting success of 2018.4 'checkout -b to a merge base':
test_when_finished "
git checkout branch1 &&
test_might_fail git branch -D branch2" &&
git checkout -b branch2 branch1...
Switched to a new branch 'branch2'
Switched to branch 'branch1'
Deleted branch branch2 (was 5be17a9).
ok 4 - checkout -b to a merge base
expecting success of 2018.5 'checkout -b to a new branch, set to an explicit ref':
test_when_finished "
git checkout branch1 &&
test_might_fail git branch -D branch2" &&
do_checkout branch2 $HEAD1
Switched to a new branch 'branch2'
Switched to branch 'branch1'
Deleted branch branch2 (was ee02a18).
ok 5 - checkout -b to a new branch, set to an explicit ref
expecting success of 2018.6 'checkout -b to a new branch with unmergeable changes fails':
setup_dirty_unmergeable &&
do_checkout ! branch2 $HEAD1 &&
test_dirty_unmergeable
error: Your local changes to the following files would be overwritten by checkout:
file1
Please commit your changes or stash them before you switch branches.
Aborting
diff --git a/file1 b/file1
index 5be4a41..1725fe9 100644
--- a/file1
+++ b/file1
@@ -1 +1,2 @@
change1
+change2
ok 6 - checkout -b to a new branch with unmergeable changes fails
expecting success of 2018.7 'checkout -f -b to a new branch with unmergeable changes discards changes':
test_when_finished "
git checkout branch1 &&
test_might_fail git branch -D branch2" &&
# still dirty and on branch1
do_checkout branch2 $HEAD1 "-f -b" &&
test_dirty_unmergeable_discards_changes
Switched to a new branch 'branch2'
Switched to branch 'branch1'
Deleted branch branch2 (was ee02a18).
ok 7 - checkout -f -b to a new branch with unmergeable changes discards changes
expecting success of 2018.8 'checkout -b to a new branch preserves mergeable changes':
test_when_finished "
git reset --hard &&
git checkout branch1 &&
test_might_fail git branch -D branch2" &&
setup_dirty_mergeable &&
do_checkout branch2 $HEAD1 &&
test_dirty_mergeable
Switched to a new branch 'branch2'
A file2
diff --git a/file2 b/file2
new file mode 100644
index 0000000..6c493ff
--- /dev/null
+++ b/file2
@@ -0,0 +1 @@
+file2
HEAD is now at ee02a18 initial
Switched to branch 'branch1'
Deleted branch branch2 (was ee02a18).
ok 8 - checkout -b to a new branch preserves mergeable changes
expecting success of 2018.9 'checkout -f -b to a new branch with mergeable changes discards changes':
test_when_finished git reset --hard HEAD &&
setup_dirty_mergeable &&
do_checkout branch2 $HEAD1 "-f -b" &&
test_dirty_mergeable_discards_changes
Switched to a new branch 'branch2'
HEAD is now at ee02a18 initial
ok 9 - checkout -f -b to a new branch with mergeable changes discards changes
expecting success of 2018.10 'checkout -b to an existing branch fails':
test_when_finished git reset --hard HEAD &&
do_checkout ! branch2 $HEAD2
fatal: a branch named 'branch2' already exists
HEAD is now at ee02a18 initial
ok 10 - checkout -b to an existing branch fails
expecting success of 2018.11 'checkout -b to @{-1} fails with the right branch name':
git checkout branch1 &&
git checkout branch2 &&
echo >expect "fatal: a branch named 'branch1' already exists" &&
test_must_fail git checkout -b @{-1} 2>actual &&
test_cmp expect actual
Switched to branch 'branch1'
Switched to branch 'branch2'
ok 11 - checkout -b to @{-1} fails with the right branch name
expecting success of 2018.12 'checkout -B to an existing branch resets branch to HEAD':
git checkout branch1 &&
do_checkout branch2 "" -B
Switched to branch 'branch1'
Switched to and reset branch 'branch2'
ok 12 - checkout -B to an existing branch resets branch to HEAD
expecting success of 2018.13 'checkout -B to a merge base':
git checkout branch1 &&
git checkout -B branch2 branch1...
Switched to branch 'branch1'
Switched to and reset branch 'branch2'
ok 13 - checkout -B to a merge base
expecting success of 2018.14 'checkout -B to an existing branch from detached HEAD resets branch to HEAD':
head=$(git rev-parse --verify HEAD) &&
git checkout "$head" &&
do_checkout branch2 "" -B
Note: switching to '5be17a9503605cbff49376bccdc74acb1ebd9160'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 5be17a9 change1
Switched to and reset branch 'branch2'
ok 14 - checkout -B to an existing branch from detached HEAD resets branch to HEAD
expecting success of 2018.15 'checkout -B to an existing branch with an explicit ref resets branch to that ref':
git checkout branch1 &&
do_checkout branch2 $HEAD1 -B
Switched to branch 'branch1'
Switched to and reset branch 'branch2'
ok 15 - checkout -B to an existing branch with an explicit ref resets branch to that ref
expecting success of 2018.16 'checkout -B to an existing branch with unmergeable changes fails':
git checkout branch1 &&
setup_dirty_unmergeable &&
do_checkout ! branch2 $HEAD1 -B &&
test_dirty_unmergeable
Switched to branch 'branch1'
error: Your local changes to the following files would be overwritten by checkout:
file1
Please commit your changes or stash them before you switch branches.
Aborting
diff --git a/file1 b/file1
index 5be4a41..1725fe9 100644
--- a/file1
+++ b/file1
@@ -1 +1,2 @@
change1
+change2
ok 16 - checkout -B to an existing branch with unmergeable changes fails
expecting success of 2018.17 'checkout -f -B to an existing branch with unmergeable changes discards changes':
# still dirty and on branch1
do_checkout branch2 $HEAD1 "-f -B" &&
test_dirty_unmergeable_discards_changes
Switched to and reset branch 'branch2'
ok 17 - checkout -f -B to an existing branch with unmergeable changes discards changes
expecting success of 2018.18 'checkout -B to an existing branch preserves mergeable changes':
test_when_finished git reset --hard &&
git checkout branch1 &&
setup_dirty_mergeable &&
do_checkout branch2 $HEAD1 -B &&
test_dirty_mergeable
Switched to branch 'branch1'
Switched to and reset branch 'branch2'
A file2
diff --git a/file2 b/file2
new file mode 100644
index 0000000..6c493ff
--- /dev/null
+++ b/file2
@@ -0,0 +1 @@
+file2
HEAD is now at ee02a18 initial
ok 18 - checkout -B to an existing branch preserves mergeable changes
expecting success of 2018.19 'checkout -f -B to an existing branch with mergeable changes discards changes':
git checkout branch1 &&
setup_dirty_mergeable &&
do_checkout branch2 $HEAD1 "-f -B" &&
test_dirty_mergeable_discards_changes
Switched to branch 'branch1'
Switched to and reset branch 'branch2'
ok 19 - checkout -f -B to an existing branch with mergeable changes discards changes
expecting success of 2018.20 'checkout -b <describe>':
git tag -f -m "First commit" initial initial &&
git checkout -f change1 &&
name=$(git describe) &&
git checkout -b $name &&
git diff --exit-code change1 &&
echo "refs/heads/$name" >expect &&
git symbolic-ref HEAD >actual &&
test_cmp expect actual
Updated tag 'initial' (was ee02a18)
Note: switching to 'change1'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 5be17a9 change1
Switched to a new branch 'initial-1-g5be17a9'
ok 20 - checkout -b <describe>
expecting success of 2018.21 'checkout -B to the current branch works':
git checkout branch1 &&
git checkout -B branch1-scratch &&
setup_dirty_mergeable &&
git checkout -B branch1-scratch initial &&
test_dirty_mergeable
Switched to branch 'branch1'
Switched to a new branch 'branch1-scratch'
Reset branch 'branch1-scratch'
A file2
diff --git a/file2 b/file2
new file mode 100644
index 0000000..6c493ff
--- /dev/null
+++ b/file2
@@ -0,0 +1 @@
+file2
ok 21 - checkout -B to the current branch works
expecting success of 2018.22 'checkout -b after clone --no-checkout does a checkout of HEAD':
git init src &&
test_commit -C src a &&
rev="$(git -C src rev-parse HEAD)" &&
git clone --no-checkout src dest &&
git -C dest checkout "$rev" -b branch &&
test_path_is_file dest/a.t
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2018-checkout-branch/src/.git/
[master (root-commit) 7f0b538] a
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 a.t
Cloning into 'dest'...
done.
Switched to a new branch 'branch'
ok 22 - checkout -b after clone --no-checkout does a checkout of HEAD
expecting success of 2018.23 'checkout -b to a new branch preserves mergeable changes despite sparse-checkout':
test_when_finished "
git reset --hard &&
git checkout branch1-scratch &&
test_might_fail git branch -D branch3 &&
git config core.sparseCheckout false &&
rm -rf .git/info" &&
test_commit file2 &&
echo stuff >>file1 &&
mkdir .git/info &&
echo file2 >.git/info/sparse-checkout &&
git config core.sparseCheckout true &&
CURHEAD=$(git rev-parse HEAD) &&
do_checkout branch3 $CURHEAD &&
echo file1 >expect &&
git diff --name-only >actual &&
test_cmp expect actual
[branch1-scratch b9d73e8] file2
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 file2
create mode 100644 file2.t
warning: The following paths are not up to date and were left despite sparse patterns:
file1
After fixing the above paths, you may want to run `git sparse-checkout reapply`.
Switched to a new branch 'branch3'
M file1
HEAD is now at b9d73e8 file2
Switched to branch 'branch1-scratch'
Deleted branch branch3 (was b9d73e8).
ok 23 - checkout -b to a new branch preserves mergeable changes despite sparse-checkout
expecting success of 2018.24 'checkout -b rejects an invalid start point':
test_must_fail git checkout -b branch4 file1 2>err &&
test_i18ngrep "is not a commit" err
fatal: 'file1' is not a commit and a branch 'branch4' cannot be created from it
ok 24 - checkout -b rejects an invalid start point
expecting success of 2018.25 'checkout -b rejects an extra path argument':
test_must_fail git checkout -b branch5 branch1 file1 2>err &&
test_i18ngrep "Cannot update paths and switch to branch" err
fatal: Cannot update paths and switch to branch 'branch5' at the same time.
ok 25 - checkout -b rejects an extra path argument
# passed all 25 test(s)
1..25
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2019-checkout-ambiguous-ref.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2019-checkout-ambiguous-ref/.git/
expecting success of 2019.1 'setup ambiguous refs':
test_commit branch file &&
git branch ambiguity &&
git branch vagueness &&
test_commit tag file &&
git tag ambiguity &&
git tag vagueness HEAD:file &&
test_commit other file
[master (root-commit) c291a6e] branch
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
[master a40f7cf] tag
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[master 3b61e26] other
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 1 - setup ambiguous refs
expecting success of 2019.2 'checkout ambiguous ref succeeds':
git checkout ambiguity 2>stderr
ok 2 - checkout ambiguous ref succeeds
expecting success of 2019.3 'checkout produces ambiguity warning':
grep "warning.*ambiguous" stderr
warning: refname 'ambiguity' is ambiguous.
ok 3 - checkout produces ambiguity warning
expecting success of 2019.4 'checkout chooses branch over tag':
echo refs/heads/ambiguity >expect &&
git symbolic-ref HEAD >actual &&
test_cmp expect actual &&
echo branch >expect &&
test_cmp expect file
ok 4 - checkout chooses branch over tag
expecting success of 2019.5 'checkout reports switch to branch':
test_i18ngrep "Switched to branch" stderr &&
test_i18ngrep ! "^HEAD is now at" stderr
Switched to branch 'ambiguity'
ok 5 - checkout reports switch to branch
expecting success of 2019.6 'checkout vague ref succeeds':
git checkout vagueness 2>stderr &&
test_set_prereq VAGUENESS_SUCCESS
ok 6 - checkout vague ref succeeds
expecting success of 2019.7 'checkout produces ambiguity warning':
grep "warning.*ambiguous" stderr
warning: refname 'vagueness' is ambiguous.
ok 7 - checkout produces ambiguity warning
expecting success of 2019.8 'checkout chooses branch over tag':
echo refs/heads/vagueness >expect &&
git symbolic-ref HEAD >actual &&
test_cmp expect actual &&
echo branch >expect &&
test_cmp expect file
ok 8 - checkout chooses branch over tag
expecting success of 2019.9 'checkout reports switch to branch':
test_i18ngrep "Switched to branch" stderr &&
test_i18ngrep ! "^HEAD is now at" stderr
Switched to branch 'vagueness'
ok 9 - checkout reports switch to branch
# passed all 9 test(s)
1..9
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2020-checkout-detach.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2020-checkout-detach/.git/
expecting success of 2020.1 'setup':
test_commit one &&
test_commit two &&
test_commit three && git tag -d three &&
test_commit four && git tag -d four &&
git branch branch &&
git tag tag
[main (root-commit) d79ce16] one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 one.t
[main 139b20d] two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 two.t
[main 7c7cd71] three
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 three.t
Deleted tag 'three' (was 7c7cd71)
[main fd8d77e] four
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 four.t
Deleted tag 'four' (was fd8d77e)
ok 1 - setup
expecting success of 2020.2 'checkout branch does not detach':
reset &&
git checkout branch &&
check_not_detached
Already on 'main'
Switched to branch 'branch'
ok 2 - checkout branch does not detach
expecting success of 2020.3 'checkout tag detaches':
reset &&
git checkout tag &&
check_detached
Switched to branch 'main'
Note: switching to 'tag'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at fd8d77e four
ok 3 - checkout tag detaches
expecting success of 2020.4 'checkout branch by full name detaches':
reset &&
git checkout refs/heads/branch &&
check_detached
Switched to branch 'main'
Note: switching to 'refs/heads/branch'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at fd8d77e four
ok 4 - checkout branch by full name detaches
expecting success of 2020.5 'checkout non-ref detaches':
reset &&
git checkout branch^ &&
check_detached
Switched to branch 'main'
Note: switching to 'branch^'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 7c7cd71 three
ok 5 - checkout non-ref detaches
expecting success of 2020.6 'checkout ref^0 detaches':
reset &&
git checkout branch^0 &&
check_detached
Previous HEAD position was 7c7cd71 three
Switched to branch 'main'
Note: switching to 'branch^0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at fd8d77e four
ok 6 - checkout ref^0 detaches
expecting success of 2020.7 'checkout --detach detaches':
reset &&
git checkout --detach branch &&
check_detached
Switched to branch 'main'
HEAD is now at fd8d77e four
ok 7 - checkout --detach detaches
expecting success of 2020.8 'checkout --detach without branch name':
reset &&
git checkout --detach &&
check_detached
Switched to branch 'main'
HEAD is now at fd8d77e four
ok 8 - checkout --detach without branch name
expecting success of 2020.9 'checkout --detach errors out for non-commit':
reset &&
test_must_fail git checkout --detach one^{tree} &&
check_not_detached
Switched to branch 'main'
fatal: Cannot switch branch to a non-commit 'one^{tree}'
ok 9 - checkout --detach errors out for non-commit
expecting success of 2020.10 'checkout --detach errors out for extra argument':
reset &&
git checkout main &&
test_must_fail git checkout --detach tag one.t &&
check_not_detached
Already on 'main'
Already on 'main'
fatal: git checkout: --detach does not take a path argument 'one.t'
ok 10 - checkout --detach errors out for extra argument
expecting success of 2020.11 'checkout --detached and -b are incompatible':
reset &&
test_must_fail git checkout --detach -b newbranch tag &&
check_not_detached
Already on 'main'
fatal: '--detach' cannot be used with '-b/-B/--orphan'
ok 11 - checkout --detached and -b are incompatible
expecting success of 2020.12 'checkout --detach moves HEAD':
reset &&
git checkout one &&
git checkout --detach two &&
git diff --exit-code HEAD &&
git diff --exit-code two
Already on 'main'
Note: switching to 'one'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at d79ce16 one
Previous HEAD position was d79ce16 one
HEAD is now at 139b20d two
ok 12 - checkout --detach moves HEAD
expecting success of 2020.13 'checkout warns on orphan commits':
reset &&
git checkout --detach two &&
echo content >orphan &&
git add orphan &&
git commit -a -m orphan1 &&
echo new content >orphan &&
git commit -a -m orphan2 &&
orphan2=$(git rev-parse HEAD) &&
git checkout main 2>stderr
Previous HEAD position was 139b20d two
Switched to branch 'main'
HEAD is now at 139b20d two
[detached HEAD 61e8031] orphan1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 orphan
[detached HEAD bfea71d] orphan2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 13 - checkout warns on orphan commits
expecting success of 2020.14 'checkout warns on orphan commits: output':
check_orphan_warning stderr "2 commits"
Warning: you are leaving 2 commits behind, not connected to
ok 14 - checkout warns on orphan commits: output
expecting success of 2020.15 'checkout warns orphaning 1 of 2 commits':
git checkout "$orphan2" &&
git checkout HEAD^ 2>stderr
Note: switching to 'bfea71df3731158d55fcf7b9d1ae214132b90e2b'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at bfea71d orphan2
ok 15 - checkout warns orphaning 1 of 2 commits
expecting success of 2020.16 'checkout warns orphaning 1 of 2 commits: output':
check_orphan_warning stderr "1 commit"
Warning: you are leaving 1 commit behind, not connected to
ok 16 - checkout warns orphaning 1 of 2 commits: output
expecting success of 2020.17 'checkout does not warn leaving ref tip':
reset &&
git checkout --detach two &&
git checkout main 2>stderr
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
61e8031 orphan1
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 61e8031
Switched to branch 'main'
HEAD is now at 139b20d two
ok 17 - checkout does not warn leaving ref tip
expecting success of 2020.18 'checkout does not warn leaving ref tip':
check_no_orphan_warning stderr
Previous HEAD position was 139b20d two
ok 18 - checkout does not warn leaving ref tip
expecting success of 2020.19 'checkout does not warn leaving reachable commit':
reset &&
git checkout --detach HEAD^ &&
git checkout main 2>stderr
Already on 'main'
HEAD is now at 7c7cd71 three
ok 19 - checkout does not warn leaving reachable commit
expecting success of 2020.20 'checkout does not warn leaving reachable commit':
check_no_orphan_warning stderr
Previous HEAD position was 7c7cd71 three
ok 20 - checkout does not warn leaving reachable commit
expecting success of 2020.21 'tracking count is accurate after orphan check':
reset &&
git branch child main^ &&
git config branch.child.remote . &&
git config branch.child.merge refs/heads/main &&
git checkout child^ &&
git checkout child >stdout &&
test_cmp expect stdout
Already on 'main'
Note: switching to 'child^'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 139b20d two
Previous HEAD position was 139b20d two
Switched to branch 'child'
ok 21 - tracking count is accurate after orphan check
expecting success of 2020.22 'no advice given for explicit detached head state':
# baseline
test_config advice.detachedHead true &&
git checkout child && git checkout HEAD^0 >expect.advice 2>&1 &&
test_config advice.detachedHead false &&
git checkout child && git checkout HEAD^0 >expect.no-advice 2>&1 &&
test_unconfig advice.detachedHead &&
# without configuration, the advice.* variables default to true
git checkout child && git checkout HEAD^0 >actual 2>&1 &&
test_cmp expect.advice actual &&
# with explicit --detach
# no configuration
test_unconfig advice.detachedHead &&
git checkout child && git checkout --detach HEAD^0 >actual 2>&1 &&
test_cmp expect.no-advice actual &&
# explicitly decline advice
test_config advice.detachedHead false &&
git checkout child && git checkout --detach HEAD^0 >actual 2>&1 &&
test_cmp expect.no-advice actual
Already on 'child'
Your branch is behind 'main' by 1 commit, and can be fast-forwarded.
(use "git pull" to update your local branch)
Switched to branch 'child'
Your branch is behind 'main' by 1 commit, and can be fast-forwarded.
(use "git pull" to update your local branch)
Switched to branch 'child'
Your branch is behind 'main' by 1 commit, and can be fast-forwarded.
(use "git pull" to update your local branch)
Switched to branch 'child'
Your branch is behind 'main' by 1 commit, and can be fast-forwarded.
(use "git pull" to update your local branch)
Switched to branch 'child'
Your branch is behind 'main' by 1 commit, and can be fast-forwarded.
(use "git pull" to update your local branch)
ok 22 - no advice given for explicit detached head state
expecting success of 2020.23 'describe_detached_head prints no SHA-1 ellipsis when not asked to':
commit=7c7cd714e262 &&
commit2=139b20d8e6c5 &&
commit3=d79ce1670bdc &&
# The first detach operation is more chatty than the following ones.
cat >1st_detach <<-EOF &&
Note: switching to 'HEAD^'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at $commit three
EOF
# The remaining ones just show info about previous and current HEADs.
cat >2nd_detach <<-EOF &&
Previous HEAD position was $commit three
HEAD is now at $commit2 two
EOF
cat >3rd_detach <<-EOF &&
Previous HEAD position was $commit2 two
HEAD is now at $commit3 one
EOF
reset &&
check_not_detached &&
# Various ways of *not* asking for ellipses
sane_unset GIT_PRINT_SHA1_ELLIPSIS &&
git -c 'core.abbrev=12' checkout HEAD^ >actual 2>&1 &&
check_detached &&
test_cmp 1st_detach actual &&
GIT_PRINT_SHA1_ELLIPSIS=no git -c 'core.abbrev=12' checkout HEAD^ >actual 2>&1 &&
check_detached &&
test_cmp 2nd_detach actual &&
GIT_PRINT_SHA1_ELLIPSIS= git -c 'core.abbrev=12' checkout HEAD^ >actual 2>&1 &&
check_detached &&
test_cmp 3rd_detach actual &&
sane_unset GIT_PRINT_SHA1_ELLIPSIS &&
# We only have four commits, but we can re-use them
reset &&
check_not_detached &&
# Make no mention of the env var at all
git -c 'core.abbrev=12' checkout HEAD^ >actual 2>&1 &&
check_detached &&
test_cmp 1st_detach actual &&
GIT_PRINT_SHA1_ELLIPSIS='nope' &&
git -c 'core.abbrev=12' checkout HEAD^ >actual 2>&1 &&
check_detached &&
test_cmp 2nd_detach actual &&
GIT_PRINT_SHA1_ELLIPSIS=nein &&
git -c 'core.abbrev=12' checkout HEAD^ >actual 2>&1 &&
check_detached &&
test_cmp 3rd_detach actual &&
true
Previous HEAD position was 7c7cd71 three
Switched to branch 'main'
Previous HEAD position was d79ce16 one
Switched to branch 'main'
ok 23 - describe_detached_head prints no SHA-1 ellipsis when not asked to
expecting success of 2020.24 'describe_detached_head does print SHA-1 ellipsis when asked to':
commit=7c7cd714e262 &&
commit2=139b20d8e6c5 &&
commit3=d79ce1670bdc &&
# The first detach operation is more chatty than the following ones.
cat >1st_detach <<-EOF &&
Note: switching to 'HEAD^'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at $commit... three
EOF
# The remaining ones just show info about previous and current HEADs.
cat >2nd_detach <<-EOF &&
Previous HEAD position was $commit... three
HEAD is now at $commit2... two
EOF
cat >3rd_detach <<-EOF &&
Previous HEAD position was $commit2... two
HEAD is now at $commit3... one
EOF
reset &&
check_not_detached &&
# Various ways of asking for ellipses...
# The user can just use any kind of quoting (including none).
GIT_PRINT_SHA1_ELLIPSIS=yes git -c 'core.abbrev=12' checkout HEAD^ >actual 2>&1 &&
check_detached &&
test_cmp 1st_detach actual &&
GIT_PRINT_SHA1_ELLIPSIS=Yes git -c 'core.abbrev=12' checkout HEAD^ >actual 2>&1 &&
check_detached &&
test_cmp 2nd_detach actual &&
GIT_PRINT_SHA1_ELLIPSIS=YES git -c 'core.abbrev=12' checkout HEAD^ >actual 2>&1 &&
check_detached &&
test_cmp 3rd_detach actual &&
true
Previous HEAD position was d79ce16 one
Switched to branch 'main'
ok 24 - describe_detached_head does print SHA-1 ellipsis when asked to
# passed all 24 test(s)
1..24
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2021-checkout-overwrite.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2021-checkout-overwrite/.git/
expecting success of 2021.1 'setup':
mkdir -p a/b/c &&
>a/b/c/d &&
git add -A &&
git commit -m base &&
git tag start
[master (root-commit) 6ef9cb1] base
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 a/b/c/d
ok 1 - setup
expecting success of 2021.2 'create a commit where dir a/b changed to file':
git checkout -b file &&
rm -rf a/b &&
>a/b &&
git add -A &&
git commit -m "dir to file"
Switched to a new branch 'file'
[file ef05f50] dir to file
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
rename a/{b/c/d => b} (100%)
ok 2 - create a commit where dir a/b changed to file
expecting success of 2021.3 'checkout commit with dir must not remove untracked a/b':
git rm --cached a/b &&
git commit -m "un-track the file" &&
test_must_fail git checkout start &&
test -f a/b
rm 'a/b'
[file 1d595a3] un-track the file
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
delete mode 100644 a/b
error: The following untracked working tree files would be overwritten by checkout:
a/b
Please move or remove them before you switch branches.
Aborting
ok 3 - checkout commit with dir must not remove untracked a/b
expecting success of 2021.4 'create a commit where dir a/b changed to symlink':
rm -rf a/b && # cleanup if previous test failed
git checkout -f -b symlink start &&
rm -rf a/b &&
git add -A &&
test_ln_s_add foo a/b &&
git commit -m "dir to symlink"
Switched to a new branch 'symlink'
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
[symlink 6de6f3e] dir to symlink
Author: A U Thor <author@example.com>
2 files changed, 1 insertion(+)
create mode 120000 a/b
delete mode 100644 a/b/c/d
ok 4 - create a commit where dir a/b changed to symlink
expecting success of 2021.5 'checkout commit with dir must not remove untracked a/b':
git rm --cached a/b &&
git commit -m "un-track the symlink" &&
test_must_fail git checkout start
rm 'a/b'
[symlink 43da882] un-track the symlink
Author: A U Thor <author@example.com>
1 file changed, 1 deletion(-)
delete mode 120000 a/b
error: The following untracked working tree files would be overwritten by checkout:
a/b
Please move or remove them before you switch branches.
Aborting
ok 5 - checkout commit with dir must not remove untracked a/b
expecting success of 2021.6 'the symlink remained':
test -h a/b
ok 6 - the symlink remained
expecting success of 2021.7 'cleanup after previous symlink tests':
rm a/b
ok 7 - cleanup after previous symlink tests
expecting success of 2021.8 'checkout -f must not follow symlinks when removing entries':
git checkout -f start &&
mkdir dir &&
>dir/f &&
git add dir/f &&
git commit -m "add dir/f" &&
mv dir untracked &&
ln -s untracked dir &&
git checkout -f HEAD~ &&
test_path_is_file untracked/f
Note: switching to 'start'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 6ef9cb1 base
[detached HEAD 63af845] add dir/f
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 dir/f
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
63af845 add dir/f
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 63af845
HEAD is now at 6ef9cb1 base
ok 8 - checkout -f must not follow symlinks when removing entries
expecting success of 2021.9 'checkout --overwrite-ignore should succeed if only ignored files in the way':
git checkout -b df_conflict &&
test_commit contents some_dir &&
git checkout start &&
mkdir some_dir &&
echo autogenerated information >some_dir/ignore &&
echo ignore >.git/info/exclude &&
git checkout --overwrite-ignore df_conflict &&
test_path_is_file some_dir
Switched to a new branch 'df_conflict'
[df_conflict aa83f36] contents
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 some_dir
Note: switching to 'start'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 6ef9cb1 base
Previous HEAD position was 6ef9cb1 base
Switched to branch 'df_conflict'
ok 9 - checkout --overwrite-ignore should succeed if only ignored files in the way
# passed all 9 test(s)
1..9
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2022-checkout-paths.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2022-checkout-paths/.git/
expecting success of 2022.1 'setup':
mkdir dir &&
>dir/main &&
echo common >dir/common &&
git add dir/main dir/common &&
test_tick && git commit -m "main has dir/main" &&
git checkout -b next &&
git mv dir/main dir/next0 &&
echo next >dir/next1 &&
git add dir &&
test_tick && git commit -m "next has dir/next but not dir/main"
[main (root-commit) 0ea9f56] main has dir/main
Author: A U Thor <author@example.com>
2 files changed, 1 insertion(+)
create mode 100644 dir/common
create mode 100644 dir/main
Switched to a new branch 'next'
[next 30942f7] next has dir/next but not dir/main
Author: A U Thor <author@example.com>
2 files changed, 1 insertion(+)
rename dir/{main => next0} (100%)
create mode 100644 dir/next1
ok 1 - setup
expecting success of 2022.2 'checking out paths out of a tree does not clobber unrelated paths':
git checkout next &&
git reset --hard &&
rm dir/next0 &&
cat dir/common >expect.common &&
echo modified >expect.next1 &&
cat expect.next1 >dir/next1 &&
echo untracked >expect.next2 &&
cat expect.next2 >dir/next2 &&
git checkout main dir &&
test_cmp expect.common dir/common &&
test_path_is_file dir/main &&
git diff --exit-code main dir/main &&
test_path_is_missing dir/next0 &&
test_cmp expect.next1 dir/next1 &&
test_path_is_file dir/next2 &&
test_must_fail git ls-files --error-unmatch dir/next2 &&
test_cmp expect.next2 dir/next2
Already on 'next'
HEAD is now at 30942f7 next has dir/next but not dir/main
Updated 1 path from 4e95d5f
error: pathspec 'dir/next2' did not match any file(s) known to git
Did you forget to 'git add'?
ok 2 - checking out paths out of a tree does not clobber unrelated paths
expecting success of 2022.3 'do not touch unmerged entries matching $path but not in $tree':
git checkout next &&
git reset --hard &&
cat dir/common >expect.common &&
EMPTY_SHA1=$(git hash-object -w --stdin </dev/null) &&
git rm dir/next0 &&
cat >expect.next0 <<-EOF &&
100644 $EMPTY_SHA1 1 dir/next0
100644 $EMPTY_SHA1 2 dir/next0
EOF
git update-index --index-info <expect.next0 &&
git checkout main dir &&
test_cmp expect.common dir/common &&
test_path_is_file dir/main &&
git diff --exit-code main dir/main &&
git ls-files -s dir/next0 >actual.next0 &&
test_cmp expect.next0 actual.next0
Already on 'next'
A dir/main
D dir/next0
M dir/next1
HEAD is now at 30942f7 next has dir/next but not dir/main
rm 'dir/next0'
Updated 1 path from 4e95d5f
ok 3 - do not touch unmerged entries matching $path but not in $tree
expecting success of 2022.4 'do not touch files that are already up-to-date':
git reset --hard &&
echo one >file1 &&
echo two >file2 &&
git add file1 file2 &&
git commit -m base &&
echo modified >file1 &&
test-tool chmtime =1000000000 file2 &&
git update-index -q --refresh &&
git checkout HEAD -- file1 file2 &&
echo one >expect &&
test_cmp expect file1 &&
echo "1000000000" >expect &&
test-tool chmtime --get file2 >actual &&
test_cmp expect actual
HEAD is now at 30942f7 next has dir/next but not dir/main
[next 567e06c] base
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 file1
create mode 100644 file2
ok 4 - do not touch files that are already up-to-date
expecting success of 2022.5 'checkout HEAD adds deleted intent-to-add file back to index':
echo "nonempty" >nonempty &&
>empty &&
git add nonempty empty &&
git commit -m "create files to be deleted" &&
git rm --cached nonempty empty &&
git add -N nonempty empty &&
git checkout HEAD nonempty empty &&
git diff --cached --exit-code
[next 6bd1da2] create files to be deleted
Author: A U Thor <author@example.com>
2 files changed, 1 insertion(+)
create mode 100644 empty
create mode 100644 nonempty
rm 'empty'
rm 'nonempty'
Updated 2 paths from cb321d9
ok 5 - checkout HEAD adds deleted intent-to-add file back to index
# passed all 5 test(s)
1..5
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2023-checkout-m.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2023-checkout-m/.git/
expecting success of 2023.1 'setup':
test_tick &&
test_commit both.txt both.txt initial &&
git branch topic &&
test_commit modified_in_main both.txt in_main &&
test_commit added_in_main each.txt in_main &&
git checkout topic &&
test_commit modified_in_topic both.txt in_topic &&
test_commit added_in_topic each.txt in_topic
[main (root-commit) 7a8c5bf] both.txt
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 both.txt
[main caa44c2] modified_in_main
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[main 8422e32] added_in_main
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 each.txt
Switched to branch 'topic'
[topic 33542d7] modified_in_topic
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[topic d46615c] added_in_topic
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 each.txt
ok 1 - setup
expecting success of 2023.2 'git merge main':
test_must_fail git merge main
Auto-merging both.txt
CONFLICT (content): Merge conflict in both.txt
Auto-merging each.txt
CONFLICT (add/add): Merge conflict in each.txt
Automatic merge failed; fix conflicts and then commit the result.
ok 2 - git merge main
expecting success of 2023.3 '-m restores 2-way conflicted+resolved file':
cp each.txt each.txt.conflicted &&
echo resolved >each.txt &&
git add each.txt &&
git checkout -m -- each.txt &&
clean_branchnames <each.txt >each.txt.cleaned &&
clean_branchnames <each.txt.conflicted >each.txt.conflicted.cleaned &&
test_cmp each.txt.conflicted.cleaned each.txt.cleaned
ok 3 - -m restores 2-way conflicted+resolved file
expecting success of 2023.4 '-m restores 3-way conflicted+resolved file':
cp both.txt both.txt.conflicted &&
echo resolved >both.txt &&
git add both.txt &&
git checkout -m -- both.txt &&
clean_branchnames <both.txt >both.txt.cleaned &&
clean_branchnames <both.txt.conflicted >both.txt.conflicted.cleaned &&
test_cmp both.txt.conflicted.cleaned both.txt.cleaned
ok 4 - -m restores 3-way conflicted+resolved file
expecting success of 2023.5 'force checkout a conflict file creates stage zero entry':
git init co-force &&
(
cd co-force &&
echo a >a &&
git add a &&
git commit -ama &&
A_OBJ=$(git rev-parse :a) &&
git branch topic &&
echo b >a &&
git commit -amb &&
B_OBJ=$(git rev-parse :a) &&
git checkout topic &&
echo c >a &&
C_OBJ=$(git hash-object a) &&
git checkout -m main &&
test_cmp_rev :1:a $A_OBJ &&
test_cmp_rev :2:a $B_OBJ &&
test_cmp_rev :3:a $C_OBJ &&
git checkout -f topic &&
test_cmp_rev :0:a $A_OBJ
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2023-checkout-m/co-force/.git/
[main (root-commit) b7442a0] a
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 a
[main 7529dfa] b
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to branch 'topic'
Switched to branch 'main'
M a
Switched to branch 'topic'
ok 5 - force checkout a conflict file creates stage zero entry
# passed all 5 test(s)
1..5
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2024-checkout-dwim.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2024-checkout-dwim/.git/
expecting success of 2024.1 'setup':
test_commit my_main &&
git init repo_a &&
(
cd repo_a &&
test_commit a_main &&
git checkout -b foo &&
test_commit a_foo &&
git checkout -b bar &&
test_commit a_bar &&
git checkout -b ambiguous_branch_and_file &&
test_commit a_ambiguous_branch_and_file
) &&
git init repo_b &&
(
cd repo_b &&
test_commit b_main &&
git checkout -b foo &&
test_commit b_foo &&
git checkout -b baz &&
test_commit b_baz &&
git checkout -b ambiguous_branch_and_file &&
test_commit b_ambiguous_branch_and_file
) &&
git remote add repo_a repo_a &&
git remote add repo_b repo_b &&
git config remote.repo_b.fetch \
"+refs/heads/*:refs/remotes/other_b/*" &&
git fetch --all
[master (root-commit) 476f86c] my_main
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 my_main.t
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2024-checkout-dwim/repo_a/.git/
[master (root-commit) d6d6851] a_main
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 a_main.t
Switched to a new branch 'foo'
[foo e2c25ec] a_foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 a_foo.t
Switched to a new branch 'bar'
[bar bfd2f16] a_bar
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 a_bar.t
Switched to a new branch 'ambiguous_branch_and_file'
[ambiguous_branch_and_file 225901c] a_ambiguous_branch_and_file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 a_ambiguous_branch_and_file.t
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2024-checkout-dwim/repo_b/.git/
[master (root-commit) 272258e] b_main
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 b_main.t
Switched to a new branch 'foo'
[foo 7eb022a] b_foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 b_foo.t
Switched to a new branch 'baz'
[baz 8ac57c7] b_baz
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 b_baz.t
Switched to a new branch 'ambiguous_branch_and_file'
[ambiguous_branch_and_file 1b5c299] b_ambiguous_branch_and_file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 b_ambiguous_branch_and_file.t
Fetching repo_a
From repo_a
* [new branch] ambiguous_branch_and_file -> repo_a/ambiguous_branch_and_file
* [new branch] bar -> repo_a/bar
* [new branch] foo -> repo_a/foo
* [new branch] master -> repo_a/master
* [new tag] a_ambiguous_branch_and_file -> a_ambiguous_branch_and_file
* [new tag] a_bar -> a_bar
* [new tag] a_foo -> a_foo
* [new tag] a_main -> a_main
Fetching repo_b
From repo_b
* [new branch] ambiguous_branch_and_file -> other_b/ambiguous_branch_and_file
* [new branch] baz -> other_b/baz
* [new branch] foo -> other_b/foo
* [new branch] master -> other_b/master
* [new tag] b_ambiguous_branch_and_file -> b_ambiguous_branch_and_file
* [new tag] b_baz -> b_baz
* [new tag] b_foo -> b_foo
* [new tag] b_main -> b_main
ok 1 - setup
expecting success of 2024.2 'checkout of non-existing branch fails':
git checkout -B main &&
test_might_fail git branch -D xyzzy &&
test_must_fail git checkout xyzzy &&
status_uno_is_clean &&
test_must_fail git rev-parse --verify refs/heads/xyzzy &&
test_branch main
Switched to a new branch 'main'
error: branch 'xyzzy' not found.
error: pathspec 'xyzzy' did not match any file(s) known to git
fatal: Needed a single revision
ok 2 - checkout of non-existing branch fails
expecting success of 2024.3 'checkout of branch from multiple remotes fails #1':
git checkout -B main &&
test_might_fail git branch -D foo &&
test_must_fail git checkout foo &&
status_uno_is_clean &&
test_must_fail git rev-parse --verify refs/heads/foo &&
test_branch main
Reset branch 'main'
error: branch 'foo' not found.
hint: If you meant to check out a remote tracking branch on, e.g. 'origin',
hint: you can do so by fully qualifying the name with the --track option:
hint:
hint: git checkout --track origin/<name>
hint:
hint: If you'd like to always have checkouts of an ambiguous <name> prefer
hint: one remote, e.g. the 'origin' remote, consider setting
hint: checkout.defaultRemote=origin in your config.
fatal: 'foo' matched multiple (2) remote tracking branches
fatal: Needed a single revision
ok 3 - checkout of branch from multiple remotes fails #1
expecting success of 2024.4 'when arg matches multiple remotes, do not fallback to interpreting as pathspec':
# create a file with name matching remote branch name
git checkout -b t_ambiguous_branch_and_file &&
>ambiguous_branch_and_file &&
git add ambiguous_branch_and_file &&
git commit -m "ambiguous_branch_and_file" &&
# modify file to verify that it will not be touched by checkout
test_when_finished "git checkout -- ambiguous_branch_and_file" &&
echo "file contents" >ambiguous_branch_and_file &&
cp ambiguous_branch_and_file expect &&
test_must_fail git checkout ambiguous_branch_and_file 2>err &&
test_i18ngrep "matched multiple (2) remote tracking branches" err &&
# file must not be altered
test_cmp expect ambiguous_branch_and_file
Switched to a new branch 't_ambiguous_branch_and_file'
[t_ambiguous_branch_and_file 8830e76] ambiguous_branch_and_file
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 ambiguous_branch_and_file
fatal: 'ambiguous_branch_and_file' matched multiple (2) remote tracking branches
ok 4 - when arg matches multiple remotes, do not fallback to interpreting as pathspec
expecting success of 2024.5 'checkout of branch from multiple remotes fails with advice':
git checkout -B main &&
test_might_fail git branch -D foo &&
test_must_fail git checkout foo 2>stderr &&
test_branch main &&
status_uno_is_clean &&
test_i18ngrep "^hint: " stderr &&
test_must_fail git -c advice.checkoutAmbiguousRemoteBranchName=false \
checkout foo 2>stderr &&
test_branch main &&
status_uno_is_clean &&
test_i18ngrep ! "^hint: " stderr
Switched to and reset branch 'main'
error: branch 'foo' not found.
hint: If you meant to check out a remote tracking branch on, e.g. 'origin',
hint: you can do so by fully qualifying the name with the --track option:
hint:
hint: git checkout --track origin/<name>
hint:
hint: If you'd like to always have checkouts of an ambiguous <name> prefer
hint: one remote, e.g. the 'origin' remote, consider setting
hint: checkout.defaultRemote=origin in your config.
ok 5 - checkout of branch from multiple remotes fails with advice
expecting success of 2024.6 'checkout -p with multiple remotes does not print advice':
git checkout -B main &&
test_might_fail git branch -D foo &&
git checkout -p foo 2>stderr &&
test_i18ngrep ! "^hint: " stderr &&
status_uno_is_clean
Reset branch 'main'
error: branch 'foo' not found.
ok 6 - checkout -p with multiple remotes does not print advice
expecting success of 2024.7 'checkout of branch from multiple remotes succeeds with checkout.defaultRemote #1':
git checkout -B main &&
status_uno_is_clean &&
test_might_fail git branch -D foo &&
git -c checkout.defaultRemote=repo_a checkout foo &&
status_uno_is_clean &&
test_branch foo &&
test_cmp_rev remotes/repo_a/foo HEAD &&
test_branch_upstream foo repo_a foo
Reset branch 'main'
error: branch 'foo' not found.
Switched to a new branch 'foo'
branch 'foo' set up to track 'repo_a/foo'.
ok 7 - checkout of branch from multiple remotes succeeds with checkout.defaultRemote #1
expecting success of 2024.8 'checkout of branch from a single remote succeeds #1':
git checkout -B main &&
test_might_fail git branch -D bar &&
git checkout bar &&
status_uno_is_clean &&
test_branch bar &&
test_cmp_rev remotes/repo_a/bar HEAD &&
test_branch_upstream bar repo_a bar
Switched to and reset branch 'main'
error: branch 'bar' not found.
Switched to a new branch 'bar'
branch 'bar' set up to track 'repo_a/bar'.
ok 8 - checkout of branch from a single remote succeeds #1
expecting success of 2024.9 'checkout of branch from a single remote succeeds #2':
git checkout -B main &&
test_might_fail git branch -D baz &&
git checkout baz &&
status_uno_is_clean &&
test_branch baz &&
test_cmp_rev remotes/other_b/baz HEAD &&
test_branch_upstream baz repo_b baz
Switched to and reset branch 'main'
error: branch 'baz' not found.
Switched to a new branch 'baz'
branch 'baz' set up to track 'repo_b/baz'.
ok 9 - checkout of branch from a single remote succeeds #2
expecting success of 2024.10 '--no-guess suppresses branch auto-vivification':
git checkout -B main &&
status_uno_is_clean &&
test_might_fail git branch -D bar &&
test_must_fail git checkout --no-guess bar &&
test_must_fail git rev-parse --verify refs/heads/bar &&
test_branch main
Switched to and reset branch 'main'
Deleted branch bar (was bfd2f16).
error: pathspec 'bar' did not match any file(s) known to git
fatal: Needed a single revision
ok 10 - --no-guess suppresses branch auto-vivification
expecting success of 2024.11 'checkout.guess = false suppresses branch auto-vivification':
git checkout -B main &&
status_uno_is_clean &&
test_might_fail git branch -D bar &&
test_config checkout.guess false &&
test_must_fail git checkout bar &&
test_must_fail git rev-parse --verify refs/heads/bar &&
test_branch main
Reset branch 'main'
error: branch 'bar' not found.
error: pathspec 'bar' did not match any file(s) known to git
fatal: Needed a single revision
ok 11 - checkout.guess = false suppresses branch auto-vivification
expecting success of 2024.12 'setup more remotes with unconventional refspecs':
git checkout -B main &&
status_uno_is_clean &&
git init repo_c &&
(
cd repo_c &&
test_commit c_main &&
git checkout -b bar &&
test_commit c_bar &&
git checkout -b spam &&
test_commit c_spam
) &&
git init repo_d &&
(
cd repo_d &&
test_commit d_main &&
git checkout -b baz &&
test_commit d_baz &&
git checkout -b eggs &&
test_commit d_eggs
) &&
git remote add repo_c repo_c &&
git config remote.repo_c.fetch \
"+refs/heads/*:refs/remotes/extra_dir/repo_c/extra_dir/*" &&
git remote add repo_d repo_d &&
git config remote.repo_d.fetch \
"+refs/heads/*:refs/repo_d/*" &&
git fetch --all
Reset branch 'main'
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2024-checkout-dwim/repo_c/.git/
[master (root-commit) cdfe1c8] c_main
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 c_main.t
Switched to a new branch 'bar'
[bar b017b41] c_bar
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 c_bar.t
Switched to a new branch 'spam'
[spam 449823f] c_spam
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 c_spam.t
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2024-checkout-dwim/repo_d/.git/
[master (root-commit) b0e85f1] d_main
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 d_main.t
Switched to a new branch 'baz'
[baz b83c7c6] d_baz
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 d_baz.t
Switched to a new branch 'eggs'
[eggs e1ffd37] d_eggs
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 d_eggs.t
Fetching repo_a
Fetching repo_b
Fetching repo_c
From repo_c
* [new branch] bar -> extra_dir/repo_c/extra_dir/bar
* [new branch] master -> extra_dir/repo_c/extra_dir/master
* [new branch] spam -> extra_dir/repo_c/extra_dir/spam
* [new tag] c_bar -> c_bar
* [new tag] c_main -> c_main
* [new tag] c_spam -> c_spam
Fetching repo_d
From repo_d
* [new branch] baz -> refs/repo_d/baz
* [new branch] eggs -> refs/repo_d/eggs
* [new branch] master -> refs/repo_d/master
* [new tag] d_baz -> d_baz
* [new tag] d_eggs -> d_eggs
* [new tag] d_main -> d_main
ok 12 - setup more remotes with unconventional refspecs
expecting success of 2024.13 'checkout of branch from multiple remotes fails #2':
git checkout -B main &&
status_uno_is_clean &&
test_might_fail git branch -D bar &&
test_must_fail git checkout bar &&
status_uno_is_clean &&
test_must_fail git rev-parse --verify refs/heads/bar &&
test_branch main
Reset branch 'main'
error: branch 'bar' not found.
hint: If you meant to check out a remote tracking branch on, e.g. 'origin',
hint: you can do so by fully qualifying the name with the --track option:
hint:
hint: git checkout --track origin/<name>
hint:
hint: If you'd like to always have checkouts of an ambiguous <name> prefer
hint: one remote, e.g. the 'origin' remote, consider setting
hint: checkout.defaultRemote=origin in your config.
fatal: 'bar' matched multiple (2) remote tracking branches
fatal: Needed a single revision
ok 13 - checkout of branch from multiple remotes fails #2
expecting success of 2024.14 'checkout of branch from multiple remotes fails #3':
git checkout -B main &&
status_uno_is_clean &&
test_might_fail git branch -D baz &&
test_must_fail git checkout baz &&
status_uno_is_clean &&
test_must_fail git rev-parse --verify refs/heads/baz &&
test_branch main
Reset branch 'main'
Deleted branch baz (was 8ac57c7).
hint: If you meant to check out a remote tracking branch on, e.g. 'origin',
hint: you can do so by fully qualifying the name with the --track option:
hint:
hint: git checkout --track origin/<name>
hint:
hint: If you'd like to always have checkouts of an ambiguous <name> prefer
hint: one remote, e.g. the 'origin' remote, consider setting
hint: checkout.defaultRemote=origin in your config.
fatal: 'baz' matched multiple (2) remote tracking branches
fatal: Needed a single revision
ok 14 - checkout of branch from multiple remotes fails #3
expecting success of 2024.15 'checkout of branch from a single remote succeeds #3':
git checkout -B main &&
status_uno_is_clean &&
test_might_fail git branch -D spam &&
git checkout spam &&
status_uno_is_clean &&
test_branch spam &&
test_cmp_rev refs/remotes/extra_dir/repo_c/extra_dir/spam HEAD &&
test_branch_upstream spam repo_c spam
Reset branch 'main'
error: branch 'spam' not found.
Switched to a new branch 'spam'
branch 'spam' set up to track 'repo_c/spam'.
ok 15 - checkout of branch from a single remote succeeds #3
expecting success of 2024.16 'checkout of branch from a single remote succeeds #4':
git checkout -B main &&
status_uno_is_clean &&
test_might_fail git branch -D eggs &&
git checkout eggs &&
status_uno_is_clean &&
test_branch eggs &&
test_cmp_rev refs/repo_d/eggs HEAD &&
test_branch_upstream eggs repo_d eggs
Switched to and reset branch 'main'
error: branch 'eggs' not found.
Switched to a new branch 'eggs'
branch 'eggs' set up to track 'repo_d/eggs'.
ok 16 - checkout of branch from a single remote succeeds #4
expecting success of 2024.17 'checkout of branch with a file having the same name fails':
git checkout -B main &&
status_uno_is_clean &&
test_might_fail git branch -D spam &&
>spam &&
test_must_fail git checkout spam &&
status_uno_is_clean &&
test_must_fail git rev-parse --verify refs/heads/spam &&
test_branch main
Switched to and reset branch 'main'
Deleted branch spam (was 449823f).
fatal: 'spam' could be both a local file and a tracking branch.
Please use -- (and optionally --no-guess) to disambiguate
fatal: Needed a single revision
ok 17 - checkout of branch with a file having the same name fails
expecting success of 2024.18 'checkout of branch with a file in subdir having the same name fails':
git checkout -B main &&
status_uno_is_clean &&
test_might_fail git branch -D spam &&
>spam &&
mkdir sub &&
mv spam sub/spam &&
test_must_fail git -C sub checkout spam &&
status_uno_is_clean &&
test_must_fail git rev-parse --verify refs/heads/spam &&
test_branch main
Reset branch 'main'
error: branch 'spam' not found.
fatal: 'spam' could be both a local file and a tracking branch.
Please use -- (and optionally --no-guess) to disambiguate
fatal: Needed a single revision
ok 18 - checkout of branch with a file in subdir having the same name fails
expecting success of 2024.19 'checkout <branch> -- succeeds, even if a file with the same name exists':
git checkout -B main &&
status_uno_is_clean &&
test_might_fail git branch -D spam &&
>spam &&
git checkout spam -- &&
status_uno_is_clean &&
test_branch spam &&
test_cmp_rev refs/remotes/extra_dir/repo_c/extra_dir/spam HEAD &&
test_branch_upstream spam repo_c spam
Reset branch 'main'
error: branch 'spam' not found.
Switched to a new branch 'spam'
branch 'spam' set up to track 'repo_c/spam'.
ok 19 - checkout <branch> -- succeeds, even if a file with the same name exists
expecting success of 2024.20 'loosely defined local base branch is reported correctly':
git checkout main &&
status_uno_is_clean &&
git branch strict &&
git branch loose &&
git commit --allow-empty -m "a bit more" &&
test_config branch.strict.remote . &&
test_config branch.loose.remote . &&
test_config branch.strict.merge refs/heads/main &&
test_config branch.loose.merge main &&
git checkout strict >expect.raw 2>&1 &&
sed -e "s/strict/BRANCHNAME/g" <expect.raw >expect &&
status_uno_is_clean &&
git checkout loose >actual.raw 2>&1 &&
sed -e "s/loose/BRANCHNAME/g" <actual.raw >actual &&
status_uno_is_clean &&
grep BRANCHNAME actual &&
test_cmp expect actual
Switched to branch 'main'
[main 0b0f2ce] a bit more
Author: A U Thor <author@example.com>
Switched to branch 'BRANCHNAME'
ok 20 - loosely defined local base branch is reported correctly
expecting success of 2024.21 'reject when arg could be part of dwim branch':
git remote add foo file://non-existent-place &&
git update-ref refs/remotes/foo/dwim-arg HEAD &&
echo foo >dwim-arg &&
git add dwim-arg &&
echo bar >dwim-arg &&
test_must_fail git checkout dwim-arg &&
test_must_fail git rev-parse refs/heads/dwim-arg -- &&
grep bar dwim-arg
fatal: 'dwim-arg' could be both a local file and a tracking branch.
Please use -- (and optionally --no-guess) to disambiguate
fatal: bad revision 'refs/heads/dwim-arg'
bar
ok 21 - reject when arg could be part of dwim branch
expecting success of 2024.22 'disambiguate dwim branch and checkout path (1)':
git update-ref refs/remotes/foo/dwim-arg1 HEAD &&
echo foo >dwim-arg1 &&
git add dwim-arg1 &&
echo bar >dwim-arg1 &&
git checkout -- dwim-arg1 &&
test_must_fail git rev-parse refs/heads/dwim-arg1 -- &&
grep foo dwim-arg1
fatal: bad revision 'refs/heads/dwim-arg1'
foo
ok 22 - disambiguate dwim branch and checkout path (1)
expecting success of 2024.23 'disambiguate dwim branch and checkout path (2)':
git update-ref refs/remotes/foo/dwim-arg2 HEAD &&
echo foo >dwim-arg2 &&
git add dwim-arg2 &&
echo bar >dwim-arg2 &&
git checkout dwim-arg2 -- &&
git rev-parse refs/heads/dwim-arg2 -- &&
grep bar dwim-arg2
Switched to a new branch 'dwim-arg2'
A dwim-arg
A dwim-arg1
A dwim-arg2
branch 'dwim-arg2' set up to track 'foo/dwim-arg2'.
e1ffd376e093970186efb2074ec16dcb57d23789
--
bar
ok 23 - disambiguate dwim branch and checkout path (2)
# passed all 23 test(s)
1..23
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2025-checkout-no-overlay.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2025-checkout-no-overlay/.git/
expecting success of 2025.1 'setup':
git commit --allow-empty -m "initial"
[master (root-commit) 8b2b4f6] initial
Author: A U Thor <author@example.com>
ok 1 - setup
expecting success of 2025.2 'checkout --no-overlay deletes files not in <tree-ish>':
>file &&
mkdir dir &&
>dir/file1 &&
git add file dir/file1 &&
git checkout --no-overlay HEAD -- file &&
test_path_is_missing file &&
test_path_is_file dir/file1
ok 2 - checkout --no-overlay deletes files not in <tree-ish>
expecting success of 2025.3 'checkout --no-overlay removing last file from directory':
git checkout --no-overlay HEAD -- dir/file1 &&
test_path_is_missing dir
ok 3 - checkout --no-overlay removing last file from directory
expecting success of 2025.4 'checkout -p --overlay is disallowed':
test_must_fail git checkout -p --overlay HEAD 2>actual &&
test_i18ngrep "fatal: options .-p. and .--overlay. cannot be used together" actual
fatal: options '-p' and '--overlay' cannot be used together
ok 4 - checkout -p --overlay is disallowed
expecting success of 2025.5 '--no-overlay --theirs with D/F conflict deletes file':
test_commit file1 file1 &&
test_commit file2 file2 &&
git rm --cached file1 &&
echo 1234 >file1 &&
F1=$(git rev-parse HEAD:file1) &&
F2=$(git rev-parse HEAD:file2) &&
{
echo "100644 $F1 1 file1" &&
echo "100644 $F2 2 file1"
} | git update-index --index-info &&
test_path_is_file file1 &&
git checkout --theirs --no-overlay -- file1 &&
test_path_is_missing file1
[master a11d2b7] file1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file1
[master 1c03fe1] file2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file2
rm 'file1'
ok 5 - --no-overlay --theirs with D/F conflict deletes file
expecting success of 2025.6 'wildcard pathspec matches file in subdirectory':
git reset --hard &&
mkdir subdir &&
test_commit file3-1 subdir/file3 &&
test_commit file3-2 subdir/file3 &&
git checkout --no-overlay file3-1 "*file3" &&
echo file3-1 >expect &&
test_path_is_file subdir/file3 &&
test_cmp expect subdir/file3
HEAD is now at 1c03fe1 file2
[master 78da8bb] file3-1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 subdir/file3
[master cac8ac6] file3-2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Updated 1 path from e1fb72e
ok 6 - wildcard pathspec matches file in subdirectory
# passed all 6 test(s)
1..6
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2026-checkout-pathspec-file.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2026-checkout-pathspec-file/.git/
expecting success of 2026.1 'setup':
test_commit file0 &&
echo 1 >fileA.t &&
echo 1 >fileB.t &&
echo 1 >fileC.t &&
echo 1 >fileD.t &&
git add fileA.t fileB.t fileC.t fileD.t &&
git commit -m "files 1" &&
echo 2 >fileA.t &&
echo 2 >fileB.t &&
echo 2 >fileC.t &&
echo 2 >fileD.t &&
git add fileA.t fileB.t fileC.t fileD.t &&
git commit -m "files 2" &&
git tag checkpoint
[master (root-commit) ad2e047] file0
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file0.t
[master 46ee160] files 1
Author: A U Thor <author@example.com>
4 files changed, 4 insertions(+)
create mode 100644 fileA.t
create mode 100644 fileB.t
create mode 100644 fileC.t
create mode 100644 fileD.t
[master 774eb8e] files 2
Author: A U Thor <author@example.com>
4 files changed, 4 insertions(+), 4 deletions(-)
ok 1 - setup
expecting success of 2026.2 '--pathspec-from-file from stdin':
restore_checkpoint &&
echo fileA.t | git checkout --pathspec-from-file=- HEAD^1 &&
cat >expect <<-\EOF &&
M fileA.t
EOF
verify_expect
HEAD is now at 774eb8e files 2
Updated 1 path from 0465292
ok 2 - --pathspec-from-file from stdin
expecting success of 2026.3 '--pathspec-from-file from file':
restore_checkpoint &&
echo fileA.t >list &&
git checkout --pathspec-from-file=list HEAD^1 &&
cat >expect <<-\EOF &&
M fileA.t
EOF
verify_expect
HEAD is now at 774eb8e files 2
Updated 1 path from 0465292
ok 3 - --pathspec-from-file from file
expecting success of 2026.4 'NUL delimiters':
restore_checkpoint &&
printf "fileA.t\0fileB.t\0" | git checkout --pathspec-from-file=- --pathspec-file-nul HEAD^1 &&
cat >expect <<-\EOF &&
M fileA.t
M fileB.t
EOF
verify_expect
HEAD is now at 774eb8e files 2
Updated 2 paths from 0465292
ok 4 - NUL delimiters
expecting success of 2026.5 'LF delimiters':
restore_checkpoint &&
printf "fileA.t\nfileB.t\n" | git checkout --pathspec-from-file=- HEAD^1 &&
cat >expect <<-\EOF &&
M fileA.t
M fileB.t
EOF
verify_expect
HEAD is now at 774eb8e files 2
Updated 2 paths from 0465292
ok 5 - LF delimiters
expecting success of 2026.6 'no trailing delimiter':
restore_checkpoint &&
printf "fileA.t\nfileB.t" | git checkout --pathspec-from-file=- HEAD^1 &&
cat >expect <<-\EOF &&
M fileA.t
M fileB.t
EOF
verify_expect
HEAD is now at 774eb8e files 2
Updated 2 paths from 0465292
ok 6 - no trailing delimiter
expecting success of 2026.7 'CRLF delimiters':
restore_checkpoint &&
printf "fileA.t\r\nfileB.t\r\n" | git checkout --pathspec-from-file=- HEAD^1 &&
cat >expect <<-\EOF &&
M fileA.t
M fileB.t
EOF
verify_expect
HEAD is now at 774eb8e files 2
Updated 2 paths from 0465292
ok 7 - CRLF delimiters
expecting success of 2026.8 'quotes':
restore_checkpoint &&
cat >list <<-\EOF &&
"file\101.t"
EOF
git checkout --pathspec-from-file=list HEAD^1 &&
cat >expect <<-\EOF &&
M fileA.t
EOF
verify_expect
HEAD is now at 774eb8e files 2
Updated 1 path from 0465292
ok 8 - quotes
expecting success of 2026.9 'quotes not compatible with --pathspec-file-nul':
restore_checkpoint &&
cat >list <<-\EOF &&
"file\101.t"
EOF
test_must_fail git checkout --pathspec-from-file=list --pathspec-file-nul HEAD^1
HEAD is now at 774eb8e files 2
error: pathspec '"file\101.t"
' did not match any file(s) known to git
ok 9 - quotes not compatible with --pathspec-file-nul
expecting success of 2026.10 'only touches what was listed':
restore_checkpoint &&
printf "fileB.t\nfileC.t\n" | git checkout --pathspec-from-file=- HEAD^1 &&
cat >expect <<-\EOF &&
M fileB.t
M fileC.t
EOF
verify_expect
HEAD is now at 774eb8e files 2
Updated 2 paths from 0465292
ok 10 - only touches what was listed
expecting success of 2026.11 'error conditions':
restore_checkpoint &&
echo fileA.t >list &&
test_must_fail git checkout --pathspec-from-file=list --detach 2>err &&
test_i18ngrep -e "options .--pathspec-from-file. and .--detach. cannot be used together" err &&
test_must_fail git checkout --pathspec-from-file=list --patch 2>err &&
test_i18ngrep -e "options .--pathspec-from-file. and .--patch. cannot be used together" err &&
test_must_fail git checkout --pathspec-from-file=list -- fileA.t 2>err &&
test_i18ngrep -e ".--pathspec-from-file. and pathspec arguments cannot be used together" err &&
test_must_fail git checkout --pathspec-file-nul 2>err &&
test_i18ngrep -e "the option .--pathspec-file-nul. requires .--pathspec-from-file." err
HEAD is now at 774eb8e files 2
fatal: options '--pathspec-from-file' and '--detach' cannot be used together
fatal: options '--pathspec-from-file' and '--patch' cannot be used together
fatal: '--pathspec-from-file' and pathspec arguments cannot be used together
fatal: the option '--pathspec-file-nul' requires '--pathspec-from-file'
ok 11 - error conditions
# passed all 11 test(s)
1..11
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2027-checkout-track.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2027-checkout-track/.git/
expecting success of 2027.1 'setup':
test_commit one &&
test_commit two
[main (root-commit) d79ce16] one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 one.t
[main 139b20d] two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 two.t
ok 1 - setup
expecting success of 2027.2 'checkout --track -b creates a new tracking branch':
git checkout --track -b branch1 main &&
test $(git rev-parse --abbrev-ref HEAD) = branch1 &&
test $(git config --get branch.branch1.remote) = . &&
test $(git config --get branch.branch1.merge) = refs/heads/main
Switched to a new branch 'branch1'
branch 'branch1' set up to track 'main'.
ok 2 - checkout --track -b creates a new tracking branch
expecting success of 2027.3 'checkout --track -b rejects an extra path argument':
test_must_fail git checkout --track -b branch2 main one.t 2>err &&
test_i18ngrep "cannot be used with updating paths" err
fatal: '--track' cannot be used with updating paths
ok 3 - checkout --track -b rejects an extra path argument
expecting success of 2027.4 'checkout --track -b overrides autoSetupMerge=inherit':
# Set up tracking config on main
test_config branch.main.remote origin &&
test_config branch.main.merge refs/heads/some-branch &&
test_config branch.autoSetupMerge inherit &&
# With --track=inherit, we copy the tracking config from main
git checkout --track=inherit -b b1 main &&
test_cmp_config origin branch.b1.remote &&
test_cmp_config refs/heads/some-branch branch.b1.merge &&
# With branch.autoSetupMerge=inherit, we do the same
git checkout -b b2 main &&
test_cmp_config origin branch.b2.remote &&
test_cmp_config refs/heads/some-branch branch.b2.merge &&
# But --track overrides this
git checkout --track -b b3 main &&
test_cmp_config . branch.b3.remote &&
test_cmp_config refs/heads/main branch.b3.merge &&
# And --track=direct does as well
git checkout --track=direct -b b4 main &&
test_cmp_config . branch.b4.remote &&
test_cmp_config refs/heads/main branch.b4.merge
Switched to a new branch 'b1'
branch 'b1' set up to track 'origin/some-branch'.
Switched to a new branch 'b2'
branch 'b2' set up to track 'origin/some-branch'.
Switched to a new branch 'b3'
branch 'b3' set up to track 'main'.
Switched to a new branch 'b4'
branch 'b4' set up to track 'main'.
ok 4 - checkout --track -b overrides autoSetupMerge=inherit
# passed all 4 test(s)
1..4
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2030-unresolve-info.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2030-unresolve-info/.git/
expecting success of 2030.1 'setup':
mkdir fi &&
printf "a\0a" >binary &&
git add binary &&
test_commit initial fi/le first &&
git branch side &&
git branch another &&
printf "a\0b" >binary &&
git add binary &&
test_commit second fi/le second &&
git checkout side &&
test_commit third fi/le third &&
git branch add-add &&
git checkout another &&
test_commit fourth fi/le fourth &&
git checkout add-add &&
test_commit fifth add-differently &&
git checkout main
[main (root-commit) 7b271e3] initial
Author: A U Thor <author@example.com>
2 files changed, 1 insertion(+)
create mode 100644 binary
create mode 100644 fi/le
[main 9a00f99] second
Author: A U Thor <author@example.com>
2 files changed, 1 insertion(+), 1 deletion(-)
Switched to branch 'side'
[side b18340d] third
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to branch 'another'
[another cf4d985] fourth
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to branch 'add-add'
[add-add b851e77] fifth
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 add-differently
Switched to branch 'main'
ok 1 - setup
expecting success of 2030.2 'add records switch clears':
prime_resolve_undo &&
test_tick &&
git commit -m merged &&
echo committing keeps &&
check_resolve_undo kept fi/le initial:fi/le second:fi/le third:fi/le &&
git checkout second^0 &&
echo switching clears &&
check_resolve_undo cleared
HEAD is now at 9a00f99 second
Note: switching to 'second^0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 9a00f99 second
Auto-merging fi/le
CONFLICT (content): Merge conflict in fi/le
Automatic merge failed; fix conflicts and then commit the result.
merge does not leave anything
resolving records
[detached HEAD b3a51df] merged
Author: A U Thor <author@example.com>
committing keeps
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
b3a51df merged
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> b3a51df
HEAD is now at 9a00f99 second
switching clears
ok 2 - add records switch clears
expecting success of 2030.3 'rm records reset clears':
prime_resolve_undo &&
test_tick &&
git commit -m merged &&
echo committing keeps &&
check_resolve_undo kept fi/le initial:fi/le second:fi/le third:fi/le &&
echo merge clears upfront &&
test_must_fail git merge fourth^0 &&
check_resolve_undo nuked &&
git rm -f fi/le &&
echo resolving records &&
check_resolve_undo recorded fi/le initial:fi/le HEAD:fi/le fourth:fi/le &&
git reset --hard &&
echo resetting discards &&
check_resolve_undo discarded
HEAD is now at 9a00f99 second
HEAD is now at 9a00f99 second
Auto-merging fi/le
CONFLICT (content): Merge conflict in fi/le
Automatic merge failed; fix conflicts and then commit the result.
merge does not leave anything
resolving records
[detached HEAD 70d285e] merged
Author: A U Thor <author@example.com>
committing keeps
merge clears upfront
Auto-merging fi/le
CONFLICT (content): Merge conflict in fi/le
Automatic merge failed; fix conflicts and then commit the result.
rm 'fi/le'
resolving records
HEAD is now at 70d285e merged
resetting discards
ok 3 - rm records reset clears
expecting success of 2030.4 'plumbing clears':
prime_resolve_undo &&
test_tick &&
git commit -m merged &&
echo committing keeps &&
check_resolve_undo kept fi/le initial:fi/le second:fi/le third:fi/le &&
echo plumbing clear &&
git update-index --clear-resolve-undo &&
check_resolve_undo cleared
HEAD is now at 70d285e merged
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
70d285e merged
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 70d285e
HEAD is now at 9a00f99 second
Auto-merging fi/le
CONFLICT (content): Merge conflict in fi/le
Automatic merge failed; fix conflicts and then commit the result.
merge does not leave anything
resolving records
[detached HEAD 894de51] merged
Author: A U Thor <author@example.com>
committing keeps
plumbing clear
ok 4 - plumbing clears
expecting success of 2030.5 'add records checkout -m undoes':
prime_resolve_undo &&
git diff HEAD &&
git checkout --conflict=merge fi/le &&
echo checkout used the record and removed it &&
check_resolve_undo removed &&
echo the index and the work tree is unmerged again &&
git diff >actual &&
grep "^++<<<<<<<" actual
HEAD is now at 894de51 merged
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
894de51 merged
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 894de51
HEAD is now at 9a00f99 second
Auto-merging fi/le
CONFLICT (content): Merge conflict in fi/le
Automatic merge failed; fix conflicts and then commit the result.
merge does not leave anything
resolving records
diff --git a/fi/le b/fi/le
index e019be0..8dca2f8 100644
--- a/fi/le
+++ b/fi/le
@@ -1 +1 @@
-second
+different
Recreated 1 merge conflict
checkout used the record and removed it
the index and the work tree is unmerged again
++<<<<<<< ours
ok 5 - add records checkout -m undoes
expecting success of 2030.6 'unmerge with plumbing':
prime_resolve_undo &&
git update-index --unresolve fi/le &&
git ls-files -u >actual &&
test_line_count = 3 actual
HEAD is now at 9a00f99 second
HEAD is now at 9a00f99 second
Auto-merging fi/le
CONFLICT (content): Merge conflict in fi/le
Automatic merge failed; fix conflicts and then commit the result.
merge does not leave anything
resolving records
ok 6 - unmerge with plumbing
expecting success of 2030.7 'rerere and rerere forget':
mkdir .git/rr-cache &&
prime_resolve_undo &&
echo record the resolution &&
git rerere &&
rerere_id=$(cd .git/rr-cache && echo */postimage) &&
rerere_id=${rerere_id%/postimage} &&
test -f .git/rr-cache/$rerere_id/postimage &&
git checkout -m fi/le &&
echo resurrect the conflict &&
grep "^=======" fi/le &&
echo reresolve the conflict &&
git rerere &&
test "z$(cat fi/le)" = zdifferent &&
echo register the resolution again &&
git add fi/le &&
check_resolve_undo kept fi/le initial:fi/le second:fi/le third:fi/le &&
test -z "$(git ls-files -u)" &&
git rerere forget fi/le &&
! test -f .git/rr-cache/$rerere_id/postimage &&
tr "\0" "\n" <.git/MERGE_RR >actual &&
echo "$rerere_id fi/le" >expect &&
test_cmp expect actual
HEAD is now at 9a00f99 second
HEAD is now at 9a00f99 second
Auto-merging fi/le
CONFLICT (content): Merge conflict in fi/le
Recorded preimage for 'fi/le'
Automatic merge failed; fix conflicts and then commit the result.
merge does not leave anything
resolving records
record the resolution
Recorded resolution for 'fi/le'.
Recreated 1 merge conflict
resurrect the conflict
=======
reresolve the conflict
Resolved 'fi/le' using previous resolution.
register the resolution again
Updated preimage for 'fi/le'
Forgot resolution for 'fi/le'
ok 7 - rerere and rerere forget
expecting success of 2030.8 'rerere and rerere forget (subdirectory)':
rm -fr .git/rr-cache &&
mkdir .git/rr-cache &&
prime_resolve_undo &&
echo record the resolution &&
(cd fi && git rerere) &&
rerere_id=$(cd .git/rr-cache && echo */postimage) &&
rerere_id=${rerere_id%/postimage} &&
test -f .git/rr-cache/$rerere_id/postimage &&
(cd fi && git checkout -m le) &&
echo resurrect the conflict &&
grep "^=======" fi/le &&
echo reresolve the conflict &&
(cd fi && git rerere) &&
test "z$(cat fi/le)" = zdifferent &&
echo register the resolution again &&
(cd fi && git add le) &&
check_resolve_undo kept fi/le initial:fi/le second:fi/le third:fi/le &&
test -z "$(git ls-files -u)" &&
(cd fi && git rerere forget le) &&
! test -f .git/rr-cache/$rerere_id/postimage &&
tr "\0" "\n" <.git/MERGE_RR >actual &&
echo "$rerere_id fi/le" >expect &&
test_cmp expect actual
HEAD is now at 9a00f99 second
HEAD is now at 9a00f99 second
Auto-merging fi/le
CONFLICT (content): Merge conflict in fi/le
Recorded preimage for 'fi/le'
Automatic merge failed; fix conflicts and then commit the result.
merge does not leave anything
resolving records
record the resolution
Recorded resolution for 'fi/le'.
Recreated 1 merge conflict
resurrect the conflict
=======
reresolve the conflict
Resolved 'fi/le' using previous resolution.
register the resolution again
Updated preimage for 'fi/le'
Forgot resolution for 'fi/le'
ok 8 - rerere and rerere forget (subdirectory)
expecting success of 2030.9 'rerere forget (binary)':
git checkout -f side &&
test_commit --printf binary binary "a\0c" &&
test_must_fail git merge second &&
git rerere forget binary
Previous HEAD position was 9a00f99 second
Switched to branch 'side'
[side d884667] binary
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
warning: Cannot merge binary files: binary (HEAD vs. second)
Auto-merging binary
CONFLICT (content): Merge conflict in binary
Auto-merging fi/le
CONFLICT (content): Merge conflict in fi/le
Recorded preimage for 'fi/le'
Automatic merge failed; fix conflicts and then commit the result.
error: could not parse conflict hunks in 'binary'
ok 9 - rerere forget (binary)
expecting success of 2030.10 'rerere forget (add-add conflict)':
git checkout -f main &&
echo main >add-differently &&
git add add-differently &&
git commit -m "add differently" &&
test_must_fail git merge fifth &&
git rerere forget add-differently 2>actual &&
test_i18ngrep "no remembered" actual
Switched to branch 'main'
[main 8751f38] add differently
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 add-differently
Auto-merging add-differently
CONFLICT (add/add): Merge conflict in add-differently
Auto-merging fi/le
CONFLICT (content): Merge conflict in fi/le
Recorded preimage for 'add-differently'
Recorded preimage for 'fi/le'
Automatic merge failed; fix conflicts and then commit the result.
error: no remembered resolution for 'add-differently'
ok 10 - rerere forget (add-add conflict)
expecting success of 2030.11 'resolve-undo keeps blobs from gc':
git checkout -f main &&
# First make sure we do not have any cruft left in the object store
git repack -a -d &&
git prune --expire=now &&
git prune-packed &&
git gc --prune=now &&
git fsck --unreachable >cruft &&
test_must_be_empty cruft &&
# Now add three otherwise unreferenced blob objects to the index
git reset --hard &&
B1=$(echo "resolve undo test data 1" | git hash-object -w --stdin) &&
B2=$(echo "resolve undo test data 2" | git hash-object -w --stdin) &&
B3=$(echo "resolve undo test data 3" | git hash-object -w --stdin) &&
git update-index --add --index-info <<-EOF &&
100644 $B1 1 frotz
100644 $B2 2 frotz
100644 $B3 3 frotz
EOF
# These three blob objects are reachable (only) from the index
git fsck --unreachable >cruft &&
test_must_be_empty cruft &&
# and they should be protected from GC
git gc --prune=now &&
git cat-file -e $B1 &&
git cat-file -e $B2 &&
git cat-file -e $B3 &&
# Now resolve the conflicted path
B0=$(echo "resolve undo test data 0" | git hash-object -w --stdin) &&
git update-index --add --cacheinfo 100644,$B0,frotz &&
# These three blob objects are now reachable only from the resolve-undo
git fsck --unreachable >cruft &&
test_must_be_empty cruft &&
# and they should survive GC
git gc --prune=now &&
git cat-file -e $B0 &&
git cat-file -e $B1 &&
git cat-file -e $B2 &&
git cat-file -e $B3 &&
# Now we switch away, which nukes resolve-undo, and
# blobs B0..B3 would become dangling. fsck should
# notice that they are now unreachable.
git checkout -f side &&
git fsck --unreachable >cruft &&
sort cruft >actual &&
sort <<-EOF >expect &&
unreachable blob $B0
unreachable blob $B1
unreachable blob $B2
unreachable blob $B3
EOF
test_cmp expect actual &&
# And they should go away when gc runs.
git gc --prune=now &&
git fsck --unreachable >cruft &&
test_must_be_empty cruft &&
test_must_fail git cat-file -e $B0 &&
test_must_fail git cat-file -e $B1 &&
test_must_fail git cat-file -e $B2 &&
test_must_fail git cat-file -e $B3
Already on 'main'
HEAD is now at 8751f38 add differently
Switched to branch 'side'
ok 11 - resolve-undo keeps blobs from gc
# passed all 11 test(s)
1..11
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2050-git-dir-relative.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2050-git-dir-relative/.git/
expecting success of 2050.1 'Setting up post-commit hook':
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 of 2050.2 'post-commit hook used ordinarily':
echo initial >top &&
git add top &&
git commit -m initial &&
test -r "${COMMIT_FILE}"
Post commit hook was called.
[master (root-commit) 0619340] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 top
ok 2 - post-commit hook used ordinarily
expecting success of 2050.3 'post-commit-hook created and used from top dir':
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.
[master fc38a58] topcommit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 3 - post-commit-hook created and used from top dir
expecting success of 2050.4 'post-commit-hook from sub dir':
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.
[master ca7703f] subcommit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 4 - post-commit-hook from sub dir
# passed all 4 test(s)
1..4
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2060-switch.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2060-switch/.git/
expecting success of 2060.1 'setup':
test_commit first &&
git branch first-branch &&
test_commit second &&
test_commit third &&
git remote add origin nohost:/nopath &&
git update-ref refs/remotes/origin/foo first-branch
[main (root-commit) 50e526b] first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 first.t
[main d662100] second
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 second.t
[main cd7036d] third
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 third.t
ok 1 - setup
expecting success of 2060.2 'switch branch no arguments':
test_must_fail git switch
fatal: missing branch or commit argument
ok 2 - switch branch no arguments
expecting success of 2060.3 'switch branch':
git switch first-branch &&
test_path_is_missing second.t
Switched to branch 'first-branch'
ok 3 - switch branch
expecting success of 2060.4 'switch and detach':
test_when_finished git switch main &&
test_must_fail git switch main^{commit} &&
git switch --detach main^{commit} &&
test_must_fail git symbolic-ref HEAD
fatal: a branch is expected, got commit 'main^{commit}'
hint: If you want to detach HEAD at the commit, try again with the --detach option.
HEAD is now at cd7036d third
fatal: ref HEAD is not a symbolic ref
Switched to branch 'main'
ok 4 - switch and detach
expecting success of 2060.5 'suggestion to detach':
test_must_fail git switch main^{commit} 2>stderr &&
grep "try again with the --detach option" stderr
hint: If you want to detach HEAD at the commit, try again with the --detach option.
ok 5 - suggestion to detach
expecting success of 2060.6 'suggestion to detach is suppressed with advice.suggestDetachingHead=false':
test_config advice.suggestDetachingHead false &&
test_must_fail git switch main^{commit} 2>stderr &&
! grep "try again with the --detach option" stderr
ok 6 - suggestion to detach is suppressed with advice.suggestDetachingHead=false
expecting success of 2060.7 'switch and detach current branch':
test_when_finished git switch main &&
git switch main &&
git switch --detach &&
test_must_fail git symbolic-ref HEAD
Already on 'main'
HEAD is now at cd7036d third
fatal: ref HEAD is not a symbolic ref
Switched to branch 'main'
ok 7 - switch and detach current branch
expecting success of 2060.8 'switch and create branch':
test_when_finished git switch main &&
git switch -c temp main^ &&
test_cmp_rev main^ refs/heads/temp &&
echo refs/heads/temp >expected-branch &&
git symbolic-ref HEAD >actual-branch &&
test_cmp expected-branch actual-branch
Switched to a new branch 'temp'
Switched to branch 'main'
ok 8 - switch and create branch
expecting success of 2060.9 'force create branch from HEAD':
test_when_finished git switch main &&
git switch --detach main &&
test_must_fail git switch -c temp &&
git switch -C temp &&
test_cmp_rev main refs/heads/temp &&
echo refs/heads/temp >expected-branch &&
git symbolic-ref HEAD >actual-branch &&
test_cmp expected-branch actual-branch
HEAD is now at cd7036d third
fatal: a branch named 'temp' already exists
Switched to and reset branch 'temp'
Switched to branch 'main'
ok 9 - force create branch from HEAD
expecting success of 2060.10 'new orphan branch from empty':
test_when_finished git switch main &&
test_must_fail git switch --orphan new-orphan HEAD &&
git switch --orphan new-orphan &&
test_commit orphan &&
git cat-file commit refs/heads/new-orphan >commit &&
! grep ^parent commit &&
git ls-files >tracked-files &&
echo orphan.t >expected &&
test_cmp expected tracked-files
fatal: '--orphan' cannot take <start-point>
Switched to a new branch 'new-orphan'
[new-orphan (root-commit) 11bb70e] orphan
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 orphan.t
Switched to branch 'main'
ok 10 - new orphan branch from empty
expecting success of 2060.11 'orphan branch works with --discard-changes':
test_when_finished git switch main &&
echo foo >foo.txt &&
git switch --discard-changes --orphan new-orphan2 &&
git ls-files >tracked-files &&
test_must_be_empty tracked-files
Switched to a new branch 'new-orphan2'
Switched to branch 'main'
ok 11 - orphan branch works with --discard-changes
expecting success of 2060.12 'switching ignores file of same branch name':
test_when_finished git switch main &&
: >first-branch &&
git switch first-branch &&
echo refs/heads/first-branch >expected &&
git symbolic-ref HEAD >actual &&
test_cmp expected actual
Switched to branch 'first-branch'
Switched to branch 'main'
ok 12 - switching ignores file of same branch name
expecting success of 2060.13 'guess and create branch':
test_when_finished git switch main &&
test_must_fail git switch --no-guess foo &&
test_config checkout.guess false &&
test_must_fail git switch foo &&
test_config checkout.guess true &&
git switch foo &&
echo refs/heads/foo >expected &&
git symbolic-ref HEAD >actual &&
test_cmp expected actual
fatal: invalid reference: foo
fatal: invalid reference: foo
Switched to a new branch 'foo'
branch 'foo' set up to track 'origin/foo'.
Switched to branch 'main'
ok 13 - guess and create branch
expecting success of 2060.14 'not switching when something is in progress':
test_when_finished rm -f .git/MERGE_HEAD &&
# fake a merge-in-progress
cp .git/HEAD .git/MERGE_HEAD &&
test_must_fail git switch -d @^
fatal: cannot switch branch while merging
Consider "git merge --quit" or "git worktree add".
ok 14 - not switching when something is in progress
expecting success of 2060.15 'tracking info copied with autoSetupMerge=inherit':
# default config does not copy tracking info
git switch -c foo-no-inherit foo &&
test_cmp_config "" --default "" branch.foo-no-inherit.remote &&
test_cmp_config "" --default "" branch.foo-no-inherit.merge &&
# with --track=inherit, we copy tracking info from foo
git switch --track=inherit -c foo2 foo &&
test_cmp_config origin branch.foo2.remote &&
test_cmp_config refs/heads/foo branch.foo2.merge &&
# with autoSetupMerge=inherit, we do the same
test_config branch.autoSetupMerge inherit &&
git switch -c foo3 foo &&
test_cmp_config origin branch.foo3.remote &&
test_cmp_config refs/heads/foo branch.foo3.merge &&
# with --track, we override autoSetupMerge
git switch --track -c foo4 foo &&
test_cmp_config . branch.foo4.remote &&
test_cmp_config refs/heads/foo branch.foo4.merge &&
# and --track=direct does as well
git switch --track=direct -c foo5 foo &&
test_cmp_config . branch.foo5.remote &&
test_cmp_config refs/heads/foo branch.foo5.merge &&
# no tracking info to inherit from main
git switch -c main2 main &&
test_cmp_config "" --default "" branch.main2.remote &&
test_cmp_config "" --default "" branch.main2.merge
Switched to a new branch 'foo-no-inherit'
Switched to a new branch 'foo2'
branch 'foo2' set up to track 'origin/foo'.
Switched to a new branch 'foo3'
branch 'foo3' set up to track 'origin/foo'.
Switched to a new branch 'foo4'
branch 'foo4' set up to track 'foo'.
Switched to a new branch 'foo5'
branch 'foo5' set up to track 'foo'.
warning: asked to inherit tracking from 'main', but no remote is set
Switched to a new branch 'main2'
ok 15 - tracking info copied with autoSetupMerge=inherit
expecting success of 2060.16 'switch back when temporarily detached and checked out elsewhere ':
test_when_finished "
git worktree remove wt1 ||:
git worktree remove wt2 ||:
git checkout - ||:
git branch -D shared ||:
" &&
git checkout -b shared &&
test_commit shared-first &&
HASH1=$(git rev-parse --verify HEAD) &&
test_commit shared-second &&
test_commit shared-third &&
HASH2=$(git rev-parse --verify HEAD) &&
git worktree add wt1 -f shared &&
git -C wt1 bisect start &&
git -C wt1 bisect good $HASH1 &&
git -C wt1 bisect bad $HASH2 &&
git worktree add wt2 -f shared &&
git -C wt2 bisect start &&
git -C wt2 bisect good $HASH1 &&
git -C wt2 bisect bad $HASH2 &&
# we test in both worktrees to ensure that works
# as expected with "first" and "next" worktrees
test_must_fail git -C wt1 switch shared &&
git -C wt1 switch --ignore-other-worktrees shared &&
test_must_fail git -C wt2 switch shared &&
git -C wt2 switch --ignore-other-worktrees shared
Switched to a new branch 'shared'
[shared 814c97a] shared-first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 shared-first.t
[shared 7162996] shared-second
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 shared-second.t
[shared 90dda28] shared-third
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 shared-third.t
Preparing worktree (checking out 'shared')
HEAD is now at 90dda28 shared-third
status: waiting for both good and bad commits
status: waiting for bad commit, 1 good commit known
Bisecting: 0 revisions left to test after this (roughly 0 steps)
[716299614285626473e2ba3b8caf8b7633592842] shared-second
Preparing worktree (checking out 'shared')
HEAD is now at 90dda28 shared-third
status: waiting for both good and bad commits
status: waiting for bad commit, 1 good commit known
Bisecting: 0 revisions left to test after this (roughly 0 steps)
[716299614285626473e2ba3b8caf8b7633592842] shared-second
warning: you are switching branch while bisecting
fatal: 'shared' is already checked out at '/<<PKGBUILDDIR>>/t/trash directory.t2060-switch'
warning: you are switching branch while bisecting
Previous HEAD position was 7162996 shared-second
Switched to branch 'shared'
warning: you are switching branch while bisecting
fatal: 'shared' is already checked out at '/<<PKGBUILDDIR>>/t/trash directory.t2060-switch'
warning: you are switching branch while bisecting
Previous HEAD position was 7162996 shared-second
Switched to branch 'shared'
Switched to branch 'main2'
Deleted branch shared (was 90dda28).
ok 16 - switch back when temporarily detached and checked out elsewhere
# passed all 16 test(s)
1..16
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2070-restore.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2070-restore/.git/
expecting success of 2070.1 'setup':
test_commit first &&
echo first-and-a-half >>first.t &&
git add first.t &&
test_commit second &&
echo one >one &&
echo two >two &&
echo untracked >untracked &&
echo ignored >ignored &&
echo /ignored >.gitignore &&
git add one two .gitignore &&
git update-ref refs/heads/one main
[main (root-commit) 50e526b] first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 first.t
[main a46c920] second
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 second.t
ok 1 - setup
expecting success of 2070.2 'restore without pathspec is not ok':
test_must_fail git restore &&
test_must_fail git restore --source=first
fatal: you must specify path(s) to restore
fatal: you must specify path(s) to restore
ok 2 - restore without pathspec is not ok
expecting success of 2070.3 'restore a file, ignoring branch of same name':
cat one >expected &&
echo dirty >>one &&
git restore one &&
test_cmp expected one
ok 3 - restore a file, ignoring branch of same name
expecting success of 2070.4 'restore a file on worktree from another ref':
test_when_finished git reset --hard &&
git cat-file blob first:./first.t >expected &&
git restore --source=first first.t &&
test_cmp expected first.t &&
git cat-file blob HEAD:./first.t >expected &&
git show :first.t >actual &&
test_cmp expected actual
HEAD is now at a46c920 second
ok 4 - restore a file on worktree from another ref
expecting success of 2070.5 'restore a file in the index from another ref':
test_when_finished git reset --hard &&
git cat-file blob first:./first.t >expected &&
git restore --source=first --staged first.t &&
git show :first.t >actual &&
test_cmp expected actual &&
git cat-file blob HEAD:./first.t >expected &&
test_cmp expected first.t
HEAD is now at a46c920 second
ok 5 - restore a file in the index from another ref
expecting success of 2070.6 'restore a file in both the index and worktree from another ref':
test_when_finished git reset --hard &&
git cat-file blob first:./first.t >expected &&
git restore --source=first --staged --worktree first.t &&
git show :first.t >actual &&
test_cmp expected actual &&
test_cmp expected first.t
HEAD is now at a46c920 second
ok 6 - restore a file in both the index and worktree from another ref
expecting success of 2070.7 'restore --staged uses HEAD as source':
test_when_finished git reset --hard &&
git cat-file blob :./first.t >expected &&
echo index-dirty >>first.t &&
git add first.t &&
git restore --staged first.t &&
git cat-file blob :./first.t >actual &&
test_cmp expected actual
HEAD is now at a46c920 second
ok 7 - restore --staged uses HEAD as source
expecting success of 2070.8 'restore --worktree --staged uses HEAD as source':
test_when_finished git reset --hard &&
git show HEAD:./first.t >expected &&
echo dirty >>first.t &&
git add first.t &&
git restore --worktree --staged first.t &&
git show :./first.t >actual &&
test_cmp expected actual &&
test_cmp expected first.t
HEAD is now at a46c920 second
ok 8 - restore --worktree --staged uses HEAD as source
expecting success of 2070.9 'restore --ignore-unmerged ignores unmerged entries':
git init unmerged &&
(
cd unmerged &&
echo one >unmerged &&
echo one >common &&
git add unmerged common &&
git commit -m common &&
git switch -c first &&
echo first >unmerged &&
git commit -am first &&
git switch -c second main &&
echo second >unmerged &&
git commit -am second &&
test_must_fail git merge first &&
echo dirty >>common &&
test_must_fail git restore . &&
git restore --ignore-unmerged --quiet . >output 2>&1 &&
git diff common >diff-output &&
test_must_be_empty output &&
test_must_be_empty diff-output
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2070-restore/unmerged/.git/
[main (root-commit) b83edd8] common
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 common
create mode 100644 unmerged
Switched to a new branch 'first'
[first 753ae86] first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to a new branch 'second'
[second 06de6fa] second
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Auto-merging unmerged
CONFLICT (content): Merge conflict in unmerged
Automatic merge failed; fix conflicts and then commit the result.
error: path 'unmerged' is unmerged
ok 9 - restore --ignore-unmerged ignores unmerged entries
expecting success of 2070.10 'restore --staged adds deleted intent-to-add file back to index':
echo "nonempty" >nonempty &&
>empty &&
git add nonempty empty &&
git commit -m "create files to be deleted" &&
git rm --cached nonempty empty &&
git add -N nonempty empty &&
git restore --staged nonempty empty &&
git diff --cached --exit-code
[main 94e3084] create files to be deleted
Author: A U Thor <author@example.com>
2 files changed, 1 insertion(+)
create mode 100644 empty
create mode 100644 nonempty
rm 'empty'
rm 'nonempty'
ok 10 - restore --staged adds deleted intent-to-add file back to index
expecting success of 2070.11 'restore --staged invalidates cache tree for deletions':
test_when_finished git reset --hard &&
>new1 &&
>new2 &&
git add new1 new2 &&
# It is important to commit and then reset here, so that the index
# contains a valid cache-tree for the "both" tree.
git commit -m both &&
git reset --soft HEAD^ &&
git restore --staged new1 &&
git commit -m "just new2" &&
git rev-parse HEAD:new2 &&
test_must_fail git rev-parse HEAD:new1
[main 19f4790] both
Author: A U Thor <author@example.com>
2 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 new1
create mode 100644 new2
[main 2c4724a] just new2
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 new2
e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
fatal: path 'new1' exists on disk, but not in 'HEAD'
HEAD:new1
HEAD is now at 2c4724a just new2
ok 11 - restore --staged invalidates cache tree for deletions
expecting success of 2070.12 'restore with merge options rejects --staged':
for opts in \
"--staged --ours" \
"--staged --theirs" \
"--staged --merge" \
"--staged --conflict=diff3" \
"--staged --worktree --ours" \
"--staged --worktree --theirs" \
"--staged --worktree --merge" \
"--staged --worktree --conflict=zdiff3"
do
test_must_fail git restore $opts . 2>err &&
grep "cannot be used with --staged" err || return
done
fatal: '--ours' or '--theirs' cannot be used with --staged
fatal: '--ours' or '--theirs' cannot be used with --staged
fatal: '--merge' or '--conflict' cannot be used with --staged
fatal: '--merge' or '--conflict' cannot be used with --staged
fatal: '--ours' or '--theirs' cannot be used with --staged
fatal: '--ours' or '--theirs' cannot be used with --staged
fatal: '--merge' or '--conflict' cannot be used with --staged
fatal: '--merge' or '--conflict' cannot be used with --staged
ok 12 - restore with merge options rejects --staged
# passed all 12 test(s)
1..12
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2071-restore-patch.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2071-restore-patch/.git/
expecting success of 2071.1 'setup':
mkdir dir &&
echo parent >dir/foo &&
echo dummy >bar &&
git add bar dir/foo &&
git commit -m initial &&
test_tick &&
test_commit second dir/foo head &&
set_and_save_state bar bar_work bar_index &&
save_head
[master (root-commit) 758b165] initial
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 bar
create mode 100644 dir/foo
[master 3319288] second
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 1 - setup
expecting success of 2071.2 'restore -p without pathspec is fine':
echo q >cmd &&
git restore -p <cmd
diff --git a/bar b/bar
index 7780244..8c999e6 100644
--- a/bar
+++ b/bar
@@ -1 +1 @@
-bar_index
+bar_work
(1/1) Discard this hunk from worktree [y,n,q,a,d,e,?]?
ok 2 - restore -p without pathspec is fine
expecting success of 2071.3 'saying "n" does nothing':
set_and_save_state dir/foo work head &&
test_write_lines n n | git restore -p &&
verify_saved_state bar &&
verify_saved_state dir/foo
diff --git a/bar b/bar
index 7780244..8c999e6 100644
--- a/bar
+++ b/bar
@@ -1 +1 @@
-bar_index
+bar_work
(1/1) Discard this hunk from worktree [y,n,q,a,d,e,?]?
diff --git a/dir/foo b/dir/foo
index 564b12f..b8f99f5 100644
--- a/dir/foo
+++ b/dir/foo
@@ -1 +1 @@
-head
+work
(1/1) Discard this hunk from worktree [y,n,q,a,d,e,?]?
ok 3 - saying "n" does nothing
expecting success of 2071.4 'git restore -p':
set_and_save_state dir/foo work head &&
test_write_lines n y | git restore -p &&
verify_saved_state bar &&
verify_state dir/foo head head
diff --git a/bar b/bar
index 7780244..8c999e6 100644
--- a/bar
+++ b/bar
@@ -1 +1 @@
-bar_index
+bar_work
(1/1) Discard this hunk from worktree [y,n,q,a,d,e,?]?
diff --git a/dir/foo b/dir/foo
index 564b12f..b8f99f5 100644
--- a/dir/foo
+++ b/dir/foo
@@ -1 +1 @@
-head
+work
(1/1) Discard this hunk from worktree [y,n,q,a,d,e,?]?
ok 4 - git restore -p
expecting success of 2071.5 'git restore -p with staged changes':
set_state dir/foo work index &&
test_write_lines n y | git restore -p &&
verify_saved_state bar &&
verify_state dir/foo index index
diff --git a/bar b/bar
index 7780244..8c999e6 100644
--- a/bar
+++ b/bar
@@ -1 +1 @@
-bar_index
+bar_work
(1/1) Discard this hunk from worktree [y,n,q,a,d,e,?]?
diff --git a/dir/foo b/dir/foo
index 9015a7a..b8f99f5 100644
--- a/dir/foo
+++ b/dir/foo
@@ -1 +1 @@
-index
+work
(1/1) Discard this hunk from worktree [y,n,q,a,d,e,?]?
ok 5 - git restore -p with staged changes
expecting success of 2071.6 'git restore -p --source=HEAD':
set_state dir/foo work index &&
# the third n is to get out in case it mistakenly does not apply
test_write_lines n y n | git restore -p --source=HEAD &&
verify_saved_state bar &&
verify_state dir/foo head index
diff --git a/bar b/bar
index 421376d..8c999e6 100644
--- a/bar
+++ b/bar
@@ -1 +1 @@
-dummy
+bar_work
(1/1) Discard this hunk from worktree [y,n,q,a,d,e,?]?
diff --git a/dir/foo b/dir/foo
index 564b12f..b8f99f5 100644
--- a/dir/foo
+++ b/dir/foo
@@ -1 +1 @@
-head
+work
(1/1) Discard this hunk from worktree [y,n,q,a,d,e,?]?
ok 6 - git restore -p --source=HEAD
expecting success of 2071.7 'git restore -p --source=HEAD^':
set_state dir/foo work index &&
# the third n is to get out in case it mistakenly does not apply
test_write_lines n y n | git restore -p --source=HEAD^ &&
verify_saved_state bar &&
verify_state dir/foo parent index
diff --git b/bar a/bar
index 8c999e6..421376d 100644
--- b/bar
+++ a/bar
@@ -1 +1 @@
-bar_work
+dummy
(1/1) Apply this hunk to worktree [y,n,q,a,d,e,?]?
diff --git b/dir/foo a/dir/foo
index b8f99f5..9676f5b 100644
--- b/dir/foo
+++ a/dir/foo
@@ -1 +1 @@
-work
+parent
(1/1) Apply this hunk to worktree [y,n,q,a,d,e,?]?
ok 7 - git restore -p --source=HEAD^
expecting success of 2071.8 'git restore -p --source=HEAD^...':
set_state dir/foo work index &&
# the third n is to get out in case it mistakenly does not apply
test_write_lines n y n | git restore -p --source=HEAD^... &&
verify_saved_state bar &&
verify_state dir/foo parent index
diff --git b/bar a/bar
index 8c999e6..421376d 100644
--- b/bar
+++ a/bar
@@ -1 +1 @@
-bar_work
+dummy
(1/1) Apply this hunk to worktree [y,n,q,a,d,e,?]?
diff --git b/dir/foo a/dir/foo
index b8f99f5..9676f5b 100644
--- b/dir/foo
+++ a/dir/foo
@@ -1 +1 @@
-work
+parent
(1/1) Apply this hunk to worktree [y,n,q,a,d,e,?]?
ok 8 - git restore -p --source=HEAD^...
expecting success of 2071.9 'git restore -p handles deletion':
set_state dir/foo work index &&
rm dir/foo &&
test_write_lines n y | git restore -p &&
verify_saved_state bar &&
verify_state dir/foo index index
diff --git a/bar b/bar
index 7780244..8c999e6 100644
--- a/bar
+++ b/bar
@@ -1 +1 @@
-bar_index
+bar_work
(1/1) Discard this hunk from worktree [y,n,q,a,d,e,?]?
diff --git a/dir/foo b/dir/foo
deleted file mode 100644
index 9015a7a..0000000
--- a/dir/foo
+++ /dev/null
@@ -1 +0,0 @@
-index
(1/1) Discard deletion from worktree [y,n,q,a,d,?]?
ok 9 - git restore -p handles deletion
expecting success of 2071.10 'path limiting works: dir':
set_state dir/foo work head &&
test_write_lines y n | git restore -p dir &&
verify_saved_state bar &&
verify_state dir/foo head head
diff --git a/dir/foo b/dir/foo
index 564b12f..b8f99f5 100644
--- a/dir/foo
+++ b/dir/foo
@@ -1 +1 @@
-head
+work
(1/1) Discard this hunk from worktree [y,n,q,a,d,e,?]?
ok 10 - path limiting works: dir
expecting success of 2071.11 'path limiting works: -- dir':
set_state dir/foo work head &&
test_write_lines y n | git restore -p -- dir &&
verify_saved_state bar &&
verify_state dir/foo head head
diff --git a/dir/foo b/dir/foo
index 564b12f..b8f99f5 100644
--- a/dir/foo
+++ b/dir/foo
@@ -1 +1 @@
-head
+work
(1/1) Discard this hunk from worktree [y,n,q,a,d,e,?]?
ok 11 - path limiting works: -- dir
expecting success of 2071.12 'path limiting works: HEAD^ -- dir':
set_state dir/foo work head &&
# the third n is to get out in case it mistakenly does not apply
test_write_lines y n n | git restore -p --source=HEAD^ -- dir &&
verify_saved_state bar &&
verify_state dir/foo parent head
diff --git b/dir/foo a/dir/foo
index b8f99f5..9676f5b 100644
--- b/dir/foo
+++ a/dir/foo
@@ -1 +1 @@
-work
+parent
(1/1) Apply this hunk to worktree [y,n,q,a,d,e,?]?
ok 12 - path limiting works: HEAD^ -- dir
expecting success of 2071.13 'path limiting works: foo inside dir':
set_state dir/foo work head &&
# the third n is to get out in case it mistakenly does not apply
test_write_lines y n n | (cd dir && git restore -p foo) &&
verify_saved_state bar &&
verify_state dir/foo head head
diff --git a/dir/foo b/dir/foo
index 564b12f..b8f99f5 100644
--- a/dir/foo
+++ b/dir/foo
@@ -1 +1 @@
-head
+work
(1/1) Discard this hunk from worktree [y,n,q,a,d,e,?]?
ok 13 - path limiting works: foo inside dir
expecting success of 2071.14 'none of this moved HEAD':
verify_saved_head
ok 14 - none of this moved HEAD
# passed all 14 test(s)
1..14
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2072-restore-pathspec-file.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2072-restore-pathspec-file/.git/
expecting success of 2072.1 'setup':
test_commit file0 &&
mkdir dir1 &&
echo 1 >dir1/file &&
echo 1 >fileA.t &&
echo 1 >fileB.t &&
echo 1 >fileC.t &&
echo 1 >fileD.t &&
git add dir1 fileA.t fileB.t fileC.t fileD.t &&
git commit -m "files 1" &&
echo 2 >dir1/file &&
echo 2 >fileA.t &&
echo 2 >fileB.t &&
echo 2 >fileC.t &&
echo 2 >fileD.t &&
git add dir1 fileA.t fileB.t fileC.t fileD.t &&
git commit -m "files 2" &&
git tag checkpoint
[master (root-commit) ad2e047] file0
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file0.t
[master 17aa47d] files 1
Author: A U Thor <author@example.com>
5 files changed, 5 insertions(+)
create mode 100644 dir1/file
create mode 100644 fileA.t
create mode 100644 fileB.t
create mode 100644 fileC.t
create mode 100644 fileD.t
[master 4c6d82b] files 2
Author: A U Thor <author@example.com>
5 files changed, 5 insertions(+), 5 deletions(-)
ok 1 - setup
expecting success of 2072.2 '--pathspec-from-file from stdin':
restore_checkpoint &&
echo fileA.t | git restore --pathspec-from-file=- --source=HEAD^1 &&
cat >expect <<-\EOF &&
M fileA.t
EOF
verify_expect
HEAD is now at 4c6d82b files 2
ok 2 - --pathspec-from-file from stdin
expecting success of 2072.3 '--pathspec-from-file from file':
restore_checkpoint &&
echo fileA.t >list &&
git restore --pathspec-from-file=list --source=HEAD^1 &&
cat >expect <<-\EOF &&
M fileA.t
EOF
verify_expect
HEAD is now at 4c6d82b files 2
ok 3 - --pathspec-from-file from file
expecting success of 2072.4 'NUL delimiters':
restore_checkpoint &&
printf "fileA.t\0fileB.t\0" | git restore --pathspec-from-file=- --pathspec-file-nul --source=HEAD^1 &&
cat >expect <<-\EOF &&
M fileA.t
M fileB.t
EOF
verify_expect
HEAD is now at 4c6d82b files 2
ok 4 - NUL delimiters
expecting success of 2072.5 'LF delimiters':
restore_checkpoint &&
printf "fileA.t\nfileB.t\n" | git restore --pathspec-from-file=- --source=HEAD^1 &&
cat >expect <<-\EOF &&
M fileA.t
M fileB.t
EOF
verify_expect
HEAD is now at 4c6d82b files 2
ok 5 - LF delimiters
expecting success of 2072.6 'no trailing delimiter':
restore_checkpoint &&
printf "fileA.t\nfileB.t" | git restore --pathspec-from-file=- --source=HEAD^1 &&
cat >expect <<-\EOF &&
M fileA.t
M fileB.t
EOF
verify_expect
HEAD is now at 4c6d82b files 2
ok 6 - no trailing delimiter
expecting success of 2072.7 'CRLF delimiters':
restore_checkpoint &&
printf "fileA.t\r\nfileB.t\r\n" | git restore --pathspec-from-file=- --source=HEAD^1 &&
cat >expect <<-\EOF &&
M fileA.t
M fileB.t
EOF
verify_expect
HEAD is now at 4c6d82b files 2
ok 7 - CRLF delimiters
expecting success of 2072.8 'quotes':
restore_checkpoint &&
cat >list <<-\EOF &&
"file\101.t"
EOF
git restore --pathspec-from-file=list --source=HEAD^1 &&
cat >expect <<-\EOF &&
M fileA.t
EOF
verify_expect
HEAD is now at 4c6d82b files 2
ok 8 - quotes
expecting success of 2072.9 'quotes not compatible with --pathspec-file-nul':
restore_checkpoint &&
cat >list <<-\EOF &&
"file\101.t"
EOF
test_must_fail git restore --pathspec-from-file=list --pathspec-file-nul --source=HEAD^1
HEAD is now at 4c6d82b files 2
error: pathspec '"file\101.t"
' did not match any file(s) known to git
ok 9 - quotes not compatible with --pathspec-file-nul
expecting success of 2072.10 'only touches what was listed':
restore_checkpoint &&
printf "fileB.t\nfileC.t\n" | git restore --pathspec-from-file=- --source=HEAD^1 &&
cat >expect <<-\EOF &&
M fileB.t
M fileC.t
EOF
verify_expect
HEAD is now at 4c6d82b files 2
ok 10 - only touches what was listed
expecting success of 2072.11 'error conditions':
restore_checkpoint &&
echo fileA.t >list &&
>empty_list &&
test_must_fail git restore --pathspec-from-file=list --patch --source=HEAD^1 2>err &&
test_i18ngrep -e "options .--pathspec-from-file. and .--patch. cannot be used together" err &&
test_must_fail git restore --pathspec-from-file=list --source=HEAD^1 -- fileA.t 2>err &&
test_i18ngrep -e ".--pathspec-from-file. and pathspec arguments cannot be used together" err &&
test_must_fail git restore --pathspec-file-nul --source=HEAD^1 2>err &&
test_i18ngrep -e "the option .--pathspec-file-nul. requires .--pathspec-from-file." err &&
test_must_fail git restore --pathspec-from-file=empty_list --source=HEAD^1 2>err &&
test_i18ngrep -e "you must specify path(s) to restore" err
HEAD is now at 4c6d82b files 2
fatal: options '--pathspec-from-file' and '--patch' cannot be used together
fatal: '--pathspec-from-file' and pathspec arguments cannot be used together
fatal: the option '--pathspec-file-nul' requires '--pathspec-from-file'
fatal: you must specify path(s) to restore
ok 11 - error conditions
expecting success of 2072.12 'wildcard pathspec matches file in subdirectory':
restore_checkpoint &&
echo "*file" | git restore --pathspec-from-file=- --source=HEAD^1 &&
cat >expect <<-\EOF &&
M dir1/file
EOF
verify_expect
HEAD is now at 4c6d82b files 2
ok 12 - wildcard pathspec matches file in subdirectory
# passed all 12 test(s)
1..12
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2080-parallel-checkout-basics.sh ***
expecting success of 2080.1 'setup repo for checkout with various types of changes':
test_config_global protocol.file.allow always &&
git init sub &&
(
cd sub &&
git checkout -b B2 &&
echo B2 >file &&
git add file &&
git commit -m file &&
git checkout -b B1 &&
echo B1 >file &&
git add file &&
git commit -m file
) &&
git init various &&
(
cd various &&
git checkout -b B1 &&
mkdir a c e &&
echo a/a >a/a &&
echo b >b &&
echo c/c >c/c &&
test_ln_s_add c d &&
echo e/e >e/e &&
git submodule add ../sub f &&
git submodule add ../sub g &&
test_ln_s_add c h &&
echo "B1 i" >i &&
test_ln_s_add c j &&
git submodule add -b B1 ../sub k &&
mkdir l &&
echo l/l >l/l &&
git add . &&
git commit -m B1 &&
git checkout -b B2 &&
git rm -rf :^.gitmodules :^k &&
mkdir b d f &&
echo a >a &&
echo b/b >b/b &&
test_ln_s_add b c &&
echo d/d >d/d &&
git submodule add ../sub e &&
echo f/f >f/f &&
test_ln_s_add b g &&
git submodule add ../sub h &&
echo "B2 i" >i &&
test_ln_s_add b j &&
git -C k checkout B2 &&
mkdir m &&
echo m/m >m/m &&
git add . &&
git commit -m B2 &&
git checkout --recurse-submodules B1
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2080-parallel-checkout-basics/sub/.git/
Switched to a new branch 'B2'
[B2 (root-commit) 880a0eb] file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
Switched to a new branch 'B1'
[B1 0f06b39] file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2080-parallel-checkout-basics/various/.git/
Switched to a new branch 'B1'
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2080-parallel-checkout-basics/various/f'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2080-parallel-checkout-basics/various/g'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2080-parallel-checkout-basics/various/k'...
done.
[B1 (root-commit) 46a23ce] B1
Author: A U Thor <author@example.com>
13 files changed, 22 insertions(+)
create mode 100644 .gitmodules
create mode 100644 a/a
create mode 100644 b
create mode 100644 c/c
create mode 120000 d
create mode 100644 e/e
create mode 160000 f
create mode 160000 g
create mode 120000 h
create mode 100644 i
create mode 120000 j
create mode 160000 k
create mode 100644 l/l
Switched to a new branch 'B2'
rm 'a/a'
rm 'b'
rm 'c/c'
rm 'd'
rm 'e/e'
rm 'f'
rm 'g'
rm 'h'
rm 'i'
rm 'j'
rm 'l/l'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2080-parallel-checkout-basics/various/e'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2080-parallel-checkout-basics/various/h'...
done.
Switched to a new branch 'B2'
branch 'B2' set up to track 'origin/B2'.
[B2 176cae8] B2
Author: A U Thor <author@example.com>
19 files changed, 17 insertions(+), 17 deletions(-)
create mode 100644 a
delete mode 100644 a/a
delete mode 100644 b
create mode 100644 b/b
create mode 120000 c
delete mode 100644 c/c
delete mode 120000 d
create mode 100644 d/d
rename f => e (100%)
delete mode 100644 e/e
create mode 100644 f/f
mode change 160000 => 120000 g
mode change 120000 => 160000 h
delete mode 100644 l/l
create mode 100644 m/m
Switched to branch 'B1'
ok 1 - setup repo for checkout with various types of changes
expecting success of 2080.2 'sequential checkout':
repo=various_$mode &&
cp -R -P various $repo &&
# The just copied files have more recent timestamps than their
# associated index entries. So refresh the cached timestamps
# to avoid an "entry not up-to-date" error from `git checkout`.
# We only have to do this for the submodules as `git checkout`
# will already refresh the superproject index before performing
# the up-to-date check.
#
git -C $repo submodule foreach "git update-index --refresh" &&
set_checkout_config $workers $threshold &&
test_checkout_workers $expected_workers \
git -C $repo checkout --recurse-submodules B2 &&
verify_checkout $repo
Entering 'f'
Entering 'g'
Entering 'k'
Switched to branch 'B2'
ok 2 - sequential checkout
expecting success of 2080.3 'parallel checkout':
repo=various_$mode &&
cp -R -P various $repo &&
# The just copied files have more recent timestamps than their
# associated index entries. So refresh the cached timestamps
# to avoid an "entry not up-to-date" error from `git checkout`.
# We only have to do this for the submodules as `git checkout`
# will already refresh the superproject index before performing
# the up-to-date check.
#
git -C $repo submodule foreach "git update-index --refresh" &&
set_checkout_config $workers $threshold &&
test_checkout_workers $expected_workers \
git -C $repo checkout --recurse-submodules B2 &&
verify_checkout $repo
Entering 'f'
Entering 'g'
Entering 'k'
Switched to branch 'B2'
ok 3 - parallel checkout
expecting success of 2080.4 'sequential-fallback checkout':
repo=various_$mode &&
cp -R -P various $repo &&
# The just copied files have more recent timestamps than their
# associated index entries. So refresh the cached timestamps
# to avoid an "entry not up-to-date" error from `git checkout`.
# We only have to do this for the submodules as `git checkout`
# will already refresh the superproject index before performing
# the up-to-date check.
#
git -C $repo submodule foreach "git update-index --refresh" &&
set_checkout_config $workers $threshold &&
test_checkout_workers $expected_workers \
git -C $repo checkout --recurse-submodules B2 &&
verify_checkout $repo
Entering 'f'
Entering 'g'
Entering 'k'
Switched to branch 'B2'
ok 4 - sequential-fallback checkout
expecting success of 2080.5 'parallel checkout on clone':
test_config_global protocol.file.allow always &&
repo=various_${mode}_clone &&
set_checkout_config $workers $threshold &&
test_checkout_workers $expected_workers \
git clone --recurse-submodules --branch B2 various $repo &&
verify_checkout $repo
Cloning into 'various_parallel_clone'...
done.
Submodule 'e' (/<<PKGBUILDDIR>>/t/trash directory.t2080-parallel-checkout-basics/sub) registered for path 'e'
Submodule 'h' (/<<PKGBUILDDIR>>/t/trash directory.t2080-parallel-checkout-basics/sub) registered for path 'h'
Submodule 'k' (/<<PKGBUILDDIR>>/t/trash directory.t2080-parallel-checkout-basics/sub) registered for path 'k'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2080-parallel-checkout-basics/various_parallel_clone/e'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2080-parallel-checkout-basics/various_parallel_clone/h'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2080-parallel-checkout-basics/various_parallel_clone/k'...
done.
Submodule path 'e': checked out '0f06b39781e370351121d9fbfe1aed95ed7794c8'
Submodule path 'h': checked out '0f06b39781e370351121d9fbfe1aed95ed7794c8'
Submodule path 'k': checked out '880a0ebc1b2c60184bf29ea8f144cd7c40ab60f8'
ok 5 - parallel checkout on clone
expecting success of 2080.6 'sequential-fallback checkout on clone':
test_config_global protocol.file.allow always &&
repo=various_${mode}_clone &&
set_checkout_config $workers $threshold &&
test_checkout_workers $expected_workers \
git clone --recurse-submodules --branch B2 various $repo &&
verify_checkout $repo
Cloning into 'various_sequential-fallback_clone'...
done.
Submodule 'e' (/<<PKGBUILDDIR>>/t/trash directory.t2080-parallel-checkout-basics/sub) registered for path 'e'
Submodule 'h' (/<<PKGBUILDDIR>>/t/trash directory.t2080-parallel-checkout-basics/sub) registered for path 'h'
Submodule 'k' (/<<PKGBUILDDIR>>/t/trash directory.t2080-parallel-checkout-basics/sub) registered for path 'k'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2080-parallel-checkout-basics/various_sequential-fallback_clone/e'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2080-parallel-checkout-basics/various_sequential-fallback_clone/h'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2080-parallel-checkout-basics/various_sequential-fallback_clone/k'...
done.
Submodule path 'e': checked out '0f06b39781e370351121d9fbfe1aed95ed7794c8'
Submodule path 'h': checked out '0f06b39781e370351121d9fbfe1aed95ed7794c8'
Submodule path 'k': checked out '880a0ebc1b2c60184bf29ea8f144cd7c40ab60f8'
ok 6 - sequential-fallback checkout on clone
expecting success of 2080.7 'compare the working trees':
rm -rf various_*/.git &&
rm -rf various_*/*/.git &&
# We use `git diff` instead of `diff -r` because the latter would
# follow symlinks, and not all `diff` implementations support the
# `--no-dereference` option.
#
git diff --no-index various_sequential various_parallel &&
git diff --no-index various_sequential various_parallel_clone &&
git diff --no-index various_sequential various_sequential-fallback &&
git diff --no-index various_sequential various_sequential-fallback_clone
ok 7 - compare the working trees
expecting success of 2080.8 'submodules can use parallel checkout':
set_checkout_config 2 0 &&
git init super &&
(
cd super &&
git init sub &&
test_commit -C sub A &&
test_commit -C sub B &&
git submodule add ./sub &&
git commit -m sub &&
rm sub/* &&
test_checkout_workers 2 git checkout --recurse-submodules .
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2080-parallel-checkout-basics/super/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2080-parallel-checkout-basics/super/sub/.git/
[master (root-commit) 0ddfaf1] A
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 A.t
[master d9df450] B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 B.t
Adding existing repo at 'sub' to the index
[master (root-commit) 00b6c10] sub
Author: A U Thor <author@example.com>
2 files changed, 4 insertions(+)
create mode 100644 .gitmodules
create mode 160000 sub
Migrating git directory of 'sub' from
'/<<PKGBUILDDIR>>/t/trash directory.t2080-parallel-checkout-basics/super/sub/.git' to
'/<<PKGBUILDDIR>>/t/trash directory.t2080-parallel-checkout-basics/super/.git/modules/sub'
Updated 0 paths from the index
ok 8 - submodules can use parallel checkout
expecting success of 2080.9 'parallel checkout respects --[no]-force':
set_checkout_config 2 0 &&
git init dirty &&
(
cd dirty &&
mkdir D &&
test_commit D/F &&
test_commit F &&
rm -rf D &&
echo changed >D &&
echo changed >F.t &&
# We expect 0 workers because there is nothing to be done
test_checkout_workers 0 git checkout HEAD &&
test_path_is_file D &&
grep changed D &&
grep changed F.t &&
test_checkout_workers 2 git checkout --force HEAD &&
test_path_is_dir D &&
grep D/F D/F.t &&
grep F F.t
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2080-parallel-checkout-basics/dirty/.git/
[master (root-commit) e516e44] D/F
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 D/F.t
[master a9126ab] F
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 F.t
D D/F.t
M F.t
changed
changed
D/F
F
ok 9 - parallel checkout respects --[no]-force
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
expecting success of 2080.10 'parallel checkout checks for symlinks in leading dirs':
set_checkout_config 2 0 &&
git init symlinks &&
(
cd symlinks &&
mkdir D untracked &&
# Commit 2 files to have enough work for 2 parallel workers
test_commit D/A &&
test_commit D/B &&
rm -rf D &&
ln -s untracked D &&
test_checkout_workers 2 git checkout --force HEAD &&
! test -h D &&
grep D/A D/A.t &&
grep D/B D/B.t
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2080-parallel-checkout-basics/symlinks/.git/
[master (root-commit) dce6a14] D/A
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 D/A.t
[master 59586d4] D/B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 D/B.t
D/A
D/B
ok 10 - parallel checkout checks for symlinks in leading dirs
expecting success of 2080.11 '"git checkout ." report should not include failed entries':
test_config_global filter.delay.process \
"test-tool rot13-filter --always-delay --log=delayed.log clean smudge delay" &&
test_config_global filter.delay.required true &&
test_config_global filter.cat.clean cat &&
test_config_global filter.cat.smudge cat &&
test_config_global filter.cat.required true &&
set_checkout_config 2 0 &&
git init failed_entries &&
(
cd failed_entries &&
cat >.gitattributes <<-EOF &&
*delay* filter=delay
parallel-ineligible* filter=cat
EOF
echo a >missing-delay.a &&
echo a >parallel-ineligible.a &&
echo a >parallel-eligible.a &&
echo b >success-delay.b &&
echo b >parallel-ineligible.b &&
echo b >parallel-eligible.b &&
git add -A &&
git commit -m files &&
a_blob="$(git rev-parse :parallel-ineligible.a)" &&
rm .git/objects/$(test_oid_to_path $a_blob) &&
rm *.a *.b &&
test_checkout_workers 2 test_must_fail git checkout . 2>err &&
# All *.b entries should succeed and all *.a entries should fail:
# - missing-delay.a: the delay filter will drop this path
# - parallel-*.a: the blob will be missing
#
grep "Updated 3 paths from the index" err &&
test_stdout_line_count = 3 ls *.b &&
! ls *.a
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2080-parallel-checkout-basics/failed_entries/.git/
[master (root-commit) d1e22ca] files
Author: A U Thor <author@example.com>
7 files changed, 8 insertions(+)
create mode 100644 .gitattributes
create mode 100644 missing-delay.a
create mode 100644 parallel-eligible.a
create mode 100644 parallel-eligible.b
create mode 100644 parallel-ineligible.a
create mode 100644 parallel-ineligible.b
create mode 100644 success-delay.b
Updated 3 paths from the index
ls: cannot access '*.a': No such file or directory
ok 11 - "git checkout ." report should not include failed entries
# passed all 11 test(s)
1..11
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2081-parallel-checkout-collisions.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2081-parallel-checkout-collisions/.git/
checking prerequisite: CASE_INSENSITIVE_FS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-CASE_INSENSITIVE_FS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-CASE_INSENSITIVE_FS" &&
echo good >CamelCase &&
echo bad >camelcase &&
test "$(cat CamelCase)" != good
)
prerequisite CASE_INSENSITIVE_FS not satisfied
ok 1 # skip setup (missing CASE_INSENSITIVE_FS)
ok 2 # skip worker detects basename collision (missing CASE_INSENSITIVE_FS)
ok 3 # skip worker detects dirname collision (missing CASE_INSENSITIVE_FS)
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
ok 4 # skip do not follow symlinks colliding with leading dir (missing CASE_INSENSITIVE_FS of SYMLINKS,CASE_INSENSITIVE_FS)
ok 5 # skip collision report on clone (w/ racy file creation) (missing CASE_INSENSITIVE_FS)
ok 6 # skip collision report on clone (w/ colliding peer after the detected entry) (missing CASE_INSENSITIVE_FS of CASE_INSENSITIVE_FS,!MINGW,!CYGWIN)
# passed all 6 test(s)
1..6
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2082-parallel-checkout-attributes.sh ***
expecting success of 2082.1 'parallel-checkout with ident':
set_checkout_config 2 0 &&
git init ident &&
(
cd ident &&
echo "A ident" >.gitattributes &&
echo "\$Id\$" >A &&
echo "\$Id\$" >B &&
git add -A &&
git commit -m id &&
rm A B &&
test_checkout_workers 2 git reset --hard &&
hexsz=$(test_oid hexsz) &&
grep -E "\\\$Id: [0-9a-f]{$hexsz} \\\$" A &&
grep "\\\$Id\\\$" B
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2082-parallel-checkout-attributes/ident/.git/
[master (root-commit) f770bc4] id
Author: A U Thor <author@example.com>
3 files changed, 3 insertions(+)
create mode 100644 .gitattributes
create mode 100644 A
create mode 100644 B
HEAD is now at f770bc4 id
$Id: 055c8729cdcc372500a08db659c045e16c4409fb $
$Id$
ok 1 - parallel-checkout with ident
expecting success of 2082.2 'parallel-checkout with re-encoding':
set_checkout_config 2 0 &&
git init encoding &&
(
cd encoding &&
echo text >utf8-text &&
write_utf16 <utf8-text >utf16-text &&
echo "A working-tree-encoding=UTF-16" >.gitattributes &&
cp utf16-text A &&
cp utf8-text B &&
git add A B .gitattributes &&
git commit -m encoding &&
# Check that A is stored in UTF-8
git cat-file -p :A >A.internal &&
test_cmp_bin utf8-text A.internal &&
rm A B &&
test_checkout_workers 2 git checkout A B &&
# Check that A (and only A) is re-encoded during checkout
test_cmp_bin utf16-text A &&
test_cmp_bin utf8-text B
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2082-parallel-checkout-attributes/encoding/.git/
checking prerequisite: NO_UTF16_BOM
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-NO_UTF16_BOM" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-NO_UTF16_BOM" &&
test $(printf abc | iconv -f UTF-8 -t UTF-16 | wc -c) = 6
)
prerequisite NO_UTF16_BOM not satisfied
[master (root-commit) eb6a843] encoding
Author: A U Thor <author@example.com>
3 files changed, 3 insertions(+)
create mode 100644 .gitattributes
create mode 100644 A
create mode 100644 B
Updated 2 paths from the index
ok 2 - parallel-checkout with re-encoding
expecting success of 2082.3 'parallel-checkout with eol conversions':
set_checkout_config 2 0 &&
git init eol &&
(
cd eol &&
printf "multi\r\nline\r\ntext" >crlf-text &&
printf "multi\nline\ntext" >lf-text &&
git config core.autocrlf false &&
echo "A eol=crlf" >.gitattributes &&
cp crlf-text A &&
cp lf-text B &&
git add A B .gitattributes &&
git commit -m eol &&
# Check that A is stored with LF format
git cat-file -p :A >A.internal &&
test_cmp_bin lf-text A.internal &&
rm A B &&
test_checkout_workers 2 git checkout A B &&
# Check that A (and only A) is converted to CRLF during checkout
test_cmp_bin crlf-text A &&
test_cmp_bin lf-text B
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2082-parallel-checkout-attributes/eol/.git/
[master (root-commit) cd8ac0d] eol
Author: A U Thor <author@example.com>
3 files changed, 7 insertions(+)
create mode 100644 .gitattributes
create mode 100644 A
create mode 100644 B
Updated 2 paths from the index
ok 3 - parallel-checkout with eol conversions
expecting success of 2082.4 'parallel-checkout and external filter':
set_checkout_config 2 0 &&
git init filter &&
(
cd filter &&
write_script <<-\EOF rot13.sh &&
tr \
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" \
"nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM"
EOF
git config filter.rot13.clean "\"$(pwd)/rot13.sh\"" &&
git config filter.rot13.smudge "\"$(pwd)/rot13.sh\"" &&
git config filter.rot13.required true &&
echo abcd >original &&
echo nopq >rot13 &&
echo "A filter=rot13" >.gitattributes &&
cp original A &&
cp original B &&
cp original C &&
git add A B C .gitattributes &&
git commit -m filter &&
# Check that A (and only A) was cleaned
git cat-file -p :A >A.internal &&
test_cmp rot13 A.internal &&
git cat-file -p :B >B.internal &&
test_cmp original B.internal &&
git cat-file -p :C >C.internal &&
test_cmp original C.internal &&
rm A B C *.internal &&
test_checkout_workers 2 git checkout A B C &&
# Check that A (and only A) was smudged during checkout
test_cmp original A &&
test_cmp original B &&
test_cmp original C
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2082-parallel-checkout-attributes/filter/.git/
[master (root-commit) 9fb524e] filter
Author: A U Thor <author@example.com>
4 files changed, 4 insertions(+)
create mode 100644 .gitattributes
create mode 100644 A
create mode 100644 B
create mode 100644 C
Updated 3 paths from the index
ok 4 - parallel-checkout and external filter
expecting success of 2082.5 'parallel-checkout and delayed checkout':
test_config_global filter.delay.process \
"test-tool rot13-filter --always-delay --log=\"$(pwd)/delayed.log\" clean smudge delay" &&
test_config_global filter.delay.required true &&
echo "abcd" >original &&
echo "nopq" >rot13 &&
git init delayed &&
(
cd delayed &&
echo "*.d filter=delay" >.gitattributes &&
cp ../original W.d &&
cp ../original X.d &&
cp ../original Y &&
cp ../original Z &&
git add -A &&
git commit -m delayed &&
# Check that *.d files were cleaned
git cat-file -p :W.d >W.d.internal &&
test_cmp W.d.internal ../rot13 &&
git cat-file -p :X.d >X.d.internal &&
test_cmp X.d.internal ../rot13 &&
git cat-file -p :Y >Y.internal &&
test_cmp Y.internal ../original &&
git cat-file -p :Z >Z.internal &&
test_cmp Z.internal ../original &&
rm *
) &&
set_checkout_config 2 0 &&
test_checkout_workers 2 git -C delayed checkout -f &&
verify_checkout delayed &&
# Check that the *.d files got to the delay queue and were filtered
grep "smudge W.d .* \[DELAYED\]" delayed.log &&
grep "smudge X.d .* \[DELAYED\]" delayed.log &&
test_cmp delayed/W.d original &&
test_cmp delayed/X.d original &&
# Check that the parallel-eligible entries went to the right queue and
# were not filtered
! grep "smudge Y .* \[DELAYED\]" delayed.log &&
! grep "smudge Z .* \[DELAYED\]" delayed.log &&
test_cmp delayed/Y original &&
test_cmp delayed/Z original
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2082-parallel-checkout-attributes/delayed/.git/
[master (root-commit) 73aa10e] delayed
Author: A U Thor <author@example.com>
5 files changed, 5 insertions(+)
create mode 100644 .gitattributes
create mode 100644 W.d
create mode 100644 X.d
create mode 100644 Y
create mode 100644 Z
IN: smudge W.d treeish=73aa10e96740aa088d4dcea378e1df6a64c5577d blob=0c362bbfebfbae31b3762aada18b9d0119486316 5 [OK] -- [DELAYED]
IN: smudge X.d treeish=73aa10e96740aa088d4dcea378e1df6a64c5577d blob=0c362bbfebfbae31b3762aada18b9d0119486316 5 [OK] -- [DELAYED]
ok 5 - parallel-checkout and delayed checkout
# passed all 5 test(s)
1..5
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2013-checkout-submodule.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/.git/
expecting success of 2013.1 'setup':
mkdir submodule &&
(cd submodule &&
git init &&
test_commit first) &&
git add submodule &&
test_tick &&
git commit -m superproject &&
(cd submodule &&
test_commit second) &&
git add submodule &&
test_tick &&
git commit -m updated.superproject
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule/.git/
[master (root-commit) 50e526b] first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 first.t
warning: adding embedded git repository: submodule
hint: You've added another git repository inside your current repository.
hint: Clones of the outer repository will not contain the contents of
hint: the embedded repository and will not know how to obtain it.
hint: If you meant to add a submodule, use:
hint:
hint: git submodule add <url> submodule
hint:
hint: If you added this path by mistake, you can remove it from the
hint: index with:
hint:
hint: git rm --cached submodule
hint:
hint: See "git help submodule" for more information.
[master (root-commit) 1844aa5] superproject
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 160000 submodule
[master d662100] second
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 second.t
[master 14e674f] updated.superproject
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 1 - setup
expecting success of 2013.2 '"reset <submodule>" updates the index':
git update-index --refresh &&
git diff-files --quiet &&
git diff-index --quiet --cached HEAD &&
git reset HEAD^ submodule &&
test_must_fail git diff-files --quiet &&
git reset submodule &&
git diff-files --quiet
Unstaged changes after reset:
M submodule
ok 2 - "reset <submodule>" updates the index
expecting success of 2013.3 '"checkout <submodule>" updates the index only':
git update-index --refresh &&
git diff-files --quiet &&
git diff-index --quiet --cached HEAD &&
git checkout HEAD^ submodule &&
test_must_fail git diff-files --quiet &&
git checkout HEAD submodule &&
git diff-files --quiet
Updated 0 paths from f0404a9
Updated 0 paths from 29aef3d
ok 3 - "checkout <submodule>" updates the index only
expecting success of 2013.4 '"checkout <submodule>" honors diff.ignoreSubmodules':
git config diff.ignoreSubmodules dirty &&
echo x> submodule/untracked &&
git checkout HEAD >actual 2>&1 &&
test_must_be_empty actual
ok 4 - "checkout <submodule>" honors diff.ignoreSubmodules
expecting success of 2013.5 '"checkout <submodule>" honors submodule.*.ignore from .gitmodules':
git config diff.ignoreSubmodules none &&
git config -f .gitmodules submodule.submodule.path submodule &&
git config -f .gitmodules submodule.submodule.ignore untracked &&
git checkout HEAD >actual 2>&1 &&
test_must_be_empty actual
ok 5 - "checkout <submodule>" honors submodule.*.ignore from .gitmodules
expecting success of 2013.6 '"checkout <submodule>" honors submodule.*.ignore from .git/config':
git config -f .gitmodules submodule.submodule.ignore none &&
git config submodule.submodule.path submodule &&
git config submodule.submodule.ignore all &&
git checkout HEAD >actual 2>&1 &&
test_must_be_empty actual
ok 6 - "checkout <submodule>" honors submodule.*.ignore from .git/config
expecting success of 2013.7 'git checkout --recurse-submodules: added submodule is checked out':
prolog &&
reset_work_tree_to_interested no_submodule &&
(
cd submodule_update &&
git branch -t add_sub1 origin/add_sub1 &&
$command add_sub1 &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1/.git/
[master (root-commit) f401f36] Base inside first submodule
Author: A U Thor <author@example.com>
3 files changed, 4 insertions(+)
create mode 100644 .gitignore
create mode 100644 file1
create mode 100644 file2
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub2/.git/
[master (root-commit) f2c1bb9] nested submodule base
Author: A U Thor <author@example.com>
3 files changed, 4 insertions(+)
create mode 100644 .gitignore
create mode 100644 file1
create mode 100644 file2
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_repo/.git/
[master (root-commit) 3950f7e] Base
Author: A U Thor <author@example.com>
3 files changed, 4 insertions(+)
create mode 100644 .gitignore
create mode 100644 file1
create mode 100644 file2
Switched to a new branch 'add_sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_repo/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_repo/uninitialized_sub'...
done.
[add_sub1 30024d7] Add sub1
Author: A U Thor <author@example.com>
2 files changed, 8 insertions(+)
create mode 100644 .gitmodules
create mode 160000 uninitialized_sub
Switched to a new branch 'remove_sub1'
warning: unable to rmdir 'sub1': Directory not empty
warning: unable to rmdir 'uninitialized_sub': Directory not empty
[remove_sub1 d6f9aa6] Revert "Add sub1"
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
3 files changed, 9 deletions(-)
delete mode 100644 .gitmodules
delete mode 160000 sub1
delete mode 160000 uninitialized_sub
Switched to a new branch 'modify_sub1'
Switched to a new branch 'modifications'
[modifications e6d8148] modified file2 and added file3
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+), 1 deletion(-)
create mode 100644 file3
To /<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1
* [new branch] modifications -> modifications
[modify_sub1 1f84fbc] Modify sub1
Author: A U Thor <author@example.com>
Switched to a new branch 'add_nested_sub'
Switched to a new branch 'add_nested_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_repo/sub1/sub2'...
done.
[add_nested_sub 50491a1] add a nested submodule
Author: A U Thor <author@example.com>
2 files changed, 5 insertions(+)
create mode 100644 .gitmodules
create mode 160000 sub2
[add_nested_sub 6797720] update submodule, that updates a nested submodule
Author: A U Thor <author@example.com>
Switched to a new branch 'modify_sub1_recursively'
Switched to a new branch 'modify_sub1_recursively'
Switched to a new branch 'modify_sub1_recursively'
[modify_sub1_recursively 6788ca3] make a change in nested sub
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file3
[modify_sub1_recursively 6cc4170] update nested sub
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[modify_sub1_recursively 934e1af] update sub1, that updates nested sub
Author: A U Thor <author@example.com>
To /<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1
* [new branch] modify_sub1_recursively -> modify_sub1_recursively
To /<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub2
* [new branch] modify_sub1_recursively -> modify_sub1_recursively
Cleared directory 'sub2'
Submodule 'sub2' (../submodule_update_sub2) unregistered for path 'sub2'
Switched to a new branch 'replace_sub1_with_directory'
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
Previous HEAD position was f401f36 Base inside first submodule
Switched to branch 'modifications'
rm 'sub1'
[replace_sub1_with_directory 43c94e1] Replace sub1 with directory
Author: A U Thor <author@example.com>
5 files changed, 3 insertions(+), 5 deletions(-)
delete mode 160000 sub1
create mode 100644 sub1/file1
create mode 100644 sub1/file2
create mode 100644 sub1/file3
Switched to a new branch 'replace_directory_with_sub1'
[replace_directory_with_sub1 2061bb3] Revert "Replace sub1 with directory"
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
4 files changed, 4 insertions(+), 3 deletions(-)
delete mode 100644 sub1/file1
delete mode 100644 sub1/file2
delete mode 100644 sub1/file3
Switched to a new branch 'replace_sub1_with_file'
rm 'sub1'
[replace_sub1_with_file d4861a4] Replace sub1 with file
Author: A U Thor <author@example.com>
2 files changed, 1 insertion(+), 5 deletions(-)
mode change 160000 => 100644 sub1
Switched to a new branch 'replace_file_with_sub1'
[replace_file_with_sub1 cf98843] Revert "Replace sub1 with file"
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
2 files changed, 5 insertions(+), 1 deletion(-)
mode change 100644 => 160000 sub1
Switched to a new branch 'invalid_sub1'
[invalid_sub1 cea73c0] Invalid sub1 commit
Author: A U Thor <author@example.com>
Switched to a new branch 'valid_sub1'
[valid_sub1 f248045] Revert "Invalid sub1 commit"
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
warning: unable to rmdir 'uninitialized_sub': Directory not empty
Switched to branch 'master'
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
Switched to branch 'add_sub1'
Your branch is up to date with 'origin/add_sub1'.
ok 7 - git checkout --recurse-submodules: added submodule is checked out
expecting success of 2013.8 'git checkout --recurse-submodules: added submodule is checked out in empty dir':
prolog &&
reset_work_tree_to_interested no_submodule &&
(
cd submodule_update &&
mkdir sub1 &&
git branch -t add_sub1 origin/add_sub1 &&
$command add_sub1 &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
Switched to branch 'add_sub1'
Your branch is up to date with 'origin/add_sub1'.
ok 8 - git checkout --recurse-submodules: added submodule is checked out in empty dir
expecting success of 2013.9 'git checkout --recurse-submodules: replace tracked file with submodule checks out submodule':
prolog &&
reset_work_tree_to_interested replace_sub1_with_file &&
(
cd submodule_update &&
git branch -t replace_file_with_sub1 origin/replace_file_with_sub1 &&
$command replace_file_with_sub1 &&
test_superproject_content origin/replace_file_with_sub1 &&
test_submodule_content sub1 origin/replace_file_with_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'replace_sub1_with_file'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
fatal: Needed a single revision
branch 'replace_file_with_sub1' set up to track 'origin/replace_file_with_sub1'.
Switched to branch 'replace_file_with_sub1'
Your branch is up to date with 'origin/replace_file_with_sub1'.
ok 9 - git checkout --recurse-submodules: replace tracked file with submodule checks out submodule
expecting success of 2013.10 'git checkout --recurse-submodules: replace directory with submodule':
prolog &&
reset_work_tree_to_interested replace_sub1_with_directory &&
(
cd submodule_update &&
git branch -t replace_directory_with_sub1 origin/replace_directory_with_sub1 &&
$command replace_directory_with_sub1 &&
test_superproject_content origin/replace_directory_with_sub1 &&
test_submodule_content sub1 origin/replace_directory_with_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'replace_sub1_with_directory'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
fatal: Needed a single revision
branch 'replace_directory_with_sub1' set up to track 'origin/replace_directory_with_sub1'.
Switched to branch 'replace_directory_with_sub1'
Your branch is up to date with 'origin/replace_directory_with_sub1'.
ok 10 - git checkout --recurse-submodules: replace directory with submodule
expecting success of 2013.11 'git checkout --recurse-submodules: nested submodules are checked out':
prolog &&
reset_work_tree_to_interested no_submodule &&
(
cd submodule_update &&
git branch -t modify_sub1_recursively origin/modify_sub1_recursively &&
$command modify_sub1_recursively &&
test_superproject_content origin/modify_sub1_recursively &&
test_submodule_content sub1 origin/modify_sub1_recursively &&
test_submodule_content -C sub1 sub2 origin/modify_sub1_recursively
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'modify_sub1_recursively' set up to track 'origin/modify_sub1_recursively'.
Switched to branch 'modify_sub1_recursively'
Your branch is up to date with 'origin/modify_sub1_recursively'.
ok 11 - git checkout --recurse-submodules: nested submodules are checked out
expecting success of 2013.12 'git checkout --recurse-submodules: removed submodule removes submodules working tree':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git branch -t remove_sub1 origin/remove_sub1 &&
$command remove_sub1 &&
test_superproject_content origin/remove_sub1 &&
! test -e sub1 &&
test_must_fail git config -f .git/modules/sub1/config core.worktree
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
branch 'remove_sub1' set up to track 'origin/remove_sub1'.
Switched to branch 'remove_sub1'
Your branch is up to date with 'origin/remove_sub1'.
ok 12 - git checkout --recurse-submodules: removed submodule removes submodules working tree
expecting success of 2013.13 'git checkout --recurse-submodules: removed submodule absorbs submodules .git directory':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git branch -t remove_sub1 origin/remove_sub1 &&
replace_gitfile_with_git_dir sub1 &&
rm -rf .git/modules &&
$command remove_sub1 &&
test_superproject_content origin/remove_sub1 &&
! test -e sub1 &&
test_git_directory_exists sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
branch 'remove_sub1' set up to track 'origin/remove_sub1'.
Migrating git directory of 'sub1' from
'/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1/.git' to
'/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/.git/modules/sub1'
Switched to branch 'remove_sub1'
Your branch is up to date with 'origin/remove_sub1'.
ok 13 - git checkout --recurse-submodules: removed submodule absorbs submodules .git directory
expecting success of 2013.14 'git checkout --recurse-submodules: replace submodule with a file':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_file origin/replace_sub1_with_file &&
$command replace_sub1_with_file &&
test_superproject_content origin/replace_sub1_with_file &&
test -f sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
Switched to branch 'replace_sub1_with_file'
Your branch is up to date with 'origin/replace_sub1_with_file'.
ok 14 - git checkout --recurse-submodules: replace submodule with a file
checking known breakage of 2013.15 'git checkout --recurse-submodules: replace submodule with a file must fail with untracked files':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_file origin/replace_sub1_with_file &&
: >sub1/untrackedfile &&
test_must_fail $command replace_sub1_with_file &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1 &&
test -f sub1/untracked_file
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
Switched to branch 'replace_sub1_with_file'
Your branch is up to date with 'origin/replace_sub1_with_file'.
test_must_fail: command succeeded: git checkout --recurse-submodules replace_sub1_with_file
not ok 15 - git checkout --recurse-submodules: replace submodule with a file must fail with untracked files # TODO known breakage
expecting success of 2013.16 'git checkout --recurse-submodules: worktrees of nested submodules are removed':
prolog &&
reset_work_tree_to_interested add_nested_sub &&
(
cd submodule_update &&
git branch -t no_submodule origin/no_submodule &&
$command no_submodule &&
test_superproject_content origin/no_submodule &&
test_path_is_missing sub1 &&
test_must_fail git config -f .git/modules/sub1/config core.worktree &&
test_must_fail git config -f .git/modules/sub1/modules/sub2/config core.worktree
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_nested_sub'
branch 'add_nested_sub' set up to track 'origin/add_nested_sub'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '50491a1d91d7be663c2f0e01632adafaa8ad1784'
Submodule 'sub2' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub2) registered for path 'sub1/sub2'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1/sub2'...
done.
Submodule path 'sub1/sub2': checked out 'f2c1bb97d8342b3950c464bac1b708b05cb363c0'
branch 'no_submodule' set up to track 'origin/no_submodule'.
Switched to branch 'no_submodule'
Your branch is up to date with 'origin/no_submodule'.
ok 16 - git checkout --recurse-submodules: worktrees of nested submodules are removed
expecting success of 2013.17 'git checkout --recurse-submodules: modified submodule updates submodule work tree':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git branch -t modify_sub1 origin/modify_sub1 &&
$command modify_sub1 &&
test_superproject_content origin/modify_sub1 &&
test_submodule_content sub1 origin/modify_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
branch 'modify_sub1' set up to track 'origin/modify_sub1'.
Switched to branch 'modify_sub1'
Your branch is up to date with 'origin/modify_sub1'.
ok 17 - git checkout --recurse-submodules: modified submodule updates submodule work tree
expecting success of 2013.18 'git checkout --recurse-submodules: updating to a missing submodule commit fails':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git branch -t invalid_sub1 origin/invalid_sub1 &&
test_must_fail $command invalid_sub1 2>err &&
test_i18ngrep sub1 err &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
branch 'invalid_sub1' set up to track 'origin/invalid_sub1'.
error: Submodule 'sub1' could not be updated.
sub1
ok 18 - git checkout --recurse-submodules: updating to a missing submodule commit fails
expecting success of 2013.19 'git checkout --recurse-submodules: submodule branch is not changed, detach HEAD instead':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git -C sub1 checkout -b keep_branch &&
git -C sub1 rev-parse HEAD >expect &&
git branch -t modify_sub1 origin/modify_sub1 &&
$command modify_sub1 &&
test_superproject_content origin/modify_sub1 &&
test_submodule_content sub1 origin/modify_sub1 &&
git -C sub1 rev-parse keep_branch >actual &&
test_cmp expect actual &&
test_must_fail git -C sub1 symbolic-ref HEAD
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
Switched to a new branch 'keep_branch'
branch 'modify_sub1' set up to track 'origin/modify_sub1'.
Switched to branch 'modify_sub1'
Your branch is up to date with 'origin/modify_sub1'.
fatal: ref HEAD is not a symbolic ref
ok 19 - git checkout --recurse-submodules: submodule branch is not changed, detach HEAD instead
expecting success of 2013.20 'git checkout --recurse-submodules: added submodule doesn't remove untracked file with same name':
prolog &&
reset_work_tree_to_interested no_submodule &&
(
cd submodule_update &&
git branch -t add_sub1 origin/add_sub1 &&
: >sub1 &&
test_must_fail $command add_sub1 &&
test_superproject_content origin/no_submodule &&
test_must_be_empty sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
error: The following untracked working tree files would be overwritten by checkout:
sub1
Please move or remove them before you switch branches.
Aborting
ok 20 - git checkout --recurse-submodules: added submodule doesn't remove untracked file with same name
expecting success of 2013.21 'git checkout --recurse-submodules: added submodule removes an untracked ignored file':
test_when_finished "rm -rf submodule_update/.git/info" &&
prolog &&
reset_work_tree_to_interested no_submodule &&
(
cd submodule_update &&
git branch -t add_sub1 origin/add_sub1 &&
: >sub1 &&
mkdir .git/info &&
echo sub1 >.git/info/exclude &&
$command add_sub1 &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
Switched to branch 'add_sub1'
Your branch is up to date with 'origin/add_sub1'.
ok 21 - git checkout --recurse-submodules: added submodule removes an untracked ignored file
checking known breakage of 2013.22 'git checkout --recurse-submodules: replace submodule with a directory':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_directory origin/replace_sub1_with_directory &&
$command replace_sub1_with_directory &&
test_superproject_content origin/replace_sub1_with_directory &&
test_submodule_content sub1 origin/replace_sub1_with_directory
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
error: The following untracked working tree files would be overwritten by checkout:
sub1/file1
sub1/file2
Please move or remove them before you switch branches.
Aborting
not ok 22 - git checkout --recurse-submodules: replace submodule with a directory # TODO known breakage
checking known breakage of 2013.23 'git checkout --recurse-submodules: replace submodule containing a .git directory with a directory must absorb the git dir':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_directory origin/replace_sub1_with_directory &&
replace_gitfile_with_git_dir sub1 &&
rm -rf .git/modules &&
$command replace_sub1_with_directory &&
test_superproject_content origin/replace_sub1_with_directory &&
test_git_directory_exists sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
error: The following untracked working tree files would be overwritten by checkout:
sub1/file1
sub1/file2
Please move or remove them before you switch branches.
Aborting
not ok 23 - git checkout --recurse-submodules: replace submodule containing a .git directory with a directory must absorb the git dir # TODO known breakage
expecting success of 2013.24 'git checkout --recurse-submodules: replace submodule with a file works ignores ignored files in submodule':
test_when_finished "rm submodule_update/.git/modules/sub1/info/exclude" &&
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
rm -rf .git/modules/sub1/info &&
git branch -t replace_sub1_with_file origin/replace_sub1_with_file &&
mkdir .git/modules/sub1/info &&
echo ignored >.git/modules/sub1/info/exclude &&
: >sub1/ignored &&
$command replace_sub1_with_file &&
test_superproject_content origin/replace_sub1_with_file &&
test -f sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
Switched to branch 'replace_sub1_with_file'
Your branch is up to date with 'origin/replace_sub1_with_file'.
ok 24 - git checkout --recurse-submodules: replace submodule with a file works ignores ignored files in submodule
expecting success of 2013.25 'git -c submodule.recurse=true checkout: modified submodule updates submodule work tree':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git branch -t modify_sub1 origin/modify_sub1 &&
git -c submodule.recurse=true $cmd_args modify_sub1 &&
test_superproject_content origin/modify_sub1 &&
test_submodule_content sub1 origin/modify_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
branch 'modify_sub1' set up to track 'origin/modify_sub1'.
Switched to branch 'modify_sub1'
Your branch is up to date with 'origin/modify_sub1'.
ok 25 - git -c submodule.recurse=true checkout: modified submodule updates submodule work tree
expecting success of 2013.26 'git checkout --recurse-submodules: modified submodule updates submodule recursively':
prolog &&
reset_work_tree_to_interested add_nested_sub &&
(
cd submodule_update &&
git branch -t modify_sub1_recursively origin/modify_sub1_recursively &&
$command modify_sub1_recursively &&
test_superproject_content origin/modify_sub1_recursively &&
test_submodule_content sub1 origin/modify_sub1_recursively &&
test_submodule_content -C sub1 sub2 origin/modify_sub1_recursively
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_nested_sub'
branch 'add_nested_sub' set up to track 'origin/add_nested_sub'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '50491a1d91d7be663c2f0e01632adafaa8ad1784'
Submodule 'sub2' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub2) registered for path 'sub1/sub2'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1/sub2'...
done.
Submodule path 'sub1/sub2': checked out 'f2c1bb97d8342b3950c464bac1b708b05cb363c0'
branch 'modify_sub1_recursively' set up to track 'origin/modify_sub1_recursively'.
Switched to branch 'modify_sub1_recursively'
Your branch is up to date with 'origin/modify_sub1_recursively'.
ok 26 - git checkout --recurse-submodules: modified submodule updates submodule recursively
expecting success of 2013.27 'git checkout -f --recurse-submodules: added submodule is checked out':
prolog &&
reset_work_tree_to_interested no_submodule &&
(
cd submodule_update &&
git branch -t add_sub1 origin/add_sub1 &&
$command add_sub1 &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
Switched to branch 'add_sub1'
Your branch is up to date with 'origin/add_sub1'.
ok 27 - git checkout -f --recurse-submodules: added submodule is checked out
expecting success of 2013.28 'git checkout -f --recurse-submodules: added submodule is checked out in empty dir':
prolog &&
reset_work_tree_to_interested no_submodule &&
(
cd submodule_update &&
mkdir sub1 &&
git branch -t add_sub1 origin/add_sub1 &&
$command add_sub1 &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
Switched to branch 'add_sub1'
Your branch is up to date with 'origin/add_sub1'.
ok 28 - git checkout -f --recurse-submodules: added submodule is checked out in empty dir
expecting success of 2013.29 'git checkout -f --recurse-submodules: replace tracked file with submodule checks out submodule':
prolog &&
reset_work_tree_to_interested replace_sub1_with_file &&
(
cd submodule_update &&
git branch -t replace_file_with_sub1 origin/replace_file_with_sub1 &&
$command replace_file_with_sub1 &&
test_superproject_content origin/replace_file_with_sub1 &&
test_submodule_content sub1 origin/replace_file_with_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'replace_sub1_with_file'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
fatal: Needed a single revision
branch 'replace_file_with_sub1' set up to track 'origin/replace_file_with_sub1'.
Switched to branch 'replace_file_with_sub1'
Your branch is up to date with 'origin/replace_file_with_sub1'.
ok 29 - git checkout -f --recurse-submodules: replace tracked file with submodule checks out submodule
expecting success of 2013.30 'git checkout -f --recurse-submodules: replace directory with submodule':
prolog &&
reset_work_tree_to_interested replace_sub1_with_directory &&
(
cd submodule_update &&
git branch -t replace_directory_with_sub1 origin/replace_directory_with_sub1 &&
$command replace_directory_with_sub1 &&
test_superproject_content origin/replace_directory_with_sub1 &&
test_submodule_content sub1 origin/replace_directory_with_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'replace_sub1_with_directory'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
fatal: Needed a single revision
branch 'replace_directory_with_sub1' set up to track 'origin/replace_directory_with_sub1'.
Switched to branch 'replace_directory_with_sub1'
Your branch is up to date with 'origin/replace_directory_with_sub1'.
ok 30 - git checkout -f --recurse-submodules: replace directory with submodule
expecting success of 2013.31 'git checkout -f --recurse-submodules: nested submodules are checked out':
prolog &&
reset_work_tree_to_interested no_submodule &&
(
cd submodule_update &&
git branch -t modify_sub1_recursively origin/modify_sub1_recursively &&
$command modify_sub1_recursively &&
test_superproject_content origin/modify_sub1_recursively &&
test_submodule_content sub1 origin/modify_sub1_recursively &&
test_submodule_content -C sub1 sub2 origin/modify_sub1_recursively
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'modify_sub1_recursively' set up to track 'origin/modify_sub1_recursively'.
Switched to branch 'modify_sub1_recursively'
Your branch is up to date with 'origin/modify_sub1_recursively'.
ok 31 - git checkout -f --recurse-submodules: nested submodules are checked out
expecting success of 2013.32 'git checkout -f --recurse-submodules: removed submodule removes submodules working tree':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git branch -t remove_sub1 origin/remove_sub1 &&
$command remove_sub1 &&
test_superproject_content origin/remove_sub1 &&
! test -e sub1 &&
test_must_fail git config -f .git/modules/sub1/config core.worktree
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
branch 'remove_sub1' set up to track 'origin/remove_sub1'.
Switched to branch 'remove_sub1'
Your branch is up to date with 'origin/remove_sub1'.
ok 32 - git checkout -f --recurse-submodules: removed submodule removes submodules working tree
expecting success of 2013.33 'git checkout -f --recurse-submodules: removed submodule absorbs submodules .git directory':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git branch -t remove_sub1 origin/remove_sub1 &&
replace_gitfile_with_git_dir sub1 &&
rm -rf .git/modules &&
$command remove_sub1 &&
test_superproject_content origin/remove_sub1 &&
! test -e sub1 &&
test_git_directory_exists sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
branch 'remove_sub1' set up to track 'origin/remove_sub1'.
Migrating git directory of 'sub1' from
'/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1/.git' to
'/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/.git/modules/sub1'
Switched to branch 'remove_sub1'
Your branch is up to date with 'origin/remove_sub1'.
ok 33 - git checkout -f --recurse-submodules: removed submodule absorbs submodules .git directory
expecting success of 2013.34 'git checkout -f --recurse-submodules: replace submodule with a file':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_file origin/replace_sub1_with_file &&
$command replace_sub1_with_file &&
test_superproject_content origin/replace_sub1_with_file &&
test -f sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
Switched to branch 'replace_sub1_with_file'
Your branch is up to date with 'origin/replace_sub1_with_file'.
ok 34 - git checkout -f --recurse-submodules: replace submodule with a file
checking known breakage of 2013.35 'git checkout -f --recurse-submodules: replace submodule with a file must fail with untracked files':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_file origin/replace_sub1_with_file &&
: >sub1/untrackedfile &&
test_must_fail $command replace_sub1_with_file &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1 &&
test -f sub1/untracked_file
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
Switched to branch 'replace_sub1_with_file'
Your branch is up to date with 'origin/replace_sub1_with_file'.
test_must_fail: command succeeded: git checkout -f --recurse-submodules replace_sub1_with_file
not ok 35 - git checkout -f --recurse-submodules: replace submodule with a file must fail with untracked files # TODO known breakage
expecting success of 2013.36 'git checkout -f --recurse-submodules: worktrees of nested submodules are removed':
prolog &&
reset_work_tree_to_interested add_nested_sub &&
(
cd submodule_update &&
git branch -t no_submodule origin/no_submodule &&
$command no_submodule &&
test_superproject_content origin/no_submodule &&
test_path_is_missing sub1 &&
test_must_fail git config -f .git/modules/sub1/config core.worktree &&
test_must_fail git config -f .git/modules/sub1/modules/sub2/config core.worktree
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_nested_sub'
branch 'add_nested_sub' set up to track 'origin/add_nested_sub'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '50491a1d91d7be663c2f0e01632adafaa8ad1784'
Submodule 'sub2' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub2) registered for path 'sub1/sub2'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1/sub2'...
done.
Submodule path 'sub1/sub2': checked out 'f2c1bb97d8342b3950c464bac1b708b05cb363c0'
branch 'no_submodule' set up to track 'origin/no_submodule'.
Switched to branch 'no_submodule'
Your branch is up to date with 'origin/no_submodule'.
ok 36 - git checkout -f --recurse-submodules: worktrees of nested submodules are removed
expecting success of 2013.37 'git checkout -f --recurse-submodules: modified submodule updates submodule work tree':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git branch -t modify_sub1 origin/modify_sub1 &&
$command modify_sub1 &&
test_superproject_content origin/modify_sub1 &&
test_submodule_content sub1 origin/modify_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
branch 'modify_sub1' set up to track 'origin/modify_sub1'.
Switched to branch 'modify_sub1'
Your branch is up to date with 'origin/modify_sub1'.
ok 37 - git checkout -f --recurse-submodules: modified submodule updates submodule work tree
expecting success of 2013.38 'git checkout -f --recurse-submodules: updating to a missing submodule commit fails':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git branch -t invalid_sub1 origin/invalid_sub1 &&
test_must_fail $command invalid_sub1 2>err &&
test_i18ngrep sub1 err &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
branch 'invalid_sub1' set up to track 'origin/invalid_sub1'.
error: Submodule 'sub1' could not be updated.
error: Submodule 'sub1' cannot checkout new HEAD.
ok 38 - git checkout -f --recurse-submodules: updating to a missing submodule commit fails
expecting success of 2013.39 'git checkout -f --recurse-submodules: submodule branch is not changed, detach HEAD instead':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git -C sub1 checkout -b keep_branch &&
git -C sub1 rev-parse HEAD >expect &&
git branch -t modify_sub1 origin/modify_sub1 &&
$command modify_sub1 &&
test_superproject_content origin/modify_sub1 &&
test_submodule_content sub1 origin/modify_sub1 &&
git -C sub1 rev-parse keep_branch >actual &&
test_cmp expect actual &&
test_must_fail git -C sub1 symbolic-ref HEAD
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
Switched to a new branch 'keep_branch'
branch 'modify_sub1' set up to track 'origin/modify_sub1'.
Switched to branch 'modify_sub1'
Your branch is up to date with 'origin/modify_sub1'.
fatal: ref HEAD is not a symbolic ref
ok 39 - git checkout -f --recurse-submodules: submodule branch is not changed, detach HEAD instead
expecting success of 2013.40 'git checkout -f --recurse-submodules: added submodule does remove untracked unignored file with same name when forced':
prolog &&
reset_work_tree_to_interested no_submodule &&
(
cd submodule_update &&
git branch -t add_sub1 origin/add_sub1 &&
>sub1 &&
$command add_sub1 &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
Switched to branch 'add_sub1'
Your branch is up to date with 'origin/add_sub1'.
ok 40 - git checkout -f --recurse-submodules: added submodule does remove untracked unignored file with same name when forced
expecting success of 2013.41 'git checkout -f --recurse-submodules: replace submodule with a directory':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_directory origin/replace_sub1_with_directory &&
$command replace_sub1_with_directory &&
test_superproject_content origin/replace_sub1_with_directory
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
Switched to branch 'replace_sub1_with_directory'
Your branch is up to date with 'origin/replace_sub1_with_directory'.
ok 41 - git checkout -f --recurse-submodules: replace submodule with a directory
expecting success of 2013.42 'git checkout -f --recurse-submodules: replace submodule containing a .git directory with a directory must fail':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_directory origin/replace_sub1_with_directory &&
replace_gitfile_with_git_dir sub1 &&
rm -rf .git/modules/sub1 &&
$command replace_sub1_with_directory &&
test_superproject_content origin/replace_sub1_with_directory &&
test_git_directory_exists sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
Migrating git directory of 'sub1' from
'/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1/.git' to
'/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/.git/modules/sub1'
Switched to branch 'replace_sub1_with_directory'
Your branch is up to date with 'origin/replace_sub1_with_directory'.
ok 42 - git checkout -f --recurse-submodules: replace submodule containing a .git directory with a directory must fail
expecting success of 2013.43 'git checkout -f --recurse-submodules: replace submodule with a file ignoring ignored files':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_file origin/replace_sub1_with_file &&
: >sub1/expect &&
$command replace_sub1_with_file &&
test_superproject_content origin/replace_sub1_with_file
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
Switched to branch 'replace_sub1_with_file'
Your branch is up to date with 'origin/replace_sub1_with_file'.
ok 43 - git checkout -f --recurse-submodules: replace submodule with a file ignoring ignored files
expecting success of 2013.44 'git checkout -f --recurse-submodules: modified submodule does update submodule work tree from invalid commit':
prolog &&
reset_work_tree_to_interested invalid_sub1 &&
(
cd submodule_update &&
git branch -t valid_sub1 origin/valid_sub1 &&
$command valid_sub1 &&
test_superproject_content origin/valid_sub1 &&
test_submodule_content sub1 origin/valid_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'invalid_sub1'
branch 'invalid_sub1' set up to track 'origin/invalid_sub1'.
fatal: Needed a single revision
branch 'valid_sub1' set up to track 'origin/valid_sub1'.
Switched to branch 'valid_sub1'
Your branch is up to date with 'origin/valid_sub1'.
ok 44 - git checkout -f --recurse-submodules: modified submodule does update submodule work tree from invalid commit
expecting success of 2013.45 'git checkout -f --recurse-submodules: updating submodules fixes .git links':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
git branch -t modify_sub1 origin/modify_sub1 &&
echo "gitdir: bogus/path" >sub1/.git &&
$command modify_sub1 &&
test_superproject_content origin/modify_sub1 &&
test_submodule_content sub1 origin/modify_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
branch 'modify_sub1' set up to track 'origin/modify_sub1'.
Switched to branch 'modify_sub1'
Your branch is up to date with 'origin/modify_sub1'.
ok 45 - git checkout -f --recurse-submodules: updating submodules fixes .git links
expecting success of 2013.46 'git checkout -f --recurse-submodules: changed submodule worktree is reset':
prolog &&
reset_work_tree_to_interested add_sub1 &&
(
cd submodule_update &&
rm sub1/file1 &&
: >sub1/new_file &&
git -C sub1 add new_file &&
$command HEAD &&
test_path_is_file sub1/file1 &&
test_path_is_missing sub1/new_file
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
Your branch is up to date with 'origin/add_sub1'.
ok 46 - git checkout -f --recurse-submodules: changed submodule worktree is reset
expecting success of 2013.47 'git_test_func: added submodule creates empty directory':
prolog &&
reset_work_tree_to no_submodule &&
(
cd submodule_update &&
git branch -t add_sub1 origin/add_sub1 &&
$command add_sub1 &&
test_superproject_content origin/add_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
Switched to branch 'add_sub1'
Your branch is up to date with 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
Submodule path 'uninitialized_sub': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
ok 47 - git_test_func: added submodule creates empty directory
expecting success of 2013.48 'git_test_func: added submodule leaves existing empty directory alone':
prolog &&
reset_work_tree_to no_submodule &&
(
cd submodule_update &&
mkdir sub1 &&
git branch -t add_sub1 origin/add_sub1 &&
$command add_sub1 &&
test_superproject_content origin/add_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
Switched to branch 'add_sub1'
Your branch is up to date with 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
Submodule path 'uninitialized_sub': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
ok 48 - git_test_func: added submodule leaves existing empty directory alone
expecting success of 2013.49 'git_test_func: replace tracked file with submodule creates empty directory':
prolog &&
reset_work_tree_to replace_sub1_with_file &&
(
cd submodule_update &&
git branch -t replace_file_with_sub1 origin/replace_file_with_sub1 &&
$command replace_file_with_sub1 &&
test_superproject_content origin/replace_file_with_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/replace_file_with_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'replace_sub1_with_file'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
fatal: Needed a single revision
branch 'replace_file_with_sub1' set up to track 'origin/replace_file_with_sub1'.
Switched to branch 'replace_file_with_sub1'
Your branch is up to date with 'origin/replace_file_with_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
Submodule path 'uninitialized_sub': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
ok 49 - git_test_func: replace tracked file with submodule creates empty directory
expecting success of 2013.50 'git_test_func: replace directory with submodule':
prolog &&
reset_work_tree_to replace_sub1_with_directory &&
(
cd submodule_update &&
git branch -t replace_directory_with_sub1 origin/replace_directory_with_sub1 &&
$command replace_directory_with_sub1 &&
test_superproject_content origin/replace_directory_with_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/replace_directory_with_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'replace_sub1_with_directory'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
fatal: Needed a single revision
branch 'replace_directory_with_sub1' set up to track 'origin/replace_directory_with_sub1'.
Switched to branch 'replace_directory_with_sub1'
Your branch is up to date with 'origin/replace_directory_with_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
Submodule path 'uninitialized_sub': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
ok 50 - git_test_func: replace directory with submodule
expecting success of 2013.51 'git_test_func: removed submodule leaves submodule directory and its contents in place':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t remove_sub1 origin/remove_sub1 &&
$command remove_sub1 &&
test_superproject_content origin/remove_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
branch 'remove_sub1' set up to track 'origin/remove_sub1'.
warning: unable to rmdir 'sub1': Directory not empty
Switched to branch 'remove_sub1'
Your branch is up to date with 'origin/remove_sub1'.
ok 51 - git_test_func: removed submodule leaves submodule directory and its contents in place
expecting success of 2013.52 'git_test_func: removed submodule leaves submodule containing a .git directory alone':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t remove_sub1 origin/remove_sub1 &&
replace_gitfile_with_git_dir sub1 &&
$command remove_sub1 &&
test_superproject_content origin/remove_sub1 &&
test_git_directory_is_unchanged sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
branch 'remove_sub1' set up to track 'origin/remove_sub1'.
warning: unable to rmdir 'sub1': Directory not empty
Switched to branch 'remove_sub1'
Your branch is up to date with 'origin/remove_sub1'.
ok 52 - git_test_func: removed submodule leaves submodule containing a .git directory alone
expecting success of 2013.53 'git_test_func: replace submodule with a directory must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_directory origin/replace_sub1_with_directory &&
$command replace_sub1_with_directory test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
error: The following untracked working tree files would be overwritten by checkout:
sub1/file1
sub1/file2
Please move or remove them before you switch branches.
Aborting
ok 53 - git_test_func: replace submodule with a directory must fail
expecting success of 2013.54 'git_test_func: replace submodule containing a .git directory with a directory must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_directory origin/replace_sub1_with_directory &&
replace_gitfile_with_git_dir sub1 &&
$command replace_sub1_with_directory test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_git_directory_is_unchanged sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
error: The following untracked working tree files would be overwritten by checkout:
sub1/file1
sub1/file2
Please move or remove them before you switch branches.
Aborting
ok 54 - git_test_func: replace submodule containing a .git directory with a directory must fail
checking known breakage of 2013.55 'git_test_func: replace submodule with a file must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_file origin/replace_sub1_with_file &&
$command replace_sub1_with_file test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
Switched to branch 'replace_sub1_with_file'
Your branch is up to date with 'origin/replace_sub1_with_file'.
test_must_fail: command succeeded: git checkout replace_sub1_with_file
not ok 55 - git_test_func: replace submodule with a file must fail # TODO known breakage
checking known breakage of 2013.56 'git_test_func: replace submodule containing a .git directory with a file must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_file origin/replace_sub1_with_file &&
replace_gitfile_with_git_dir sub1 &&
$command replace_sub1_with_file test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_git_directory_is_unchanged sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
Switched to branch 'replace_sub1_with_file'
Your branch is up to date with 'origin/replace_sub1_with_file'.
test_must_fail: command succeeded: git checkout replace_sub1_with_file
not ok 56 - git_test_func: replace submodule containing a .git directory with a file must fail # TODO known breakage
expecting success of 2013.57 'git_test_func: modified submodule does not update submodule work tree':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t modify_sub1 origin/modify_sub1 &&
$command modify_sub1 &&
test_superproject_content origin/modify_sub1 &&
test_submodule_content sub1 origin/add_sub1 &&
git submodule update &&
test_submodule_content sub1 origin/modify_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
branch 'modify_sub1' set up to track 'origin/modify_sub1'.
Switched to branch 'modify_sub1'
Your branch is up to date with 'origin/modify_sub1'.
Submodule path 'sub1': checked out 'e6d8148a306c904a34344fac267f4613e698d228'
ok 57 - git_test_func: modified submodule does not update submodule work tree
expecting success of 2013.58 'git_test_func: modified submodule does not update submodule work tree to invalid commit':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t invalid_sub1 origin/invalid_sub1 &&
$command invalid_sub1 &&
test_superproject_content origin/invalid_sub1 &&
test_submodule_content sub1 origin/add_sub1 &&
test_must_fail git submodule update &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
branch 'invalid_sub1' set up to track 'origin/invalid_sub1'.
Switched to branch 'invalid_sub1'
Your branch is up to date with 'origin/invalid_sub1'.
fatal: git upload-pack: not our ref 0123456789012345678901234567890123456789
fatal: remote error: upload-pack: not our ref 0123456789012345678901234567890123456789
fatal: Fetched in submodule path 'sub1', but it did not contain 0123456789012345678901234567890123456789. Direct fetching of that commit failed.
ok 58 - git_test_func: modified submodule does not update submodule work tree to invalid commit
expecting success of 2013.59 'git_test_func: modified submodule does not update submodule work tree from invalid commit':
prolog &&
reset_work_tree_to invalid_sub1 &&
(
cd submodule_update &&
git branch -t valid_sub1 origin/valid_sub1 &&
$command valid_sub1 &&
test_superproject_content origin/valid_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/valid_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'invalid_sub1'
branch 'invalid_sub1' set up to track 'origin/invalid_sub1'.
fatal: Needed a single revision
branch 'valid_sub1' set up to track 'origin/valid_sub1'.
Switched to branch 'valid_sub1'
Your branch is up to date with 'origin/valid_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
Submodule path 'uninitialized_sub': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
ok 59 - git_test_func: modified submodule does not update submodule work tree from invalid commit
expecting success of 2013.60 'git_test_func: added submodule doesn't remove untracked unignored file with same name':
prolog &&
reset_work_tree_to no_submodule &&
(
cd submodule_update &&
git branch -t add_sub1 origin/add_sub1 &&
>sub1 &&
$command add_sub1 test_must_fail &&
test_superproject_content origin/no_submodule &&
test_must_be_empty sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
error: The following untracked working tree files would be overwritten by checkout:
sub1
Please move or remove them before you switch branches.
Aborting
ok 60 - git_test_func: added submodule doesn't remove untracked unignored file with same name
expecting success of 2013.61 'git_test_func: added submodule creates empty directory':
prolog &&
reset_work_tree_to no_submodule &&
(
cd submodule_update &&
git branch -t add_sub1 origin/add_sub1 &&
$command add_sub1 &&
test_superproject_content origin/add_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
Switched to branch 'add_sub1'
Your branch is up to date with 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
Submodule path 'uninitialized_sub': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
ok 61 - git_test_func: added submodule creates empty directory
expecting success of 2013.62 'git_test_func: added submodule leaves existing empty directory alone':
prolog &&
reset_work_tree_to no_submodule &&
(
cd submodule_update &&
mkdir sub1 &&
git branch -t add_sub1 origin/add_sub1 &&
$command add_sub1 &&
test_superproject_content origin/add_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
Switched to branch 'add_sub1'
Your branch is up to date with 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
Submodule path 'uninitialized_sub': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
ok 62 - git_test_func: added submodule leaves existing empty directory alone
expecting success of 2013.63 'git_test_func: replace tracked file with submodule creates empty directory':
prolog &&
reset_work_tree_to replace_sub1_with_file &&
(
cd submodule_update &&
git branch -t replace_file_with_sub1 origin/replace_file_with_sub1 &&
$command replace_file_with_sub1 &&
test_superproject_content origin/replace_file_with_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/replace_file_with_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'replace_sub1_with_file'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
fatal: Needed a single revision
branch 'replace_file_with_sub1' set up to track 'origin/replace_file_with_sub1'.
Switched to branch 'replace_file_with_sub1'
Your branch is up to date with 'origin/replace_file_with_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
Submodule path 'uninitialized_sub': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
ok 63 - git_test_func: replace tracked file with submodule creates empty directory
expecting success of 2013.64 'git_test_func: replace directory with submodule':
prolog &&
reset_work_tree_to replace_sub1_with_directory &&
(
cd submodule_update &&
git branch -t replace_directory_with_sub1 origin/replace_directory_with_sub1 &&
$command replace_directory_with_sub1 &&
test_superproject_content origin/replace_directory_with_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/replace_directory_with_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'replace_sub1_with_directory'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
fatal: Needed a single revision
branch 'replace_directory_with_sub1' set up to track 'origin/replace_directory_with_sub1'.
Switched to branch 'replace_directory_with_sub1'
Your branch is up to date with 'origin/replace_directory_with_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
Submodule path 'uninitialized_sub': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
ok 64 - git_test_func: replace directory with submodule
expecting success of 2013.65 'git_test_func: removed submodule leaves submodule directory and its contents in place':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t remove_sub1 origin/remove_sub1 &&
$command remove_sub1 &&
test_superproject_content origin/remove_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
branch 'remove_sub1' set up to track 'origin/remove_sub1'.
warning: unable to rmdir 'sub1': Directory not empty
Switched to branch 'remove_sub1'
Your branch is up to date with 'origin/remove_sub1'.
ok 65 - git_test_func: removed submodule leaves submodule directory and its contents in place
expecting success of 2013.66 'git_test_func: removed submodule leaves submodule containing a .git directory alone':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t remove_sub1 origin/remove_sub1 &&
replace_gitfile_with_git_dir sub1 &&
$command remove_sub1 &&
test_superproject_content origin/remove_sub1 &&
test_git_directory_is_unchanged sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
branch 'remove_sub1' set up to track 'origin/remove_sub1'.
warning: unable to rmdir 'sub1': Directory not empty
Switched to branch 'remove_sub1'
Your branch is up to date with 'origin/remove_sub1'.
ok 66 - git_test_func: removed submodule leaves submodule containing a .git directory alone
checking known breakage of 2013.67 'git_test_func: replace submodule with a directory must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_directory origin/replace_sub1_with_directory &&
$command replace_sub1_with_directory test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
warning: unable to rmdir 'sub1': Directory not empty
Switched to branch 'replace_sub1_with_directory'
Your branch is up to date with 'origin/replace_sub1_with_directory'.
test_must_fail: command succeeded: git checkout -f replace_sub1_with_directory
not ok 67 - git_test_func: replace submodule with a directory must fail # TODO known breakage
checking known breakage of 2013.68 'git_test_func: replace submodule containing a .git directory with a directory must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_directory origin/replace_sub1_with_directory &&
replace_gitfile_with_git_dir sub1 &&
$command replace_sub1_with_directory test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_git_directory_is_unchanged sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
warning: unable to rmdir 'sub1': Directory not empty
Switched to branch 'replace_sub1_with_directory'
Your branch is up to date with 'origin/replace_sub1_with_directory'.
test_must_fail: command succeeded: git checkout -f replace_sub1_with_directory
not ok 68 - git_test_func: replace submodule containing a .git directory with a directory must fail # TODO known breakage
checking known breakage of 2013.69 'git_test_func: replace submodule with a file must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_file origin/replace_sub1_with_file &&
$command replace_sub1_with_file test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
Switched to branch 'replace_sub1_with_file'
Your branch is up to date with 'origin/replace_sub1_with_file'.
test_must_fail: command succeeded: git checkout -f replace_sub1_with_file
not ok 69 - git_test_func: replace submodule with a file must fail # TODO known breakage
checking known breakage of 2013.70 'git_test_func: replace submodule containing a .git directory with a file must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_file origin/replace_sub1_with_file &&
replace_gitfile_with_git_dir sub1 &&
$command replace_sub1_with_file test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_git_directory_is_unchanged sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
Switched to branch 'replace_sub1_with_file'
Your branch is up to date with 'origin/replace_sub1_with_file'.
test_must_fail: command succeeded: git checkout -f replace_sub1_with_file
not ok 70 - git_test_func: replace submodule containing a .git directory with a file must fail # TODO known breakage
expecting success of 2013.71 'git_test_func: modified submodule does not update submodule work tree':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t modify_sub1 origin/modify_sub1 &&
$command modify_sub1 &&
test_superproject_content origin/modify_sub1 &&
test_submodule_content sub1 origin/add_sub1 &&
git submodule update &&
test_submodule_content sub1 origin/modify_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
branch 'modify_sub1' set up to track 'origin/modify_sub1'.
Switched to branch 'modify_sub1'
Your branch is up to date with 'origin/modify_sub1'.
Submodule path 'sub1': checked out 'e6d8148a306c904a34344fac267f4613e698d228'
ok 71 - git_test_func: modified submodule does not update submodule work tree
expecting success of 2013.72 'git_test_func: modified submodule does not update submodule work tree to invalid commit':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t invalid_sub1 origin/invalid_sub1 &&
$command invalid_sub1 &&
test_superproject_content origin/invalid_sub1 &&
test_submodule_content sub1 origin/add_sub1 &&
test_must_fail git submodule update &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
branch 'invalid_sub1' set up to track 'origin/invalid_sub1'.
Switched to branch 'invalid_sub1'
Your branch is up to date with 'origin/invalid_sub1'.
fatal: git upload-pack: not our ref 0123456789012345678901234567890123456789
fatal: remote error: upload-pack: not our ref 0123456789012345678901234567890123456789
fatal: Fetched in submodule path 'sub1', but it did not contain 0123456789012345678901234567890123456789. Direct fetching of that commit failed.
ok 72 - git_test_func: modified submodule does not update submodule work tree to invalid commit
expecting success of 2013.73 'git_test_func: modified submodule does not update submodule work tree from invalid commit':
prolog &&
reset_work_tree_to invalid_sub1 &&
(
cd submodule_update &&
git branch -t valid_sub1 origin/valid_sub1 &&
$command valid_sub1 &&
test_superproject_content origin/valid_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/valid_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'invalid_sub1'
branch 'invalid_sub1' set up to track 'origin/invalid_sub1'.
fatal: Needed a single revision
branch 'valid_sub1' set up to track 'origin/valid_sub1'.
Switched to branch 'valid_sub1'
Your branch is up to date with 'origin/valid_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2013-checkout-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
Submodule path 'uninitialized_sub': checked out 'f401f36f47a708c55a44c7f28d8948e9f8abac9f'
ok 73 - git_test_func: modified submodule does not update submodule work tree from invalid commit
expecting success of 2013.74 'git_test_func: added submodule does remove untracked unignored file with same name when forced':
prolog &&
reset_work_tree_to no_submodule &&
(
cd submodule_update &&
git branch -t add_sub1 origin/add_sub1 &&
>sub1 &&
$command add_sub1 &&
test_superproject_content origin/add_sub1 &&
test_dir_is_empty sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
Switched to branch 'add_sub1'
Your branch is up to date with 'origin/add_sub1'.
ok 74 - git_test_func: added submodule does remove untracked unignored file with same name when forced
# still have 10 known breakage(s)
# passed all remaining 64 test(s)
1..74
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2100-update-cache-badpath.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2100-update-cache-badpath/.git/
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
expecting success of 2100.1 'git update-index --add to add various paths.': git update-index --add -- path0 path1 path2/file2 path3/file3
ok 1 - git update-index --add to add various paths.
expecting success of 2100.2 'git update-index to add conflicting path path0/file0 should fail.': test_must_fail 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 success of 2100.3 'git update-index to add conflicting path path1/file1 should fail.': test_must_fail 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 success of 2100.4 'git update-index to add conflicting path path2 should fail.': test_must_fail 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 success of 2100.5 'git update-index to add conflicting path path3 should fail.': test_must_fail 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)
1..5
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2102-update-index-symlinks.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2102-update-index-symlinks/.git/
expecting success of 2102.1 'preparation':
git config core.symlinks false &&
l=$(printf file | git hash-object -t blob -w --stdin) &&
echo "120000 $l symlink" | git update-index --index-info
ok 1 - preparation
expecting success of 2102.2 'modify the symbolic link':
printf new-file > symlink &&
git update-index symlink
ok 2 - modify the symbolic link
expecting success of 2102.3 'the index entry must still be a symbolic link':
case "$(git ls-files --stage --cached symlink)" in
120000" "*symlink) echo pass;;
*) echo fail; git ls-files --stage --cached symlink; false;;
esac
pass
ok 3 - the index entry must still be a symbolic link
# passed all 3 test(s)
1..3
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2101-update-index-reupdate.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2101-update-index-reupdate/.git/
expecting success of 2101.1 'update-index --add':
echo hello world >file1 &&
echo goodbye people >file2 &&
git update-index --add file1 file2 &&
git ls-files -s >current &&
cat >expected <<-EOF &&
100644 $(git hash-object file1) 0 file1
100644 $(git hash-object file2) 0 file2
EOF
cmp current expected
ok 1 - update-index --add
expecting success of 2101.2 'update-index --again':
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 of 2101.3 'update-index --remove --again':
git update-index --remove --again &&
git ls-files -s >current &&
cat >expected <<-EOF &&
100644 $(git hash-object file2) 0 file2
EOF
cmp current expected
ok 3 - update-index --remove --again
expecting success of 2101.4 'first commit': git commit -m initial
[master (root-commit) 823d2a7] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file2
ok 4 - first commit
expecting success of 2101.5 'update-index again':
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 &&
cat >expected <<-EOF &&
100644 $(git hash-object dir1/file3) 0 dir1/file3
100644 $(git hash-object file2) 0 file2
EOF
cmp current expected
ok 5 - update-index again
expecting success of 2101.6 'update-index --update from subdir':
echo not so happy >file2 &&
(cd dir1 &&
cat ../file2 >file3 &&
git update-index --again
) &&
git ls-files -s >current &&
cat >expected <<-EOF &&
100644 $(git hash-object dir1/file3) 0 dir1/file3
100644 $file2 0 file2
EOF
test_cmp expected current
ok 6 - update-index --update from subdir
expecting success of 2101.7 'update-index --update with pathspec':
echo very happy >file2 &&
cat file2 >dir1/file3 &&
git update-index --again dir1/ &&
git ls-files -s >current &&
cat >expected <<-EOF &&
100644 $(git hash-object dir1/file3) 0 dir1/file3
100644 $file2 0 file2
EOF
cmp current expected
ok 7 - update-index --update with pathspec
# passed all 7 test(s)
1..7
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2104-update-index-skip-worktree.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2104-update-index-skip-worktree/.git/
expecting success of 2104.1 'setup':
mkdir sub &&
touch ./1 ./2 sub/1 sub/2 &&
git add 1 2 sub/1 sub/2 &&
git ls-files -t | test_cmp expect.full -
ok 1 - setup
expecting success of 2104.2 'index is at version 2':
test "$(test-tool index-version < .git/index)" = 2
ok 2 - index is at version 2
expecting success of 2104.3 'update-index --skip-worktree':
git update-index --skip-worktree 1 sub/1 &&
git ls-files -t | test_cmp expect.skip -
ok 3 - update-index --skip-worktree
expecting success of 2104.4 'index is at version 3 after having some skip-worktree entries':
test "$(test-tool index-version < .git/index)" = 3
ok 4 - index is at version 3 after having some skip-worktree entries
expecting success of 2104.5 'ls-files -t':
git ls-files -t | test_cmp expect.skip -
ok 5 - ls-files -t
expecting success of 2104.6 'update-index --no-skip-worktree':
git update-index --no-skip-worktree 1 sub/1 &&
git ls-files -t | test_cmp expect.full -
ok 6 - update-index --no-skip-worktree
expecting success of 2104.7 'index version is back to 2 when there is no skip-worktree entry':
test "$(test-tool index-version < .git/index)" = 2
ok 7 - index version is back to 2 when there is no skip-worktree entry
# passed all 7 test(s)
1..7
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2103-update-index-ignore-missing.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2103-update-index-ignore-missing/.git/
expecting success of 2103.1 'basics':
>one &&
>two &&
>three &&
# need --add when adding
test_must_fail git update-index one &&
test -z "$(git ls-files)" &&
git update-index --add one &&
test zone = "z$(git ls-files)" &&
# update-index is atomic
echo 1 >one &&
test_must_fail git update-index one two &&
echo "M one" >expect &&
git diff-files --name-status >actual &&
test_cmp expect actual &&
git update-index --add one two three &&
test_write_lines one three two >expect &&
git ls-files >actual &&
test_cmp expect actual &&
test_tick &&
(
test_create_repo xyzzy &&
cd xyzzy &&
>file &&
git add file &&
git commit -m "sub initial"
) &&
git add xyzzy &&
test_tick &&
git commit -m initial &&
git tag initial
error: one: cannot add to the index - missing --add option?
fatal: Unable to process path one
error: two: cannot add to the index - missing --add option?
fatal: Unable to process path two
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2103-update-index-ignore-missing/xyzzy/.git/
[master (root-commit) a40d181] sub initial
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file
warning: adding embedded git repository: xyzzy
hint: You've added another git repository inside your current repository.
hint: Clones of the outer repository will not contain the contents of
hint: the embedded repository and will not know how to obtain it.
hint: If you meant to add a submodule, use:
hint:
hint: git submodule add <url> xyzzy
hint:
hint: If you added this path by mistake, you can remove it from the
hint: index with:
hint:
hint: git rm --cached xyzzy
hint:
hint: See "git help submodule" for more information.
[master (root-commit) ce14d7f] initial
Author: A U Thor <author@example.com>
4 files changed, 2 insertions(+)
create mode 100644 one
create mode 100644 three
create mode 100644 two
create mode 160000 xyzzy
ok 1 - basics
expecting success of 2103.2 '--ignore-missing --refresh':
git reset --hard initial &&
echo 2 >one &&
test_must_fail git update-index --refresh &&
echo 1 >one &&
git update-index --refresh &&
rm -f two &&
test_must_fail git update-index --refresh &&
git update-index --ignore-missing --refresh
HEAD is now at ce14d7f initial
one: needs update
two: needs update
ok 2 - --ignore-missing --refresh
expecting success of 2103.3 '--unmerged --refresh':
git reset --hard initial &&
info=$(git ls-files -s one | sed -e "s/ 0 / 1 /") &&
git rm --cached one &&
echo "$info" | git update-index --index-info &&
test_must_fail git update-index --refresh &&
git update-index --unmerged --refresh &&
echo 2 >two &&
test_must_fail git update-index --unmerged --refresh >actual &&
grep two actual &&
! grep one actual &&
! grep three actual
HEAD is now at ce14d7f initial
rm 'one'
one: needs merge
two: needs update
ok 3 - --unmerged --refresh
expecting success of 2103.4 '--ignore-submodules --refresh (1)':
git reset --hard initial &&
rm -f two &&
test_must_fail git update-index --ignore-submodules --refresh
HEAD is now at ce14d7f initial
two: needs update
ok 4 - --ignore-submodules --refresh (1)
expecting success of 2103.5 '--ignore-submodules --refresh (2)':
git reset --hard initial &&
test_tick &&
(
cd xyzzy &&
git commit -m "sub second" --allow-empty
) &&
test_must_fail git update-index --refresh &&
test_must_fail git update-index --ignore-missing --refresh &&
git update-index --ignore-submodules --refresh
HEAD is now at ce14d7f initial
[master 66f0d66] sub second
Author: A U Thor <author@example.com>
xyzzy: needs update
xyzzy: needs update
ok 5 - --ignore-submodules --refresh (2)
# passed all 5 test(s)
1..5
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2105-update-index-gitfile.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2105-update-index-gitfile/.git/
expecting success of 2105.1 'submodule with absolute .git file':
mkdir sub1 &&
(cd sub1 &&
git init &&
REAL="$(pwd)/.real" &&
mv .git "$REAL" &&
echo "gitdir: $REAL" >.git &&
test_commit first)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2105-update-index-gitfile/sub1/.git/
[master (root-commit) 50e526b] first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 first.t
ok 1 - submodule with absolute .git file
expecting success of 2105.2 'add gitlink to absolute .git file':
git update-index --add -- sub1
ok 2 - add gitlink to absolute .git file
expecting success of 2105.3 'submodule with relative .git file':
mkdir sub2 &&
(cd sub2 &&
git init &&
mv .git .real &&
echo "gitdir: .real" >.git &&
test_commit first)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2105-update-index-gitfile/sub2/.git/
[master (root-commit) 50e526b] first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 first.t
ok 3 - submodule with relative .git file
expecting success of 2105.4 'add gitlink to relative .git file':
git update-index --add -- sub2
ok 4 - add gitlink to relative .git file
# passed all 4 test(s)
1..4
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2106-update-index-assume-unchanged.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2106-update-index-assume-unchanged/.git/
expecting success of 2106.1 'setup':
: >file &&
git add file &&
git commit -m initial &&
git branch other &&
echo upstream >file &&
git add file &&
git commit -m upstream
[master (root-commit) 6ce5622] initial
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file
[master fbda113] upstream
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
ok 1 - setup
expecting success of 2106.2 'do not switch branches with dirty file':
git reset --hard &&
git checkout other &&
echo dirt >file &&
git update-index --assume-unchanged file &&
test_must_fail git checkout - 2>err &&
test_i18ngrep overwritten err
HEAD is now at fbda113 upstream
Switched to branch 'other'
error: Your local changes to the following files would be overwritten by checkout:
ok 2 - do not switch branches with dirty file
# passed all 2 test(s)
1..2
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2107-update-index-basic.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2107-update-index-basic/.git/
expecting success of 2107.1 'update-index --nonsense fails':
test_must_fail git update-index --nonsense 2>msg &&
test -s msg
ok 1 - update-index --nonsense fails
expecting success of 2107.2 'update-index --nonsense dumps usage':
test_expect_code 129 git update-index --nonsense 2>err &&
test_i18ngrep "[Uu]sage: git update-index" err
usage: git update-index [<options>] [--] [<file>...]
ok 2 - update-index --nonsense dumps usage
expecting success of 2107.3 'update-index -h with corrupt index':
mkdir broken &&
(
cd broken &&
git init &&
>.git/index &&
test_expect_code 129 git update-index -h >usage 2>&1
) &&
test_i18ngrep "[Uu]sage: git update-index" broken/usage
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2107-update-index-basic/broken/.git/
usage: git update-index [<options>] [--] [<file>...]
ok 3 - update-index -h with corrupt index
expecting success of 2107.4 '--cacheinfo complains of missing arguments':
test_must_fail git update-index --cacheinfo
error: option 'cacheinfo' expects <mode>,<sha1>,<path>
ok 4 - --cacheinfo complains of missing arguments
expecting success of 2107.5 '--cacheinfo does not accept blob null sha1':
echo content >file &&
git add file &&
git rev-parse :file >expect &&
test_must_fail git update-index --verbose --cacheinfo 100644 $ZERO_OID file >out &&
git rev-parse :file >actual &&
test_cmp expect actual &&
cat >expect <<-\EOF &&
add 'file'
EOF
test_cmp expect out
error: cache entry has null sha1: file
fatal: Unable to write new index file
ok 5 - --cacheinfo does not accept blob null sha1
expecting success of 2107.6 '--cacheinfo does not accept gitlink null sha1':
git init submodule &&
(cd submodule && test_commit foo) &&
git add submodule &&
git rev-parse :submodule >expect &&
test_must_fail git update-index --cacheinfo 160000 $ZERO_OID submodule &&
git rev-parse :submodule >actual &&
test_cmp expect actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2107-update-index-basic/submodule/.git/
[master (root-commit) ddd63c9] foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo.t
warning: adding embedded git repository: submodule
hint: You've added another git repository inside your current repository.
hint: Clones of the outer repository will not contain the contents of
hint: the embedded repository and will not know how to obtain it.
hint: If you meant to add a submodule, use:
hint:
hint: git submodule add <url> submodule
hint:
hint: If you added this path by mistake, you can remove it from the
hint: index with:
hint:
hint: git rm --cached submodule
hint:
hint: See "git help submodule" for more information.
error: cache entry has null sha1: submodule
fatal: Unable to write new index file
ok 6 - --cacheinfo does not accept gitlink null sha1
expecting success of 2107.7 '--cacheinfo mode,sha1,path (new syntax)':
echo content >file &&
git hash-object -w --stdin <file >expect &&
git update-index --add --cacheinfo 100644 "$(cat expect)" file &&
git rev-parse :file >actual &&
test_cmp expect actual &&
git update-index --add --verbose --cacheinfo "100644,$(cat expect),elif" >out &&
git rev-parse :elif >actual &&
test_cmp expect actual &&
cat >expect <<-\EOF &&
add 'elif'
EOF
test_cmp expect out
ok 7 - --cacheinfo mode,sha1,path (new syntax)
expecting success of 2107.8 '.lock files cleaned up':
mkdir cleanup &&
(
cd cleanup &&
mkdir worktree &&
git init repo &&
cd repo &&
git config core.worktree ../../worktree &&
# --refresh triggers late setup_work_tree,
# the_index.cache_changed is zero, rollback_lock_file fails
git update-index --refresh --verbose >out &&
test_must_be_empty out &&
! test -f .git/index.lock
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2107-update-index-basic/cleanup/repo/.git/
ok 8 - .lock files cleaned up
expecting success of 2107.9 '--chmod=+x and chmod=-x in the same argument list':
>A &&
>B &&
git add A B &&
git update-index --verbose --chmod=+x A --chmod=-x B >out &&
cat >expect <<-\EOF &&
add 'A'
chmod +x 'A'
add 'B'
chmod -x 'B'
EOF
test_cmp expect out &&
cat >expect <<-EOF &&
100755 $EMPTY_BLOB 0 A
100644 $EMPTY_BLOB 0 B
EOF
git ls-files --stage A B >actual &&
test_cmp expect actual
ok 9 - --chmod=+x and chmod=-x in the same argument list
# passed all 9 test(s)
1..9
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1092-sparse-checkout-compatibility.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1092-sparse-checkout-compatibility/.git/
expecting success of 1092.1 'setup':
git init initial-repo &&
(
GIT_TEST_SPARSE_INDEX=0 &&
cd initial-repo &&
echo a >a &&
echo "after deep" >e &&
echo "after folder1" >g &&
echo "after x" >z &&
mkdir folder1 folder2 deep before x &&
echo "before deep" >before/a &&
echo "before deep again" >before/b &&
mkdir deep/deeper1 deep/deeper2 deep/before deep/later &&
mkdir deep/deeper1/deepest &&
mkdir deep/deeper1/deepest2 &&
mkdir deep/deeper1/deepest3 &&
echo "after deeper1" >deep/e &&
echo "after deepest" >deep/deeper1/e &&
cp a folder1 &&
cp a folder2 &&
cp a x &&
cp a deep &&
cp a deep/before &&
cp a deep/deeper1 &&
cp a deep/deeper2 &&
cp a deep/later &&
cp a deep/deeper1/deepest &&
cp a deep/deeper1/deepest2 &&
cp a deep/deeper1/deepest3 &&
cp -r deep/deeper1/ deep/deeper2 &&
mkdir deep/deeper1/0 &&
mkdir deep/deeper1/0/0 &&
touch deep/deeper1/0/1 &&
touch deep/deeper1/0/0/0 &&
>folder1- &&
>folder1.x &&
>folder10 &&
cp -r deep/deeper1/0 folder1 &&
cp -r deep/deeper1/0 folder2 &&
echo >>folder1/0/0/0 &&
echo >>folder2/0/1 &&
git add . &&
git commit -m "initial commit" &&
git checkout -b base &&
for dir in folder1 folder2 deep
do
git checkout -b update-$dir base &&
echo "updated $dir" >$dir/a &&
git commit -a -m "update $dir" || return 1
done &&
git checkout -b rename-base base &&
cat >folder1/larger-content <<-\EOF &&
matching
lines
help
inexact
renames
EOF
cp folder1/larger-content folder2/ &&
cp folder1/larger-content deep/deeper1/ &&
git add . &&
git commit -m "add interesting rename content" &&
git checkout -b rename-out-to-out rename-base &&
mv folder1/a folder2/b &&
mv folder1/larger-content folder2/edited-content &&
echo >>folder2/edited-content &&
echo >>folder2/0/1 &&
echo stuff >>deep/deeper1/a &&
git add . &&
git commit -m "rename folder1/... to folder2/..." &&
git checkout -b rename-out-to-in rename-base &&
mv folder1/a deep/deeper1/b &&
echo more stuff >>deep/deeper1/a &&
rm folder2/0/1 &&
mkdir folder2/0/1 &&
echo >>folder2/0/1/1 &&
mv folder1/larger-content deep/deeper1/edited-content &&
echo >>deep/deeper1/edited-content &&
git add . &&
git commit -m "rename folder1/... to deep/deeper1/..." &&
git checkout -b rename-in-to-out rename-base &&
mv deep/deeper1/a folder1/b &&
echo >>folder2/0/1 &&
rm -rf folder1/0/0 &&
echo >>folder1/0/0 &&
mv deep/deeper1/larger-content folder1/edited-content &&
echo >>folder1/edited-content &&
git add . &&
git commit -m "rename deep/deeper1/... to folder1/..." &&
git checkout -b df-conflict-1 base &&
rm -rf folder1 &&
echo content >folder1 &&
git add . &&
git commit -m "dir to file" &&
git checkout -b df-conflict-2 base &&
rm -rf folder2 &&
echo content >folder2 &&
git add . &&
git commit -m "dir to file" &&
git checkout -b fd-conflict base &&
rm a &&
mkdir a &&
echo content >a/a &&
git add . &&
git commit -m "file to dir" &&
for side in left right
do
git checkout -b merge-$side base &&
echo $side >>deep/deeper2/a &&
echo $side >>folder1/a &&
echo $side >>folder2/a &&
git add . &&
git commit -m "$side" || return 1
done &&
git checkout -b deepest base &&
echo "updated deepest" >deep/deeper1/deepest/a &&
echo "updated deepest2" >deep/deeper1/deepest2/a &&
echo "updated deepest3" >deep/deeper1/deepest3/a &&
git commit -a -m "update deepest" &&
git checkout -f base &&
git reset --hard
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1092-sparse-checkout-compatibility/initial-repo/.git/
[master (root-commit) 703fd3e] initial commit
Author: A U Thor <author@example.com>
33 files changed, 26 insertions(+)
create mode 100644 a
create mode 100644 before/a
create mode 100644 before/b
create mode 100644 deep/a
create mode 100644 deep/before/a
create mode 100644 deep/deeper1/0/0/0
create mode 100644 deep/deeper1/0/1
create mode 100644 deep/deeper1/a
create mode 100644 deep/deeper1/deepest/a
create mode 100644 deep/deeper1/deepest2/a
create mode 100644 deep/deeper1/deepest3/a
create mode 100644 deep/deeper1/e
create mode 100644 deep/deeper2/a
create mode 100644 deep/deeper2/deeper1/a
create mode 100644 deep/deeper2/deeper1/deepest/a
create mode 100644 deep/deeper2/deeper1/deepest2/a
create mode 100644 deep/deeper2/deeper1/deepest3/a
create mode 100644 deep/deeper2/deeper1/e
create mode 100644 deep/e
create mode 100644 deep/later/a
create mode 100644 e
create mode 100644 folder1-
create mode 100644 folder1.x
create mode 100644 folder1/0/0/0
create mode 100644 folder1/0/1
create mode 100644 folder1/a
create mode 100644 folder10
create mode 100644 folder2/0/0/0
create mode 100644 folder2/0/1
create mode 100644 folder2/a
create mode 100644 g
create mode 100644 x/a
create mode 100644 z
Switched to a new branch 'base'
Switched to a new branch 'update-folder1'
[update-folder1 fa14324] update folder1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to a new branch 'update-folder2'
[update-folder2 2805da4] update folder2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to a new branch 'update-deep'
[update-deep ac61adf] update deep
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to a new branch 'rename-base'
[rename-base 5914bd8] add interesting rename content
Author: A U Thor <author@example.com>
3 files changed, 15 insertions(+)
create mode 100644 deep/deeper1/larger-content
create mode 100644 folder1/larger-content
create mode 100644 folder2/larger-content
Switched to a new branch 'rename-out-to-out'
[rename-out-to-out 4a04e79] rename folder1/... to folder2/...
Author: A U Thor <author@example.com>
4 files changed, 3 insertions(+)
rename folder1/a => folder2/b (100%)
rename folder1/larger-content => folder2/edited-content (97%)
Switched to a new branch 'rename-out-to-in'
[rename-out-to-in d11c5fe] rename folder1/... to deep/deeper1/...
Author: A U Thor <author@example.com>
4 files changed, 2 insertions(+)
rename folder1/a => deep/deeper1/b (100%)
rename folder1/larger-content => deep/deeper1/edited-content (97%)
rename folder2/0/{ => 1}/1 (100%)
Switched to a new branch 'rename-in-to-out'
[rename-in-to-out e5d0f8e] rename deep/deeper1/... to folder1/...
Author: A U Thor <author@example.com>
4 files changed, 2 insertions(+)
rename folder1/0/{0 => }/0 (100%)
rename deep/deeper1/a => folder1/b (100%)
rename deep/deeper1/larger-content => folder1/edited-content (97%)
Switched to a new branch 'df-conflict-1'
[df-conflict-1 974b58d] dir to file
Author: A U Thor <author@example.com>
4 files changed, 1 insertion(+), 2 deletions(-)
create mode 100644 folder1
delete mode 100644 folder1/0/0/0
delete mode 100644 folder1/0/1
delete mode 100644 folder1/a
Switched to a new branch 'df-conflict-2'
[df-conflict-2 bef3412] dir to file
Author: A U Thor <author@example.com>
4 files changed, 1 insertion(+), 2 deletions(-)
create mode 100644 folder2
delete mode 100644 folder2/0/0/0
delete mode 100644 folder2/0/1
delete mode 100644 folder2/a
Switched to a new branch 'fd-conflict'
[fd-conflict 40c717f] file to dir
Author: A U Thor <author@example.com>
2 files changed, 1 insertion(+), 1 deletion(-)
delete mode 100644 a
create mode 100644 a/a
Switched to a new branch 'merge-left'
[merge-left 9721a77] left
Author: A U Thor <author@example.com>
3 files changed, 3 insertions(+)
Switched to a new branch 'merge-right'
[merge-right 4f73b62] right
Author: A U Thor <author@example.com>
3 files changed, 3 insertions(+)
Switched to a new branch 'deepest'
[deepest cb037bf] update deepest
Author: A U Thor <author@example.com>
3 files changed, 3 insertions(+), 3 deletions(-)
Switched to branch 'base'
HEAD is now at 703fd3e initial commit
ok 1 - setup
expecting success of 1092.2 'sparse-index contents':
init_repos &&
# Remove deep, add three other directories.
test_sparse_checkout_set \
"folder1 folder2 x" \
"before deep" &&
# Remove folder1, add deep
test_sparse_checkout_set \
"deep folder2 x" \
"before folder1" &&
# Replace deep with deep/deeper2 (dropping deep/deeper1)
# Add folder1
test_sparse_checkout_set \
"deep/deeper2 folder1 folder2 x" \
"before deep/deeper1" &&
# Replace deep/deeper2 with deep/deeper1
# Replace folder1 with folder1/0/0
# Replace folder2 with non-existent folder2/2/3
# Add non-existent "bogus"
test_sparse_checkout_set \
"bogus deep/deeper1 folder1/0/0 folder2/2/3 x" \
"before deep/deeper2 folder2/0" &&
# Drop down to only files at root
test_sparse_checkout_set \
"" \
"before deep folder1 folder2 x" &&
# Disabling the sparse-index replaces tree entries with full ones
git -C sparse-index sparse-checkout init --no-sparse-index &&
test_sparse_match git ls-files --stage --sparse
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
040000 4499610892bdc57d5ebd35ebf695a57cd82ffe0e 0 before/
040000 ce536cb5137cec414526564049b9b175d835cde1 0 deep/
040000 4499610892bdc57d5ebd35ebf695a57cd82ffe0e 0 before/
040000 e0f2d30b633eb781d675fedd78808135103fe1a0 0 folder1/
040000 4499610892bdc57d5ebd35ebf695a57cd82ffe0e 0 before/
040000 10c8564bace86d48e22963bebe92e40ba8cfd937 0 deep/deeper1/
040000 4499610892bdc57d5ebd35ebf695a57cd82ffe0e 0 before/
040000 ca1fa788550e1b7b99256573687bd1dd7994e072 0 deep/deeper2/
040000 cb4007891397aa2a451037d1c69e57f0cf498c24 0 folder2/0/
fatal: path 'bogus' does not exist in 'HEAD'
fatal: path 'folder2/2/3' does not exist in 'HEAD'
040000 4499610892bdc57d5ebd35ebf695a57cd82ffe0e 0 before/
040000 ce536cb5137cec414526564049b9b175d835cde1 0 deep/
040000 e0f2d30b633eb781d675fedd78808135103fe1a0 0 folder1/
040000 123706f6fc38949628eaf0483edbf97ba21123ae 0 folder2/
040000 aaff74984cccd156a469afa7d9ab10e4777beb24 0 x/
ok 2 - sparse-index contents
expecting success of 1092.3 'expanded in-memory index matches full index':
init_repos &&
test_sparse_match git ls-files --stage
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 3 - expanded in-memory index matches full index
expecting success of 1092.4 'root directory cannot be sparse':
init_repos &&
# Remove all in-cone files and directories from the index, collapse index
# with `git sparse-checkout reapply`
git -C sparse-index rm -r . &&
git -C sparse-index sparse-checkout reapply &&
# Verify sparse directories still present, root directory is not sparse
cat >expect <<-EOF &&
before/
folder1/
folder2/
x/
EOF
git -C sparse-index ls-files --sparse >actual &&
test_cmp expect actual
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
rm 'a'
rm 'deep/a'
rm 'deep/before/a'
rm 'deep/deeper1/0/0/0'
rm 'deep/deeper1/0/1'
rm 'deep/deeper1/a'
rm 'deep/deeper1/deepest/a'
rm 'deep/deeper1/deepest2/a'
rm 'deep/deeper1/deepest3/a'
rm 'deep/deeper1/e'
rm 'deep/deeper2/a'
rm 'deep/deeper2/deeper1/a'
rm 'deep/deeper2/deeper1/deepest/a'
rm 'deep/deeper2/deeper1/deepest2/a'
rm 'deep/deeper2/deeper1/deepest3/a'
rm 'deep/deeper2/deeper1/e'
rm 'deep/e'
rm 'deep/later/a'
rm 'e'
rm 'folder1-'
rm 'folder1.x'
rm 'folder10'
rm 'g'
rm 'z'
ok 4 - root directory cannot be sparse
expecting success of 1092.5 'status with options':
init_repos &&
test_sparse_match ls &&
test_all_match git status --porcelain=v2 &&
test_all_match git status --porcelain=v2 -z -u &&
test_all_match git status --porcelain=v2 -uno &&
run_on_all touch README.md &&
test_all_match git status --porcelain=v2 &&
test_all_match git status --porcelain=v2 -z -u &&
test_all_match git status --porcelain=v2 -uno &&
test_all_match git add README.md &&
test_all_match git status --porcelain=v2 &&
test_all_match git status --porcelain=v2 -z -u &&
test_all_match git status --porcelain=v2 -uno
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 5 - status with options
expecting success of 1092.6 'status with diff in unexpanded sparse directory':
init_repos &&
test_all_match git checkout rename-base &&
test_all_match git reset --soft rename-out-to-out &&
test_all_match git status --porcelain=v2
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 6 - status with diff in unexpanded sparse directory
expecting success of 1092.7 'status reports sparse-checkout':
init_repos &&
git -C sparse-checkout status >full &&
git -C sparse-index status >sparse &&
test_i18ngrep "You are in a sparse checkout with " full &&
test_i18ngrep "You are in a sparse checkout." sparse
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
You are in a sparse checkout with 73% of tracked files present.
You are in a sparse checkout.
ok 7 - status reports sparse-checkout
expecting success of 1092.8 'add, commit, checkout':
init_repos &&
write_script edit-contents <<-\EOF &&
echo text >>$1
EOF
run_on_all ../edit-contents README.md &&
test_all_match git add README.md &&
test_all_match git status --porcelain=v2 &&
test_all_match git commit -m "Add README.md" &&
test_all_match git checkout HEAD~1 &&
test_all_match git checkout - &&
run_on_all ../edit-contents README.md &&
test_all_match git add -A &&
test_all_match git status --porcelain=v2 &&
test_all_match git commit -m "Extend README.md" &&
test_all_match git checkout HEAD~1 &&
test_all_match git checkout - &&
run_on_all ../edit-contents deep/newfile &&
test_all_match git status --porcelain=v2 -uno &&
test_all_match git status --porcelain=v2 &&
test_all_match git add . &&
test_all_match git status --porcelain=v2 &&
test_all_match git commit -m "add deep/newfile" &&
test_all_match git checkout HEAD~1 &&
test_all_match git checkout -
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 8 - add, commit, checkout
expecting success of 1092.9 'deep changes during checkout':
init_repos &&
test_sparse_match git sparse-checkout set deep/deeper1/deepest &&
test_all_match git checkout deepest &&
test_all_match git checkout base
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 9 - deep changes during checkout
expecting success of 1092.10 'checkout with modified sparse directory':
init_repos &&
test_all_match git checkout rename-in-to-out -- . &&
test_sparse_match git sparse-checkout reapply &&
test_all_match git checkout base
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 10 - checkout with modified sparse directory
expecting success of 1092.11 'checkout orphan then non-orphan':
init_repos &&
test_all_match git checkout --orphan test-orphan &&
test_all_match git status --porcelain=v2 &&
test_all_match git checkout base &&
test_all_match git status --porcelain=v2
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 11 - checkout orphan then non-orphan
expecting success of 1092.12 'add outside sparse cone':
init_repos &&
run_on_sparse mkdir folder1 &&
run_on_sparse ../edit-contents folder1/a &&
run_on_sparse ../edit-contents folder1/newfile &&
test_sparse_match test_must_fail git add folder1/a &&
grep "Disable or modify the sparsity rules" sparse-checkout-err &&
test_sparse_unstaged folder1/a &&
test_sparse_match test_must_fail git add folder1/newfile &&
grep "Disable or modify the sparsity rules" sparse-checkout-err &&
test_sparse_unstaged folder1/newfile
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
hint: * Disable or modify the sparsity rules.
hint: * Disable or modify the sparsity rules.
ok 12 - add outside sparse cone
expecting success of 1092.13 'commit including unstaged changes':
init_repos &&
write_script edit-file <<-\EOF &&
echo $1 >$2
EOF
run_on_all ../edit-file 1 a &&
run_on_all ../edit-file 1 deep/a &&
test_all_match git commit -m "-a" -a &&
test_all_match git status --porcelain=v2 &&
run_on_all ../edit-file 2 a &&
run_on_all ../edit-file 2 deep/a &&
test_all_match git commit -m "--include" --include deep/a &&
test_all_match git status --porcelain=v2 &&
test_all_match git commit -m "--include" --include a &&
test_all_match git status --porcelain=v2 &&
run_on_all ../edit-file 3 a &&
run_on_all ../edit-file 3 deep/a &&
test_all_match git commit -m "--amend" -a --amend &&
test_all_match git status --porcelain=v2
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 13 - commit including unstaged changes
expecting success of 1092.14 'status/add: outside sparse cone':
init_repos &&
# folder1 is at HEAD, but outside the sparse cone
run_on_sparse mkdir folder1 &&
cp initial-repo/folder1/a sparse-checkout/folder1/a &&
cp initial-repo/folder1/a sparse-index/folder1/a &&
test_sparse_match git status &&
write_script edit-contents <<-\EOF &&
echo text >>$1
EOF
run_on_all ../edit-contents folder1/a &&
run_on_all ../edit-contents folder1/new &&
test_sparse_match git status --porcelain=v2 &&
# Adding the path outside of the sparse-checkout cone should fail.
test_sparse_match test_must_fail git add folder1/a &&
grep "Disable or modify the sparsity rules" sparse-checkout-err &&
test_sparse_unstaged folder1/a &&
test_all_match git add --refresh folder1/a &&
test_must_be_empty sparse-checkout-err &&
test_sparse_unstaged folder1/a &&
test_sparse_match test_must_fail git add folder1/new &&
grep "Disable or modify the sparsity rules" sparse-checkout-err &&
test_sparse_unstaged folder1/new &&
test_sparse_match git add --sparse folder1/a &&
test_sparse_match git add --sparse folder1/new &&
test_all_match git add --sparse . &&
test_all_match git status --porcelain=v2 &&
test_all_match git commit -m folder1/new &&
test_all_match git rev-parse HEAD^{tree} &&
run_on_all ../edit-contents folder1/newer &&
test_all_match git add --sparse folder1/ &&
test_all_match git status --porcelain=v2 &&
test_all_match git commit -m folder1/newer &&
test_all_match git rev-parse HEAD^{tree}
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
hint: * Disable or modify the sparsity rules.
hint: * Disable or modify the sparsity rules.
ok 14 - status/add: outside sparse cone
expecting success of 1092.15 'checkout and reset --hard':
init_repos &&
test_all_match git checkout update-folder1 &&
test_all_match git status --porcelain=v2 &&
test_all_match git checkout update-deep &&
test_all_match git status --porcelain=v2 &&
test_all_match git checkout -b reset-test &&
test_all_match git reset --hard deepest &&
test_all_match git reset --hard update-folder1 &&
test_all_match git reset --hard update-folder2
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 15 - checkout and reset --hard
expecting success of 1092.16 'diff --cached':
init_repos &&
write_script edit-contents <<-\EOF &&
echo text >>README.md
EOF
run_on_all ../edit-contents &&
test_all_match git diff &&
test_all_match git diff --cached &&
test_all_match git add README.md &&
test_all_match git diff &&
test_all_match git diff --cached
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 16 - diff --cached
expecting success of 1092.17 'diff with renames and conflicts':
init_repos &&
for branch in rename-out-to-out \
rename-out-to-in \
rename-in-to-out \
df-conflict-1 \
fd-conflict
do
test_all_match git checkout rename-base &&
test_all_match git checkout $branch -- . &&
test_all_match git status --porcelain=v2 &&
test_all_match git diff --cached --no-renames &&
test_all_match git diff --cached --find-renames || return 1
done
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 17 - diff with renames and conflicts
expecting success of 1092.18 'diff with directory/file conflicts':
init_repos &&
for branch in rename-out-to-out \
rename-out-to-in \
rename-in-to-out \
df-conflict-1 \
df-conflict-2 \
fd-conflict
do
git -C full-checkout reset --hard &&
test_sparse_match git reset --hard &&
test_all_match git checkout $branch &&
test_all_match git checkout rename-base -- . &&
test_all_match git status --porcelain=v2 &&
test_all_match git diff --cached --no-renames &&
test_all_match git diff --cached --find-renames || return 1
done
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 4a04e79 rename folder1/... to folder2/...
HEAD is now at d11c5fe rename folder1/... to deep/deeper1/...
HEAD is now at e5d0f8e rename deep/deeper1/... to folder1/...
HEAD is now at 974b58d dir to file
HEAD is now at bef3412 dir to file
ok 18 - diff with directory/file conflicts
expecting success of 1092.19 'log with pathspec outside sparse definition':
init_repos &&
test_all_match git log -- a &&
test_all_match git log -- folder1/a &&
test_all_match git log -- folder2/a &&
test_all_match git log -- deep/a &&
test_all_match git log -- deep/deeper1/a &&
test_all_match git log -- deep/deeper1/deepest/a &&
test_all_match git checkout update-folder1 &&
test_all_match git log -- folder1/a
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 19 - log with pathspec outside sparse definition
expecting success of 1092.20 'blame with pathspec inside sparse definition':
init_repos &&
for file in a \
deep/a \
deep/deeper1/a \
deep/deeper1/deepest/a
do
test_all_match git blame $file || return 1
done
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 20 - blame with pathspec inside sparse definition
expecting success of 1092.21 'blame with pathspec outside sparse definition':
init_repos &&
test_sparse_match git sparse-checkout set &&
for file in \
deep/a \
deep/deeper1/a \
deep/deeper1/deepest/a
do
test_sparse_match test_must_fail git blame $file &&
cat >expect <<-EOF &&
fatal: Cannot lstat '$file': No such file or directory
EOF
# We compare sparse-checkout-err and sparse-index-err in
# `test_sparse_match`. Given we know they are the same, we
# only check the content of sparse-index-err here.
test_cmp expect sparse-index-err || return 1
done
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 21 - blame with pathspec outside sparse definition
expecting success of 1092.22 'checkout and reset (mixed)':
init_repos &&
test_all_match git checkout -b reset-test update-deep &&
test_all_match git reset deepest &&
# Because skip-worktree is preserved, resetting to update-folder1
# will show worktree changes for folder1/a in full-checkout, but not
# in sparse-checkout or sparse-index.
git -C full-checkout reset update-folder1 >full-checkout-out &&
test_sparse_match git reset update-folder1 &&
grep "M folder1/a" full-checkout-out &&
! grep "M folder1/a" sparse-checkout-out &&
run_on_sparse test_path_is_missing folder1
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
M folder1/a
ok 22 - checkout and reset (mixed)
expecting success of 1092.23 'checkout and reset (merge)':
init_repos &&
write_script edit-contents <<-\EOF &&
echo text >>$1
EOF
test_all_match git checkout -b reset-test update-deep &&
run_on_all ../edit-contents a &&
test_all_match git reset --merge deepest &&
test_all_match git status --porcelain=v2 &&
test_all_match git reset --hard update-deep &&
run_on_all ../edit-contents deep/a &&
test_all_match test_must_fail git reset --merge deepest
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 23 - checkout and reset (merge)
expecting success of 1092.24 'checkout and reset (keep)':
init_repos &&
write_script edit-contents <<-\EOF &&
echo text >>$1
EOF
test_all_match git checkout -b reset-test update-deep &&
run_on_all ../edit-contents a &&
test_all_match git reset --keep deepest &&
test_all_match git status --porcelain=v2 &&
test_all_match git reset --hard update-deep &&
run_on_all ../edit-contents deep/a &&
test_all_match test_must_fail git reset --keep deepest
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 24 - checkout and reset (keep)
expecting success of 1092.25 'reset with pathspecs inside sparse definition':
init_repos &&
write_script edit-contents <<-\EOF &&
echo text >>$1
EOF
test_all_match git checkout -b reset-test update-deep &&
run_on_all ../edit-contents deep/a &&
test_all_match git reset base -- deep/a &&
test_all_match git status --porcelain=v2 &&
test_all_match git reset base -- nonexistent-file &&
test_all_match git status --porcelain=v2 &&
test_all_match git reset deepest -- deep &&
test_all_match git status --porcelain=v2
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 25 - reset with pathspecs inside sparse definition
expecting success of 1092.26 'reset with pathspecs outside sparse definition':
init_repos &&
test_all_match git checkout -b reset-test base &&
test_sparse_match git reset update-folder1 -- folder1 &&
git -C full-checkout reset update-folder1 -- folder1 &&
test_all_match git ls-files -s -- folder1 &&
test_sparse_match git reset update-folder2 -- folder2/a &&
git -C full-checkout reset update-folder2 -- folder2/a &&
test_all_match git ls-files -s -- folder2/a
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
Unstaged changes after reset:
M folder1/a
Unstaged changes after reset:
M folder1/a
M folder2/a
ok 26 - reset with pathspecs outside sparse definition
expecting success of 1092.27 'reset with wildcard pathspec':
init_repos &&
test_all_match git reset update-deep -- deep\* &&
test_all_match git ls-files -s -- deep &&
test_all_match git reset deepest -- deep\*\*\* &&
test_all_match git ls-files -s -- deep &&
# The following `git reset`s result in updating the index on files with
# `skip-worktree` enabled. To avoid failing due to discrepencies in reported
# "modified" files, `test_sparse_match` reset is performed separately from
# "full-checkout" reset, then the index contents of all repos are verified.
test_sparse_match git reset update-folder1 -- \*/a &&
git -C full-checkout reset update-folder1 -- \*/a &&
test_all_match git ls-files -s -- deep/a folder1/a &&
test_sparse_match git reset update-folder2 -- folder\* &&
git -C full-checkout reset update-folder2 -- folder\* &&
test_all_match git ls-files -s -- folder10 folder1 folder2 &&
test_sparse_match git reset base -- folder1/\* &&
git -C full-checkout reset base -- folder1/\* &&
test_all_match git ls-files -s -- folder1
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
Unstaged changes after reset:
M folder1/a
Unstaged changes after reset:
M folder2/a
Unstaged changes after reset:
M folder2/a
ok 27 - reset with wildcard pathspec
expecting success of 1092.28 'reset hard with removed sparse dir':
init_repos &&
run_on_all git rm -r --sparse folder1 &&
test_all_match git status --porcelain=v2 &&
test_all_match git reset --hard &&
test_all_match git status --porcelain=v2 &&
cat >expect <<-\EOF &&
folder1/
EOF
git -C sparse-index ls-files --sparse folder1 >out &&
test_cmp expect out
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 28 - reset hard with removed sparse dir
expecting success of 1092.29 'update-index modify outside sparse definition':
init_repos &&
write_script edit-contents <<-\EOF &&
echo text >>$1
EOF
# Create & modify folder1/a
# Note that this setup is a manual way of reaching the erroneous
# condition in which a `skip-worktree` enabled, outside-of-cone file
# exists on disk. It is used here to ensure `update-index` is stable
# and behaves predictably if such a condition occurs.
run_on_sparse mkdir -p folder1 &&
run_on_sparse cp ../initial-repo/folder1/a folder1/a &&
run_on_all ../edit-contents folder1/a &&
# If file has skip-worktree enabled, but the file is present, it is
# treated the same as if skip-worktree is disabled
test_all_match git status --porcelain=v2 &&
test_all_match git update-index folder1/a &&
test_all_match git status --porcelain=v2 &&
# When skip-worktree is disabled (even on files outside sparse cone), file
# is updated in the index
test_sparse_match git update-index --no-skip-worktree folder1/a &&
test_all_match git status --porcelain=v2 &&
test_all_match git update-index folder1/a &&
test_all_match git status --porcelain=v2
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 29 - update-index modify outside sparse definition
expecting success of 1092.30 'update-index --add outside sparse definition':
init_repos &&
write_script edit-contents <<-\EOF &&
echo text >>$1
EOF
# Create folder1, add new file
run_on_sparse mkdir -p folder1 &&
run_on_all ../edit-contents folder1/b &&
# The *untracked* out-of-cone file is added to the index because it does
# not have a `skip-worktree` bit to signal that it should be ignored
# (unlike in `git add`, which will fail due to the file being outside
# the sparse checkout definition).
test_all_match git update-index --add folder1/b &&
test_all_match git status --porcelain=v2
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 30 - update-index --add outside sparse definition
expecting success of 1092.31 'update-index --remove outside sparse definition':
init_repos &&
# When --ignore-skip-worktree-entries is _not_ specified:
# out-of-cone, not-on-disk files are removed from the index
test_sparse_match git update-index --remove folder1/a &&
cat >expect <<-EOF &&
D folder1/a
EOF
test_sparse_match git diff --cached --name-status &&
test_cmp expect sparse-checkout-out &&
# Reset the state
test_all_match git reset --hard &&
# When --ignore-skip-worktree-entries is specified, out-of-cone
# (skip-worktree) files are ignored
test_sparse_match git update-index --remove --ignore-skip-worktree-entries folder1/a &&
test_sparse_match git diff --cached --name-status &&
test_must_be_empty sparse-checkout-out &&
# Reset the state
test_all_match git reset --hard &&
# --force-remove supercedes --ignore-skip-worktree-entries, removing
# a skip-worktree file from the index (and disk) when both are specified
# with --remove
test_sparse_match git update-index --force-remove --ignore-skip-worktree-entries folder1/a &&
cat >expect <<-EOF &&
D folder1/a
EOF
test_sparse_match git diff --cached --name-status &&
test_cmp expect sparse-checkout-out
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 31 - update-index --remove outside sparse definition
expecting success of 1092.32 'update-index with directories':
init_repos &&
# update-index will exit silently when provided with a directory name
# containing a trailing slash
test_all_match git update-index deep/ folder1/ &&
grep "Ignoring path deep/" sparse-checkout-err &&
grep "Ignoring path folder1/" sparse-checkout-err &&
# When update-index is given a directory name WITHOUT a trailing slash, it will
# behave in different ways depending on the status of the directory on disk:
# * if it exists, the command exits with an error ("add individual files instead")
# * if it does NOT exist (e.g., in a sparse-checkout), it is assumed to be a
# file and either triggers an error ("does not exist and --remove not passed")
# or is ignored completely (when using --remove)
test_all_match test_must_fail git update-index deep &&
run_on_all test_must_fail git update-index folder1 &&
test_must_fail git -C full-checkout update-index --remove folder1 &&
test_sparse_match git update-index --remove folder1 &&
test_all_match git status --porcelain=v2
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
Ignoring path deep/
Ignoring path folder1/
error: folder1: is a directory - add individual files instead
fatal: Unable to process path folder1
ok 32 - update-index with directories
expecting success of 1092.33 'update-index --again file outside sparse definition':
init_repos &&
test_all_match git checkout -b test-reupdate &&
# Update HEAD without modifying the index to introduce a difference in
# folder1/a
test_sparse_match git reset --soft update-folder1 &&
# Because folder1/a differs in the index vs HEAD,
# `git update-index --no-skip-worktree --again` will effectively perform
# `git update-index --no-skip-worktree folder1/a` and remove the skip-worktree
# flag from folder1/a
test_sparse_match git update-index --no-skip-worktree --again &&
test_sparse_match git status --porcelain=v2 &&
cat >expect <<-EOF &&
D folder1/a
EOF
test_sparse_match git diff --name-status &&
test_cmp expect sparse-checkout-out
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 33 - update-index --again file outside sparse definition
expecting success of 1092.34 'update-index --cacheinfo':
init_repos &&
deep_a_oid=$(git -C full-checkout rev-parse update-deep:deep/a) &&
folder2_oid=$(git -C full-checkout rev-parse update-folder2:folder2) &&
folder1_a_oid=$(git -C full-checkout rev-parse update-folder1:folder1/a) &&
test_all_match git update-index --cacheinfo 100644 $deep_a_oid deep/a &&
test_all_match git status --porcelain=v2 &&
# Cannot add sparse directory, even in sparse index case
test_all_match test_must_fail git update-index --add --cacheinfo 040000 $folder2_oid folder2/ &&
# Sparse match only: the new outside-of-cone entry is added *without* skip-worktree,
# so `git status` reports it as "deleted" in the worktree
test_sparse_match git update-index --add --cacheinfo 100644 $folder1_a_oid folder1/a &&
test_sparse_match git status --porcelain=v2 &&
cat >expect <<-EOF &&
MD folder1/a
EOF
test_sparse_match git status --short -- folder1/a &&
test_cmp expect sparse-checkout-out &&
# To return folder1/a to "normal" for a sparse checkout (ignored &
# outside-of-cone), add the skip-worktree flag.
test_sparse_match git update-index --skip-worktree folder1/a &&
cat >expect <<-EOF &&
S folder1/a
EOF
test_sparse_match git ls-files -t -- folder1/a &&
test_cmp expect sparse-checkout-out
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 34 - update-index --cacheinfo
expecting success of 1092.35 ''read-tree -mu base HEAD update-folder2' with files outside sparse definition':
init_repos &&
# Although the index matches, without --no-sparse-checkout, outside-of-
# definition files will not exist on disk for sparse checkouts
test_all_match git read-tree -mu $MERGE_TREES &&
test_all_match git status --porcelain=v2 &&
test_path_is_missing sparse-checkout/folder2 &&
test_path_is_missing sparse-index/folder2 &&
test_all_match git read-tree --reset -u HEAD &&
test_all_match git status --porcelain=v2 &&
test_all_match git read-tree -mu --no-sparse-checkout $MERGE_TREES &&
test_all_match git status --porcelain=v2 &&
test_cmp sparse-checkout/folder2/a sparse-index/folder2/a &&
test_cmp sparse-checkout/folder2/a full-checkout/folder2/a
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 35 - 'read-tree -mu base HEAD update-folder2' with files outside sparse definition
expecting success of 1092.36 ''read-tree -mu update-folder1 update-folder2' with files outside sparse definition':
init_repos &&
# Although the index matches, without --no-sparse-checkout, outside-of-
# definition files will not exist on disk for sparse checkouts
test_all_match git read-tree -mu $MERGE_TREES &&
test_all_match git status --porcelain=v2 &&
test_path_is_missing sparse-checkout/folder2 &&
test_path_is_missing sparse-index/folder2 &&
test_all_match git read-tree --reset -u HEAD &&
test_all_match git status --porcelain=v2 &&
test_all_match git read-tree -mu --no-sparse-checkout $MERGE_TREES &&
test_all_match git status --porcelain=v2 &&
test_cmp sparse-checkout/folder2/a sparse-index/folder2/a &&
test_cmp sparse-checkout/folder2/a full-checkout/folder2/a
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 36 - 'read-tree -mu update-folder1 update-folder2' with files outside sparse definition
expecting success of 1092.37 ''read-tree -mu update-folder2' with files outside sparse definition':
init_repos &&
# Although the index matches, without --no-sparse-checkout, outside-of-
# definition files will not exist on disk for sparse checkouts
test_all_match git read-tree -mu $MERGE_TREES &&
test_all_match git status --porcelain=v2 &&
test_path_is_missing sparse-checkout/folder2 &&
test_path_is_missing sparse-index/folder2 &&
test_all_match git read-tree --reset -u HEAD &&
test_all_match git status --porcelain=v2 &&
test_all_match git read-tree -mu --no-sparse-checkout $MERGE_TREES &&
test_all_match git status --porcelain=v2 &&
test_cmp sparse-checkout/folder2/a sparse-index/folder2/a &&
test_cmp sparse-checkout/folder2/a full-checkout/folder2/a
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 37 - 'read-tree -mu update-folder2' with files outside sparse definition
expecting success of 1092.38 'read-tree --merge with edit/edit conflicts in sparse directories':
init_repos &&
# Merge of multiple changes to same directory (but not same files) should
# succeed
test_all_match git read-tree -mu base rename-base update-folder1 &&
test_all_match git status --porcelain=v2 &&
test_all_match git reset --hard &&
test_all_match git read-tree -mu rename-base update-folder2 &&
test_all_match git status --porcelain=v2 &&
test_all_match git reset --hard &&
test_all_match test_must_fail git read-tree -mu base update-folder1 rename-out-to-in &&
test_all_match test_must_fail git read-tree -mu rename-out-to-in update-folder1
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 38 - read-tree --merge with edit/edit conflicts in sparse directories
expecting success of 1092.39 'read-tree --prefix':
init_repos &&
# If files differing between the index and target <commit-ish> exist
# inside the prefix, `read-tree --prefix` should fail
test_all_match test_must_fail git read-tree --prefix=deep/ deepest &&
test_all_match test_must_fail git read-tree --prefix=folder1/ update-folder1 &&
# If no differing index entries exist matching the prefix,
# `read-tree --prefix` updates the index successfully
test_all_match git rm -rf deep/deeper1/deepest/ &&
test_all_match git read-tree --prefix=deep/deeper1/deepest -u deepest &&
test_all_match git status --porcelain=v2 &&
run_on_all git rm -rf --sparse folder1/ &&
test_all_match git read-tree --prefix=folder1/ -u update-folder1 &&
test_all_match git status --porcelain=v2 &&
test_all_match git rm -rf --sparse folder2/0 &&
test_all_match git read-tree --prefix=folder2/0/ -u rename-out-to-out &&
test_all_match git status --porcelain=v2
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 39 - read-tree --prefix
expecting success of 1092.40 'read-tree --merge with directory-file conflicts':
init_repos &&
test_all_match git checkout -b test-branch rename-base &&
# Although the index matches, without --no-sparse-checkout, outside-of-
# definition files will not exist on disk for sparse checkouts
test_sparse_match git read-tree -mu rename-out-to-out &&
test_sparse_match git status --porcelain=v2 &&
test_path_is_missing sparse-checkout/folder2 &&
test_path_is_missing sparse-index/folder2 &&
test_sparse_match git read-tree --reset -u HEAD &&
test_sparse_match git status --porcelain=v2 &&
test_sparse_match git read-tree -mu --no-sparse-checkout rename-out-to-out &&
test_sparse_match git status --porcelain=v2 &&
test_cmp sparse-checkout/folder2/0/1 sparse-index/folder2/0/1
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 40 - read-tree --merge with directory-file conflicts
expecting success of 1092.41 'merge, cherry-pick, and rebase':
init_repos &&
for OPERATION in "merge -m merge" cherry-pick "rebase --apply" "rebase --merge"
do
test_all_match git checkout -B temp update-deep &&
test_all_match git $OPERATION update-folder1 &&
test_all_match git rev-parse HEAD^{tree} &&
test_all_match git $OPERATION update-folder2 &&
test_all_match git rev-parse HEAD^{tree} || return 1
done
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 41 - merge, cherry-pick, and rebase
expecting success of 1092.42 'merge with conflict outside cone':
init_repos &&
test_all_match git checkout -b merge-tip merge-left &&
test_all_match git status --porcelain=v2 &&
test_all_match test_must_fail git merge -m merge merge-right &&
test_all_match git status --porcelain=v2 &&
# Resolve the conflict in different ways:
# 1. Revert to the base
test_all_match git checkout base -- deep/deeper2/a &&
test_all_match git status --porcelain=v2 &&
# 2. Add the file with conflict markers
test_sparse_match test_must_fail git add folder1/a &&
grep "Disable or modify the sparsity rules" sparse-checkout-err &&
test_sparse_unstaged folder1/a &&
test_all_match git add --sparse folder1/a &&
test_all_match git status --porcelain=v2 &&
# 3. Rename the file to another sparse filename and
# accept conflict markers as resolved content.
run_on_all mv folder2/a folder2/z &&
test_sparse_match test_must_fail git add folder2 &&
grep "Disable or modify the sparsity rules" sparse-checkout-err &&
test_sparse_unstaged folder2/z &&
test_all_match git add --sparse folder2 &&
test_all_match git status --porcelain=v2 &&
test_all_match git merge --continue &&
test_all_match git status --porcelain=v2 &&
test_all_match git rev-parse HEAD^{tree}
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
hint: * Disable or modify the sparsity rules.
hint: * Disable or modify the sparsity rules.
ok 42 - merge with conflict outside cone
expecting success of 1092.43 'cherry-pick/rebase with conflict outside cone':
init_repos &&
for OPERATION in cherry-pick rebase
do
test_all_match git checkout -B tip &&
test_all_match git reset --hard merge-left &&
test_all_match git status --porcelain=v2 &&
test_all_match test_must_fail git $OPERATION merge-right &&
test_all_match git status --porcelain=v2 &&
# Resolve the conflict in different ways:
# 1. Revert to the base
test_all_match git checkout base -- deep/deeper2/a &&
test_all_match git status --porcelain=v2 &&
# 2. Add the file with conflict markers
# NEEDSWORK: Even though the merge conflict removed the
# SKIP_WORKTREE bit from the index entry for folder1/a, we should
# warn that this is a problematic add.
test_sparse_match test_must_fail git add folder1/a &&
grep "Disable or modify the sparsity rules" sparse-checkout-err &&
test_sparse_unstaged folder1/a &&
test_all_match git add --sparse folder1/a &&
test_all_match git status --porcelain=v2 &&
# 3. Rename the file to another sparse filename and
# accept conflict markers as resolved content.
# NEEDSWORK: This mode now fails, because folder2/z is
# outside of the sparse-checkout cone and does not match an
# existing index entry with the SKIP_WORKTREE bit cleared.
run_on_all mv folder2/a folder2/z &&
test_sparse_match test_must_fail git add folder2 &&
grep "Disable or modify the sparsity rules" sparse-checkout-err &&
test_sparse_unstaged folder2/z &&
test_all_match git add --sparse folder2 &&
test_all_match git status --porcelain=v2 &&
test_all_match git $OPERATION --continue &&
test_all_match git status --porcelain=v2 &&
test_all_match git rev-parse HEAD^{tree} || return 1
done
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
hint: * Disable or modify the sparsity rules.
hint: * Disable or modify the sparsity rules.
hint: * Disable or modify the sparsity rules.
hint: * Disable or modify the sparsity rules.
ok 43 - cherry-pick/rebase with conflict outside cone
expecting success of 1092.44 'merge with outside renames':
init_repos &&
for type in out-to-out out-to-in in-to-out
do
test_all_match git reset --hard &&
test_all_match git checkout -f -b merge-$type update-deep &&
test_all_match git merge -m "$type" rename-$type &&
test_all_match git rev-parse HEAD^{tree} || return 1
done
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 44 - merge with outside renames
expecting success of 1092.45 'cherry-pick with conflicts':
init_repos &&
write_script edit-conflict <<-\EOF &&
echo $1 >conflict
EOF
test_all_match git checkout -b to-cherry-pick &&
run_on_all ../edit-conflict ABC &&
test_all_match git add conflict &&
test_all_match git commit -m "conflict to pick" &&
test_all_match git checkout -B base HEAD~1 &&
run_on_all ../edit-conflict DEF &&
test_all_match git add conflict &&
test_all_match git commit -m "conflict in base" &&
test_all_match test_must_fail git cherry-pick to-cherry-pick
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 45 - cherry-pick with conflicts
expecting success of 1092.46 'stash':
init_repos &&
write_script edit-contents <<-\EOF &&
echo text >>$1
EOF
# Stash a sparse directory (folder1)
test_all_match git checkout -b test-branch rename-base &&
test_all_match git reset --soft rename-out-to-out &&
test_all_match git stash &&
test_all_match git status --porcelain=v2 &&
# Apply the sparse directory stash without reinstating the index
test_all_match git stash apply -q &&
test_all_match git status --porcelain=v2 &&
# Reset to state where stash can be applied
test_sparse_match git sparse-checkout reapply &&
test_all_match git reset --hard rename-out-to-out &&
# Apply the sparse directory stash *with* reinstating the index
test_all_match git stash apply --index -q &&
test_all_match git status --porcelain=v2 &&
# Reset to state where we will get a conflict applying the stash
test_sparse_match git sparse-checkout reapply &&
test_all_match git reset --hard update-folder1 &&
# Apply the sparse directory stash with conflicts
test_all_match test_must_fail git stash apply --index -q &&
test_all_match test_must_fail git stash apply -q &&
test_all_match git status --porcelain=v2 &&
# Reset to base branch
test_sparse_match git sparse-checkout reapply &&
test_all_match git reset --hard base &&
# Stash & unstash an untracked file outside of the sparse checkout
# definition.
run_on_sparse mkdir -p folder1 &&
run_on_all ../edit-contents folder1/new &&
test_all_match git stash -u &&
test_all_match git status --porcelain=v2 &&
test_all_match git stash pop -q &&
test_all_match git status --porcelain=v2
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 46 - stash
expecting success of 1092.47 'checkout-index inside sparse definition':
init_repos &&
run_on_all rm -f deep/a &&
test_all_match git checkout-index -- deep/a &&
test_all_match git status --porcelain=v2 &&
echo test >>new-a &&
run_on_all cp ../new-a a &&
test_all_match test_must_fail git checkout-index -- a &&
test_all_match git checkout-index -f -- a &&
test_all_match git status --porcelain=v2
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 47 - checkout-index inside sparse definition
expecting success of 1092.48 'checkout-index outside sparse definition':
init_repos &&
# Without --ignore-skip-worktree-bits, outside-of-cone files will trigger
# an error
test_sparse_match test_must_fail git checkout-index -- folder1/a &&
test_i18ngrep "folder1/a has skip-worktree enabled" sparse-checkout-err &&
test_path_is_missing folder1/a &&
# With --ignore-skip-worktree-bits, outside-of-cone files are checked out
test_sparse_match git checkout-index --ignore-skip-worktree-bits -- folder1/a &&
test_cmp sparse-checkout/folder1/a sparse-index/folder1/a &&
test_cmp sparse-checkout/folder1/a full-checkout/folder1/a &&
run_on_sparse rm -rf folder1 &&
echo test >new-a &&
run_on_sparse mkdir -p folder1 &&
run_on_all cp ../new-a folder1/a &&
test_all_match test_must_fail git checkout-index --ignore-skip-worktree-bits -- folder1/a &&
test_all_match git checkout-index -f --ignore-skip-worktree-bits -- folder1/a &&
test_cmp sparse-checkout/folder1/a sparse-index/folder1/a &&
test_cmp sparse-checkout/folder1/a full-checkout/folder1/a
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
git checkout-index: folder1/a has skip-worktree enabled; use '--ignore-skip-worktree-bits' to checkout
ok 48 - checkout-index outside sparse definition
expecting success of 1092.49 'checkout-index with folders':
init_repos &&
# Inside checkout definition
test_all_match test_must_fail git checkout-index -f -- deep/ &&
# Outside checkout definition
# Note: although all tests fail (as expected), the messaging differs. For
# non-sparse index checkouts, the error is that the "file" does not appear
# in the index; for sparse checkouts, the error is explicitly that the
# entry is a sparse directory.
run_on_all test_must_fail git checkout-index -f -- folder1/ &&
test_cmp full-checkout-err sparse-checkout-err &&
! test_cmp full-checkout-err sparse-index-err &&
grep "is a sparse directory" sparse-index-err
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
--- full-checkout-err 2023-10-09 02:18:18.905167141 +0000
+++ sparse-index-err 2023-10-09 02:18:18.917167139 +0000
@@ -1 +1 @@
-git checkout-index: folder1/ is not in the cache
+git checkout-index: folder1/ is a sparse directory
git checkout-index: folder1/ is a sparse directory
ok 49 - checkout-index with folders
expecting success of 1092.50 'checkout-index --all':
init_repos &&
test_all_match git checkout-index --all &&
test_sparse_match test_path_is_missing folder1 &&
# --ignore-skip-worktree-bits will cause `skip-worktree` files to be
# checked out, causing the outside-of-cone `folder1` to exist on-disk
test_all_match git checkout-index --ignore-skip-worktree-bits --all &&
test_all_match test_path_exists folder1
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 50 - checkout-index --all
expecting success of 1092.51 'clean':
init_repos &&
echo bogus >>.gitignore &&
run_on_all cp ../.gitignore . &&
test_all_match git add .gitignore &&
test_all_match git commit -m "ignore bogus files" &&
run_on_sparse mkdir folder1 &&
run_on_all mkdir -p deep/untracked-deep &&
run_on_all touch folder1/bogus &&
run_on_all touch folder1/untracked &&
run_on_all touch deep/untracked-deep/bogus &&
run_on_all touch deep/untracked-deep/untracked &&
test_all_match git status --porcelain=v2 &&
test_all_match git clean -f &&
test_all_match git status --porcelain=v2 &&
test_sparse_match ls &&
test_sparse_match ls folder1 &&
run_on_all test_path_exists folder1/bogus &&
run_on_all test_path_is_missing folder1/untracked &&
run_on_all test_path_exists deep/untracked-deep/bogus &&
run_on_all test_path_exists deep/untracked-deep/untracked &&
test_all_match git clean -fd &&
test_all_match git status --porcelain=v2 &&
test_sparse_match ls &&
test_sparse_match ls folder1 &&
run_on_all test_path_exists folder1/bogus &&
run_on_all test_path_exists deep/untracked-deep/bogus &&
run_on_all test_path_is_missing deep/untracked-deep/untracked &&
test_all_match git clean -xf &&
test_all_match git status --porcelain=v2 &&
test_sparse_match ls &&
test_sparse_match ls folder1 &&
run_on_all test_path_is_missing folder1/bogus &&
run_on_all test_path_exists deep/untracked-deep/bogus &&
test_all_match git clean -xdf &&
test_all_match git status --porcelain=v2 &&
test_sparse_match ls &&
test_sparse_match ls folder1 &&
run_on_all test_path_is_missing deep/untracked-deep/bogus &&
test_sparse_match test_path_is_dir folder1
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 51 - clean
expecting success of 1092.52 'show (cached blobs/trees)':
init_repos &&
test_all_match git show :a &&
test_all_match git show :deep/a &&
test_sparse_match git show :folder1/a &&
# The error message differs depending on whether
# the directory exists in the worktree.
test_all_match test_must_fail git show :deep/ &&
test_must_fail git -C full-checkout show :folder1/ &&
test_sparse_match test_must_fail git show :folder1/ &&
# Change the sparse cone for an extra case:
run_on_sparse git sparse-checkout set deep/deeper1 &&
# deep/deeper2 is a sparse directory in the sparse index.
test_sparse_match test_must_fail git show :deep/deeper2/ &&
# deep/deeper2/deepest is not in the sparse index, but
# will trigger an index expansion.
test_sparse_match test_must_fail git show :deep/deeper2/deepest/
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
fatal: path 'folder1/' exists on disk, but not in the index
ok 52 - show (cached blobs/trees)
expecting success of 1092.53 'rev-parse (cached blobs/trees)':
init_repos &&
test_all_match git rev-parse :a &&
test_all_match git rev-parse :deep/a &&
test_sparse_match git rev-parse :folder1/a &&
# The error message differs depending on whether
# the directory exists in the worktree.
test_all_match test_must_fail git rev-parse :deep/ &&
test_must_fail git -C full-checkout rev-parse :folder1/ &&
test_sparse_match test_must_fail git rev-parse :folder1/ &&
# Change the sparse cone for an extra case:
run_on_sparse git sparse-checkout set deep/deeper1 &&
# deep/deeper2 is a sparse directory in the sparse index.
test_sparse_match test_must_fail git rev-parse :deep/deeper2/ &&
# deep/deeper2/deepest is not in the sparse index, but
# will trigger an index expansion.
test_sparse_match test_must_fail git rev-parse :deep/deeper2/deepest/
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
fatal: path 'folder1/' exists on disk, but not in the index
:folder1/
ok 53 - rev-parse (cached blobs/trees)
expecting success of 1092.54 'submodule handling':
init_repos &&
test_sparse_match git sparse-checkout add modules &&
test_all_match mkdir modules &&
test_all_match touch modules/a &&
test_all_match git add modules &&
test_all_match git commit -m "add modules directory" &&
test_config_global protocol.file.allow always &&
run_on_all git submodule add "$(pwd)/initial-repo" modules/sub &&
test_all_match git commit -m "add submodule" &&
# having a submodule prevents "modules" from collapse
test_sparse_match git sparse-checkout set deep/deeper1 &&
git -C sparse-index ls-files --sparse --stage >cache &&
grep "100644 .* modules/a" cache &&
grep "160000 $(git -C initial-repo rev-parse HEAD) 0 modules/sub" cache
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0 modules/a
160000 703fd3e56687611d5c0264e6f007e18e96f794bf 0 modules/sub
ok 54 - submodule handling
expecting success of 1092.55 'sparse-index is expanded and converted back':
init_repos &&
GIT_TRACE2_EVENT="$(pwd)/trace2.txt" \
git -C sparse-index reset -- folder1/a &&
test_region index convert_to_sparse trace2.txt &&
test_region index ensure_full_index trace2.txt &&
# ls-files expands on read, but does not write.
rm trace2.txt &&
GIT_TRACE2_EVENT="$(pwd)/trace2.txt" GIT_TRACE2_EVENT_NESTING=10 \
git -C sparse-index ls-files &&
test_region index ensure_full_index trace2.txt
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
{"event":"region_enter","sid":"20231009T021821.077078Z-Hc7420fa0-P001782c4","thread":"main","time":"2023-10-09T02:18:21.083949Z","file":"sparse-index.c","line":210,"repo":1,"nesting":1,"category":"index","label":"convert_to_sparse"}
{"event":"region_leave","sid":"20231009T021821.077078Z-Hc7420fa0-P001782c4","thread":"main","time":"2023-10-09T02:18:21.084247Z","file":"sparse-index.c","line":224,"repo":1,"t_rel":0.000299,"nesting":1,"category":"index","label":"convert_to_sparse"}
{"event":"region_enter","sid":"20231009T021821.077078Z-Hc7420fa0-P001782c4","thread":"main","time":"2023-10-09T02:18:21.081287Z","file":"sparse-index.c","line":338,"repo":1,"nesting":1,"category":"index","label":"ensure_full_index"}
{"event":"region_enter","sid":"20231009T021821.077078Z-Hc7420fa0-P001782c4","thread":"main","time":"2023-10-09T02:18:21.084984Z","file":"sparse-index.c","line":338,"repo":1,"nesting":1,"category":"index","label":"ensure_full_index"}
{"event":"region_leave","sid":"20231009T021821.077078Z-Hc7420fa0-P001782c4","thread":"main","time":"2023-10-09T02:18:21.082871Z","file":"sparse-index.c","line":420,"repo":1,"t_rel":0.001579,"nesting":1,"category":"index","label":"ensure_full_index"}
{"event":"region_leave","sid":"20231009T021821.077078Z-Hc7420fa0-P001782c4","thread":"main","time":"2023-10-09T02:18:21.085368Z","file":"sparse-index.c","line":420,"repo":1,"t_rel":0.000384,"nesting":1,"category":"index","label":"ensure_full_index"}
a
before/a
before/b
deep/a
deep/before/a
deep/deeper1/0/0/0
deep/deeper1/0/1
deep/deeper1/a
deep/deeper1/deepest/a
deep/deeper1/deepest2/a
deep/deeper1/deepest3/a
deep/deeper1/e
deep/deeper2/a
deep/deeper2/deeper1/a
deep/deeper2/deeper1/deepest/a
deep/deeper2/deeper1/deepest2/a
deep/deeper2/deeper1/deepest3/a
deep/deeper2/deeper1/e
deep/e
deep/later/a
e
folder1-
folder1.x
folder1/0/0/0
folder1/0/1
folder1/a
folder10
folder2/0/0/0
folder2/0/1
folder2/a
g
x/a
z
{"event":"region_enter","sid":"20231009T021821.095780Z-Hc7420fa0-P001782df","thread":"main","time":"2023-10-09T02:18:21.097252Z","file":"sparse-index.c","line":338,"repo":1,"nesting":1,"category":"index","label":"ensure_full_index"}
{"event":"region_leave","sid":"20231009T021821.095780Z-Hc7420fa0-P001782df","thread":"main","time":"2023-10-09T02:18:21.099298Z","file":"sparse-index.c","line":420,"repo":1,"t_rel":0.002046,"nesting":1,"category":"index","label":"ensure_full_index"}
ok 55 - sparse-index is expanded and converted back
expecting success of 1092.56 'index.sparse disabled inline uses full index':
init_repos &&
# When index.sparse is disabled inline with `git status`, the
# index is expanded at the beginning of the execution then never
# converted back to sparse. It is then written to disk as a full index.
rm -f trace2.txt &&
GIT_TRACE2_EVENT="$(pwd)/trace2.txt" GIT_TRACE2_EVENT_NESTING=10 \
git -C sparse-index -c index.sparse=false status &&
! test_region index convert_to_sparse trace2.txt &&
test_region index ensure_full_index trace2.txt &&
# Since index.sparse is set to true at a repo level, the index
# is converted from full to sparse when read, then never expanded
# over the course of `git status`. It is written to disk as a sparse
# index.
rm -f trace2.txt &&
GIT_TRACE2_EVENT="$(pwd)/trace2.txt" GIT_TRACE2_EVENT_NESTING=10 \
git -C sparse-index status &&
test_region index convert_to_sparse trace2.txt &&
! test_region index ensure_full_index trace2.txt &&
# Now that the index has been written to disk as sparse, it is not
# converted to sparse (or expanded to full) when read by `git status`.
rm -f trace2.txt &&
GIT_TRACE2_EVENT="$(pwd)/trace2.txt" GIT_TRACE2_EVENT_NESTING=10 \
git -C sparse-index status &&
! test_region index convert_to_sparse trace2.txt &&
! test_region index ensure_full_index trace2.txt
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
On branch base
You are in a sparse checkout with 73% of tracked files present.
nothing to commit, working tree clean
{"event":"region_enter","sid":"20231009T021821.292679Z-Hc7420fa0-P001783bb","thread":"main","time":"2023-10-09T02:18:21.294378Z","file":"sparse-index.c","line":338,"repo":1,"nesting":2,"category":"index","label":"ensure_full_index"}
{"event":"region_leave","sid":"20231009T021821.292679Z-Hc7420fa0-P001783bb","thread":"main","time":"2023-10-09T02:18:21.296152Z","file":"sparse-index.c","line":420,"repo":1,"t_rel":0.001772,"nesting":2,"category":"index","label":"ensure_full_index"}
On branch base
You are in a sparse checkout.
nothing to commit, working tree clean
{"event":"region_enter","sid":"20231009T021821.310152Z-Hc7420fa0-P001783cb","thread":"main","time":"2023-10-09T02:18:21.311529Z","file":"sparse-index.c","line":210,"repo":1,"nesting":2,"category":"index","label":"convert_to_sparse"}
{"event":"region_leave","sid":"20231009T021821.310152Z-Hc7420fa0-P001783cb","thread":"main","time":"2023-10-09T02:18:21.311885Z","file":"sparse-index.c","line":224,"repo":1,"t_rel":0.000357,"nesting":2,"category":"index","label":"convert_to_sparse"}
On branch base
You are in a sparse checkout.
nothing to commit, working tree clean
ok 56 - index.sparse disabled inline uses full index
expecting success of 1092.57 'sparse-index is not expanded':
init_repos &&
ensure_not_expanded status &&
ensure_not_expanded ls-files --sparse &&
ensure_not_expanded commit --allow-empty -m empty &&
echo >>sparse-index/a &&
ensure_not_expanded commit -a -m a &&
echo >>sparse-index/a &&
ensure_not_expanded commit --include a -m a &&
echo >>sparse-index/deep/deeper1/a &&
ensure_not_expanded commit --include deep/deeper1/a -m deeper &&
ensure_not_expanded checkout rename-out-to-out &&
ensure_not_expanded checkout - &&
ensure_not_expanded switch rename-out-to-out &&
ensure_not_expanded switch - &&
ensure_not_expanded reset --hard &&
ensure_not_expanded checkout rename-out-to-out -- deep/deeper1 &&
ensure_not_expanded reset --hard &&
ensure_not_expanded restore -s rename-out-to-out -- deep/deeper1 &&
echo >>sparse-index/README.md &&
ensure_not_expanded add -A &&
echo >>sparse-index/extra.txt &&
ensure_not_expanded add extra.txt &&
echo >>sparse-index/untracked.txt &&
ensure_not_expanded add . &&
ensure_not_expanded checkout-index -f a &&
ensure_not_expanded checkout-index -f --all &&
for ref in update-deep update-folder1 update-folder2 update-deep
do
echo >>sparse-index/README.md &&
ensure_not_expanded reset --hard $ref || return 1
done &&
ensure_not_expanded reset --mixed base &&
ensure_not_expanded reset --hard update-deep &&
ensure_not_expanded reset --keep base &&
ensure_not_expanded reset --merge update-deep &&
ensure_not_expanded reset --hard &&
ensure_not_expanded reset base -- deep/a &&
ensure_not_expanded reset base -- nonexistent-file &&
ensure_not_expanded reset deepest -- deep &&
# Although folder1 is outside the sparse definition, it exists as a
# directory entry in the index, so the pathspec will not force the
# index to be expanded.
ensure_not_expanded reset deepest -- folder1 &&
ensure_not_expanded reset deepest -- folder1/ &&
# Wildcard identifies only in-cone files, no index expansion
ensure_not_expanded reset deepest -- deep/\* &&
# Wildcard identifies only full sparse directories, no index expansion
ensure_not_expanded reset deepest -- folder\* &&
ensure_not_expanded clean -fd &&
ensure_not_expanded checkout -f update-deep &&
test_config -C sparse-index pull.twohead ort &&
(
sane_unset GIT_TEST_MERGE_ALGORITHM &&
for OPERATION in "merge -m merge" cherry-pick rebase
do
ensure_not_expanded merge -m merge update-folder1 &&
ensure_not_expanded merge -m merge update-folder2 || return 1
done
)
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 57 - sparse-index is not expanded
expecting success of 1092.58 'sparse-index is not expanded: merge conflict in cone':
init_repos &&
for side in right left
do
git -C sparse-index checkout -b expand-$side base &&
echo $side >sparse-index/deep/a &&
git -C sparse-index commit -a -m "$side" || return 1
done &&
(
sane_unset GIT_TEST_MERGE_ALGORITHM &&
git -C sparse-index config pull.twohead ort &&
ensure_not_expanded ! merge -m merged expand-right
)
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
Switched to a new branch 'expand-right'
[expand-right 5ebbff9] right
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to a new branch 'expand-left'
[expand-left 9bcd6b8] left
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 58 - sparse-index is not expanded: merge conflict in cone
expecting success of 1092.59 'sparse-index is not expanded: stash':
init_repos &&
echo >>sparse-index/a &&
ensure_not_expanded stash &&
ensure_not_expanded stash list &&
ensure_not_expanded stash show stash@{0} &&
ensure_not_expanded stash apply stash@{0} &&
ensure_not_expanded stash drop stash@{0} &&
echo >>sparse-index/deep/new &&
ensure_not_expanded stash -u &&
(
WITHOUT_UNTRACKED_TXT=1 &&
ensure_not_expanded stash pop
) &&
ensure_not_expanded stash create &&
oid=$(git -C sparse-index stash create) &&
ensure_not_expanded stash store -m "test" $oid &&
ensure_not_expanded reset --hard &&
ensure_not_expanded stash pop
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 59 - sparse-index is not expanded: stash
expecting success of 1092.60 'describe tested on all':
init_repos &&
# Add tag to be read by describe
run_on_all git tag -a v1.0 -m "Version 1" &&
test_all_match git describe --dirty &&
run_on_all rm g &&
test_all_match git describe --dirty
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 60 - describe tested on all
expecting success of 1092.61 'sparse-index is not expanded: describe':
init_repos &&
# Add tag to be read by describe
git -C sparse-index tag -a v1.0 -m "Version 1" &&
ensure_not_expanded describe --dirty &&
echo "test" >>sparse-index/g &&
ensure_not_expanded describe --dirty &&
ensure_not_expanded describe
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 61 - sparse-index is not expanded: describe
expecting success of 1092.62 'sparse index is not expanded: diff':
init_repos &&
write_script edit-contents <<-\EOF &&
echo text >>$1
EOF
# Add file within cone
test_sparse_match git sparse-checkout set deep &&
run_on_all ../edit-contents deep/testfile &&
test_all_match git add deep/testfile &&
run_on_all ../edit-contents deep/testfile &&
test_all_match git diff &&
test_all_match git diff --cached &&
ensure_not_expanded diff &&
ensure_not_expanded diff --cached &&
# Add file outside cone
test_all_match git reset --hard &&
run_on_all mkdir newdirectory &&
run_on_all ../edit-contents newdirectory/testfile &&
test_sparse_match git sparse-checkout set newdirectory &&
test_all_match git add newdirectory/testfile &&
run_on_all ../edit-contents newdirectory/testfile &&
test_sparse_match git sparse-checkout set &&
test_all_match git diff &&
test_all_match git diff --cached &&
ensure_not_expanded diff &&
ensure_not_expanded diff --cached &&
# Merge conflict outside cone
# The sparse checkout will report a warning that is not in the
# full checkout, so we use `run_on_all` instead of
# `test_all_match`
run_on_all git reset --hard &&
test_all_match git checkout merge-left &&
test_all_match test_must_fail git merge merge-right &&
test_all_match git diff &&
test_all_match git diff --cached &&
ensure_not_expanded diff &&
ensure_not_expanded diff --cached
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 62 - sparse index is not expanded: diff
expecting success of 1092.63 'sparse index is not expanded: show and rev-parse':
init_repos &&
ensure_not_expanded show :a &&
ensure_not_expanded show :deep/a &&
ensure_not_expanded rev-parse :a &&
ensure_not_expanded rev-parse :deep/a
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 63 - sparse index is not expanded: show and rev-parse
expecting success of 1092.64 'sparse index is not expanded: update-index':
init_repos &&
deep_a_oid=$(git -C full-checkout rev-parse update-deep:deep/a) &&
ensure_not_expanded update-index --cacheinfo 100644 $deep_a_oid deep/a &&
echo "test" >sparse-index/README.md &&
echo "test2" >sparse-index/a &&
rm -f sparse-index/deep/a &&
ensure_not_expanded update-index --add README.md &&
ensure_not_expanded update-index a &&
ensure_not_expanded update-index --remove deep/a &&
ensure_not_expanded reset --soft update-deep &&
ensure_not_expanded update-index --add --remove --again
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 64 - sparse index is not expanded: update-index
expecting success of 1092.65 'sparse index is not expanded: blame':
init_repos &&
for file in a \
deep/a \
deep/deeper1/a \
deep/deeper1/deepest/a
do
ensure_not_expanded blame $file || return 1
done
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 65 - sparse index is not expanded: blame
expecting success of 1092.66 'sparse index is not expanded: fetch/pull':
init_repos &&
git -C sparse-index remote add full "file://$(pwd)/full-checkout" &&
ensure_not_expanded fetch full &&
git -C full-checkout commit --allow-empty -m "for pull merge" &&
git -C sparse-index commit --allow-empty -m "for pull merge" &&
ensure_not_expanded pull full base
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
[base f236285] for pull merge
Author: A U Thor <author@example.com>
[base f236285] for pull merge
Author: A U Thor <author@example.com>
ok 66 - sparse index is not expanded: fetch/pull
expecting success of 1092.67 'sparse index is not expanded: read-tree':
init_repos &&
ensure_not_expanded checkout -b test-branch update-folder1 &&
for MERGE_TREES in "base HEAD update-folder2" \
"base HEAD rename-base" \
"base update-folder2" \
"base rename-base" \
"update-folder2"
do
ensure_not_expanded read-tree -mu $MERGE_TREES &&
ensure_not_expanded reset --hard || return 1
done &&
rm -rf sparse-index/deep/deeper2 &&
ensure_not_expanded add . &&
ensure_not_expanded commit -m "test" &&
ensure_not_expanded read-tree --prefix=deep/deeper2 -u deepest
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 67 - sparse index is not expanded: read-tree
expecting success of 1092.68 'ls-files':
init_repos &&
# Use a smaller sparse-checkout for reduced output
test_sparse_match git sparse-checkout set &&
# Behavior agrees by default. Sparse index is expanded.
test_all_match git ls-files &&
# With --sparse, the sparse index data changes behavior.
git -C sparse-index ls-files --sparse >actual &&
cat >expect <<-\EOF &&
a
before/
deep/
e
folder1-
folder1.x
folder1/
folder10
folder2/
g
x/
z
EOF
test_cmp expect actual &&
# With --sparse and no sparse index, nothing changes.
git -C sparse-checkout ls-files >dense &&
git -C sparse-checkout ls-files --sparse >sparse &&
test_cmp dense sparse &&
# Set up a strange condition of having a file edit
# outside of the sparse-checkout cone. We want to verify
# that all modes handle this the same, and detect the
# modification.
write_script edit-content <<-\EOF &&
mkdir -p folder1 &&
echo content >>folder1/a
EOF
run_on_all ../edit-content &&
test_all_match git ls-files --modified &&
git -C sparse-index ls-files --sparse --modified >sparse-index-out &&
cat >expect <<-\EOF &&
folder1/a
EOF
test_cmp expect sparse-index-out &&
# Add folder1 to the sparse-checkout cone and
# check that ls-files shows the expanded files.
test_sparse_match git sparse-checkout add folder1 &&
test_all_match git ls-files --modified &&
test_all_match git ls-files &&
git -C sparse-index ls-files --sparse >actual &&
cat >expect <<-\EOF &&
a
before/
deep/
e
folder1-
folder1.x
folder1/0/0/0
folder1/0/1
folder1/a
folder10
folder2/
g
x/
z
EOF
test_cmp expect actual &&
# Double-check index expansion is avoided
ensure_not_expanded ls-files --sparse
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 68 - ls-files
expecting success of 1092.69 'sparse index is not expanded: sparse-checkout':
init_repos &&
ensure_not_expanded sparse-checkout set deep/deeper2 &&
ensure_not_expanded sparse-checkout set deep/deeper1 &&
ensure_not_expanded sparse-checkout set deep &&
ensure_not_expanded sparse-checkout add folder1 &&
ensure_not_expanded sparse-checkout set deep/deeper1 &&
ensure_not_expanded sparse-checkout set folder2 &&
# Demonstrate that the checks that "folder1/a" is a file
# do not cause a sparse-index expansion (since it is in the
# sparse-checkout cone).
echo >>sparse-index/folder2/a &&
git -C sparse-index add folder2/a &&
ensure_not_expanded sparse-checkout add folder1 &&
# Skip checks here, since deep/deeper1 is inside a sparse directory
# that must be expanded to check whether `deep/deeper1` is a file
# or not.
ensure_not_expanded sparse-checkout set --skip-checks deep/deeper1 &&
ensure_not_expanded sparse-checkout set
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 69 - sparse index is not expanded: sparse-checkout
expecting success of 1092.70 'reset mixed and checkout orphan':
init_repos &&
test_all_match git checkout rename-out-to-in &&
# Sparse checkouts do not agree with full checkouts about
# how to report a directory/file conflict during a reset.
# This command would fail with test_all_match because the
# full checkout reports "T folder1/0/1" while a sparse
# checkout reports "D folder1/0/1". This matches because
# the sparse checkouts skip "adding" the other side of
# the conflict.
test_sparse_match git reset --mixed HEAD~1 &&
test_sparse_match git ls-files --stage &&
test_sparse_match git status --porcelain=v2 &&
# At this point, sparse-checkouts behave differently
# from the full-checkout.
test_sparse_match git checkout --orphan new-branch &&
test_sparse_match git ls-files --stage &&
test_sparse_match git status --porcelain=v2
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 70 - reset mixed and checkout orphan
expecting success of 1092.71 'add everything with deep new file':
init_repos &&
run_on_sparse git sparse-checkout set deep/deeper1/deepest &&
run_on_all touch deep/deeper1/x &&
test_all_match git add . &&
test_all_match git status --porcelain=v2
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 71 - add everything with deep new file
expecting success of 1092.72 'checkout behaves oddly with df-conflict-1':
init_repos &&
test_sparse_match git sparse-checkout disable &&
write_script edit-content <<-\EOF &&
echo content >>folder1/larger-content
git add folder1
EOF
run_on_all ../edit-content &&
test_all_match git status --porcelain=v2 &&
git -C sparse-checkout sparse-checkout init --cone &&
git -C sparse-index sparse-checkout init --cone --sparse-index &&
test_all_match git status --porcelain=v2 &&
# This checkout command should fail, because we have a staged
# change to folder1/larger-content, but the destination changes
# folder1 to a file.
git -C full-checkout checkout df-conflict-1 \
1>full-checkout-out \
2>full-checkout-err &&
git -C sparse-checkout checkout df-conflict-1 \
1>sparse-checkout-out \
2>sparse-checkout-err &&
git -C sparse-index checkout df-conflict-1 \
1>sparse-index-out \
2>sparse-index-err &&
# Instead, the checkout deletes the folder1 file and adds the
# folder1/larger-content file, leaving all other paths that were
# in folder1/ as deleted (without any warning).
cat >expect <<-EOF &&
D folder1
A folder1/larger-content
EOF
test_cmp expect full-checkout-out &&
test_cmp expect sparse-checkout-out &&
# The sparse-index reports no output
test_must_be_empty sparse-index-out &&
# stderr: Switched to branch df-conflict-1
test_cmp full-checkout-err sparse-checkout-err &&
test_cmp full-checkout-err sparse-checkout-err
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 72 - checkout behaves oddly with df-conflict-1
expecting success of 1092.73 'checkout behaves oddly with df-conflict-2':
init_repos &&
test_sparse_match git sparse-checkout disable &&
write_script edit-content <<-\EOF &&
echo content >>folder2/larger-content
git add folder2
EOF
run_on_all ../edit-content &&
test_all_match git status --porcelain=v2 &&
git -C sparse-checkout sparse-checkout init --cone &&
git -C sparse-index sparse-checkout init --cone --sparse-index &&
test_all_match git status --porcelain=v2 &&
# This checkout command should fail, because we have a staged
# change to folder1/larger-content, but the destination changes
# folder1 to a file.
git -C full-checkout checkout df-conflict-2 \
1>full-checkout-out \
2>full-checkout-err &&
git -C sparse-checkout checkout df-conflict-2 \
1>sparse-checkout-out \
2>sparse-checkout-err &&
git -C sparse-index checkout df-conflict-2 \
1>sparse-index-out \
2>sparse-index-err &&
# The full checkout deviates from the df-conflict-1 case here!
# It drops the change to folder1/larger-content and leaves the
# folder1 path as-is on disk. The sparse-index behaves the same.
test_must_be_empty full-checkout-out &&
test_must_be_empty sparse-index-out &&
# In the sparse-checkout case, the checkout deletes the folder1
# file and adds the folder1/larger-content file, leaving all other
# paths that were in folder1/ as deleted (without any warning).
cat >expect <<-EOF &&
D folder2
A folder2/larger-content
EOF
test_cmp expect sparse-checkout-out &&
# Switched to branch df-conflict-1
test_cmp full-checkout-err sparse-checkout-err &&
test_cmp full-checkout-err sparse-index-err
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 73 - checkout behaves oddly with df-conflict-2
expecting success of 1092.74 'mv directory from out-of-cone to in-cone':
init_repos &&
# <source> as a sparse directory (or SKIP_WORKTREE_DIR without enabling
# sparse index).
test_all_match git mv --sparse folder1 deep &&
test_all_match git status --porcelain=v2 &&
test_sparse_match git ls-files -t &&
git -C sparse-checkout ls-files -t >actual &&
grep -e "H deep/folder1/0/0/0" actual &&
grep -e "H deep/folder1/0/1" actual &&
grep -e "H deep/folder1/a" actual &&
test_all_match git reset --hard &&
# <source> as a directory deeper than sparse index boundary (where
# sparse index will expand).
test_sparse_match git mv --sparse folder1/0 deep &&
test_sparse_match git status --porcelain=v2 &&
test_sparse_match git ls-files -t &&
git -C sparse-checkout ls-files -t >actual &&
grep -e "H deep/0/0/0" actual &&
grep -e "H deep/0/1" actual
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
H deep/folder1/0/0/0
H deep/folder1/0/1
H deep/folder1/a
H deep/0/0/0
H deep/0/1
ok 74 - mv directory from out-of-cone to in-cone
expecting success of 1092.75 'rm pathspec inside sparse definition':
init_repos &&
test_all_match git rm deep/a &&
test_all_match git status --porcelain=v2 &&
# test wildcard
run_on_all git reset --hard &&
test_all_match git rm deep/* &&
test_all_match git status --porcelain=v2 &&
# test recursive rm
run_on_all git reset --hard &&
test_all_match git rm -r deep &&
test_all_match git status --porcelain=v2
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 75 - rm pathspec inside sparse definition
expecting success of 1092.76 'rm pathspec outside sparse definition':
init_repos &&
for file in folder1/a folder1/0/1
do
test_sparse_match test_must_fail git rm $file &&
test_sparse_match test_must_fail git rm --cached $file &&
test_sparse_match git rm --sparse $file &&
test_sparse_match git status --porcelain=v2 || return 1
done &&
cat >folder1-full <<-EOF &&
rm ${SQ}folder1/0/0/0${SQ}
rm ${SQ}folder1/0/1${SQ}
rm ${SQ}folder1/a${SQ}
EOF
cat >folder1-sparse <<-EOF &&
rm ${SQ}folder1/${SQ}
EOF
# test wildcard
run_on_sparse git reset --hard &&
run_on_sparse git sparse-checkout reapply &&
test_sparse_match test_must_fail git rm folder1/* &&
run_on_sparse git rm --sparse folder1/* &&
test_cmp folder1-full sparse-checkout-out &&
test_cmp folder1-sparse sparse-index-out &&
test_sparse_match git status --porcelain=v2 &&
# test recursive rm
run_on_sparse git reset --hard &&
run_on_sparse git sparse-checkout reapply &&
test_sparse_match test_must_fail git rm --sparse folder1 &&
run_on_sparse git rm --sparse -r folder1 &&
test_cmp folder1-full sparse-checkout-out &&
test_cmp folder1-sparse sparse-index-out &&
test_sparse_match git status --porcelain=v2
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 76 - rm pathspec outside sparse definition
expecting success of 1092.77 'rm pathspec expands index when necessary':
init_repos &&
# in-cone pathspec (do not expand)
ensure_not_expanded rm "deep/deep*" &&
test_must_be_empty sparse-index-err &&
# out-of-cone pathspec (expand)
! ensure_not_expanded rm --sparse "folder1/a*" &&
test_must_be_empty sparse-index-err &&
# pathspec that should expand index
! ensure_not_expanded rm "*/a" &&
test_must_be_empty sparse-index-err &&
! ensure_not_expanded rm "**a" &&
test_must_be_empty sparse-index-err
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
{"event":"region_enter","sid":"20231009T021828.405903Z-Hc7420fa0-P00179ebe","thread":"main","time":"2023-10-09T02:18:28.408232Z","file":"sparse-index.c","line":338,"repo":1,"nesting":1,"category":"index","label":"ensure_full_index"}
{"event":"region_enter","sid":"20231009T021828.405903Z-Hc7420fa0-P00179ebe","thread":"main","time":"2023-10-09T02:18:28.411349Z","file":"sparse-index.c","line":338,"repo":1,"nesting":1,"category":"index","label":"ensure_full_index"}
{"event":"region_enter","sid":"20231009T021828.417046Z-Hc7420fa0-P00179ec7","thread":"main","time":"2023-10-09T02:18:28.418589Z","file":"sparse-index.c","line":338,"repo":1,"nesting":1,"category":"index","label":"ensure_full_index"}
{"event":"region_enter","sid":"20231009T021828.417046Z-Hc7420fa0-P00179ec7","thread":"main","time":"2023-10-09T02:18:28.422360Z","file":"sparse-index.c","line":338,"repo":1,"nesting":1,"category":"index","label":"ensure_full_index"}
{"event":"region_enter","sid":"20231009T021828.429567Z-Hc7420fa0-P00179ed5","thread":"main","time":"2023-10-09T02:18:28.431056Z","file":"sparse-index.c","line":338,"repo":1,"nesting":1,"category":"index","label":"ensure_full_index"}
{"event":"region_enter","sid":"20231009T021828.429567Z-Hc7420fa0-P00179ed5","thread":"main","time":"2023-10-09T02:18:28.434179Z","file":"sparse-index.c","line":338,"repo":1,"nesting":1,"category":"index","label":"ensure_full_index"}
ok 77 - rm pathspec expands index when necessary
expecting success of 1092.78 'sparse index is not expanded: rm':
init_repos &&
ensure_not_expanded rm deep/a &&
# test in-cone wildcard
git -C sparse-index reset --hard &&
ensure_not_expanded rm deep/* &&
# test recursive rm
git -C sparse-index reset --hard &&
ensure_not_expanded rm -r deep
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 78 - sparse index is not expanded: rm
expecting success of 1092.79 'grep with and --cached':
init_repos &&
test_all_match git grep --cached a &&
test_all_match git grep --cached a -- "folder1/*"
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 79 - grep with and --cached
expecting success of 1092.80 'grep is not expanded':
init_repos &&
ensure_not_expanded grep a &&
ensure_not_expanded grep a -- deep/* &&
# All files within the folder1/* pathspec are sparse,
# so this command does not find any matches
ensure_not_expanded ! grep a -- folder1/* &&
# test out-of-cone pathspec with or without wildcard
ensure_not_expanded grep --cached a -- "folder1/a" &&
ensure_not_expanded grep --cached a -- "folder1/*" &&
# test in-cone pathspec with or without wildcard
ensure_not_expanded grep --cached a -- "deep/a" &&
ensure_not_expanded grep --cached a -- "deep/*"
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 80 - grep is not expanded
checking known breakage of 1092.81 'grep within submodules is not expanded':
init_repos_as_submodules &&
# do not use ensure_not_expanded() here, becasue `grep` should be
# run in the superproject, not in "./sparse-index"
GIT_TRACE2_EVENT="$(pwd)/trace2.txt" \
git grep --cached --recurse-submodules a -- "*/folder1/*" &&
test_region ! index ensure_full_index trace2.txt
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
Adding existing repo at 'full-checkout' to the index
Adding existing repo at 'sparse-checkout' to the index
Adding existing repo at 'sparse-index' to the index
703fd3e56687611d5c0264e6f007e18e96f794bf full-checkout (heads/base)
703fd3e56687611d5c0264e6f007e18e96f794bf sparse-checkout (heads/base)
703fd3e56687611d5c0264e6f007e18e96f794bf sparse-index (heads/base)
full-checkout/folder1/a:a
sparse-checkout/folder1/a:a
sparse-index/folder1/a:a
{"event":"region_enter","sid":"20231009T021829.527134Z-Hc7420fa0-P0017a3da","thread":"main","time":"2023-10-09T02:18:29.531495Z","file":"sparse-index.c","line":338,"repo":4,"nesting":2,"category":"index","label":"ensure_full_index"}
not ok 81 - grep within submodules is not expanded # TODO known breakage
expecting success of 1092.82 'grep sparse directory within submodules':
init_repos_as_submodules &&
cat >expect <<-\EOF &&
full-checkout/folder1/a:a
sparse-checkout/folder1/a:a
sparse-index/folder1/a:a
EOF
git grep --cached --recurse-submodules a -- "*/folder1/*" >actual &&
test_cmp actual expect
warning: unable to rmdir 'full-checkout': Directory not empty
warning: unable to rmdir 'sparse-checkout': Directory not empty
warning: unable to rmdir 'sparse-index': Directory not empty
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
Adding existing repo at 'full-checkout' to the index
Adding existing repo at 'sparse-checkout' to the index
Adding existing repo at 'sparse-index' to the index
703fd3e56687611d5c0264e6f007e18e96f794bf full-checkout (heads/base)
703fd3e56687611d5c0264e6f007e18e96f794bf sparse-checkout (heads/base)
703fd3e56687611d5c0264e6f007e18e96f794bf sparse-index (heads/base)
ok 82 - grep sparse directory within submodules
expecting success of 1092.83 'write-tree':
init_repos &&
test_all_match git write-tree &&
write_script edit-contents <<-\EOF &&
echo text >>"$1"
EOF
# make a change inside the sparse cone
run_on_all ../edit-contents deep/a &&
test_all_match git update-index deep/a &&
test_all_match git write-tree &&
test_all_match git status --porcelain=v2 &&
# make a change outside the sparse cone
run_on_all mkdir -p folder1 &&
run_on_all cp a folder1/a &&
run_on_all ../edit-contents folder1/a &&
test_all_match git update-index folder1/a &&
test_all_match git write-tree &&
test_all_match git status --porcelain=v2 &&
# check that SKIP_WORKTREE files are not materialized
test_path_is_missing sparse-checkout/folder2/a &&
test_path_is_missing sparse-index/folder2/a
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 83 - write-tree
expecting success of 1092.84 'sparse-index is not expanded: write-tree':
init_repos &&
ensure_not_expanded write-tree &&
echo "test1" >>sparse-index/a &&
git -C sparse-index update-index a &&
ensure_not_expanded write-tree
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 84 - sparse-index is not expanded: write-tree
expecting success of 1092.85 'diff-files with pathspec inside sparse definition':
init_repos &&
write_script edit-contents <<-\EOF &&
echo text >>"$1"
EOF
run_on_all ../edit-contents deep/a &&
test_all_match git diff-files &&
test_all_match git diff-files -- deep/a &&
# test wildcard
test_all_match git diff-files -- "deep/*"
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 85 - diff-files with pathspec inside sparse definition
expecting success of 1092.86 'diff-files with pathspec outside sparse definition':
init_repos &&
test_sparse_match git diff-files -- folder2/a &&
write_script edit-contents <<-\EOF &&
echo text >>"$1"
EOF
# The directory "folder1" is outside the cone of interest
# and will not exist in the sparse checkout repositories.
# Create it as needed, add file "folder1/a" there with
# contents that is different from the staged version.
run_on_all mkdir -p folder1 &&
run_on_all cp a folder1/a &&
run_on_all ../edit-contents folder1/a &&
test_all_match git diff-files &&
test_all_match git diff-files -- folder1/a &&
test_all_match git diff-files -- "folder*/a"
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 86 - diff-files with pathspec outside sparse definition
expecting success of 1092.87 'sparse index is not expanded: diff-files':
init_repos &&
write_script edit-contents <<-\EOF &&
echo text >>"$1"
EOF
run_on_all ../edit-contents deep/a &&
ensure_not_expanded diff-files &&
ensure_not_expanded diff-files -- deep/a &&
ensure_not_expanded diff-files -- "deep/*"
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 87 - sparse index is not expanded: diff-files
expecting success of 1092.88 'diff-tree':
init_repos &&
# Test change inside sparse cone
tree1=$(git -C sparse-index rev-parse HEAD^{tree}) &&
tree2=$(git -C sparse-index rev-parse update-deep^{tree}) &&
test_all_match git diff-tree $tree1 $tree2 &&
test_all_match git diff-tree $tree1 $tree2 -- deep/a &&
test_all_match git diff-tree HEAD update-deep &&
test_all_match git diff-tree HEAD update-deep -- deep/a &&
# Test change outside sparse cone
tree3=$(git -C sparse-index rev-parse update-folder1^{tree}) &&
test_all_match git diff-tree $tree1 $tree3 &&
test_all_match git diff-tree $tree1 $tree3 -- folder1/a &&
test_all_match git diff-tree HEAD update-folder1 &&
test_all_match git diff-tree HEAD update-folder1 -- folder1/a &&
# Check that SKIP_WORKTREE files are not materialized
test_path_is_missing sparse-checkout/folder1/a &&
test_path_is_missing sparse-index/folder1/a &&
test_path_is_missing sparse-checkout/folder2/a &&
test_path_is_missing sparse-index/folder2/a
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 88 - diff-tree
expecting success of 1092.89 'sparse-index is not expanded: diff-tree':
init_repos &&
tree1=$(git -C sparse-index rev-parse HEAD^{tree}) &&
tree2=$(git -C sparse-index rev-parse update-deep^{tree}) &&
tree3=$(git -C sparse-index rev-parse update-folder1^{tree}) &&
ensure_not_expanded diff-tree $tree1 $tree2 &&
ensure_not_expanded diff-tree $tree1 $tree2 -- deep/a &&
ensure_not_expanded diff-tree HEAD update-deep &&
ensure_not_expanded diff-tree HEAD update-deep -- deep/a &&
ensure_not_expanded diff-tree $tree1 $tree3 &&
ensure_not_expanded diff-tree $tree1 $tree3 -- folder1/a &&
ensure_not_expanded diff-tree HEAD update-folder1 &&
ensure_not_expanded diff-tree HEAD update-folder1 -- folder1/a
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 89 - sparse-index is not expanded: diff-tree
expecting success of 1092.90 'worktree':
init_repos &&
write_script edit-contents <<-\EOF &&
echo text >>"$1"
EOF
for repo in full-checkout sparse-checkout sparse-index
do
worktree=${repo}-wt &&
git -C $repo worktree add ../$worktree &&
# Compare worktree content with "ls"
(cd $repo && ls) >worktree_contents &&
(cd $worktree && ls) >new_worktree_contents &&
test_cmp worktree_contents new_worktree_contents &&
# Compare index content with "ls-files --sparse"
git -C $repo ls-files --sparse >index_contents &&
git -C $worktree ls-files --sparse >new_index_contents &&
test_cmp index_contents new_index_contents &&
git -C $repo worktree remove ../$worktree || return 1
done &&
test_all_match git worktree add .worktrees/hotfix &&
run_on_all ../edit-contents .worktrees/hotfix/deep/a &&
test_all_match test_must_fail git worktree remove .worktrees/hotfix
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
Preparing worktree (new branch 'full-checkout-wt')
HEAD is now at 703fd3e initial commit
Preparing worktree (new branch 'sparse-checkout-wt')
HEAD is now at 703fd3e initial commit
Preparing worktree (new branch 'sparse-index-wt')
HEAD is now at 703fd3e initial commit
ok 90 - worktree
expecting success of 1092.91 'worktree is not expanded':
init_repos &&
ensure_not_expanded worktree add .worktrees/hotfix &&
ensure_not_expanded worktree remove .worktrees/hotfix
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
HEAD is now at 703fd3e initial commit
ok 91 - worktree is not expanded
# still have 1 known breakage(s)
# passed all remaining 90 test(s)
1..91
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2108-update-index-refresh-racy.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2108-update-index-refresh-racy/.git/
expecting success of 2108.1 'setup':
reset_files &&
# we are calling reset_files() a couple of times during tests;
# test-tool chmtime does not change the ctime; to not weaken
# or even break our tests, disable ctime-checks entirely
git config core.trustctime false &&
git add file other &&
git commit -m "initial import"
[master (root-commit) 4c25839] initial import
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 file
create mode 100644 other
ok 1 - setup
expecting success of 2108.2 '--refresh has no racy timestamps to fix':
reset_files &&
# set the index time far enough to the future;
# it must be at least 3 seconds for VFAT
test_set_magic_mtime .git/index +60 &&
git update-index --refresh &&
test_is_magic_mtime .git/index +60
ok 2 - --refresh has no racy timestamps to fix
expecting success of 2108.3 '--refresh should fix racy timestamp':
reset_files &&
update_assert_changed --refresh
--- .git/test-mtime-expect 2023-10-09 02:18:32.429164208 +0000
+++ .git/test-mtime-actual 2023-10-09 02:18:32.433164207 +0000
@@ -1 +1 @@
-1234567890
+1696817912
ok 3 - --refresh should fix racy timestamp
expecting success of 2108.4 '--really-refresh should fix racy timestamp':
reset_files &&
update_assert_changed --really-refresh
--- .git/test-mtime-expect 2023-10-09 02:18:32.453164201 +0000
+++ .git/test-mtime-actual 2023-10-09 02:18:32.457164200 +0000
@@ -1 +1 @@
-1234567890
+1696817912
ok 4 - --really-refresh should fix racy timestamp
expecting success of 2108.5 '--refresh should fix racy timestamp if other file needs update':
reset_files &&
echo content2 >other &&
test_set_magic_mtime other &&
update_assert_changed --refresh
other: needs update
--- .git/test-mtime-expect 2023-10-09 02:18:32.489164191 +0000
+++ .git/test-mtime-actual 2023-10-09 02:18:32.489164191 +0000
@@ -1 +1 @@
-1234567890
+1696817912
ok 5 - --refresh should fix racy timestamp if other file needs update
expecting success of 2108.6 '--refresh should fix racy timestamp if racy file needs update':
reset_files &&
echo content2 >file &&
test_set_magic_mtime file &&
update_assert_changed --refresh
file: needs update
--- .git/test-mtime-expect 2023-10-09 02:18:32.521164182 +0000
+++ .git/test-mtime-actual 2023-10-09 02:18:32.525164181 +0000
@@ -1 +1 @@
-1234567890
+1696817912
ok 6 - --refresh should fix racy timestamp if racy file needs update
# passed all 6 test(s)
1..6
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2202-add-addremove.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2202-add-addremove/.git/
expecting success of 2202.1 'setup':
(
echo .gitignore &&
echo will-remove
) >expect &&
(
echo actual &&
echo expect &&
echo ignored
) >.gitignore &&
git --literal-pathspecs add --all &&
>will-remove &&
git add --all &&
test_tick &&
git commit -m initial &&
git ls-files >actual &&
test_cmp expect actual
[master (root-commit) 50dd5d8] initial
Author: A U Thor <author@example.com>
2 files changed, 3 insertions(+)
create mode 100644 .gitignore
create mode 100644 will-remove
ok 1 - setup
expecting success of 2202.2 'git add --all':
(
echo .gitignore &&
echo not-ignored &&
echo "M .gitignore" &&
echo "A not-ignored" &&
echo "D will-remove"
) >expect &&
>ignored &&
>not-ignored &&
echo modification >>.gitignore &&
rm -f will-remove &&
git add --all &&
git update-index --refresh &&
git ls-files >actual &&
git diff-index --name-status --cached HEAD >>actual &&
test_cmp expect actual
ok 2 - git add --all
expecting success of 2202.3 'Just "git add" is a no-op':
git reset --hard &&
echo >will-remove &&
>will-not-be-added &&
git add &&
git diff-index --name-status --cached HEAD >actual &&
test_must_be_empty actual
HEAD is now at 50dd5d8 initial
Nothing specified, nothing added.
hint: Maybe you wanted to say 'git add .'?
hint: Turn this message off by running
hint: "git config advice.addEmptyPathspec false"
ok 3 - Just "git add" is a no-op
# passed all 3 test(s)
1..3
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2201-add-update-typechange.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2201-add-update-typechange/.git/
expecting success of 2201.1 'setup':
>xyzzy &&
_empty=$(git hash-object --stdin <xyzzy) &&
>yomin &&
>caskly &&
if test_have_prereq SYMLINKS; then
ln -s frotz nitfol &&
T_letter=T
else
printf %s frotz > nitfol &&
T_letter=M
fi &&
mkdir rezrov &&
>rezrov/bozbar &&
git add caskly xyzzy yomin nitfol rezrov/bozbar &&
test_tick &&
git commit -m initial
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
[master (root-commit) 8dc0761] initial
Author: A U Thor <author@example.com>
5 files changed, 1 insertion(+)
create mode 100644 caskly
create mode 120000 nitfol
create mode 100644 rezrov/bozbar
create mode 100644 xyzzy
create mode 100644 yomin
ok 1 - setup
expecting success of 2201.2 'modify':
rm -f xyzzy yomin nitfol caskly &&
# caskly disappears (not a submodule)
mkdir caskly &&
# nitfol changes from symlink to regular
>nitfol &&
# rezrov/bozbar disappears
rm -fr rezrov &&
if test_have_prereq SYMLINKS; then
ln -s xyzzy rezrov
else
printf %s xyzzy > rezrov
fi &&
# xyzzy disappears (not a submodule)
mkdir xyzzy &&
echo gnusto >xyzzy/bozbar &&
# yomin gets replaced with a submodule
mkdir yomin &&
>yomin/yomin &&
(
cd yomin &&
git init &&
git add yomin &&
git commit -m "sub initial"
) &&
yomin=$(GIT_DIR=yomin/.git git rev-parse HEAD) &&
# yonk is added and then turned into a submodule
# this should appear as T in diff-files and as A in diff-index
>yonk &&
git add yonk &&
rm -f yonk &&
mkdir yonk &&
>yonk/yonk &&
(
cd yonk &&
git init &&
git add yonk &&
git commit -m "sub initial"
) &&
yonk=$(GIT_DIR=yonk/.git git rev-parse HEAD) &&
# zifmia is added and then removed
# this should appear in diff-files but not in diff-index.
>zifmia &&
git add zifmia &&
rm -f zifmia &&
mkdir zifmia &&
{
git ls-tree -r HEAD |
sed -e "s/^/:/" -e "
/ caskly/{
s/ caskly/ $ZERO_OID D&/
s/blob/000000/
}
/ nitfol/{
s/ nitfol/ $ZERO_OID $T_letter&/
s/blob/100644/
}
/ rezrov.bozbar/{
s/ rezrov.bozbar/ $ZERO_OID D&/
s/blob/000000/
}
/ xyzzy/{
s/ xyzzy/ $ZERO_OID D&/
s/blob/000000/
}
/ yomin/{
s/ yomin/ $ZERO_OID T&/
s/blob/160000/
}
"
} >expect &&
{
cat expect &&
echo ":100644 160000 $_empty $ZERO_OID T yonk" &&
echo ":100644 000000 $_empty $ZERO_OID D zifmia"
} >expect-files &&
{
cat expect &&
echo ":000000 160000 $ZERO_OID $ZERO_OID A yonk"
} >expect-index &&
{
echo "100644 $_empty 0 nitfol" &&
echo "160000 $yomin 0 yomin" &&
echo "160000 $yonk 0 yonk"
} >expect-final
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2201-add-update-typechange/yomin/.git/
[master (root-commit) 9da2848] sub initial
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 yomin
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2201-add-update-typechange/yonk/.git/
[master (root-commit) 9cc3160] sub initial
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 yonk
ok 2 - modify
expecting success of 2201.3 'diff-files':
git diff-files --raw >actual &&
test_cmp expect-files actual
ok 3 - diff-files
expecting success of 2201.4 'diff-index':
git diff-index --raw HEAD -- >actual &&
test_cmp expect-index actual
ok 4 - diff-index
expecting success of 2201.5 'add -u':
rm -f ".git/saved-index" &&
cp -p ".git/index" ".git/saved-index" &&
git add -u &&
git ls-files -s >actual &&
test_cmp expect-final actual
ok 5 - add -u
expecting success of 2201.6 'commit -a':
if test -f ".git/saved-index"
then
rm -f ".git/index" &&
mv ".git/saved-index" ".git/index"
fi &&
git commit -m "second" -a &&
git ls-files -s >actual &&
test_cmp expect-final actual &&
rm -f .git/index &&
git read-tree HEAD &&
git ls-files -s >actual &&
test_cmp expect-final actual
[master 0f3d2ce] second
Author: A U Thor <author@example.com>
6 files changed, 2 insertions(+), 1 deletion(-)
delete mode 100644 caskly
mode change 120000 => 100644 nitfol
delete mode 100644 rezrov/bozbar
delete mode 100644 xyzzy
mode change 100644 => 160000 yomin
create mode 160000 yonk
ok 6 - commit -a
# passed all 6 test(s)
1..6
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2200-add-update.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2200-add-update/.git/
expecting success of 2200.1 'setup':
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
[master (root-commit) ec46c19] initial
Author: A U Thor <author@example.com>
6 files changed, 6 insertions(+)
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 of 2200.2 'update':
git add -u dir1 dir2
ok 2 - update
expecting success of 2200.3 'update noticed a removal':
git ls-files dir1/sub1 >out &&
test_must_be_empty out
ok 3 - update noticed a removal
expecting success of 2200.4 'update touched correct path':
git diff-files --name-status dir2/sub3 >out &&
test_must_be_empty out
ok 4 - update touched correct path
expecting success of 2200.5 'update did not touch other tracked files':
echo "M check" >expect &&
git diff-files --name-status check >actual &&
test_cmp expect actual &&
echo "M top" >expect &&
git diff-files --name-status top >actual &&
test_cmp expect actual
ok 5 - update did not touch other tracked files
expecting success of 2200.6 'update did not touch untracked files':
git ls-files dir2/other >out &&
test_must_be_empty out
ok 6 - update did not touch untracked files
expecting success of 2200.7 'cache tree has not been corrupted':
git ls-files -s |
sed -e "s/ 0 / /" >expect &&
git ls-tree -r $(git write-tree) |
sed -e "s/ blob / /" >current &&
test_cmp expect current
ok 7 - cache tree has not been corrupted
expecting success of 2200.8 'update from a subdirectory':
(
cd dir1 &&
echo more >sub2 &&
git add -u sub2
)
ok 8 - update from a subdirectory
expecting success of 2200.9 'change gets noticed':
git diff-files --name-status dir1 >out &&
test_must_be_empty out
ok 9 - change gets noticed
expecting success of 2200.10 'non-qualified update in subdir updates from the root':
(
cd dir1 &&
echo even more >>sub2 &&
git --literal-pathspecs add -u &&
echo even more >>sub2 &&
git add -u
) &&
git diff-files --name-only >actual &&
test_must_be_empty actual
ok 10 - non-qualified update in subdir updates from the root
expecting success of 2200.11 'replace a file with a symlink':
rm foo &&
test_ln_s_add top foo
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
ok 11 - replace a file with a symlink
expecting success of 2200.12 'add everything changed':
git add -u &&
git diff-files >out &&
test_must_be_empty out
ok 12 - add everything changed
expecting success of 2200.13 'touch and then add -u':
touch check &&
git add -u &&
git diff-files >out &&
test_must_be_empty out
ok 13 - touch and then add -u
expecting success of 2200.14 'touch and then add explicitly':
touch check &&
git add check &&
git diff-files >out &&
test_must_be_empty out
ok 14 - touch and then add explicitly
expecting success of 2200.15 'add -n -u should not add but just report':
(
echo "add 'check'" &&
echo "remove 'top'"
) >expect &&
before=$(git ls-files -s check top) &&
git count-objects -v >objects_before &&
echo changed >>check &&
rm -f top &&
git add -n -u >actual &&
after=$(git ls-files -s check top) &&
git count-objects -v >objects_after &&
test "$before" = "$after" &&
test_cmp objects_before objects_after &&
test_cmp expect actual
ok 15 - add -n -u should not add but just report
expecting success of 2200.16 'add -u resolves unmerged paths':
git reset --hard &&
one=$(echo 1 | git hash-object -w --stdin) &&
two=$(echo 2 | git hash-object -w --stdin) &&
three=$(echo 3 | git hash-object -w --stdin) &&
{
for path in path1 path2
do
echo "100644 $one 1 $path" &&
echo "100644 $two 2 $path" &&
echo "100644 $three 3 $path" || return 1
done &&
echo "100644 $one 1 path3" &&
echo "100644 $one 1 path4" &&
echo "100644 $one 3 path5" &&
echo "100644 $one 3 path6"
} |
git update-index --index-info &&
echo 3 >path1 &&
echo 2 >path3 &&
echo 2 >path5 &&
# Fail to explicitly resolve removed paths with "git add"
test_must_fail git add --no-all path4 &&
test_must_fail git add --no-all path6 &&
# "add -u" should notice removals no matter what stages
# the index entries are in.
git add -u &&
git ls-files -s path1 path2 path3 path4 path5 path6 >actual &&
{
echo "100644 $three 0 path1" &&
echo "100644 $two 0 path3" &&
echo "100644 $two 0 path5"
} >expect &&
test_cmp expect actual
HEAD is now at ec46c19 initial
fatal: unable to stat 'path4': No such file or directory
fatal: unable to stat 'path6': No such file or directory
ok 16 - add -u resolves unmerged paths
expecting success of 2200.17 '"add -u non-existent" should fail':
test_must_fail git add -u non-existent &&
git ls-files >actual &&
! grep "non-existent" actual
fatal: pathspec 'non-existent' did not match any files
ok 17 - "add -u non-existent" should fail
expecting success of 2200.18 '"commit -a" implies "add -u" if index becomes empty':
git rm -rf \* &&
git commit -m clean-slate &&
test_commit file1 &&
rm file1.t &&
test_tick &&
git commit -a -m remove &&
git ls-tree HEAD: >out &&
test_must_be_empty out
rm 'check'
rm 'dir1/sub1'
rm 'dir1/sub2'
rm 'dir2/sub3'
rm 'foo'
rm 'path1'
rm 'path3'
rm 'path5'
rm 'top'
[master 592864c] clean-slate
Author: A U Thor <author@example.com>
6 files changed, 6 deletions(-)
delete mode 100644 check
delete mode 100644 dir1/sub1
delete mode 100644 dir1/sub2
delete mode 100644 dir2/sub3
delete mode 100644 foo
delete mode 100644 top
[master d0c715a] file1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file1.t
[master 4eab7cc] remove
Author: A U Thor <author@example.com>
1 file changed, 1 deletion(-)
delete mode 100644 file1.t
ok 18 - "commit -a" implies "add -u" if index becomes empty
# passed all 18 test(s)
1..18
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2205-add-worktree-config.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2205-add-worktree-config/.git/
expecting success of 2205.1 '1a: setup--config worktree':
mkdir test1 &&
(
cd test1 &&
test_create_repo repo &&
git --git-dir="repo/.git" config core.worktree "$(pwd)" &&
mkdir -p outside-tracked outside-untracked &&
mkdir -p repo/inside-tracked repo/inside-untracked &&
>file-tracked &&
>file-untracked &&
>outside-tracked/file &&
>outside-untracked/file &&
>repo/file-tracked &&
>repo/file-untracked &&
>repo/inside-tracked/file &&
>repo/inside-untracked/file &&
cat >expect-tracked-unsorted <<-EOF &&
../file-tracked
../outside-tracked/file
file-tracked
inside-tracked/file
EOF
cat >expect-untracked-unsorted <<-EOF &&
../file-untracked
../outside-untracked/file
file-untracked
inside-untracked/file
EOF
cat >expect-all-dir-unsorted <<-EOF &&
../file-untracked
../file-tracked
../outside-untracked/
../outside-tracked/
./
EOF
cat expect-tracked-unsorted expect-untracked-unsorted >expect-all-unsorted &&
cat >.gitignore <<-EOF
.gitignore
actual-*
expect-*
EOF
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2205-add-worktree-config/test1/repo/.git/
ok 1 - 1a: setup--config worktree
expecting success of 2205.2 '1b: pre-add all':
(
cd test1 &&
local parent_dir="$(pwd)" &&
git -C repo ls-files -o --exclude-standard "$parent_dir" >actual-all-unsorted &&
sort actual-all-unsorted >actual-all &&
sort expect-all-unsorted >expect-all &&
test_cmp expect-all actual-all
)
ok 2 - 1b: pre-add all
expecting success of 2205.3 '1c: pre-add dir all':
(
cd test1 &&
local parent_dir="$(pwd)" &&
git -C repo ls-files -o --directory --exclude-standard "$parent_dir" >actual-all-dir-unsorted &&
sort actual-all-dir-unsorted >actual-all &&
sort expect-all-dir-unsorted >expect-all &&
test_cmp expect-all actual-all
)
ok 3 - 1c: pre-add dir all
expecting success of 2205.4 '1d: post-add tracked':
(
cd test1 &&
local parent_dir="$(pwd)" &&
(
cd repo &&
git add file-tracked &&
git add inside-tracked &&
git add ../outside-tracked &&
git add "$parent_dir/file-tracked" &&
git ls-files "$parent_dir" >../actual-tracked-unsorted
) &&
sort actual-tracked-unsorted >actual-tracked &&
sort expect-tracked-unsorted >expect-tracked &&
test_cmp expect-tracked actual-tracked
)
ok 4 - 1d: post-add tracked
expecting success of 2205.5 '1e: post-add untracked':
(
cd test1 &&
local parent_dir="$(pwd)" &&
git -C repo ls-files -o --exclude-standard "$parent_dir" >actual-untracked-unsorted &&
sort actual-untracked-unsorted >actual-untracked &&
sort expect-untracked-unsorted >expect-untracked &&
test_cmp expect-untracked actual-untracked
)
ok 5 - 1e: post-add untracked
expecting success of 2205.6 '2a: setup--set git-dir':
mkdir test2 &&
(
cd test2 &&
test_create_repo repo &&
# create two foreign repositories that should remain untracked
test_create_repo repo-outside &&
test_create_repo repo/repo-inside &&
mkdir -p repo/inside-tracked repo/inside-untracked &&
>repo/file-tracked &&
>repo/file-untracked &&
>repo/inside-tracked/file &&
>repo/inside-untracked/file &&
>repo-outside/file &&
>repo/repo-inside/file &&
cat >expect-tracked-unsorted <<-EOF &&
repo/file-tracked
repo/inside-tracked/file
EOF
cat >expect-untracked-unsorted <<-EOF &&
repo/file-untracked
repo/inside-untracked/file
repo/repo-inside/
repo-outside/
EOF
cat >expect-all-dir-unsorted <<-EOF &&
repo/
repo-outside/
EOF
cat expect-tracked-unsorted expect-untracked-unsorted >expect-all-unsorted &&
cat >.gitignore <<-EOF
.gitignore
actual-*
expect-*
EOF
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2205-add-worktree-config/test2/repo/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2205-add-worktree-config/test2/repo-outside/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2205-add-worktree-config/test2/repo/repo-inside/.git/
ok 6 - 2a: setup--set git-dir
expecting success of 2205.7 '2b: pre-add all':
(
cd test2 &&
git --git-dir=repo/.git ls-files -o --exclude-standard >actual-all-unsorted &&
sort actual-all-unsorted >actual-all &&
sort expect-all-unsorted >expect-all &&
test_cmp expect-all actual-all
)
ok 7 - 2b: pre-add all
expecting success of 2205.8 '2c: pre-add dir all':
(
cd test2 &&
git --git-dir=repo/.git ls-files -o --directory --exclude-standard >actual-all-dir-unsorted &&
sort actual-all-dir-unsorted >actual-all &&
sort expect-all-dir-unsorted >expect-all &&
test_cmp expect-all actual-all
)
ok 8 - 2c: pre-add dir all
expecting success of 2205.9 '2d: post-add tracked':
(
cd test2 &&
git --git-dir=repo/.git add repo/file-tracked &&
git --git-dir=repo/.git add repo/inside-tracked &&
git --git-dir=repo/.git ls-files >actual-tracked-unsorted &&
sort actual-tracked-unsorted >actual-tracked &&
sort expect-tracked-unsorted >expect-tracked &&
test_cmp expect-tracked actual-tracked
)
ok 9 - 2d: post-add tracked
expecting success of 2205.10 '2e: post-add untracked':
(
cd test2 &&
git --git-dir=repo/.git ls-files -o --exclude-standard >actual-untracked-unsorted &&
sort actual-untracked-unsorted >actual-untracked &&
sort expect-untracked-unsorted >expect-untracked &&
test_cmp expect-untracked actual-untracked
)
ok 10 - 2e: post-add untracked
expecting success of 2205.11 '3a: setup--add repo dir':
mkdir test3 &&
(
cd test3 &&
test_create_repo repo &&
mkdir -p repo/inside-tracked repo/inside-ignored &&
>repo/file-tracked &&
>repo/file-ignored &&
>repo/inside-tracked/file &&
>repo/inside-ignored/file &&
cat >.gitignore <<-EOF &&
.gitignore
actual-*
expect-*
*ignored
EOF
cat >expect-tracked-unsorted <<-EOF &&
repo/file-tracked
repo/inside-tracked/file
EOF
cat >expect-ignored-unsorted <<-EOF
repo/file-ignored
repo/inside-ignored/
.gitignore
actual-ignored-unsorted
expect-ignored-unsorted
expect-tracked-unsorted
EOF
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2205-add-worktree-config/test3/repo/.git/
ok 11 - 3a: setup--add repo dir
expecting success of 2205.12 '3b: ignored':
(
cd test3 &&
git --git-dir=repo/.git ls-files -io --directory --exclude-standard >actual-ignored-unsorted &&
sort actual-ignored-unsorted >actual-ignored &&
sort expect-ignored-unsorted >expect-ignored &&
test_cmp expect-ignored actual-ignored
)
ok 12 - 3b: ignored
expecting success of 2205.13 '3c: add repo':
(
cd test3 &&
git --git-dir=repo/.git add repo &&
git --git-dir=repo/.git ls-files >actual-tracked-unsorted &&
sort actual-tracked-unsorted >actual-tracked &&
sort expect-tracked-unsorted >expect-tracked &&
test_cmp expect-tracked actual-tracked
)
ok 13 - 3c: add repo
# passed all 13 test(s)
1..13
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2204-add-ignored.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2204-add-ignored/.git/
expecting success of 2204.1 'setup':
mkdir sub dir dir/sub &&
echo sub >.gitignore &&
echo ign >>.gitignore &&
for p in . sub dir dir/sub
do
>"$p/ign" &&
>"$p/file" || exit 1
done
ok 1 - setup
expecting success of 2204.2 'no complaints for unignored file':
rm -f .git/index &&
git add "$i" &&
git ls-files "$i" >out &&
test -s out
ok 2 - no complaints for unignored file
expecting success of 2204.3 'no complaints for unignored dir/file':
rm -f .git/index &&
git add "$i" &&
git ls-files "$i" >out &&
test -s out
ok 3 - no complaints for unignored dir/file
expecting success of 2204.4 'no complaints for unignored dir':
rm -f .git/index &&
git add "$i" &&
git ls-files "$i" >out &&
test -s out
ok 4 - no complaints for unignored dir
expecting success of 2204.5 'no complaints for unignored d*':
rm -f .git/index &&
git add "$i" &&
git ls-files "$i" >out &&
test -s out
ok 5 - no complaints for unignored d*
expecting success of 2204.6 'complaints for ignored ign':
rm -f .git/index &&
test_must_fail git add "$i" 2>err &&
git ls-files "$i" >out &&
test_must_be_empty out
ok 6 - complaints for ignored ign
expecting success of 2204.7 'complaints for ignored ign output':
test_i18ngrep -e "Use -f if" err
hint: Use -f if you really want to add them.
ok 7 - complaints for ignored ign output
expecting success of 2204.8 'complaints for ignored ign with unignored file':
rm -f .git/index &&
test_must_fail git add "$i" file 2>err &&
git ls-files "$i" >out &&
test_must_be_empty out
ok 8 - complaints for ignored ign with unignored file
expecting success of 2204.9 'complaints for ignored ign with unignored file output':
test_i18ngrep -e "Use -f if" err
hint: Use -f if you really want to add them.
ok 9 - complaints for ignored ign with unignored file output
expecting success of 2204.10 'complaints for ignored dir/ign':
rm -f .git/index &&
test_must_fail git add "$i" 2>err &&
git ls-files "$i" >out &&
test_must_be_empty out
ok 10 - complaints for ignored dir/ign
expecting success of 2204.11 'complaints for ignored dir/ign output':
test_i18ngrep -e "Use -f if" err
hint: Use -f if you really want to add them.
ok 11 - complaints for ignored dir/ign output
expecting success of 2204.12 'complaints for ignored dir/ign with unignored file':
rm -f .git/index &&
test_must_fail git add "$i" file 2>err &&
git ls-files "$i" >out &&
test_must_be_empty out
ok 12 - complaints for ignored dir/ign with unignored file
expecting success of 2204.13 'complaints for ignored dir/ign with unignored file output':
test_i18ngrep -e "Use -f if" err
hint: Use -f if you really want to add them.
ok 13 - complaints for ignored dir/ign with unignored file output
expecting success of 2204.14 'complaints for ignored dir/sub':
rm -f .git/index &&
test_must_fail git add "$i" 2>err &&
git ls-files "$i" >out &&
test_must_be_empty out
ok 14 - complaints for ignored dir/sub
expecting success of 2204.15 'complaints for ignored dir/sub output':
test_i18ngrep -e "Use -f if" err
hint: Use -f if you really want to add them.
ok 15 - complaints for ignored dir/sub output
expecting success of 2204.16 'complaints for ignored dir/sub with unignored file':
rm -f .git/index &&
test_must_fail git add "$i" file 2>err &&
git ls-files "$i" >out &&
test_must_be_empty out
ok 16 - complaints for ignored dir/sub with unignored file
expecting success of 2204.17 'complaints for ignored dir/sub with unignored file output':
test_i18ngrep -e "Use -f if" err
hint: Use -f if you really want to add them.
ok 17 - complaints for ignored dir/sub with unignored file output
expecting success of 2204.18 'complaints for ignored dir/sub/ign':
rm -f .git/index &&
test_must_fail git add "$i" 2>err &&
git ls-files "$i" >out &&
test_must_be_empty out
ok 18 - complaints for ignored dir/sub/ign
expecting success of 2204.19 'complaints for ignored dir/sub/ign output':
test_i18ngrep -e "Use -f if" err
hint: Use -f if you really want to add them.
ok 19 - complaints for ignored dir/sub/ign output
expecting success of 2204.20 'complaints for ignored dir/sub/ign with unignored file':
rm -f .git/index &&
test_must_fail git add "$i" file 2>err &&
git ls-files "$i" >out &&
test_must_be_empty out
ok 20 - complaints for ignored dir/sub/ign with unignored file
expecting success of 2204.21 'complaints for ignored dir/sub/ign with unignored file output':
test_i18ngrep -e "Use -f if" err
hint: Use -f if you really want to add them.
ok 21 - complaints for ignored dir/sub/ign with unignored file output
expecting success of 2204.22 'complaints for ignored sub/file':
rm -f .git/index &&
test_must_fail git add "$i" 2>err &&
git ls-files "$i" >out &&
test_must_be_empty out
ok 22 - complaints for ignored sub/file
expecting success of 2204.23 'complaints for ignored sub/file output':
test_i18ngrep -e "Use -f if" err
hint: Use -f if you really want to add them.
ok 23 - complaints for ignored sub/file output
expecting success of 2204.24 'complaints for ignored sub/file with unignored file':
rm -f .git/index &&
test_must_fail git add "$i" file 2>err &&
git ls-files "$i" >out &&
test_must_be_empty out
ok 24 - complaints for ignored sub/file with unignored file
expecting success of 2204.25 'complaints for ignored sub/file with unignored file output':
test_i18ngrep -e "Use -f if" err
hint: Use -f if you really want to add them.
ok 25 - complaints for ignored sub/file with unignored file output
expecting success of 2204.26 'complaints for ignored sub':
rm -f .git/index &&
test_must_fail git add "$i" 2>err &&
git ls-files "$i" >out &&
test_must_be_empty out
ok 26 - complaints for ignored sub
expecting success of 2204.27 'complaints for ignored sub output':
test_i18ngrep -e "Use -f if" err
hint: Use -f if you really want to add them.
ok 27 - complaints for ignored sub output
expecting success of 2204.28 'complaints for ignored sub with unignored file':
rm -f .git/index &&
test_must_fail git add "$i" file 2>err &&
git ls-files "$i" >out &&
test_must_be_empty out
ok 28 - complaints for ignored sub with unignored file
expecting success of 2204.29 'complaints for ignored sub with unignored file output':
test_i18ngrep -e "Use -f if" err
hint: Use -f if you really want to add them.
ok 29 - complaints for ignored sub with unignored file output
expecting success of 2204.30 'complaints for ignored sub/file':
rm -f .git/index &&
test_must_fail git add "$i" 2>err &&
git ls-files "$i" >out &&
test_must_be_empty out
ok 30 - complaints for ignored sub/file
expecting success of 2204.31 'complaints for ignored sub/file output':
test_i18ngrep -e "Use -f if" err
hint: Use -f if you really want to add them.
ok 31 - complaints for ignored sub/file output
expecting success of 2204.32 'complaints for ignored sub/file with unignored file':
rm -f .git/index &&
test_must_fail git add "$i" file 2>err &&
git ls-files "$i" >out &&
test_must_be_empty out
ok 32 - complaints for ignored sub/file with unignored file
expecting success of 2204.33 'complaints for ignored sub/file with unignored file output':
test_i18ngrep -e "Use -f if" err
hint: Use -f if you really want to add them.
ok 33 - complaints for ignored sub/file with unignored file output
expecting success of 2204.34 'complaints for ignored sub/ign':
rm -f .git/index &&
test_must_fail git add "$i" 2>err &&
git ls-files "$i" >out &&
test_must_be_empty out
ok 34 - complaints for ignored sub/ign
expecting success of 2204.35 'complaints for ignored sub/ign output':
test_i18ngrep -e "Use -f if" err
hint: Use -f if you really want to add them.
ok 35 - complaints for ignored sub/ign output
expecting success of 2204.36 'complaints for ignored sub/ign with unignored file':
rm -f .git/index &&
test_must_fail git add "$i" file 2>err &&
git ls-files "$i" >out &&
test_must_be_empty out
ok 36 - complaints for ignored sub/ign with unignored file
expecting success of 2204.37 'complaints for ignored sub/ign with unignored file output':
test_i18ngrep -e "Use -f if" err
hint: Use -f if you really want to add them.
ok 37 - complaints for ignored sub/ign with unignored file output
expecting success of 2204.38 'complaints for ignored sub in dir':
rm -f .git/index &&
(
cd dir &&
test_must_fail git add "$i" 2>err &&
git ls-files "$i" >out &&
test_must_be_empty out
)
ok 38 - complaints for ignored sub in dir
expecting success of 2204.39 'complaints for ignored sub in dir output':
(
cd dir &&
test_i18ngrep -e "Use -f if" err
)
hint: Use -f if you really want to add them.
ok 39 - complaints for ignored sub in dir output
expecting success of 2204.40 'complaints for ignored sub/file in dir':
rm -f .git/index &&
(
cd dir &&
test_must_fail git add "$i" 2>err &&
git ls-files "$i" >out &&
test_must_be_empty out
)
ok 40 - complaints for ignored sub/file in dir
expecting success of 2204.41 'complaints for ignored sub/file in dir output':
(
cd dir &&
test_i18ngrep -e "Use -f if" err
)
hint: Use -f if you really want to add them.
ok 41 - complaints for ignored sub/file in dir output
expecting success of 2204.42 'complaints for ignored sub/ign in dir':
rm -f .git/index &&
(
cd dir &&
test_must_fail git add "$i" 2>err &&
git ls-files "$i" >out &&
test_must_be_empty out
)
ok 42 - complaints for ignored sub/ign in dir
expecting success of 2204.43 'complaints for ignored sub/ign in dir output':
(
cd dir &&
test_i18ngrep -e "Use -f if" err
)
hint: Use -f if you really want to add them.
ok 43 - complaints for ignored sub/ign in dir output
expecting success of 2204.44 'complaints for ignored ign in sub':
rm -f .git/index &&
(
cd sub &&
test_must_fail git add "$i" 2>err &&
git ls-files "$i" >out &&
test_must_be_empty out
)
ok 44 - complaints for ignored ign in sub
expecting success of 2204.45 'complaints for ignored ign in sub output':
(
cd sub &&
test_i18ngrep -e "Use -f if" err
)
hint: Use -f if you really want to add them.
ok 45 - complaints for ignored ign in sub output
expecting success of 2204.46 'complaints for ignored file in sub':
rm -f .git/index &&
(
cd sub &&
test_must_fail git add "$i" 2>err &&
git ls-files "$i" >out &&
test_must_be_empty out
)
ok 46 - complaints for ignored file in sub
expecting success of 2204.47 'complaints for ignored file in sub output':
(
cd sub &&
test_i18ngrep -e "Use -f if" err
)
hint: Use -f if you really want to add them.
ok 47 - complaints for ignored file in sub output
# passed all 47 test(s)
1..47
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2300-cd-to-toplevel.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2300-cd-to-toplevel/.git/
expecting success of 2300.1 'at physical root':
(
cd 'repo' &&
PATH="$EXEC_PATH:$PATH" &&
. git-sh-setup &&
cd_to_toplevel &&
[ "$(pwd -P)" = "$TOPLEVEL" ]
)
ok 1 - at physical root
expecting success of 2300.2 'at physical subdir':
(
cd 'repo/sub/dir' &&
PATH="$EXEC_PATH:$PATH" &&
. git-sh-setup &&
cd_to_toplevel &&
[ "$(pwd -P)" = "$TOPLEVEL" ]
)
ok 2 - at physical subdir
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
expecting success of 2300.3 'at symbolic root':
(
cd 'symrepo' &&
PATH="$EXEC_PATH:$PATH" &&
. git-sh-setup &&
cd_to_toplevel &&
[ "$(pwd -P)" = "$TOPLEVEL" ]
)
ok 3 - at symbolic root
expecting success of 2300.4 'at symbolic subdir':
(
cd 'subdir-link' &&
PATH="$EXEC_PATH:$PATH" &&
. git-sh-setup &&
cd_to_toplevel &&
[ "$(pwd -P)" = "$TOPLEVEL" ]
)
ok 4 - at symbolic subdir
expecting success of 2300.5 'at internal symbolic subdir':
(
cd 'internal-link' &&
PATH="$EXEC_PATH:$PATH" &&
. git-sh-setup &&
cd_to_toplevel &&
[ "$(pwd -P)" = "$TOPLEVEL" ]
)
ok 5 - at internal symbolic subdir
# passed all 5 test(s)
1..5
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2203-add-intent.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2203-add-intent/.git/
expecting success of 2203.1 'intent to add':
test_commit 1 &&
git rm 1.t &&
echo hello >1.t &&
echo hello >file &&
echo hello >elif &&
git add -N file &&
git add elif &&
git add -N 1.t
[master (root-commit) d0dcf97] 1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 1.t
rm '1.t'
ok 1 - intent to add
expecting success of 2203.2 'git status':
git status --porcelain | grep -v actual >actual &&
cat >expect <<-\EOF &&
DA 1.t
A elif
A file
EOF
test_cmp expect actual
ok 2 - git status
expecting success of 2203.3 'git status with porcelain v2':
git status --porcelain=v2 | grep -v "^?" >actual &&
nam1=$(echo 1 | git hash-object --stdin) &&
nam2=$(git hash-object elif) &&
cat >expect <<-EOF &&
1 DA N... 100644 000000 100644 $nam1 $ZERO_OID 1.t
1 A. N... 000000 100644 100644 $ZERO_OID $nam2 elif
1 .A N... 000000 000000 100644 $ZERO_OID $ZERO_OID file
EOF
test_cmp expect actual
ok 3 - git status with porcelain v2
expecting success of 2203.4 'check result of "add -N"':
git ls-files -s file >actual &&
empty=$(git hash-object --stdin </dev/null) &&
echo "100644 $empty 0 file" >expect &&
test_cmp expect actual
ok 4 - check result of "add -N"
expecting success of 2203.5 'intent to add is just an ordinary empty blob':
git add -u &&
git ls-files -s file >actual &&
git ls-files -s elif | sed -e "s/elif/file/" >expect &&
test_cmp expect actual
ok 5 - intent to add is just an ordinary empty blob
expecting success of 2203.6 'intent to add does not clobber existing paths':
git add -N file elif &&
empty=$(git hash-object --stdin </dev/null) &&
git ls-files -s >actual &&
! grep "$empty" actual
ok 6 - intent to add does not clobber existing paths
expecting success of 2203.7 'i-t-a entry is simply ignored':
test_tick &&
git commit -a -m initial &&
git reset --hard &&
echo xyzzy >rezrov &&
echo frotz >nitfol &&
git add rezrov &&
git add -N nitfol &&
git commit -m second &&
test $(git ls-tree HEAD -- nitfol | wc -l) = 0 &&
test $(git diff --name-only HEAD -- nitfol | wc -l) = 1 &&
test $(git diff --name-only -- nitfol | wc -l) = 1
[master b7cca08] initial
Author: A U Thor <author@example.com>
3 files changed, 3 insertions(+), 1 deletion(-)
create mode 100644 elif
create mode 100644 file
HEAD is now at b7cca08 initial
[master b70ad0b] second
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 rezrov
ok 7 - i-t-a entry is simply ignored
expecting success of 2203.8 'can commit with an unrelated i-t-a entry in index':
git reset --hard &&
echo bozbar >rezrov &&
echo frotz >nitfol &&
git add rezrov &&
git add -N nitfol &&
git commit -m partial rezrov
HEAD is now at b70ad0b second
[master 1ed15b5] partial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 8 - can commit with an unrelated i-t-a entry in index
expecting success of 2203.9 'can "commit -a" with an i-t-a entry':
git reset --hard &&
: >nitfol &&
git add -N nitfol &&
git commit -a -m all
HEAD is now at 1ed15b5 partial
[master 415f3ad] all
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 nitfol
ok 9 - can "commit -a" with an i-t-a entry
expecting success of 2203.10 'cache-tree invalidates i-t-a paths':
git reset --hard &&
mkdir dir &&
: >dir/foo &&
git add dir/foo &&
git commit -m foo &&
: >dir/bar &&
git add -N dir/bar &&
git diff --name-only >actual &&
echo dir/bar >expect &&
test_cmp expect actual &&
git write-tree >/dev/null &&
git diff --name-only >actual &&
echo dir/bar >expect &&
test_cmp expect actual
HEAD is now at 415f3ad all
[master 03f6a20] foo
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 dir/foo
ok 10 - cache-tree invalidates i-t-a paths
expecting success of 2203.11 'cache-tree does not ignore dir that has i-t-a entries':
git init ita-in-dir &&
(
cd ita-in-dir &&
mkdir 2 &&
for f in 1 2/1 2/2 3
do
echo "$f" >"$f" || return 1
done &&
git add 1 2/2 3 &&
git add -N 2/1 &&
git commit -m committed &&
git ls-tree -r HEAD >actual &&
grep 2/2 actual
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2203-add-intent/ita-in-dir/.git/
[master (root-commit) 7b0eb4f] committed
Author: A U Thor <author@example.com>
3 files changed, 3 insertions(+)
create mode 100644 1
create mode 100644 2/2
create mode 100644 3
100644 blob 6b8a6f549c42bad0c52be670caa297a269052aa7 2/2
ok 11 - cache-tree does not ignore dir that has i-t-a entries
expecting success of 2203.12 'cache-tree does skip dir that becomes empty':
rm -fr ita-in-dir &&
git init ita-in-dir &&
(
cd ita-in-dir &&
mkdir -p 1/2/3 &&
echo 4 >1/2/3/4 &&
git add -N 1/2/3/4 &&
git write-tree >actual &&
echo $EMPTY_TREE >expected &&
test_cmp expected actual
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2203-add-intent/ita-in-dir/.git/
ok 12 - cache-tree does skip dir that becomes empty
expecting success of 2203.13 'commit: ita entries ignored in empty initial commit check':
git init empty-initial-commit &&
(
cd empty-initial-commit &&
: >one &&
git add -N one &&
test_must_fail git commit -m nothing-new-here
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2203-add-intent/empty-initial-commit/.git/
On branch master
Initial commit
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
new file: one
no changes added to commit (use "git add" and/or "git commit -a")
ok 13 - commit: ita entries ignored in empty initial commit check
expecting success of 2203.14 'commit: ita entries ignored in empty commit check':
git init empty-subsequent-commit &&
(
cd empty-subsequent-commit &&
test_commit one &&
: >two &&
git add -N two &&
test_must_fail git commit -m nothing-new-here
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2203-add-intent/empty-subsequent-commit/.git/
[master (root-commit) 4331c28] one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 one.t
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
new file: two
no changes added to commit (use "git add" and/or "git commit -a")
ok 14 - commit: ita entries ignored in empty commit check
expecting success of 2203.15 'rename detection finds the right names':
git init rename-detection &&
(
cd rename-detection &&
echo contents >first &&
git add first &&
git commit -m first &&
mv first third &&
git add -N third &&
git status | grep -v "^?" >actual.1 &&
test_i18ngrep "renamed: *first -> third" actual.1 &&
git status --porcelain | grep -v "^?" >actual.2 &&
cat >expected.2 <<-\EOF &&
R first -> third
EOF
test_cmp expected.2 actual.2 &&
hash=$(git hash-object third) &&
git status --porcelain=v2 | grep -v "^?" >actual.3 &&
cat >expected.3 <<-EOF &&
2 .R N... 100644 100644 100644 $hash $hash R100 third first
EOF
test_cmp expected.3 actual.3 &&
git diff --stat >actual.4 &&
cat >expected.4 <<-EOF &&
first => third | 0
1 file changed, 0 insertions(+), 0 deletions(-)
EOF
test_cmp expected.4 actual.4 &&
git diff --cached --stat >actual.5 &&
test_must_be_empty actual.5
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2203-add-intent/rename-detection/.git/
[master (root-commit) 0bad72c] first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 first
renamed: first -> third
ok 15 - rename detection finds the right names
expecting success of 2203.16 'double rename detection in status':
git init rename-detection-2 &&
(
cd rename-detection-2 &&
echo contents >first &&
git add first &&
git commit -m first &&
git mv first second &&
mv second third &&
git add -N third &&
git status | grep -v "^?" >actual.1 &&
test_i18ngrep "renamed: *first -> second" actual.1 &&
test_i18ngrep "renamed: *second -> third" actual.1 &&
git status --porcelain | grep -v "^?" >actual.2 &&
cat >expected.2 <<-\EOF &&
R first -> second
R second -> third
EOF
test_cmp expected.2 actual.2 &&
hash=$(git hash-object third) &&
git status --porcelain=v2 | grep -v "^?" >actual.3 &&
cat >expected.3 <<-EOF &&
2 R. N... 100644 100644 100644 $hash $hash R100 second first
2 .R N... 100644 100644 100644 $hash $hash R100 third second
EOF
test_cmp expected.3 actual.3
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2203-add-intent/rename-detection-2/.git/
[master (root-commit) 0bad72c] first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 first
renamed: first -> second
renamed: second -> third
ok 16 - double rename detection in status
expecting success of 2203.17 'i-t-a files shown as new for "diff", "diff-files"; not-new for "diff --cached"':
git reset --hard &&
: >empty &&
content="foo" &&
echo "$content" >not-empty &&
hash_e=$(git hash-object empty) &&
hash_n=$(git hash-object not-empty) &&
cat >expect.diff_p <<-EOF &&
diff --git a/empty b/empty
new file mode 100644
index 0000000..$(git rev-parse --short $hash_e)
diff --git a/not-empty b/not-empty
new file mode 100644
index 0000000..$(git rev-parse --short $hash_n)
--- /dev/null
+++ b/not-empty
@@ -0,0 +1 @@
+$content
EOF
cat >expect.diff_s <<-EOF &&
create mode 100644 empty
create mode 100644 not-empty
EOF
cat >expect.diff_a <<-EOF &&
:000000 100644 0000000 0000000 A$(printf "\t")empty
:000000 100644 0000000 0000000 A$(printf "\t")not-empty
EOF
git add -N empty not-empty &&
git diff >actual &&
test_cmp expect.diff_p actual &&
git diff --summary >actual &&
test_cmp expect.diff_s actual &&
git diff-files -p >actual &&
test_cmp expect.diff_p actual &&
git diff-files --abbrev >actual &&
test_cmp expect.diff_a actual &&
git diff --cached >actual &&
test_must_be_empty actual
HEAD is now at 03f6a20 foo
ok 17 - i-t-a files shown as new for "diff", "diff-files"; not-new for "diff --cached"
expecting success of 2203.18 '"diff HEAD" includes ita as new files':
git reset --hard &&
echo new >new-ita &&
oid=$(git hash-object new-ita) &&
oid=$(git rev-parse --short $oid) &&
git add -N new-ita &&
git diff HEAD >actual &&
cat >expected <<-EOF &&
diff --git a/new-ita b/new-ita
new file mode 100644
index 0000000..$oid
--- /dev/null
+++ b/new-ita
@@ -0,0 +1 @@
+new
EOF
test_cmp expected actual
HEAD is now at 03f6a20 foo
ok 18 - "diff HEAD" includes ita as new files
expecting success of 2203.19 'apply --intent-to-add':
git reset --hard &&
echo new >new-ita &&
git add -N new-ita &&
git diff >expected &&
grep "new file" expected &&
git reset --hard &&
git apply --intent-to-add expected &&
git diff >actual &&
test_cmp expected actual
HEAD is now at 03f6a20 foo
new file mode 100644
HEAD is now at 03f6a20 foo
ok 19 - apply --intent-to-add
# passed all 19 test(s)
1..19
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2401-worktree-prune.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2401-worktree-prune/.git/
expecting success of 2401.1 'initialize':
git commit --allow-empty -m init
[main (root-commit) 50572bf] init
Author: A U Thor <author@example.com>
ok 1 - initialize
expecting success of 2401.2 'worktree prune on normal repo':
git worktree prune &&
test_must_fail git worktree prune abc
usage: git worktree prune [-n] [-v] [--expire <expire>]
-n, --dry-run do not remove, show only
-v, --verbose report pruned working trees
--expire <expiry-date>
expire working trees older than <time>
ok 2 - worktree prune on normal repo
expecting success of 2401.3 'prune files inside $GIT_DIR/worktrees':
mkdir .git/worktrees &&
: >.git/worktrees/abc &&
git worktree prune --verbose 2>actual &&
cat >expect <<EOF &&
Removing worktrees/abc: not a valid directory
EOF
test_cmp expect actual &&
! test -f .git/worktrees/abc &&
! test -d .git/worktrees
ok 3 - prune files inside $GIT_DIR/worktrees
expecting success of 2401.4 'prune directories without gitdir':
mkdir -p .git/worktrees/def/abc &&
: >.git/worktrees/def/def &&
cat >expect <<EOF &&
Removing worktrees/def: gitdir file does not exist
EOF
git worktree prune --verbose 2>actual &&
test_cmp expect actual &&
! test -d .git/worktrees/def &&
! test -d .git/worktrees
ok 4 - prune directories without gitdir
checking prerequisite: SANITY
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SANITY" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SANITY" &&
mkdir SANETESTD.1 SANETESTD.2 &&
chmod +w SANETESTD.1 SANETESTD.2 &&
>SANETESTD.1/x 2>SANETESTD.2/x &&
chmod -w SANETESTD.1 &&
chmod -r SANETESTD.1/x &&
chmod -rx SANETESTD.2 ||
BUG "cannot prepare SANETESTD"
! test -r SANETESTD.1/x &&
! rm SANETESTD.1/x && ! test -f SANETESTD.2/x
status=$?
chmod +rwx SANETESTD.1 SANETESTD.2 &&
rm -rf SANETESTD.1 SANETESTD.2 ||
BUG "cannot clean SANETESTD"
return $status
)
rm: cannot remove 'SANETESTD.1/x': Permission denied
prerequisite SANITY ok
expecting success of 2401.5 'prune directories with unreadable gitdir':
mkdir -p .git/worktrees/def/abc &&
: >.git/worktrees/def/def &&
: >.git/worktrees/def/gitdir &&
chmod u-r .git/worktrees/def/gitdir &&
git worktree prune --verbose 2>actual &&
test_i18ngrep "Removing worktrees/def: unable to read gitdir file" actual &&
! test -d .git/worktrees/def &&
! test -d .git/worktrees
Removing worktrees/def: unable to read gitdir file (Permission denied)
ok 5 - prune directories with unreadable gitdir
expecting success of 2401.6 'prune directories with invalid gitdir':
mkdir -p .git/worktrees/def/abc &&
: >.git/worktrees/def/def &&
: >.git/worktrees/def/gitdir &&
git worktree prune --verbose 2>actual &&
test_i18ngrep "Removing worktrees/def: invalid gitdir file" actual &&
! test -d .git/worktrees/def &&
! test -d .git/worktrees
Removing worktrees/def: invalid gitdir file
ok 6 - prune directories with invalid gitdir
expecting success of 2401.7 'prune directories with gitdir pointing to nowhere':
mkdir -p .git/worktrees/def/abc &&
: >.git/worktrees/def/def &&
echo "$(pwd)"/nowhere >.git/worktrees/def/gitdir &&
git worktree prune --verbose 2>actual &&
test_i18ngrep "Removing worktrees/def: gitdir file points to non-existent location" actual &&
! test -d .git/worktrees/def &&
! test -d .git/worktrees
Removing worktrees/def: gitdir file points to non-existent location
ok 7 - prune directories with gitdir pointing to nowhere
expecting success of 2401.8 'not prune locked checkout':
test_when_finished rm -r .git/worktrees &&
mkdir -p .git/worktrees/ghi &&
: >.git/worktrees/ghi/locked &&
git worktree prune &&
test -d .git/worktrees/ghi
ok 8 - not prune locked checkout
expecting success of 2401.9 'not prune recent checkouts':
test_when_finished rm -r .git/worktrees &&
git worktree add jlm HEAD &&
test -d .git/worktrees/jlm &&
rm -rf jlm &&
git worktree prune --verbose --expire=2.days.ago &&
test -d .git/worktrees/jlm
Preparing worktree (detached HEAD 50572bf)
HEAD is now at 50572bf init
ok 9 - not prune recent checkouts
expecting success of 2401.10 'not prune proper checkouts':
test_when_finished rm -r .git/worktrees &&
git worktree add --detach "$PWD/nop" main &&
git worktree prune &&
test -d .git/worktrees/nop
Preparing worktree (detached HEAD 50572bf)
HEAD is now at 50572bf init
ok 10 - not prune proper checkouts
expecting success of 2401.11 'prune duplicate (linked/linked)':
test_when_finished rm -fr .git/worktrees w1 w2 &&
git worktree add --detach w1 &&
git worktree add --detach w2 &&
sed "s/w2/w1/" .git/worktrees/w2/gitdir >.git/worktrees/w2/gitdir.new &&
mv .git/worktrees/w2/gitdir.new .git/worktrees/w2/gitdir &&
git worktree prune --verbose 2>actual &&
test_i18ngrep "duplicate entry" actual &&
test -d .git/worktrees/w1 &&
! test -d .git/worktrees/w2
Preparing worktree (detached HEAD 50572bf)
HEAD is now at 50572bf init
Preparing worktree (detached HEAD 50572bf)
HEAD is now at 50572bf init
Removing worktrees/w2: duplicate entry
ok 11 - prune duplicate (linked/linked)
expecting success of 2401.12 'prune duplicate (main/linked)':
test_when_finished rm -fr repo wt &&
test_create_repo repo &&
test_commit -C repo x &&
git -C repo worktree add --detach ../wt &&
rm -fr wt &&
mv repo wt &&
git -C wt worktree prune --verbose 2>actual &&
test_i18ngrep "duplicate entry" actual &&
! test -d .git/worktrees/wt
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2401-worktree-prune/repo/.git/
[main (root-commit) cb85766] x
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 x.t
Preparing worktree (detached HEAD cb85766)
HEAD is now at cb85766 x
Removing worktrees/wt: duplicate entry
ok 12 - prune duplicate (main/linked)
# passed all 12 test(s)
1..12
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2403-worktree-move.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2403-worktree-move/.git/
expecting success of 2403.1 'setup':
test_commit init &&
git worktree add source &&
git worktree list --porcelain >out &&
grep "^worktree" out >actual &&
cat <<-EOF >expected &&
worktree $(pwd)
worktree $(pwd)/source
EOF
test_cmp expected actual
[master (root-commit) 2519212] init
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 init.t
Preparing worktree (new branch 'source')
HEAD is now at 2519212 init
ok 1 - setup
expecting success of 2403.2 'lock main worktree':
test_must_fail git worktree lock .
fatal: The main working tree cannot be locked or unlocked
ok 2 - lock main worktree
expecting success of 2403.3 'lock linked worktree':
git worktree lock --reason hahaha source &&
echo hahaha >expected &&
test_cmp expected .git/worktrees/source/locked
ok 3 - lock linked worktree
expecting success of 2403.4 'lock linked worktree from another worktree':
rm .git/worktrees/source/locked &&
git worktree add elsewhere &&
git -C elsewhere worktree lock --reason hahaha ../source &&
echo hahaha >expected &&
test_cmp expected .git/worktrees/source/locked
Preparing worktree (new branch 'elsewhere')
HEAD is now at 2519212 init
ok 4 - lock linked worktree from another worktree
expecting success of 2403.5 'lock worktree twice':
test_must_fail git worktree lock source &&
echo hahaha >expected &&
test_cmp expected .git/worktrees/source/locked
fatal: 'source' is already locked, reason: hahaha
ok 5 - lock worktree twice
expecting success of 2403.6 'lock worktree twice (from the locked worktree)':
test_must_fail git -C source worktree lock . &&
echo hahaha >expected &&
test_cmp expected .git/worktrees/source/locked
fatal: '.' is already locked, reason: hahaha
ok 6 - lock worktree twice (from the locked worktree)
expecting success of 2403.7 'unlock main worktree':
test_must_fail git worktree unlock .
fatal: The main working tree cannot be locked or unlocked
ok 7 - unlock main worktree
expecting success of 2403.8 'unlock linked worktree':
git worktree unlock source &&
test_path_is_missing .git/worktrees/source/locked
ok 8 - unlock linked worktree
expecting success of 2403.9 'unlock worktree twice':
test_must_fail git worktree unlock source &&
test_path_is_missing .git/worktrees/source/locked
fatal: 'source' is not locked
ok 9 - unlock worktree twice
expecting success of 2403.10 'move non-worktree':
mkdir abc &&
test_must_fail git worktree move abc def
fatal: 'abc' is not a working tree
ok 10 - move non-worktree
expecting success of 2403.11 'move locked worktree':
git worktree lock source &&
test_when_finished "git worktree unlock source" &&
test_must_fail git worktree move source destination
fatal: cannot move a locked working tree;
use 'move -f -f' to override or unlock first
ok 11 - move locked worktree
expecting success of 2403.12 'move worktree':
git worktree move source destination &&
test_path_is_missing source &&
git worktree list --porcelain >out &&
grep "^worktree.*/destination$" out &&
! grep "^worktree.*/source$" out &&
git -C destination log --format=%s >actual2 &&
echo init >expected2 &&
test_cmp expected2 actual2
worktree /<<PKGBUILDDIR>>/t/trash directory.t2403-worktree-move/destination
ok 12 - move worktree
expecting success of 2403.13 'move main worktree':
test_must_fail git worktree move . def
fatal: '.' is a main working tree
ok 13 - move main worktree
expecting success of 2403.14 'move worktree to another dir':
mkdir some-dir &&
git worktree move destination some-dir &&
test_when_finished "git worktree move some-dir/destination destination" &&
test_path_is_missing destination &&
git worktree list --porcelain >out &&
grep "^worktree.*/some-dir/destination$" out &&
git -C some-dir/destination log --format=%s >actual2 &&
echo init >expected2 &&
test_cmp expected2 actual2
worktree /<<PKGBUILDDIR>>/t/trash directory.t2403-worktree-move/some-dir/destination
ok 14 - move worktree to another dir
expecting success of 2403.15 'move locked worktree (force)':
test_when_finished "
git worktree unlock flump || :
git worktree remove flump || :
git worktree unlock ploof || :
git worktree remove ploof || :
" &&
git worktree add --detach flump &&
git worktree lock flump &&
test_must_fail git worktree move flump ploof" &&
test_must_fail git worktree move --force flump ploof" &&
git worktree move --force --force flump ploof
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
fatal: cannot move a locked working tree;
use 'move -f -f' to override or unlock first
fatal: 'flump' is not a working tree
fatal: 'flump' is not a working tree
ok 15 - move locked worktree (force)
expecting success of 2403.16 'refuse to move worktree atop existing path':
>bobble &&
git worktree add --detach beeble &&
test_must_fail git worktree move beeble bobble
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
fatal: 'bobble' already exists
ok 16 - refuse to move worktree atop existing path
expecting success of 2403.17 'move atop existing but missing worktree':
git worktree add --detach gnoo &&
git worktree add --detach pneu &&
rm -fr pneu &&
test_must_fail git worktree move gnoo pneu &&
git worktree move --force gnoo pneu &&
git worktree add --detach nu &&
git worktree lock nu &&
rm -fr nu &&
test_must_fail git worktree move pneu nu &&
test_must_fail git worktree --force move pneu nu &&
git worktree move --force --force pneu nu
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
fatal: 'pneu' is a missing but already registered worktree;
use 'move -f' to override, or 'prune' or 'remove' to clear
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
fatal: 'nu' is a missing but locked worktree;
use 'move -f -f' to override, or 'unlock' and 'prune' or 'remove' to clear
error: unknown option `force'
usage: git worktree add [-f] [--detach] [--checkout] [--lock [--reason <string>]]
[--orphan] [(-b | -B) <new-branch>] <path> [<commit-ish>]
or: git worktree list [-v | --porcelain [-z]]
or: git worktree lock [--reason <string>] <worktree>
or: git worktree move <worktree> <new-path>
or: git worktree prune [-n] [-v] [--expire <expire>]
or: git worktree remove [-f] <worktree>
or: git worktree repair [<path>...]
or: git worktree unlock <worktree>
ok 17 - move atop existing but missing worktree
expecting success of 2403.18 'move a repo with uninitialized submodule':
git init withsub &&
(
cd withsub &&
test_commit initial &&
git -c protocol.file.allow=always \
submodule add "$PWD"/.git sub &&
git commit -m withsub &&
git worktree add second HEAD &&
git worktree move second third
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2403-worktree-move/withsub/.git/
[master (root-commit) 5e30013] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 initial.t
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2403-worktree-move/withsub/sub'...
done.
[master d4d7bd0] withsub
Author: A U Thor <author@example.com>
2 files changed, 4 insertions(+)
create mode 100644 .gitmodules
create mode 160000 sub
Preparing worktree (detached HEAD d4d7bd0)
HEAD is now at d4d7bd0 withsub
ok 18 - move a repo with uninitialized submodule
expecting success of 2403.19 'not move a repo with initialized submodule':
(
cd withsub &&
git -c protocol.file.allow=always -C third submodule update &&
test_must_fail git worktree move third forth
)
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2403-worktree-move/withsub/third/sub'...
done.
Submodule path 'sub': checked out '5e3001300c8a533bee3e24efd70fbfae3dfa27e3'
fatal: working trees containing submodules cannot be moved or removed
ok 19 - not move a repo with initialized submodule
expecting success of 2403.20 'remove main worktree':
test_must_fail git worktree remove .
fatal: '.' is a main working tree
ok 20 - remove main worktree
expecting success of 2403.21 'remove locked worktree':
git worktree lock destination &&
test_when_finished "git worktree unlock destination" &&
test_must_fail git worktree remove destination
fatal: cannot remove a locked working tree;
use 'remove -f -f' to override or unlock first
ok 21 - remove locked worktree
expecting success of 2403.22 'remove worktree with dirty tracked file':
echo dirty >>destination/init.t &&
test_when_finished "git -C destination checkout init.t" &&
test_must_fail git worktree remove destination
fatal: 'destination' contains modified or untracked files, use --force to delete it
Updated 1 path from the index
ok 22 - remove worktree with dirty tracked file
expecting success of 2403.23 'remove worktree with untracked file':
: >destination/untracked &&
test_must_fail git worktree remove destination
fatal: 'destination' contains modified or untracked files, use --force to delete it
ok 23 - remove worktree with untracked file
expecting success of 2403.24 'force remove worktree with untracked file':
git worktree remove --force destination &&
test_path_is_missing destination
ok 24 - force remove worktree with untracked file
expecting success of 2403.25 'remove missing worktree':
git worktree add to-be-gone &&
test -d .git/worktrees/to-be-gone &&
mv to-be-gone gone &&
git worktree remove to-be-gone &&
test_path_is_missing .git/worktrees/to-be-gone
Preparing worktree (new branch 'to-be-gone')
HEAD is now at 2519212 init
ok 25 - remove missing worktree
expecting success of 2403.26 'NOT remove missing-but-locked worktree':
git worktree add gone-but-locked &&
git worktree lock gone-but-locked &&
test -d .git/worktrees/gone-but-locked &&
mv gone-but-locked really-gone-now &&
test_must_fail git worktree remove gone-but-locked &&
test_path_is_dir .git/worktrees/gone-but-locked
Preparing worktree (new branch 'gone-but-locked')
HEAD is now at 2519212 init
fatal: cannot remove a locked working tree;
use 'remove -f -f' to override or unlock first
ok 26 - NOT remove missing-but-locked worktree
expecting success of 2403.27 'proper error when worktree not found':
for i in noodle noodle/bork
do
test_must_fail git worktree lock $i 2>err &&
test_i18ngrep "not a working tree" err || return 1
done
fatal: 'noodle' is not a working tree
fatal: 'noodle/bork' is not a working tree
ok 27 - proper error when worktree not found
expecting success of 2403.28 'remove locked worktree (force)':
git worktree add --detach gumby &&
test_when_finished "git worktree remove gumby || :" &&
git worktree lock gumby &&
test_when_finished "git worktree unlock gumby || :" &&
test_must_fail git worktree remove gumby &&
test_must_fail git worktree remove --force gumby &&
git worktree remove --force --force gumby
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
fatal: cannot remove a locked working tree;
use 'remove -f -f' to override or unlock first
fatal: cannot remove a locked working tree;
use 'remove -f -f' to override or unlock first
fatal: 'gumby' is not a working tree
fatal: 'gumby' is not a working tree
ok 28 - remove locked worktree (force)
expecting success of 2403.29 'remove cleans up .git/worktrees when empty':
git init moog &&
(
cd moog &&
test_commit bim &&
git worktree add --detach goom &&
test_path_exists .git/worktrees &&
git worktree remove goom &&
test_path_is_missing .git/worktrees
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2403-worktree-move/moog/.git/
[master (root-commit) 89d547b] bim
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 bim.t
Preparing worktree (detached HEAD 89d547b)
HEAD is now at 89d547b bim
ok 29 - remove cleans up .git/worktrees when empty
expecting success of 2403.30 'remove a repo with uninitialized submodule':
test_config_global protocol.file.allow always &&
(
cd withsub &&
git worktree add to-remove HEAD &&
git worktree remove to-remove
)
Preparing worktree (detached HEAD d4d7bd0)
HEAD is now at d4d7bd0 withsub
ok 30 - remove a repo with uninitialized submodule
expecting success of 2403.31 'not remove a repo with initialized submodule':
test_config_global protocol.file.allow always &&
(
cd withsub &&
git worktree add to-remove HEAD &&
git -C to-remove submodule update &&
test_must_fail git worktree remove to-remove
)
Preparing worktree (detached HEAD d4d7bd0)
HEAD is now at d4d7bd0 withsub
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2403-worktree-move/withsub/to-remove/sub'...
done.
Submodule path 'sub': checked out '5e3001300c8a533bee3e24efd70fbfae3dfa27e3'
fatal: working trees containing submodules cannot be moved or removed
ok 31 - not remove a repo with initialized submodule
# passed all 31 test(s)
1..31
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2402-worktree-list.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2402-worktree-list/.git/
expecting success of 2402.1 'setup':
test_commit init
[main (root-commit) 2519212] init
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 init.t
ok 1 - setup
expecting success of 2402.2 'rev-parse --git-common-dir on main worktree':
git rev-parse --git-common-dir >actual &&
echo .git >expected &&
test_cmp expected actual &&
mkdir sub &&
git -C sub rev-parse --git-common-dir >actual2 &&
echo ../.git >expected2 &&
test_cmp expected2 actual2
ok 2 - rev-parse --git-common-dir on main worktree
expecting success of 2402.3 'rev-parse --git-path objects linked worktree':
echo "$(git rev-parse --show-toplevel)/.git/objects" >expect &&
test_when_finished "rm -rf linked-tree actual expect && git worktree prune" &&
git worktree add --detach linked-tree main &&
git -C linked-tree rev-parse --git-path objects >actual &&
test_cmp expect actual
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
ok 3 - rev-parse --git-path objects linked worktree
expecting success of 2402.4 '"list" all worktrees from main':
echo "$(git rev-parse --show-toplevel) $(git rev-parse --short HEAD) [$(git symbolic-ref --short HEAD)]" >expect &&
test_when_finished "rm -rf here out actual expect && git worktree prune" &&
git worktree add --detach here main &&
echo "$(git -C here rev-parse --show-toplevel) $(git rev-parse --short HEAD) (detached HEAD)" >>expect &&
git worktree list >out &&
sed "s/ */ /g" <out >actual &&
test_cmp expect actual
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
ok 4 - "list" all worktrees from main
expecting success of 2402.5 '"list" all worktrees from linked':
echo "$(git rev-parse --show-toplevel) $(git rev-parse --short HEAD) [$(git symbolic-ref --short HEAD)]" >expect &&
test_when_finished "rm -rf here out actual expect && git worktree prune" &&
git worktree add --detach here main &&
echo "$(git -C here rev-parse --show-toplevel) $(git rev-parse --short HEAD) (detached HEAD)" >>expect &&
git -C here worktree list >out &&
sed "s/ */ /g" <out >actual &&
test_cmp expect actual
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
ok 5 - "list" all worktrees from linked
expecting success of 2402.6 '"list" all worktrees --porcelain':
echo "worktree $(git rev-parse --show-toplevel)" >expect &&
echo "HEAD $(git rev-parse HEAD)" >>expect &&
echo "branch $(git symbolic-ref HEAD)" >>expect &&
echo >>expect &&
test_when_finished "rm -rf here actual expect && git worktree prune" &&
git worktree add --detach here main &&
echo "worktree $(git -C here rev-parse --show-toplevel)" >>expect &&
echo "HEAD $(git rev-parse HEAD)" >>expect &&
echo "detached" >>expect &&
echo >>expect &&
git worktree list --porcelain >actual &&
test_cmp expect actual
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
ok 6 - "list" all worktrees --porcelain
expecting success of 2402.7 '"list" all worktrees --porcelain -z':
test_when_finished "rm -rf here _actual actual expect &&
git worktree prune" &&
printf "worktree %sQHEAD %sQbranch %sQQ" \
"$(git rev-parse --show-toplevel)" \
$(git rev-parse HEAD --symbolic-full-name HEAD) >expect &&
git worktree add --detach here main &&
printf "worktree %sQHEAD %sQdetachedQQ" \
"$(git -C here rev-parse --show-toplevel)" \
"$(git rev-parse HEAD)" >>expect &&
git worktree list --porcelain -z >_actual &&
nul_to_q <_actual >actual &&
test_cmp expect actual
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
ok 7 - "list" all worktrees --porcelain -z
expecting success of 2402.8 '"list" -z fails without --porcelain':
test_must_fail git worktree list -z
fatal: the option '-z' requires '--porcelain'
ok 8 - "list" -z fails without --porcelain
expecting success of 2402.9 '"list" all worktrees with locked annotation':
test_when_finished "rm -rf locked unlocked out && git worktree prune" &&
git worktree add --detach locked main &&
git worktree add --detach unlocked main &&
git worktree lock locked &&
test_when_finished "git worktree unlock locked" &&
git worktree list >out &&
grep "/locked *[0-9a-f].* locked$" out &&
! grep "/unlocked *[0-9a-f].* locked$" out
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
/<<PKGBUILDDIR>>/t/trash directory.t2402-worktree-list/locked 2519212 (detached HEAD) locked
ok 9 - "list" all worktrees with locked annotation
expecting success of 2402.10 '"list" all worktrees --porcelain with locked':
test_when_finished "rm -rf locked1 locked2 unlocked out actual expect && git worktree prune" &&
echo "locked" >expect &&
echo "locked with reason" >>expect &&
git worktree add --detach locked1 &&
git worktree add --detach locked2 &&
# unlocked worktree should not be annotated with "locked"
git worktree add --detach unlocked &&
git worktree lock locked1 &&
test_when_finished "git worktree unlock locked1" &&
git worktree lock locked2 --reason "with reason" &&
test_when_finished "git worktree unlock locked2" &&
git worktree list --porcelain >out &&
grep "^locked" out >actual &&
test_cmp expect actual
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
ok 10 - "list" all worktrees --porcelain with locked
expecting success of 2402.11 '"list" all worktrees --porcelain with locked reason newline escaped':
test_when_finished "rm -rf locked_lf locked_crlf out actual expect && git worktree prune" &&
printf "locked \"locked\\\\r\\\\nreason\"\n" >expect &&
printf "locked \"locked\\\\nreason\"\n" >>expect &&
git worktree add --detach locked_lf &&
git worktree add --detach locked_crlf &&
git worktree lock locked_lf --reason "$(printf "locked\nreason")" &&
test_when_finished "git worktree unlock locked_lf" &&
git worktree lock locked_crlf --reason "$(printf "locked\r\nreason")" &&
test_when_finished "git worktree unlock locked_crlf" &&
git worktree list --porcelain >out &&
grep "^locked" out >actual &&
test_cmp expect actual
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
ok 11 - "list" all worktrees --porcelain with locked reason newline escaped
expecting success of 2402.12 '"list" all worktrees with prunable annotation':
test_when_finished "rm -rf prunable unprunable out && git worktree prune" &&
git worktree add --detach prunable &&
git worktree add --detach unprunable &&
rm -rf prunable &&
git worktree list >out &&
grep "/prunable *[0-9a-f].* prunable$" out &&
! grep "/unprunable *[0-9a-f].* prunable$"
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
/<<PKGBUILDDIR>>/t/trash directory.t2402-worktree-list/prunable 2519212 (detached HEAD) prunable
ok 12 - "list" all worktrees with prunable annotation
expecting success of 2402.13 '"list" all worktrees --porcelain with prunable':
test_when_finished "rm -rf prunable out && git worktree prune" &&
git worktree add --detach prunable &&
rm -rf prunable &&
git worktree list --porcelain >out &&
sed -n "/^worktree .*\/prunable$/,/^$/p" <out >only_prunable &&
test_i18ngrep "^prunable gitdir file points to non-existent location$" only_prunable
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
prunable gitdir file points to non-existent location
ok 13 - "list" all worktrees --porcelain with prunable
expecting success of 2402.14 '"list" all worktrees with prunable consistent with "prune"':
test_when_finished "rm -rf prunable unprunable out && git worktree prune" &&
git worktree add --detach prunable &&
git worktree add --detach unprunable &&
rm -rf prunable &&
git worktree list >out &&
grep "/prunable *[0-9a-f].* prunable$" out &&
! grep "/unprunable *[0-9a-f].* unprunable$" out &&
git worktree prune --verbose 2>out &&
test_i18ngrep "^Removing worktrees/prunable" out &&
test_i18ngrep ! "^Removing worktrees/unprunable" out
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
/<<PKGBUILDDIR>>/t/trash directory.t2402-worktree-list/prunable 2519212 (detached HEAD) prunable
Removing worktrees/prunable: gitdir file points to non-existent location
ok 14 - "list" all worktrees with prunable consistent with "prune"
expecting success of 2402.15 '"list" --verbose and --porcelain mutually exclusive':
test_must_fail git worktree list --verbose --porcelain
fatal: options '--verbose' and '--porcelain' cannot be used together
ok 15 - "list" --verbose and --porcelain mutually exclusive
expecting success of 2402.16 '"list" all worktrees --verbose with locked':
test_when_finished "rm -rf locked1 locked2 out actual expect && git worktree prune" &&
git worktree add locked1 --detach &&
git worktree add locked2 --detach &&
git worktree lock locked1 &&
test_when_finished "git worktree unlock locked1" &&
git worktree lock locked2 --reason "with reason" &&
test_when_finished "git worktree unlock locked2" &&
echo "$(git -C locked2 rev-parse --show-toplevel) $(git rev-parse --short HEAD) (detached HEAD)" >expect &&
printf "\tlocked: with reason\n" >>expect &&
git worktree list --verbose >out &&
grep "/locked1 *[0-9a-f].* locked$" out &&
sed -n "s/ */ /g;/\/locked2 *[0-9a-f].*$/,/locked: .*$/p" <out >actual &&
test_cmp actual expect
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
/<<PKGBUILDDIR>>/t/trash directory.t2402-worktree-list/locked1 2519212 (detached HEAD) locked
ok 16 - "list" all worktrees --verbose with locked
expecting success of 2402.17 '"list" all worktrees --verbose with prunable':
test_when_finished "rm -rf prunable out actual expect && git worktree prune" &&
git worktree add prunable --detach &&
echo "$(git -C prunable rev-parse --show-toplevel) $(git rev-parse --short HEAD) (detached HEAD)" >expect &&
printf "\tprunable: gitdir file points to non-existent location\n" >>expect &&
rm -rf prunable &&
git worktree list --verbose >out &&
sed -n "s/ */ /g;/\/prunable *[0-9a-f].*$/,/prunable: .*$/p" <out >actual &&
test_cmp actual expect
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
ok 17 - "list" all worktrees --verbose with prunable
expecting success of 2402.18 'bare repo setup':
git init --bare bare1 &&
echo "data" >file1 &&
git add file1 &&
git commit -m"File1: add data" &&
git push bare1 main &&
git reset --hard HEAD^
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2402-worktree-list/bare1/
[main 7c81006] File1: add data
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file1
To bare1
* [new branch] main -> main
HEAD is now at 2519212 init
ok 18 - bare repo setup
expecting success of 2402.19 '"list" all worktrees from bare main':
test_when_finished "rm -rf there out actual expect && git -C bare1 worktree prune" &&
git -C bare1 worktree add --detach ../there main &&
echo "$(pwd)/bare1 (bare)" >expect &&
echo "$(git -C there rev-parse --show-toplevel) $(git -C there rev-parse --short HEAD) (detached HEAD)" >>expect &&
git -C bare1 worktree list >out &&
sed "s/ */ /g" <out >actual &&
test_cmp expect actual
Preparing worktree (detached HEAD 7c81006)
HEAD is now at 7c81006 File1: add data
ok 19 - "list" all worktrees from bare main
expecting success of 2402.20 '"list" all worktrees --porcelain from bare main':
test_when_finished "rm -rf there actual expect && git -C bare1 worktree prune" &&
git -C bare1 worktree add --detach ../there main &&
echo "worktree $(pwd)/bare1" >expect &&
echo "bare" >>expect &&
echo >>expect &&
echo "worktree $(git -C there rev-parse --show-toplevel)" >>expect &&
echo "HEAD $(git -C there rev-parse HEAD)" >>expect &&
echo "detached" >>expect &&
echo >>expect &&
git -C bare1 worktree list --porcelain >actual &&
test_cmp expect actual
Preparing worktree (detached HEAD 7c81006)
HEAD is now at 7c81006 File1: add data
ok 20 - "list" all worktrees --porcelain from bare main
expecting success of 2402.21 '"list" all worktrees from linked with a bare main':
test_when_finished "rm -rf there out actual expect && git -C bare1 worktree prune" &&
git -C bare1 worktree add --detach ../there main &&
echo "$(pwd)/bare1 (bare)" >expect &&
echo "$(git -C there rev-parse --show-toplevel) $(git -C there rev-parse --short HEAD) (detached HEAD)" >>expect &&
git -C there worktree list >out &&
sed "s/ */ /g" <out >actual &&
test_cmp expect actual
Preparing worktree (detached HEAD 7c81006)
HEAD is now at 7c81006 File1: add data
ok 21 - "list" all worktrees from linked with a bare main
expecting success of 2402.22 'bare repo cleanup':
rm -rf bare1
ok 22 - bare repo cleanup
expecting success of 2402.23 'broken main worktree still at the top':
git init broken-main &&
(
cd broken-main &&
test_commit new &&
git worktree add linked &&
cat >expected <<-EOF &&
worktree $(pwd)
HEAD $ZERO_OID
EOF
cd linked &&
echo "worktree $(pwd)" >expected &&
(cd ../ && test-tool ref-store main create-symref HEAD .broken ) &&
git worktree list --porcelain >out &&
head -n 3 out >actual &&
test_cmp ../expected actual &&
git worktree list >out &&
head -n 1 out >actual.2 &&
grep -F "(error)" actual.2
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2402-worktree-list/broken-main/.git/
[main (root-commit) 3325ee1] new
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 new.t
Preparing worktree (new branch 'linked')
HEAD is now at 3325ee1 new
/<<PKGBUILDDIR>>/t/trash directory.t2402-worktree-list/broken-main 0000000 (error)
ok 23 - broken main worktree still at the top
expecting success of 2402.24 'linked worktrees are sorted':
mkdir sorted &&
git init sorted/main &&
(
cd sorted/main &&
test_tick &&
test_commit new &&
git worktree add ../first &&
git worktree add ../second &&
git worktree list --porcelain >out &&
grep ^worktree out >actual
) &&
cat >expected <<-EOF &&
worktree $(pwd)/sorted/main
worktree $(pwd)/sorted/first
worktree $(pwd)/sorted/second
EOF
test_cmp expected sorted/main/actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2402-worktree-list/sorted/main/.git/
[main (root-commit) d8ef111] new
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 new.t
Preparing worktree (new branch 'first')
HEAD is now at d8ef111 new
Preparing worktree (new branch 'second')
HEAD is now at d8ef111 new
ok 24 - linked worktrees are sorted
expecting success of 2402.25 'worktree path when called in .git directory':
git worktree list >list1 &&
git -C .git worktree list >list2 &&
test_cmp list1 list2
ok 25 - worktree path when called in .git directory
# passed all 25 test(s)
1..25
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2404-worktree-config.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2404-worktree-config/.git/
expecting success of 2404.1 'setup':
test_commit start
[master (root-commit) bb4ab09] start
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 start.t
ok 1 - setup
expecting success of 2404.2 'config --worktree in single worktree':
git config --worktree foo.bar true &&
test_cmp_config true foo.bar
ok 2 - config --worktree in single worktree
expecting success of 2404.3 'add worktrees':
git worktree add wt1 &&
git worktree add wt2
Preparing worktree (new branch 'wt1')
HEAD is now at bb4ab09 start
Preparing worktree (new branch 'wt2')
HEAD is now at bb4ab09 start
ok 3 - add worktrees
expecting success of 2404.4 'config --worktree without extension':
test_must_fail git config --worktree foo.bar false
fatal: --worktree cannot be used with multiple working trees unless the config
extension worktreeConfig is enabled. Please read "CONFIGURATION FILE"
section in "git help worktree" for details
ok 4 - config --worktree without extension
expecting success of 2404.5 'enable worktreeConfig extension':
git config core.repositoryformatversion 1 &&
git config extensions.worktreeConfig true &&
test_cmp_config true extensions.worktreeConfig &&
test_cmp_config 1 core.repositoryformatversion
ok 5 - enable worktreeConfig extension
expecting success of 2404.6 'config is shared as before':
git config this.is shared &&
test_cmp_config shared this.is &&
test_cmp_config -C wt1 shared this.is &&
test_cmp_config -C wt2 shared this.is
ok 6 - config is shared as before
expecting success of 2404.7 'config is shared (set from another worktree)':
git -C wt1 config that.is also-shared &&
test_cmp_config also-shared that.is &&
test_cmp_config -C wt1 also-shared that.is &&
test_cmp_config -C wt2 also-shared that.is
ok 7 - config is shared (set from another worktree)
expecting success of 2404.8 'config private to main worktree':
git config --worktree this.is for-main &&
test_cmp_config for-main this.is &&
test_cmp_config -C wt1 shared this.is &&
test_cmp_config -C wt2 shared this.is
ok 8 - config private to main worktree
expecting success of 2404.9 'config private to linked worktree':
git -C wt1 config --worktree this.is for-wt1 &&
test_cmp_config for-main this.is &&
test_cmp_config -C wt1 for-wt1 this.is &&
test_cmp_config -C wt2 shared this.is
ok 9 - config private to linked worktree
expecting success of 2404.10 'core.bare no longer for main only':
test_config core.bare true &&
test "$(git rev-parse --is-bare-repository)" = true &&
test "$(git -C wt1 rev-parse --is-bare-repository)" = true &&
test "$(git -C wt2 rev-parse --is-bare-repository)" = true
ok 10 - core.bare no longer for main only
expecting success of 2404.11 'per-worktree core.bare is picked up':
git -C wt1 config --worktree core.bare true &&
test "$(git rev-parse --is-bare-repository)" = false &&
test "$(git -C wt1 rev-parse --is-bare-repository)" = true &&
test "$(git -C wt2 rev-parse --is-bare-repository)" = false
ok 11 - per-worktree core.bare is picked up
expecting success of 2404.12 'config.worktree no longer read without extension':
git config --unset extensions.worktreeConfig &&
test_cmp_config shared this.is &&
test_cmp_config -C wt1 shared this.is &&
test_cmp_config -C wt2 shared this.is
ok 12 - config.worktree no longer read without extension
# passed all 12 test(s)
1..12
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2405-worktree-submodule.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2405-worktree-submodule/.git/
expecting success of 2405.1 'setup: create origin repos':
git config --global protocol.file.allow always &&
git init origin/sub &&
test_commit -C origin/sub file1 &&
git init origin/main &&
test_commit -C origin/main first &&
git -C origin/main submodule add ../sub &&
git -C origin/main commit -m "add sub" &&
test_commit -C origin/sub "file1 updated" file1 file1updated file1updated &&
git -C origin/main/sub pull &&
git -C origin/main add sub &&
git -C origin/main commit -m "sub updated"
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2405-worktree-submodule/origin/sub/.git/
[main (root-commit) 69af168] file1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file1.t
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2405-worktree-submodule/origin/main/.git/
[main (root-commit) 1e96f59] first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 first.t
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2405-worktree-submodule/origin/main/sub'...
done.
[main 322c452] add sub
Author: A U Thor <author@example.com>
2 files changed, 4 insertions(+)
create mode 100644 .gitmodules
create mode 160000 sub
[main 7829796] file1 updated
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file1
From /<<PKGBUILDDIR>>/t/trash directory.t2405-worktree-submodule/origin/sub
69af168..7829796 main -> origin/main
* [new tag] file1updated -> file1updated
Updating 69af168..7829796
Fast-forward
file1 | 1 +
1 file changed, 1 insertion(+)
create mode 100644 file1
[main d717f19] sub updated
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 1 - setup: create origin repos
expecting success of 2405.2 'setup: clone superproject to create main worktree':
git clone --recursive "$base_path/origin/main" main
Cloning into 'main'...
done.
Submodule 'sub' (/<<PKGBUILDDIR>>/t/trash directory.t2405-worktree-submodule/origin/sub) registered for path 'sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2405-worktree-submodule/main/sub'...
done.
Submodule path 'sub': checked out '782979677c1932d3806e9adc80194f805c02f4f3'
ok 2 - setup: clone superproject to create main worktree
expecting success of 2405.3 'add superproject worktree':
git -C main worktree add "$base_path/worktree" "$rev1_hash_main"
Preparing worktree (detached HEAD 322c452)
HEAD is now at 322c452 add sub
ok 3 - add superproject worktree
checking known breakage of 2405.4 'submodule is checked out just after worktree add':
git -C worktree diff --submodule main"^!" >out &&
grep "file1 updated" out
not ok 4 - submodule is checked out just after worktree add # TODO known breakage
expecting success of 2405.5 'add superproject worktree and initialize submodules':
git -C main worktree add "$base_path/worktree-submodule-update" "$rev1_hash_main" &&
git -C worktree-submodule-update submodule update
Preparing worktree (detached HEAD 322c452)
HEAD is now at 322c452 add sub
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2405-worktree-submodule/worktree-submodule-update/sub'...
done.
Submodule path 'sub': checked out '69af1687b671131ed0cfa61b7fcdc907a4c21f2c'
ok 5 - add superproject worktree and initialize submodules
expecting success of 2405.6 'submodule is checked out just after submodule update in linked worktree':
git -C worktree-submodule-update diff --submodule main"^!" >out &&
grep "file1 updated" out
> file1 updated
ok 6 - submodule is checked out just after submodule update in linked worktree
expecting success of 2405.7 'add superproject worktree and manually add submodule worktree':
git -C main worktree add "$base_path/linked_submodule" "$rev1_hash_main" &&
git -C main/sub worktree add "$base_path/linked_submodule/sub" "$rev1_hash_sub"
Preparing worktree (detached HEAD 322c452)
HEAD is now at 322c452 add sub
Preparing worktree (detached HEAD 69af168)
HEAD is now at 69af168 file1
ok 7 - add superproject worktree and manually add submodule worktree
expecting success of 2405.8 'submodule is checked out after manually adding submodule worktree':
git -C linked_submodule diff --submodule main"^!" >out &&
grep "file1 updated" out
> file1 updated
ok 8 - submodule is checked out after manually adding submodule worktree
expecting success of 2405.9 'checkout --recurse-submodules uses $GIT_DIR for submodules in a linked worktree':
git -C main worktree add "$base_path/checkout-recurse" --detach &&
git -C checkout-recurse submodule update --init &&
echo "gitdir: ../../main/.git/worktrees/checkout-recurse/modules/sub" >expect-gitfile &&
cat checkout-recurse/sub/.git >actual-gitfile &&
test_cmp expect-gitfile actual-gitfile &&
git -C main/sub rev-parse HEAD >expect-head-main &&
git -C checkout-recurse checkout --recurse-submodules HEAD~1 &&
cat checkout-recurse/sub/.git >actual-gitfile &&
git -C main/sub rev-parse HEAD >actual-head-main &&
test_cmp expect-gitfile actual-gitfile &&
test_cmp expect-head-main actual-head-main
Preparing worktree (detached HEAD d717f19)
HEAD is now at d717f19 sub updated
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2405-worktree-submodule/checkout-recurse/sub'...
done.
Submodule path 'sub': checked out '782979677c1932d3806e9adc80194f805c02f4f3'
Previous HEAD position was d717f19 sub updated
HEAD is now at 322c452 add sub
ok 9 - checkout --recurse-submodules uses $GIT_DIR for submodules in a linked worktree
expecting success of 2405.10 'core.worktree is removed in $GIT_DIR/modules/<name>/config, not in $GIT_COMMON_DIR/modules/<name>/config':
echo "../../../sub" >expect-main &&
git -C main/sub config --get core.worktree >actual-main &&
test_cmp expect-main actual-main &&
echo "../../../../../../checkout-recurse/sub" >expect-linked &&
git -C checkout-recurse/sub config --get core.worktree >actual-linked &&
test_cmp expect-linked actual-linked &&
git -C checkout-recurse checkout --recurse-submodules first &&
test_expect_code 1 git -C main/.git/worktrees/checkout-recurse/modules/sub config --get core.worktree >linked-config &&
test_must_be_empty linked-config &&
git -C main/sub config --get core.worktree >actual-main &&
test_cmp expect-main actual-main
Previous HEAD position was 322c452 add sub
HEAD is now at 1e96f59 first
ok 10 - core.worktree is removed in $GIT_DIR/modules/<name>/config, not in $GIT_COMMON_DIR/modules/<name>/config
expecting success of 2405.11 'unsetting core.worktree does not prevent running commands directly against the submodule repository':
git -C main/.git/worktrees/checkout-recurse/modules/sub log
commit 69af1687b671131ed0cfa61b7fcdc907a4c21f2c
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:13:13 2005 -0700
file1
ok 11 - unsetting core.worktree does not prevent running commands directly against the submodule repository
# still have 1 known breakage(s)
# passed all remaining 10 test(s)
1..11
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2406-worktree-repair.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2406-worktree-repair/.git/
expecting success of 2406.1 'setup':
test_commit init
[master (root-commit) 2519212] init
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 init.t
ok 1 - setup
expecting success of 2406.2 'skip missing worktree':
test_when_finished "git worktree prune" &&
git worktree add --detach missing &&
rm -rf missing &&
git worktree repair >out 2>err &&
test_must_be_empty out &&
test_must_be_empty err
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
ok 2 - skip missing worktree
expecting success of 2406.3 'worktree path not directory':
test_when_finished "git worktree prune" &&
git worktree add --detach notdir &&
rm -rf notdir &&
>notdir &&
test_must_fail git worktree repair >out 2>err &&
test_must_be_empty out &&
test_i18ngrep "not a directory" err
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
error: not a directory: /<<PKGBUILDDIR>>/t/trash directory.t2406-worktree-repair/notdir
ok 3 - worktree path not directory
expecting success of 2406.4 'don't clobber .git repo':
test_when_finished "rm -rf repo && git worktree prune" &&
git worktree add --detach repo &&
rm -rf repo &&
test_create_repo repo &&
test_must_fail git worktree repair >out 2>err &&
test_must_be_empty out &&
test_i18ngrep ".git is not a file" err
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2406-worktree-repair/repo/.git/
error: .git is not a file: /<<PKGBUILDDIR>>/t/trash directory.t2406-worktree-repair/repo
ok 4 - don't clobber .git repo
expecting success of 2406.5 'repair missing .git file':
test_corrupt_gitfile "rm -f corrupt/.git" ".git file broken"
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
repair: .git file broken: /<<PKGBUILDDIR>>/t/trash directory.t2406-worktree-repair/corrupt
ok 5 - repair missing .git file
expecting success of 2406.6 'repair bogus .git file':
test_corrupt_gitfile "echo \"gitdir: /nowhere\" >corrupt/.git" \
".git file broken"
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
repair: .git file broken: /<<PKGBUILDDIR>>/t/trash directory.t2406-worktree-repair/corrupt
ok 6 - repair bogus .git file
expecting success of 2406.7 'repair incorrect .git file':
test_when_finished "rm -rf other && git worktree prune" &&
test_create_repo other &&
other=$(git -C other rev-parse --absolute-git-dir) &&
test_corrupt_gitfile "echo \"gitdir: $other\" >corrupt/.git" \
".git file incorrect"
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2406-worktree-repair/other/.git/
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
repair: .git file incorrect: /<<PKGBUILDDIR>>/t/trash directory.t2406-worktree-repair/corrupt
ok 7 - repair incorrect .git file
expecting success of 2406.8 'repair .git file from main/.git':
test_corrupt_gitfile "rm -f corrupt/.git" ".git file broken" .git
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
repair: .git file broken: /<<PKGBUILDDIR>>/t/trash directory.t2406-worktree-repair/corrupt
ok 8 - repair .git file from main/.git
expecting success of 2406.9 'repair .git file from linked worktree':
test_when_finished "rm -rf other && git worktree prune" &&
git worktree add --detach other &&
test_corrupt_gitfile "rm -f corrupt/.git" ".git file broken" other
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
repair: .git file broken: /<<PKGBUILDDIR>>/t/trash directory.t2406-worktree-repair/corrupt
ok 9 - repair .git file from linked worktree
expecting success of 2406.10 'repair .git file from bare.git':
test_when_finished "rm -rf bare.git corrupt && git worktree prune" &&
git clone --bare . bare.git &&
git -C bare.git worktree add --detach ../corrupt &&
git -C corrupt rev-parse --absolute-git-dir >expect &&
rm -f corrupt/.git &&
git -C bare.git worktree repair &&
git -C corrupt rev-parse --absolute-git-dir >actual &&
test_cmp expect actual
Cloning into bare repository 'bare.git'...
done.
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
repair: .git file broken: /<<PKGBUILDDIR>>/t/trash directory.t2406-worktree-repair/corrupt
ok 10 - repair .git file from bare.git
expecting success of 2406.11 'invalid worktree path':
test_must_fail git worktree repair /notvalid >out 2>err &&
test_must_be_empty out &&
test_i18ngrep "not a valid path" err
error: not a valid path: /notvalid
ok 11 - invalid worktree path
expecting success of 2406.12 'repo not found; .git not file':
test_when_finished "rm -rf not-a-worktree" &&
test_create_repo not-a-worktree &&
test_must_fail git worktree repair not-a-worktree >out 2>err &&
test_must_be_empty out &&
test_i18ngrep ".git is not a file" err
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2406-worktree-repair/not-a-worktree/.git/
error: unable to locate repository; .git is not a file: /<<PKGBUILDDIR>>/t/trash directory.t2406-worktree-repair/not-a-worktree/.git
ok 12 - repo not found; .git not file
expecting success of 2406.13 'repo not found; .git not referencing repo':
test_when_finished "rm -rf side not-a-repo && git worktree prune" &&
git worktree add --detach side &&
sed s,\.git/worktrees/side$,not-a-repo, side/.git >side/.newgit &&
mv side/.newgit side/.git &&
mkdir not-a-repo &&
test_must_fail git worktree repair side 2>err &&
test_i18ngrep ".git file does not reference a repository" err
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
error: unable to locate repository; .git file does not reference a repository: /<<PKGBUILDDIR>>/t/trash directory.t2406-worktree-repair/side/.git
ok 13 - repo not found; .git not referencing repo
expecting success of 2406.14 'repo not found; .git file broken':
test_when_finished "rm -rf orig moved && git worktree prune" &&
git worktree add --detach orig &&
echo /invalid >orig/.git &&
mv orig moved &&
test_must_fail git worktree repair moved >out 2>err &&
test_must_be_empty out &&
test_i18ngrep ".git file broken" err
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
error: unable to locate repository; .git file broken: /<<PKGBUILDDIR>>/t/trash directory.t2406-worktree-repair/moved/.git
ok 14 - repo not found; .git file broken
expecting success of 2406.15 'repair broken gitdir':
test_when_finished "rm -rf orig moved && git worktree prune" &&
git worktree add --detach orig &&
sed s,orig/\.git$,moved/.git, .git/worktrees/orig/gitdir >expect &&
rm .git/worktrees/orig/gitdir &&
mv orig moved &&
git worktree repair moved 2>err &&
test_cmp expect .git/worktrees/orig/gitdir &&
test_i18ngrep "gitdir unreadable" err
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
repair: gitdir unreadable: /<<PKGBUILDDIR>>/t/trash directory.t2406-worktree-repair/.git/worktrees/orig/gitdir
ok 15 - repair broken gitdir
expecting success of 2406.16 'repair incorrect gitdir':
test_when_finished "rm -rf orig moved && git worktree prune" &&
git worktree add --detach orig &&
sed s,orig/\.git$,moved/.git, .git/worktrees/orig/gitdir >expect &&
mv orig moved &&
git worktree repair moved 2>err &&
test_cmp expect .git/worktrees/orig/gitdir &&
test_i18ngrep "gitdir incorrect" err
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
repair: gitdir incorrect: /<<PKGBUILDDIR>>/t/trash directory.t2406-worktree-repair/.git/worktrees/orig/gitdir
ok 16 - repair incorrect gitdir
expecting success of 2406.17 'repair gitdir (implicit) from linked worktree':
test_when_finished "rm -rf orig moved && git worktree prune" &&
git worktree add --detach orig &&
sed s,orig/\.git$,moved/.git, .git/worktrees/orig/gitdir >expect &&
mv orig moved &&
git -C moved worktree repair 2>err &&
test_cmp expect .git/worktrees/orig/gitdir &&
test_i18ngrep "gitdir incorrect" err
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
repair: gitdir incorrect: /<<PKGBUILDDIR>>/t/trash directory.t2406-worktree-repair/.git/worktrees/orig/gitdir
ok 17 - repair gitdir (implicit) from linked worktree
expecting success of 2406.18 'unable to repair gitdir (implicit) from main worktree':
test_when_finished "rm -rf orig moved && git worktree prune" &&
git worktree add --detach orig &&
cat .git/worktrees/orig/gitdir >expect &&
mv orig moved &&
git worktree repair 2>err &&
test_cmp expect .git/worktrees/orig/gitdir &&
test_must_be_empty err
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
ok 18 - unable to repair gitdir (implicit) from main worktree
expecting success of 2406.19 'repair multiple gitdir files':
test_when_finished "rm -rf orig1 orig2 moved1 moved2 &&
git worktree prune" &&
git worktree add --detach orig1 &&
git worktree add --detach orig2 &&
sed s,orig1/\.git$,moved1/.git, .git/worktrees/orig1/gitdir >expect1 &&
sed s,orig2/\.git$,moved2/.git, .git/worktrees/orig2/gitdir >expect2 &&
mv orig1 moved1 &&
mv orig2 moved2 &&
git worktree repair moved1 moved2 2>err &&
test_cmp expect1 .git/worktrees/orig1/gitdir &&
test_cmp expect2 .git/worktrees/orig2/gitdir &&
test_i18ngrep "gitdir incorrect:.*orig1/gitdir$" err &&
test_i18ngrep "gitdir incorrect:.*orig2/gitdir$" err
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
repair: gitdir incorrect: /<<PKGBUILDDIR>>/t/trash directory.t2406-worktree-repair/.git/worktrees/orig1/gitdir
repair: gitdir incorrect: /<<PKGBUILDDIR>>/t/trash directory.t2406-worktree-repair/.git/worktrees/orig2/gitdir
ok 19 - repair multiple gitdir files
expecting success of 2406.20 'repair moved main and linked worktrees':
test_when_finished "rm -rf main side mainmoved sidemoved" &&
test_create_repo main &&
test_commit -C main init &&
git -C main worktree add --detach ../side &&
sed "s,side/\.git$,sidemoved/.git," \
main/.git/worktrees/side/gitdir >expect-gitdir &&
sed "s,main/.git/worktrees/side$,mainmoved/.git/worktrees/side," \
side/.git >expect-gitfile &&
mv main mainmoved &&
mv side sidemoved &&
git -C mainmoved worktree repair ../sidemoved &&
test_cmp expect-gitdir mainmoved/.git/worktrees/side/gitdir &&
test_cmp expect-gitfile sidemoved/.git
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2406-worktree-repair/main/.git/
[master (root-commit) f54694c] init
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 init.t
Preparing worktree (detached HEAD f54694c)
HEAD is now at f54694c init
repair: gitdir incorrect: .git/worktrees/side/gitdir
repair: .git file broken: /<<PKGBUILDDIR>>/t/trash directory.t2406-worktree-repair/sidemoved
ok 20 - repair moved main and linked worktrees
# passed all 20 test(s)
1..20
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2407-worktree-heads.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2407-worktree-heads/.git/
expecting success of 2407.1 'setup':
test_commit init &&
for i in 1 2 3 4
do
git checkout -b conflict-$i &&
echo "not I" >$i.t &&
git add $i.t &&
git commit -m "will conflict" &&
git checkout - &&
test_commit $i &&
git branch wt-$i &&
git branch fake-$i &&
git worktree add wt-$i wt-$i || return 1
done &&
# Create a server that updates each branch by one commit
git init server &&
test_commit -C server initial &&
git remote add server ./server &&
for i in 1 2 3 4
do
git -C server checkout -b wt-$i &&
test_commit -C server A-$i || return 1
done &&
for i in 1 2
do
git -C server checkout -b fake-$i &&
test_commit -C server f-$i || return 1
done
[master (root-commit) 2519212] init
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 init.t
Switched to a new branch 'conflict-1'
[conflict-1 0bd9076] will conflict
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 1.t
Switched to branch 'master'
[master dd232bf] 1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 1.t
Preparing worktree (checking out 'wt-1')
HEAD is now at dd232bf 1
Switched to a new branch 'conflict-2'
[conflict-2 881ff7f] will conflict
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 2.t
Switched to branch 'master'
[master 8f55bc3] 2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 2.t
Preparing worktree (checking out 'wt-2')
HEAD is now at 8f55bc3 2
Switched to a new branch 'conflict-3'
[conflict-3 016e7ca] will conflict
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 3.t
Switched to branch 'master'
[master 4c93b0a] 3
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 3.t
Preparing worktree (checking out 'wt-3')
HEAD is now at 4c93b0a 3
Switched to a new branch 'conflict-4'
[conflict-4 11365f4] will conflict
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 4.t
Switched to branch 'master'
[master 3fbd4b0] 4
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 4.t
Preparing worktree (checking out 'wt-4')
HEAD is now at 3fbd4b0 4
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2407-worktree-heads/server/.git/
[master (root-commit) 31243c6] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 initial.t
Switched to a new branch 'wt-1'
[wt-1 4e3ca6d] A-1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 A-1.t
Switched to a new branch 'wt-2'
[wt-2 3582f45] A-2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 A-2.t
Switched to a new branch 'wt-3'
[wt-3 b62f76d] A-3
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 A-3.t
Switched to a new branch 'wt-4'
[wt-4 5e1557d] A-4
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 A-4.t
Switched to a new branch 'fake-1'
[fake-1 ae0524d] f-1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 f-1.t
Switched to a new branch 'fake-2'
[fake-2 8b85f46] f-2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 f-2.t
ok 1 - setup
expecting success of 2407.2 'refuse to overwrite: checked out in worktree':
for i in 1 2 3 4
do
test_must_fail git branch -f wt-$i HEAD 2>err &&
grep "cannot force update the branch" err &&
test_must_fail git branch -D wt-$i 2>err &&
grep "Cannot delete branch" err || return 1
done
fatal: cannot force update the branch 'wt-1' used by worktree at '/<<PKGBUILDDIR>>/t/trash directory.t2407-worktree-heads/wt-1'
error: Cannot delete branch 'wt-1' checked out at '/<<PKGBUILDDIR>>/t/trash directory.t2407-worktree-heads/wt-1'
fatal: cannot force update the branch 'wt-2' used by worktree at '/<<PKGBUILDDIR>>/t/trash directory.t2407-worktree-heads/wt-2'
error: Cannot delete branch 'wt-2' checked out at '/<<PKGBUILDDIR>>/t/trash directory.t2407-worktree-heads/wt-2'
fatal: cannot force update the branch 'wt-3' used by worktree at '/<<PKGBUILDDIR>>/t/trash directory.t2407-worktree-heads/wt-3'
error: Cannot delete branch 'wt-3' checked out at '/<<PKGBUILDDIR>>/t/trash directory.t2407-worktree-heads/wt-3'
fatal: cannot force update the branch 'wt-4' used by worktree at '/<<PKGBUILDDIR>>/t/trash directory.t2407-worktree-heads/wt-4'
error: Cannot delete branch 'wt-4' checked out at '/<<PKGBUILDDIR>>/t/trash directory.t2407-worktree-heads/wt-4'
ok 2 - refuse to overwrite: checked out in worktree
expecting success of 2407.3 'refuse to overwrite: worktree in bisect':
test_when_finished git -C wt-4 bisect reset &&
# Set up a bisect so HEAD no longer points to wt-4.
git -C wt-4 bisect start &&
git -C wt-4 bisect bad wt-4 &&
git -C wt-4 bisect good wt-1 &&
test_must_fail git branch -f wt-4 HEAD 2>err &&
grep "cannot force update the branch 'wt-4' used by worktree at.*wt-4" err
status: waiting for both good and bad commits
status: waiting for good commit(s), bad commit known
Bisecting: 0 revisions left to test after this (roughly 1 step)
[4c93b0a8594e03729f8d4346495db54cf8d767e9] 3
fatal: cannot force update the branch 'wt-4' used by worktree at '/<<PKGBUILDDIR>>/t/trash directory.t2407-worktree-heads/wt-4'
Previous HEAD position was 4c93b0a 3
Switched to branch 'wt-4'
ok 3 - refuse to overwrite: worktree in bisect
expecting success of 2407.4 'refuse to overwrite: worktree in rebase (apply)':
test_when_finished git -C wt-2 rebase --abort &&
# This will fail part-way through due to a conflict.
test_must_fail git -C wt-2 rebase --apply conflict-2 &&
test_must_fail git branch -f wt-2 HEAD 2>err &&
grep "cannot force update the branch 'wt-2' used by worktree at.*wt-2" err
First, rewinding head to replay your work on top of it...
Applying: 2
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Merging:
881ff7f will conflict
virtual 2
found 1 common ancestor:
virtual 4b825dc642cb6eb9a060e54bf8d69288fbee4904
CONFLICT (add/add): Merge conflict in 2.t
Auto-merging 2.t
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 2
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
fatal: cannot force update the branch 'wt-2' used by worktree at '/<<PKGBUILDDIR>>/t/trash directory.t2407-worktree-heads/wt-2'
ok 4 - refuse to overwrite: worktree in rebase (apply)
expecting success of 2407.5 'refuse to overwrite: worktree in rebase (merge)':
test_when_finished git -C wt-2 rebase --abort &&
# This will fail part-way through due to a conflict.
test_must_fail git -C wt-2 rebase conflict-2 &&
test_must_fail git branch -f wt-2 HEAD 2>err &&
grep "cannot force update the branch 'wt-2' used by worktree at.*wt-2" err
Rebasing (1/1)
Auto-merging 2.t
CONFLICT (add/add): Merge conflict in 2.t
error: could not apply 8f55bc3... 2
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 8f55bc3... 2
fatal: cannot force update the branch 'wt-2' used by worktree at '/<<PKGBUILDDIR>>/t/trash directory.t2407-worktree-heads/wt-2'
ok 5 - refuse to overwrite: worktree in rebase (merge)
expecting success of 2407.6 'refuse to overwrite: worktree in rebase with --update-refs':
test_when_finished git -C wt-3 rebase --abort &&
git branch -f can-be-updated wt-3 &&
test_must_fail git -C wt-3 rebase --update-refs conflict-3 &&
for i in 3 4
do
test_must_fail git branch -f can-be-updated HEAD 2>err &&
grep "cannot force update the branch 'can-be-updated' used by worktree at.*wt-3" err ||
return 1
done
Rebasing (1/3)
Auto-merging 3.t
CONFLICT (add/add): Merge conflict in 3.t
error: could not apply 4c93b0a... 3
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 4c93b0a... 3
fatal: cannot force update the branch 'can-be-updated' used by worktree at '/<<PKGBUILDDIR>>/t/trash directory.t2407-worktree-heads/wt-3'
fatal: cannot force update the branch 'can-be-updated' used by worktree at '/<<PKGBUILDDIR>>/t/trash directory.t2407-worktree-heads/wt-3'
ok 6 - refuse to overwrite: worktree in rebase with --update-refs
expecting success of 2407.7 'refuse to fetch over ref: checked out':
test_must_fail git fetch server +refs/heads/wt-3:refs/heads/wt-3 2>err &&
grep "refusing to fetch into branch 'refs/heads/wt-3'" err &&
# General fetch into refs/heads/ will fail on first ref,
# so use a generic error message check.
test_must_fail git fetch server +refs/heads/*:refs/heads/* 2>err &&
grep "refusing to fetch into branch" err
fatal: refusing to fetch into branch 'refs/heads/wt-3' checked out at '/<<PKGBUILDDIR>>/t/trash directory.t2407-worktree-heads/wt-3'
fatal: refusing to fetch into branch 'refs/heads/master' checked out at '/<<PKGBUILDDIR>>/t/trash directory.t2407-worktree-heads'
ok 7 - refuse to fetch over ref: checked out
expecting success of 2407.8 'refuse to fetch over ref: worktree in bisect':
test_when_finished git -C wt-4 bisect reset &&
# Set up a bisect so HEAD no longer points to wt-4.
git -C wt-4 bisect start &&
git -C wt-4 bisect bad wt-4 &&
git -C wt-4 bisect good wt-1 &&
test_must_fail git fetch server +refs/heads/wt-4:refs/heads/wt-4 2>err &&
grep "refusing to fetch into branch" err
status: waiting for both good and bad commits
status: waiting for good commit(s), bad commit known
Bisecting: 0 revisions left to test after this (roughly 1 step)
[4c93b0a8594e03729f8d4346495db54cf8d767e9] 3
fatal: refusing to fetch into branch 'refs/heads/wt-4' checked out at '/<<PKGBUILDDIR>>/t/trash directory.t2407-worktree-heads/wt-4'
Previous HEAD position was 4c93b0a 3
Switched to branch 'wt-4'
ok 8 - refuse to fetch over ref: worktree in bisect
expecting success of 2407.9 'refuse to fetch over ref: worktree in rebase':
test_when_finished git -C wt-3 rebase --abort &&
# This will fail part-way through due to a conflict.
test_must_fail git -C wt-3 rebase conflict-3 &&
test_must_fail git fetch server +refs/heads/wt-3:refs/heads/wt-3 2>err &&
grep "refusing to fetch into branch" err
Rebasing (1/1)
Auto-merging 3.t
CONFLICT (add/add): Merge conflict in 3.t
error: could not apply 4c93b0a... 3
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 4c93b0a... 3
fatal: refusing to fetch into branch 'refs/heads/wt-3' checked out at '/<<PKGBUILDDIR>>/t/trash directory.t2407-worktree-heads/wt-3'
ok 9 - refuse to fetch over ref: worktree in rebase
expecting success of 2407.10 'refuse to overwrite when in error states':
test_when_finished rm -rf .git/worktrees/wt-*/rebase-merge &&
test_when_finished rm -rf .git/worktrees/wt-*/BISECT_* &&
# Both branches are currently under rebase.
mkdir -p .git/worktrees/wt-3/rebase-merge &&
touch .git/worktrees/wt-3/rebase-merge/interactive &&
echo refs/heads/fake-1 >.git/worktrees/wt-3/rebase-merge/head-name &&
echo refs/heads/fake-2 >.git/worktrees/wt-3/rebase-merge/onto &&
mkdir -p .git/worktrees/wt-4/rebase-merge &&
touch .git/worktrees/wt-4/rebase-merge/interactive &&
echo refs/heads/fake-2 >.git/worktrees/wt-4/rebase-merge/head-name &&
echo refs/heads/fake-1 >.git/worktrees/wt-4/rebase-merge/onto &&
# Both branches are currently under bisect.
touch .git/worktrees/wt-4/BISECT_LOG &&
echo refs/heads/fake-2 >.git/worktrees/wt-4/BISECT_START &&
touch .git/worktrees/wt-1/BISECT_LOG &&
echo refs/heads/fake-1 >.git/worktrees/wt-1/BISECT_START &&
for i in 1 2
do
test_must_fail git branch -f fake-$i HEAD 2>err &&
grep "cannot force update the branch 'fake-$i' used by worktree at" err ||
return 1
done
fatal: cannot force update the branch 'fake-1' used by worktree at '/<<PKGBUILDDIR>>/t/trash directory.t2407-worktree-heads/wt-3'
fatal: cannot force update the branch 'fake-2' used by worktree at '/<<PKGBUILDDIR>>/t/trash directory.t2407-worktree-heads/wt-4'
ok 10 - refuse to overwrite when in error states
expecting success of 2407.11 'refuse to overwrite during rebase with --update-refs':
git commit --fixup HEAD~2 --allow-empty &&
(
set_cat_todo_editor &&
test_must_fail git rebase -i --update-refs HEAD~3 >todo &&
! grep "update-refs" todo
) &&
git branch -f allow-update HEAD~2 &&
(
set_cat_todo_editor &&
test_must_fail git rebase -i --update-refs HEAD~3 >todo &&
grep "update-ref refs/heads/allow-update" todo
)
[master 3e1ca9c] fixup! 2
Author: A U Thor <author@example.com>
error: There was a problem with the editor '"$FAKE_EDITOR"'.
error: There was a problem with the editor '"$FAKE_EDITOR"'.
update-ref refs/heads/allow-update
ok 11 - refuse to overwrite during rebase with --update-refs
expecting success of 2407.12 '$EDITOR and friends are unchanged':
test_editor_unchanged
ok 12 - $EDITOR and friends are unchanged
# passed all 12 test(s)
1..12
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2500-untracked-overwriting.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2500-untracked-overwriting/.git/
expecting success of 2500.1 'reset --hard will nuke untracked files/dirs':
test_setup_reset hard &&
(
cd reset_hard &&
git ls-tree -r stable &&
git log --all --name-status --oneline &&
git ls-tree -r work &&
mkdir foo.t &&
echo precious >foo.t/file &&
echo foo >expect &&
git reset --hard work &&
# check that untracked directory foo.t/ was nuked
test_path_is_file foo.t &&
test_cmp expect foo.t
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2500-untracked-overwriting/reset_hard/.git/
[master (root-commit) 2519212] init
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 init.t
Switched to branch 'work'
[work cb1b896] foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo.t
Switched to branch 'stable'
100644 blob b1b716105590454bfc4c0247f193a04088f39c7f init.t
cb1b896 foo
A foo.t
2519212 init
A init.t
100644 blob 257cc5642cb1a054f08cc83f2d943e56fd3ebe99 foo.t
100644 blob b1b716105590454bfc4c0247f193a04088f39c7f init.t
HEAD is now at cb1b896 foo
ok 1 - reset --hard will nuke untracked files/dirs
expecting success of 2500.2 'reset --merge will preserve untracked files/dirs':
test_setup_reset merge &&
(
cd reset_merge &&
mkdir foo.t &&
echo precious >foo.t/file &&
cp foo.t/file expect &&
test_must_fail git reset --merge work 2>error &&
test_cmp expect foo.t/file &&
grep "Updating .foo.t. would lose untracked files" error
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2500-untracked-overwriting/reset_merge/.git/
[master (root-commit) 2519212] init
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 init.t
Switched to branch 'work'
[work cb1b896] foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo.t
Switched to branch 'stable'
error: Updating 'foo.t' would lose untracked files in it
ok 2 - reset --merge will preserve untracked files/dirs
expecting success of 2500.3 'reset --keep will preserve untracked files/dirs':
test_setup_reset keep &&
(
cd reset_keep &&
mkdir foo.t &&
echo precious >foo.t/file &&
cp foo.t/file expect &&
test_must_fail git reset --merge work 2>error &&
test_cmp expect foo.t/file &&
grep "Updating.*foo.t.*would lose untracked files" error
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2500-untracked-overwriting/reset_keep/.git/
[master (root-commit) 2519212] init
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 init.t
Switched to branch 'work'
[work cb1b896] foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo.t
Switched to branch 'stable'
error: Updating 'foo.t' would lose untracked files in it
ok 3 - reset --keep will preserve untracked files/dirs
expecting success of 2500.4 'checkout -m does not nuke untracked file':
test_setup_checkout_m &&
(
cd checkout &&
# Tweak filler
test_write_lines this file has some >filler &&
# Make an untracked file, save its contents in "expect"
echo precious >notes.txt &&
cp notes.txt expect &&
test_must_fail git checkout -m work &&
test_cmp expect notes.txt
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2500-untracked-overwriting/checkout/.git/
[master (root-commit) 2519212] init
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 init.t
[master 7d7f42a] filler
Author: A U Thor <author@example.com>
1 file changed, 3 insertions(+)
create mode 100644 filler
Switched to a new branch 'work'
[work bac6a98] filler
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 notes.txt
Switched to branch 'stable'
error: Untracked working tree file 'notes.txt' would be overwritten by merge.
ok 4 - checkout -m does not nuke untracked file
expecting success of 2500.5 'git rebase --abort and untracked files':
test_setup_sequencing rebase_abort_and_untracked &&
(
cd sequencing_rebase_abort_and_untracked &&
git checkout fooey &&
test_must_fail git rebase simple &&
cat init.t &&
git rm init.t &&
echo precious >init.t &&
cp init.t expect &&
git status --porcelain &&
test_must_fail git rebase --abort &&
test_cmp expect init.t
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2500-untracked-overwriting/sequencing_rebase_abort_and_untracked/.git/
[master (root-commit) 2519212] init
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 init.t
[master 8220a2b] filler
Author: A U Thor <author@example.com>
1 file changed, 5 insertions(+)
create mode 100644 filler
[master 4cfedf0] foo/bar/baz
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo/bar/baz.t
Switched to branch 'fooey'
rm 'foo/bar/baz.t'
[fooey d39f842] changes
Author: A U Thor <author@example.com>
2 files changed, 1 insertion(+), 1 deletion(-)
delete mode 100644 foo/bar/baz.t
Switched to branch 'simple'
[simple 15a37e4] another
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 newfile
Switched to branch 'fooey'
Rebasing (1/1)
Auto-merging filler
CONFLICT (content): Merge conflict in filler
error: could not apply d39f842... changes
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply d39f842... changes
init
rm 'init.t'
UU filler
D foo/bar/baz.t
D init.t
?? expect
?? init.t
error: The following untracked working tree files would be overwritten by reset:
init.t
Please move or remove them before you reset.
Aborting
fatal: could not move back to d39f842c8a54822614a71d9e503b01b89b57e3bf
ok 5 - git rebase --abort and untracked files
expecting success of 2500.6 'git rebase fast forwarding and untracked files':
test_setup_sequencing rebase_fast_forward_and_untracked &&
(
cd sequencing_rebase_fast_forward_and_untracked &&
git checkout init &&
echo precious >filler &&
cp filler expect &&
test_must_fail git rebase init simple &&
test_cmp expect filler
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2500-untracked-overwriting/sequencing_rebase_fast_forward_and_untracked/.git/
[master (root-commit) 2519212] init
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 init.t
[master 8220a2b] filler
Author: A U Thor <author@example.com>
1 file changed, 5 insertions(+)
create mode 100644 filler
[master 4cfedf0] foo/bar/baz
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo/bar/baz.t
Switched to branch 'fooey'
rm 'foo/bar/baz.t'
[fooey d39f842] changes
Author: A U Thor <author@example.com>
2 files changed, 1 insertion(+), 1 deletion(-)
delete mode 100644 foo/bar/baz.t
Switched to branch 'simple'
[simple 15a37e4] another
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 newfile
Note: switching to 'init'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 2519212 init
error: The following untracked working tree files would be overwritten by checkout:
filler
Please move or remove them before you switch branches.
Aborting
error: could not switch to simple
ok 6 - git rebase fast forwarding and untracked files
checking known breakage of 2500.7 'git rebase --autostash and untracked files':
test_setup_sequencing rebase_autostash_and_untracked &&
(
cd sequencing_rebase_autostash_and_untracked &&
git checkout simple &&
git rm filler &&
mkdir filler &&
echo precious >filler/file &&
cp filler/file expect &&
git rebase --autostash init &&
test_path_is_file filler/file
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2500-untracked-overwriting/sequencing_rebase_autostash_and_untracked/.git/
[master (root-commit) 2519212] init
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 init.t
[master 8220a2b] filler
Author: A U Thor <author@example.com>
1 file changed, 5 insertions(+)
create mode 100644 filler
[master 4cfedf0] foo/bar/baz
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo/bar/baz.t
Switched to branch 'fooey'
rm 'foo/bar/baz.t'
[fooey d39f842] changes
Author: A U Thor <author@example.com>
2 files changed, 1 insertion(+), 1 deletion(-)
delete mode 100644 foo/bar/baz.t
Switched to branch 'simple'
[simple 15a37e4] another
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 newfile
Already on 'simple'
rm 'filler'
error: Updating the following directories would lose untracked files in them:
filler
Aborting
fatal: could not reset --hard
Created autostash: ae7ed59
not ok 7 - git rebase --autostash and untracked files # TODO known breakage
checking known breakage of 2500.8 'git stash and untracked files':
test_setup_sequencing stash_and_untracked_files &&
(
cd sequencing_stash_and_untracked_files &&
git checkout simple &&
git rm filler &&
mkdir filler &&
echo precious >filler/file &&
cp filler/file expect &&
git status --porcelain &&
git stash push &&
git status --porcelain &&
test_path_is_file filler/file
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2500-untracked-overwriting/sequencing_stash_and_untracked_files/.git/
[master (root-commit) 2519212] init
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 init.t
[master 8220a2b] filler
Author: A U Thor <author@example.com>
1 file changed, 5 insertions(+)
create mode 100644 filler
[master 4cfedf0] foo/bar/baz
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo/bar/baz.t
Switched to branch 'fooey'
rm 'foo/bar/baz.t'
[fooey d39f842] changes
Author: A U Thor <author@example.com>
2 files changed, 1 insertion(+), 1 deletion(-)
delete mode 100644 foo/bar/baz.t
Switched to branch 'simple'
[simple 15a37e4] another
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 newfile
Already on 'simple'
rm 'filler'
D filler
?? expect
?? filler/
Saved working directory and index state WIP on simple: 15a37e4 another
?? expect
File filler/file doesn't exist
not ok 8 - git stash and untracked files # TODO known breakage
expecting success of 2500.9 'git am --abort and untracked dir vs. unmerged file':
test_setup_sequencing am_abort_and_untracked &&
(
cd sequencing_am_abort_and_untracked &&
git format-patch -1 --stdout fooey >changes.mbox &&
test_must_fail git am --3way changes.mbox &&
# Delete the conflicted file; we will stage and commit it later
rm filler &&
# Put an unrelated untracked directory there
mkdir filler &&
echo foo >filler/file1 &&
echo bar >filler/file2 &&
test_must_fail git am --abort 2>errors &&
test_path_is_dir filler &&
grep "Updating .filler. would lose untracked files in it" errors
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2500-untracked-overwriting/sequencing_am_abort_and_untracked/.git/
[master (root-commit) 2519212] init
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 init.t
[master 8220a2b] filler
Author: A U Thor <author@example.com>
1 file changed, 5 insertions(+)
create mode 100644 filler
[master 4cfedf0] foo/bar/baz
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo/bar/baz.t
Switched to branch 'fooey'
rm 'foo/bar/baz.t'
[fooey d39f842] changes
Author: A U Thor <author@example.com>
2 files changed, 1 insertion(+), 1 deletion(-)
delete mode 100644 foo/bar/baz.t
Switched to branch 'simple'
[simple 15a37e4] another
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 newfile
Applying: changes
Using index info to reconstruct a base tree...
M filler
Falling back to patching base and 3-way merge...
Merging:
15a37e4 another
virtual changes
found 1 common ancestor:
virtual 3f7dfa0c5a54951d5d8082a6eda7692dfeb9ce47
Removing foo/bar/baz.t
Auto-merging filler
CONFLICT (content): Merge conflict in filler
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 changes
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
error: Updating 'filler' would lose untracked files in it
ok 9 - git am --abort and untracked dir vs. unmerged file
expecting success of 2500.10 'git am --skip and untracked dir vs deleted file':
test_setup_sequencing am_skip_and_untracked &&
(
cd sequencing_am_skip_and_untracked &&
git checkout fooey &&
git format-patch -1 --stdout simple >changes.mbox &&
test_must_fail git am --3way changes.mbox &&
# Delete newfile
rm newfile &&
# Put an unrelated untracked directory there
mkdir newfile &&
echo foo >newfile/file1 &&
echo bar >newfile/file2 &&
# Change our mind about resolutions, just skip this patch
test_must_fail git am --skip 2>errors &&
test_path_is_dir newfile &&
grep "Updating .newfile. would lose untracked files in it" errors
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2500-untracked-overwriting/sequencing_am_skip_and_untracked/.git/
[master (root-commit) 2519212] init
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 init.t
[master 8220a2b] filler
Author: A U Thor <author@example.com>
1 file changed, 5 insertions(+)
create mode 100644 filler
[master 4cfedf0] foo/bar/baz
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo/bar/baz.t
Switched to branch 'fooey'
rm 'foo/bar/baz.t'
[fooey d39f842] changes
Author: A U Thor <author@example.com>
2 files changed, 1 insertion(+), 1 deletion(-)
delete mode 100644 foo/bar/baz.t
Switched to branch 'simple'
[simple 15a37e4] another
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 newfile
Switched to branch 'fooey'
Applying: another
Using index info to reconstruct a base tree...
M filler
Falling back to patching base and 3-way merge...
Merging:
d39f842 changes
virtual another
found 1 common ancestor:
virtual a4566c4813b6ad70d63b32fcd2dda30547574648
Auto-merging filler
CONFLICT (content): Merge conflict in filler
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 another
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
error: Updating 'newfile' would lose untracked files in it
ok 10 - git am --skip and untracked dir vs deleted file
# still have 2 known breakage(s)
# passed all remaining 8 test(s)
1..10
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t1701-racy-split-index.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t1701-racy-split-index/.git/
expecting success of 1701.1 'setup':
# Only split the index when the test explicitly says so.
sane_unset GIT_TEST_SPLIT_INDEX &&
git config splitIndex.maxPercentChange 100 &&
echo "cached content" >racy-file &&
git add racy-file &&
git commit -m initial &&
echo something >other-file &&
# No raciness with this file.
test-tool chmtime =-20 other-file &&
echo "+cached content" >expect
[master (root-commit) a4904a4] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 racy-file
ok 1 - setup
expecting success of 1701.2 'split the index while adding a racily clean file #0':
rm -f .git/index .git/sharedindex.* &&
# The next three commands must be run within the same
# second (so both writes to racy-file result in the same
# mtime) to create the interesting racy situation.
echo "cached content" >racy-file &&
# Update and split the index. The cache entry of
# racy-file will be stored only in the shared index.
git update-index --split-index --add racy-file &&
# File size must stay the same.
echo "dirty worktree" >racy-file &&
# Subsequent git commands should notice that racy-file
# and the split index have the same mtime, and check
# the content of the file to see if it is actually
# clean.
check_cached_diff
ok 2 - split the index while adding a racily clean file #0
expecting success of 1701.3 'split the index while adding a racily clean file #1':
rm -f .git/index .git/sharedindex.* &&
# The next three commands must be run within the same
# second (so both writes to racy-file result in the same
# mtime) to create the interesting racy situation.
echo "cached content" >racy-file &&
# Update and split the index. The cache entry of
# racy-file will be stored only in the shared index.
git update-index --split-index --add racy-file &&
# File size must stay the same.
echo "dirty worktree" >racy-file &&
# Subsequent git commands should notice that racy-file
# and the split index have the same mtime, and check
# the content of the file to see if it is actually
# clean.
check_cached_diff
ok 3 - split the index while adding a racily clean file #1
expecting success of 1701.4 'split the index while adding a racily clean file #2':
rm -f .git/index .git/sharedindex.* &&
# The next three commands must be run within the same
# second (so both writes to racy-file result in the same
# mtime) to create the interesting racy situation.
echo "cached content" >racy-file &&
# Update and split the index. The cache entry of
# racy-file will be stored only in the shared index.
git update-index --split-index --add racy-file &&
# File size must stay the same.
echo "dirty worktree" >racy-file &&
# Subsequent git commands should notice that racy-file
# and the split index have the same mtime, and check
# the content of the file to see if it is actually
# clean.
check_cached_diff
ok 4 - split the index while adding a racily clean file #2
expecting success of 1701.5 'split the index while adding a racily clean file #3':
rm -f .git/index .git/sharedindex.* &&
# The next three commands must be run within the same
# second (so both writes to racy-file result in the same
# mtime) to create the interesting racy situation.
echo "cached content" >racy-file &&
# Update and split the index. The cache entry of
# racy-file will be stored only in the shared index.
git update-index --split-index --add racy-file &&
# File size must stay the same.
echo "dirty worktree" >racy-file &&
# Subsequent git commands should notice that racy-file
# and the split index have the same mtime, and check
# the content of the file to see if it is actually
# clean.
check_cached_diff
ok 5 - split the index while adding a racily clean file #3
expecting success of 1701.6 'split the index while adding a racily clean file #4':
rm -f .git/index .git/sharedindex.* &&
# The next three commands must be run within the same
# second (so both writes to racy-file result in the same
# mtime) to create the interesting racy situation.
echo "cached content" >racy-file &&
# Update and split the index. The cache entry of
# racy-file will be stored only in the shared index.
git update-index --split-index --add racy-file &&
# File size must stay the same.
echo "dirty worktree" >racy-file &&
# Subsequent git commands should notice that racy-file
# and the split index have the same mtime, and check
# the content of the file to see if it is actually
# clean.
check_cached_diff
ok 6 - split the index while adding a racily clean file #4
expecting success of 1701.7 'add a racily clean file to an already split index #0':
rm -f .git/index .git/sharedindex.* &&
git update-index --split-index &&
# The next three commands must be run within the same
# second.
echo "cached content" >racy-file &&
# Update the split index. The cache entry of racy-file
# will be stored only in the split index.
git update-index --add racy-file &&
# File size must stay the same.
echo "dirty worktree" >racy-file &&
# Subsequent git commands should notice that racy-file
# and the split index have the same mtime, and check
# the content of the file to see if it is actually
# clean.
check_cached_diff
ok 7 - add a racily clean file to an already split index #0
expecting success of 1701.8 'add a racily clean file to an already split index #1':
rm -f .git/index .git/sharedindex.* &&
git update-index --split-index &&
# The next three commands must be run within the same
# second.
echo "cached content" >racy-file &&
# Update the split index. The cache entry of racy-file
# will be stored only in the split index.
git update-index --add racy-file &&
# File size must stay the same.
echo "dirty worktree" >racy-file &&
# Subsequent git commands should notice that racy-file
# and the split index have the same mtime, and check
# the content of the file to see if it is actually
# clean.
check_cached_diff
ok 8 - add a racily clean file to an already split index #1
expecting success of 1701.9 'add a racily clean file to an already split index #2':
rm -f .git/index .git/sharedindex.* &&
git update-index --split-index &&
# The next three commands must be run within the same
# second.
echo "cached content" >racy-file &&
# Update the split index. The cache entry of racy-file
# will be stored only in the split index.
git update-index --add racy-file &&
# File size must stay the same.
echo "dirty worktree" >racy-file &&
# Subsequent git commands should notice that racy-file
# and the split index have the same mtime, and check
# the content of the file to see if it is actually
# clean.
check_cached_diff
ok 9 - add a racily clean file to an already split index #2
expecting success of 1701.10 'add a racily clean file to an already split index #3':
rm -f .git/index .git/sharedindex.* &&
git update-index --split-index &&
# The next three commands must be run within the same
# second.
echo "cached content" >racy-file &&
# Update the split index. The cache entry of racy-file
# will be stored only in the split index.
git update-index --add racy-file &&
# File size must stay the same.
echo "dirty worktree" >racy-file &&
# Subsequent git commands should notice that racy-file
# and the split index have the same mtime, and check
# the content of the file to see if it is actually
# clean.
check_cached_diff
ok 10 - add a racily clean file to an already split index #3
expecting success of 1701.11 'add a racily clean file to an already split index #4':
rm -f .git/index .git/sharedindex.* &&
git update-index --split-index &&
# The next three commands must be run within the same
# second.
echo "cached content" >racy-file &&
# Update the split index. The cache entry of racy-file
# will be stored only in the split index.
git update-index --add racy-file &&
# File size must stay the same.
echo "dirty worktree" >racy-file &&
# Subsequent git commands should notice that racy-file
# and the split index have the same mtime, and check
# the content of the file to see if it is actually
# clean.
check_cached_diff
ok 11 - add a racily clean file to an already split index #4
expecting success of 1701.12 'split the index when the index contains a racily clean cache entry #0':
rm -f .git/index .git/sharedindex.* &&
# The next three commands must be run within the same
# second.
echo "cached content" >racy-file &&
git update-index --add racy-file &&
# File size must stay the same.
echo "dirty worktree" >racy-file &&
# Now wait a bit to ensure that the split index written
# below will get a more recent mtime than racy-file.
sleep 1 &&
# Update and split the index when the index contains
# the racily clean cache entry of racy-file.
# A corresponding replacement cache entry with smudged
# stat data should be added to the new split index.
git update-index --split-index --add other-file &&
# Subsequent git commands should notice the smudged
# stat data in the replacement cache entry and that it
# doesnt match with the file the worktree.
check_cached_diff
ok 12 - split the index when the index contains a racily clean cache entry #0
expecting success of 1701.13 'split the index when the index contains a racily clean cache entry #1':
rm -f .git/index .git/sharedindex.* &&
# The next three commands must be run within the same
# second.
echo "cached content" >racy-file &&
git update-index --add racy-file &&
# File size must stay the same.
echo "dirty worktree" >racy-file &&
# Now wait a bit to ensure that the split index written
# below will get a more recent mtime than racy-file.
sleep 1 &&
# Update and split the index when the index contains
# the racily clean cache entry of racy-file.
# A corresponding replacement cache entry with smudged
# stat data should be added to the new split index.
git update-index --split-index --add other-file &&
# Subsequent git commands should notice the smudged
# stat data in the replacement cache entry and that it
# doesnt match with the file the worktree.
check_cached_diff
ok 13 - split the index when the index contains a racily clean cache entry #1
expecting success of 1701.14 'split the index when the index contains a racily clean cache entry #2':
rm -f .git/index .git/sharedindex.* &&
# The next three commands must be run within the same
# second.
echo "cached content" >racy-file &&
git update-index --add racy-file &&
# File size must stay the same.
echo "dirty worktree" >racy-file &&
# Now wait a bit to ensure that the split index written
# below will get a more recent mtime than racy-file.
sleep 1 &&
# Update and split the index when the index contains
# the racily clean cache entry of racy-file.
# A corresponding replacement cache entry with smudged
# stat data should be added to the new split index.
git update-index --split-index --add other-file &&
# Subsequent git commands should notice the smudged
# stat data in the replacement cache entry and that it
# doesnt match with the file the worktree.
check_cached_diff
ok 14 - split the index when the index contains a racily clean cache entry #2
expecting success of 1701.15 'split the index when the index contains a racily clean cache entry #3':
rm -f .git/index .git/sharedindex.* &&
# The next three commands must be run within the same
# second.
echo "cached content" >racy-file &&
git update-index --add racy-file &&
# File size must stay the same.
echo "dirty worktree" >racy-file &&
# Now wait a bit to ensure that the split index written
# below will get a more recent mtime than racy-file.
sleep 1 &&
# Update and split the index when the index contains
# the racily clean cache entry of racy-file.
# A corresponding replacement cache entry with smudged
# stat data should be added to the new split index.
git update-index --split-index --add other-file &&
# Subsequent git commands should notice the smudged
# stat data in the replacement cache entry and that it
# doesnt match with the file the worktree.
check_cached_diff
ok 15 - split the index when the index contains a racily clean cache entry #3
expecting success of 1701.16 'split the index when the index contains a racily clean cache entry #4':
rm -f .git/index .git/sharedindex.* &&
# The next three commands must be run within the same
# second.
echo "cached content" >racy-file &&
git update-index --add racy-file &&
# File size must stay the same.
echo "dirty worktree" >racy-file &&
# Now wait a bit to ensure that the split index written
# below will get a more recent mtime than racy-file.
sleep 1 &&
# Update and split the index when the index contains
# the racily clean cache entry of racy-file.
# A corresponding replacement cache entry with smudged
# stat data should be added to the new split index.
git update-index --split-index --add other-file &&
# Subsequent git commands should notice the smudged
# stat data in the replacement cache entry and that it
# doesnt match with the file the worktree.
check_cached_diff
ok 16 - split the index when the index contains a racily clean cache entry #4
expecting success of 1701.17 'update the split index when it contains a new racily clean cache entry #0':
rm -f .git/index .git/sharedindex.* &&
git update-index --split-index &&
# The next three commands must be run within the same
# second.
echo "cached content" >racy-file &&
# Update the split index. The cache entry of racy-file
# will be stored only in the split index.
git update-index --add racy-file &&
# File size must stay the same.
echo "dirty worktree" >racy-file &&
# Now wait a bit to ensure that the split index written
# below will get a more recent mtime than racy-file.
sleep 1 &&
# Update the split index when the racily clean cache
# entry of racy-file is only stored in the split index.
# An updated cache entry with smudged stat data should
# be added to the new split index.
git update-index --add other-file &&
# Subsequent git commands should notice the smudged
# stat data.
check_cached_diff
ok 17 - update the split index when it contains a new racily clean cache entry #0
expecting success of 1701.18 'update the split index when it contains a new racily clean cache entry #1':
rm -f .git/index .git/sharedindex.* &&
git update-index --split-index &&
# The next three commands must be run within the same
# second.
echo "cached content" >racy-file &&
# Update the split index. The cache entry of racy-file
# will be stored only in the split index.
git update-index --add racy-file &&
# File size must stay the same.
echo "dirty worktree" >racy-file &&
# Now wait a bit to ensure that the split index written
# below will get a more recent mtime than racy-file.
sleep 1 &&
# Update the split index when the racily clean cache
# entry of racy-file is only stored in the split index.
# An updated cache entry with smudged stat data should
# be added to the new split index.
git update-index --add other-file &&
# Subsequent git commands should notice the smudged
# stat data.
check_cached_diff
ok 18 - update the split index when it contains a new racily clean cache entry #1
expecting success of 1701.19 'update the split index when it contains a new racily clean cache entry #2':
rm -f .git/index .git/sharedindex.* &&
git update-index --split-index &&
# The next three commands must be run within the same
# second.
echo "cached content" >racy-file &&
# Update the split index. The cache entry of racy-file
# will be stored only in the split index.
git update-index --add racy-file &&
# File size must stay the same.
echo "dirty worktree" >racy-file &&
# Now wait a bit to ensure that the split index written
# below will get a more recent mtime than racy-file.
sleep 1 &&
# Update the split index when the racily clean cache
# entry of racy-file is only stored in the split index.
# An updated cache entry with smudged stat data should
# be added to the new split index.
git update-index --add other-file &&
# Subsequent git commands should notice the smudged
# stat data.
check_cached_diff
ok 19 - update the split index when it contains a new racily clean cache entry #2
expecting success of 1701.20 'update the split index when it contains a new racily clean cache entry #3':
rm -f .git/index .git/sharedindex.* &&
git update-index --split-index &&
# The next three commands must be run within the same
# second.
echo "cached content" >racy-file &&
# Update the split index. The cache entry of racy-file
# will be stored only in the split index.
git update-index --add racy-file &&
# File size must stay the same.
echo "dirty worktree" >racy-file &&
# Now wait a bit to ensure that the split index written
# below will get a more recent mtime than racy-file.
sleep 1 &&
# Update the split index when the racily clean cache
# entry of racy-file is only stored in the split index.
# An updated cache entry with smudged stat data should
# be added to the new split index.
git update-index --add other-file &&
# Subsequent git commands should notice the smudged
# stat data.
check_cached_diff
ok 20 - update the split index when it contains a new racily clean cache entry #3
expecting success of 1701.21 'update the split index when it contains a new racily clean cache entry #4':
rm -f .git/index .git/sharedindex.* &&
git update-index --split-index &&
# The next three commands must be run within the same
# second.
echo "cached content" >racy-file &&
# Update the split index. The cache entry of racy-file
# will be stored only in the split index.
git update-index --add racy-file &&
# File size must stay the same.
echo "dirty worktree" >racy-file &&
# Now wait a bit to ensure that the split index written
# below will get a more recent mtime than racy-file.
sleep 1 &&
# Update the split index when the racily clean cache
# entry of racy-file is only stored in the split index.
# An updated cache entry with smudged stat data should
# be added to the new split index.
git update-index --add other-file &&
# Subsequent git commands should notice the smudged
# stat data.
check_cached_diff
ok 21 - update the split index when it contains a new racily clean cache entry #4
expecting success of 1701.22 'update the split index when a racily clean cache entry is stored only in the shared index #0':
rm -f .git/index .git/sharedindex.* &&
# The next three commands must be run within the same
# second.
echo "cached content" >racy-file &&
# Update and split the index. The cache entry of
# racy-file will be stored only in the shared index.
git update-index --split-index --add racy-file &&
# File size must stay the same.
echo "dirty worktree" >racy-file &&
# Now wait a bit to ensure that the split index written
# below will get a more recent mtime than racy-file.
sleep 1 &&
# Update the split index when the racily clean cache
# entry of racy-file is only stored in the shared index.
# A corresponding replacement cache entry with smudged
# stat data should be added to the new split index.
git update-index --add other-file &&
# Subsequent git commands should notice the smudged
# stat data.
check_cached_diff
ok 22 - update the split index when a racily clean cache entry is stored only in the shared index #0
expecting success of 1701.23 'update the split index when a racily clean cache entry is stored only in the shared index #1':
rm -f .git/index .git/sharedindex.* &&
# The next three commands must be run within the same
# second.
echo "cached content" >racy-file &&
# Update and split the index. The cache entry of
# racy-file will be stored only in the shared index.
git update-index --split-index --add racy-file &&
# File size must stay the same.
echo "dirty worktree" >racy-file &&
# Now wait a bit to ensure that the split index written
# below will get a more recent mtime than racy-file.
sleep 1 &&
# Update the split index when the racily clean cache
# entry of racy-file is only stored in the shared index.
# A corresponding replacement cache entry with smudged
# stat data should be added to the new split index.
git update-index --add other-file &&
# Subsequent git commands should notice the smudged
# stat data.
check_cached_diff
ok 23 - update the split index when a racily clean cache entry is stored only in the shared index #1
expecting success of 1701.24 'update the split index when a racily clean cache entry is stored only in the shared index #2':
rm -f .git/index .git/sharedindex.* &&
# The next three commands must be run within the same
# second.
echo "cached content" >racy-file &&
# Update and split the index. The cache entry of
# racy-file will be stored only in the shared index.
git update-index --split-index --add racy-file &&
# File size must stay the same.
echo "dirty worktree" >racy-file &&
# Now wait a bit to ensure that the split index written
# below will get a more recent mtime than racy-file.
sleep 1 &&
# Update the split index when the racily clean cache
# entry of racy-file is only stored in the shared index.
# A corresponding replacement cache entry with smudged
# stat data should be added to the new split index.
git update-index --add other-file &&
# Subsequent git commands should notice the smudged
# stat data.
check_cached_diff
ok 24 - update the split index when a racily clean cache entry is stored only in the shared index #2
expecting success of 1701.25 'update the split index when a racily clean cache entry is stored only in the shared index #3':
rm -f .git/index .git/sharedindex.* &&
# The next three commands must be run within the same
# second.
echo "cached content" >racy-file &&
# Update and split the index. The cache entry of
# racy-file will be stored only in the shared index.
git update-index --split-index --add racy-file &&
# File size must stay the same.
echo "dirty worktree" >racy-file &&
# Now wait a bit to ensure that the split index written
# below will get a more recent mtime than racy-file.
sleep 1 &&
# Update the split index when the racily clean cache
# entry of racy-file is only stored in the shared index.
# A corresponding replacement cache entry with smudged
# stat data should be added to the new split index.
git update-index --add other-file &&
# Subsequent git commands should notice the smudged
# stat data.
check_cached_diff
ok 25 - update the split index when a racily clean cache entry is stored only in the shared index #3
expecting success of 1701.26 'update the split index when a racily clean cache entry is stored only in the shared index #4':
rm -f .git/index .git/sharedindex.* &&
# The next three commands must be run within the same
# second.
echo "cached content" >racy-file &&
# Update and split the index. The cache entry of
# racy-file will be stored only in the shared index.
git update-index --split-index --add racy-file &&
# File size must stay the same.
echo "dirty worktree" >racy-file &&
# Now wait a bit to ensure that the split index written
# below will get a more recent mtime than racy-file.
sleep 1 &&
# Update the split index when the racily clean cache
# entry of racy-file is only stored in the shared index.
# A corresponding replacement cache entry with smudged
# stat data should be added to the new split index.
git update-index --add other-file &&
# Subsequent git commands should notice the smudged
# stat data.
check_cached_diff
ok 26 - update the split index when a racily clean cache entry is stored only in the shared index #4
expecting success of 1701.27 'update the split index after unpack trees() copied a racily clean cache entry from the shared index #0':
rm -f .git/index .git/sharedindex.* &&
# The next three commands must be run within the same
# second.
echo "cached content" >racy-file &&
# Update and split the index. The cache entry of
# racy-file will be stored only in the shared index.
git update-index --split-index --add racy-file &&
# File size must stay the same.
echo "dirty worktree" >racy-file &&
# Now wait a bit to ensure that the split index written
# below will get a more recent mtime than racy-file.
sleep 1 &&
# Update the split index after unpack_trees() copied the
# racily clean cache entry of racy-file from the shared
# index. A corresponding replacement cache entry
# with smudged stat data should be added to the new
# split index.
git read-tree -m HEAD &&
# Subsequent git commands should notice the smudged
# stat data.
check_cached_diff
ok 27 - update the split index after unpack trees() copied a racily clean cache entry from the shared index #0
expecting success of 1701.28 'update the split index after unpack trees() copied a racily clean cache entry from the shared index #1':
rm -f .git/index .git/sharedindex.* &&
# The next three commands must be run within the same
# second.
echo "cached content" >racy-file &&
# Update and split the index. The cache entry of
# racy-file will be stored only in the shared index.
git update-index --split-index --add racy-file &&
# File size must stay the same.
echo "dirty worktree" >racy-file &&
# Now wait a bit to ensure that the split index written
# below will get a more recent mtime than racy-file.
sleep 1 &&
# Update the split index after unpack_trees() copied the
# racily clean cache entry of racy-file from the shared
# index. A corresponding replacement cache entry
# with smudged stat data should be added to the new
# split index.
git read-tree -m HEAD &&
# Subsequent git commands should notice the smudged
# stat data.
check_cached_diff
ok 28 - update the split index after unpack trees() copied a racily clean cache entry from the shared index #1
expecting success of 1701.29 'update the split index after unpack trees() copied a racily clean cache entry from the shared index #2':
rm -f .git/index .git/sharedindex.* &&
# The next three commands must be run within the same
# second.
echo "cached content" >racy-file &&
# Update and split the index. The cache entry of
# racy-file will be stored only in the shared index.
git update-index --split-index --add racy-file &&
# File size must stay the same.
echo "dirty worktree" >racy-file &&
# Now wait a bit to ensure that the split index written
# below will get a more recent mtime than racy-file.
sleep 1 &&
# Update the split index after unpack_trees() copied the
# racily clean cache entry of racy-file from the shared
# index. A corresponding replacement cache entry
# with smudged stat data should be added to the new
# split index.
git read-tree -m HEAD &&
# Subsequent git commands should notice the smudged
# stat data.
check_cached_diff
ok 29 - update the split index after unpack trees() copied a racily clean cache entry from the shared index #2
expecting success of 1701.30 'update the split index after unpack trees() copied a racily clean cache entry from the shared index #3':
rm -f .git/index .git/sharedindex.* &&
# The next three commands must be run within the same
# second.
echo "cached content" >racy-file &&
# Update and split the index. The cache entry of
# racy-file will be stored only in the shared index.
git update-index --split-index --add racy-file &&
# File size must stay the same.
echo "dirty worktree" >racy-file &&
# Now wait a bit to ensure that the split index written
# below will get a more recent mtime than racy-file.
sleep 1 &&
# Update the split index after unpack_trees() copied the
# racily clean cache entry of racy-file from the shared
# index. A corresponding replacement cache entry
# with smudged stat data should be added to the new
# split index.
git read-tree -m HEAD &&
# Subsequent git commands should notice the smudged
# stat data.
check_cached_diff
ok 30 - update the split index after unpack trees() copied a racily clean cache entry from the shared index #3
expecting success of 1701.31 'update the split index after unpack trees() copied a racily clean cache entry from the shared index #4':
rm -f .git/index .git/sharedindex.* &&
# The next three commands must be run within the same
# second.
echo "cached content" >racy-file &&
# Update and split the index. The cache entry of
# racy-file will be stored only in the shared index.
git update-index --split-index --add racy-file &&
# File size must stay the same.
echo "dirty worktree" >racy-file &&
# Now wait a bit to ensure that the split index written
# below will get a more recent mtime than racy-file.
sleep 1 &&
# Update the split index after unpack_trees() copied the
# racily clean cache entry of racy-file from the shared
# index. A corresponding replacement cache entry
# with smudged stat data should be added to the new
# split index.
git read-tree -m HEAD &&
# Subsequent git commands should notice the smudged
# stat data.
check_cached_diff
ok 31 - update the split index after unpack trees() copied a racily clean cache entry from the shared index #4
# passed all 31 test(s)
1..31
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3000-ls-files-others.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3000-ls-files-others/.git/
expecting success of 3000.1 'setup ':
date >path0 &&
if test_have_prereq SYMLINKS
then
ln -s xyzzy path1
else
date >path1
fi &&
mkdir path2 path3 path4 &&
date >path2/file2 &&
date >path2-junk &&
date >path3/file3 &&
date >path3-junk &&
git update-index --add path3-junk path3/file3
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
ok 1 - setup
expecting success of 3000.2 'setup: expected output':
cat >expected1 <<-\EOF &&
expected1
expected2
expected3
output
path0
path1
path2-junk
path2/file2
EOF
sed -e "s|path2/file2|path2/|" <expected1 >expected2 &&
cp expected2 expected3 &&
echo path4/ >>expected2
ok 2 - setup: expected output
expecting success of 3000.3 'ls-files --others':
git ls-files --others >output &&
test_cmp expected1 output
ok 3 - ls-files --others
expecting success of 3000.4 'ls-files --others --directory':
git ls-files --others --directory >output &&
test_cmp expected2 output
ok 4 - ls-files --others --directory
expecting success of 3000.5 '--no-empty-directory hides empty directory':
git ls-files --others --directory --no-empty-directory >output &&
test_cmp expected3 output
ok 5 - --no-empty-directory hides empty directory
expecting success of 3000.6 'ls-files --others handles non-submodule .git':
mkdir not-a-submodule &&
echo foo >not-a-submodule/.git &&
git ls-files -o >output &&
test_cmp expected1 output
ok 6 - ls-files --others handles non-submodule .git
expecting success of 3000.7 'ls-files --others with symlinked submodule':
git init super &&
git init sub &&
(
cd sub &&
>a &&
git add a &&
git commit -m sub &&
git pack-refs --all
) &&
(
cd super &&
"$SHELL_PATH" "$TEST_DIRECTORY/../contrib/workdir/git-new-workdir" ../sub sub &&
git ls-files --others --exclude-standard >../actual
) &&
echo sub/ >expect &&
test_cmp expect actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3000-ls-files-others/super/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3000-ls-files-others/sub/.git/
[master (root-commit) 8c0a349] sub
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 a
ok 7 - ls-files --others with symlinked submodule
expecting success of 3000.8 'setup nested pathspec search':
test_create_repo nested &&
(
cd nested &&
mkdir -p partially_tracked/untracked_dir &&
> partially_tracked/content &&
> partially_tracked/untracked_dir/file &&
mkdir -p untracked/deep &&
> untracked/deep/path &&
> untracked/deep/foo.c &&
git add partially_tracked/content
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3000-ls-files-others/nested/.git/
ok 8 - setup nested pathspec search
expecting success of 3000.9 'ls-files -o --directory with single deep dir pathspec':
(
cd nested &&
git ls-files -o --directory untracked/deep/ >actual &&
cat <<-EOF >expect &&
untracked/deep/
EOF
test_cmp expect actual
)
ok 9 - ls-files -o --directory with single deep dir pathspec
expecting success of 3000.10 'ls-files -o --directory with multiple dir pathspecs':
(
cd nested &&
git ls-files -o --directory partially_tracked/ untracked/ >actual &&
cat <<-EOF >expect &&
partially_tracked/untracked_dir/
untracked/
EOF
test_cmp expect actual
)
ok 10 - ls-files -o --directory with multiple dir pathspecs
expecting success of 3000.11 'ls-files -o --directory with mix dir/file pathspecs':
(
cd nested &&
git ls-files -o --directory partially_tracked/ untracked/deep/path >actual &&
cat <<-EOF >expect &&
partially_tracked/untracked_dir/
untracked/deep/path
EOF
test_cmp expect actual
)
ok 11 - ls-files -o --directory with mix dir/file pathspecs
expecting success of 3000.12 'ls-files -o --directory with glob filetype match':
(
cd nested &&
# globs kinda defeat --directory, but only for that pathspec
git ls-files --others --directory partially_tracked "untracked/*.c" >actual &&
cat <<-EOF >expect &&
partially_tracked/untracked_dir/
untracked/deep/foo.c
EOF
test_cmp expect actual
)
ok 12 - ls-files -o --directory with glob filetype match
expecting success of 3000.13 'ls-files -o --directory with mix of tracked states':
(
cd nested &&
# globs kinda defeat --directory, but only for that pathspec
git ls-files --others --directory partially_tracked/ "untracked/?*" >actual &&
cat <<-EOF >expect &&
partially_tracked/untracked_dir/
untracked/deep/
EOF
test_cmp expect actual
)
ok 13 - ls-files -o --directory with mix of tracked states
expecting success of 3000.14 'ls-files -o --directory with glob filetype match only':
(
cd nested &&
git ls-files --others --directory "untracked/*.c" >actual &&
cat <<-EOF >expect &&
untracked/deep/foo.c
EOF
test_cmp expect actual
)
ok 14 - ls-files -o --directory with glob filetype match only
expecting success of 3000.15 'ls-files -o --directory to get immediate paths under one dir only':
(
cd nested &&
git ls-files --others --directory "untracked/?*" >actual &&
cat <<-EOF >expect &&
untracked/deep/
EOF
test_cmp expect actual
)
ok 15 - ls-files -o --directory to get immediate paths under one dir only
expecting success of 3000.16 'ls-files -o avoids listing untracked non-matching gitdir':
test_when_finished "rm -rf nested/untracked/deep/empty" &&
(
cd nested &&
git init untracked/deep/empty &&
git ls-files --others "untracked/*.c" >actual &&
cat <<-EOF >expect &&
untracked/deep/foo.c
EOF
test_cmp expect actual
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3000-ls-files-others/nested/untracked/deep/empty/.git/
ok 16 - ls-files -o avoids listing untracked non-matching gitdir
# passed all 16 test(s)
1..16
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3002-ls-files-dashpath.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3002-ls-files-dashpath/.git/
expecting success of 3002.1 'setup':
echo frotz >path0 &&
echo frotz >./-foo &&
echo frotz >./--
ok 1 - setup
expecting success of 3002.2 'git ls-files without path restriction.':
test_when_finished "rm -f expect" &&
git ls-files --others >output &&
cat >expect <<-\EOF &&
--
-foo
output
path0
EOF
test_cmp output expect
ok 2 - git ls-files without path restriction.
expecting success of 3002.3 'git ls-files with path restriction.':
test_when_finished "rm -f expect" &&
git ls-files --others path0 >output &&
cat >expect <<-\EOF &&
path0
EOF
test_cmp output expect
ok 3 - git ls-files with path restriction.
expecting success of 3002.4 'git ls-files with path restriction with --.':
test_when_finished "rm -f expect" &&
git ls-files --others -- path0 >output &&
cat >expect <<-\EOF &&
path0
EOF
test_cmp output expect
ok 4 - git ls-files with path restriction with --.
expecting success of 3002.5 'git ls-files with path restriction with -- --.':
test_when_finished "rm -f expect" &&
git ls-files --others -- -- >output &&
cat >expect <<-\EOF &&
--
EOF
test_cmp output expect
ok 5 - git ls-files with path restriction with -- --.
expecting success of 3002.6 'git ls-files with no path restriction.':
test_when_finished "rm -f expect" &&
git ls-files --others -- >output &&
cat >expect <<-\EOF &&
--
-foo
output
path0
EOF
test_cmp output expect
ok 6 - git ls-files with no path restriction.
# passed all 6 test(s)
1..6
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3001-ls-files-others-exclude.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3001-ls-files-others-exclude/.git/
expecting success of 3001.1 'git ls-files --others with various exclude options.':
git ls-files --others \
--exclude=\*.6 \
--exclude-per-directory=.gitignore \
--exclude-from=.git/ignore \
>output &&
test_cmp expect output
ok 1 - git ls-files --others with various exclude options.
expecting success of 3001.2 'git ls-files --others with \r\n line endings.':
git ls-files --others \
--exclude=\*.6 \
--exclude-per-directory=.gitignore \
--exclude-from=.git/ignore \
>output &&
test_cmp expect output
ok 2 - git ls-files --others with \r\n line endings.
expecting success of 3001.3 'setup skip-worktree gitignore':
git add $allignores &&
git update-index --skip-worktree $allignores &&
rm $allignores
ok 3 - setup skip-worktree gitignore
expecting success of 3001.4 'git ls-files --others with various exclude options.':
git ls-files --others \
--exclude=\*.6 \
--exclude-per-directory=.gitignore \
--exclude-from=.git/ignore \
>output &&
test_cmp expect output
ok 4 - git ls-files --others with various exclude options.
expecting success of 3001.5 'restore gitignore':
git checkout --ignore-skip-worktree-bits $allignores &&
rm .git/index
Updated 3 paths from the index
ok 5 - restore gitignore
expecting success of 3001.6 'git status honors core.excludesfile': test_cmp expect output
ok 6 - git status honors core.excludesfile
expecting success of 3001.7 'trailing slash in exclude allows directory match(1)':
git ls-files --others --exclude=one/ >output &&
if grep "^one/" output
then
echo Ooops
false
else
: happy
fi
ok 7 - trailing slash in exclude allows directory match(1)
expecting success of 3001.8 'trailing slash in exclude allows directory match (2)':
git ls-files --others --exclude=one/two/ >output &&
if grep "^one/two/" output
then
echo Ooops
false
else
: happy
fi
ok 8 - trailing slash in exclude allows directory match (2)
expecting success of 3001.9 'trailing slash in exclude forces directory match (1)':
>two &&
git ls-files --others --exclude=two/ >output &&
grep "^two" output
two
ok 9 - trailing slash in exclude forces directory match (1)
expecting success of 3001.10 'trailing slash in exclude forces directory match (2)':
git ls-files --others --exclude=one/a.1/ >output &&
grep "^one/a.1" output
one/a.1
ok 10 - trailing slash in exclude forces directory match (2)
expecting success of 3001.11 'negated exclude matches can override previous ones':
git ls-files --others --exclude="a.*" --exclude="!a.1" >output &&
grep "^a.1" output
a.1
ok 11 - negated exclude matches can override previous ones
expecting success of 3001.12 'excluded directory overrides content patterns':
git ls-files --others --exclude="one" --exclude="!one/a.1" >output &&
if grep "^one/a.1" output
then
false
fi
ok 12 - excluded directory overrides content patterns
expecting success of 3001.13 'negated directory doesn't affect content patterns':
git ls-files --others --exclude="!one" --exclude="one/a.1" >output &&
if grep "^one/a.1" output
then
false
fi
ok 13 - negated directory doesn't affect content patterns
expecting success of 3001.14 'subdirectory ignore (setup)':
mkdir -p top/l1/l2 &&
(
cd top &&
git init &&
echo /.gitignore >.gitignore &&
echo l1 >>.gitignore &&
echo l2 >l1/.gitignore &&
>l1/l2/l1
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3001-ls-files-others-exclude/top/.git/
ok 14 - subdirectory ignore (setup)
expecting success of 3001.15 'subdirectory ignore (toplevel)':
(
cd top &&
git ls-files -o --exclude-standard
) >actual &&
test_must_be_empty actual
ok 15 - subdirectory ignore (toplevel)
expecting success of 3001.16 'subdirectory ignore (l1/l2)':
(
cd top/l1/l2 &&
git ls-files -o --exclude-standard
) >actual &&
test_must_be_empty actual
ok 16 - subdirectory ignore (l1/l2)
expecting success of 3001.17 'subdirectory ignore (l1)':
(
cd top/l1 &&
git ls-files -o --exclude-standard
) >actual &&
test_must_be_empty actual
ok 17 - subdirectory ignore (l1)
expecting success of 3001.18 'show/hide empty ignored directory (setup)':
rm top/l1/l2/l1 &&
rm top/l1/.gitignore
ok 18 - show/hide empty ignored directory (setup)
expecting success of 3001.19 'show empty ignored directory with --directory':
(
cd top &&
git ls-files -o -i --exclude l1 --directory
) >actual &&
echo l1/ >expect &&
test_cmp expect actual
ok 19 - show empty ignored directory with --directory
expecting success of 3001.20 'hide empty ignored directory with --no-empty-directory':
(
cd top &&
git ls-files -o -i --exclude l1 --directory --no-empty-directory
) >actual &&
test_must_be_empty actual
ok 20 - hide empty ignored directory with --no-empty-directory
expecting success of 3001.21 'show/hide empty ignored sub-directory (setup)':
> top/l1/tracked &&
(
cd top &&
git add -f l1/tracked
)
ok 21 - show/hide empty ignored sub-directory (setup)
expecting success of 3001.22 'show empty ignored sub-directory with --directory':
(
cd top &&
git ls-files -o -i --exclude l1 --directory
) >actual &&
echo l1/l2/ >expect &&
test_cmp expect actual
ok 22 - show empty ignored sub-directory with --directory
expecting success of 3001.23 'hide empty ignored sub-directory with --no-empty-directory':
(
cd top &&
git ls-files -o -i --exclude l1 --directory --no-empty-directory
) >actual &&
test_must_be_empty actual
ok 23 - hide empty ignored sub-directory with --no-empty-directory
expecting success of 3001.24 'pattern matches prefix completely':
git ls-files -i -o --exclude "/three/a.3[abc]" >actual &&
test_must_be_empty actual
ok 24 - pattern matches prefix completely
expecting success of 3001.25 'ls-files with "**" patterns':
cat <<-\EOF >expect &&
a.1
one/a.1
one/two/a.1
three/a.1
EOF
git ls-files -o -i --exclude "**/a.1" >actual &&
test_cmp expect actual
ok 25 - ls-files with "**" patterns
expecting success of 3001.26 'ls-files with "**" patterns and --directory':
# Expectation same as previous test
git ls-files --directory -o -i --exclude "**/a.1" >actual &&
test_cmp expect actual
ok 26 - ls-files with "**" patterns and --directory
expecting success of 3001.27 'ls-files with "**" patterns and no slashes':
git ls-files -o -i --exclude "one**a.1" >actual &&
test_must_be_empty actual
ok 27 - ls-files with "**" patterns and no slashes
# passed all 27 test(s)
1..27
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3003-ls-files-exclude.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3003-ls-files-exclude/.git/
expecting success of 3003.1 'create repo with file':
echo content >file &&
git add file &&
git commit -m file &&
echo modification >file
[master (root-commit) 39caa03] file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
ok 1 - create repo with file
expecting success of 3003.2 'ls-files output contains file (cached)':
echo 'file' >expect &&
git ls-files --exclude-standard --cached >output &&
test_cmp expect output
ok 2 - ls-files output contains file (cached)
expecting success of 3003.3 'ls-files output contains file (modified)':
echo 'file' >expect &&
git ls-files --exclude-standard --modified >output &&
test_cmp expect output
ok 3 - ls-files output contains file (modified)
expecting success of 3003.4 'add file to gitignore':
echo file >.gitignore
ok 4 - add file to gitignore
expecting success of 3003.5 'ls-files output contains file (cached)':
echo 'file' >expect &&
git ls-files --exclude-standard --cached >output &&
test_cmp expect output
ok 5 - ls-files output contains file (cached)
expecting success of 3003.6 'ls-files output contains file (modified)':
echo 'file' >expect &&
git ls-files --exclude-standard --modified >output &&
test_cmp expect output
ok 6 - ls-files output contains file (modified)
expecting success of 3003.7 'ls-files -i -c lists only tracked-but-ignored files':
echo content >other-file &&
git add other-file &&
echo file >expect &&
git ls-files -i -c --exclude-standard >output &&
test_cmp expect output
ok 7 - ls-files -i -c lists only tracked-but-ignored files
# passed all 7 test(s)
1..7
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3004-ls-files-basic.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3004-ls-files-basic/.git/
expecting success of 3004.1 'ls-files in empty repository':
git ls-files >actual &&
test_must_be_empty actual
ok 1 - ls-files in empty repository
expecting success of 3004.2 'ls-files with nonexistent path':
git ls-files doesnotexist >actual &&
test_must_be_empty actual
ok 2 - ls-files with nonexistent path
expecting success of 3004.3 'ls-files with nonsense option':
test_expect_code 129 git ls-files --nonsense 2>actual &&
test_i18ngrep "[Uu]sage: git ls-files" actual
usage: git ls-files [<options>] [<file>...]
ok 3 - ls-files with nonsense option
expecting success of 3004.4 'ls-files -h in corrupt repository':
mkdir broken &&
(
cd broken &&
git init &&
>.git/index &&
test_expect_code 129 git ls-files -h >usage 2>&1
) &&
test_i18ngrep "[Uu]sage: git ls-files " broken/usage
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3004-ls-files-basic/broken/.git/
usage: git ls-files [<options>] [<file>...]
ok 4 - ls-files -h in corrupt repository
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
expecting success of 3004.5 'ls-files with absolute paths to symlinks':
mkdir subs &&
ln -s nosuch link &&
ln -s ../nosuch subs/link &&
git add link subs/link &&
git ls-files -s link subs/link >expect &&
git ls-files -s "$(pwd)/link" "$(pwd)/subs/link" >actual &&
test_cmp expect actual &&
(
cd subs &&
git ls-files -s link >../expect &&
git ls-files -s "$(pwd)/link" >../actual
) &&
test_cmp expect actual
ok 5 - ls-files with absolute paths to symlinks
# passed all 5 test(s)
1..5
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3005-ls-files-relative.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3005-ls-files-relative/.git/
expecting success of 3005.1 'prepare':
: >never-mind-me &&
git add never-mind-me &&
mkdir top &&
(
cd top &&
mkdir sub &&
x="x xa xbc xdef xghij xklmno" &&
y=$(echo "$x" | tr x y) &&
touch $x &&
touch $y &&
cd sub &&
git add ../x*
)
ok 1 - prepare
expecting success of 3005.2 'ls-files with mixed levels':
(
cd top/sub &&
cat >expect <<-EOF &&
../../never-mind-me
../x
EOF
git ls-files $(cat expect) >actual &&
test_cmp expect actual
)
ok 2 - ls-files with mixed levels
expecting success of 3005.3 'ls-files -c':
(
cd top/sub &&
printf "error: pathspec $SQ%s$SQ did not match any file(s) known to git\n" ../y* >expect.err &&
echo "Did you forget to ${SQ}git add${SQ}?" >>expect.err &&
ls ../x* >expect.out &&
test_must_fail git ls-files -c --error-unmatch ../[xy]* >actual.out 2>actual.err &&
test_cmp expect.out actual.out &&
test_cmp expect.err actual.err
)
ok 3 - ls-files -c
expecting success of 3005.4 'ls-files -o':
(
cd top/sub &&
printf "error: pathspec $SQ%s$SQ did not match any file(s) known to git\n" ../x* >expect.err &&
echo "Did you forget to ${SQ}git add${SQ}?" >>expect.err &&
ls ../y* >expect.out &&
test_must_fail git ls-files -o --error-unmatch ../[xy]* >actual.out 2>actual.err &&
test_cmp expect.out actual.out &&
test_cmp expect.err actual.err
)
ok 4 - ls-files -o
# passed all 4 test(s)
1..4
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2501-cwd-empty.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2501-cwd-empty/.git/
expecting success of 2501.1 'setup':
test_commit init &&
git branch fd_conflict &&
mkdir -p foo/bar &&
test_commit foo/bar/baz &&
git revert HEAD &&
git tag reverted &&
git checkout fd_conflict &&
mkdir dirORfile &&
test_commit dirORfile/foo &&
git rm -r dirORfile &&
echo not-a-directory >dirORfile &&
git add dirORfile &&
git commit -m dirORfile &&
git switch -c df_conflict HEAD~1 &&
test_commit random_file &&
git switch -c undo_fd_conflict fd_conflict &&
git revert HEAD
[master (root-commit) 2519212] init
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 init.t
[master f4c5aab] foo/bar/baz
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo/bar/baz.t
[master 968d1fe] Revert "foo/bar/baz"
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
1 file changed, 1 deletion(-)
delete mode 100644 foo/bar/baz.t
Switched to branch 'fd_conflict'
[fd_conflict d7f9e78] dirORfile/foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 dirORfile/foo.t
rm 'dirORfile/foo.t'
[fd_conflict 9658629] dirORfile
Author: A U Thor <author@example.com>
2 files changed, 1 insertion(+), 1 deletion(-)
create mode 100644 dirORfile
delete mode 100644 dirORfile/foo.t
Switched to a new branch 'df_conflict'
[df_conflict d90d7a3] random_file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 random_file.t
Switched to a new branch 'undo_fd_conflict'
[undo_fd_conflict 46c1835] Revert "dirORfile"
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
2 files changed, 1 insertion(+), 1 deletion(-)
delete mode 100644 dirORfile
create mode 100644 dirORfile/foo.t
ok 1 - setup
expecting success of 2501.2 'checkout does not clean cwd incidentally':
test_incidental_dir_removal git checkout init
Note: switching to 'foo/bar/baz^{commit}'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at f4c5aab foo/bar/baz
Previous HEAD position was f4c5aab foo/bar/baz
HEAD is now at 2519212 init
/<<PKGBUILDDIR>>/t/trash directory.t2501-cwd-empty/foo
HEAD is now at 2519212 init
ok 2 - checkout does not clean cwd incidentally
expecting success of 2501.3 'checkout fails if cwd needs to be removed':
test_required_dir_removal git checkout fd_conflict
Previous HEAD position was 2519212 init
HEAD is now at d90d7a3 random_file
error: Refusing to remove the current working directory:
/<<PKGBUILDDIR>>/t/trash directory.t2501-cwd-empty/dirORfile
?? error
Removing error
Removing foo/
ok 3 - checkout fails if cwd needs to be removed
expecting success of 2501.4 'reset --hard does not clean cwd incidentally':
test_incidental_dir_removal git reset --hard init
Previous HEAD position was d90d7a3 random_file
HEAD is now at f4c5aab foo/bar/baz
HEAD is now at 2519212 init
/<<PKGBUILDDIR>>/t/trash directory.t2501-cwd-empty/foo
HEAD is now at 2519212 init
ok 4 - reset --hard does not clean cwd incidentally
expecting success of 2501.5 'reset --hard fails if cwd needs to be removed':
test_required_dir_removal git reset --hard fd_conflict
Previous HEAD position was 2519212 init
HEAD is now at d90d7a3 random_file
error: Refusing to remove 'dirORfile' since it is the current working directory.
/<<PKGBUILDDIR>>/t/trash directory.t2501-cwd-empty/dirORfile
?? error
Removing error
Removing foo/
ok 5 - reset --hard fails if cwd needs to be removed
expecting success of 2501.6 'merge does not clean cwd incidentally':
test_incidental_dir_removal git merge reverted
Previous HEAD position was d90d7a3 random_file
HEAD is now at f4c5aab foo/bar/baz
Updating f4c5aab..968d1fe
Fast-forward
foo/bar/baz.t | 1 -
1 file changed, 1 deletion(-)
delete mode 100644 foo/bar/baz.t
/<<PKGBUILDDIR>>/t/trash directory.t2501-cwd-empty/foo
HEAD is now at 968d1fe Revert "foo/bar/baz"
ok 6 - merge does not clean cwd incidentally
expecting success of 2501.7 'merge fails if cwd needs to be removed; recursive friendly':
git checkout foo/bar/baz &&
test_when_finished "git clean -fdx" &&
mkdir dirORfile &&
(
cd dirORfile &&
test_must_fail git merge fd_conflict 2>../error
) &&
test_path_is_dir dirORfile &&
grep "Refusing to remove the current working directory" error
Previous HEAD position was 968d1fe Revert "foo/bar/baz"
HEAD is now at f4c5aab foo/bar/baz
error: Refusing to remove the current working directory:
Removing dirORfile/
Removing error
ok 7 - merge fails if cwd needs to be removed; recursive friendly
expecting success of 2501.8 'merge fails if cwd needs to be removed':
test_required_dir_removal git merge fd_conflict
Previous HEAD position was f4c5aab foo/bar/baz
HEAD is now at d90d7a3 random_file
error: Refusing to remove the current working directory:
/<<PKGBUILDDIR>>/t/trash directory.t2501-cwd-empty/dirORfile
?? error
Removing error
ok 8 - merge fails if cwd needs to be removed
expecting success of 2501.9 'cherry-pick does not clean cwd incidentally':
test_incidental_dir_removal git cherry-pick reverted
Previous HEAD position was d90d7a3 random_file
HEAD is now at f4c5aab foo/bar/baz
[detached HEAD d0d1a1f] Revert "foo/bar/baz"
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
1 file changed, 1 deletion(-)
delete mode 100644 foo/bar/baz.t
/<<PKGBUILDDIR>>/t/trash directory.t2501-cwd-empty/foo
HEAD is now at d0d1a1f Revert "foo/bar/baz"
ok 9 - cherry-pick does not clean cwd incidentally
expecting success of 2501.10 'cherry-pick fails if cwd needs to be removed':
test_required_dir_removal git cherry-pick fd_conflict
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
d0d1a1f Revert "foo/bar/baz"
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> d0d1a1f
HEAD is now at d90d7a3 random_file
error: Refusing to remove the current working directory:
/<<PKGBUILDDIR>>/t/trash directory.t2501-cwd-empty/dirORfile
?? error
Removing error
Removing foo/
ok 10 - cherry-pick fails if cwd needs to be removed
expecting success of 2501.11 'rebase does not clean cwd incidentally':
test_incidental_dir_removal git rebase reverted
Previous HEAD position was d90d7a3 random_file
HEAD is now at f4c5aab foo/bar/baz
Successfully rebased and updated detached HEAD.
/<<PKGBUILDDIR>>/t/trash directory.t2501-cwd-empty/foo
HEAD is now at 968d1fe Revert "foo/bar/baz"
ok 11 - rebase does not clean cwd incidentally
expecting success of 2501.12 'rebase fails if cwd needs to be removed':
test_required_dir_removal git rebase fd_conflict
Previous HEAD position was 968d1fe Revert "foo/bar/baz"
HEAD is now at d90d7a3 random_file
error: Refusing to remove the current working directory:
/<<PKGBUILDDIR>>/t/trash directory.t2501-cwd-empty/dirORfile
?? error
Removing error
Removing foo/
ok 12 - rebase fails if cwd needs to be removed
expecting success of 2501.13 'revert does not clean cwd incidentally':
test_incidental_dir_removal git revert HEAD
Previous HEAD position was d90d7a3 random_file
HEAD is now at f4c5aab foo/bar/baz
[detached HEAD f0f8756] Revert "foo/bar/baz"
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 deletion(-)
delete mode 100644 foo/bar/baz.t
/<<PKGBUILDDIR>>/t/trash directory.t2501-cwd-empty/foo
HEAD is now at f0f8756 Revert "foo/bar/baz"
ok 13 - revert does not clean cwd incidentally
expecting success of 2501.14 'revert fails if cwd needs to be removed':
test_required_dir_removal git revert undo_fd_conflict
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
f0f8756 Revert "foo/bar/baz"
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> f0f8756
HEAD is now at d90d7a3 random_file
error: Refusing to remove the current working directory:
/<<PKGBUILDDIR>>/t/trash directory.t2501-cwd-empty/dirORfile
?? error
Removing error
Removing foo/
ok 14 - revert fails if cwd needs to be removed
expecting success of 2501.15 'rm does not clean cwd incidentally':
test_incidental_dir_removal git rm bar/baz.t
Previous HEAD position was d90d7a3 random_file
HEAD is now at f4c5aab foo/bar/baz
rm 'foo/bar/baz.t'
/<<PKGBUILDDIR>>/t/trash directory.t2501-cwd-empty/foo
D foo/bar/baz.t
HEAD is now at f4c5aab foo/bar/baz
ok 15 - rm does not clean cwd incidentally
expecting success of 2501.16 'apply does not remove cwd incidentally':
git diff HEAD HEAD~1 >patch &&
test_incidental_dir_removal git apply ../patch
HEAD is now at f4c5aab foo/bar/baz
/<<PKGBUILDDIR>>/t/trash directory.t2501-cwd-empty/foo
D foo/bar/baz.t
?? patch
HEAD is now at f4c5aab foo/bar/baz
ok 16 - apply does not remove cwd incidentally
expecting success of 2501.17 'clean does not remove cwd incidentally':
test_incidental_untracked_dir_removal \
git -C .. clean -fd -e warnings . >warnings &&
grep "Refusing to remove current working directory" warnings
HEAD is now at f4c5aab foo/bar/baz
Refusing to remove current working directory
HEAD is now at f4c5aab foo/bar/baz
ok 17 - clean does not remove cwd incidentally
expecting success of 2501.18 'stash does not remove cwd incidentally':
test_incidental_untracked_dir_removal \
git stash --include-untracked
HEAD is now at f4c5aab foo/bar/baz
Saved working directory and index state WIP on (no branch): f4c5aab foo/bar/baz
Refusing to remove current working directory
/<<PKGBUILDDIR>>/t/trash directory.t2501-cwd-empty/untracked
HEAD is now at f4c5aab foo/bar/baz
ok 18 - stash does not remove cwd incidentally
expecting success of 2501.19 '`rm -rf dir` only removes a subset of dir':
test_when_finished "rm -rf a/" &&
mkdir -p a/b/c &&
>a/b/c/untracked &&
>a/b/c/tracked &&
git add a/b/c/tracked &&
(
cd a/b &&
git rm -rf ../b
) &&
test_path_is_dir a/b &&
test_path_is_missing a/b/c/tracked &&
test_path_is_file a/b/c/untracked
rm 'a/b/c/tracked'
ok 19 - `rm -rf dir` only removes a subset of dir
expecting success of 2501.20 '`rm -rf dir` even with only tracked files will remove something else':
test_when_finished "rm -rf a/" &&
mkdir -p a/b/c &&
>a/b/c/tracked &&
git add a/b/c/tracked &&
(
cd a/b &&
git rm -rf ../b
) &&
test_path_is_missing a/b/c/tracked &&
test_path_is_missing a/b/c &&
test_path_is_dir a/b
rm 'a/b/c/tracked'
ok 20 - `rm -rf dir` even with only tracked files will remove something else
expecting success of 2501.21 'git version continues working from a deleted dir':
mkdir tmp &&
(
cd tmp &&
rm -rf ../tmp &&
git version
)
sh: 0: getcwd() failed: No such file or directory
git version 2.42.0
ok 21 - git version continues working from a deleted dir
expecting success of 2501.22 'rm -r with -C leaves submodule if cwd inside':
test_submodule_removal dir git -C .. rm -r my_submodule/
HEAD is now at f4c5aab foo/bar/baz
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2501-cwd-empty/my_submodule/.git/
[master (root-commit) f132c27] initial commit
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file
Adding existing repo at 'my_submodule' to the index
[detached HEAD 629a5d0] Add the submodule
Author: A U Thor <author@example.com>
2 files changed, 4 insertions(+)
create mode 100644 .gitmodules
create mode 160000 my_submodule
Migrating git directory of 'my_submodule' from
'/<<PKGBUILDDIR>>/t/trash directory.t2501-cwd-empty/my_submodule/.git' to
'/<<PKGBUILDDIR>>/t/trash directory.t2501-cwd-empty/.git/modules/my_submodule'
fatal: could not remove 'my_submodule'
rm 'my_submodule'
HEAD is now at f4c5aab foo/bar/baz
ok 22 - rm -r with -C leaves submodule if cwd inside
expecting success of 2501.23 'rm -r leaves submodule if cwd inside':
test_submodule_removal dir \
git --git-dir=../.git --work-tree=.. rm -r ../my_submodule/
HEAD is now at f4c5aab foo/bar/baz
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2501-cwd-empty/my_submodule/.git/
[master (root-commit) f132c27] initial commit
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file
Adding existing repo at 'my_submodule' to the index
[detached HEAD 629a5d0] Add the submodule
Author: A U Thor <author@example.com>
2 files changed, 4 insertions(+)
create mode 100644 .gitmodules
create mode 160000 my_submodule
Migrating git directory of 'my_submodule' from
'/<<PKGBUILDDIR>>/t/trash directory.t2501-cwd-empty/my_submodule/.git' to
'/<<PKGBUILDDIR>>/t/trash directory.t2501-cwd-empty/.git/modules/my_submodule'
fatal: could not remove 'my_submodule'
rm 'my_submodule'
HEAD is now at f4c5aab foo/bar/baz
ok 23 - rm -r leaves submodule if cwd inside
expecting success of 2501.24 'rm -rf removes submodule even if cwd inside':
test_submodule_removal missing \
git --git-dir=../.git --work-tree=.. rm -rf ../my_submodule/
HEAD is now at f4c5aab foo/bar/baz
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2501-cwd-empty/my_submodule/.git/
[master (root-commit) f132c27] initial commit
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file
Adding existing repo at 'my_submodule' to the index
[detached HEAD 629a5d0] Add the submodule
Author: A U Thor <author@example.com>
2 files changed, 4 insertions(+)
create mode 100644 .gitmodules
create mode 160000 my_submodule
Migrating git directory of 'my_submodule' from
'/<<PKGBUILDDIR>>/t/trash directory.t2501-cwd-empty/my_submodule/.git' to
'/<<PKGBUILDDIR>>/t/trash directory.t2501-cwd-empty/.git/modules/my_submodule'
rm 'my_submodule'
HEAD is now at f4c5aab foo/bar/baz
ok 24 - rm -rf removes submodule even if cwd inside
# passed all 24 test(s)
1..24
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3006-ls-files-long.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3006-ls-files-long/.git/
expecting success of 3006.1 'setup':
p=filefilefilefilefilefilefilefile &&
p=$p$p$p$p$p$p$p$p$p$p$p$p$p$p$p$p &&
p=$p$p$p$p$p$p$p$p$p$p$p$p$p$p$p$p &&
path_a=${p}_a &&
path_z=${p}_z &&
blob_a=$(echo frotz | git hash-object -w --stdin) &&
blob_z=$(echo nitfol | git hash-object -w --stdin) &&
pat="100644 %s 0\t%s\n"
ok 1 - setup
expecting success of 3006.2 'overly-long path by itself is not a problem':
printf "$pat" "$blob_a" "$path_a" |
git update-index --add --index-info &&
echo "$path_a" >expect &&
git ls-files >actual &&
test_cmp expect actual
ok 2 - overly-long path by itself is not a problem
expecting success of 3006.3 'overly-long path does not replace another by mistake':
printf "$pat" "$blob_a" "$path_a" "$blob_z" "$path_z" |
git update-index --add --index-info &&
(
echo "$path_a" &&
echo "$path_z"
) >expect &&
git ls-files >actual &&
test_cmp expect actual
ok 3 - overly-long path does not replace another by mistake
# passed all 3 test(s)
1..3
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3008-ls-files-lazy-init-name-hash.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3008-ls-files-lazy-init-name-hash/.git/
expecting success of 3008.1 'no buffer overflow in lazy_init_name_hash':
(
test_seq $LAZY_THREAD_COST | sed "s/^/a_/" &&
echo b/b/b &&
test_seq $LAZY_THREAD_COST | sed "s/^/c_/" &&
test_seq 50 | sed "s/^/d_/" | tr "\n" "/" && echo d
) |
sed "s/^/100644 $EMPTY_BLOB /" |
git update-index --index-info &&
test-tool lazy-init-name-hash -m
0.001776 0.000953 4002 multi 2
ok 1 - no buffer overflow in lazy_init_name_hash
# passed all 1 test(s)
1..1
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3009-ls-files-others-nonsubmodule.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3009-ls-files-others-nonsubmodule/.git/
expecting success of 3009.1 'setup: directories':
mkdir nonrepo-no-files/ &&
mkdir nonrepo-untracked-file &&
: >nonrepo-untracked-file/untracked &&
git init repo-no-commit-no-files &&
git init repo-no-commit-untracked-file &&
: >repo-no-commit-untracked-file/untracked &&
git init repo-with-commit-no-files &&
git -C repo-with-commit-no-files commit --allow-empty -mmsg &&
git init repo-with-commit-untracked-file &&
test_commit -C repo-with-commit-untracked-file msg &&
: >repo-with-commit-untracked-file/untracked
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3009-ls-files-others-nonsubmodule/repo-no-commit-no-files/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3009-ls-files-others-nonsubmodule/repo-no-commit-untracked-file/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3009-ls-files-others-nonsubmodule/repo-with-commit-no-files/.git/
[master (root-commit) b4b9816] msg
Author: A U Thor <author@example.com>
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3009-ls-files-others-nonsubmodule/repo-with-commit-untracked-file/.git/
[master (root-commit) c24fc06] msg
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 msg.t
ok 1 - setup: directories
expecting success of 3009.2 'ls-files --others handles untracked git repositories':
git ls-files -o >output &&
cat >expect <<-EOF &&
nonrepo-untracked-file/untracked
output
repo-no-commit-no-files/
repo-no-commit-untracked-file/
repo-with-commit-no-files/
repo-with-commit-untracked-file/
EOF
test_cmp expect output
ok 2 - ls-files --others handles untracked git repositories
# passed all 2 test(s)
1..2
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3010-ls-files-killed-modified.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3010-ls-files-killed-modified/.git/
expecting success of 3010.1 'git update-index --add to add various paths.':
date >path0 &&
test_ln_s_add xyzzy path1 &&
mkdir path2 path3 pathx &&
date >path2/file2 &&
date >path3/file3 &&
>pathx/ju &&
: >path7 &&
date >path8 &&
: >path9 &&
date >path10 &&
git update-index --add -- path0 path?/file? pathx/ju path7 path8 path9 path10 &&
git init submod1 &&
git -C submod1 commit --allow-empty -m "empty 1" &&
git init submod2 &&
git -C submod2 commit --allow-empty -m "empty 2" &&
git update-index --add submod[12] &&
(
cd submod1 &&
git commit --allow-empty -m "empty 1 (updated)"
) &&
rm -fr path? # leave path10 alone
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3010-ls-files-killed-modified/submod1/.git/
[master (root-commit) 4da6488] empty 1
Author: A U Thor <author@example.com>
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3010-ls-files-killed-modified/submod2/.git/
[master (root-commit) 2720aba] empty 2
Author: A U Thor <author@example.com>
[master c92551b] empty 1 (updated)
Author: A U Thor <author@example.com>
ok 1 - git update-index --add to add various paths.
expecting success of 3010.2 'git ls-files -k to show killed files.':
date >path2 &&
if test_have_prereq SYMLINKS
then
ln -s frotz path3 &&
ln -s nitfol path5
else
date >path3 &&
date >path5
fi &&
mkdir -p path0 path1 path6 pathx/ju &&
date >path0/file0 &&
date >path1/file1 &&
date >path6/file6 &&
date >path7 &&
: >path8 &&
: >path9 &&
touch path10 &&
>pathx/ju/nk &&
cat >.expected <<-\EOF
path0/file0
path1/file1
path2
path3
pathx/ju/nk
EOF
ok 2 - git ls-files -k to show killed files.
expecting success of 3010.3 'git ls-files -k output (w/o icase)':
git ls-files -k >.output &&
test_cmp .expected .output
ok 3 - git ls-files -k output (w/o icase)
expecting success of 3010.4 'git ls-files -k output (w/ icase)':
git -c core.ignorecase=true ls-files -k >.output &&
test_cmp .expected .output
ok 4 - git ls-files -k output (w/ icase)
expecting success of 3010.5 'git ls-files -m to show modified files.':
git ls-files -m >.output
ok 5 - git ls-files -m to show modified files.
expecting success of 3010.6 'validate git ls-files -m output.':
cat >.expected <<-\EOF &&
path0
path1
path2/file2
path3/file3
path7
path8
pathx/ju
submod1
EOF
test_cmp .expected .output
ok 6 - validate git ls-files -m output.
# passed all 6 test(s)
1..6
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3011-common-prefixes-and-directory-traversal.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3011-common-prefixes-and-directory-traversal/.git/
expecting success of 3011.1 'setup':
test_commit hello &&
>empty &&
mkdir untracked_dir &&
>untracked_dir/empty &&
git init untracked_repo &&
>untracked_repo/empty &&
cat <<-EOF >.gitignore &&
ignored
an_ignored_dir/
EOF
mkdir an_ignored_dir &&
mkdir an_untracked_dir &&
>an_ignored_dir/ignored &&
>an_ignored_dir/untracked &&
>an_untracked_dir/ignored &&
>an_untracked_dir/untracked
[master (root-commit) 7dd16e1] hello
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 hello.t
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3011-common-prefixes-and-directory-traversal/untracked_repo/.git/
ok 1 - setup
expecting success of 3011.2 'git ls-files -o shows the right entries':
cat <<-EOF >expect &&
.gitignore
actual
an_ignored_dir/ignored
an_ignored_dir/untracked
an_untracked_dir/ignored
an_untracked_dir/untracked
empty
expect
untracked_dir/empty
untracked_repo/
EOF
git ls-files -o >actual &&
test_cmp expect actual
ok 2 - git ls-files -o shows the right entries
expecting success of 3011.3 'git ls-files -o --exclude-standard shows the right entries':
cat <<-EOF >expect &&
.gitignore
actual
an_untracked_dir/untracked
empty
expect
untracked_dir/empty
untracked_repo/
EOF
git ls-files -o --exclude-standard >actual &&
test_cmp expect actual
ok 3 - git ls-files -o --exclude-standard shows the right entries
expecting success of 3011.4 'git ls-files -o untracked_dir recurses':
echo untracked_dir/empty >expect &&
git ls-files -o untracked_dir >actual &&
test_cmp expect actual
ok 4 - git ls-files -o untracked_dir recurses
expecting success of 3011.5 'git ls-files -o untracked_dir/ recurses':
echo untracked_dir/empty >expect &&
git ls-files -o untracked_dir/ >actual &&
test_cmp expect actual
ok 5 - git ls-files -o untracked_dir/ recurses
expecting success of 3011.6 'git ls-files -o --directory untracked_dir does not recurse':
echo untracked_dir/ >expect &&
git ls-files -o --directory untracked_dir >actual &&
test_cmp expect actual
ok 6 - git ls-files -o --directory untracked_dir does not recurse
expecting success of 3011.7 'git ls-files -o --directory untracked_dir/ does not recurse':
echo untracked_dir/ >expect &&
git ls-files -o --directory untracked_dir/ >actual &&
test_cmp expect actual
ok 7 - git ls-files -o --directory untracked_dir/ does not recurse
expecting success of 3011.8 'git ls-files -o untracked_repo does not recurse':
echo untracked_repo/ >expect &&
git ls-files -o untracked_repo >actual &&
test_cmp expect actual
ok 8 - git ls-files -o untracked_repo does not recurse
expecting success of 3011.9 'git ls-files -o untracked_repo/ does not recurse':
echo untracked_repo/ >expect &&
git ls-files -o untracked_repo/ >actual &&
test_cmp expect actual
ok 9 - git ls-files -o untracked_repo/ does not recurse
expecting success of 3011.10 'git ls-files -o untracked_dir untracked_repo recurses into untracked_dir only':
cat <<-EOF >expect &&
untracked_dir/empty
untracked_repo/
EOF
git ls-files -o untracked_dir untracked_repo >actual &&
test_cmp expect actual
ok 10 - git ls-files -o untracked_dir untracked_repo recurses into untracked_dir only
expecting success of 3011.11 'git ls-files -o untracked_dir/ untracked_repo/ recurses into untracked_dir only':
cat <<-EOF >expect &&
untracked_dir/empty
untracked_repo/
EOF
git ls-files -o untracked_dir/ untracked_repo/ >actual &&
test_cmp expect actual
ok 11 - git ls-files -o untracked_dir/ untracked_repo/ recurses into untracked_dir only
expecting success of 3011.12 'git ls-files -o --directory untracked_dir untracked_repo does not recurse':
cat <<-EOF >expect &&
untracked_dir/
untracked_repo/
EOF
git ls-files -o --directory untracked_dir untracked_repo >actual &&
test_cmp expect actual
ok 12 - git ls-files -o --directory untracked_dir untracked_repo does not recurse
expecting success of 3011.13 'git ls-files -o --directory untracked_dir/ untracked_repo/ does not recurse':
cat <<-EOF >expect &&
untracked_dir/
untracked_repo/
EOF
git ls-files -o --directory untracked_dir/ untracked_repo/ >actual &&
test_cmp expect actual
ok 13 - git ls-files -o --directory untracked_dir/ untracked_repo/ does not recurse
expecting success of 3011.14 'git ls-files -o .git shows nothing':
git ls-files -o .git >actual &&
test_must_be_empty actual
ok 14 - git ls-files -o .git shows nothing
expecting success of 3011.15 'git ls-files -o .git/ shows nothing':
git ls-files -o .git/ >actual &&
test_must_be_empty actual
ok 15 - git ls-files -o .git/ shows nothing
checking prerequisite: FUNNYNAMES
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-FUNNYNAMES" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-FUNNYNAMES" &&
test_have_prereq !MINGW &&
touch -- \
"FUNNYNAMES tab embedded" \
"FUNNYNAMES \"quote embedded\"" \
"FUNNYNAMES newline
embedded" 2>/dev/null &&
rm -- \
"FUNNYNAMES tab embedded" \
"FUNNYNAMES \"quote embedded\"" \
"FUNNYNAMES newline
embedded" 2>/dev/null
)
prerequisite FUNNYNAMES ok
expecting success of 3011.16 'git ls-files -o untracked_* recurses appropriately':
mkdir "untracked_*" &&
>"untracked_*/empty" &&
cat <<-EOF >expect &&
untracked_*/empty
untracked_dir/empty
untracked_repo/
EOF
git ls-files -o "untracked_*" >actual &&
test_cmp expect actual
ok 16 - git ls-files -o untracked_* recurses appropriately
checking known breakage of 3011.17 'git ls-files -o untracked_*/ recurses appropriately':
cat <<-EOF >expect &&
untracked_*/empty
untracked_dir/empty
untracked_repo/
EOF
git ls-files -o "untracked_*/" >actual &&
test_cmp expect actual
--- expect 2023-10-09 02:18:37.877162570 +0000
+++ actual 2023-10-09 02:18:37.881162569 +0000
@@ -1,3 +1,2 @@
untracked_*/empty
-untracked_dir/empty
untracked_repo/
not ok 17 - git ls-files -o untracked_*/ recurses appropriately # TODO known breakage
expecting success of 3011.18 'git ls-files -o --directory untracked_* does not recurse':
cat <<-EOF >expect &&
untracked_*/
untracked_dir/
untracked_repo/
EOF
git ls-files -o --directory "untracked_*" >actual &&
test_cmp expect actual
ok 18 - git ls-files -o --directory untracked_* does not recurse
expecting success of 3011.19 'git ls-files -o --directory untracked_*/ does not recurse':
cat <<-EOF >expect &&
untracked_*/
untracked_dir/
untracked_repo/
EOF
git ls-files -o --directory "untracked_*/" >actual &&
test_cmp expect actual
ok 19 - git ls-files -o --directory untracked_*/ does not recurse
expecting success of 3011.20 'git ls-files -o consistent between one or two dirs':
git ls-files -o --exclude-standard an_ignored_dir/ an_untracked_dir/ >tmp &&
! grep ^an_ignored_dir/ tmp >expect &&
git ls-files -o --exclude-standard an_ignored_dir/ >actual &&
test_cmp expect actual
ok 20 - git ls-files -o consistent between one or two dirs
expecting success of 3011.21 'git status --ignored shows same files under dir with or without pathspec':
cat <<-EOF >expect &&
?? an_untracked_dir/
!! an_untracked_dir/ignored
EOF
git status --porcelain --ignored >output &&
grep an_untracked_dir output >expect &&
git status --porcelain --ignored an_untracked_dir/ >actual &&
test_cmp expect actual
ok 21 - git status --ignored shows same files under dir with or without pathspec
# still have 1 known breakage(s)
# passed all remaining 20 test(s)
1..21
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3012-ls-files-dedup.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3012-ls-files-dedup/.git/
expecting success of 3012.1 'setup':
>a.txt &&
>b.txt &&
>delete.txt &&
git add a.txt b.txt delete.txt &&
git commit -m base &&
echo a >a.txt &&
echo b >b.txt &&
echo delete >delete.txt &&
git add a.txt b.txt delete.txt &&
git commit -m tip &&
git tag tip &&
git reset --hard HEAD^ &&
echo change >a.txt &&
git commit -a -m side &&
git tag side
[master (root-commit) 211e5bc] base
Author: A U Thor <author@example.com>
3 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 a.txt
create mode 100644 b.txt
create mode 100644 delete.txt
[master 8a0f78f] tip
Author: A U Thor <author@example.com>
3 files changed, 3 insertions(+)
HEAD is now at 211e5bc base
[master 692b228] side
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
ok 1 - setup
expecting success of 3012.2 'git ls-files --deduplicate to show unique unmerged path':
test_must_fail git merge tip &&
git ls-files --deduplicate >actual &&
cat >expect <<-\EOF &&
a.txt
b.txt
delete.txt
EOF
test_cmp expect actual &&
git merge --abort
Auto-merging a.txt
CONFLICT (content): Merge conflict in a.txt
Automatic merge failed; fix conflicts and then commit the result.
ok 2 - git ls-files --deduplicate to show unique unmerged path
expecting success of 3012.3 'git ls-files -d -m --deduplicate with different display options':
git reset --hard side &&
test_must_fail git merge tip &&
rm delete.txt &&
git ls-files -d -m --deduplicate >actual &&
cat >expect <<-\EOF &&
a.txt
delete.txt
EOF
test_cmp expect actual &&
git ls-files -d -m -t --deduplicate >actual &&
cat >expect <<-\EOF &&
C a.txt
C a.txt
C a.txt
R delete.txt
C delete.txt
EOF
test_cmp expect actual &&
git ls-files -d -m -c --deduplicate >actual &&
cat >expect <<-\EOF &&
a.txt
b.txt
delete.txt
EOF
test_cmp expect actual &&
git merge --abort
HEAD is now at 692b228 side
Auto-merging a.txt
CONFLICT (content): Merge conflict in a.txt
Automatic merge failed; fix conflicts and then commit the result.
ok 3 - git ls-files -d -m --deduplicate with different display options
# passed all 3 test(s)
1..3
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3020-ls-files-error-unmatch.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3020-ls-files-error-unmatch/.git/
expecting success of 3020.1 'setup':
touch foo bar &&
git update-index --add foo bar &&
git commit -m "add foo bar"
[master (root-commit) 6c59e8c] add foo bar
Author: A U Thor <author@example.com>
2 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 bar
create mode 100644 foo
ok 1 - setup
expecting success of 3020.2 'git ls-files --error-unmatch should fail with unmatched path.':
test_must_fail 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 2 - git ls-files --error-unmatch should fail with unmatched path.
expecting success of 3020.3 'git ls-files --error-unmatch should succeed with matched paths.':
git ls-files --error-unmatch foo bar
bar
foo
ok 3 - git ls-files --error-unmatch should succeed with matched paths.
# passed all 3 test(s)
1..3
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3013-ls-files-format.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3013-ls-files-format/.git/
expecting success of 3013.1 'usage: --format is incompatible with -s':
test_expect_code 129 git ls-files --format="%(objectname)" $flag
fatal: --format cannot be used with -s, -o, -k, -t, --resolve-undo, --deduplicate, --eol
usage: git ls-files [<options>] [<file>...]
-z separate paths with the NUL character
-t identify the file status with tags
-v use lowercase letters for 'assume unchanged' files
-f use lowercase letters for 'fsmonitor clean' files
-c, --cached show cached files in the output (default)
-d, --deleted show deleted files in the output
-m, --modified show modified files in the output
-o, --others show other files in the output
-i, --ignored show ignored files in the output
-s, --stage show staged contents' object name in the output
-k, --killed show files on the filesystem that need to be removed
--directory show 'other' directories' names only
--eol show line endings of files
--empty-directory don't show empty directories
-u, --unmerged show unmerged files in the output
--resolve-undo show resolve-undo information
-x, --exclude <pattern>
skip files matching pattern
-X, --exclude-from <file>
read exclude patterns from <file>
--exclude-per-directory <file>
read additional per-directory exclude patterns in <file>
--exclude-standard add the standard git exclusions
--full-name make the output relative to the project top directory
--recurse-submodules recurse through submodules
--error-unmatch if any <file> is not in the index, treat this as an error
--with-tree <tree-ish>
pretend that paths removed since <tree-ish> are still present
--abbrev[=<n>] use <n> digits to display object names
--debug show debugging data
--deduplicate suppress duplicate entries
--sparse show sparse directories in the presence of a sparse index
--format <format> format to use for the output
ok 1 - usage: --format is incompatible with -s
expecting success of 3013.2 'usage: --format is incompatible with -o':
test_expect_code 129 git ls-files --format="%(objectname)" $flag
fatal: --format cannot be used with -s, -o, -k, -t, --resolve-undo, --deduplicate, --eol
usage: git ls-files [<options>] [<file>...]
-z separate paths with the NUL character
-t identify the file status with tags
-v use lowercase letters for 'assume unchanged' files
-f use lowercase letters for 'fsmonitor clean' files
-c, --cached show cached files in the output (default)
-d, --deleted show deleted files in the output
-m, --modified show modified files in the output
-o, --others show other files in the output
-i, --ignored show ignored files in the output
-s, --stage show staged contents' object name in the output
-k, --killed show files on the filesystem that need to be removed
--directory show 'other' directories' names only
--eol show line endings of files
--empty-directory don't show empty directories
-u, --unmerged show unmerged files in the output
--resolve-undo show resolve-undo information
-x, --exclude <pattern>
skip files matching pattern
-X, --exclude-from <file>
read exclude patterns from <file>
--exclude-per-directory <file>
read additional per-directory exclude patterns in <file>
--exclude-standard add the standard git exclusions
--full-name make the output relative to the project top directory
--recurse-submodules recurse through submodules
--error-unmatch if any <file> is not in the index, treat this as an error
--with-tree <tree-ish>
pretend that paths removed since <tree-ish> are still present
--abbrev[=<n>] use <n> digits to display object names
--debug show debugging data
--deduplicate suppress duplicate entries
--sparse show sparse directories in the presence of a sparse index
--format <format> format to use for the output
ok 2 - usage: --format is incompatible with -o
expecting success of 3013.3 'usage: --format is incompatible with -k':
test_expect_code 129 git ls-files --format="%(objectname)" $flag
fatal: --format cannot be used with -s, -o, -k, -t, --resolve-undo, --deduplicate, --eol
usage: git ls-files [<options>] [<file>...]
-z separate paths with the NUL character
-t identify the file status with tags
-v use lowercase letters for 'assume unchanged' files
-f use lowercase letters for 'fsmonitor clean' files
-c, --cached show cached files in the output (default)
-d, --deleted show deleted files in the output
-m, --modified show modified files in the output
-o, --others show other files in the output
-i, --ignored show ignored files in the output
-s, --stage show staged contents' object name in the output
-k, --killed show files on the filesystem that need to be removed
--directory show 'other' directories' names only
--eol show line endings of files
--empty-directory don't show empty directories
-u, --unmerged show unmerged files in the output
--resolve-undo show resolve-undo information
-x, --exclude <pattern>
skip files matching pattern
-X, --exclude-from <file>
read exclude patterns from <file>
--exclude-per-directory <file>
read additional per-directory exclude patterns in <file>
--exclude-standard add the standard git exclusions
--full-name make the output relative to the project top directory
--recurse-submodules recurse through submodules
--error-unmatch if any <file> is not in the index, treat this as an error
--with-tree <tree-ish>
pretend that paths removed since <tree-ish> are still present
--abbrev[=<n>] use <n> digits to display object names
--debug show debugging data
--deduplicate suppress duplicate entries
--sparse show sparse directories in the presence of a sparse index
--format <format> format to use for the output
ok 3 - usage: --format is incompatible with -k
expecting success of 3013.4 'usage: --format is incompatible with -t':
test_expect_code 129 git ls-files --format="%(objectname)" $flag
fatal: --format cannot be used with -s, -o, -k, -t, --resolve-undo, --deduplicate, --eol
usage: git ls-files [<options>] [<file>...]
-z separate paths with the NUL character
-t identify the file status with tags
-v use lowercase letters for 'assume unchanged' files
-f use lowercase letters for 'fsmonitor clean' files
-c, --cached show cached files in the output (default)
-d, --deleted show deleted files in the output
-m, --modified show modified files in the output
-o, --others show other files in the output
-i, --ignored show ignored files in the output
-s, --stage show staged contents' object name in the output
-k, --killed show files on the filesystem that need to be removed
--directory show 'other' directories' names only
--eol show line endings of files
--empty-directory don't show empty directories
-u, --unmerged show unmerged files in the output
--resolve-undo show resolve-undo information
-x, --exclude <pattern>
skip files matching pattern
-X, --exclude-from <file>
read exclude patterns from <file>
--exclude-per-directory <file>
read additional per-directory exclude patterns in <file>
--exclude-standard add the standard git exclusions
--full-name make the output relative to the project top directory
--recurse-submodules recurse through submodules
--error-unmatch if any <file> is not in the index, treat this as an error
--with-tree <tree-ish>
pretend that paths removed since <tree-ish> are still present
--abbrev[=<n>] use <n> digits to display object names
--debug show debugging data
--deduplicate suppress duplicate entries
--sparse show sparse directories in the presence of a sparse index
--format <format> format to use for the output
ok 4 - usage: --format is incompatible with -t
expecting success of 3013.5 'usage: --format is incompatible with --resolve-undo':
test_expect_code 129 git ls-files --format="%(objectname)" $flag
fatal: --format cannot be used with -s, -o, -k, -t, --resolve-undo, --deduplicate, --eol
usage: git ls-files [<options>] [<file>...]
-z separate paths with the NUL character
-t identify the file status with tags
-v use lowercase letters for 'assume unchanged' files
-f use lowercase letters for 'fsmonitor clean' files
-c, --cached show cached files in the output (default)
-d, --deleted show deleted files in the output
-m, --modified show modified files in the output
-o, --others show other files in the output
-i, --ignored show ignored files in the output
-s, --stage show staged contents' object name in the output
-k, --killed show files on the filesystem that need to be removed
--directory show 'other' directories' names only
--eol show line endings of files
--empty-directory don't show empty directories
-u, --unmerged show unmerged files in the output
--resolve-undo show resolve-undo information
-x, --exclude <pattern>
skip files matching pattern
-X, --exclude-from <file>
read exclude patterns from <file>
--exclude-per-directory <file>
read additional per-directory exclude patterns in <file>
--exclude-standard add the standard git exclusions
--full-name make the output relative to the project top directory
--recurse-submodules recurse through submodules
--error-unmatch if any <file> is not in the index, treat this as an error
--with-tree <tree-ish>
pretend that paths removed since <tree-ish> are still present
--abbrev[=<n>] use <n> digits to display object names
--debug show debugging data
--deduplicate suppress duplicate entries
--sparse show sparse directories in the presence of a sparse index
--format <format> format to use for the output
ok 5 - usage: --format is incompatible with --resolve-undo
expecting success of 3013.6 'usage: --format is incompatible with --deduplicate':
test_expect_code 129 git ls-files --format="%(objectname)" $flag
fatal: --format cannot be used with -s, -o, -k, -t, --resolve-undo, --deduplicate, --eol
usage: git ls-files [<options>] [<file>...]
-z separate paths with the NUL character
-t identify the file status with tags
-v use lowercase letters for 'assume unchanged' files
-f use lowercase letters for 'fsmonitor clean' files
-c, --cached show cached files in the output (default)
-d, --deleted show deleted files in the output
-m, --modified show modified files in the output
-o, --others show other files in the output
-i, --ignored show ignored files in the output
-s, --stage show staged contents' object name in the output
-k, --killed show files on the filesystem that need to be removed
--directory show 'other' directories' names only
--eol show line endings of files
--empty-directory don't show empty directories
-u, --unmerged show unmerged files in the output
--resolve-undo show resolve-undo information
-x, --exclude <pattern>
skip files matching pattern
-X, --exclude-from <file>
read exclude patterns from <file>
--exclude-per-directory <file>
read additional per-directory exclude patterns in <file>
--exclude-standard add the standard git exclusions
--full-name make the output relative to the project top directory
--recurse-submodules recurse through submodules
--error-unmatch if any <file> is not in the index, treat this as an error
--with-tree <tree-ish>
pretend that paths removed since <tree-ish> are still present
--abbrev[=<n>] use <n> digits to display object names
--debug show debugging data
--deduplicate suppress duplicate entries
--sparse show sparse directories in the presence of a sparse index
--format <format> format to use for the output
ok 6 - usage: --format is incompatible with --deduplicate
expecting success of 3013.7 'usage: --format is incompatible with --eol':
test_expect_code 129 git ls-files --format="%(objectname)" $flag
fatal: --format cannot be used with -s, -o, -k, -t, --resolve-undo, --deduplicate, --eol
usage: git ls-files [<options>] [<file>...]
-z separate paths with the NUL character
-t identify the file status with tags
-v use lowercase letters for 'assume unchanged' files
-f use lowercase letters for 'fsmonitor clean' files
-c, --cached show cached files in the output (default)
-d, --deleted show deleted files in the output
-m, --modified show modified files in the output
-o, --others show other files in the output
-i, --ignored show ignored files in the output
-s, --stage show staged contents' object name in the output
-k, --killed show files on the filesystem that need to be removed
--directory show 'other' directories' names only
--eol show line endings of files
--empty-directory don't show empty directories
-u, --unmerged show unmerged files in the output
--resolve-undo show resolve-undo information
-x, --exclude <pattern>
skip files matching pattern
-X, --exclude-from <file>
read exclude patterns from <file>
--exclude-per-directory <file>
read additional per-directory exclude patterns in <file>
--exclude-standard add the standard git exclusions
--full-name make the output relative to the project top directory
--recurse-submodules recurse through submodules
--error-unmatch if any <file> is not in the index, treat this as an error
--with-tree <tree-ish>
pretend that paths removed since <tree-ish> are still present
--abbrev[=<n>] use <n> digits to display object names
--debug show debugging data
--deduplicate suppress duplicate entries
--sparse show sparse directories in the presence of a sparse index
--format <format> format to use for the output
ok 7 - usage: --format is incompatible with --eol
expecting success of 3013.8 'setup':
printf "LINEONE\nLINETWO\nLINETHREE\n" >o1.txt &&
printf "LINEONE\r\nLINETWO\r\nLINETHREE\r\n" >o2.txt &&
printf "LINEONE\r\nLINETWO\nLINETHREE\n" >o3.txt &&
git add o?.txt &&
oid=$(git hash-object o1.txt) &&
git update-index --add --cacheinfo 120000 $oid o4.txt &&
git update-index --add --cacheinfo 160000 $oid o5.txt &&
git update-index --add --cacheinfo 100755 $oid o6.txt &&
git commit -m base
[master (root-commit) 8422806] base
Author: A U Thor <author@example.com>
6 files changed, 16 insertions(+)
create mode 100644 o1.txt
create mode 100644 o2.txt
create mode 100644 o3.txt
create mode 120000 o4.txt
create mode 160000 o5.txt
create mode 100755 o6.txt
ok 8 - setup
expecting success of 3013.9 'git ls-files --format objectmode v.s. -s':
git ls-files -s >files &&
cut -d" " -f1 files >expect &&
git ls-files --format="%(objectmode)" >actual &&
test_cmp expect actual
ok 9 - git ls-files --format objectmode v.s. -s
expecting success of 3013.10 'git ls-files --format objectname v.s. -s':
git ls-files -s >files &&
cut -d" " -f2 files >expect &&
git ls-files --format="%(objectname)" >actual &&
test_cmp expect actual
ok 10 - git ls-files --format objectname v.s. -s
expecting success of 3013.11 'git ls-files --format objecttype':
git ls-files --format="%(objectname)" o1.txt o4.txt o6.txt >objectname &&
git cat-file --batch-check="%(objecttype)" >expect <objectname &&
git ls-files --format="%(objecttype)" o1.txt o4.txt o6.txt >actual &&
test_cmp expect actual
ok 11 - git ls-files --format objecttype
expecting success of 3013.12 'git ls-files --format objectsize':
cat>expect <<-\EOF &&
26
29
27
26
-
26
EOF
git ls-files --format="%(objectsize)" >actual &&
test_cmp expect actual
ok 12 - git ls-files --format objectsize
expecting success of 3013.13 'git ls-files --format objectsize:padded':
cat>expect <<-\EOF &&
26
29
27
26
-
26
EOF
git ls-files --format="%(objectsize:padded)" >actual &&
test_cmp expect actual
ok 13 - git ls-files --format objectsize:padded
expecting success of 3013.14 'git ls-files --format v.s. --eol':
git ls-files --eol >tmp &&
sed -e "s/ / /g" -e "s/ */ /g" tmp >expect 2>err &&
test_must_be_empty err &&
git ls-files --format="i/%(eolinfo:index) w/%(eolinfo:worktree) attr/%(eolattr) %(path)" >actual 2>err &&
test_must_be_empty err &&
test_cmp expect actual
ok 14 - git ls-files --format v.s. --eol
expecting success of 3013.15 'git ls-files --format path v.s. -s':
git ls-files -s >files &&
cut -f2 files >expect &&
git ls-files --format="%(path)" >actual &&
test_cmp expect actual
ok 15 - git ls-files --format path v.s. -s
expecting success of 3013.16 'git ls-files --format with relative path':
cat >expect <<-\EOF &&
../o1.txt
../o2.txt
../o3.txt
../o4.txt
../o5.txt
../o6.txt
EOF
mkdir sub &&
cd sub &&
git ls-files --format="%(path)" ":/" >../actual &&
cd .. &&
test_cmp expect actual
ok 16 - git ls-files --format with relative path
expecting success of 3013.17 'git ls-files --format with -m':
echo change >o1.txt &&
cat >expect <<-\EOF &&
o1.txt
o4.txt
o5.txt
o6.txt
EOF
git ls-files --format="%(path)" -m >actual &&
test_cmp expect actual
ok 17 - git ls-files --format with -m
expecting success of 3013.18 'git ls-files --format with -d':
echo o7 >o7.txt &&
git add o7.txt &&
rm o7.txt &&
cat >expect <<-\EOF &&
o4.txt
o5.txt
o6.txt
o7.txt
EOF
git ls-files --format="%(path)" -d >actual &&
test_cmp expect actual
ok 18 - git ls-files --format with -d
expecting success of 3013.19 'git ls-files --format v.s -s':
git ls-files --stage >expect &&
git ls-files --format="%(objectmode) %(objectname) %(stage)%x09%(path)" >actual &&
test_cmp expect actual
ok 19 - git ls-files --format v.s -s
expecting success of 3013.20 'git ls-files --format with --debug':
git ls-files --debug >expect &&
git ls-files --format="%(path)" --debug >actual &&
test_cmp expect actual
ok 20 - git ls-files --format with --debug
# passed all 20 test(s)
1..20
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3007-ls-files-recurse-submodules.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3007-ls-files-recurse-submodules/.git/
expecting success of 3007.1 'setup directory structure and submodules':
echo a >a &&
mkdir b &&
echo b >b/b &&
git add a b &&
git commit -m "add a and b" &&
git init submodule &&
echo c >submodule/c &&
git -C submodule add c &&
git -C submodule commit -m "add c" &&
git submodule add ./submodule &&
git commit -m "added submodule"
[master (root-commit) f320cab] add a and b
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 a
create mode 100644 b/b
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3007-ls-files-recurse-submodules/submodule/.git/
[master (root-commit) 3281629] add c
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 c
Adding existing repo at 'submodule' to the index
[master 14616f7] added submodule
Author: A U Thor <author@example.com>
2 files changed, 4 insertions(+)
create mode 100644 .gitmodules
create mode 160000 submodule
ok 1 - setup directory structure and submodules
expecting success of 3007.2 'ls-files correctly outputs files in submodule':
cat >expect <<-\EOF &&
.gitmodules
a
b/b
submodule/c
EOF
git ls-files --recurse-submodules >actual &&
test_cmp expect actual
ok 2 - ls-files correctly outputs files in submodule
expecting success of 3007.3 '--stage':
GITMODULES_HASH=$(git rev-parse HEAD:.gitmodules) &&
A_HASH=$(git rev-parse HEAD:a) &&
B_HASH=$(git rev-parse HEAD:b/b) &&
C_HASH=$(git -C submodule rev-parse HEAD:c) &&
cat >expect <<-EOF &&
100644 $GITMODULES_HASH 0 .gitmodules
100644 $A_HASH 0 a
100644 $B_HASH 0 b/b
100644 $C_HASH 0 submodule/c
EOF
git ls-files --stage --recurse-submodules >actual &&
test_cmp expect actual
ok 3 - --stage
expecting success of 3007.4 'ls-files correctly outputs files in submodule with -z':
lf_to_nul >expect <<-\EOF &&
.gitmodules
a
b/b
submodule/c
EOF
git ls-files --recurse-submodules -z >actual &&
test_cmp expect actual
ok 4 - ls-files correctly outputs files in submodule with -z
expecting success of 3007.5 'ls-files does not output files not added to a repo':
cat >expect <<-\EOF &&
.gitmodules
a
b/b
submodule/c
EOF
echo a >not_added &&
echo b >b/not_added &&
echo c >submodule/not_added &&
git ls-files --recurse-submodules >actual &&
test_cmp expect actual
ok 5 - ls-files does not output files not added to a repo
expecting success of 3007.6 'ls-files recurses more than 1 level':
cat >expect <<-\EOF &&
.gitmodules
a
b/b
submodule/.gitmodules
submodule/c
submodule/subsub/d
EOF
git init submodule/subsub &&
echo d >submodule/subsub/d &&
git -C submodule/subsub add d &&
git -C submodule/subsub commit -m "add d" &&
git -C submodule submodule add ./subsub &&
git -C submodule commit -m "added subsub" &&
git submodule absorbgitdirs &&
git ls-files --recurse-submodules >actual &&
test_cmp expect actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3007-ls-files-recurse-submodules/submodule/subsub/.git/
[master (root-commit) 0cb03c9] add d
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 d
Adding existing repo at 'subsub' to the index
[master 83d4bc1] added subsub
Author: A U Thor <author@example.com>
2 files changed, 4 insertions(+)
create mode 100644 .gitmodules
create mode 160000 subsub
Migrating git directory of 'submodule' from
'/<<PKGBUILDDIR>>/t/trash directory.t3007-ls-files-recurse-submodules/submodule/.git' to
'/<<PKGBUILDDIR>>/t/trash directory.t3007-ls-files-recurse-submodules/.git/modules/submodule'
Migrating git directory of 'submodule/subsub' from
'/<<PKGBUILDDIR>>/t/trash directory.t3007-ls-files-recurse-submodules/submodule/subsub/.git' to
'/<<PKGBUILDDIR>>/t/trash directory.t3007-ls-files-recurse-submodules/.git/modules/submodule/modules/subsub'
ok 6 - ls-files recurses more than 1 level
expecting success of 3007.7 'ls-files works with GIT_DIR':
cat >expect <<-\EOF &&
.gitmodules
c
subsub/d
EOF
git --git-dir=submodule/.git ls-files --recurse-submodules >actual &&
test_cmp expect actual
ok 7 - ls-files works with GIT_DIR
expecting success of 3007.8 '--recurse-submodules and pathspecs setup':
echo e >submodule/subsub/e.txt &&
git -C submodule/subsub add e.txt &&
git -C submodule/subsub commit -m "adding e.txt" &&
echo f >submodule/f.TXT &&
echo g >submodule/g.txt &&
git -C submodule add f.TXT g.txt &&
git -C submodule commit -m "add f and g" &&
echo h >h.txt &&
mkdir sib &&
echo sib >sib/file &&
git add h.txt sib/file &&
git commit -m "add h and sib/file" &&
git init sub &&
echo sub >sub/file &&
git -C sub add file &&
git -C sub commit -m "add file" &&
git submodule add ./sub &&
git commit -m "added sub" &&
cat >expect <<-\EOF &&
.gitmodules
a
b/b
h.txt
sib/file
sub/file
submodule/.gitmodules
submodule/c
submodule/f.TXT
submodule/g.txt
submodule/subsub/d
submodule/subsub/e.txt
EOF
git ls-files --recurse-submodules >actual &&
test_cmp expect actual &&
git ls-files --recurse-submodules "*" >actual &&
test_cmp expect actual
[master 562fffb] adding e.txt
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 e.txt
[master f284b88] add f and g
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 f.TXT
create mode 100644 g.txt
[master ad13f14] add h and sib/file
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 h.txt
create mode 100644 sib/file
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3007-ls-files-recurse-submodules/sub/.git/
[master (root-commit) e443189] add file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
Adding existing repo at 'sub' to the index
[master 4a68fc6] added sub
Author: A U Thor <author@example.com>
2 files changed, 4 insertions(+)
create mode 160000 sub
ok 8 - --recurse-submodules and pathspecs setup
expecting success of 3007.9 'inactive submodule':
test_when_finished "git config --bool submodule.submodule.active true" &&
test_when_finished "git -C submodule config --bool submodule.subsub.active true" &&
git config --bool submodule.submodule.active "false" &&
cat >expect <<-\EOF &&
.gitmodules
a
b/b
h.txt
sib/file
sub/file
submodule
EOF
git ls-files --recurse-submodules >actual &&
test_cmp expect actual &&
git config --bool submodule.submodule.active "true" &&
git -C submodule config --bool submodule.subsub.active "false" &&
cat >expect <<-\EOF &&
.gitmodules
a
b/b
h.txt
sib/file
sub/file
submodule/.gitmodules
submodule/c
submodule/f.TXT
submodule/g.txt
submodule/subsub
EOF
git ls-files --recurse-submodules >actual &&
test_cmp expect actual
ok 9 - inactive submodule
expecting success of 3007.10 '--recurse-submodules and pathspecs':
cat >expect <<-\EOF &&
h.txt
submodule/g.txt
submodule/subsub/e.txt
EOF
git ls-files --recurse-submodules "*.txt" >actual &&
test_cmp expect actual
ok 10 - --recurse-submodules and pathspecs
expecting success of 3007.11 '--recurse-submodules and pathspecs':
cat >expect <<-\EOF &&
h.txt
submodule/f.TXT
submodule/g.txt
submodule/subsub/e.txt
EOF
git ls-files --recurse-submodules ":(icase)*.txt" >actual &&
test_cmp expect actual
ok 11 - --recurse-submodules and pathspecs
expecting success of 3007.12 '--recurse-submodules and pathspecs':
cat >expect <<-\EOF &&
h.txt
submodule/f.TXT
submodule/g.txt
EOF
git ls-files --recurse-submodules ":(icase)*.txt" ":(exclude)submodule/subsub/*" >actual &&
test_cmp expect actual
ok 12 - --recurse-submodules and pathspecs
expecting success of 3007.13 '--recurse-submodules and pathspecs':
cat >expect <<-\EOF &&
sub/file
EOF
git ls-files --recurse-submodules "sub" >actual &&
test_cmp expect actual &&
git ls-files --recurse-submodules "sub/" >actual &&
test_cmp expect actual &&
git ls-files --recurse-submodules "sub/file" >actual &&
test_cmp expect actual &&
git ls-files --recurse-submodules "su*/file" >actual &&
test_cmp expect actual &&
git ls-files --recurse-submodules "su?/file" >actual &&
test_cmp expect actual
ok 13 - --recurse-submodules and pathspecs
expecting success of 3007.14 '--recurse-submodules and pathspecs':
cat >expect <<-\EOF &&
sib/file
sub/file
EOF
git ls-files --recurse-submodules "s??/file" >actual &&
test_cmp expect actual &&
git ls-files --recurse-submodules "s???file" >actual &&
test_cmp expect actual &&
git ls-files --recurse-submodules "s*file" >actual &&
test_cmp expect actual
ok 14 - --recurse-submodules and pathspecs
expecting success of 3007.15 '--recurse-submodules and relative paths':
# From subdir
cat >expect <<-\EOF &&
b
EOF
git -C b ls-files --recurse-submodules >actual &&
test_cmp expect actual &&
# Relative path to top
cat >expect <<-\EOF &&
../.gitmodules
../a
b
../h.txt
../sib/file
../sub/file
../submodule/.gitmodules
../submodule/c
../submodule/f.TXT
../submodule/g.txt
../submodule/subsub/d
../submodule/subsub/e.txt
EOF
git -C b ls-files --recurse-submodules -- .. >actual &&
test_cmp expect actual &&
# Relative path to submodule
cat >expect <<-\EOF &&
../submodule/.gitmodules
../submodule/c
../submodule/f.TXT
../submodule/g.txt
../submodule/subsub/d
../submodule/subsub/e.txt
EOF
git -C b ls-files --recurse-submodules -- ../submodule >actual &&
test_cmp expect actual
ok 15 - --recurse-submodules and relative paths
expecting success of 3007.16 '--recurse-submodules does not support --error-unmatch':
test_must_fail git ls-files --recurse-submodules --error-unmatch 2>actual &&
test_i18ngrep "does not support --error-unmatch" actual
fatal: ls-files --recurse-submodules does not support --error-unmatch
ok 16 - --recurse-submodules does not support --error-unmatch
expecting success of 3007.17 '--recurse-submodules parses submodule repo config':
test_config -C submodule index.sparse "invalid non-boolean value" &&
test_must_fail git ls-files --recurse-submodules 2>err &&
grep "bad boolean config value" err
.gitmodules
a
b/b
h.txt
sib/file
sub/file
fatal: bad boolean config value 'invalid non-boolean value' for 'index.sparse'
ok 17 - --recurse-submodules parses submodule repo config
expecting success of 3007.18 '--recurse-submodules parses submodule worktree config':
test_config -C submodule extensions.worktreeConfig true &&
test_config -C submodule --worktree index.sparse "invalid non-boolean value" &&
test_must_fail git ls-files --recurse-submodules 2>err &&
grep "bad boolean config value" err
.gitmodules
a
b/b
h.txt
sib/file
sub/file
fatal: bad boolean config value 'invalid non-boolean value' for 'index.sparse'
ok 18 - --recurse-submodules parses submodule worktree config
expecting success of 3007.19 '--recurse-submodules submodules ignore super project worktreeConfig extension':
# Enable worktree config in both super project & submodule, set an
# invalid config in the submodule worktree config
test_config extensions.worktreeConfig true &&
test_config -C submodule extensions.worktreeConfig true &&
test_config -C submodule --worktree index.sparse "invalid non-boolean value" &&
# Now, disable the worktree config in the submodule. Note that we need
# to manually re-enable extensions.worktreeConfig when the test is
# finished, otherwise the test_unconfig of index.sparse will not work.
test_unconfig -C submodule extensions.worktreeConfig &&
test_when_finished "git -C submodule config extensions.worktreeConfig true" &&
# With extensions.worktreeConfig disabled in the submodule, the invalid
# worktree config is not picked up.
git ls-files --recurse-submodules 2>err &&
! grep "bad boolean config value" err
.gitmodules
a
b/b
h.txt
sib/file
sub/file
submodule/.gitmodules
submodule/c
submodule/f.TXT
submodule/g.txt
submodule/subsub/d
submodule/subsub/e.txt
ok 19 - --recurse-submodules submodules ignore super project worktreeConfig extension
expecting success of 3007.20 '--recurse-submodules and --deleted are incompatible':
test_must_fail git ls-files --recurse-submodules --deleted 2>actual &&
test_i18ngrep 'unsupported mode' actual
fatal: ls-files --recurse-submodules unsupported mode
ok 20 - --recurse-submodules and --deleted are incompatible
expecting success of 3007.21 '--recurse-submodules and --modified are incompatible':
test_must_fail git ls-files --recurse-submodules --modified 2>actual &&
test_i18ngrep 'unsupported mode' actual
fatal: ls-files --recurse-submodules unsupported mode
ok 21 - --recurse-submodules and --modified are incompatible
expecting success of 3007.22 '--recurse-submodules and --others are incompatible':
test_must_fail git ls-files --recurse-submodules --others 2>actual &&
test_i18ngrep 'unsupported mode' actual
fatal: ls-files --recurse-submodules unsupported mode
ok 22 - --recurse-submodules and --others are incompatible
expecting success of 3007.23 '--recurse-submodules and --killed are incompatible':
test_must_fail git ls-files --recurse-submodules --killed 2>actual &&
test_i18ngrep 'unsupported mode' actual
fatal: ls-files --recurse-submodules unsupported mode
ok 23 - --recurse-submodules and --killed are incompatible
expecting success of 3007.24 '--recurse-submodules and --unmerged are incompatible':
test_must_fail git ls-files --recurse-submodules --unmerged 2>actual &&
test_i18ngrep 'unsupported mode' actual
fatal: ls-files --recurse-submodules unsupported mode
ok 24 - --recurse-submodules and --unmerged are incompatible
# passed all 24 test(s)
1..24
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3060-ls-files-with-tree.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3060-ls-files-with-tree/.git/
expecting success of 3060.1 'setup':
# The bug we are exercising requires a fair number of entries
# in a sub-directory so that add_index_entry will trigger a
# realloc.
echo file >expected &&
mkdir sub &&
for n in 0 1 2 3 4 5
do
for m in 0 1 2 3 4 5 6 7 8 9
do
num=00$n$m &&
>sub/file-$num &&
echo file-$num >>expected ||
return 1
done
done &&
git add . &&
git commit -m "add a bunch of files" &&
# We remove them all so that we will have something to add
# back with --with-tree and so that we will definitely be
# under the realloc size to trigger the bug.
rm -rf sub &&
git commit -a -m "remove them all" &&
# The bug also requires some entry before our directory so that
# prune_index will modify the_repository->index.cache
mkdir a_directory_that_sorts_before_sub &&
>a_directory_that_sorts_before_sub/file &&
mkdir sub &&
>sub/file &&
git add .
[master (root-commit) 853a03d] add a bunch of files
Author: A U Thor <author@example.com>
61 files changed, 61 insertions(+)
create mode 100644 expected
create mode 100644 sub/file-0000
create mode 100644 sub/file-0001
create mode 100644 sub/file-0002
create mode 100644 sub/file-0003
create mode 100644 sub/file-0004
create mode 100644 sub/file-0005
create mode 100644 sub/file-0006
create mode 100644 sub/file-0007
create mode 100644 sub/file-0008
create mode 100644 sub/file-0009
create mode 100644 sub/file-0010
create mode 100644 sub/file-0011
create mode 100644 sub/file-0012
create mode 100644 sub/file-0013
create mode 100644 sub/file-0014
create mode 100644 sub/file-0015
create mode 100644 sub/file-0016
create mode 100644 sub/file-0017
create mode 100644 sub/file-0018
create mode 100644 sub/file-0019
create mode 100644 sub/file-0020
create mode 100644 sub/file-0021
create mode 100644 sub/file-0022
create mode 100644 sub/file-0023
create mode 100644 sub/file-0024
create mode 100644 sub/file-0025
create mode 100644 sub/file-0026
create mode 100644 sub/file-0027
create mode 100644 sub/file-0028
create mode 100644 sub/file-0029
create mode 100644 sub/file-0030
create mode 100644 sub/file-0031
create mode 100644 sub/file-0032
create mode 100644 sub/file-0033
create mode 100644 sub/file-0034
create mode 100644 sub/file-0035
create mode 100644 sub/file-0036
create mode 100644 sub/file-0037
create mode 100644 sub/file-0038
create mode 100644 sub/file-0039
create mode 100644 sub/file-0040
create mode 100644 sub/file-0041
create mode 100644 sub/file-0042
create mode 100644 sub/file-0043
create mode 100644 sub/file-0044
create mode 100644 sub/file-0045
create mode 100644 sub/file-0046
create mode 100644 sub/file-0047
create mode 100644 sub/file-0048
create mode 100644 sub/file-0049
create mode 100644 sub/file-0050
create mode 100644 sub/file-0051
create mode 100644 sub/file-0052
create mode 100644 sub/file-0053
create mode 100644 sub/file-0054
create mode 100644 sub/file-0055
create mode 100644 sub/file-0056
create mode 100644 sub/file-0057
create mode 100644 sub/file-0058
create mode 100644 sub/file-0059
[master 80af29e] remove them all
Author: A U Thor <author@example.com>
60 files changed, 0 insertions(+), 0 deletions(-)
delete mode 100644 sub/file-0000
delete mode 100644 sub/file-0001
delete mode 100644 sub/file-0002
delete mode 100644 sub/file-0003
delete mode 100644 sub/file-0004
delete mode 100644 sub/file-0005
delete mode 100644 sub/file-0006
delete mode 100644 sub/file-0007
delete mode 100644 sub/file-0008
delete mode 100644 sub/file-0009
delete mode 100644 sub/file-0010
delete mode 100644 sub/file-0011
delete mode 100644 sub/file-0012
delete mode 100644 sub/file-0013
delete mode 100644 sub/file-0014
delete mode 100644 sub/file-0015
delete mode 100644 sub/file-0016
delete mode 100644 sub/file-0017
delete mode 100644 sub/file-0018
delete mode 100644 sub/file-0019
delete mode 100644 sub/file-0020
delete mode 100644 sub/file-0021
delete mode 100644 sub/file-0022
delete mode 100644 sub/file-0023
delete mode 100644 sub/file-0024
delete mode 100644 sub/file-0025
delete mode 100644 sub/file-0026
delete mode 100644 sub/file-0027
delete mode 100644 sub/file-0028
delete mode 100644 sub/file-0029
delete mode 100644 sub/file-0030
delete mode 100644 sub/file-0031
delete mode 100644 sub/file-0032
delete mode 100644 sub/file-0033
delete mode 100644 sub/file-0034
delete mode 100644 sub/file-0035
delete mode 100644 sub/file-0036
delete mode 100644 sub/file-0037
delete mode 100644 sub/file-0038
delete mode 100644 sub/file-0039
delete mode 100644 sub/file-0040
delete mode 100644 sub/file-0041
delete mode 100644 sub/file-0042
delete mode 100644 sub/file-0043
delete mode 100644 sub/file-0044
delete mode 100644 sub/file-0045
delete mode 100644 sub/file-0046
delete mode 100644 sub/file-0047
delete mode 100644 sub/file-0048
delete mode 100644 sub/file-0049
delete mode 100644 sub/file-0050
delete mode 100644 sub/file-0051
delete mode 100644 sub/file-0052
delete mode 100644 sub/file-0053
delete mode 100644 sub/file-0054
delete mode 100644 sub/file-0055
delete mode 100644 sub/file-0056
delete mode 100644 sub/file-0057
delete mode 100644 sub/file-0058
delete mode 100644 sub/file-0059
ok 1 - setup
expecting success of 3060.2 'usage':
test_expect_code 128 git ls-files --with-tree=HEAD -u &&
test_expect_code 128 git ls-files --with-tree=HEAD -s &&
test_expect_code 128 git ls-files --recurse-submodules --with-tree=HEAD
fatal: options 'ls-files --with-tree' and '-s/-u' cannot be used together
fatal: options 'ls-files --with-tree' and '-s/-u' cannot be used together
fatal: ls-files --recurse-submodules unsupported mode
ok 2 - usage
expecting success of 3060.3 'git ls-files --with-tree should succeed from subdir':
# We have to run from a sub-directory to trigger prune_index
# Then we finally get to run our --with-tree test
(
cd sub &&
git ls-files --with-tree=HEAD~1 >../output
)
ok 3 - git ls-files --with-tree should succeed from subdir
expecting success of 3060.4 'git ls-files --with-tree should add entries from named tree.':
test_cmp expected output
ok 4 - git ls-files --with-tree should add entries from named tree.
expecting success of 3060.5 'no duplicates in --with-tree output':
git ls-files --with-tree=HEAD >actual &&
sort -u actual >expected &&
test_cmp expected actual
ok 5 - no duplicates in --with-tree output
expecting success of 3060.6 'setup: output in a conflict':
test_create_repo conflict &&
test_commit -C conflict BASE file &&
test_commit -C conflict A file foo &&
git -C conflict reset --hard BASE &&
test_commit -C conflict B file bar
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3060-ls-files-with-tree/conflict/.git/
[master (root-commit) 7955b49] BASE
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
[master 67d38f3] A
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
HEAD is now at 7955b49 BASE
[master f8636b1] B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 6 - setup: output in a conflict
expecting success of 3060.7 'output in a conflict':
test_must_fail git -C conflict merge A B &&
cat >expected <<-\EOF &&
file
file
file
file
EOF
git -C conflict ls-files --with-tree=HEAD >actual &&
test_cmp expected actual
Auto-merging file
CONFLICT (content): Merge conflict in file
Automatic merge failed; fix conflicts and then commit the result.
ok 7 - output in a conflict
expecting success of 3060.8 'output with removed .git/index':
cat >expected <<-\EOF &&
file
EOF
rm conflict/.git/index &&
git -C conflict ls-files --with-tree=HEAD >actual &&
test_cmp expected actual
ok 8 - output with removed .git/index
# passed all 8 test(s)
1..8
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3050-subprojects-fetch.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3050-subprojects-fetch/.git/
expecting success of 3050.1 'setup':
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 /<<PKGBUILDDIR>>/t/trash directory.t3050-subprojects-fetch/sub/.git/
[master (root-commit) 4c0c877] subproject commit #1
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 subfile
warning: adding embedded git repository: sub
hint: You've added another git repository inside your current repository.
hint: Clones of the outer repository will not contain the contents of
hint: the embedded repository and will not know how to obtain it.
hint: If you meant to add a submodule, use:
hint:
hint: git submodule add <url> sub
hint:
hint: If you added this path by mistake, you can remove it from the
hint: index with:
hint:
hint: git rm --cached sub
hint:
hint: See "git help submodule" for more information.
[master (root-commit) 1226c2e] superproject commit #1
Author: A U Thor <author@example.com>
2 files changed, 1 insertion(+)
create mode 100644 mainfile
create mode 160000 sub
ok 1 - setup
expecting success of 3050.2 'clone':
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
) &&
test_cmp expected actual
Cloning into 'cloned'...
ok 2 - clone
expecting success of 3050.3 'advance':
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"
[master 1548ecd] superproject commit #2
Author: A U Thor <author@example.com>
3 files changed, 1 insertion(+), 1 deletion(-)
delete mode 160000 sub
create mode 100644 sub/subfile
ok 3 - advance
expecting success of 3050.4 'fetch':
(git rev-parse HEAD && git ls-files -s) >expected &&
(
cd cloned &&
git pull &&
(git rev-parse HEAD && git ls-files -s) >../actual
) &&
test_cmp expected actual
From file:///<<PKGBUILDDIR>>/t/trash directory.t3050-subprojects-fetch/
1226c2e..1548ecd master -> origin/master
Updating 1226c2e..1548ecd
Fast-forward
mainfile | 1 +
sub | 1 -
sub/subfile | 0
3 files changed, 1 insertion(+), 1 deletion(-)
delete mode 160000 sub
create mode 100644 sub/subfile
ok 4 - fetch
# passed all 4 test(s)
1..4
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3040-subprojects-basic.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3040-subprojects-basic/.git/
expecting success of 3040.1 'setup: create superproject':
: >Makefile &&
git add Makefile &&
git commit -m "Superproject created"
[master (root-commit) 0075abc] Superproject created
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 Makefile
ok 1 - setup: create superproject
expecting success of 3040.2 'setup: create subprojects':
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_PRINT_SHA1_ELLIPSIS="yes" git diff-tree --abbrev=5 HEAD^ HEAD |cut -d" " -f-3,5- >current &&
git branch save HEAD &&
cat >expected <<-\EOF &&
:000000 160000 00000... A sub1
:000000 160000 00000... A sub2
EOF
test_cmp expected current
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3040-subprojects-basic/sub1/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3040-subprojects-basic/sub2/.git/
warning: adding embedded git repository: sub2
hint: You've added another git repository inside your current repository.
hint: Clones of the outer repository will not contain the contents of
hint: the embedded repository and will not know how to obtain it.
hint: If you meant to add a submodule, use:
hint:
hint: git submodule add <url> sub2
hint:
hint: If you added this path by mistake, you can remove it from the
hint: index with:
hint:
hint: git rm --cached sub2
hint:
hint: See "git help submodule" for more information.
ok 2 - setup: create subprojects
expecting success of 3040.3 'check if fsck ignores the subprojects':
git fsck --full
ok 3 - check if fsck ignores the subprojects
expecting success of 3040.4 'check if commit in a subproject detected':
( cd sub1 &&
echo "all:" >>Makefile &&
echo " true" >>Makefile &&
git commit -q -a -m "make all" ) &&
test_expect_code 1 git diff-files --exit-code
:160000 160000 1220b9f3ace6404f5c782bba5e262aaaf38310fb 0000000000000000000000000000000000000000 M sub1
ok 4 - check if commit in a subproject detected
expecting success of 3040.5 'check if a changed subproject HEAD can be committed':
git commit -q -a -m "sub1 changed" &&
test_expect_code 1 git diff-tree --exit-code HEAD^ HEAD
:160000 160000 1220b9f3ace6404f5c782bba5e262aaaf38310fb 487e23047a2a8ed2c84b1478b3e52375e3ae3334 M sub1
ok 5 - check if a changed subproject HEAD can be committed
expecting success of 3040.6 'check if diff-index works for subproject elements':
test_expect_code 1 git diff-index --exit-code --cached save -- sub1
:160000 160000 1220b9f3ace6404f5c782bba5e262aaaf38310fb 487e23047a2a8ed2c84b1478b3e52375e3ae3334 M sub1
ok 6 - check if diff-index works for subproject elements
expecting success of 3040.7 'check if diff-tree works for subproject elements':
test_expect_code 1 git diff-tree --exit-code HEAD^ HEAD -- sub1
:160000 160000 1220b9f3ace6404f5c782bba5e262aaaf38310fb 487e23047a2a8ed2c84b1478b3e52375e3ae3334 M sub1
ok 7 - check if diff-tree works for subproject elements
expecting success of 3040.8 'check if git diff works for subproject elements':
test_expect_code 1 git diff --exit-code HEAD^ HEAD
diff --git a/sub1 b/sub1
index 1220b9f..487e230 160000
--- a/sub1
+++ b/sub1
@@ -1 +1 @@
-Subproject commit 1220b9f3ace6404f5c782bba5e262aaaf38310fb
+Subproject commit 487e23047a2a8ed2c84b1478b3e52375e3ae3334
ok 8 - check if git diff works for subproject elements
expecting success of 3040.9 'check if clone works':
git ls-files -s >expected &&
git clone -l -s . cloned &&
( cd cloned && git ls-files -s ) >current &&
test_cmp expected current
Cloning into 'cloned'...
done.
ok 9 - check if clone works
expecting success of 3040.10 'removing and adding subproject':
git update-index --force-remove -- sub2 &&
mv sub2 sub3 &&
git add sub3 &&
git commit -q -m "renaming a subproject" &&
test_expect_code 1 git diff -M --name-status --exit-code HEAD^ HEAD
warning: adding embedded git repository: sub3
hint: You've added another git repository inside your current repository.
hint: Clones of the outer repository will not contain the contents of
hint: the embedded repository and will not know how to obtain it.
hint: If you meant to add a submodule, use:
hint:
hint: git submodule add <url> sub3
hint:
hint: If you added this path by mistake, you can remove it from the
hint: index with:
hint:
hint: git rm --cached sub3
hint:
hint: See "git help submodule" for more information.
R100 sub2 sub3
ok 10 - removing and adding subproject
expecting success of 3040.11 'checkout in superproject':
git checkout save &&
git diff-index --exit-code --raw --cached save -- sub1
warning: unable to rmdir 'sub3': Directory not empty
Switched to branch 'save'
M sub1
ok 11 - checkout in superproject
# passed all 11 test(s)
1..11
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3100-ls-tree-restrict.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3100-ls-tree-restrict/.git/
expecting success of 3100.1 'setup': mkdir path2 path2/baz &&
echo Hi >path0 &&
test_ln_s_add path0 path1 &&
test_ln_s_add ../path1 path2/bazbo &&
echo Lo >path2/foo &&
echo Mi >path2/baz/b &&
find path? \( -type f -o -type l \) -print |
xargs git update-index --add &&
tree=$(git write-tree) &&
echo $tree
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
a384d4f8dd786f29d6da4705dee4c2c0bc6b5049
ok 1 - setup
expecting success of 3100.2 'ls-tree plain': git ls-tree $tree >current &&
cat >expected <<\EOF &&
100644 blob X path0
120000 blob X path1
040000 tree X path2
EOF
test_output
ok 2 - ls-tree plain
expecting success of 3100.3 'ls-tree recursive': git ls-tree -r $tree >current &&
cat >expected <<\EOF &&
100644 blob X path0
120000 blob X path1
100644 blob X path2/baz/b
120000 blob X path2/bazbo
100644 blob X path2/foo
EOF
test_output
ok 3 - ls-tree recursive
expecting success of 3100.4 'ls-tree recursive with -t': git ls-tree -r -t $tree >current &&
cat >expected <<\EOF &&
100644 blob X path0
120000 blob X path1
040000 tree X path2
040000 tree X path2/baz
100644 blob X path2/baz/b
120000 blob X path2/bazbo
100644 blob X path2/foo
EOF
test_output
ok 4 - ls-tree recursive with -t
expecting success of 3100.5 'ls-tree recursive with -d': git ls-tree -r -d $tree >current &&
cat >expected <<\EOF &&
040000 tree X path2
040000 tree X path2/baz
EOF
test_output
ok 5 - ls-tree recursive with -d
expecting success of 3100.6 'ls-tree filtered with path': git ls-tree $tree path >current &&
cat >expected <<\EOF &&
EOF
test_output
ok 6 - ls-tree filtered with path
expecting success of 3100.7 'ls-tree filtered with path1 path0': git ls-tree $tree path1 path0 >current &&
cat >expected <<\EOF &&
100644 blob X path0
120000 blob X path1
EOF
test_output
ok 7 - ls-tree filtered with path1 path0
expecting success of 3100.8 'ls-tree filtered with path0/': git ls-tree $tree path0/ >current &&
cat >expected <<\EOF &&
EOF
test_output
ok 8 - ls-tree filtered with path0/
expecting success of 3100.9 'ls-tree filtered with path2': git ls-tree $tree path2 >current &&
cat >expected <<\EOF &&
040000 tree X path2
EOF
test_output
ok 9 - ls-tree filtered with path2
expecting success of 3100.10 'ls-tree filtered with path2/': git ls-tree $tree path2/ >current &&
cat >expected <<\EOF &&
040000 tree X path2/baz
120000 blob X path2/bazbo
100644 blob X path2/foo
EOF
test_output
ok 10 - ls-tree filtered with path2/
expecting success of 3100.11 'ls-tree filtered with path2/baz': git ls-tree $tree path2/baz >current &&
cat >expected <<\EOF &&
040000 tree X path2/baz
EOF
test_output
ok 11 - ls-tree filtered with path2/baz
expecting success of 3100.12 'ls-tree filtered with path2/bak': git ls-tree $tree path2/bak >current &&
cat >expected <<\EOF &&
EOF
test_output
ok 12 - ls-tree filtered with path2/bak
expecting success of 3100.13 'ls-tree -t filtered with path2/bak': git ls-tree -t $tree path2/bak >current &&
cat >expected <<\EOF &&
040000 tree X path2
EOF
test_output
ok 13 - ls-tree -t filtered with path2/bak
expecting success of 3100.14 'ls-tree with one path a prefix of the other': git ls-tree $tree path2/baz path2/bazbo >current &&
cat >expected <<\EOF &&
040000 tree X path2/baz
120000 blob X path2/bazbo
EOF
test_output
ok 14 - ls-tree with one path a prefix of the other
# passed all 14 test(s)
1..14
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3101-ls-tree-dirname.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3101-ls-tree-dirname/.git/
expecting success of 3101.1 'setup':
echo 111 >1.txt &&
echo 222 >2.txt &&
mkdir path0 path0/a path0/a/b path0/a/b/c &&
echo 111 >path0/a/b/c/1.txt &&
mkdir path1 path1/b path1/b/c &&
echo 111 >path1/b/c/1.txt &&
mkdir path2 &&
echo 111 >path2/1.txt &&
mkdir path3 &&
echo 111 >path3/1.txt &&
echo 222 >path3/2.txt &&
find *.txt path* \( -type f -o -type l \) -print |
xargs git update-index --add &&
tree=$(git write-tree) &&
echo $tree
ef2ea4d6de8ec0863f430e4cad7468ce74f60aa7
ok 1 - setup
expecting success of 3101.2 'ls-tree plain':
git ls-tree $tree >current &&
cat >expected <<\EOF &&
100644 blob X 1.txt
100644 blob X 2.txt
040000 tree X path0
040000 tree X path1
040000 tree X path2
040000 tree X path3
EOF
test_output
ok 2 - ls-tree plain
expecting success of 3101.3 'ls-tree recursive':
git ls-tree -r $tree >current &&
cat >expected <<\EOF &&
100644 blob X 1.txt
100644 blob X 2.txt
100644 blob X path0/a/b/c/1.txt
100644 blob X path1/b/c/1.txt
100644 blob X path2/1.txt
100644 blob X path3/1.txt
100644 blob X path3/2.txt
EOF
test_output
ok 3 - ls-tree recursive
expecting success of 3101.4 'ls-tree filter 1.txt':
git ls-tree $tree 1.txt >current &&
cat >expected <<\EOF &&
100644 blob X 1.txt
EOF
test_output
ok 4 - ls-tree filter 1.txt
expecting success of 3101.5 'ls-tree filter path1/b/c/1.txt':
git ls-tree $tree path1/b/c/1.txt >current &&
cat >expected <<\EOF &&
100644 blob X path1/b/c/1.txt
EOF
test_output
ok 5 - ls-tree filter path1/b/c/1.txt
expecting success of 3101.6 'ls-tree filter all 1.txt files':
git ls-tree $tree 1.txt path0/a/b/c/1.txt \
path1/b/c/1.txt path2/1.txt path3/1.txt >current &&
cat >expected <<\EOF &&
100644 blob X 1.txt
100644 blob X path0/a/b/c/1.txt
100644 blob X path1/b/c/1.txt
100644 blob X path2/1.txt
100644 blob X path3/1.txt
EOF
test_output
ok 6 - ls-tree filter all 1.txt files
expecting success of 3101.7 'ls-tree filter directories':
git ls-tree $tree path3 path2 path0/a/b/c path1/b/c path0/a >current &&
cat >expected <<\EOF &&
040000 tree X path0/a/b/c
040000 tree X path1/b/c
040000 tree X path2
040000 tree X path3
EOF
test_output
ok 7 - ls-tree filter directories
expecting success of 3101.8 'ls-tree filter odd names':
git ls-tree $tree 1.txt ./1.txt .//1.txt \
path3/1.txt path3/./1.txt path3 path3// >current &&
cat >expected <<\EOF &&
100644 blob X 1.txt
100644 blob X path3/1.txt
100644 blob X path3/2.txt
EOF
test_output
ok 8 - ls-tree filter odd names
expecting success of 3101.9 'ls-tree filter missing files and extra slashes':
git ls-tree $tree 1.txt/ abc.txt \
path3//23.txt path3/2.txt/// >current &&
>expected &&
test_output
ok 9 - ls-tree filter missing files and extra slashes
expecting success of 3101.10 'ls-tree filter is leading path match':
git ls-tree $tree pa path3/a >current &&
>expected &&
test_output
ok 10 - ls-tree filter is leading path match
expecting success of 3101.11 'ls-tree --full-name':
(
cd path0 &&
git ls-tree --full-name $tree a
) >current &&
cat >expected <<\EOF &&
040000 tree X path0/a
EOF
test_output
ok 11 - ls-tree --full-name
expecting success of 3101.12 'ls-tree --no-full-name':
git -C path0 ls-tree --no-full-name $tree a >current &&
cat >expected <<-EOF &&
040000 tree X a
EOF
test_output
ok 12 - ls-tree --no-full-name
expecting success of 3101.13 'ls-tree --full-tree':
(
cd path1/b/c &&
git ls-tree --full-tree $tree
) >current &&
cat >expected <<\EOF &&
100644 blob X 1.txt
100644 blob X 2.txt
040000 tree X path0
040000 tree X path1
040000 tree X path2
040000 tree X path3
EOF
test_output
ok 13 - ls-tree --full-tree
expecting success of 3101.14 'ls-tree --full-tree -r':
(
cd path3/ &&
git ls-tree --full-tree -r $tree
) >current &&
cat >expected <<\EOF &&
100644 blob X 1.txt
100644 blob X 2.txt
100644 blob X path0/a/b/c/1.txt
100644 blob X path1/b/c/1.txt
100644 blob X path2/1.txt
100644 blob X path3/1.txt
100644 blob X path3/2.txt
EOF
test_output
ok 14 - ls-tree --full-tree -r
expecting success of 3101.15 'ls-tree --abbrev=5':
git ls-tree --abbrev=5 $tree >current &&
sed -e "s/ $_x05[0-9a-f]* / X /" <current >check &&
cat >expected <<\EOF &&
100644 blob X 1.txt
100644 blob X 2.txt
040000 tree X path0
040000 tree X path1
040000 tree X path2
040000 tree X path3
EOF
test_cmp expected check
ok 15 - ls-tree --abbrev=5
expecting success of 3101.16 'ls-tree --name-only':
git ls-tree $opt $tree >current &&
cat >expected <<-\EOF &&
1.txt
2.txt
path0
path1
path2
path3
EOF
test_output
ok 16 - ls-tree --name-only
expecting success of 3101.17 'ls-tree --name-only -r':
git ls-tree $opt -r $tree >current &&
cat >expected <<-\EOF &&
1.txt
2.txt
path0/a/b/c/1.txt
path1/b/c/1.txt
path2/1.txt
path3/1.txt
path3/2.txt
EOF
test_output
ok 17 - ls-tree --name-only -r
expecting success of 3101.18 'ls-tree --name-status':
git ls-tree $opt $tree >current &&
cat >expected <<-\EOF &&
1.txt
2.txt
path0
path1
path2
path3
EOF
test_output
ok 18 - ls-tree --name-status
expecting success of 3101.19 'ls-tree --name-status -r':
git ls-tree $opt -r $tree >current &&
cat >expected <<-\EOF &&
1.txt
2.txt
path0/a/b/c/1.txt
path1/b/c/1.txt
path2/1.txt
path3/1.txt
path3/2.txt
EOF
test_output
ok 19 - ls-tree --name-status -r
# passed all 19 test(s)
1..19
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3102-ls-tree-wildcards.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3102-ls-tree-wildcards/.git/
expecting success of 3102.1 'setup':
mkdir a aa "a[a]" &&
touch a/one aa/two "a[a]/three" &&
git add a/one aa/two "a[a]/three" &&
git commit -m test
[master (root-commit) a832b10] test
Author: A U Thor <author@example.com>
3 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 a/one
create mode 100644 a[a]/three
create mode 100644 aa/two
ok 1 - setup
expecting success of 3102.2 'ls-tree a[a] matches literally':
cat >expect <<-EOF &&
100644 blob $EMPTY_BLOB a[a]/three
EOF
git ls-tree -r HEAD "a[a]" >actual &&
test_cmp expect actual
ok 2 - ls-tree a[a] matches literally
expecting success of 3102.3 'ls-tree outside prefix':
cat >expect <<-EOF &&
100644 blob $EMPTY_BLOB ../a[a]/three
EOF
( cd aa && git ls-tree -r HEAD "../a[a]" ) >actual &&
test_cmp expect actual
ok 3 - ls-tree outside prefix
checking known breakage of 3102.4 'ls-tree does not yet support negated pathspec':
git ls-files ":(exclude)a" "a*" >expect &&
git ls-tree --name-only -r HEAD ":(exclude)a" "a*" >actual &&
test_cmp expect actual
fatal: :(exclude)a: pathspec magic not supported by this command: 'exclude' (mnemonic: '!')
not ok 4 - ls-tree does not yet support negated pathspec # TODO known breakage
# still have 1 known breakage(s)
# passed all remaining 3 test(s)
1..4
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3103-ls-tree-misc.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3103-ls-tree-misc/.git/
expecting success of 3103.1 'setup':
mkdir a &&
touch a/one &&
git add a/one &&
git commit -m test
[master (root-commit) 687a3e0] test
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 a/one
ok 1 - setup
expecting success of 3103.2 'ls-tree fails with non-zero exit code on broken tree':
tree=$(git rev-parse HEAD:a) &&
rm -f .git/objects/$(echo $tree | sed -e "s,^\(..\),\1/,") &&
test_must_fail git ls-tree -r HEAD
error: Could not read 5fcffbd6e4c5c5b8d81f5e9314b20e338e3ffff5
ok 2 - ls-tree fails with non-zero exit code on broken tree
expecting success of 3103.3 'usage: incompatible options: --long --name-only':
test_expect_code 129 git ls-tree $opts $tree
error: option `name-only' is incompatible with --long
ok 3 - usage: incompatible options: --long --name-only
expecting success of 3103.4 'usage: incompatible options: --long and --format':
test_expect_code 129 git ls-tree $one_opt --format=fmt $tree
fatal: --format can't be combined with other format-altering options
usage: git ls-tree [<options>] <tree-ish> [<path>...]
-d only show trees
-r recurse into subtrees
-t show trees when recursing
-z terminate entries with NUL byte
-l, --long include object size
--name-only list only filenames
--name-status list only filenames
--object-only list only objects
--full-name use full path names
--full-tree list entire tree; not just current directory (implies --full-name)
--format <format> format to use for the output
--abbrev[=<n>] use <n> digits to display object names
ok 4 - usage: incompatible options: --long and --format
expecting success of 3103.5 'usage: incompatible options: --name-only --name-status':
test_expect_code 129 git ls-tree $opts $tree
error: option `name-status' is incompatible with --name-only
ok 5 - usage: incompatible options: --name-only --name-status
expecting success of 3103.6 'usage: incompatible options: --name-only and --format':
test_expect_code 129 git ls-tree $one_opt --format=fmt $tree
fatal: --format can't be combined with other format-altering options
usage: git ls-tree [<options>] <tree-ish> [<path>...]
-d only show trees
-r recurse into subtrees
-t show trees when recursing
-z terminate entries with NUL byte
-l, --long include object size
--name-only list only filenames
--name-status list only filenames
--object-only list only objects
--full-name use full path names
--full-tree list entire tree; not just current directory (implies --full-name)
--format <format> format to use for the output
--abbrev[=<n>] use <n> digits to display object names
ok 6 - usage: incompatible options: --name-only and --format
expecting success of 3103.7 'usage: incompatible options: --name-status --object-only':
test_expect_code 129 git ls-tree $opts $tree
error: option `object-only' is incompatible with --name-status
ok 7 - usage: incompatible options: --name-status --object-only
expecting success of 3103.8 'usage: incompatible options: --name-status and --format':
test_expect_code 129 git ls-tree $one_opt --format=fmt $tree
fatal: --format can't be combined with other format-altering options
usage: git ls-tree [<options>] <tree-ish> [<path>...]
-d only show trees
-r recurse into subtrees
-t show trees when recursing
-z terminate entries with NUL byte
-l, --long include object size
--name-only list only filenames
--name-status list only filenames
--object-only list only objects
--full-name use full path names
--full-tree list entire tree; not just current directory (implies --full-name)
--format <format> format to use for the output
--abbrev[=<n>] use <n> digits to display object names
ok 8 - usage: incompatible options: --name-status and --format
expecting success of 3103.9 'usage: incompatible options: --object-only --long':
test_expect_code 129 git ls-tree $opts $tree
error: option `long' is incompatible with --object-only
ok 9 - usage: incompatible options: --object-only --long
expecting success of 3103.10 'usage: incompatible options: --object-only and --format':
test_expect_code 129 git ls-tree $one_opt --format=fmt $tree
fatal: --format can't be combined with other format-altering options
usage: git ls-tree [<options>] <tree-ish> [<path>...]
-d only show trees
-r recurse into subtrees
-t show trees when recursing
-z terminate entries with NUL byte
-l, --long include object size
--name-only list only filenames
--name-status list only filenames
--object-only list only objects
--full-name use full path names
--full-tree list entire tree; not just current directory (implies --full-name)
--format <format> format to use for the output
--abbrev[=<n>] use <n> digits to display object names
ok 10 - usage: incompatible options: --object-only and --format
# passed all 10 test(s)
1..10
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3104-ls-tree-format.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3104-ls-tree-format/.git/
expecting success of 3104.1 'ls-tree --format usage':
test_expect_code 129 git ls-tree --format=fmt -l HEAD &&
test_expect_code 129 git ls-tree --format=fmt --name-only HEAD &&
test_expect_code 129 git ls-tree --format=fmt --name-status HEAD
fatal: --format can't be combined with other format-altering options
usage: git ls-tree [<options>] <tree-ish> [<path>...]
-d only show trees
-r recurse into subtrees
-t show trees when recursing
-z terminate entries with NUL byte
-l, --long include object size
--name-only list only filenames
--name-status list only filenames
--object-only list only objects
--full-name use full path names
--full-tree list entire tree; not just current directory (implies --full-name)
--format <format> format to use for the output
--abbrev[=<n>] use <n> digits to display object names
fatal: --format can't be combined with other format-altering options
usage: git ls-tree [<options>] <tree-ish> [<path>...]
-d only show trees
-r recurse into subtrees
-t show trees when recursing
-z terminate entries with NUL byte
-l, --long include object size
--name-only list only filenames
--name-status list only filenames
--object-only list only objects
--full-name use full path names
--full-tree list entire tree; not just current directory (implies --full-name)
--format <format> format to use for the output
--abbrev[=<n>] use <n> digits to display object names
fatal: --format can't be combined with other format-altering options
usage: git ls-tree [<options>] <tree-ish> [<path>...]
-d only show trees
-r recurse into subtrees
-t show trees when recursing
-z terminate entries with NUL byte
-l, --long include object size
--name-only list only filenames
--name-status list only filenames
--object-only list only objects
--full-name use full path names
--full-tree list entire tree; not just current directory (implies --full-name)
--format <format> format to use for the output
--abbrev[=<n>] use <n> digits to display object names
ok 1 - ls-tree --format usage
expecting success of 3104.2 'setup':
setup_basic_ls_tree_data
[master (root-commit) 921915e] dir/sub-file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 dir/sub-file.t
[master 61a63ac] top-file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 top-file.t
Cloning into 'submodule'...
done.
Adding existing repo at 'submodule' to the index
[master 9ac950e] add submodule
Author: A U Thor <author@example.com>
2 files changed, 4 insertions(+)
create mode 100644 .gitmodules
create mode 160000 submodule
ok 2 - setup
expecting success of 3104.3 'ls-tree --format='%(path) %(path) %(path)' HEAD top-file':
git ls-tree --format="%(path) %(path) %(path)" HEAD top-file.t >actual &&
echo top-file.t top-file.t top-file.t >expect &&
test_cmp expect actual
ok 3 - ls-tree --format='%(path) %(path) %(path)' HEAD top-file
expecting success of 3104.4 'ls-tree '--format=<%(objectmode) %(objecttype) %(objectname)%x09%(path)>' is like options ' '':
git ls-tree $opts -r HEAD >expect &&
git ls-tree --format="$format" -r $fmtopts HEAD >actual &&
test_cmp expect actual
ok 4 - ls-tree '--format=<%(objectmode) %(objecttype) %(objectname)%x09%(path)>' is like options ' '
expecting success of 3104.5 'ls-tree '--format=<%(objectmode) %(objecttype) %(objectname)%x09%(path)>' on optimized v.s. non-optimized path':
git ls-tree --format="$format" -r $fmtopts HEAD >expect &&
git ls-tree --format="> $format" -r $fmtopts HEAD >actual.raw &&
sed "s/^> //" >actual <actual.raw &&
test_cmp expect actual
ok 5 - ls-tree '--format=<%(objectmode) %(objecttype) %(objectname)%x09%(path)>' on optimized v.s. non-optimized path
expecting success of 3104.6 'ls-tree '--format=<%(objectmode) %(objecttype) %(objectname) %(objectsize:padded)%x09%(path)>' is like options '--long '':
git ls-tree $opts -r HEAD >expect &&
git ls-tree --format="$format" -r $fmtopts HEAD >actual &&
test_cmp expect actual
ok 6 - ls-tree '--format=<%(objectmode) %(objecttype) %(objectname) %(objectsize:padded)%x09%(path)>' is like options '--long '
expecting success of 3104.7 'ls-tree '--format=<%(objectmode) %(objecttype) %(objectname) %(objectsize:padded)%x09%(path)>' on optimized v.s. non-optimized path':
git ls-tree --format="$format" -r $fmtopts HEAD >expect &&
git ls-tree --format="> $format" -r $fmtopts HEAD >actual.raw &&
sed "s/^> //" >actual <actual.raw &&
test_cmp expect actual
ok 7 - ls-tree '--format=<%(objectmode) %(objecttype) %(objectname) %(objectsize:padded)%x09%(path)>' on optimized v.s. non-optimized path
expecting success of 3104.8 'ls-tree '--format=<%(path)>' is like options '--name-only '':
git ls-tree $opts -r HEAD >expect &&
git ls-tree --format="$format" -r $fmtopts HEAD >actual &&
test_cmp expect actual
ok 8 - ls-tree '--format=<%(path)>' is like options '--name-only '
expecting success of 3104.9 'ls-tree '--format=<%(path)>' on optimized v.s. non-optimized path':
git ls-tree --format="$format" -r $fmtopts HEAD >expect &&
git ls-tree --format="> $format" -r $fmtopts HEAD >actual.raw &&
sed "s/^> //" >actual <actual.raw &&
test_cmp expect actual
ok 9 - ls-tree '--format=<%(path)>' on optimized v.s. non-optimized path
expecting success of 3104.10 'ls-tree '--format=<%(objectname)>' is like options '--object-only '':
git ls-tree $opts -r HEAD >expect &&
git ls-tree --format="$format" -r $fmtopts HEAD >actual &&
test_cmp expect actual
ok 10 - ls-tree '--format=<%(objectname)>' is like options '--object-only '
expecting success of 3104.11 'ls-tree '--format=<%(objectname)>' on optimized v.s. non-optimized path':
git ls-tree --format="$format" -r $fmtopts HEAD >expect &&
git ls-tree --format="> $format" -r $fmtopts HEAD >actual.raw &&
sed "s/^> //" >actual <actual.raw &&
test_cmp expect actual
ok 11 - ls-tree '--format=<%(objectname)>' on optimized v.s. non-optimized path
expecting success of 3104.12 'ls-tree '--format=<%(objectname)>' is like options '--object-only --abbrev --abbrev'':
git ls-tree $opts -r HEAD >expect &&
git ls-tree --format="$format" -r $fmtopts HEAD >actual &&
test_cmp expect actual
ok 12 - ls-tree '--format=<%(objectname)>' is like options '--object-only --abbrev --abbrev'
expecting success of 3104.13 'ls-tree '--format=<%(objectname)>' on optimized v.s. non-optimized path':
git ls-tree --format="$format" -r $fmtopts HEAD >expect &&
git ls-tree --format="> $format" -r $fmtopts HEAD >actual.raw &&
sed "s/^> //" >actual <actual.raw &&
test_cmp expect actual
ok 13 - ls-tree '--format=<%(objectname)>' on optimized v.s. non-optimized path
expecting success of 3104.14 'ls-tree '--format=<%(objectmode) %(objecttype) %(objectname)%x09%(path)>' is like options '-t -t'':
git ls-tree $opts -r HEAD >expect &&
git ls-tree --format="$format" -r $fmtopts HEAD >actual &&
test_cmp expect actual
ok 14 - ls-tree '--format=<%(objectmode) %(objecttype) %(objectname)%x09%(path)>' is like options '-t -t'
expecting success of 3104.15 'ls-tree '--format=<%(objectmode) %(objecttype) %(objectname)%x09%(path)>' on optimized v.s. non-optimized path':
git ls-tree --format="$format" -r $fmtopts HEAD >expect &&
git ls-tree --format="> $format" -r $fmtopts HEAD >actual.raw &&
sed "s/^> //" >actual <actual.raw &&
test_cmp expect actual
ok 15 - ls-tree '--format=<%(objectmode) %(objecttype) %(objectname)%x09%(path)>' on optimized v.s. non-optimized path
expecting success of 3104.16 'ls-tree '--format=<%(objectmode) %(objecttype) %(objectname)%x09%(path)>' is like options '--full-name --full-name'':
git ls-tree $opts -r HEAD >expect &&
git ls-tree --format="$format" -r $fmtopts HEAD >actual &&
test_cmp expect actual
ok 16 - ls-tree '--format=<%(objectmode) %(objecttype) %(objectname)%x09%(path)>' is like options '--full-name --full-name'
expecting success of 3104.17 'ls-tree '--format=<%(objectmode) %(objecttype) %(objectname)%x09%(path)>' on optimized v.s. non-optimized path':
git ls-tree --format="$format" -r $fmtopts HEAD >expect &&
git ls-tree --format="> $format" -r $fmtopts HEAD >actual.raw &&
sed "s/^> //" >actual <actual.raw &&
test_cmp expect actual
ok 17 - ls-tree '--format=<%(objectmode) %(objecttype) %(objectname)%x09%(path)>' on optimized v.s. non-optimized path
expecting success of 3104.18 'ls-tree '--format=<%(objectmode) %(objecttype) %(objectname)%x09%(path)>' is like options '--full-tree --full-tree'':
git ls-tree $opts -r HEAD >expect &&
git ls-tree --format="$format" -r $fmtopts HEAD >actual &&
test_cmp expect actual
ok 18 - ls-tree '--format=<%(objectmode) %(objecttype) %(objectname)%x09%(path)>' is like options '--full-tree --full-tree'
expecting success of 3104.19 'ls-tree '--format=<%(objectmode) %(objecttype) %(objectname)%x09%(path)>' on optimized v.s. non-optimized path':
git ls-tree --format="$format" -r $fmtopts HEAD >expect &&
git ls-tree --format="> $format" -r $fmtopts HEAD >actual.raw &&
sed "s/^> //" >actual <actual.raw &&
test_cmp expect actual
ok 19 - ls-tree '--format=<%(objectmode) %(objecttype) %(objectname)%x09%(path)>' on optimized v.s. non-optimized path
# passed all 19 test(s)
1..19
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3105-ls-tree-output.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3105-ls-tree-output/.git/
expecting success of 3105.1 'ls-tree --format usage':
test_expect_code 129 git ls-tree --format=fmt -l HEAD &&
test_expect_code 129 git ls-tree --format=fmt --name-only HEAD &&
test_expect_code 129 git ls-tree --format=fmt --name-status HEAD
fatal: --format can't be combined with other format-altering options
usage: git ls-tree [<options>] <tree-ish> [<path>...]
-d only show trees
-r recurse into subtrees
-t show trees when recursing
-z terminate entries with NUL byte
-l, --long include object size
--name-only list only filenames
--name-status list only filenames
--object-only list only objects
--full-name use full path names
--full-tree list entire tree; not just current directory (implies --full-name)
--format <format> format to use for the output
--abbrev[=<n>] use <n> digits to display object names
fatal: --format can't be combined with other format-altering options
usage: git ls-tree [<options>] <tree-ish> [<path>...]
-d only show trees
-r recurse into subtrees
-t show trees when recursing
-z terminate entries with NUL byte
-l, --long include object size
--name-only list only filenames
--name-status list only filenames
--object-only list only objects
--full-name use full path names
--full-tree list entire tree; not just current directory (implies --full-name)
--format <format> format to use for the output
--abbrev[=<n>] use <n> digits to display object names
fatal: --format can't be combined with other format-altering options
usage: git ls-tree [<options>] <tree-ish> [<path>...]
-d only show trees
-r recurse into subtrees
-t show trees when recursing
-z terminate entries with NUL byte
-l, --long include object size
--name-only list only filenames
--name-status list only filenames
--object-only list only objects
--full-name use full path names
--full-tree list entire tree; not just current directory (implies --full-name)
--format <format> format to use for the output
--abbrev[=<n>] use <n> digits to display object names
ok 1 - ls-tree --format usage
expecting success of 3105.2 'setup':
setup_basic_ls_tree_data
[master (root-commit) 921915e] dir/sub-file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 dir/sub-file.t
[master 61a63ac] top-file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 top-file.t
Cloning into 'submodule'...
done.
Adding existing repo at 'submodule' to the index
[master 9ac950e] add submodule
Author: A U Thor <author@example.com>
2 files changed, 4 insertions(+)
create mode 100644 .gitmodules
create mode 160000 submodule
ok 2 - setup
expecting success of 3105.3 'setup: HEAD_* variables':
HEAD_gitmodules=$(git rev-parse HEAD:.gitmodules) &&
HEAD_dir=$(git rev-parse HEAD:dir) &&
HEAD_top_file=$(git rev-parse HEAD:top-file.t) &&
HEAD_submodule=$(git rev-parse HEAD:submodule) &&
HEAD_dir_sub_file=$(git rev-parse HEAD:dir/sub-file.t)
ok 3 - setup: HEAD_* variables
expecting success of 3105.4 ''ls-tree ' output':
git ls-tree ${mode:+$mode }$opts HEAD >actual &&
test_cmp expect actual
ok 4 - 'ls-tree ' output
expecting success of 3105.5 ''ls-tree ' output (via subdir)':
git -C dir ls-tree --full-name ${mode:+$mode }$opts HEAD -- ../ >actual &&
test_cmp expect actual
ok 5 - 'ls-tree ' output (via subdir)
expecting success of 3105.6 ''ls-tree -t' output':
git ls-tree ${mode:+$mode }$opts HEAD >actual &&
test_cmp expect actual
ok 6 - 'ls-tree -t' output
expecting success of 3105.7 ''ls-tree -t' output (via subdir)':
git -C dir ls-tree --full-name ${mode:+$mode }$opts HEAD -- ../ >actual &&
test_cmp expect actual
ok 7 - 'ls-tree -t' output (via subdir)
expecting success of 3105.8 ''ls-tree -d' output':
git ls-tree ${mode:+$mode }$opts HEAD >actual &&
test_cmp expect actual
ok 8 - 'ls-tree -d' output
expecting success of 3105.9 ''ls-tree -d' output (via subdir)':
git -C dir ls-tree --full-name ${mode:+$mode }$opts HEAD -- ../ >actual &&
test_cmp expect actual
ok 9 - 'ls-tree -d' output (via subdir)
expecting success of 3105.10 ''ls-tree -r' output':
git ls-tree ${mode:+$mode }$opts HEAD >actual &&
test_cmp expect actual
ok 10 - 'ls-tree -r' output
expecting success of 3105.11 ''ls-tree -r' output (via subdir)':
git -C dir ls-tree --full-name ${mode:+$mode }$opts HEAD -- ../ >actual &&
test_cmp expect actual
ok 11 - 'ls-tree -r' output (via subdir)
expecting success of 3105.12 ''ls-tree --long' output':
git ls-tree ${mode:+$mode }$opts HEAD >actual &&
test_cmp expect actual
ok 12 - 'ls-tree --long' output
expecting success of 3105.13 ''ls-tree --long' output (via subdir)':
git -C dir ls-tree --full-name ${mode:+$mode }$opts HEAD -- ../ >actual &&
test_cmp expect actual
ok 13 - 'ls-tree --long' output (via subdir)
expecting success of 3105.14 ''ls-tree --long -t' output':
git ls-tree ${mode:+$mode }$opts HEAD >actual &&
test_cmp expect actual
ok 14 - 'ls-tree --long -t' output
expecting success of 3105.15 ''ls-tree --long -t' output (via subdir)':
git -C dir ls-tree --full-name ${mode:+$mode }$opts HEAD -- ../ >actual &&
test_cmp expect actual
ok 15 - 'ls-tree --long -t' output (via subdir)
expecting success of 3105.16 ''ls-tree --long -d' output':
git ls-tree ${mode:+$mode }$opts HEAD >actual &&
test_cmp expect actual
ok 16 - 'ls-tree --long -d' output
expecting success of 3105.17 ''ls-tree --long -d' output (via subdir)':
git -C dir ls-tree --full-name ${mode:+$mode }$opts HEAD -- ../ >actual &&
test_cmp expect actual
ok 17 - 'ls-tree --long -d' output (via subdir)
expecting success of 3105.18 ''ls-tree --long -r' output':
git ls-tree ${mode:+$mode }$opts HEAD >actual &&
test_cmp expect actual
ok 18 - 'ls-tree --long -r' output
expecting success of 3105.19 ''ls-tree --long -r' output (via subdir)':
git -C dir ls-tree --full-name ${mode:+$mode }$opts HEAD -- ../ >actual &&
test_cmp expect actual
ok 19 - 'ls-tree --long -r' output (via subdir)
expecting success of 3105.20 ''ls-tree --name-only' output':
git ls-tree ${mode:+$mode }$opts HEAD >actual &&
test_cmp expect actual
ok 20 - 'ls-tree --name-only' output
expecting success of 3105.21 ''ls-tree --name-only' output (via subdir)':
git -C dir ls-tree --full-name ${mode:+$mode }$opts HEAD -- ../ >actual &&
test_cmp expect actual
ok 21 - 'ls-tree --name-only' output (via subdir)
expecting success of 3105.22 ''ls-tree --name-only -t' output':
git ls-tree ${mode:+$mode }$opts HEAD >actual &&
test_cmp expect actual
ok 22 - 'ls-tree --name-only -t' output
expecting success of 3105.23 ''ls-tree --name-only -t' output (via subdir)':
git -C dir ls-tree --full-name ${mode:+$mode }$opts HEAD -- ../ >actual &&
test_cmp expect actual
ok 23 - 'ls-tree --name-only -t' output (via subdir)
expecting success of 3105.24 ''ls-tree --name-only -d' output':
git ls-tree ${mode:+$mode }$opts HEAD >actual &&
test_cmp expect actual
ok 24 - 'ls-tree --name-only -d' output
expecting success of 3105.25 ''ls-tree --name-only -d' output (via subdir)':
git -C dir ls-tree --full-name ${mode:+$mode }$opts HEAD -- ../ >actual &&
test_cmp expect actual
ok 25 - 'ls-tree --name-only -d' output (via subdir)
expecting success of 3105.26 ''ls-tree --name-only -r' output':
git ls-tree ${mode:+$mode }$opts HEAD >actual &&
test_cmp expect actual
ok 26 - 'ls-tree --name-only -r' output
expecting success of 3105.27 ''ls-tree --name-only -r' output (via subdir)':
git -C dir ls-tree --full-name ${mode:+$mode }$opts HEAD -- ../ >actual &&
test_cmp expect actual
ok 27 - 'ls-tree --name-only -r' output (via subdir)
expecting success of 3105.28 ''ls-tree --object-only' output':
git ls-tree ${mode:+$mode }$opts HEAD >actual &&
test_cmp expect actual
ok 28 - 'ls-tree --object-only' output
expecting success of 3105.29 ''ls-tree --object-only' output (via subdir)':
git -C dir ls-tree --full-name ${mode:+$mode }$opts HEAD -- ../ >actual &&
test_cmp expect actual
ok 29 - 'ls-tree --object-only' output (via subdir)
expecting success of 3105.30 ''ls-tree --object-only -t' output':
git ls-tree ${mode:+$mode }$opts HEAD >actual &&
test_cmp expect actual
ok 30 - 'ls-tree --object-only -t' output
expecting success of 3105.31 ''ls-tree --object-only -t' output (via subdir)':
git -C dir ls-tree --full-name ${mode:+$mode }$opts HEAD -- ../ >actual &&
test_cmp expect actual
ok 31 - 'ls-tree --object-only -t' output (via subdir)
expecting success of 3105.32 ''ls-tree --object-only -d' output':
git ls-tree ${mode:+$mode }$opts HEAD >actual &&
test_cmp expect actual
ok 32 - 'ls-tree --object-only -d' output
expecting success of 3105.33 ''ls-tree --object-only -d' output (via subdir)':
git -C dir ls-tree --full-name ${mode:+$mode }$opts HEAD -- ../ >actual &&
test_cmp expect actual
ok 33 - 'ls-tree --object-only -d' output (via subdir)
expecting success of 3105.34 ''ls-tree --object-only -r' output':
git ls-tree ${mode:+$mode }$opts HEAD >actual &&
test_cmp expect actual
ok 34 - 'ls-tree --object-only -r' output
expecting success of 3105.35 ''ls-tree --object-only -r' output (via subdir)':
git -C dir ls-tree --full-name ${mode:+$mode }$opts HEAD -- ../ >actual &&
test_cmp expect actual
ok 35 - 'ls-tree --object-only -r' output (via subdir)
expecting success of 3105.36 'setup: HEAD_short_* variables':
HEAD_short_gitmodules=$(git rev-parse --short HEAD:.gitmodules) &&
HEAD_short_dir=$(git rev-parse --short HEAD:dir) &&
HEAD_short_top_file=$(git rev-parse --short HEAD:top-file.t) &&
HEAD_short_submodule=$(git rev-parse --short HEAD:submodule) &&
HEAD_short_dir_sub_file=$(git rev-parse --short HEAD:dir/sub-file.t)
ok 36 - setup: HEAD_short_* variables
expecting success of 3105.37 ''ls-tree --object-only --abbrev' output':
git ls-tree ${mode:+$mode }$opts HEAD >actual &&
test_cmp expect actual
ok 37 - 'ls-tree --object-only --abbrev' output
expecting success of 3105.38 ''ls-tree --object-only --abbrev' output (via subdir)':
git -C dir ls-tree --full-name ${mode:+$mode }$opts HEAD -- ../ >actual &&
test_cmp expect actual
ok 38 - 'ls-tree --object-only --abbrev' output (via subdir)
expecting success of 3105.39 ''ls-tree --object-only --abbrev -t' output':
git ls-tree ${mode:+$mode }$opts HEAD >actual &&
test_cmp expect actual
ok 39 - 'ls-tree --object-only --abbrev -t' output
expecting success of 3105.40 ''ls-tree --object-only --abbrev -t' output (via subdir)':
git -C dir ls-tree --full-name ${mode:+$mode }$opts HEAD -- ../ >actual &&
test_cmp expect actual
ok 40 - 'ls-tree --object-only --abbrev -t' output (via subdir)
expecting success of 3105.41 ''ls-tree --object-only --abbrev -d' output':
git ls-tree ${mode:+$mode }$opts HEAD >actual &&
test_cmp expect actual
ok 41 - 'ls-tree --object-only --abbrev -d' output
expecting success of 3105.42 ''ls-tree --object-only --abbrev -d' output (via subdir)':
git -C dir ls-tree --full-name ${mode:+$mode }$opts HEAD -- ../ >actual &&
test_cmp expect actual
ok 42 - 'ls-tree --object-only --abbrev -d' output (via subdir)
expecting success of 3105.43 ''ls-tree --object-only --abbrev -r' output':
git ls-tree ${mode:+$mode }$opts HEAD >actual &&
test_cmp expect actual
ok 43 - 'ls-tree --object-only --abbrev -r' output
expecting success of 3105.44 ''ls-tree --object-only --abbrev -r' output (via subdir)':
git -C dir ls-tree --full-name ${mode:+$mode }$opts HEAD -- ../ >actual &&
test_cmp expect actual
ok 44 - 'ls-tree --object-only --abbrev -r' output (via subdir)
expecting success of 3105.45 ''ls-tree --full-name' output':
git ls-tree ${mode:+$mode }$opts HEAD >actual &&
test_cmp expect actual
ok 45 - 'ls-tree --full-name' output
expecting success of 3105.46 ''ls-tree --full-name' output (via subdir)':
git -C dir ls-tree --full-name ${mode:+$mode }$opts HEAD -- ../ >actual &&
test_cmp expect actual
ok 46 - 'ls-tree --full-name' output (via subdir)
expecting success of 3105.47 ''ls-tree --full-name -d' output':
git ls-tree ${mode:+$mode }$opts HEAD >actual &&
test_cmp expect actual
ok 47 - 'ls-tree --full-name -d' output
expecting success of 3105.48 ''ls-tree --full-name -d' output (via subdir)':
git -C dir ls-tree --full-name ${mode:+$mode }$opts HEAD -- ../ >actual &&
test_cmp expect actual
ok 48 - 'ls-tree --full-name -d' output (via subdir)
expecting success of 3105.49 ''ls-tree --full-name -r' output':
git ls-tree ${mode:+$mode }$opts HEAD >actual &&
test_cmp expect actual
ok 49 - 'ls-tree --full-name -r' output
expecting success of 3105.50 ''ls-tree --full-name -r' output (via subdir)':
git -C dir ls-tree --full-name ${mode:+$mode }$opts HEAD -- ../ >actual &&
test_cmp expect actual
ok 50 - 'ls-tree --full-name -r' output (via subdir)
expecting success of 3105.51 ''ls-tree --full-name -t' output':
git ls-tree ${mode:+$mode }$opts HEAD >actual &&
test_cmp expect actual
ok 51 - 'ls-tree --full-name -t' output
expecting success of 3105.52 ''ls-tree --full-name -t' output (via subdir)':
git -C dir ls-tree --full-name ${mode:+$mode }$opts HEAD -- ../ >actual &&
test_cmp expect actual
ok 52 - 'ls-tree --full-name -t' output (via subdir)
expecting success of 3105.53 ''ls-tree --full-tree' output':
git ls-tree ${mode:+$mode }$opts HEAD >actual &&
test_cmp expect actual
ok 53 - 'ls-tree --full-tree' output
expecting success of 3105.54 ''ls-tree --full-tree' output (via subdir, fails)':
test_must_fail git -C dir ls-tree --full-name ${mode:+$mode }$opts HEAD -- ../
fatal: ../: '../' is outside repository at '/<<PKGBUILDDIR>>/t/trash directory.t3105-ls-tree-output'
ok 54 - 'ls-tree --full-tree' output (via subdir, fails)
expecting success of 3105.55 ''ls-tree --full-tree -t' output':
git ls-tree ${mode:+$mode }$opts HEAD >actual &&
test_cmp expect actual
ok 55 - 'ls-tree --full-tree -t' output
expecting success of 3105.56 ''ls-tree --full-tree -t' output (via subdir, fails)':
test_must_fail git -C dir ls-tree --full-name ${mode:+$mode }$opts HEAD -- ../
fatal: ../: '../' is outside repository at '/<<PKGBUILDDIR>>/t/trash directory.t3105-ls-tree-output'
ok 56 - 'ls-tree --full-tree -t' output (via subdir, fails)
expecting success of 3105.57 ''ls-tree --full-tree -d' output':
git ls-tree ${mode:+$mode }$opts HEAD >actual &&
test_cmp expect actual
ok 57 - 'ls-tree --full-tree -d' output
expecting success of 3105.58 ''ls-tree --full-tree -d' output (via subdir, fails)':
test_must_fail git -C dir ls-tree --full-name ${mode:+$mode }$opts HEAD -- ../
fatal: ../: '../' is outside repository at '/<<PKGBUILDDIR>>/t/trash directory.t3105-ls-tree-output'
ok 58 - 'ls-tree --full-tree -d' output (via subdir, fails)
expecting success of 3105.59 ''ls-tree --full-tree -r' output':
git ls-tree ${mode:+$mode }$opts HEAD >actual &&
test_cmp expect actual
ok 59 - 'ls-tree --full-tree -r' output
expecting success of 3105.60 ''ls-tree --full-tree -r' output (via subdir, fails)':
test_must_fail git -C dir ls-tree --full-name ${mode:+$mode }$opts HEAD -- ../
fatal: ../: '../' is outside repository at '/<<PKGBUILDDIR>>/t/trash directory.t3105-ls-tree-output'
ok 60 - 'ls-tree --full-tree -r' output (via subdir, fails)
# passed all 60 test(s)
1..60
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3201-branch-contains.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3201-branch-contains/.git/
expecting success of 3201.1 'setup':
>file &&
git add file &&
test_tick &&
git commit -m initial &&
git branch -M main &&
git branch side &&
echo 1 >file &&
test_tick &&
git commit -a -m "second on main" &&
git checkout side &&
echo 1 >file &&
test_tick &&
git commit -a -m "second on side" &&
git merge main
[master (root-commit) 1bd44cb] initial
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file
[main f254a9d] second on main
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
Switched to branch 'side'
[side 5a0fd8a] second on side
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
Merge made by the 'ort' strategy.
ok 1 - setup
expecting success of 3201.2 'branch --contains=main':
git branch --contains=main >actual &&
{
echo " main" && echo "* side"
} >expect &&
test_cmp expect actual
ok 2 - branch --contains=main
expecting success of 3201.3 'branch --contains main':
git branch --contains main >actual &&
{
echo " main" && echo "* side"
} >expect &&
test_cmp expect actual
ok 3 - branch --contains main
expecting success of 3201.4 'branch --no-contains=main':
git branch --no-contains=main >actual &&
test_must_be_empty actual
ok 4 - branch --no-contains=main
expecting success of 3201.5 'branch --no-contains main':
git branch --no-contains main >actual &&
test_must_be_empty actual
ok 5 - branch --no-contains main
expecting success of 3201.6 'branch --contains=side':
git branch --contains=side >actual &&
{
echo "* side"
} >expect &&
test_cmp expect actual
ok 6 - branch --contains=side
expecting success of 3201.7 'branch --no-contains=side':
git branch --no-contains=side >actual &&
{
echo " main"
} >expect &&
test_cmp expect actual
ok 7 - branch --no-contains=side
expecting success of 3201.8 'branch --contains with pattern implies --list':
git branch --contains=main main >actual &&
{
echo " main"
} >expect &&
test_cmp expect actual
ok 8 - branch --contains with pattern implies --list
expecting success of 3201.9 'branch --no-contains with pattern implies --list':
git branch --no-contains=main main >actual &&
test_must_be_empty actual
ok 9 - branch --no-contains with pattern implies --list
expecting success of 3201.10 'side: branch --merged':
git branch --merged >actual &&
{
echo " main" &&
echo "* side"
} >expect &&
test_cmp expect actual
ok 10 - side: branch --merged
expecting success of 3201.11 'branch --merged with pattern implies --list':
git branch --merged=side main >actual &&
{
echo " main"
} >expect &&
test_cmp expect actual
ok 11 - branch --merged with pattern implies --list
expecting success of 3201.12 'side: branch --no-merged':
git branch --no-merged >actual &&
test_must_be_empty actual
ok 12 - side: branch --no-merged
expecting success of 3201.13 'main: branch --merged':
git checkout main &&
git branch --merged >actual &&
{
echo "* main"
} >expect &&
test_cmp expect actual
Switched to branch 'main'
ok 13 - main: branch --merged
expecting success of 3201.14 'main: branch --no-merged':
git branch --no-merged >actual &&
{
echo " side"
} >expect &&
test_cmp expect actual
ok 14 - main: branch --no-merged
expecting success of 3201.15 'branch --no-merged with pattern implies --list':
git branch --no-merged=main main >actual &&
test_must_be_empty actual
ok 15 - branch --no-merged with pattern implies --list
expecting success of 3201.16 'implicit --list conflicts with modification options':
test_must_fail git branch --contains=main -d &&
test_must_fail git branch --contains=main -m foo &&
test_must_fail git branch --no-contains=main -d &&
test_must_fail git branch --no-contains=main -m foo
usage: git branch [<options>] [-r | -a] [--merged] [--no-merged]
or: git branch [<options>] [-f] [--recurse-submodules] <branch-name> [<start-point>]
or: git branch [<options>] [-l] [<pattern>...]
or: git branch [<options>] [-r] (-d | -D) <branch-name>...
or: git branch [<options>] (-m | -M) [<old-branch>] <new-branch>
or: git branch [<options>] (-c | -C) [<old-branch>] <new-branch>
or: git branch [<options>] [-r | -a] [--points-at]
or: git branch [<options>] [-r | -a] [--format]
Generic options
-v, --verbose show hash and subject, give twice for upstream branch
-q, --quiet suppress informational messages
-t, --track[=(direct|inherit)]
set branch tracking configuration
-u, --set-upstream-to <upstream>
change the upstream info
--unset-upstream unset the upstream info
--color[=<when>] use colored output
-r, --remotes act on remote-tracking branches
--contains <commit> print only branches that contain the commit
--no-contains <commit>
print only branches that don't contain the commit
--abbrev[=<n>] use <n> digits to display object names
Specific git-branch actions:
-a, --all list both remote-tracking and local branches
-d, --delete delete fully merged branch
-D delete branch (even if not merged)
-m, --move move/rename a branch and its reflog
-M move/rename a branch, even if target exists
--omit-empty do not output a newline after empty formatted refs
-c, --copy copy a branch and its reflog
-C copy a branch, even if target exists
-l, --list list branch names
--show-current show current branch name
--create-reflog create the branch's reflog
--edit-description edit the description for the branch
-f, --force force creation, move/rename, deletion
--merged <commit> print only branches that are merged
--no-merged <commit> print only branches that are not merged
--column[=<style>] list branches in columns
--sort <key> field name to sort on
--points-at <object> print only branches of the object
-i, --ignore-case sorting and filtering are case insensitive
--recurse-submodules recurse through submodules
--format <format> format to use for the output
usage: git branch [<options>] [-r | -a] [--merged] [--no-merged]
or: git branch [<options>] [-f] [--recurse-submodules] <branch-name> [<start-point>]
or: git branch [<options>] [-l] [<pattern>...]
or: git branch [<options>] [-r] (-d | -D) <branch-name>...
or: git branch [<options>] (-m | -M) [<old-branch>] <new-branch>
or: git branch [<options>] (-c | -C) [<old-branch>] <new-branch>
or: git branch [<options>] [-r | -a] [--points-at]
or: git branch [<options>] [-r | -a] [--format]
Generic options
-v, --verbose show hash and subject, give twice for upstream branch
-q, --quiet suppress informational messages
-t, --track[=(direct|inherit)]
set branch tracking configuration
-u, --set-upstream-to <upstream>
change the upstream info
--unset-upstream unset the upstream info
--color[=<when>] use colored output
-r, --remotes act on remote-tracking branches
--contains <commit> print only branches that contain the commit
--no-contains <commit>
print only branches that don't contain the commit
--abbrev[=<n>] use <n> digits to display object names
Specific git-branch actions:
-a, --all list both remote-tracking and local branches
-d, --delete delete fully merged branch
-D delete branch (even if not merged)
-m, --move move/rename a branch and its reflog
-M move/rename a branch, even if target exists
--omit-empty do not output a newline after empty formatted refs
-c, --copy copy a branch and its reflog
-C copy a branch, even if target exists
-l, --list list branch names
--show-current show current branch name
--create-reflog create the branch's reflog
--edit-description edit the description for the branch
-f, --force force creation, move/rename, deletion
--merged <commit> print only branches that are merged
--no-merged <commit> print only branches that are not merged
--column[=<style>] list branches in columns
--sort <key> field name to sort on
--points-at <object> print only branches of the object
-i, --ignore-case sorting and filtering are case insensitive
--recurse-submodules recurse through submodules
--format <format> format to use for the output
usage: git branch [<options>] [-r | -a] [--merged] [--no-merged]
or: git branch [<options>] [-f] [--recurse-submodules] <branch-name> [<start-point>]
or: git branch [<options>] [-l] [<pattern>...]
or: git branch [<options>] [-r] (-d | -D) <branch-name>...
or: git branch [<options>] (-m | -M) [<old-branch>] <new-branch>
or: git branch [<options>] (-c | -C) [<old-branch>] <new-branch>
or: git branch [<options>] [-r | -a] [--points-at]
or: git branch [<options>] [-r | -a] [--format]
Generic options
-v, --verbose show hash and subject, give twice for upstream branch
-q, --quiet suppress informational messages
-t, --track[=(direct|inherit)]
set branch tracking configuration
-u, --set-upstream-to <upstream>
change the upstream info
--unset-upstream unset the upstream info
--color[=<when>] use colored output
-r, --remotes act on remote-tracking branches
--contains <commit> print only branches that contain the commit
--no-contains <commit>
print only branches that don't contain the commit
--abbrev[=<n>] use <n> digits to display object names
Specific git-branch actions:
-a, --all list both remote-tracking and local branches
-d, --delete delete fully merged branch
-D delete branch (even if not merged)
-m, --move move/rename a branch and its reflog
-M move/rename a branch, even if target exists
--omit-empty do not output a newline after empty formatted refs
-c, --copy copy a branch and its reflog
-C copy a branch, even if target exists
-l, --list list branch names
--show-current show current branch name
--create-reflog create the branch's reflog
--edit-description edit the description for the branch
-f, --force force creation, move/rename, deletion
--merged <commit> print only branches that are merged
--no-merged <commit> print only branches that are not merged
--column[=<style>] list branches in columns
--sort <key> field name to sort on
--points-at <object> print only branches of the object
-i, --ignore-case sorting and filtering are case insensitive
--recurse-submodules recurse through submodules
--format <format> format to use for the output
usage: git branch [<options>] [-r | -a] [--merged] [--no-merged]
or: git branch [<options>] [-f] [--recurse-submodules] <branch-name> [<start-point>]
or: git branch [<options>] [-l] [<pattern>...]
or: git branch [<options>] [-r] (-d | -D) <branch-name>...
or: git branch [<options>] (-m | -M) [<old-branch>] <new-branch>
or: git branch [<options>] (-c | -C) [<old-branch>] <new-branch>
or: git branch [<options>] [-r | -a] [--points-at]
or: git branch [<options>] [-r | -a] [--format]
Generic options
-v, --verbose show hash and subject, give twice for upstream branch
-q, --quiet suppress informational messages
-t, --track[=(direct|inherit)]
set branch tracking configuration
-u, --set-upstream-to <upstream>
change the upstream info
--unset-upstream unset the upstream info
--color[=<when>] use colored output
-r, --remotes act on remote-tracking branches
--contains <commit> print only branches that contain the commit
--no-contains <commit>
print only branches that don't contain the commit
--abbrev[=<n>] use <n> digits to display object names
Specific git-branch actions:
-a, --all list both remote-tracking and local branches
-d, --delete delete fully merged branch
-D delete branch (even if not merged)
-m, --move move/rename a branch and its reflog
-M move/rename a branch, even if target exists
--omit-empty do not output a newline after empty formatted refs
-c, --copy copy a branch and its reflog
-C copy a branch, even if target exists
-l, --list list branch names
--show-current show current branch name
--create-reflog create the branch's reflog
--edit-description edit the description for the branch
-f, --force force creation, move/rename, deletion
--merged <commit> print only branches that are merged
--no-merged <commit> print only branches that are not merged
--column[=<style>] list branches in columns
--sort <key> field name to sort on
--points-at <object> print only branches of the object
-i, --ignore-case sorting and filtering are case insensitive
--recurse-submodules recurse through submodules
--format <format> format to use for the output
ok 16 - implicit --list conflicts with modification options
expecting success of 3201.17 'Assert that --contains only works on commits, not trees & blobs':
test_must_fail git branch --contains main^{tree} &&
blob=$(git hash-object -w --stdin <<-\EOF
Some blob
EOF
) &&
test_must_fail git branch --contains $blob &&
test_must_fail git branch --no-contains $blob
error: object f27c6ae26adb8396d3861976ba268f87ad8afa0b is a tree, not a commit
error: no such commit main^{tree}
error: object cfb9f2866bfe62c278d75e8c33f020ccc27b5829 is a blob, not a commit
error: no such commit cfb9f2866bfe62c278d75e8c33f020ccc27b5829
error: object cfb9f2866bfe62c278d75e8c33f020ccc27b5829 is a blob, not a commit
error: no such commit cfb9f2866bfe62c278d75e8c33f020ccc27b5829
ok 17 - Assert that --contains only works on commits, not trees & blobs
expecting success of 3201.18 'multiple branch --contains':
git checkout -b side2 main &&
>feature &&
git add feature &&
git commit -m "add feature" &&
git checkout -b next main &&
git merge side &&
git branch --contains side --contains side2 >actual &&
cat >expect <<-\EOF &&
* next
side
side2
EOF
test_cmp expect actual
Switched to a new branch 'side2'
[side2 08dccf0] add feature
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 feature
Switched to a new branch 'next'
Updating f254a9d..8b329c6
Fast-forward
ok 18 - multiple branch --contains
expecting success of 3201.19 'multiple branch --merged':
git branch --merged next --merged main >actual &&
cat >expect <<-\EOF &&
main
* next
side
EOF
test_cmp expect actual
ok 19 - multiple branch --merged
expecting success of 3201.20 'multiple branch --no-contains':
git branch --no-contains side --no-contains side2 >actual &&
cat >expect <<-\EOF &&
main
EOF
test_cmp expect actual
ok 20 - multiple branch --no-contains
expecting success of 3201.21 'multiple branch --no-merged':
git branch --no-merged next --no-merged main >actual &&
cat >expect <<-\EOF &&
side2
EOF
test_cmp expect actual
ok 21 - multiple branch --no-merged
expecting success of 3201.22 'branch --contains combined with --no-contains':
git checkout -b seen main &&
git merge side &&
git merge side2 &&
git branch --contains side --no-contains side2 >actual &&
cat >expect <<-\EOF &&
next
side
EOF
test_cmp expect actual
Switched to a new branch 'seen'
Updating f254a9d..8b329c6
Fast-forward
Merge made by the 'ort' strategy.
feature | 0
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 feature
ok 22 - branch --contains combined with --no-contains
expecting success of 3201.23 'branch --merged combined with --no-merged':
git branch --merged seen --no-merged next >actual &&
cat >expect <<-\EOF &&
* seen
side2
EOF
test_cmp expect actual
ok 23 - branch --merged combined with --no-merged
expecting success of 3201.24 'branch --merged with --verbose':
git branch --track topic main &&
git branch zzz topic &&
git checkout topic &&
test_commit foo &&
git branch --merged topic >actual &&
cat >expect <<-\EOF &&
main
* topic
zzz
EOF
test_cmp expect actual &&
git branch --verbose --merged topic >actual &&
cat >expect <<-EOF &&
main $(git rev-parse --short main) second on main
* topic $(git rev-parse --short topic ) [ahead 1] foo
zzz $(git rev-parse --short zzz ) second on main
EOF
test_cmp expect actual
branch 'topic' set up to track 'main'.
Switched to branch 'topic'
Your branch is up to date with 'main'.
[topic 67f297f] foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo.t
ok 24 - branch --merged with --verbose
# passed all 24 test(s)
1..24
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3202-show-branch.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3202-show-branch/.git/
expecting success of 3202.1 'error descriptions on empty repository':
current=$(git branch --show-current) &&
cat >expect <<-EOF &&
error: No commit on branch '$current' yet.
EOF
test_must_fail git branch --edit-description 2>actual &&
test_cmp expect actual &&
test_must_fail git branch --edit-description $current 2>actual &&
test_cmp expect actual
ok 1 - error descriptions on empty repository
expecting success of 3202.2 'fatal descriptions on empty repository':
current=$(git branch --show-current) &&
cat >expect <<-EOF &&
fatal: No commit on branch '$current' yet.
EOF
test_must_fail git branch --set-upstream-to=non-existent 2>actual &&
test_cmp expect actual &&
test_must_fail git branch -c new-branch 2>actual &&
test_cmp expect actual
ok 2 - fatal descriptions on empty repository
expecting success of 3202.3 'setup':
test_commit initial &&
for i in $(test_seq 1 10)
do
git checkout -b branch$i initial &&
test_commit --no-tag branch$i || return 1
done &&
git for-each-ref \
--sort=version:refname \
--format="%(refname:strip=2)" \
"refs/heads/branch*" >branches.sorted &&
sed "s/^> //" >expect <<-\EOF
> ! [branch1] branch1
> ! [branch2] branch2
> ! [branch3] branch3
> ! [branch4] branch4
> ! [branch5] branch5
> ! [branch6] branch6
> ! [branch7] branch7
> ! [branch8] branch8
> ! [branch9] branch9
> * [branch10] branch10
> ----------
> * [branch10] branch10
> + [branch9] branch9
> + [branch8] branch8
> + [branch7] branch7
> + [branch6] branch6
> + [branch5] branch5
> + [branch4] branch4
> + [branch3] branch3
> + [branch2] branch2
> + [branch1] branch1
> +++++++++* [branch10^] initial
EOF
[master (root-commit) 24b24cf] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 initial.t
Switched to a new branch 'branch1'
[branch1 39d0a3f] branch1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 branch1.t
Switched to a new branch 'branch2'
[branch2 bcd9857] branch2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 branch2.t
Switched to a new branch 'branch3'
[branch3 6401a40] branch3
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 branch3.t
Switched to a new branch 'branch4'
[branch4 831d58d] branch4
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 branch4.t
Switched to a new branch 'branch5'
[branch5 d4d852d] branch5
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 branch5.t
Switched to a new branch 'branch6'
[branch6 3af5e35] branch6
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 branch6.t
Switched to a new branch 'branch7'
[branch7 0cecb11] branch7
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 branch7.t
Switched to a new branch 'branch8'
[branch8 48b5688] branch8
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 branch8.t
Switched to a new branch 'branch9'
[branch9 b82e556] branch9
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 branch9.t
Switched to a new branch 'branch10'
[branch10 3b327e0] branch10
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 branch10.t
ok 3 - setup
expecting success of 3202.4 'show-branch with more than 8 branches':
git show-branch $(cat branches.sorted) >actual &&
test_cmp expect actual
ok 4 - show-branch with more than 8 branches
expecting success of 3202.5 'show-branch with showbranch.default':
for branch in $(cat branches.sorted)
do
test_config showbranch.default $branch --add || return 1
done &&
git show-branch >actual &&
test_cmp expect actual
ok 5 - show-branch with showbranch.default
expecting success of 3202.6 'show-branch --color output':
sed "s/^> //" >expect <<-\EOF &&
> <RED>!<RESET> [branch1] branch1
> <GREEN>!<RESET> [branch2] branch2
> <YELLOW>!<RESET> [branch3] branch3
> <BLUE>!<RESET> [branch4] branch4
> <MAGENTA>!<RESET> [branch5] branch5
> <CYAN>!<RESET> [branch6] branch6
> <BOLD;RED>!<RESET> [branch7] branch7
> <BOLD;GREEN>!<RESET> [branch8] branch8
> <BOLD;YELLOW>!<RESET> [branch9] branch9
> <BOLD;BLUE>*<RESET> [branch10] branch10
> ----------
> <BOLD;BLUE>*<RESET> [branch10] branch10
> <BOLD;YELLOW>+<RESET> [branch9] branch9
> <BOLD;GREEN>+<RESET> [branch8] branch8
> <BOLD;RED>+<RESET> [branch7] branch7
> <CYAN>+<RESET> [branch6] branch6
> <MAGENTA>+<RESET> [branch5] branch5
> <BLUE>+<RESET> [branch4] branch4
> <YELLOW>+<RESET> [branch3] branch3
> <GREEN>+<RESET> [branch2] branch2
> <RED>+<RESET> [branch1] branch1
> <RED>+<RESET><GREEN>+<RESET><YELLOW>+<RESET><BLUE>+<RESET><MAGENTA>+<RESET><CYAN>+<RESET><BOLD;RED>+<RESET><BOLD;GREEN>+<RESET><BOLD;YELLOW>+<RESET><BOLD;BLUE>*<RESET> [branch10^] initial
EOF
git show-branch --color=always $(cat branches.sorted) >actual.raw &&
test_decode_color <actual.raw >actual &&
test_cmp expect actual
ok 6 - show-branch --color output
expecting success of 3202.7 'show branch --remotes':
cat >expect.err <<-\EOF &&
No revs to be shown.
EOF
git show-branch -r 2>actual.err >actual.out &&
test_cmp expect.err actual.err &&
test_must_be_empty actual.out
ok 7 - show branch --remotes
expecting success of 3202.8 'show-branch --sparse':
test_when_finished "git checkout branch10 && git branch -D branchA" &&
git checkout -b branchA branch10 &&
git merge -s ours -m "merge 1 and 10 to make A" branch1 &&
git commit --allow-empty -m "another" &&
git show-branch --sparse >out &&
grep "merge 1 and 10 to make A" out &&
git show-branch >out &&
! grep "merge 1 and 10 to make A" out &&
git show-branch --no-sparse >out &&
! grep "merge 1 and 10 to make A" out
Switched to a new branch 'branchA'
Merge made by the 'ours' strategy.
[branchA 711c132] another
Author: A U Thor <author@example.com>
- [branchA^] merge 1 and 10 to make A
Switched to branch 'branch10'
Deleted branch branchA (was 711c132).
ok 8 - show-branch --sparse
expecting success of 3202.9 'setup show branch --list':
sed "s/^> //" >expect <<-\EOF
> [branch1] branch1
> [branch2] branch2
> [branch3] branch3
> [branch4] branch4
> [branch5] branch5
> [branch6] branch6
> [branch7] branch7
> [branch8] branch8
> [branch9] branch9
> * [branch10] branch10
EOF
ok 9 - setup show branch --list
expecting success of 3202.10 'show branch --list':
git show-branch --list $(cat branches.sorted) >actual &&
test_cmp expect actual
ok 10 - show branch --list
expecting success of 3202.11 'show branch --list has no --color output':
git show-branch --color=always --list $(cat branches.sorted) >actual &&
test_cmp expect actual
ok 11 - show branch --list has no --color output
expecting success of 3202.12 'show branch --merge-base with one argument':
for branch in $(cat branches.sorted)
do
git rev-parse $branch >expect &&
git show-branch --merge-base $branch >actual &&
test_cmp expect actual || return 1
done
ok 12 - show branch --merge-base with one argument
expecting success of 3202.13 'show branch --merge-base with two arguments':
for branch in $(cat branches.sorted)
do
git rev-parse initial >expect &&
git show-branch --merge-base initial $branch >actual &&
test_cmp expect actual || return 1
done
ok 13 - show branch --merge-base with two arguments
expecting success of 3202.14 'show branch --merge-base with N arguments':
git rev-parse initial >expect &&
git show-branch --merge-base $(cat branches.sorted) >actual &&
test_cmp expect actual &&
git merge-base $(cat branches.sorted) >actual &&
test_cmp expect actual
ok 14 - show branch --merge-base with N arguments
expecting success of 3202.15 'show branch --reflog=2':
sed "s/^> //" >expect <<-\EOF &&
> ! [refs/heads/branch10@{0}] (4 years, 5 months ago) commit: branch10
> ! [refs/heads/branch10@{1}] (4 years, 5 months ago) commit: branch10
> --
> + [refs/heads/branch10@{0}] branch10
> ++ [refs/heads/branch10@{1}] initial
EOF
git show-branch --reflog=2 >actual &&
test_cmp actual expect
ok 15 - show branch --reflog=2
expecting success of 3202.16 'show-branch --all --reflog (should fail)':
test_must_fail git show-branch $combo 2>error &&
grep -e "cannot be used together" -e "usage:" error
fatal: options '--reflog' and '--all/--remotes/--independent/--merge-base' cannot be used together
ok 16 - show-branch --all --reflog (should fail)
expecting success of 3202.17 'show-branch --merge-base --reflog (should fail)':
test_must_fail git show-branch $combo 2>error &&
grep -e "cannot be used together" -e "usage:" error
usage: git show-branch [-a | --all] [-r | --remotes] [--topo-order | --date-order]
ok 17 - show-branch --merge-base --reflog (should fail)
expecting success of 3202.18 'show-branch --list --merge-base (should fail)':
test_must_fail git show-branch $combo 2>error &&
grep -e "cannot be used together" -e "usage:" error
usage: git show-branch [-a | --all] [-r | --remotes] [--topo-order | --date-order]
ok 18 - show-branch --list --merge-base (should fail)
expecting success of 3202.19 'show-branch --reflog --current (should fail)':
test_must_fail git show-branch $combo 2>error &&
grep -e "cannot be used together" -e "usage:" error
fatal: options '--reflog' and '--current' cannot be used together
ok 19 - show-branch --reflog --current (should fail)
expecting success of 3202.20 'show-branch --no-topo-order (should fail)':
test_must_fail git show-branch --no-$opt 2>err &&
grep "unknown option .no-$opt." err
error: unknown option `no-topo-order'
ok 20 - show-branch --no-topo-order (should fail)
expecting success of 3202.21 'show-branch --no-date-order (should fail)':
test_must_fail git show-branch --no-$opt 2>err &&
grep "unknown option .no-$opt." err
error: unknown option `no-date-order'
ok 21 - show-branch --no-date-order (should fail)
expecting success of 3202.22 'show-branch --no-reflog (should fail)':
test_must_fail git show-branch --no-$opt 2>err &&
grep "unknown option .no-$opt." err
error: unknown option `no-reflog'
ok 22 - show-branch --no-reflog (should fail)
expecting success of 3202.23 'error descriptions on non-existent branch':
cat >expect <<-EOF &&
error: No branch named 'non-existent'.
EOF
test_must_fail git branch --edit-description non-existent 2>actual &&
test_cmp expect actual
ok 23 - error descriptions on non-existent branch
expecting success of 3202.24 'fatal descriptions on non-existent branch':
cat >expect <<-EOF &&
fatal: branch 'non-existent' does not exist
EOF
test_must_fail git branch --set-upstream-to=non-existent non-existent 2>actual &&
test_cmp expect actual &&
cat >expect <<-EOF &&
fatal: No branch named 'non-existent'.
EOF
test_must_fail git branch -c non-existent new-branch 2>actual &&
test_cmp expect actual &&
test_must_fail git branch -m non-existent new-branch 2>actual &&
test_cmp expect actual
ok 24 - fatal descriptions on non-existent branch
expecting success of 3202.25 'error descriptions on orphan branch':
test_when_finished git worktree remove -f wt &&
git worktree add wt --detach &&
git -C wt checkout --orphan orphan-branch &&
test_branch_op_in_wt() {
test_orphan_error() {
test_must_fail git $* 2>actual &&
test_i18ngrep "No commit on branch .orphan-branch. yet.$" actual
} &&
test_orphan_error -C wt branch $1 $2 && # implicit branch
test_orphan_error -C wt branch $1 orphan-branch $2 && # explicit branch
test_orphan_error branch $1 orphan-branch $2 # different worktree
} &&
test_branch_op_in_wt --edit-description &&
test_branch_op_in_wt --set-upstream-to=ne &&
test_branch_op_in_wt -c new-branch
Preparing worktree (detached HEAD 3b327e0)
HEAD is now at 3b327e0 branch10
Switched to a new branch 'orphan-branch'
error: No commit on branch 'orphan-branch' yet.
error: No commit on branch 'orphan-branch' yet.
error: No commit on branch 'orphan-branch' yet.
fatal: No commit on branch 'orphan-branch' yet.
fatal: No commit on branch 'orphan-branch' yet.
fatal: No commit on branch 'orphan-branch' yet.
fatal: No commit on branch 'orphan-branch' yet.
fatal: No commit on branch 'orphan-branch' yet.
fatal: No commit on branch 'orphan-branch' yet.
ok 25 - error descriptions on orphan branch
# passed all 25 test(s)
1..25
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3203-branch-output.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3203-branch-output/.git/
expecting success of 3203.1 'make commits':
echo content >file &&
git add file &&
git commit -m one &&
git branch -M main &&
echo content >>file &&
git commit -a -m two
[master (root-commit) f39a923] one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
[main 5647d5f] two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
ok 1 - make commits
expecting success of 3203.2 'make branches':
git branch branch-one &&
git branch branch-two HEAD^
ok 2 - make branches
expecting success of 3203.3 'make remote branches':
git update-ref refs/remotes/origin/branch-one branch-one &&
git update-ref refs/remotes/origin/branch-two branch-two &&
git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/branch-one
ok 3 - make remote branches
expecting success of 3203.4 'git branch shows local branches':
git branch >actual &&
test_cmp expect actual
ok 4 - git branch shows local branches
expecting success of 3203.5 'git branch --list shows local branches':
git branch --list >actual &&
test_cmp expect actual
ok 5 - git branch --list shows local branches
expecting success of 3203.6 'git branch --list pattern shows matching local branches':
git branch --list branch* >actual &&
test_cmp expect actual
ok 6 - git branch --list pattern shows matching local branches
expecting success of 3203.7 'git branch -r shows remote branches':
git branch -r >actual &&
test_cmp expect actual &&
git branch --remotes >actual &&
test_cmp expect actual
ok 7 - git branch -r shows remote branches
expecting success of 3203.8 'git branch --no-remotes is rejected':
test_must_fail git branch --no-remotes 2>err &&
grep "unknown option .no-remotes." err
error: unknown option `no-remotes'
ok 8 - git branch --no-remotes is rejected
expecting success of 3203.9 'git branch -a shows local and remote branches':
git branch -a >actual &&
test_cmp expect actual &&
git branch --all >actual &&
test_cmp expect actual
ok 9 - git branch -a shows local and remote branches
expecting success of 3203.10 'git branch --no-all is rejected':
test_must_fail git branch --no-all 2>err &&
grep "unknown option .no-all." err
error: unknown option `no-all'
ok 10 - git branch --no-all is rejected
expecting success of 3203.11 'git branch -v shows branch summaries':
git branch -v >tmp &&
awk "{print \$NF}" <tmp >actual &&
test_cmp expect actual
ok 11 - git branch -v shows branch summaries
expecting success of 3203.12 'git branch --list -v pattern shows branch summaries':
git branch --list -v branch* >tmp &&
awk "{print \$NF}" <tmp >actual &&
test_cmp expect actual
ok 12 - git branch --list -v pattern shows branch summaries
expecting success of 3203.13 'git branch --ignore-case --list -v pattern shows branch summaries':
git branch --list --ignore-case -v BRANCH* >tmp &&
awk "{print \$NF}" <tmp >actual &&
test_cmp expect actual
ok 13 - git branch --ignore-case --list -v pattern shows branch summaries
expecting success of 3203.14 'git branch -v pattern does not show branch summaries':
test_must_fail git branch -v branch*
fatal: 'branch*' is not a valid branch name
ok 14 - git branch -v pattern does not show branch summaries
expecting success of 3203.15 'git branch `--show-current` shows current branch':
cat >expect <<-\EOF &&
branch-two
EOF
git checkout branch-two &&
git branch --show-current >actual &&
test_cmp expect actual
Switched to branch 'branch-two'
ok 15 - git branch `--show-current` shows current branch
expecting success of 3203.16 'git branch `--show-current` is silent when detached HEAD':
git checkout HEAD^0 &&
git branch --show-current >actual &&
test_must_be_empty actual
Note: switching to 'HEAD^0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at f39a923 one
ok 16 - git branch `--show-current` is silent when detached HEAD
expecting success of 3203.17 'git branch `--show-current` works properly when tag exists':
cat >expect <<-\EOF &&
branch-and-tag-name
EOF
test_when_finished "
git checkout branch-one
git branch -D branch-and-tag-name
" &&
git checkout -b branch-and-tag-name &&
test_when_finished "git tag -d branch-and-tag-name" &&
git tag branch-and-tag-name &&
git branch --show-current >actual &&
test_cmp expect actual
Switched to a new branch 'branch-and-tag-name'
Deleted tag 'branch-and-tag-name' (was f39a923)
Switched to branch 'branch-one'
Deleted branch branch-and-tag-name (was f39a923).
ok 17 - git branch `--show-current` works properly when tag exists
expecting success of 3203.18 'git branch `--show-current` works properly with worktrees':
cat >expect <<-\EOF &&
branch-one
branch-two
EOF
git checkout branch-one &&
test_when_finished "
git worktree remove worktree_dir
" &&
git worktree add worktree_dir branch-two &&
{
git branch --show-current &&
git -C worktree_dir branch --show-current
} >actual &&
test_cmp expect actual
Already on 'branch-one'
Preparing worktree (checking out 'branch-two')
HEAD is now at f39a923 one
ok 18 - git branch `--show-current` works properly with worktrees
expecting success of 3203.19 'git branch shows detached HEAD properly':
cat >expect <<EOF &&
* (HEAD detached at $(git rev-parse --short HEAD^0))
branch-one
branch-two
main
EOF
git checkout HEAD^0 &&
git branch >actual &&
test_cmp expect actual
Note: switching to 'HEAD^0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 5647d5f two
ok 19 - git branch shows detached HEAD properly
expecting success of 3203.20 'git branch shows detached HEAD properly after checkout --detach':
git checkout main &&
cat >expect <<EOF &&
* (HEAD detached at $(git rev-parse --short HEAD^0))
branch-one
branch-two
main
EOF
git checkout --detach &&
git branch >actual &&
test_cmp expect actual
Switched to branch 'main'
HEAD is now at 5647d5f two
ok 20 - git branch shows detached HEAD properly after checkout --detach
expecting success of 3203.21 'git branch shows detached HEAD properly after moving':
cat >expect <<EOF &&
* (HEAD detached from $(git rev-parse --short HEAD))
branch-one
branch-two
main
EOF
git reset --hard HEAD^1 &&
git branch >actual &&
test_cmp expect actual
HEAD is now at f39a923 one
ok 21 - git branch shows detached HEAD properly after moving
expecting success of 3203.22 'git branch shows detached HEAD properly from tag':
cat >expect <<EOF &&
* (HEAD detached at fromtag)
branch-one
branch-two
main
EOF
git tag fromtag main &&
git checkout fromtag &&
git branch >actual &&
test_cmp expect actual
Previous HEAD position was f39a923 one
HEAD is now at 5647d5f two
ok 22 - git branch shows detached HEAD properly from tag
expecting success of 3203.23 'git branch shows detached HEAD properly after moving from tag':
cat >expect <<EOF &&
* (HEAD detached from fromtag)
branch-one
branch-two
main
EOF
git reset --hard HEAD^1 &&
git branch >actual &&
test_cmp expect actual
HEAD is now at f39a923 one
ok 23 - git branch shows detached HEAD properly after moving from tag
expecting success of 3203.24 'git branch `--sort=[-]objectsize` option':
cat >expect <<-\EOF &&
* (HEAD detached from fromtag)
branch-two
branch-one
main
EOF
git branch --sort=objectsize >actual &&
test_cmp expect actual &&
cat >expect <<-\EOF &&
* (HEAD detached from fromtag)
branch-one
main
branch-two
EOF
git branch --sort=-objectsize >actual &&
test_cmp expect actual
ok 24 - git branch `--sort=[-]objectsize` option
expecting success of 3203.25 'git branch `--sort=[-]type` option':
cat >expect <<-\EOF &&
* (HEAD detached from fromtag)
branch-one
branch-two
main
EOF
git branch --sort=type >actual &&
test_cmp expect actual &&
cat >expect <<-\EOF &&
* (HEAD detached from fromtag)
branch-one
branch-two
main
EOF
git branch --sort=-type >actual &&
test_cmp expect actual
ok 25 - git branch `--sort=[-]type` option
expecting success of 3203.26 'git branch `--sort=[-]version:refname` option':
cat >expect <<-\EOF &&
* (HEAD detached from fromtag)
branch-one
branch-two
main
EOF
git branch --sort=version:refname >actual &&
test_cmp expect actual &&
cat >expect <<-\EOF &&
* (HEAD detached from fromtag)
main
branch-two
branch-one
EOF
git branch --sort=-version:refname >actual &&
test_cmp expect actual
ok 26 - git branch `--sort=[-]version:refname` option
expecting success of 3203.27 'git branch --points-at option':
cat >expect <<-\EOF &&
branch-one
main
EOF
git branch --points-at=branch-one >actual &&
test_cmp expect actual
ok 27 - git branch --points-at option
expecting success of 3203.28 'ambiguous branch/tag not marked':
git tag ambiguous &&
git branch ambiguous &&
echo " ambiguous" >expect &&
git branch --list ambiguous >actual &&
test_cmp expect actual
ok 28 - ambiguous branch/tag not marked
expecting success of 3203.29 'local-branch symrefs shortened properly':
git symbolic-ref refs/heads/ref-to-branch refs/heads/branch-one &&
git symbolic-ref refs/heads/ref-to-remote refs/remotes/origin/branch-one &&
cat >expect <<-\EOF &&
ref-to-branch -> branch-one
ref-to-remote -> origin/branch-one
EOF
git branch >actual.raw &&
grep ref-to <actual.raw >actual &&
test_cmp expect actual
ok 29 - local-branch symrefs shortened properly
expecting success of 3203.30 'sort branches, ignore case':
(
git init -b main sort-icase &&
cd sort-icase &&
test_commit initial &&
git branch branch-one &&
git branch BRANCH-two &&
git branch --list | awk "{print \$NF}" >actual &&
cat >expected <<-\EOF &&
BRANCH-two
branch-one
main
EOF
test_cmp expected actual &&
git branch --list -i | awk "{print \$NF}" >actual &&
cat >expected <<-\EOF &&
branch-one
BRANCH-two
main
EOF
test_cmp expected actual
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3203-branch-output/sort-icase/.git/
[main (root-commit) 24b24cf] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 initial.t
ok 30 - sort branches, ignore case
expecting success of 3203.31 'git branch --format option':
cat >expect <<-\EOF &&
Refname is (HEAD detached from fromtag)
Refname is refs/heads/ambiguous
Refname is refs/heads/branch-one
Refname is refs/heads/branch-two
Refname is refs/heads/main
Refname is refs/heads/ref-to-branch
Refname is refs/heads/ref-to-remote
EOF
git branch --format="Refname is %(refname)" >actual &&
test_cmp expect actual
ok 31 - git branch --format option
expecting success of 3203.32 'git branch --format with ahead-behind':
cat >expect <<-\EOF &&
(HEAD detached from fromtag) 0 0
refs/heads/ambiguous 0 0
refs/heads/branch-one 1 0
refs/heads/branch-two 0 0
refs/heads/main 1 0
refs/heads/ref-to-branch 1 0
refs/heads/ref-to-remote 1 0
EOF
git branch --format="%(refname) %(ahead-behind:HEAD)" >actual &&
test_cmp expect actual
ok 32 - git branch --format with ahead-behind
expecting success of 3203.33 'git branch with --format=%(rest) must fail':
test_must_fail git branch --format="%(rest)" >actual
fatal: this command reject atom %(rest)
ok 33 - git branch with --format=%(rest) must fail
expecting success of 3203.34 'git branch --format --omit-empty':
cat >expect <<-\EOF &&
Refname is (HEAD detached from fromtag)
Refname is refs/heads/ambiguous
Refname is refs/heads/branch-one
Refname is refs/heads/branch-two
Refname is refs/heads/ref-to-branch
Refname is refs/heads/ref-to-remote
EOF
git branch --format="%(if:notequals=refs/heads/main)%(refname)%(then)Refname is %(refname)%(end)" >actual &&
test_cmp expect actual &&
cat >expect <<-\EOF &&
Refname is (HEAD detached from fromtag)
Refname is refs/heads/ambiguous
Refname is refs/heads/branch-one
Refname is refs/heads/branch-two
Refname is refs/heads/ref-to-branch
Refname is refs/heads/ref-to-remote
EOF
git branch --omit-empty --format="%(if:notequals=refs/heads/main)%(refname)%(then)Refname is %(refname)%(end)" >actual &&
test_cmp expect actual
ok 34 - git branch --format --omit-empty
expecting success of 3203.35 'worktree colors correct':
cat >expect <<-EOF &&
* <GREEN>(HEAD detached from fromtag)<RESET>
ambiguous<RESET>
branch-one<RESET>
+ <CYAN>branch-two<RESET>
main<RESET>
ref-to-branch<RESET> -> branch-one
ref-to-remote<RESET> -> origin/branch-one
EOF
git worktree add worktree_dir branch-two &&
git branch --color >actual.raw &&
rm -r worktree_dir &&
git worktree prune &&
test_decode_color <actual.raw >actual &&
test_cmp expect actual
Preparing worktree (checking out 'branch-two')
HEAD is now at f39a923 one
ok 35 - worktree colors correct
expecting success of 3203.36 'set up color tests':
echo "<RED>main<RESET>" >expect.color &&
echo "main" >expect.bare &&
color_args="--format=%(color:red)%(refname:short) --list main"
ok 36 - set up color tests
expecting success of 3203.37 '%(color) omitted without tty':
TERM=vt100 git branch $color_args >actual.raw &&
test_decode_color <actual.raw >actual &&
test_cmp expect.bare actual
ok 37 - %(color) omitted without tty
checking prerequisite: TTY
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-TTY" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-TTY" &&
test_have_prereq PERL &&
# Reading from the pty master seems to get stuck _sometimes_
# on Mac OS X 10.5.0, using Perl 5.10.0 or 5.8.9.
#
# Reproduction recipe: run
#
# i=0
# while ./test-terminal.perl echo hi $i
# do
# : $((i = $i + 1))
# done
#
# After 2000 iterations or so it hangs.
# https://rt.cpan.org/Ticket/Display.html?id=65692
#
test "$(uname -s)" != Darwin &&
perl "$TEST_DIRECTORY"/test-terminal.perl \
sh -c "test -t 1 && test -t 2"
)
prerequisite TTY ok
expecting success of 3203.38 '%(color) present with tty':
test_terminal git branch $color_args >actual.raw &&
test_decode_color <actual.raw >actual &&
test_cmp expect.color actual
ok 38 - %(color) present with tty
expecting success of 3203.39 '--color overrides auto-color':
git branch --color $color_args >actual.raw &&
test_decode_color <actual.raw >actual &&
test_cmp expect.color actual
ok 39 - --color overrides auto-color
expecting success of 3203.40 'verbose output lists worktree path':
one=$(git rev-parse --short HEAD) &&
two=$(git rev-parse --short main) &&
cat >expect <<-EOF &&
* (HEAD detached from fromtag) $one one
ambiguous $one one
branch-one $two two
+ branch-two $one ($(pwd)/worktree_dir) one
main $two two
ref-to-branch $two two
ref-to-remote $two two
EOF
git worktree add worktree_dir branch-two &&
git branch -vv >actual &&
rm -r worktree_dir &&
git worktree prune &&
test_cmp expect actual
Preparing worktree (checking out 'branch-two')
HEAD is now at f39a923 one
ok 40 - verbose output lists worktree path
# passed all 40 test(s)
1..40
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3204-branch-name-interpretation.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3204-branch-name-interpretation/.git/
expecting success of 3204.1 'set up repo':
test_commit one &&
test_commit two &&
git remote add origin foo.git
[main (root-commit) d79ce16] one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 one.t
[main 139b20d] two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 two.t
ok 1 - set up repo
expecting success of 3204.2 'update branch via @{-1}':
git branch previous one &&
git checkout previous &&
git checkout main &&
git branch -f @{-1} two &&
expect_branch previous two
Switched to branch 'previous'
Switched to branch 'main'
ok 2 - update branch via @{-1}
expecting success of 3204.3 'update branch via local @{upstream}':
git branch local one &&
git branch --set-upstream-to=local &&
git branch -f @{upstream} two &&
expect_branch local two
branch 'main' set up to track 'local'.
ok 3 - update branch via local @{upstream}
expecting success of 3204.4 'disallow updating branch via remote @{upstream}':
git update-ref refs/remotes/origin/remote one &&
git branch --set-upstream-to=origin/remote &&
test_must_fail git branch -f @{upstream} two
branch 'main' set up to track 'origin/remote'.
fatal: '@{upstream}' is not a valid branch name
ok 4 - disallow updating branch via remote @{upstream}
expecting success of 3204.5 'create branch with pseudo-qualified name':
git branch refs/heads/qualified two &&
expect_branch refs/heads/refs/heads/qualified two
ok 5 - create branch with pseudo-qualified name
expecting success of 3204.6 'force-copy a branch to itself via @{-1} is no-op':
git branch -t copiable main &&
git checkout copiable &&
git checkout - &&
git branch -C @{-1} copiable &&
git config --get-all branch.copiable.merge >actual &&
echo refs/heads/main >expect &&
test_cmp expect actual
branch 'copiable' set up to track 'main'.
Switched to branch 'copiable'
Your branch is up to date with 'main'.
Switched to branch 'main'
Your branch is ahead of 'origin/remote' by 1 commit.
(use "git push" to publish your local commits)
ok 6 - force-copy a branch to itself via @{-1} is no-op
expecting success of 3204.7 'delete branch via @{-1}':
git branch previous-del &&
git checkout previous-del &&
git checkout main &&
git branch -D @{-1} &&
expect_deleted previous-del
Switched to branch 'previous-del'
Switched to branch 'main'
Your branch is ahead of 'origin/remote' by 1 commit.
(use "git push" to publish your local commits)
Deleted branch previous-del (was 139b20d).
fatal: Needed a single revision
ok 7 - delete branch via @{-1}
expecting success of 3204.8 'delete branch via local @{upstream}':
git branch local-del &&
git branch --set-upstream-to=local-del &&
git branch -D @{upstream} &&
expect_deleted local-del
branch 'main' set up to track 'local-del'.
Deleted branch local-del (was 139b20d).
fatal: Needed a single revision
ok 8 - delete branch via local @{upstream}
expecting success of 3204.9 'delete branch via remote @{upstream}':
git update-ref refs/remotes/origin/remote-del two &&
git branch --set-upstream-to=origin/remote-del &&
git branch -r -D @{upstream} &&
expect_deleted origin/remote-del
branch 'main' set up to track 'origin/remote-del'.
Deleted remote-tracking branch origin/remote-del (was 139b20d).
fatal: Needed a single revision
ok 9 - delete branch via remote @{upstream}
expecting success of 3204.10 'delete @{upstream} expansion matches -r option':
git update-ref refs/remotes/origin/remote-del two &&
git branch --set-upstream-to=origin/remote-del &&
git update-ref refs/heads/origin/remote-del two &&
git update-ref refs/heads/remotes/origin/remote-del two &&
test_must_fail git branch -D @{upstream} &&
expect_branch refs/heads/origin/remote-del two &&
expect_branch refs/heads/remotes/origin/remote-del two
branch 'main' set up to track 'origin/remote-del'.
error: branch '@{upstream}' not found.
ok 10 - delete @{upstream} expansion matches -r option
expecting success of 3204.11 'disallow deleting remote branch via @{-1}':
git update-ref refs/remotes/origin/previous one &&
git checkout -b origin/previous two &&
git checkout main &&
test_must_fail git branch -r -D @{-1} &&
expect_branch refs/remotes/origin/previous one &&
expect_branch refs/heads/origin/previous two
Switched to a new branch 'origin/previous'
Switched to branch 'main'
Your branch is up to date with 'remotes/origin/remote-del'.
error: remote-tracking branch '@{-1}' not found.
ok 11 - disallow deleting remote branch via @{-1}
expecting success of 3204.12 'create branch named "@"':
git branch -f @ one &&
expect_branch refs/heads/@ one
ok 12 - create branch named "@"
expecting success of 3204.13 'delete branch named "@"':
git update-ref refs/heads/@ two &&
git branch -D @ &&
expect_deleted refs/heads/@
Deleted branch @ (was 139b20d).
fatal: Needed a single revision
ok 13 - delete branch named "@"
expecting success of 3204.14 'checkout does not treat remote @{upstream} as a branch':
git update-ref refs/remotes/origin/checkout one &&
git branch --set-upstream-to=origin/checkout &&
git update-ref refs/heads/origin/checkout two &&
git update-ref refs/heads/remotes/origin/checkout two &&
git checkout @{upstream} &&
expect_branch HEAD one
branch 'main' set up to track 'origin/checkout'.
warning: refname '@{upstream}' is ambiguous.
Note: switching to '@{upstream}'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at d79ce16 one
ok 14 - checkout does not treat remote @{upstream} as a branch
expecting success of 3204.15 'edit-description via @{-1}':
git checkout -b desc-branch &&
git checkout -b non-desc-branch &&
write_script editor <<-\EOF &&
echo "Branch description" >"$1"
EOF
EDITOR=./editor git branch --edit-description @{-1} &&
test_must_fail git config branch.non-desc-branch.description &&
git config branch.desc-branch.description >actual &&
printf "Branch description\n\n" >expect &&
test_cmp expect actual
Switched to a new branch 'desc-branch'
Switched to a new branch 'non-desc-branch'
ok 15 - edit-description via @{-1}
expecting success of 3204.16 'modify branch upstream via "@{-1}" and "@{-1}@{upstream}"':
git checkout -b upstream-branch &&
git checkout -b upstream-other -t upstream-branch &&
git branch --set-upstream-to upstream-other @{-1} &&
git config branch.upstream-branch.merge >actual &&
echo "refs/heads/upstream-other" >expect &&
test_cmp expect actual &&
git branch --unset-upstream @{-1}@{upstream} &&
test_must_fail git config branch.upstream-other.merge
Switched to a new branch 'upstream-branch'
Switched to a new branch 'upstream-other'
branch 'upstream-other' set up to track 'upstream-branch'.
branch 'upstream-branch' set up to track 'upstream-other'.
ok 16 - modify branch upstream via "@{-1}" and "@{-1}@{upstream}"
# passed all 16 test(s)
1..16
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3205-branch-color.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3205-branch-color/.git/
expecting success of 3205.1 'set up some sample branches':
test_commit foo &&
git branch -M main &&
git update-ref refs/remotes/origin/main HEAD &&
git update-ref refs/heads/other HEAD
[master (root-commit) ddd63c9] foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo.t
ok 1 - set up some sample branches
expecting success of 3205.2 'set up some color config':
git config color.branch.local blue &&
git config color.branch.remote yellow &&
git config color.branch.current cyan
ok 2 - set up some color config
expecting success of 3205.3 'regular output shows colors':
cat >expect <<-\EOF &&
* <CYAN>main<RESET>
<BLUE>other<RESET>
<YELLOW>remotes/origin/main<RESET>
EOF
git branch --color -a >actual.raw &&
test_decode_color <actual.raw >actual &&
test_cmp expect actual
ok 3 - regular output shows colors
expecting success of 3205.4 'verbose output shows colors':
oid=$(git rev-parse --short HEAD) &&
cat >expect <<-EOF &&
* <CYAN>main <RESET> $oid foo
<BLUE>other <RESET> $oid foo
<YELLOW>remotes/origin/main<RESET> $oid foo
EOF
git branch --color -v -a >actual.raw &&
test_decode_color <actual.raw >actual &&
test_cmp expect actual
ok 4 - verbose output shows colors
# passed all 4 test(s)
1..4
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3200-branch.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3200-branch/.git/
expecting success of 3200.1 'prepare a trivial repository':
echo Hello >A &&
git update-index --add A &&
git commit -m "Initial commit." &&
git branch -M main &&
echo World >>A &&
git update-index --add A &&
git commit -m "Second commit." &&
HEAD=$(git rev-parse --verify HEAD)
[main (root-commit) 2daebe9] Initial commit.
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 A
[main da664a6] Second commit.
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
ok 1 - prepare a trivial repository
expecting success of 3200.2 'git branch --help should not have created a bogus branch':
test_might_fail git branch --man --help </dev/null >/dev/null 2>&1 &&
test_path_is_missing .git/refs/heads/--help
ok 2 - git branch --help should not have created a bogus branch
expecting success of 3200.3 'branch -h in broken repository':
mkdir broken &&
(
cd broken &&
git init -b main &&
>.git/refs/heads/main &&
test_expect_code 129 git branch -h >usage 2>&1
) &&
test_i18ngrep "[Uu]sage" broken/usage
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3200-branch/broken/.git/
usage: git branch [<options>] [-r | -a] [--merged] [--no-merged]
ok 3 - branch -h in broken repository
expecting success of 3200.4 'git branch abc should create a branch':
git branch abc && test_path_is_file .git/refs/heads/abc
ok 4 - git branch abc should create a branch
expecting success of 3200.5 'git branch abc should fail when abc exists':
test_must_fail git branch abc
fatal: a branch named 'abc' already exists
ok 5 - git branch abc should fail when abc exists
expecting success of 3200.6 'git branch --force abc should fail when abc is checked out':
test_when_finished git switch main &&
git switch abc &&
test_must_fail git branch --force abc HEAD~1
Switched to branch 'abc'
fatal: cannot force update the branch 'abc' used by worktree at '/<<PKGBUILDDIR>>/t/trash directory.t3200-branch'
Switched to branch 'main'
ok 6 - git branch --force abc should fail when abc is checked out
expecting success of 3200.7 'git branch --force abc should succeed when abc exists':
git rev-parse HEAD~1 >expect &&
git branch --force abc HEAD~1 &&
git rev-parse abc >actual &&
test_cmp expect actual
ok 7 - git branch --force abc should succeed when abc exists
expecting success of 3200.8 'git branch a/b/c should create a branch':
git branch a/b/c && test_path_is_file .git/refs/heads/a/b/c
ok 8 - git branch a/b/c should create a branch
expecting success of 3200.9 'git branch mb main... should create a branch':
git branch mb main... && test_path_is_file .git/refs/heads/mb
ok 9 - git branch mb main... should create a branch
expecting success of 3200.10 'git branch HEAD should fail':
test_must_fail git branch HEAD
fatal: 'HEAD' is not a valid branch name
ok 10 - git branch HEAD should fail
expecting success of 3200.11 'git branch --create-reflog d/e/f should create a branch and a log':
GIT_COMMITTER_DATE="2005-05-26 23:30" \
git -c core.logallrefupdates=false branch --create-reflog d/e/f &&
test_path_is_file .git/refs/heads/d/e/f &&
test_path_is_file .git/logs/refs/heads/d/e/f &&
test_cmp expect .git/logs/refs/heads/d/e/f
ok 11 - git branch --create-reflog d/e/f should create a branch and a log
expecting success of 3200.12 'git branch -d d/e/f should delete a branch and a log':
git branch -d d/e/f &&
test_path_is_missing .git/refs/heads/d/e/f &&
test_must_fail git reflog exists refs/heads/d/e/f
Deleted branch d/e/f (was da664a6).
ok 12 - git branch -d d/e/f should delete a branch and a log
expecting success of 3200.13 'git branch j/k should work after branch j has been deleted':
git branch j &&
git branch -d j &&
git branch j/k
Deleted branch j (was da664a6).
ok 13 - git branch j/k should work after branch j has been deleted
expecting success of 3200.14 'git branch l should work after branch l/m has been deleted':
git branch l/m &&
git branch -d l/m &&
git branch l
Deleted branch l/m (was da664a6).
ok 14 - git branch l should work after branch l/m has been deleted
expecting success of 3200.15 'git branch -m dumps usage':
test_expect_code 128 git branch -m 2>err &&
test_i18ngrep "branch name required" err
fatal: branch name required
ok 15 - git branch -m dumps usage
expecting success of 3200.16 'git branch -m m broken_symref should work':
test_when_finished "git branch -D broken_symref" &&
git branch --create-reflog m &&
git symbolic-ref refs/heads/broken_symref refs/heads/i_am_broken &&
git branch -m m broken_symref &&
git reflog exists refs/heads/broken_symref &&
test_must_fail git reflog exists refs/heads/i_am_broken
Deleted branch broken_symref (was da664a6).
ok 16 - git branch -m m broken_symref should work
expecting success of 3200.17 'git branch -m m m/m should work':
git branch --create-reflog m &&
git branch -m m m/m &&
git reflog exists refs/heads/m/m
ok 17 - git branch -m m m/m should work
expecting success of 3200.18 'git branch -m n/n n should work':
git branch --create-reflog n/n &&
git branch -m n/n n &&
git reflog exists refs/heads/n
ok 18 - git branch -m n/n n should work
expecting success of 3200.19 'git branch -m bbb should rename checked out branch':
test_when_finished git branch -D bbb &&
test_when_finished git checkout main &&
git checkout -b aaa &&
git commit --allow-empty -m "a new commit" &&
git rev-parse aaa@{0} >expect &&
git branch -m bbb &&
git rev-parse bbb@{1} >actual &&
test_cmp expect actual &&
git symbolic-ref HEAD >actual &&
echo refs/heads/bbb >expect &&
test_cmp expect actual
Switched to a new branch 'aaa'
[aaa a533b01] a new commit
Author: A U Thor <author@example.com>
Switched to branch 'main'
Deleted branch bbb (was a533b01).
ok 19 - git branch -m bbb should rename checked out branch
expecting success of 3200.20 'renaming checked out branch works with d/f conflict':
test_when_finished "git branch -D foo/bar || git branch -D foo" &&
test_when_finished git checkout main &&
git checkout -b foo &&
git branch -m foo/bar &&
git symbolic-ref HEAD >actual &&
echo refs/heads/foo/bar >expect &&
test_cmp expect actual
Switched to a new branch 'foo'
Switched to branch 'main'
Deleted branch foo/bar (was da664a6).
ok 20 - renaming checked out branch works with d/f conflict
expecting success of 3200.21 'git branch -m o/o o should fail when o/p exists':
git branch o/o &&
git branch o/p &&
test_must_fail git branch -m o/o o
error: 'refs/heads/o/p' exists; cannot create 'refs/heads/o'
fatal: Branch rename failed
ok 21 - git branch -m o/o o should fail when o/p exists
expecting success of 3200.22 'git branch -m o/q o/p should fail when o/p exists':
git branch o/q &&
test_must_fail git branch -m o/q o/p
fatal: a branch named 'o/p' already exists
ok 22 - git branch -m o/q o/p should fail when o/p exists
expecting success of 3200.23 'git branch -M o/q o/p should work when o/p exists':
git branch -M o/q o/p
ok 23 - git branch -M o/q o/p should work when o/p exists
expecting success of 3200.24 'git branch -m -f o/q o/p should work when o/p exists':
git branch o/q &&
git branch -m -f o/q o/p
ok 24 - git branch -m -f o/q o/p should work when o/p exists
expecting success of 3200.25 'git branch -m q r/q should fail when r exists':
git branch q &&
git branch r &&
test_must_fail git branch -m q r/q
error: 'refs/heads/r' exists; cannot create 'refs/heads/r/q'
fatal: Branch rename failed
ok 25 - git branch -m q r/q should fail when r exists
expecting success of 3200.26 'git branch -M foo bar should fail when bar is checked out':
git branch bar &&
git checkout -b foo &&
test_must_fail git branch -M bar foo
Switched to a new branch 'foo'
fatal: cannot force update the branch 'foo' used by worktree at '/<<PKGBUILDDIR>>/t/trash directory.t3200-branch'
ok 26 - git branch -M foo bar should fail when bar is checked out
expecting success of 3200.27 'git branch -M foo bar should fail when bar is checked out in worktree':
git branch -f bar &&
test_when_finished "git worktree remove wt && git branch -D wt" &&
git worktree add wt &&
test_must_fail git branch -M bar wt
Preparing worktree (new branch 'wt')
HEAD is now at da664a6 Second commit.
fatal: cannot force update the branch 'wt' used by worktree at '/<<PKGBUILDDIR>>/t/trash directory.t3200-branch/wt'
Deleted branch wt (was da664a6).
ok 27 - git branch -M foo bar should fail when bar is checked out in worktree
expecting success of 3200.28 'git branch -M baz bam should succeed when baz is checked out':
git checkout -b baz &&
git branch bam &&
git branch -M baz bam &&
test $(git rev-parse --abbrev-ref HEAD) = bam
Switched to a new branch 'baz'
ok 28 - git branch -M baz bam should succeed when baz is checked out
expecting success of 3200.29 'git branch -M baz bam should add entries to .git/logs/HEAD':
msg="Branch: renamed refs/heads/baz to refs/heads/bam" &&
grep " $ZERO_OID.*$msg$" .git/logs/HEAD &&
grep "^$ZERO_OID.*$msg$" .git/logs/HEAD
da664a6b0bffeb0904609e9e14e1beeecfe55c4a 0000000000000000000000000000000000000000 C O Mitter <committer@example.com> 1112354055 +0200 Branch: renamed refs/heads/baz to refs/heads/bam
0000000000000000000000000000000000000000 da664a6b0bffeb0904609e9e14e1beeecfe55c4a C O Mitter <committer@example.com> 1112354055 +0200 Branch: renamed refs/heads/baz to refs/heads/bam
ok 29 - git branch -M baz bam should add entries to .git/logs/HEAD
expecting success of 3200.30 'git branch -M should leave orphaned HEAD alone':
git init -b main orphan &&
(
cd orphan &&
test_commit initial &&
git checkout --orphan lonely &&
grep lonely .git/HEAD &&
test_path_is_missing .git/refs/head/lonely &&
git branch -M main mistress &&
grep lonely .git/HEAD
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3200-branch/orphan/.git/
[main (root-commit) 24b24cf] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 initial.t
Switched to a new branch 'lonely'
ref: refs/heads/lonely
ref: refs/heads/lonely
ok 30 - git branch -M should leave orphaned HEAD alone
expecting success of 3200.31 'resulting reflog can be shown by log -g':
oid=$(git rev-parse HEAD) &&
cat >expect <<-EOF &&
HEAD@{0} $oid $msg
HEAD@{2} $oid checkout: moving from foo to baz
EOF
git log -g --format="%gd %H %gs" -2 HEAD >actual &&
test_cmp expect actual
ok 31 - resulting reflog can be shown by log -g
expecting success of 3200.32 'git branch -M baz bam should succeed when baz is checked out as linked working tree':
git checkout main &&
git worktree add -b baz bazdir &&
git worktree add -f bazdir2 baz &&
git branch -M baz bam &&
test $(git -C bazdir rev-parse --abbrev-ref HEAD) = bam &&
test $(git -C bazdir2 rev-parse --abbrev-ref HEAD) = bam &&
rm -r bazdir bazdir2 &&
git worktree prune
Switched to branch 'main'
Preparing worktree (new branch 'baz')
HEAD is now at da664a6 Second commit.
Preparing worktree (checking out 'baz')
HEAD is now at da664a6 Second commit.
ok 32 - git branch -M baz bam should succeed when baz is checked out as linked working tree
expecting success of 3200.33 'git branch -M fails if updating any linked working tree fails':
git worktree add -b baz bazdir1 &&
git worktree add -f bazdir2 baz &&
touch .git/worktrees/bazdir1/HEAD.lock &&
test_must_fail git branch -M baz bam &&
test $(git -C bazdir2 rev-parse --abbrev-ref HEAD) = bam &&
git branch -M bam baz &&
rm .git/worktrees/bazdir1/HEAD.lock &&
touch .git/worktrees/bazdir2/HEAD.lock &&
test_must_fail git branch -M baz bam &&
test $(git -C bazdir1 rev-parse --abbrev-ref HEAD) = bam &&
rm -rf bazdir1 bazdir2 &&
git worktree prune
Preparing worktree (new branch 'baz')
HEAD is now at da664a6 Second commit.
Preparing worktree (checking out 'baz')
HEAD is now at da664a6 Second commit.
error: Unable to create '/<<PKGBUILDDIR>>/t/trash directory.t3200-branch/.git/worktrees/bazdir1/HEAD.lock': File exists.
Another git process seems to be running in this repository, e.g.
an editor opened by 'git commit'. Please make sure all processes
are terminated then try again. If it still fails, a git process
may have crashed in this repository earlier:
remove the file manually to continue.
error: HEAD of working tree /<<PKGBUILDDIR>>/t/trash directory.t3200-branch/bazdir1 is not updated
fatal: Branch renamed to bam, but HEAD is not updated!
error: Unable to create '/<<PKGBUILDDIR>>/t/trash directory.t3200-branch/.git/worktrees/bazdir2/HEAD.lock': File exists.
Another git process seems to be running in this repository, e.g.
an editor opened by 'git commit'. Please make sure all processes
are terminated then try again. If it still fails, a git process
may have crashed in this repository earlier:
remove the file manually to continue.
error: HEAD of working tree /<<PKGBUILDDIR>>/t/trash directory.t3200-branch/bazdir2 is not updated
fatal: Branch renamed to bam, but HEAD is not updated!
ok 33 - git branch -M fails if updating any linked working tree fails
expecting success of 3200.34 'git branch -M baz bam should succeed within a worktree in which baz is checked out':
git checkout -b baz &&
git worktree add -f bazdir baz &&
(
cd bazdir &&
git branch -M baz bam &&
echo bam >expect &&
git rev-parse --abbrev-ref HEAD >actual &&
test_cmp expect actual
) &&
echo bam >expect &&
git rev-parse --abbrev-ref HEAD >actual &&
test_cmp expect actual &&
rm -r bazdir &&
git worktree prune
Switched to a new branch 'baz'
Preparing worktree (checking out 'baz')
HEAD is now at da664a6 Second commit.
ok 34 - git branch -M baz bam should succeed within a worktree in which baz is checked out
expecting success of 3200.35 'git branch -M main should work when main is checked out':
git checkout main &&
git branch -M main
Switched to branch 'main'
ok 35 - git branch -M main should work when main is checked out
expecting success of 3200.36 'git branch -M main main should work when main is checked out':
git checkout main &&
git branch -M main main
Already on 'main'
ok 36 - git branch -M main main should work when main is checked out
expecting success of 3200.37 'git branch -M topic topic should work when main is checked out':
git checkout main &&
git branch topic &&
git branch -M topic topic
Already on 'main'
ok 37 - git branch -M topic topic should work when main is checked out
expecting success of 3200.38 'git branch -M and -C fail on detached HEAD':
git checkout HEAD^{} &&
test_when_finished git checkout - &&
echo "fatal: cannot rename the current branch while not on any." >expect &&
test_must_fail git branch -M must-fail 2>err &&
test_cmp expect err &&
echo "fatal: cannot copy the current branch while not on any." >expect &&
test_must_fail git branch -C must-fail 2>err &&
test_cmp expect err
Note: switching to 'HEAD^{}'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at da664a6 Second commit.
Switched to branch 'main'
ok 38 - git branch -M and -C fail on detached HEAD
expecting success of 3200.39 'git branch -m should work with orphan branches':
test_when_finished git checkout - &&
test_when_finished git worktree remove -f wt &&
git worktree add wt --detach &&
# rename orphan in another worktreee
git -C wt checkout --orphan orphan-foo-wt &&
git branch -m orphan-foo-wt orphan-bar-wt &&
test orphan-bar-wt=$(git -C orphan-worktree branch --show-current) &&
# rename orphan in the current worktree
git checkout --orphan orphan-foo &&
git branch -m orphan-foo orphan-bar &&
test orphan-bar=$(git branch --show-current)
Preparing worktree (detached HEAD da664a6)
HEAD is now at da664a6 Second commit.
Switched to a new branch 'orphan-foo-wt'
fatal: cannot change to 'orphan-worktree': No such file or directory
Switched to a new branch 'orphan-foo'
Note: switching to 'da664a6b0bffeb0904609e9e14e1beeecfe55c4a'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at da664a6 Second commit.
ok 39 - git branch -m should work with orphan branches
expecting success of 3200.40 'git branch -d on orphan HEAD (merged)':
test_when_finished git checkout main &&
git checkout --orphan orphan &&
test_when_finished "rm -rf .git/objects/commit-graph*" &&
git commit-graph write --reachable &&
git branch --track to-delete main &&
git branch -d to-delete
Switched to a new branch 'orphan'
branch 'to-delete' set up to track 'main'.
warning: deleting branch 'to-delete' that has been merged to
'refs/heads/main', but not yet merged to HEAD.
Deleted branch to-delete (was da664a6).
Switched to branch 'main'
ok 40 - git branch -d on orphan HEAD (merged)
expecting success of 3200.41 'git branch -d on orphan HEAD (merged, graph)':
test_when_finished git checkout main &&
git checkout --orphan orphan &&
git branch --track to-delete main &&
git branch -d to-delete
Switched to a new branch 'orphan'
branch 'to-delete' set up to track 'main'.
warning: deleting branch 'to-delete' that has been merged to
'refs/heads/main', but not yet merged to HEAD.
Deleted branch to-delete (was da664a6).
Switched to branch 'main'
ok 41 - git branch -d on orphan HEAD (merged, graph)
expecting success of 3200.42 'git branch -d on orphan HEAD (unmerged)':
test_when_finished git checkout main &&
git checkout --orphan orphan &&
test_when_finished "git branch -D to-delete" &&
git branch to-delete main &&
test_must_fail git branch -d to-delete 2>err &&
grep "not fully merged" err
Switched to a new branch 'orphan'
error: The branch 'to-delete' is not fully merged.
Deleted branch to-delete (was da664a6).
Switched to branch 'main'
ok 42 - git branch -d on orphan HEAD (unmerged)
expecting success of 3200.43 'git branch -d on orphan HEAD (unmerged, graph)':
test_when_finished git checkout main &&
git checkout --orphan orphan &&
test_when_finished "git branch -D to-delete" &&
git branch to-delete main &&
test_when_finished "rm -rf .git/objects/commit-graph*" &&
git commit-graph write --reachable &&
test_must_fail git branch -d to-delete 2>err &&
grep "not fully merged" err
Switched to a new branch 'orphan'
error: The branch 'to-delete' is not fully merged.
Deleted branch to-delete (was da664a6).
Switched to branch 'main'
ok 43 - git branch -d on orphan HEAD (unmerged, graph)
expecting success of 3200.44 'git branch -v -d t should work':
git branch t &&
git rev-parse --verify refs/heads/t &&
git branch -v -d t &&
test_must_fail git rev-parse --verify refs/heads/t
da664a6b0bffeb0904609e9e14e1beeecfe55c4a
Deleted branch t (was da664a6).
fatal: Needed a single revision
ok 44 - git branch -v -d t should work
expecting success of 3200.45 'git branch -v -m t s should work':
git branch t &&
git rev-parse --verify refs/heads/t &&
git branch -v -m t s &&
test_must_fail git rev-parse --verify refs/heads/t &&
git rev-parse --verify refs/heads/s &&
git branch -d s
da664a6b0bffeb0904609e9e14e1beeecfe55c4a
fatal: Needed a single revision
da664a6b0bffeb0904609e9e14e1beeecfe55c4a
Deleted branch s (was da664a6).
ok 45 - git branch -v -m t s should work
expecting success of 3200.46 'git branch -m -d t s should fail':
git branch t &&
git rev-parse refs/heads/t &&
test_must_fail git branch -m -d t s &&
git branch -d t &&
test_must_fail git rev-parse refs/heads/t
da664a6b0bffeb0904609e9e14e1beeecfe55c4a
usage: git branch [<options>] [-r | -a] [--merged] [--no-merged]
or: git branch [<options>] [-f] [--recurse-submodules] <branch-name> [<start-point>]
or: git branch [<options>] [-l] [<pattern>...]
or: git branch [<options>] [-r] (-d | -D) <branch-name>...
or: git branch [<options>] (-m | -M) [<old-branch>] <new-branch>
or: git branch [<options>] (-c | -C) [<old-branch>] <new-branch>
or: git branch [<options>] [-r | -a] [--points-at]
or: git branch [<options>] [-r | -a] [--format]
Generic options
-v, --verbose show hash and subject, give twice for upstream branch
-q, --quiet suppress informational messages
-t, --track[=(direct|inherit)]
set branch tracking configuration
-u, --set-upstream-to <upstream>
change the upstream info
--unset-upstream unset the upstream info
--color[=<when>] use colored output
-r, --remotes act on remote-tracking branches
--contains <commit> print only branches that contain the commit
--no-contains <commit>
print only branches that don't contain the commit
--abbrev[=<n>] use <n> digits to display object names
Specific git-branch actions:
-a, --all list both remote-tracking and local branches
-d, --delete delete fully merged branch
-D delete branch (even if not merged)
-m, --move move/rename a branch and its reflog
-M move/rename a branch, even if target exists
--omit-empty do not output a newline after empty formatted refs
-c, --copy copy a branch and its reflog
-C copy a branch, even if target exists
-l, --list list branch names
--show-current show current branch name
--create-reflog create the branch's reflog
--edit-description edit the description for the branch
-f, --force force creation, move/rename, deletion
--merged <commit> print only branches that are merged
--no-merged <commit> print only branches that are not merged
--column[=<style>] list branches in columns
--sort <key> field name to sort on
--points-at <object> print only branches of the object
-i, --ignore-case sorting and filtering are case insensitive
--recurse-submodules recurse through submodules
--format <format> format to use for the output
Deleted branch t (was da664a6).
fatal: ambiguous argument 'refs/heads/t': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
refs/heads/t
ok 46 - git branch -m -d t s should fail
expecting success of 3200.47 'git branch --list -d t should fail':
git branch t &&
git rev-parse refs/heads/t &&
test_must_fail git branch --list -d t &&
git branch -d t &&
test_must_fail git rev-parse refs/heads/t
da664a6b0bffeb0904609e9e14e1beeecfe55c4a
usage: git branch [<options>] [-r | -a] [--merged] [--no-merged]
or: git branch [<options>] [-f] [--recurse-submodules] <branch-name> [<start-point>]
or: git branch [<options>] [-l] [<pattern>...]
or: git branch [<options>] [-r] (-d | -D) <branch-name>...
or: git branch [<options>] (-m | -M) [<old-branch>] <new-branch>
or: git branch [<options>] (-c | -C) [<old-branch>] <new-branch>
or: git branch [<options>] [-r | -a] [--points-at]
or: git branch [<options>] [-r | -a] [--format]
Generic options
-v, --verbose show hash and subject, give twice for upstream branch
-q, --quiet suppress informational messages
-t, --track[=(direct|inherit)]
set branch tracking configuration
-u, --set-upstream-to <upstream>
change the upstream info
--unset-upstream unset the upstream info
--color[=<when>] use colored output
-r, --remotes act on remote-tracking branches
--contains <commit> print only branches that contain the commit
--no-contains <commit>
print only branches that don't contain the commit
--abbrev[=<n>] use <n> digits to display object names
Specific git-branch actions:
-a, --all list both remote-tracking and local branches
-d, --delete delete fully merged branch
-D delete branch (even if not merged)
-m, --move move/rename a branch and its reflog
-M move/rename a branch, even if target exists
--omit-empty do not output a newline after empty formatted refs
-c, --copy copy a branch and its reflog
-C copy a branch, even if target exists
-l, --list list branch names
--show-current show current branch name
--create-reflog create the branch's reflog
--edit-description edit the description for the branch
-f, --force force creation, move/rename, deletion
--merged <commit> print only branches that are merged
--no-merged <commit> print only branches that are not merged
--column[=<style>] list branches in columns
--sort <key> field name to sort on
--points-at <object> print only branches of the object
-i, --ignore-case sorting and filtering are case insensitive
--recurse-submodules recurse through submodules
--format <format> format to use for the output
Deleted branch t (was da664a6).
fatal: ambiguous argument 'refs/heads/t': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
refs/heads/t
ok 47 - git branch --list -d t should fail
expecting success of 3200.48 'deleting checked-out branch from repo that is a submodule':
test_when_finished "rm -rf repo1 repo2" &&
git init repo1 &&
git init repo1/sub &&
test_commit -C repo1/sub x &&
test_config_global protocol.file.allow always &&
git -C repo1 submodule add ./sub &&
git -C repo1 commit -m "adding sub" &&
git clone --recurse-submodules repo1 repo2 &&
git -C repo2/sub checkout -b work &&
test_must_fail git -C repo2/sub branch -D work
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3200-branch/repo1/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3200-branch/repo1/sub/.git/
[main (root-commit) cb85766] x
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 x.t
Adding existing repo at 'sub' to the index
[main (root-commit) 0e407d8] adding sub
Author: A U Thor <author@example.com>
2 files changed, 4 insertions(+)
create mode 100644 .gitmodules
create mode 160000 sub
Cloning into 'repo2'...
done.
Submodule 'sub' (/<<PKGBUILDDIR>>/t/trash directory.t3200-branch/repo1/sub) registered for path 'sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3200-branch/repo2/sub'...
done.
Submodule path 'sub': checked out 'cb85766717df318a47d35b1ec7b43b1040fdc133'
Switched to a new branch 'work'
error: Cannot delete branch 'work' checked out at '/<<PKGBUILDDIR>>/t/trash directory.t3200-branch/repo2/.git/modules/sub'
ok 48 - deleting checked-out branch from repo that is a submodule
expecting success of 3200.49 'bare main worktree has HEAD at branch deleted by secondary worktree':
test_when_finished "rm -rf nonbare base secondary" &&
git init -b main nonbare &&
test_commit -C nonbare x &&
git clone --bare nonbare bare &&
git -C bare worktree add --detach ../secondary main &&
git -C secondary branch -D main
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3200-branch/nonbare/.git/
[main (root-commit) 6f481db] x
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 x.t
Cloning into bare repository 'bare'...
done.
Preparing worktree (detached HEAD 6f481db)
HEAD is now at 6f481db x
Deleted branch main (was 6f481db).
ok 49 - bare main worktree has HEAD at branch deleted by secondary worktree
expecting success of 3200.50 'git branch --list -v with --abbrev':
test_when_finished "git branch -D t" &&
git branch t &&
git branch -v --list t >actual.default &&
git branch -v --list --abbrev t >actual.abbrev &&
test_cmp actual.default actual.abbrev &&
git branch -v --list --no-abbrev t >actual.noabbrev &&
git branch -v --list --abbrev=0 t >actual.0abbrev &&
git -c core.abbrev=no branch -v --list t >actual.noabbrev-conf &&
test_cmp actual.noabbrev actual.0abbrev &&
test_cmp actual.noabbrev actual.noabbrev-conf &&
git branch -v --list --abbrev=36 t >actual.36abbrev &&
# how many hexdigits are used?
read name objdefault rest <actual.abbrev &&
read name obj36 rest <actual.36abbrev &&
objfull=$(git rev-parse --verify t) &&
# are we really getting abbreviations?
test "$obj36" != "$objdefault" &&
expr "$obj36" : "$objdefault" >/dev/null &&
test "$objfull" != "$obj36" &&
expr "$objfull" : "$obj36" >/dev/null
Deleted branch t (was da664a6).
ok 50 - git branch --list -v with --abbrev
expecting success of 3200.51 'git branch --column':
COLUMNS=81 git branch --column=column >actual &&
cat >expect <<\EOF &&
a/b/c bam foo l * main n o/p r
abc bar j/k m/m mb o/o q topic
EOF
test_cmp expect actual
ok 51 - git branch --column
expecting success of 3200.52 'git branch --column with an extremely long branch name':
long=this/is/a/part/of/long/branch/name &&
long=z$long/$long/$long/$long &&
test_when_finished "git branch -d $long" &&
git branch $long &&
COLUMNS=80 git branch --column=column >actual &&
cat >expect <<EOF &&
a/b/c
abc
bam
bar
foo
j/k
l
m/m
* main
mb
n
o/o
o/p
q
r
topic
$long
EOF
test_cmp expect actual
Deleted branch zthis/is/a/part/of/long/branch/name/this/is/a/part/of/long/branch/name/this/is/a/part/of/long/branch/name/this/is/a/part/of/long/branch/name (was da664a6).
ok 52 - git branch --column with an extremely long branch name
expecting success of 3200.53 'git branch with column.*':
git config column.ui column &&
git config column.branch "dense" &&
COLUMNS=80 git branch >actual &&
git config --unset column.branch &&
git config --unset column.ui &&
cat >expect <<\EOF &&
a/b/c bam foo l * main n o/p r
abc bar j/k m/m mb o/o q topic
EOF
test_cmp expect actual
ok 53 - git branch with column.*
expecting success of 3200.54 'git branch --column -v should fail':
test_must_fail git branch --column -v
fatal: options '--column' and '--verbose' cannot be used together
ok 54 - git branch --column -v should fail
expecting success of 3200.55 'git branch -v with column.ui ignored':
git config column.ui column &&
COLUMNS=80 git branch -v | cut -c -8 | sed "s/ *$//" >actual &&
git config --unset column.ui &&
cat >expect <<\EOF &&
a/b/c
abc
bam
bar
foo
j/k
l
m/m
* main
mb
n
o/o
o/p
q
r
topic
EOF
test_cmp expect actual
ok 55 - git branch -v with column.ui ignored
checking prerequisite: SHA1
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SHA1" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SHA1" &&
case "$GIT_DEFAULT_HASH" in
sha1) true ;;
"") test $(git hash-object /dev/null) = e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 ;;
*) false ;;
esac
)
prerequisite SHA1 ok
expecting success of 3200.56 'git branch -m q q2 without config should succeed':
git branch -m q q2 &&
git branch -m q2 q
ok 56 - git branch -m q q2 without config should succeed
expecting success of 3200.57 'git branch -m s/s s should work when s/t is deleted':
git branch --create-reflog s/s &&
git reflog exists refs/heads/s/s &&
git branch --create-reflog s/t &&
git reflog exists refs/heads/s/t &&
git branch -d s/t &&
git branch -m s/s s &&
git reflog exists refs/heads/s
Deleted branch s/t (was da664a6).
ok 57 - git branch -m s/s s should work when s/t is deleted
expecting success of 3200.58 'config information was renamed, too':
test $(git config branch.s.dummy) = Hello &&
test_must_fail git config branch.s/s.dummy
ok 58 - config information was renamed, too
expecting success of 3200.59 'git branch -m correctly renames multiple config sections':
test_when_finished "git checkout main" &&
git checkout -b source main &&
# Assert that a config file with multiple config sections has
# those sections preserved...
cat >expect <<-\EOF &&
branch.dest.key1=value1
some.gar.b=age
branch.dest.key2=value2
EOF
cat >config.branch <<\EOF &&
;; Note the lack of -\EOF above & mixed indenting here. This is
;; intentional, we are also testing that the formatting of copied
;; sections is preserved.
;; Comment for source. Tabs
[branch "source"]
;; Comment for the source value
key1 = value1
;; Comment for some.gar. Spaces
[some "gar"]
;; Comment for the some.gar value
b = age
;; Comment for source, again. Mixed tabs/spaces.
[branch "source"]
;; Comment for the source value, again
key2 = value2
EOF
cat config.branch >>.git/config &&
git branch -m source dest &&
git config -f .git/config -l | grep -F -e source -e dest -e some.gar >actual &&
test_cmp expect actual &&
# ...and that the comments for those sections are also
# preserved.
cat config.branch | sed "s/\"source\"/\"dest\"/" >expect &&
sed -n -e "/Note the lack/,\$p" .git/config >actual &&
test_cmp expect actual
Switched to a new branch 'source'
Switched to branch 'main'
ok 59 - git branch -m correctly renames multiple config sections
expecting success of 3200.60 'git branch -c dumps usage':
test_expect_code 128 git branch -c 2>err &&
test_i18ngrep "branch name required" err
fatal: branch name required
ok 60 - git branch -c dumps usage
expecting success of 3200.61 'git branch --copy dumps usage':
test_expect_code 128 git branch --copy 2>err &&
test_i18ngrep "branch name required" err
fatal: branch name required
ok 61 - git branch --copy dumps usage
expecting success of 3200.62 'git branch -c d e should work':
git branch --create-reflog d &&
git reflog exists refs/heads/d &&
git config branch.d.dummy Hello &&
git branch -c d e &&
git reflog exists refs/heads/d &&
git reflog exists refs/heads/e &&
echo Hello >expect &&
git config branch.e.dummy >actual &&
test_cmp expect actual &&
echo Hello >expect &&
git config branch.d.dummy >actual &&
test_cmp expect actual
ok 62 - git branch -c d e should work
expecting success of 3200.63 'git branch --copy is a synonym for -c':
git branch --create-reflog copy &&
git reflog exists refs/heads/copy &&
git config branch.copy.dummy Hello &&
git branch --copy copy copy-to &&
git reflog exists refs/heads/copy &&
git reflog exists refs/heads/copy-to &&
echo Hello >expect &&
git config branch.copy.dummy >actual &&
test_cmp expect actual &&
echo Hello >expect &&
git config branch.copy-to.dummy >actual &&
test_cmp expect actual
ok 63 - git branch --copy is a synonym for -c
expecting success of 3200.64 'git branch -c ee ef should copy ee to create branch ef':
git checkout -b ee &&
git reflog exists refs/heads/ee &&
git config branch.ee.dummy Hello &&
git branch -c ee ef &&
git reflog exists refs/heads/ee &&
git reflog exists refs/heads/ef &&
test $(git config branch.ee.dummy) = Hello &&
test $(git config branch.ef.dummy) = Hello &&
test $(git rev-parse --abbrev-ref HEAD) = ee
Switched to a new branch 'ee'
ok 64 - git branch -c ee ef should copy ee to create branch ef
expecting success of 3200.65 'git branch -c f/f g/g should work':
git branch --create-reflog f/f &&
git reflog exists refs/heads/f/f &&
git config branch.f/f.dummy Hello &&
git branch -c f/f g/g &&
git reflog exists refs/heads/f/f &&
git reflog exists refs/heads/g/g &&
test $(git config branch.f/f.dummy) = Hello &&
test $(git config branch.g/g.dummy) = Hello
ok 65 - git branch -c f/f g/g should work
expecting success of 3200.66 'git branch -c m2 m2 should work':
git branch --create-reflog m2 &&
git reflog exists refs/heads/m2 &&
git config branch.m2.dummy Hello &&
git branch -c m2 m2 &&
git reflog exists refs/heads/m2 &&
test $(git config branch.m2.dummy) = Hello
ok 66 - git branch -c m2 m2 should work
expecting success of 3200.67 'git branch -c zz zz/zz should fail':
git branch --create-reflog zz &&
git reflog exists refs/heads/zz &&
test_must_fail git branch -c zz zz/zz
error: directory not empty: .git/logs/refs/heads/zz/zz
fatal: Branch copy failed
ok 67 - git branch -c zz zz/zz should fail
expecting success of 3200.68 'git branch -c b/b b should fail':
git branch --create-reflog b/b &&
test_must_fail git branch -c b/b b
error: directory not empty: .git/logs/refs/heads/b
fatal: Branch copy failed
ok 68 - git branch -c b/b b should fail
expecting success of 3200.69 'git branch -C o/q o/p should work when o/p exists':
git branch --create-reflog o/q &&
git reflog exists refs/heads/o/q &&
git reflog exists refs/heads/o/p &&
git branch -C o/q o/p
ok 69 - git branch -C o/q o/p should work when o/p exists
expecting success of 3200.70 'git branch -c -f o/q o/p should work when o/p exists':
git reflog exists refs/heads/o/q &&
git reflog exists refs/heads/o/p &&
git branch -c -f o/q o/p
ok 70 - git branch -c -f o/q o/p should work when o/p exists
expecting success of 3200.71 'git branch -c qq rr/qq should fail when rr exists':
git branch qq &&
git branch rr &&
test_must_fail git branch -c qq rr/qq
error: 'refs/heads/rr' exists; cannot create 'refs/heads/rr/qq'
fatal: Branch copy failed
ok 71 - git branch -c qq rr/qq should fail when rr exists
expecting success of 3200.72 'git branch -C b1 b2 should fail when b2 is checked out':
git branch b1 &&
git checkout -b b2 &&
test_must_fail git branch -C b1 b2
Switched to a new branch 'b2'
fatal: cannot force update the branch 'b2' used by worktree at '/<<PKGBUILDDIR>>/t/trash directory.t3200-branch'
ok 72 - git branch -C b1 b2 should fail when b2 is checked out
expecting success of 3200.73 'git branch -C c1 c2 should succeed when c1 is checked out':
git checkout -b c1 &&
git branch c2 &&
git branch -C c1 c2 &&
test $(git rev-parse --abbrev-ref HEAD) = c1
Switched to a new branch 'c1'
ok 73 - git branch -C c1 c2 should succeed when c1 is checked out
expecting success of 3200.74 'git branch -C c1 c2 should never touch HEAD':
msg="Branch: copied refs/heads/c1 to refs/heads/c2" &&
! grep "$msg$" .git/logs/HEAD
ok 74 - git branch -C c1 c2 should never touch HEAD
expecting success of 3200.75 'git branch -C main should work when main is checked out':
git checkout main &&
git branch -C main
Switched to branch 'main'
ok 75 - git branch -C main should work when main is checked out
expecting success of 3200.76 'git branch -C main main should work when main is checked out':
git checkout main &&
git branch -C main main
Already on 'main'
ok 76 - git branch -C main main should work when main is checked out
expecting success of 3200.77 'git branch -C main5 main5 should work when main is checked out':
git checkout main &&
git branch main5 &&
git branch -C main5 main5
Already on 'main'
ok 77 - git branch -C main5 main5 should work when main is checked out
expecting success of 3200.78 'git branch -C ab cd should overwrite existing config for cd':
git branch --create-reflog cd &&
git reflog exists refs/heads/cd &&
git config branch.cd.dummy CD &&
git branch --create-reflog ab &&
git reflog exists refs/heads/ab &&
git config branch.ab.dummy AB &&
git branch -C ab cd &&
git reflog exists refs/heads/ab &&
git reflog exists refs/heads/cd &&
test $(git config branch.ab.dummy) = AB &&
test $(git config branch.cd.dummy) = AB
ok 78 - git branch -C ab cd should overwrite existing config for cd
expecting success of 3200.79 'git branch -c correctly copies multiple config sections':
FOO=1 &&
export FOO &&
test_when_finished "git checkout main" &&
git checkout -b source2 main &&
# Assert that a config file with multiple config sections has
# those sections preserved...
cat >expect <<-\EOF &&
branch.source2.key1=value1
branch.dest2.key1=value1
more.gar.b=age
branch.source2.key2=value2
branch.dest2.key2=value2
EOF
cat >config.branch <<\EOF &&
;; Note the lack of -\EOF above & mixed indenting here. This is
;; intentional, we are also testing that the formatting of copied
;; sections is preserved.
;; Comment for source2. Tabs
[branch "source2"]
;; Comment for the source2 value
key1 = value1
;; Comment for more.gar. Spaces
[more "gar"]
;; Comment for the more.gar value
b = age
;; Comment for source2, again. Mixed tabs/spaces.
[branch "source2"]
;; Comment for the source2 value, again
key2 = value2
EOF
cat config.branch >>.git/config &&
git branch -c source2 dest2 &&
git config -f .git/config -l | grep -F -e source2 -e dest2 -e more.gar >actual &&
test_cmp expect actual &&
# ...and that the comments and formatting for those sections
# is also preserved.
cat >expect <<\EOF &&
;; Comment for source2. Tabs
[branch "source2"]
;; Comment for the source2 value
key1 = value1
;; Comment for more.gar. Spaces
[branch "dest2"]
;; Comment for the source2 value
key1 = value1
;; Comment for more.gar. Spaces
[more "gar"]
;; Comment for the more.gar value
b = age
;; Comment for source2, again. Mixed tabs/spaces.
[branch "source2"]
;; Comment for the source2 value, again
key2 = value2
[branch "dest2"]
;; Comment for the source2 value, again
key2 = value2
EOF
sed -n -e "/Comment for source2/,\$p" .git/config >actual &&
test_cmp expect actual
Switched to a new branch 'source2'
Switched to branch 'main'
ok 79 - git branch -c correctly copies multiple config sections
expecting success of 3200.80 'deleting a symref':
git branch target &&
git symbolic-ref refs/heads/symref refs/heads/target &&
echo "Deleted branch symref (was refs/heads/target)." >expect &&
git branch -d symref >actual &&
test_path_is_file .git/refs/heads/target &&
test_path_is_missing .git/refs/heads/symref &&
test_cmp expect actual
ok 80 - deleting a symref
expecting success of 3200.81 'deleting a dangling symref':
git symbolic-ref refs/heads/dangling-symref nowhere &&
test_path_is_file .git/refs/heads/dangling-symref &&
echo "Deleted branch dangling-symref (was nowhere)." >expect &&
git branch -d dangling-symref >actual &&
test_path_is_missing .git/refs/heads/dangling-symref &&
test_cmp expect actual
ok 81 - deleting a dangling symref
expecting success of 3200.82 'deleting a self-referential symref':
git symbolic-ref refs/heads/self-reference refs/heads/self-reference &&
test_path_is_file .git/refs/heads/self-reference &&
echo "Deleted branch self-reference (was refs/heads/self-reference)." >expect &&
git branch -d self-reference >actual &&
test_path_is_missing .git/refs/heads/self-reference &&
test_cmp expect actual
ok 82 - deleting a self-referential symref
expecting success of 3200.83 'renaming a symref is not allowed':
git symbolic-ref refs/heads/topic refs/heads/main &&
test_must_fail git branch -m topic new-topic &&
git symbolic-ref refs/heads/topic &&
test_path_is_file .git/refs/heads/main &&
test_path_is_missing .git/refs/heads/new-topic
error: refname refs/heads/topic is a symbolic ref, renaming it is not supported
fatal: Branch rename failed
refs/heads/main
ok 83 - renaming a symref is not allowed
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
expecting success of 3200.84 'git branch -m u v should fail when the reflog for u is a symlink':
git branch --create-reflog u &&
mv .git/logs/refs/heads/u real-u &&
ln -s real-u .git/logs/refs/heads/u &&
test_must_fail git branch -m u v
error: reflog for refs/heads/u is a symlink
fatal: Branch rename failed
ok 84 - git branch -m u v should fail when the reflog for u is a symlink
expecting success of 3200.85 'git branch -m with symlinked .git/refs':
test_when_finished "rm -rf subdir" &&
git init --bare subdir &&
rm -rfv subdir/refs subdir/objects subdir/packed-refs &&
ln -s ../.git/refs subdir/refs &&
ln -s ../.git/objects subdir/objects &&
ln -s ../.git/packed-refs subdir/packed-refs &&
git -C subdir rev-parse --absolute-git-dir >subdir.dir &&
git rev-parse --absolute-git-dir >our.dir &&
! test_cmp subdir.dir our.dir &&
git -C subdir log &&
git -C subdir branch rename-src &&
git rev-parse rename-src >expect &&
git -C subdir branch -m rename-src rename-dest &&
git rev-parse rename-dest >actual &&
test_cmp expect actual &&
git branch -D rename-dest
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3200-branch/subdir/
removed directory 'subdir/refs/heads'
removed directory 'subdir/refs/tags'
removed directory 'subdir/refs'
removed directory 'subdir/objects/pack'
removed directory 'subdir/objects/info'
removed directory 'subdir/objects'
--- subdir.dir 2023-10-09 02:18:41.409161369 +0000
+++ our.dir 2023-10-09 02:18:41.413161367 +0000
@@ -1 +1 @@
-/<<PKGBUILDDIR>>/t/trash directory.t3200-branch/subdir
+/<<PKGBUILDDIR>>/t/trash directory.t3200-branch/.git
commit da664a6b0bffeb0904609e9e14e1beeecfe55c4a
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
Second commit.
commit 2daebe96d7fd03d28875d852f87c06a18f4a6639
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
Initial commit.
Deleted branch rename-dest (was da664a6).
ok 85 - git branch -m with symlinked .git/refs
expecting success of 3200.86 'test tracking setup via --track':
git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
(git show-ref -q refs/remotes/local/main || git fetch local) &&
git branch --track my1 local/main &&
test $(git config branch.my1.remote) = local &&
test $(git config branch.my1.merge) = refs/heads/main
From .
* [new branch] a/b/c -> local/a/b/c
* [new branch] ab -> local/ab
* [new branch] abc -> local/abc
* [new branch] b/b -> local/b/b
* [new branch] b1 -> local/b1
* [new branch] b2 -> local/b2
* [new branch] bam -> local/bam
* [new branch] bar -> local/bar
* [new branch] c1 -> local/c1
* [new branch] c2 -> local/c2
* [new branch] cd -> local/cd
* [new branch] copy -> local/copy
* [new branch] copy-to -> local/copy-to
* [new branch] d -> local/d
* [new branch] dest -> local/dest
* [new branch] dest2 -> local/dest2
* [new branch] e -> local/e
* [new branch] ee -> local/ee
* [new branch] ef -> local/ef
* [new branch] f/f -> local/f/f
* [new branch] foo -> local/foo
* [new branch] g/g -> local/g/g
* [new branch] j/k -> local/j/k
* [new branch] l -> local/l
* [new branch] m/m -> local/m/m
* [new branch] m2 -> local/m2
* [new branch] main -> local/main
* [new branch] main5 -> local/main5
* [new branch] mb -> local/mb
* [new branch] n -> local/n
* [new branch] o/o -> local/o/o
* [new branch] o/p -> local/o/p
* [new branch] o/q -> local/o/q
* [new branch] q -> local/q
* [new branch] qq -> local/qq
* [new branch] r -> local/r
* [new branch] rr -> local/rr
* [new branch] s -> local/s
* [new branch] source2 -> local/source2
* [new branch] target -> local/target
* [new branch] topic -> local/topic
* [new branch] u -> local/u
* [new branch] zz -> local/zz
branch 'my1' set up to track 'local/main'.
ok 86 - test tracking setup via --track
expecting success of 3200.87 'test tracking setup (non-wildcard, matching)':
git config remote.local.url . &&
git config remote.local.fetch refs/heads/main:refs/remotes/local/main &&
(git show-ref -q refs/remotes/local/main || git fetch local) &&
git branch --track my4 local/main &&
test $(git config branch.my4.remote) = local &&
test $(git config branch.my4.merge) = refs/heads/main
branch 'my4' set up to track 'local/main'.
ok 87 - test tracking setup (non-wildcard, matching)
expecting success of 3200.88 'tracking setup fails on non-matching refspec':
git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
(git show-ref -q refs/remotes/local/main || git fetch local) &&
git config remote.local.fetch refs/heads/s:refs/remotes/local/s &&
test_must_fail git branch --track my5 local/main &&
test_must_fail git config branch.my5.remote &&
test_must_fail git config branch.my5.merge
fatal: cannot set up tracking information; starting point 'local/main' is not a branch
ok 88 - tracking setup fails on non-matching refspec
expecting success of 3200.89 'test tracking setup via config':
git config branch.autosetupmerge true &&
git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
(git show-ref -q refs/remotes/local/main || git fetch local) &&
git branch my3 local/main &&
test $(git config branch.my3.remote) = local &&
test $(git config branch.my3.merge) = refs/heads/main
branch 'my3' set up to track 'local/main'.
ok 89 - test tracking setup via config
expecting success of 3200.90 'test overriding tracking setup via --no-track':
git config branch.autosetupmerge true &&
git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
(git show-ref -q refs/remotes/local/main || git fetch local) &&
git branch --no-track my2 local/main &&
git config branch.autosetupmerge false &&
! test "$(git config branch.my2.remote)" = local &&
! test "$(git config branch.my2.merge)" = refs/heads/main
ok 90 - test overriding tracking setup via --no-track
expecting success of 3200.91 'no tracking without .fetch entries':
git config branch.autosetupmerge true &&
git branch my6 s &&
git config branch.autosetupmerge false &&
test -z "$(git config branch.my6.remote)" &&
test -z "$(git config branch.my6.merge)"
ok 91 - no tracking without .fetch entries
expecting success of 3200.92 'test tracking setup via --track but deeper':
git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
(git show-ref -q refs/remotes/local/o/o || git fetch local) &&
git branch --track my7 local/o/o &&
test "$(git config branch.my7.remote)" = local &&
test "$(git config branch.my7.merge)" = refs/heads/o/o
branch 'my7' set up to track 'local/o/o'.
ok 92 - test tracking setup via --track but deeper
expecting success of 3200.93 'test deleting branch deletes branch config':
git branch -d my7 &&
test -z "$(git config branch.my7.remote)" &&
test -z "$(git config branch.my7.merge)"
Deleted branch my7 (was da664a6).
ok 93 - test deleting branch deletes branch config
expecting success of 3200.94 'test deleting branch without config':
git branch my7 s &&
sha1=$(git rev-parse my7 | cut -c 1-7) &&
echo "Deleted branch my7 (was $sha1)." >expect &&
git branch -d my7 >actual 2>&1 &&
test_cmp expect actual
ok 94 - test deleting branch without config
expecting success of 3200.95 'deleting currently checked out branch fails':
git worktree add -b my7 my7 &&
test_must_fail git -C my7 branch -d my7 &&
test_must_fail git branch -d my7 &&
rm -r my7 &&
git worktree prune
Preparing worktree (new branch 'my7')
HEAD is now at da664a6 Second commit.
error: Cannot delete branch 'my7' checked out at '/<<PKGBUILDDIR>>/t/trash directory.t3200-branch/my7'
error: Cannot delete branch 'my7' checked out at '/<<PKGBUILDDIR>>/t/trash directory.t3200-branch/my7'
ok 95 - deleting currently checked out branch fails
expecting success of 3200.96 'test --track without .fetch entries':
git branch --track my8 &&
test "$(git config branch.my8.remote)" &&
test "$(git config branch.my8.merge)"
branch 'my8' set up to track 'main'.
ok 96 - test --track without .fetch entries
expecting success of 3200.97 'branch from non-branch HEAD w/autosetupmerge=always':
git config branch.autosetupmerge always &&
git branch my9 HEAD^ &&
git config branch.autosetupmerge false
ok 97 - branch from non-branch HEAD w/autosetupmerge=always
expecting success of 3200.98 'branch from non-branch HEAD w/--track causes failure':
test_must_fail git branch --track my10 HEAD^
fatal: cannot set up tracking information; starting point 'HEAD^' is not a branch
ok 98 - branch from non-branch HEAD w/--track causes failure
expecting success of 3200.99 'branch from tag w/--track causes failure':
git tag foobar &&
test_must_fail git branch --track my11 foobar
fatal: cannot set up tracking information; starting point 'foobar' is not a branch
ok 99 - branch from tag w/--track causes failure
expecting success of 3200.100 'simple tracking works when remote branch name matches':
test_when_finished "rm -rf otherserver" &&
git init otherserver &&
test_commit -C otherserver my_commit 1 &&
git -C otherserver branch feature &&
test_config branch.autosetupmerge simple &&
test_config remote.otherserver.url otherserver &&
test_config remote.otherserver.fetch refs/heads/*:refs/remotes/otherserver/* &&
git fetch otherserver &&
git branch feature otherserver/feature &&
test_cmp_config otherserver branch.feature.remote &&
test_cmp_config refs/heads/feature branch.feature.merge
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3200-branch/otherserver/.git/
[main (root-commit) 593c6ee] my_commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 1
From otherserver
* [new branch] feature -> otherserver/feature
* [new branch] main -> otherserver/main
* [new tag] my_commit -> my_commit
branch 'feature' set up to track 'otherserver/feature'.
ok 100 - simple tracking works when remote branch name matches
expecting success of 3200.101 'simple tracking skips when remote branch name does not match':
test_config branch.autosetupmerge simple &&
test_config remote.local.url . &&
test_config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
git fetch local &&
git branch my-other local/main &&
test_cmp_config "" --default "" branch.my-other.remote &&
test_cmp_config "" --default "" branch.my-other.merge
From .
* [new branch] feature -> local/feature
* [new branch] my1 -> local/my1
* [new branch] my2 -> local/my2
* [new branch] my3 -> local/my3
* [new branch] my4 -> local/my4
* [new branch] my6 -> local/my6
* [new branch] my7 -> local/my7
* [new branch] my8 -> local/my8
* [new branch] my9 -> local/my9
ok 101 - simple tracking skips when remote branch name does not match
expecting success of 3200.102 'simple tracking skips when remote ref is not a branch':
test_config branch.autosetupmerge simple &&
test_config remote.localtags.url . &&
test_config remote.localtags.fetch refs/tags/*:refs/remotes/localtags/* &&
git tag mytag12 main &&
git fetch localtags &&
git branch mytag12 localtags/mytag12 &&
test_cmp_config "" --default "" branch.mytag12.remote &&
test_cmp_config "" --default "" branch.mytag12.merge
From .
* [new tag] foobar -> localtags/foobar
* [new tag] my_commit -> localtags/my_commit
* [new tag] mytag12 -> localtags/mytag12
ok 102 - simple tracking skips when remote ref is not a branch
expecting success of 3200.103 '--set-upstream-to fails on multiple branches':
echo "fatal: too many arguments to set new upstream" >expect &&
test_must_fail git branch --set-upstream-to main a b c 2>err &&
test_cmp expect err
ok 103 - --set-upstream-to fails on multiple branches
expecting success of 3200.104 '--set-upstream-to fails on detached HEAD':
git checkout HEAD^{} &&
test_when_finished git checkout - &&
echo "fatal: could not set upstream of HEAD to main when it does not point to any branch." >expect &&
test_must_fail git branch --set-upstream-to main 2>err &&
test_cmp expect err
Note: switching to 'HEAD^{}'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at da664a6 Second commit.
Switched to branch 'main'
ok 104 - --set-upstream-to fails on detached HEAD
expecting success of 3200.105 '--set-upstream-to fails on a missing dst branch':
echo "fatal: branch 'does-not-exist' does not exist" >expect &&
test_must_fail git branch --set-upstream-to main does-not-exist 2>err &&
test_cmp expect err
ok 105 - --set-upstream-to fails on a missing dst branch
expecting success of 3200.106 '--set-upstream-to fails on a missing src branch':
test_must_fail git branch --set-upstream-to does-not-exist main 2>err &&
test_i18ngrep "the requested upstream branch 'does-not-exist' does not exist" err
fatal: the requested upstream branch 'does-not-exist' does not exist
ok 106 - --set-upstream-to fails on a missing src branch
expecting success of 3200.107 '--set-upstream-to fails on a non-ref':
echo "fatal: cannot set up tracking information; starting point 'HEAD^{}' is not a branch" >expect &&
test_must_fail git branch --set-upstream-to HEAD^{} 2>err &&
test_cmp expect err
ok 107 - --set-upstream-to fails on a non-ref
expecting success of 3200.108 '--set-upstream-to fails on locked config':
test_when_finished "rm -f .git/config.lock" &&
>.git/config.lock &&
git branch locked &&
test_must_fail git branch --set-upstream-to locked 2>err &&
test_i18ngrep "could not lock config file .git/config" err
error: could not lock config file .git/config: File exists
ok 108 - --set-upstream-to fails on locked config
expecting success of 3200.109 'use --set-upstream-to modify HEAD':
test_config branch.main.remote foo &&
test_config branch.main.merge foo &&
git branch my12 &&
git branch --set-upstream-to my12 &&
test "$(git config branch.main.remote)" = "." &&
test "$(git config branch.main.merge)" = "refs/heads/my12"
branch 'main' set up to track 'my12'.
ok 109 - use --set-upstream-to modify HEAD
expecting success of 3200.110 'use --set-upstream-to modify a particular branch':
git branch my13 &&
git branch --set-upstream-to main my13 &&
test_when_finished "git branch --unset-upstream my13" &&
test "$(git config branch.my13.remote)" = "." &&
test "$(git config branch.my13.merge)" = "refs/heads/main"
branch 'my13' set up to track 'main'.
ok 110 - use --set-upstream-to modify a particular branch
expecting success of 3200.111 '--unset-upstream should fail if given a non-existent branch':
echo "fatal: Branch 'i-dont-exist' has no upstream information" >expect &&
test_must_fail git branch --unset-upstream i-dont-exist 2>err &&
test_cmp expect err
ok 111 - --unset-upstream should fail if given a non-existent branch
expecting success of 3200.112 '--unset-upstream should fail if config is locked':
test_when_finished "rm -f .git/config.lock" &&
git branch --set-upstream-to locked &&
>.git/config.lock &&
test_must_fail git branch --unset-upstream 2>err &&
test_i18ngrep "could not lock config file .git/config" err
branch 'main' set up to track 'locked'.
error: could not lock config file .git/config: File exists
ok 112 - --unset-upstream should fail if config is locked
expecting success of 3200.113 'test --unset-upstream on HEAD':
git branch my14 &&
test_config branch.main.remote foo &&
test_config branch.main.merge foo &&
git branch --set-upstream-to my14 &&
git branch --unset-upstream &&
test_must_fail git config branch.main.remote &&
test_must_fail git config branch.main.merge &&
# fail for a branch without upstream set
echo "fatal: Branch 'main' has no upstream information" >expect &&
test_must_fail git branch --unset-upstream 2>err &&
test_cmp expect err
branch 'main' set up to track 'my14'.
ok 113 - test --unset-upstream on HEAD
expecting success of 3200.114 '--unset-upstream should fail on multiple branches':
echo "fatal: too many arguments to unset upstream" >expect &&
test_must_fail git branch --unset-upstream a b c 2>err &&
test_cmp expect err
ok 114 - --unset-upstream should fail on multiple branches
expecting success of 3200.115 '--unset-upstream should fail on detached HEAD':
git checkout HEAD^{} &&
test_when_finished git checkout - &&
echo "fatal: could not unset upstream of HEAD when it does not point to any branch." >expect &&
test_must_fail git branch --unset-upstream 2>err &&
test_cmp expect err
Note: switching to 'HEAD^{}'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at da664a6 Second commit.
Switched to branch 'main'
ok 115 - --unset-upstream should fail on detached HEAD
expecting success of 3200.116 'test --unset-upstream on a particular branch':
git branch my15 &&
git branch --set-upstream-to main my14 &&
git branch --unset-upstream my14 &&
test_must_fail git config branch.my14.remote &&
test_must_fail git config branch.my14.merge
branch 'my14' set up to track 'main'.
ok 116 - test --unset-upstream on a particular branch
expecting success of 3200.117 'disabled option --set-upstream fails':
test_must_fail git branch --set-upstream origin/main
fatal: the '--set-upstream' option is no longer supported. Please use '--track' or '--set-upstream-to' instead.
ok 117 - disabled option --set-upstream fails
expecting success of 3200.118 '--set-upstream-to notices an error to set branch as own upstream':
git branch --set-upstream-to refs/heads/my13 my13 2>actual &&
cat >expect <<-\EOF &&
warning: not setting branch 'my13' as its own upstream
EOF
test_expect_code 1 git config branch.my13.remote &&
test_expect_code 1 git config branch.my13.merge &&
test_cmp expect actual
ok 118 - --set-upstream-to notices an error to set branch as own upstream
expecting success of 3200.119 'git checkout -b g/h/i -l should create a branch and a log':
GIT_COMMITTER_DATE="2005-05-26 23:30" \
git checkout -b g/h/i -l main &&
test_path_is_file .git/refs/heads/g/h/i &&
test_path_is_file .git/logs/refs/heads/g/h/i &&
test_cmp expect .git/logs/refs/heads/g/h/i
Switched to a new branch 'g/h/i'
ok 119 - git checkout -b g/h/i -l should create a branch and a log
expecting success of 3200.120 'checkout -b makes reflog by default':
git checkout main &&
git config --unset core.logAllRefUpdates &&
git checkout -b alpha &&
git rev-parse --verify alpha@{0}
Switched to branch 'main'
Switched to a new branch 'alpha'
da664a6b0bffeb0904609e9e14e1beeecfe55c4a
ok 120 - checkout -b makes reflog by default
expecting success of 3200.121 'checkout -b does not make reflog when core.logAllRefUpdates = false':
git checkout main &&
git config core.logAllRefUpdates false &&
git checkout -b beta &&
test_must_fail git rev-parse --verify beta@{0}
Switched to branch 'main'
Switched to a new branch 'beta'
fatal: Needed a single revision
ok 121 - checkout -b does not make reflog when core.logAllRefUpdates = false
expecting success of 3200.122 'checkout -b with -l makes reflog when core.logAllRefUpdates = false':
git checkout main &&
git checkout -lb gamma &&
git config --unset core.logAllRefUpdates &&
git rev-parse --verify gamma@{0}
Switched to branch 'main'
Switched to a new branch 'gamma'
da664a6b0bffeb0904609e9e14e1beeecfe55c4a
ok 122 - checkout -b with -l makes reflog when core.logAllRefUpdates = false
expecting success of 3200.123 'avoid ambiguous track and advise':
git config branch.autosetupmerge true &&
git config remote.ambi1.url lalala &&
git config remote.ambi1.fetch refs/heads/lalala:refs/heads/main &&
git config remote.ambi2.url lilili &&
git config remote.ambi2.fetch refs/heads/lilili:refs/heads/main &&
cat <<-EOF >expected &&
fatal: not tracking: ambiguous information for ref 'refs/heads/main'
hint: There are multiple remotes whose fetch refspecs map to the remote
hint: tracking ref 'refs/heads/main':
hint: ambi1
hint: ambi2
hint:
hint: This is typically a configuration error.
hint:
hint: To support setting up tracking branches, ensure that
hint: different remotes' fetch refspecs map into different
hint: tracking namespaces.
EOF
test_must_fail git branch all1 main 2>actual &&
test_cmp expected actual &&
test -z "$(git config branch.all1.merge)"
ok 123 - avoid ambiguous track and advise
expecting success of 3200.124 'autosetuprebase local on a tracked local branch':
git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
git config branch.autosetuprebase local &&
(git show-ref -q refs/remotes/local/o || git fetch local) &&
git branch mybase &&
git branch --track myr1 mybase &&
test "$(git config branch.myr1.remote)" = . &&
test "$(git config branch.myr1.merge)" = refs/heads/mybase &&
test "$(git config branch.myr1.rebase)" = true
From .
* [new branch] all1 -> local/all1
* [new branch] alpha -> local/alpha
* [new branch] beta -> local/beta
* [new branch] g/h/i -> local/g/h/i
* [new branch] gamma -> local/gamma
* [new branch] locked -> local/locked
* [new branch] my-other -> local/my-other
* [new branch] my12 -> local/my12
* [new branch] my13 -> local/my13
* [new branch] my14 -> local/my14
* [new branch] my15 -> local/my15
* [new branch] mytag12 -> local/mytag12
branch 'myr1' set up to track 'mybase' by rebasing.
ok 124 - autosetuprebase local on a tracked local branch
expecting success of 3200.125 'autosetuprebase always on a tracked local branch':
git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
git config branch.autosetuprebase always &&
(git show-ref -q refs/remotes/local/o || git fetch local) &&
git branch mybase2 &&
git branch --track myr2 mybase &&
test "$(git config branch.myr2.remote)" = . &&
test "$(git config branch.myr2.merge)" = refs/heads/mybase &&
test "$(git config branch.myr2.rebase)" = true
From .
* [new branch] mybase -> local/mybase
* [new branch] myr1 -> local/myr1
branch 'myr2' set up to track 'mybase' by rebasing.
ok 125 - autosetuprebase always on a tracked local branch
expecting success of 3200.126 'autosetuprebase remote on a tracked local branch':
git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
git config branch.autosetuprebase remote &&
(git show-ref -q refs/remotes/local/o || git fetch local) &&
git branch mybase3 &&
git branch --track myr3 mybase2 &&
test "$(git config branch.myr3.remote)" = . &&
test "$(git config branch.myr3.merge)" = refs/heads/mybase2 &&
! test "$(git config branch.myr3.rebase)" = true
From .
* [new branch] mybase2 -> local/mybase2
* [new branch] myr2 -> local/myr2
branch 'myr3' set up to track 'mybase2'.
ok 126 - autosetuprebase remote on a tracked local branch
expecting success of 3200.127 'autosetuprebase never on a tracked local branch':
git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
git config branch.autosetuprebase never &&
(git show-ref -q refs/remotes/local/o || git fetch local) &&
git branch mybase4 &&
git branch --track myr4 mybase2 &&
test "$(git config branch.myr4.remote)" = . &&
test "$(git config branch.myr4.merge)" = refs/heads/mybase2 &&
! test "$(git config branch.myr4.rebase)" = true
From .
* [new branch] mybase3 -> local/mybase3
* [new branch] myr3 -> local/myr3
branch 'myr4' set up to track 'mybase2'.
ok 127 - autosetuprebase never on a tracked local branch
expecting success of 3200.128 'autosetuprebase local on a tracked remote branch':
git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
git config branch.autosetuprebase local &&
(git show-ref -q refs/remotes/local/main || git fetch local) &&
git branch --track myr5 local/main &&
test "$(git config branch.myr5.remote)" = local &&
test "$(git config branch.myr5.merge)" = refs/heads/main &&
! test "$(git config branch.myr5.rebase)" = true
branch 'myr5' set up to track 'local/main'.
ok 128 - autosetuprebase local on a tracked remote branch
expecting success of 3200.129 'autosetuprebase never on a tracked remote branch':
git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
git config branch.autosetuprebase never &&
(git show-ref -q refs/remotes/local/main || git fetch local) &&
git branch --track myr6 local/main &&
test "$(git config branch.myr6.remote)" = local &&
test "$(git config branch.myr6.merge)" = refs/heads/main &&
! test "$(git config branch.myr6.rebase)" = true
branch 'myr6' set up to track 'local/main'.
ok 129 - autosetuprebase never on a tracked remote branch
expecting success of 3200.130 'autosetuprebase remote on a tracked remote branch':
git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
git config branch.autosetuprebase remote &&
(git show-ref -q refs/remotes/local/main || git fetch local) &&
git branch --track myr7 local/main &&
test "$(git config branch.myr7.remote)" = local &&
test "$(git config branch.myr7.merge)" = refs/heads/main &&
test "$(git config branch.myr7.rebase)" = true
branch 'myr7' set up to track 'local/main' by rebasing.
ok 130 - autosetuprebase remote on a tracked remote branch
expecting success of 3200.131 'autosetuprebase always on a tracked remote branch':
git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
git config branch.autosetuprebase remote &&
(git show-ref -q refs/remotes/local/main || git fetch local) &&
git branch --track myr8 local/main &&
test "$(git config branch.myr8.remote)" = local &&
test "$(git config branch.myr8.merge)" = refs/heads/main &&
test "$(git config branch.myr8.rebase)" = true
branch 'myr8' set up to track 'local/main' by rebasing.
ok 131 - autosetuprebase always on a tracked remote branch
expecting success of 3200.132 'autosetuprebase unconfigured on a tracked remote branch':
git config --unset branch.autosetuprebase &&
git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
(git show-ref -q refs/remotes/local/main || git fetch local) &&
git branch --track myr9 local/main &&
test "$(git config branch.myr9.remote)" = local &&
test "$(git config branch.myr9.merge)" = refs/heads/main &&
test "z$(git config branch.myr9.rebase)" = z
branch 'myr9' set up to track 'local/main'.
ok 132 - autosetuprebase unconfigured on a tracked remote branch
expecting success of 3200.133 'autosetuprebase unconfigured on a tracked local branch':
git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
(git show-ref -q refs/remotes/local/o || git fetch local) &&
git branch mybase10 &&
git branch --track myr10 mybase2 &&
test "$(git config branch.myr10.remote)" = . &&
test "$(git config branch.myr10.merge)" = refs/heads/mybase2 &&
test "z$(git config branch.myr10.rebase)" = z
From .
* [new branch] mybase4 -> local/mybase4
* [new branch] myr4 -> local/myr4
* [new branch] myr5 -> local/myr5
* [new branch] myr6 -> local/myr6
* [new branch] myr7 -> local/myr7
* [new branch] myr8 -> local/myr8
* [new branch] myr9 -> local/myr9
branch 'myr10' set up to track 'mybase2'.
ok 133 - autosetuprebase unconfigured on a tracked local branch
expecting success of 3200.134 'autosetuprebase unconfigured on untracked local branch':
git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
(git show-ref -q refs/remotes/local/main || git fetch local) &&
git branch --no-track myr11 mybase2 &&
test "z$(git config branch.myr11.remote)" = z &&
test "z$(git config branch.myr11.merge)" = z &&
test "z$(git config branch.myr11.rebase)" = z
ok 134 - autosetuprebase unconfigured on untracked local branch
expecting success of 3200.135 'autosetuprebase unconfigured on untracked remote branch':
git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
(git show-ref -q refs/remotes/local/main || git fetch local) &&
git branch --no-track myr12 local/main &&
test "z$(git config branch.myr12.remote)" = z &&
test "z$(git config branch.myr12.merge)" = z &&
test "z$(git config branch.myr12.rebase)" = z
ok 135 - autosetuprebase unconfigured on untracked remote branch
expecting success of 3200.136 'autosetuprebase never on an untracked local branch':
git config branch.autosetuprebase never &&
git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
(git show-ref -q refs/remotes/local/main || git fetch local) &&
git branch --no-track myr13 mybase2 &&
test "z$(git config branch.myr13.remote)" = z &&
test "z$(git config branch.myr13.merge)" = z &&
test "z$(git config branch.myr13.rebase)" = z
ok 136 - autosetuprebase never on an untracked local branch
expecting success of 3200.137 'autosetuprebase local on an untracked local branch':
git config branch.autosetuprebase local &&
git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
(git show-ref -q refs/remotes/local/main || git fetch local) &&
git branch --no-track myr14 mybase2 &&
test "z$(git config branch.myr14.remote)" = z &&
test "z$(git config branch.myr14.merge)" = z &&
test "z$(git config branch.myr14.rebase)" = z
ok 137 - autosetuprebase local on an untracked local branch
expecting success of 3200.138 'autosetuprebase remote on an untracked local branch':
git config branch.autosetuprebase remote &&
git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
(git show-ref -q refs/remotes/local/main || git fetch local) &&
git branch --no-track myr15 mybase2 &&
test "z$(git config branch.myr15.remote)" = z &&
test "z$(git config branch.myr15.merge)" = z &&
test "z$(git config branch.myr15.rebase)" = z
ok 138 - autosetuprebase remote on an untracked local branch
expecting success of 3200.139 'autosetuprebase always on an untracked local branch':
git config branch.autosetuprebase always &&
git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
(git show-ref -q refs/remotes/local/main || git fetch local) &&
git branch --no-track myr16 mybase2 &&
test "z$(git config branch.myr16.remote)" = z &&
test "z$(git config branch.myr16.merge)" = z &&
test "z$(git config branch.myr16.rebase)" = z
ok 139 - autosetuprebase always on an untracked local branch
expecting success of 3200.140 'autosetuprebase never on an untracked remote branch':
git config branch.autosetuprebase never &&
git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
(git show-ref -q refs/remotes/local/main || git fetch local) &&
git branch --no-track myr17 local/main &&
test "z$(git config branch.myr17.remote)" = z &&
test "z$(git config branch.myr17.merge)" = z &&
test "z$(git config branch.myr17.rebase)" = z
ok 140 - autosetuprebase never on an untracked remote branch
expecting success of 3200.141 'autosetuprebase local on an untracked remote branch':
git config branch.autosetuprebase local &&
git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
(git show-ref -q refs/remotes/local/main || git fetch local) &&
git branch --no-track myr18 local/main &&
test "z$(git config branch.myr18.remote)" = z &&
test "z$(git config branch.myr18.merge)" = z &&
test "z$(git config branch.myr18.rebase)" = z
ok 141 - autosetuprebase local on an untracked remote branch
expecting success of 3200.142 'autosetuprebase remote on an untracked remote branch':
git config branch.autosetuprebase remote &&
git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
(git show-ref -q refs/remotes/local/main || git fetch local) &&
git branch --no-track myr19 local/main &&
test "z$(git config branch.myr19.remote)" = z &&
test "z$(git config branch.myr19.merge)" = z &&
test "z$(git config branch.myr19.rebase)" = z
ok 142 - autosetuprebase remote on an untracked remote branch
expecting success of 3200.143 'autosetuprebase always on an untracked remote branch':
git config branch.autosetuprebase always &&
git config remote.local.url . &&
git config remote.local.fetch refs/heads/*:refs/remotes/local/* &&
(git show-ref -q refs/remotes/local/main || git fetch local) &&
git branch --no-track myr20 local/main &&
test "z$(git config branch.myr20.remote)" = z &&
test "z$(git config branch.myr20.merge)" = z &&
test "z$(git config branch.myr20.rebase)" = z
ok 143 - autosetuprebase always on an untracked remote branch
expecting success of 3200.144 'autosetuprebase always on detached HEAD':
git config branch.autosetupmerge always &&
test_when_finished git checkout main &&
git checkout HEAD^0 &&
git branch my11 &&
test -z "$(git config branch.my11.remote)" &&
test -z "$(git config branch.my11.merge)"
Note: switching to 'HEAD^0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at da664a6 Second commit.
Switched to branch 'main'
ok 144 - autosetuprebase always on detached HEAD
expecting success of 3200.145 'detect misconfigured autosetuprebase (bad value)':
git config branch.autosetuprebase garbage &&
test_must_fail git branch
error: malformed value for branch.autosetuprebase
fatal: bad config variable 'branch.autosetuprebase' in file '.git/config' at line 87
ok 145 - detect misconfigured autosetuprebase (bad value)
expecting success of 3200.146 'detect misconfigured autosetuprebase (no value)':
git config --unset branch.autosetuprebase &&
echo "[branch] autosetuprebase" >>.git/config &&
test_must_fail git branch &&
git config --unset branch.autosetuprebase
error: missing value for 'branch.autosetuprebase'
fatal: bad config variable 'branch.autosetuprebase' in file '.git/config' at line 130
ok 146 - detect misconfigured autosetuprebase (no value)
expecting success of 3200.147 'attempt to delete a branch without base and unmerged to HEAD':
git checkout my9 &&
git config --unset branch.my8.merge &&
test_must_fail git branch -d my8
Switched to branch 'my9'
error: The branch 'my8' is not fully merged.
If you are sure you want to delete it, run 'git branch -D my8'.
ok 147 - attempt to delete a branch without base and unmerged to HEAD
expecting success of 3200.148 'attempt to delete a branch merged to its base':
# we are on my9 which is the initial commit; traditionally
# we would not have allowed deleting my8 that is not merged
# to my9, but it is set to track main that already has my8
git config branch.my8.merge refs/heads/main &&
git branch -d my8
warning: deleting branch 'my8' that has been merged to
'refs/heads/main', but not yet merged to HEAD.
Deleted branch my8 (was da664a6).
ok 148 - attempt to delete a branch merged to its base
expecting success of 3200.149 'attempt to delete a branch merged to its base':
git checkout main &&
echo Third >>A &&
git commit -m "Third commit" A &&
git branch -t my10 my9 &&
git branch -f my10 HEAD^ &&
# we are on main which is at the third commit, and my10
# is behind us, so traditionally we would have allowed deleting
# it; but my10 is set to track my9 that is further behind.
test_must_fail git branch -d my10
Switched to branch 'main'
[main 16fbf09] Third commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
branch 'my10' set up to track 'my9'.
warning: not deleting branch 'my10' that is not yet merged to
'refs/heads/my9', even though it is merged to HEAD.
error: The branch 'my10' is not fully merged.
If you are sure you want to delete it, run 'git branch -D my10'.
ok 149 - attempt to delete a branch merged to its base
expecting success of 3200.150 'branch --delete --force removes dangling branch':
git checkout main &&
test_commit unstable &&
hash=$(git rev-parse HEAD) &&
objpath=$(echo $hash | sed -e "s|^..|.git/objects/&/|") &&
git branch --no-track dangling &&
mv $objpath $objpath.x &&
test_when_finished "mv $objpath.x $objpath" &&
git branch --delete --force dangling &&
git for-each-ref refs/heads/dangling >actual &&
test_must_be_empty actual
Already on 'main'
[main d984d0c] unstable
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 unstable.t
Deleted branch dangling (was d984d0c).
ok 150 - branch --delete --force removes dangling branch
expecting success of 3200.151 'use --edit-description':
EDITOR=: git branch --edit-description &&
test_expect_code 1 git config branch.main.description &&
write_script editor <<-\EOF &&
echo "New contents" >"$1"
EOF
EDITOR=./editor git branch --edit-description &&
write_script editor <<-\EOF &&
git stripspace -s <"$1" >"EDITOR_OUTPUT"
EOF
EDITOR=./editor git branch --edit-description &&
echo "New contents" >expect &&
test_cmp expect EDITOR_OUTPUT
ok 151 - use --edit-description
expecting success of 3200.152 'detect typo in branch name when using --edit-description':
write_script editor <<-\EOF &&
echo "New contents" >"$1"
EOF
test_must_fail env EDITOR=./editor git branch --edit-description no-such-branch
error: No branch named 'no-such-branch'.
ok 152 - detect typo in branch name when using --edit-description
expecting success of 3200.153 'refuse --edit-description on unborn branch for now':
test_when_finished "git checkout main" &&
write_script editor <<-\EOF &&
echo "New contents" >"$1"
EOF
git checkout --orphan unborn &&
test_must_fail env EDITOR=./editor git branch --edit-description
Switched to a new branch 'unborn'
error: No commit on branch 'unborn' yet.
Switched to branch 'main'
ok 153 - refuse --edit-description on unborn branch for now
expecting success of 3200.154 '--merged catches invalid object names':
test_must_fail git branch --merged 0000000000000000000000000000000000000000
error: option `merged' must point to a commit
ok 154 - --merged catches invalid object names
expecting success of 3200.155 '--list during rebase':
test_when_finished "reset_rebase" &&
git checkout main &&
FAKE_LINES="1 edit 2" &&
export FAKE_LINES &&
set_fake_editor &&
git rebase -i HEAD~2 &&
git branch --list >actual &&
test_i18ngrep "rebasing main" actual
Already on 'main'
rebase -i script before editing:
pick 16fbf09 Third commit
pick d984d0c unstable
rebase -i script after editing:
pick 16fbf09 Third commit
edit d984d0c unstable
Rebasing (2/2)
Stopped at d984d0c... unstable
You can amend the commit now, with
git commit --amend
Once you are satisfied with your changes, run
git rebase --continue
* (no branch, rebasing main)
HEAD is now at d984d0c unstable
Removing .gitconfig
Removing EDITOR_OUTPUT
Removing actual
Removing actual.0abbrev
Removing actual.36abbrev
Removing actual.abbrev
Removing actual.config
Removing actual.default
Removing actual.noabbrev
Removing actual.noabbrev-conf
Removing config.branch
Removing editor
Removing err
Removing expect
Removing expect.config
Removing expected
Removing fake-editor.sh
Removing our.dir
Removing real-u
Removing subdir.dir
ok 155 - --list during rebase
expecting success of 3200.156 '--list during rebase from detached HEAD':
test_when_finished "reset_rebase && git checkout main" &&
git checkout main^0 &&
oid=$(git rev-parse --short HEAD) &&
FAKE_LINES="1 edit 2" &&
export FAKE_LINES &&
set_fake_editor &&
git rebase -i HEAD~2 &&
git branch --list >actual &&
test_i18ngrep "rebasing detached HEAD $oid" actual
Note: switching to 'main^0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at d984d0c unstable
rebase -i script before editing:
pick 16fbf09 Third commit
pick d984d0c unstable
rebase -i script after editing:
pick 16fbf09 Third commit
edit d984d0c unstable
Rebasing (2/2)
Stopped at d984d0c... unstable
You can amend the commit now, with
git commit --amend
Once you are satisfied with your changes, run
git rebase --continue
* (no branch, rebasing detached HEAD d984d0c)
HEAD is now at d984d0c unstable
Removing actual
Removing fake-editor.sh
Switched to branch 'main'
ok 156 - --list during rebase from detached HEAD
expecting success of 3200.157 'tracking with unexpected .fetch refspec':
rm -rf a b c d &&
git init -b main a &&
(
cd a &&
test_commit a
) &&
git init -b main b &&
(
cd b &&
test_commit b
) &&
git init -b main c &&
(
cd c &&
test_commit c &&
git remote add a ../a &&
git remote add b ../b &&
git fetch --all
) &&
git init -b main d &&
(
cd d &&
git remote add c ../c &&
git config remote.c.fetch "+refs/remotes/*:refs/remotes/*" &&
git fetch c &&
git branch --track local/a/main remotes/a/main &&
test "$(git config branch.local/a/main.remote)" = "c" &&
test "$(git config branch.local/a/main.merge)" = "refs/remotes/a/main" &&
git rev-parse --verify a >expect &&
git rev-parse --verify local/a/main >actual &&
test_cmp expect actual
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3200-branch/a/.git/
[main (root-commit) 7f32f40] a
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 a.t
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3200-branch/b/.git/
[main (root-commit) 47d9752] b
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 b.t
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3200-branch/c/.git/
[main (root-commit) 7a0a759] c
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 c.t
Fetching a
From ../a
* [new branch] main -> a/main
* [new tag] a -> a
Fetching b
From ../b
* [new branch] main -> b/main
* [new tag] b -> b
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3200-branch/d/.git/
From ../c
* [new ref] a/main -> a/main
* [new ref] b/main -> b/main
* [new tag] a -> a
* [new tag] b -> b
branch 'local/a/main' set up to track 'c/refs/remotes/a/main'.
ok 157 - tracking with unexpected .fetch refspec
expecting success of 3200.158 'configured committerdate sort':
git init -b main sort &&
(
cd sort &&
git config branch.sort committerdate &&
test_commit initial &&
git checkout -b a &&
test_commit a &&
git checkout -b c &&
test_commit c &&
git checkout -b b &&
test_commit b &&
git branch >actual &&
cat >expect <<-\EOF &&
main
a
c
* b
EOF
test_cmp expect actual
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3200-branch/sort/.git/
[main (root-commit) 23fa7ba] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 initial.t
Switched to a new branch 'a'
[a 6ed220f] a
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 a.t
Switched to a new branch 'c'
[c f87a5d9] c
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 c.t
Switched to a new branch 'b'
[b 6691410] b
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 b.t
ok 158 - configured committerdate sort
expecting success of 3200.159 'option override configured sort':
(
cd sort &&
git config branch.sort committerdate &&
git branch --sort=refname >actual &&
cat >expect <<-\EOF &&
a
* b
c
main
EOF
test_cmp expect actual
)
ok 159 - option override configured sort
expecting success of 3200.160 'invalid sort parameter in configuration':
(
cd sort &&
git config branch.sort "v:notvalid" &&
# this works in the "listing" mode, so bad sort key
# is a dying offence.
test_must_fail git branch &&
# these do not need to use sorting, and should all
# succeed
git branch newone main &&
git branch -c newone newerone &&
git branch -m newone newestone &&
git branch -d newerone newestone
)
fatal: unknown field name: notvalid
Deleted branch newerone (was 23fa7ba).
Deleted branch newestone (was 23fa7ba).
ok 160 - invalid sort parameter in configuration
expecting success of 3200.161 'tracking info copied with --track=inherit':
git branch --track=inherit foo2 my1 &&
test_cmp_config local branch.foo2.remote &&
test_cmp_config refs/heads/main branch.foo2.merge
branch 'foo2' set up to track 'local/main'.
ok 161 - tracking info copied with --track=inherit
expecting success of 3200.162 'tracking info copied with autoSetupMerge=inherit':
test_unconfig branch.autoSetupMerge &&
# default config does not copy tracking info
git branch foo-no-inherit my1 &&
test_cmp_config "" --default "" branch.foo-no-inherit.remote &&
test_cmp_config "" --default "" branch.foo-no-inherit.merge &&
# with autoSetupMerge=inherit, we copy tracking info from my1
test_config branch.autoSetupMerge inherit &&
git branch foo3 my1 &&
test_cmp_config local branch.foo3.remote &&
test_cmp_config refs/heads/main branch.foo3.merge &&
# no tracking info to inherit from main
git branch main2 main &&
test_cmp_config "" --default "" branch.main2.remote &&
test_cmp_config "" --default "" branch.main2.merge
branch 'foo3' set up to track 'local/main'.
warning: asked to inherit tracking from 'main', but no remote is set
ok 162 - tracking info copied with autoSetupMerge=inherit
expecting success of 3200.163 '--track overrides branch.autoSetupMerge':
test_config branch.autoSetupMerge inherit &&
git branch --track=direct foo4 my1 &&
test_cmp_config . branch.foo4.remote &&
test_cmp_config refs/heads/my1 branch.foo4.merge &&
git branch --no-track foo5 my1 &&
test_cmp_config "" --default "" branch.foo5.remote &&
test_cmp_config "" --default "" branch.foo5.merge
branch 'foo4' set up to track 'my1'.
ok 163 - --track overrides branch.autoSetupMerge
# passed all 163 test(s)
1..163
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3206-range-diff.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3206-range-diff/.git/
expecting success of 3206.1 'setup':
git fast-import <"$TEST_DIRECTORY"/t3206/history.export &&
test_oid_cache <<-\EOF
# topic
t1 sha1:4de457d
t2 sha1:fccce22
t3 sha1:147e64e
t4 sha1:a63e992
t1 sha256:b89f8b9
t2 sha256:5f12aad
t3 sha256:ea8b273
t4 sha256:14b7336
# unmodified
u1 sha1:35b9b25
u2 sha1:de345ab
u3 sha1:9af6654
u4 sha1:2901f77
u1 sha256:e3731be
u2 sha256:14fadf8
u3 sha256:736c4bc
u4 sha256:673e77d
# topic (abbrev=10)
t1_abbrev sha1:4de457d2c0
t2_abbrev sha1:fccce22f8c
t3_abbrev sha1:147e64ef53
t4_abbrev sha1:a63e992599
t1_abbrev sha256:b89f8b9092
t2_abbrev sha256:5f12aadf34
t3_abbrev sha256:ea8b273a6c
t4_abbrev sha256:14b73361fc
# unmodified (abbrev=10)
u1_abbrev sha1:35b9b25f76
u2_abbrev sha1:de345ab3de
u3_abbrev sha1:9af6654000
u4_abbrev sha1:2901f773f3
u1_abbrev sha256:e3731be242
u2_abbrev sha256:14fadf8cee
u3_abbrev sha256:736c4bcb44
u4_abbrev sha256:673e77d589
# reordered
r1 sha1:aca177a
r2 sha1:14ad629
r3 sha1:ee58208
r4 sha1:307b27a
r1 sha256:f59d3aa
r2 sha256:fb261a8
r3 sha256:cb2649b
r4 sha256:958577e
# removed (deleted)
d1 sha1:7657159
d2 sha1:43d84d3
d3 sha1:a740396
d1 sha256:e312513
d2 sha256:eb19258
d3 sha256:1ccb3c1
# added
a1 sha1:2716022
a2 sha1:b62accd
a3 sha1:df46cfa
a4 sha1:3e64548
a5 sha1:12b4063
a1 sha256:d724f4d
a2 sha256:1de7762
a3 sha256:e159431
a4 sha256:b3e483c
a5 sha256:90866a7
# rebased
b1 sha1:cc9c443
b2 sha1:c5d9641
b3 sha1:28cc2b6
b4 sha1:5628ab7
b5 sha1:a31b12e
b1 sha256:a1a8717
b2 sha256:20a5862
b3 sha256:587172a
b4 sha256:2721c5d
b5 sha256:7b57864
# changed
c1 sha1:a4b3333
c2 sha1:f51d370
c3 sha1:0559556
c4 sha1:d966c5c
c1 sha256:f8c2b9d
c2 sha256:3fb6318
c3 sha256:168ab68
c4 sha256:3526539
# changed-message
m1 sha1:f686024
m2 sha1:4ab067d
m3 sha1:b9cb956
m4 sha1:8add5f1
m1 sha256:31e6281
m2 sha256:a06bf1b
m3 sha256:82dc654
m4 sha256:48470c5
# renamed
n1 sha1:f258d75
n2 sha1:017b62d
n3 sha1:3ce7af6
n4 sha1:1e6226b
n1 sha256:ad52114
n2 sha256:3b54c8f
n3 sha256:3b0a644
n4 sha256:e461653
# mode change
o1 sha1:4d39cb3
o2 sha1:26c107f
o3 sha1:4c1e0f5
o1 sha256:d0dd598
o2 sha256:c4a279e
o3 sha256:78459d7
# added and removed
s1 sha1:096b1ba
s2 sha1:d92e698
s3 sha1:9a1db4d
s4 sha1:fea3b5c
s1 sha256:a7f9134
s2 sha256:b4c2580
s3 sha256:1d62aa2
s4 sha256:48160e8
# Empty delimiter (included so lines match neatly)
__ sha1:-------
__ sha256:-------
EOF
fast-import statistics:
---------------------------------------------------------------------
Alloc'd objects: 5000
Total objects: 83 ( 21 duplicates )
blobs : 14 ( 0 duplicates 0 deltas of 11 attempts)
trees : 24 ( 21 duplicates 1 deltas of 23 attempts)
commits: 45 ( 0 duplicates 0 deltas of 0 attempts)
tags : 0 ( 0 duplicates 0 deltas of 0 attempts)
Total branches: 12 ( 14 loads )
marks: 1024 ( 59 unique )
atoms: 5
Memory total: 2446 KiB
pools: 2133 KiB
objects: 312 KiB
---------------------------------------------------------------------
pack_report: getpagesize() = 4096
pack_report: core.packedGitWindowSize = 33554432
pack_report: core.packedGitLimit = 268435456
pack_report: pack_used_ctr = 23
pack_report: pack_mmap_calls = 13
pack_report: pack_open_windows = 0 / 1
pack_report: pack_mapped = 0 / 8521
---------------------------------------------------------------------
ok 1 - setup
expecting success of 3206.2 'simple A..B A..C (unmodified)':
git range-diff --no-color main..topic main..unmodified \
>actual &&
cat >expect <<-EOF &&
1: $(test_oid t1) = 1: $(test_oid u1) s/5/A/
2: $(test_oid t2) = 2: $(test_oid u2) s/4/A/
3: $(test_oid t3) = 3: $(test_oid u3) s/11/B/
4: $(test_oid t4) = 4: $(test_oid u4) s/12/B/
EOF
test_cmp expect actual
ok 2 - simple A..B A..C (unmodified)
expecting success of 3206.3 'simple B...C (unmodified)':
git range-diff --no-color topic...unmodified >actual &&
# same "expect" as above
test_cmp expect actual
ok 3 - simple B...C (unmodified)
expecting success of 3206.4 'simple A B C (unmodified)':
git range-diff --no-color main topic unmodified >actual &&
# same "expect" as above
test_cmp expect actual
ok 4 - simple A B C (unmodified)
expecting success of 3206.5 'simple A..B A..C (unmodified) with --abbrev':
git range-diff --no-color --abbrev=10 main..topic main..unmodified \
>actual &&
cat >expect <<-EOF &&
1: $(test_oid t1_abbrev) = 1: $(test_oid u1_abbrev) s/5/A/
2: $(test_oid t2_abbrev) = 2: $(test_oid u2_abbrev) s/4/A/
3: $(test_oid t3_abbrev) = 3: $(test_oid u3_abbrev) s/11/B/
4: $(test_oid t4_abbrev) = 4: $(test_oid u4_abbrev) s/12/B/
EOF
test_cmp expect actual
ok 5 - simple A..B A..C (unmodified) with --abbrev
expecting success of 3206.6 'A^! and A^-<n> (unmodified)':
git range-diff --no-color topic^! unmodified^-1 >actual &&
cat >expect <<-EOF &&
1: $(test_oid t4) = 1: $(test_oid u4) s/12/B/
EOF
test_cmp expect actual
ok 6 - A^! and A^-<n> (unmodified)
expecting success of 3206.7 'A^{/..} is not mistaken for a range':
test_must_fail git range-diff topic^.. topic^{/..} -- 2>error &&
test_i18ngrep "not a commit range" error
fatal: not a commit range: 'topic^{/..}'
ok 7 - A^{/..} is not mistaken for a range
expecting success of 3206.8 'trivial reordering':
git range-diff --no-color main topic reordered >actual &&
cat >expect <<-EOF &&
1: $(test_oid t1) = 1: $(test_oid r1) s/5/A/
3: $(test_oid t3) = 2: $(test_oid r2) s/11/B/
4: $(test_oid t4) = 3: $(test_oid r3) s/12/B/
2: $(test_oid t2) = 4: $(test_oid r4) s/4/A/
EOF
test_cmp expect actual
ok 8 - trivial reordering
expecting success of 3206.9 'removed a commit':
git range-diff --no-color main topic removed >actual &&
cat >expect <<-EOF &&
1: $(test_oid t1) = 1: $(test_oid d1) s/5/A/
2: $(test_oid t2) < -: $(test_oid __) s/4/A/
3: $(test_oid t3) = 2: $(test_oid d2) s/11/B/
4: $(test_oid t4) = 3: $(test_oid d3) s/12/B/
EOF
test_cmp expect actual
ok 9 - removed a commit
expecting success of 3206.10 'added a commit':
git range-diff --no-color main topic added >actual &&
cat >expect <<-EOF &&
1: $(test_oid t1) = 1: $(test_oid a1) s/5/A/
2: $(test_oid t2) = 2: $(test_oid a2) s/4/A/
-: $(test_oid __) > 3: $(test_oid a3) s/6/A/
3: $(test_oid t3) = 4: $(test_oid a4) s/11/B/
4: $(test_oid t4) = 5: $(test_oid a5) s/12/B/
EOF
test_cmp expect actual
ok 10 - added a commit
expecting success of 3206.11 'new base, A B C':
git range-diff --no-color main topic rebased >actual &&
cat >expect <<-EOF &&
1: $(test_oid t1) = 1: $(test_oid b1) s/5/A/
2: $(test_oid t2) = 2: $(test_oid b2) s/4/A/
3: $(test_oid t3) = 3: $(test_oid b3) s/11/B/
4: $(test_oid t4) = 4: $(test_oid b4) s/12/B/
EOF
test_cmp expect actual
ok 11 - new base, A B C
expecting success of 3206.12 'new base, B...C':
# this syntax includes the commits from main!
git range-diff --no-color topic...rebased >actual &&
cat >expect <<-EOF &&
-: $(test_oid __) > 1: $(test_oid b5) unrelated
1: $(test_oid t1) = 2: $(test_oid b1) s/5/A/
2: $(test_oid t2) = 3: $(test_oid b2) s/4/A/
3: $(test_oid t3) = 4: $(test_oid b3) s/11/B/
4: $(test_oid t4) = 5: $(test_oid b4) s/12/B/
EOF
test_cmp expect actual
ok 12 - new base, B...C
expecting success of 3206.13 'changed commit':
git range-diff --no-color topic...changed >actual &&
cat >expect <<-EOF &&
1: $(test_oid t1) = 1: $(test_oid c1) s/5/A/
2: $(test_oid t2) = 2: $(test_oid c2) s/4/A/
3: $(test_oid t3) ! 3: $(test_oid c3) s/11/B/
@@ file: A
9
10
-11
-+B
++BB
12
13
14
4: $(test_oid t4) ! 4: $(test_oid c4) s/12/B/
@@ file
@@ file: A
9
10
- B
+ BB
-12
+B
13
EOF
test_cmp expect actual
ok 13 - changed commit
expecting success of 3206.14 'changed commit with --no-patch diff option':
git range-diff --no-color --no-patch topic...changed >actual &&
cat >expect <<-EOF &&
1: $(test_oid t1) = 1: $(test_oid c1) s/5/A/
2: $(test_oid t2) = 2: $(test_oid c2) s/4/A/
3: $(test_oid t3) ! 3: $(test_oid c3) s/11/B/
4: $(test_oid t4) ! 4: $(test_oid c4) s/12/B/
EOF
test_cmp expect actual
ok 14 - changed commit with --no-patch diff option
expecting success of 3206.15 'changed commit with --stat diff option':
git range-diff --no-color --stat topic...changed >actual &&
cat >expect <<-EOF &&
1: $(test_oid t1) = 1: $(test_oid c1) s/5/A/
2: $(test_oid t2) = 2: $(test_oid c2) s/4/A/
3: $(test_oid t3) ! 3: $(test_oid c3) s/11/B/
a => b | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
4: $(test_oid t4) ! 4: $(test_oid c4) s/12/B/
a => b | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
EOF
test_cmp expect actual
ok 15 - changed commit with --stat diff option
expecting success of 3206.16 'changed commit with sm config':
git range-diff --no-color --submodule=log topic...changed >actual &&
cat >expect <<-EOF &&
1: $(test_oid t1) = 1: $(test_oid c1) s/5/A/
2: $(test_oid t2) = 2: $(test_oid c2) s/4/A/
3: $(test_oid t3) ! 3: $(test_oid c3) s/11/B/
@@ file: A
9
10
-11
-+B
++BB
12
13
14
4: $(test_oid t4) ! 4: $(test_oid c4) s/12/B/
@@ file
@@ file: A
9
10
- B
+ BB
-12
+B
13
EOF
test_cmp expect actual
ok 16 - changed commit with sm config
expecting success of 3206.17 'renamed file':
git range-diff --no-color --submodule=log topic...renamed-file >actual &&
sed s/Z/\ /g >expect <<-EOF &&
1: $(test_oid t1) = 1: $(test_oid n1) s/5/A/
2: $(test_oid t2) ! 2: $(test_oid n2) s/4/A/
@@ Metadata
ZAuthor: Thomas Rast <trast@inf.ethz.ch>
Z
Z ## Commit message ##
- s/4/A/
+ s/4/A/ + rename file
Z
- ## file ##
+ ## file => renamed-file ##
Z@@
Z 1
Z 2
3: $(test_oid t3) ! 3: $(test_oid n3) s/11/B/
@@ Metadata
Z ## Commit message ##
Z s/11/B/
Z
- ## file ##
-@@ file: A
+ ## renamed-file ##
+@@ renamed-file: A
Z 8
Z 9
Z 10
4: $(test_oid t4) ! 4: $(test_oid n4) s/12/B/
@@ Metadata
Z ## Commit message ##
Z s/12/B/
Z
- ## file ##
-@@ file: A
+ ## renamed-file ##
+@@ renamed-file: A
Z 9
Z 10
Z B
EOF
test_cmp expect actual
ok 17 - renamed file
expecting success of 3206.18 'file with mode only change':
git range-diff --no-color --submodule=log topic...mode-only-change >actual &&
sed s/Z/\ /g >expect <<-EOF &&
1: $(test_oid t2) ! 1: $(test_oid o1) s/4/A/
@@ Metadata
ZAuthor: Thomas Rast <trast@inf.ethz.ch>
Z
Z ## Commit message ##
- s/4/A/
+ s/4/A/ + add other-file
Z
Z ## file ##
Z@@
@@ file
Z A
Z 6
Z 7
+
+ ## other-file (new) ##
2: $(test_oid t3) ! 2: $(test_oid o2) s/11/B/
@@ Metadata
ZAuthor: Thomas Rast <trast@inf.ethz.ch>
Z
Z ## Commit message ##
- s/11/B/
+ s/11/B/ + mode change other-file
Z
Z ## file ##
Z@@ file: A
@@ file: A
Z 12
Z 13
Z 14
+
+ ## other-file (mode change 100644 => 100755) ##
3: $(test_oid t4) = 3: $(test_oid o3) s/12/B/
EOF
test_cmp expect actual
ok 18 - file with mode only change
expecting success of 3206.19 'file added and later removed':
git range-diff --no-color --submodule=log topic...added-removed >actual &&
sed s/Z/\ /g >expect <<-EOF &&
1: $(test_oid t1) = 1: $(test_oid s1) s/5/A/
2: $(test_oid t2) ! 2: $(test_oid s2) s/4/A/
@@ Metadata
ZAuthor: Thomas Rast <trast@inf.ethz.ch>
Z
Z ## Commit message ##
- s/4/A/
+ s/4/A/ + new-file
Z
Z ## file ##
Z@@
@@ file
Z A
Z 6
Z 7
+
+ ## new-file (new) ##
3: $(test_oid t3) ! 3: $(test_oid s3) s/11/B/
@@ Metadata
ZAuthor: Thomas Rast <trast@inf.ethz.ch>
Z
Z ## Commit message ##
- s/11/B/
+ s/11/B/ + remove file
Z
Z ## file ##
Z@@ file: A
@@ file: A
Z 12
Z 13
Z 14
+
+ ## new-file (deleted) ##
4: $(test_oid t4) = 4: $(test_oid s4) s/12/B/
EOF
test_cmp expect actual
ok 19 - file added and later removed
expecting success of 3206.20 'no commits on one side':
git commit --amend -m "new message" &&
git range-diff main HEAD@{1} HEAD
[main b4b08e4] new message
Author: Thomas Rast <trast@inf.ethz.ch>
Date: Mon Jul 22 11:25:27 2013 +0200
1 file changed, 20 deletions(-)
delete mode 100644 file
1: a31b12e < -: ------- unrelated
ok 20 - no commits on one side
expecting success of 3206.21 'changed message':
git range-diff --no-color topic...changed-message >actual &&
sed s/Z/\ /g >expect <<-EOF &&
1: $(test_oid t1) = 1: $(test_oid m1) s/5/A/
2: $(test_oid t2) ! 2: $(test_oid m2) s/4/A/
@@ Metadata
Z ## Commit message ##
Z s/4/A/
Z
+ Also a silly comment here!
+
Z ## file ##
Z@@
Z 1
3: $(test_oid t3) = 3: $(test_oid m3) s/11/B/
4: $(test_oid t4) = 4: $(test_oid m4) s/12/B/
EOF
test_cmp expect actual
ok 21 - changed message
expecting success of 3206.22 'dual-coloring':
sed -e "s|^:||" >expect <<-EOF &&
:<YELLOW>1: $(test_oid c1) = 1: $(test_oid m1) s/5/A/<RESET>
:<RED>2: $(test_oid c2) <RESET><YELLOW>!<RESET><GREEN> 2: $(test_oid m2)<RESET><YELLOW> s/4/A/<RESET>
: <REVERSE><CYAN>@@<RESET> <RESET>Metadata<RESET>
: ## Commit message ##<RESET>
: s/4/A/<RESET>
: <RESET>
: <REVERSE><GREEN>+<RESET><BOLD> Also a silly comment here!<RESET>
: <REVERSE><GREEN>+<RESET>
: ## file ##<RESET>
: <CYAN> @@<RESET>
: 1<RESET>
:<RED>3: $(test_oid c3) <RESET><YELLOW>!<RESET><GREEN> 3: $(test_oid m3)<RESET><YELLOW> s/11/B/<RESET>
: <REVERSE><CYAN>@@<RESET> <RESET>file: A<RESET>
: 9<RESET>
: 10<RESET>
: <RED> -11<RESET>
: <REVERSE><RED>-<RESET><FAINT;GREEN>+BB<RESET>
: <REVERSE><GREEN>+<RESET><BOLD;GREEN>+B<RESET>
: 12<RESET>
: 13<RESET>
: 14<RESET>
:<RED>4: $(test_oid c4) <RESET><YELLOW>!<RESET><GREEN> 4: $(test_oid m4)<RESET><YELLOW> s/12/B/<RESET>
: <REVERSE><CYAN>@@<RESET> <RESET>file<RESET>
: <CYAN> @@ file: A<RESET>
: 9<RESET>
: 10<RESET>
: <REVERSE><RED>-<RESET><FAINT> BB<RESET>
: <REVERSE><GREEN>+<RESET><BOLD> B<RESET>
: <RED> -12<RESET>
: <GREEN> +B<RESET>
: 13<RESET>
EOF
git range-diff changed...changed-message --color --dual-color >actual.raw &&
test_decode_color >actual <actual.raw &&
test_cmp expect actual
ok 22 - dual-coloring
expecting success of 3206.23 'format-patch --range-diff=topic':
git format-patch --cover-letter --range-diff=$prev \
main..unmodified >actual &&
test_when_finished "rm 000?-*" &&
test_line_count = 5 actual &&
test_i18ngrep "^Range-diff:$" 0000-* &&
grep "= 1: .* s/5/A" 0000-* &&
grep "= 2: .* s/4/A" 0000-* &&
grep "= 3: .* s/11/B" 0000-* &&
grep "= 4: .* s/12/B" 0000-*
Range-diff:
1: 4de457d = 1: 35b9b25 s/5/A/
2: fccce22 = 2: de345ab s/4/A/
3: 147e64e = 3: 9af6654 s/11/B/
4: a63e992 = 4: 2901f77 s/12/B/
ok 23 - format-patch --range-diff=topic
expecting success of 3206.24 'format-patch --range-diff=main..topic':
git format-patch --cover-letter --range-diff=$prev \
main..unmodified >actual &&
test_when_finished "rm 000?-*" &&
test_line_count = 5 actual &&
test_i18ngrep "^Range-diff:$" 0000-* &&
grep "= 1: .* s/5/A" 0000-* &&
grep "= 2: .* s/4/A" 0000-* &&
grep "= 3: .* s/11/B" 0000-* &&
grep "= 4: .* s/12/B" 0000-*
Range-diff:
1: 4de457d = 1: 35b9b25 s/5/A/
2: fccce22 = 2: de345ab s/4/A/
3: 147e64e = 3: 9af6654 s/11/B/
4: a63e992 = 4: 2901f77 s/12/B/
ok 24 - format-patch --range-diff=main..topic
expecting success of 3206.25 'format-patch --range-diff as commentary':
git format-patch --range-diff=HEAD~1 HEAD~1 >actual &&
test_when_finished "rm 0001-*" &&
test_line_count = 1 actual &&
test_i18ngrep "^Range-diff:$" 0001-* &&
grep "> 1: .* new message" 0001-*
Range-diff:
-: ------- > 1: b4b08e4 new message
ok 25 - format-patch --range-diff as commentary
expecting success of 3206.26 'format-patch --range-diff reroll-count with a non-integer':
git format-patch --range-diff=HEAD~1 -v2.9 HEAD~1 >actual &&
test_when_finished "rm v2.9-0001-*" &&
test_line_count = 1 actual &&
test_i18ngrep "^Range-diff:$" v2.9-0001-* &&
grep "> 1: .* new message" v2.9-0001-*
Range-diff:
-: ------- > 1: b4b08e4 new message
ok 26 - format-patch --range-diff reroll-count with a non-integer
expecting success of 3206.27 'format-patch --range-diff reroll-count with a integer':
git format-patch --range-diff=HEAD~1 -v2 HEAD~1 >actual &&
test_when_finished "rm v2-0001-*" &&
test_line_count = 1 actual &&
test_i18ngrep "^Range-diff ..* v1:$" v2-0001-* &&
grep "> 1: .* new message" v2-0001-*
Range-diff against v1:
-: ------- > 1: b4b08e4 new message
ok 27 - format-patch --range-diff reroll-count with a integer
expecting success of 3206.28 'format-patch --range-diff with v0':
git format-patch --range-diff=HEAD~1 -v0 HEAD~1 >actual &&
test_when_finished "rm v0-0001-*" &&
test_line_count = 1 actual &&
test_i18ngrep "^Range-diff:$" v0-0001-* &&
grep "> 1: .* new message" v0-0001-*
Range-diff:
-: ------- > 1: b4b08e4 new message
ok 28 - format-patch --range-diff with v0
expecting success of 3206.29 'range-diff overrides diff.noprefix internally':
git -c diff.noprefix=true range-diff HEAD^...
-: ------- > 1: b4b08e4 new message
ok 29 - range-diff overrides diff.noprefix internally
expecting success of 3206.30 'basic with modified format.pretty with suffix':
git -c format.pretty="format:commit %H%d%n" range-diff \
main..topic main..unmodified
1: 4de457d = 1: 35b9b25 s/5/A/
2: fccce22 = 2: de345ab s/4/A/
3: 147e64e = 3: 9af6654 s/11/B/
4: a63e992 = 4: 2901f77 s/12/B/
ok 30 - basic with modified format.pretty with suffix
expecting success of 3206.31 'basic with modified format.pretty without "commit "':
git -c format.pretty="format:%H%n" range-diff \
main..topic main..unmodified
1: 4de457d = 1: 35b9b25 s/5/A/
2: fccce22 = 2: de345ab s/4/A/
3: 147e64e = 3: 9af6654 s/11/B/
4: a63e992 = 4: 2901f77 s/12/B/
ok 31 - basic with modified format.pretty without "commit "
expecting success of 3206.32 'range-diff compares notes by default':
git notes add -m "topic note" topic &&
git notes add -m "unmodified note" unmodified &&
test_when_finished git notes remove topic unmodified &&
git range-diff --no-color main..topic main..unmodified \
>actual &&
sed s/Z/\ /g >expect <<-EOF &&
1: $(test_oid t1) = 1: $(test_oid u1) s/5/A/
2: $(test_oid t2) = 2: $(test_oid u2) s/4/A/
3: $(test_oid t3) = 3: $(test_oid u3) s/11/B/
4: $(test_oid t4) ! 4: $(test_oid u4) s/12/B/
@@ Commit message
Z
Z
Z ## Notes ##
- topic note
+ unmodified note
Z
Z ## file ##
Z@@ file: A
EOF
test_cmp expect actual
Removing note for object topic
Removing note for object unmodified
ok 32 - range-diff compares notes by default
expecting success of 3206.33 'range-diff with --no-notes':
git notes add -m "topic note" topic &&
git notes add -m "unmodified note" unmodified &&
test_when_finished git notes remove topic unmodified &&
git range-diff --no-color --no-notes main..topic main..unmodified \
>actual &&
cat >expect <<-EOF &&
1: $(test_oid t1) = 1: $(test_oid u1) s/5/A/
2: $(test_oid t2) = 2: $(test_oid u2) s/4/A/
3: $(test_oid t3) = 3: $(test_oid u3) s/11/B/
4: $(test_oid t4) = 4: $(test_oid u4) s/12/B/
EOF
test_cmp expect actual
Removing note for object topic
Removing note for object unmodified
ok 33 - range-diff with --no-notes
expecting success of 3206.34 'range-diff with multiple --notes':
git notes --ref=note1 add -m "topic note1" topic &&
git notes --ref=note1 add -m "unmodified note1" unmodified &&
test_when_finished git notes --ref=note1 remove topic unmodified &&
git notes --ref=note2 add -m "topic note2" topic &&
git notes --ref=note2 add -m "unmodified note2" unmodified &&
test_when_finished git notes --ref=note2 remove topic unmodified &&
git range-diff --no-color --notes=note1 --notes=note2 main..topic main..unmodified \
>actual &&
sed s/Z/\ /g >expect <<-EOF &&
1: $(test_oid t1) = 1: $(test_oid u1) s/5/A/
2: $(test_oid t2) = 2: $(test_oid u2) s/4/A/
3: $(test_oid t3) = 3: $(test_oid u3) s/11/B/
4: $(test_oid t4) ! 4: $(test_oid u4) s/12/B/
@@ Commit message
Z
Z
Z ## Notes (note1) ##
- topic note1
+ unmodified note1
Z
Z
Z ## Notes (note2) ##
- topic note2
+ unmodified note2
Z
Z ## file ##
Z@@ file: A
EOF
test_cmp expect actual
Removing note for object topic
Removing note for object unmodified
Removing note for object topic
Removing note for object unmodified
ok 34 - range-diff with multiple --notes
expecting success of 3206.35 'format-patch --range-diff does not compare notes by default':
git notes add -m "topic note" topic &&
git notes add -m "unmodified note" unmodified &&
test_when_finished git notes remove topic unmodified &&
git format-patch --cover-letter --range-diff=$prev \
main..unmodified >actual &&
test_when_finished "rm 000?-*" &&
test_line_count = 5 actual &&
test_i18ngrep "^Range-diff:$" 0000-* &&
grep "= 1: .* s/5/A" 0000-* &&
grep "= 2: .* s/4/A" 0000-* &&
grep "= 3: .* s/11/B" 0000-* &&
grep "= 4: .* s/12/B" 0000-* &&
! grep "Notes" 0000-* &&
! grep "note" 0000-*
Range-diff:
1: 4de457d = 1: 35b9b25 s/5/A/
2: fccce22 = 2: de345ab s/4/A/
3: 147e64e = 3: 9af6654 s/11/B/
4: a63e992 = 4: 2901f77 s/12/B/
Removing note for object topic
Removing note for object unmodified
ok 35 - format-patch --range-diff does not compare notes by default
expecting success of 3206.36 'format-patch --range-diff with --no-notes':
git notes add -m "topic note" topic &&
git notes add -m "unmodified note" unmodified &&
test_when_finished git notes remove topic unmodified &&
git format-patch --no-notes --cover-letter --range-diff=$prev \
main..unmodified >actual &&
test_when_finished "rm 000?-*" &&
test_line_count = 5 actual &&
test_i18ngrep "^Range-diff:$" 0000-* &&
grep "= 1: .* s/5/A" 0000-* &&
grep "= 2: .* s/4/A" 0000-* &&
grep "= 3: .* s/11/B" 0000-* &&
grep "= 4: .* s/12/B" 0000-* &&
! grep "Notes" 0000-* &&
! grep "note" 0000-*
Range-diff:
1: 4de457d = 1: 35b9b25 s/5/A/
2: fccce22 = 2: de345ab s/4/A/
3: 147e64e = 3: 9af6654 s/11/B/
4: a63e992 = 4: 2901f77 s/12/B/
Removing note for object topic
Removing note for object unmodified
ok 36 - format-patch --range-diff with --no-notes
expecting success of 3206.37 'format-patch --range-diff with --notes':
git notes add -m "topic note" topic &&
git notes add -m "unmodified note" unmodified &&
test_when_finished git notes remove topic unmodified &&
git format-patch --notes --cover-letter --range-diff=$prev \
main..unmodified >actual &&
test_when_finished "rm 000?-*" &&
test_line_count = 5 actual &&
test_i18ngrep "^Range-diff:$" 0000-* &&
grep "= 1: .* s/5/A" 0000-* &&
grep "= 2: .* s/4/A" 0000-* &&
grep "= 3: .* s/11/B" 0000-* &&
grep "! 4: .* s/12/B" 0000-* &&
sed s/Z/\ /g >expect <<-EOF &&
@@ Commit message
Z
Z
Z ## Notes ##
- topic note
+ unmodified note
Z
Z ## file ##
Z@@ file: A
EOF
sed "/@@ Commit message/,/@@ file: A/!d" 0000-* >actual &&
test_cmp expect actual
Range-diff:
1: 4de457d = 1: 35b9b25 s/5/A/
2: fccce22 = 2: de345ab s/4/A/
3: 147e64e = 3: 9af6654 s/11/B/
4: a63e992 ! 4: 2901f77 s/12/B/
Removing note for object topic
Removing note for object unmodified
ok 37 - format-patch --range-diff with --notes
expecting success of 3206.38 'format-patch --range-diff with format.notes config':
git notes add -m "topic note" topic &&
git notes add -m "unmodified note" unmodified &&
test_when_finished git notes remove topic unmodified &&
test_config format.notes true &&
git format-patch --cover-letter --range-diff=$prev \
main..unmodified >actual &&
test_when_finished "rm 000?-*" &&
test_line_count = 5 actual &&
test_i18ngrep "^Range-diff:$" 0000-* &&
grep "= 1: .* s/5/A" 0000-* &&
grep "= 2: .* s/4/A" 0000-* &&
grep "= 3: .* s/11/B" 0000-* &&
grep "! 4: .* s/12/B" 0000-* &&
sed s/Z/\ /g >expect <<-EOF &&
@@ Commit message
Z
Z
Z ## Notes ##
- topic note
+ unmodified note
Z
Z ## file ##
Z@@ file: A
EOF
sed "/@@ Commit message/,/@@ file: A/!d" 0000-* >actual &&
test_cmp expect actual
Range-diff:
1: 4de457d = 1: 35b9b25 s/5/A/
2: fccce22 = 2: de345ab s/4/A/
3: 147e64e = 3: 9af6654 s/11/B/
4: a63e992 ! 4: 2901f77 s/12/B/
Removing note for object topic
Removing note for object unmodified
ok 38 - format-patch --range-diff with format.notes config
expecting success of 3206.39 'format-patch --range-diff with multiple notes':
git notes --ref=note1 add -m "topic note1" topic &&
git notes --ref=note1 add -m "unmodified note1" unmodified &&
test_when_finished git notes --ref=note1 remove topic unmodified &&
git notes --ref=note2 add -m "topic note2" topic &&
git notes --ref=note2 add -m "unmodified note2" unmodified &&
test_when_finished git notes --ref=note2 remove topic unmodified &&
git format-patch --notes=note1 --notes=note2 --cover-letter --range-diff=$prev \
main..unmodified >actual &&
test_when_finished "rm 000?-*" &&
test_line_count = 5 actual &&
test_i18ngrep "^Range-diff:$" 0000-* &&
grep "= 1: .* s/5/A" 0000-* &&
grep "= 2: .* s/4/A" 0000-* &&
grep "= 3: .* s/11/B" 0000-* &&
grep "! 4: .* s/12/B" 0000-* &&
sed s/Z/\ /g >expect <<-EOF &&
@@ Commit message
Z
Z
Z ## Notes (note1) ##
- topic note1
+ unmodified note1
Z
Z
Z ## Notes (note2) ##
- topic note2
+ unmodified note2
Z
Z ## file ##
Z@@ file: A
EOF
sed "/@@ Commit message/,/@@ file: A/!d" 0000-* >actual &&
test_cmp expect actual
Range-diff:
1: 4de457d = 1: 35b9b25 s/5/A/
2: fccce22 = 2: de345ab s/4/A/
3: 147e64e = 3: 9af6654 s/11/B/
4: a63e992 ! 4: 2901f77 s/12/B/
Removing note for object topic
Removing note for object unmodified
Removing note for object topic
Removing note for object unmodified
ok 39 - format-patch --range-diff with multiple notes
expecting success of 3206.40 '--left-only/--right-only':
git switch --orphan left-right &&
test_commit first &&
test_commit unmatched &&
test_commit common &&
git switch -C left-right first &&
git cherry-pick common &&
git range-diff -s --left-only ...common >actual &&
head_oid=$(git rev-parse --short HEAD) &&
common_oid=$(git rev-parse --short common) &&
echo "1: $head_oid = 2: $common_oid common" >expect &&
test_cmp expect actual
Switched to a new branch 'left-right'
[left-right (root-commit) 50e526b] first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 first.t
[left-right 8b3efcc] unmatched
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 unmatched.t
[left-right 66efeb1] common
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 common.t
Reset branch 'left-right'
[left-right a6d113e] common
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 common.t
ok 40 - --left-only/--right-only
expecting success of 3206.41 'ranges with pathspecs':
git range-diff topic...mode-only-change -- other-file >actual &&
test_line_count = 2 actual &&
topic_oid=$(git rev-parse --short topic) &&
mode_change_oid=$(git rev-parse --short mode-only-change^) &&
file_change_oid=$(git rev-parse --short mode-only-change) &&
grep "$mode_change_oid" actual &&
! grep "$file_change_oid" actual &&
! grep "$topic_oid" actual
-: ------- > 2: 26c107f s/11/B/ + mode change other-file
ok 41 - ranges with pathspecs
expecting success of 3206.42 'submodule changes are shown irrespective of diff.submodule':
git init sub-repo &&
test_commit -C sub-repo sub-first &&
sub_oid1=$(git -C sub-repo rev-parse HEAD) &&
test_commit -C sub-repo sub-second &&
sub_oid2=$(git -C sub-repo rev-parse HEAD) &&
test_commit -C sub-repo sub-third &&
sub_oid3=$(git -C sub-repo rev-parse HEAD) &&
git checkout -b main-sub topic &&
git -c protocol.file.allow=always submodule add ./sub-repo sub &&
git -C sub checkout --detach sub-first &&
git commit -m "add sub" sub &&
sup_oid1=$(git rev-parse --short HEAD) &&
git checkout -b topic-sub &&
git -C sub checkout sub-second &&
git commit -m "change sub" sub &&
sup_oid2=$(git rev-parse --short HEAD) &&
git checkout -b modified-sub main-sub &&
git -C sub checkout sub-third &&
git commit -m "change sub" sub &&
sup_oid3=$(git rev-parse --short HEAD) &&
sup_oid0=$(test_oid __) &&
test_config diff.submodule log &&
git range-diff topic topic-sub modified-sub >actual &&
cat >expect <<-EOF &&
1: $sup_oid1 = 1: $sup_oid1 add sub
2: $sup_oid2 < -: $sup_oid0 change sub
-: $sup_oid0 > 2: $sup_oid3 change sub
EOF
test_cmp expect actual &&
test_config diff.submodule diff &&
git range-diff topic topic-sub modified-sub >actual &&
git range-diff --creation-factor=100 topic topic-sub modified-sub >actual &&
cat >expect <<-EOF &&
1: $sup_oid1 = 1: $sup_oid1 add sub
2: $sup_oid2 ! 2: $sup_oid3 change sub
@@ Commit message
## sub ##
@@
-Subproject commit $sub_oid1
-+Subproject commit $sub_oid2
++Subproject commit $sub_oid3
EOF
test_cmp expect actual &&
test_config diff.submodule diff &&
git range-diff --creation-factor=100 topic topic-sub modified-sub >actual &&
test_cmp expect actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3206-range-diff/sub-repo/.git/
[main (root-commit) 0dd48dc] sub-first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 sub-first.t
[main 5aa4e7e] sub-second
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 sub-second.t
[main 57c2aa9] sub-third
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 sub-third.t
Switched to a new branch 'main-sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3206-range-diff/sub'...
done.
HEAD is now at 0dd48dc sub-first
[main-sub 3424d3a] add sub
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 160000 sub
Switched to a new branch 'topic-sub'
Previous HEAD position was 0dd48dc sub-first
HEAD is now at 5aa4e7e sub-second
[topic-sub f8a571b] change sub
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to a new branch 'modified-sub'
A .gitmodules
M sub
Previous HEAD position was 5aa4e7e sub-second
HEAD is now at 57c2aa9 sub-third
[modified-sub 3bd1f61] change sub
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 42 - submodule changes are shown irrespective of diff.submodule
# passed all 42 test(s)
1..42
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t2400-worktree-add.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/.git/
expecting success of 2400.1 'setup':
test_commit init
[main (root-commit) 2519212] init
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 init.t
ok 1 - setup
expecting success of 2400.2 '"add" an existing worktree':
mkdir -p existing/subtree &&
test_must_fail git worktree add --detach existing main
Preparing worktree (detached HEAD 2519212)
fatal: 'existing' already exists
ok 2 - "add" an existing worktree
expecting success of 2400.3 '"add" an existing empty worktree':
mkdir existing_empty &&
git worktree add --detach existing_empty main
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
ok 3 - "add" an existing empty worktree
expecting success of 2400.4 '"add" using shorthand - fails when no previous branch':
test_must_fail git worktree add existing_short -
fatal: invalid reference: @{-1}
ok 4 - "add" using shorthand - fails when no previous branch
expecting success of 2400.5 '"add" using - shorthand':
git checkout -b newbranch &&
echo hello >myworld &&
git add myworld &&
git commit -m myworld &&
git checkout main &&
git worktree add short-hand - &&
echo refs/heads/newbranch >expect &&
git -C short-hand rev-parse --symbolic-full-name HEAD >actual &&
test_cmp expect actual
Switched to a new branch 'newbranch'
[newbranch 5ae2ce4] myworld
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 myworld
Switched to branch 'main'
Preparing worktree (checking out '@{-1}')
HEAD is now at 5ae2ce4 myworld
ok 5 - "add" using - shorthand
expecting success of 2400.6 '"add" refuses to checkout locked branch':
test_must_fail git worktree add zere main &&
! test -d zere &&
! test -d .git/worktrees/zere
Preparing worktree (checking out 'main')
fatal: 'main' is already checked out at '/<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add'
ok 6 - "add" refuses to checkout locked branch
expecting success of 2400.7 'checking out paths not complaining about linked checkouts':
(
cd existing_empty &&
echo dirty >>init.t &&
git checkout main -- init.t
)
ok 7 - checking out paths not complaining about linked checkouts
expecting success of 2400.8 '"add" worktree':
git rev-parse HEAD >expect &&
git worktree add --detach here main &&
(
cd here &&
test_cmp ../init.t init.t &&
test_must_fail git symbolic-ref HEAD &&
git rev-parse HEAD >actual &&
test_cmp ../expect actual &&
git fsck
)
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
fatal: ref HEAD is not a symbolic ref
ok 8 - "add" worktree
expecting success of 2400.9 '"add" worktree with lock':
git worktree add --detach --lock here-with-lock main &&
test_when_finished "git worktree unlock here-with-lock || :" &&
test -f .git/worktrees/here-with-lock/locked
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
ok 9 - "add" worktree with lock
expecting success of 2400.10 '"add" worktree with lock and reason':
lock_reason="why not" &&
git worktree add --detach --lock --reason "$lock_reason" here-with-lock-reason main &&
test_when_finished "git worktree unlock here-with-lock-reason || :" &&
test -f .git/worktrees/here-with-lock-reason/locked &&
echo "$lock_reason" >expect &&
test_cmp expect .git/worktrees/here-with-lock-reason/locked
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
ok 10 - "add" worktree with lock and reason
expecting success of 2400.11 '"add" worktree with reason but no lock':
test_must_fail git worktree add --detach --reason "why not" here-with-reason-only main &&
test_path_is_missing .git/worktrees/here-with-reason-only/locked
fatal: the option '--reason' requires '--lock'
ok 11 - "add" worktree with reason but no lock
expecting success of 2400.12 '"add" worktree from a subdir':
(
mkdir sub &&
cd sub &&
git worktree add --detach here main &&
cd here &&
test_cmp ../../init.t init.t
)
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
ok 12 - "add" worktree from a subdir
expecting success of 2400.13 '"add" from a linked checkout':
(
cd here &&
git worktree add --detach nested-here main &&
cd nested-here &&
git fsck
)
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
ok 13 - "add" from a linked checkout
expecting success of 2400.14 '"add" worktree creating new branch':
git worktree add -b newmain there main &&
(
cd there &&
test_cmp ../init.t init.t &&
git symbolic-ref HEAD >actual &&
echo refs/heads/newmain >expect &&
test_cmp expect actual &&
git fsck
)
Preparing worktree (new branch 'newmain')
HEAD is now at 2519212 init
ok 14 - "add" worktree creating new branch
expecting success of 2400.15 'die the same branch is already checked out':
(
cd here &&
test_must_fail git checkout newmain
)
fatal: 'newmain' is already checked out at '/<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/there'
ok 15 - die the same branch is already checked out
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
expecting success of 2400.16 'die the same branch is already checked out (symlink)':
head=$(git -C there rev-parse --git-path HEAD) &&
ref=$(git -C there symbolic-ref HEAD) &&
rm "$head" &&
ln -s "$ref" "$head" &&
test_must_fail git -C here checkout newmain
fatal: 'newmain' is already checked out at '/<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/there'
ok 16 - die the same branch is already checked out (symlink)
expecting success of 2400.17 'not die the same branch is already checked out':
(
cd here &&
git worktree add --force anothernewmain newmain
)
Preparing worktree (checking out 'newmain')
HEAD is now at 2519212 init
ok 17 - not die the same branch is already checked out
expecting success of 2400.18 'not die on re-checking out current branch':
(
cd there &&
git checkout newmain
)
Already on 'newmain'
ok 18 - not die on re-checking out current branch
expecting success of 2400.19 '"add" from a bare repo':
(
git clone --bare . bare &&
cd bare &&
git worktree add -b bare-main ../there2 main
)
Cloning into bare repository 'bare'...
done.
Preparing worktree (new branch 'bare-main')
HEAD is now at 2519212 init
ok 19 - "add" from a bare repo
expecting success of 2400.20 'checkout from a bare repo without "add"':
(
cd bare &&
test_must_fail git checkout main
)
fatal: this operation must be run in a work tree
ok 20 - checkout from a bare repo without "add"
expecting success of 2400.21 '"add" default branch of a bare repo':
(
git clone --bare . bare2 &&
cd bare2 &&
git worktree add ../there3 main &&
cd ../there3 &&
# Simple check that a Git command does not
# immediately fail with the current setup
git status
) &&
cat >expect <<-EOF &&
init.t
EOF
ls there3 >actual &&
test_cmp expect actual
Cloning into bare repository 'bare2'...
done.
Preparing worktree (checking out 'main')
HEAD is now at 2519212 init
On branch main
nothing to commit, working tree clean
ok 21 - "add" default branch of a bare repo
expecting success of 2400.22 '"add" to bare repo with worktree config':
(
git clone --bare . bare3 &&
cd bare3 &&
git config extensions.worktreeconfig true &&
# Add config values that are erroneous to have in
# a config.worktree file outside of the main
# working tree, to check that Git filters them out
# when copying config during "git worktree add".
git config --worktree core.bare true &&
git config --worktree core.worktree "$(pwd)" &&
# We want to check that bogus.key is copied
git config --worktree bogus.key value &&
git config --unset core.bare &&
git worktree add ../there4 main &&
cd ../there4 &&
# Simple check that a Git command does not
# immediately fail with the current setup
git status &&
git worktree add --detach ../there5 &&
cd ../there5 &&
git status
) &&
# the worktree has the arbitrary value copied.
test_cmp_config -C there4 value bogus.key &&
test_cmp_config -C there5 value bogus.key &&
# however, core.bare and core.worktree were removed.
test_must_fail git -C there4 config core.bare &&
test_must_fail git -C there4 config core.worktree &&
cat >expect <<-EOF &&
init.t
EOF
ls there4 >actual &&
test_cmp expect actual &&
ls there5 >actual &&
test_cmp expect actual
Cloning into bare repository 'bare3'...
done.
warning: core.bare and core.worktree do not make sense
warning: core.bare and core.worktree do not make sense
warning: core.bare and core.worktree do not make sense
Preparing worktree (checking out 'main')
HEAD is now at 2519212 init
On branch main
nothing to commit, working tree clean
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
Not currently on any branch.
nothing to commit, working tree clean
ok 22 - "add" to bare repo with worktree config
expecting success of 2400.23 'checkout with grafts':
test_when_finished rm .git/info/grafts &&
test_commit abc &&
SHA1=$(git rev-parse HEAD) &&
test_commit def &&
test_commit xyz &&
mkdir .git/info &&
echo "$(git rev-parse HEAD) $SHA1" >.git/info/grafts &&
cat >expected <<-\EOF &&
xyz
abc
EOF
git log --format=%s -2 >actual &&
test_cmp expected actual &&
git worktree add --detach grafted main &&
git --git-dir=grafted/.git log --format=%s -2 >actual &&
test_cmp expected actual
[main 6d278e0] abc
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 abc.t
[main 3c13a14] def
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 def.t
[main a51b5be] xyz
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 xyz.t
hint: Support for <GIT_DIR>/info/grafts is deprecated
hint: and will be removed in a future Git version.
hint:
hint: Please use "git replace --convert-graft-file"
hint: to convert the grafts into replace refs.
hint:
hint: Turn this message off by running
hint: "git config advice.graftFileDeprecated false"
hint: Support for <GIT_DIR>/info/grafts is deprecated
hint: and will be removed in a future Git version.
hint:
hint: Please use "git replace --convert-graft-file"
hint: to convert the grafts into replace refs.
hint:
hint: Turn this message off by running
hint: "git config advice.graftFileDeprecated false"
Preparing worktree (detached HEAD a51b5be)
hint: Support for <GIT_DIR>/info/grafts is deprecated
hint: and will be removed in a future Git version.
hint:
hint: Please use "git replace --convert-graft-file"
hint: to convert the grafts into replace refs.
hint:
hint: Turn this message off by running
hint: "git config advice.graftFileDeprecated false"
hint: Support for <GIT_DIR>/info/grafts is deprecated
hint: and will be removed in a future Git version.
hint:
hint: Please use "git replace --convert-graft-file"
hint: to convert the grafts into replace refs.
hint:
hint: Turn this message off by running
hint: "git config advice.graftFileDeprecated false"
HEAD is now at a51b5be xyz
hint: Support for <GIT_DIR>/info/grafts is deprecated
hint: and will be removed in a future Git version.
hint:
hint: Please use "git replace --convert-graft-file"
hint: to convert the grafts into replace refs.
hint:
hint: Turn this message off by running
hint: "git config advice.graftFileDeprecated false"
ok 23 - checkout with grafts
expecting success of 2400.24 '"add" from relative HEAD':
test_commit a &&
test_commit b &&
test_commit c &&
git rev-parse HEAD~1 >expected &&
git worktree add relhead HEAD~1 &&
git -C relhead rev-parse HEAD >actual &&
test_cmp expected actual
[main e9a6308] a
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 a.t
[main 15d3bfc] b
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 b.t
[main 179a9e0] c
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 c.t
Preparing worktree (detached HEAD 15d3bfc)
HEAD is now at 15d3bfc b
ok 24 - "add" from relative HEAD
expecting success of 2400.25 '"add -b" with <branch> omitted':
git worktree add -b burble flornk &&
test_cmp_rev HEAD burble
Preparing worktree (new branch 'burble')
HEAD is now at 179a9e0 c
ok 25 - "add -b" with <branch> omitted
expecting success of 2400.26 '"add --detach" with <branch> omitted':
git worktree add --detach fishhook &&
git rev-parse HEAD >expected &&
git -C fishhook rev-parse HEAD >actual &&
test_cmp expected actual &&
test_must_fail git -C fishhook symbolic-ref HEAD
Preparing worktree (detached HEAD 179a9e0)
HEAD is now at 179a9e0 c
fatal: ref HEAD is not a symbolic ref
ok 26 - "add --detach" with <branch> omitted
expecting success of 2400.27 '"add" with <branch> omitted':
git worktree add wiffle/bat &&
test_cmp_rev HEAD bat
Preparing worktree (new branch 'bat')
HEAD is now at 179a9e0 c
ok 27 - "add" with <branch> omitted
expecting success of 2400.28 '"add" checks out existing branch of dwimd name':
git branch dwim HEAD~1 &&
git worktree add dwim &&
test_cmp_rev HEAD~1 dwim &&
(
cd dwim &&
test_cmp_rev HEAD dwim
)
Preparing worktree (checking out 'dwim')
HEAD is now at 15d3bfc b
ok 28 - "add" checks out existing branch of dwimd name
expecting success of 2400.29 '"add <path>" dwim fails with checked out branch':
git checkout -b test-branch &&
test_must_fail git worktree add test-branch &&
test_path_is_missing test-branch
Switched to a new branch 'test-branch'
Preparing worktree (checking out 'test-branch')
fatal: 'test-branch' is already checked out at '/<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add'
ok 29 - "add <path>" dwim fails with checked out branch
expecting success of 2400.30 '"add --force" with existing dwimd name doesnt die':
git checkout test-branch &&
git worktree add --force test-branch
Already on 'test-branch'
Preparing worktree (checking out 'test-branch')
HEAD is now at 179a9e0 c
ok 30 - "add --force" with existing dwimd name doesnt die
expecting success of 2400.31 '"add" no auto-vivify with --detach and <branch> omitted':
git worktree add --detach mish/mash &&
test_must_fail git rev-parse mash -- &&
test_must_fail git -C mish/mash symbolic-ref HEAD
Preparing worktree (detached HEAD 179a9e0)
HEAD is now at 179a9e0 c
fatal: bad revision 'mash'
fatal: ref HEAD is not a symbolic ref
ok 31 - "add" no auto-vivify with --detach and <branch> omitted
expecting success of 2400.32 ''worktree add' with '-b poodle -B poodle bamboo main' has mutually exclusive options':
test_must_fail git worktree add $opts 2>actual &&
grep -E "fatal:( options)? .* cannot be used together" actual
fatal: options '-b', '-B', and '--detach' cannot be used together
ok 32 - 'worktree add' with '-b poodle -B poodle bamboo main' has mutually exclusive options
expecting success of 2400.33 ''worktree add' with '-b poodle --detach bamboo main' has mutually exclusive options':
test_must_fail git worktree add $opts 2>actual &&
grep -E "fatal:( options)? .* cannot be used together" actual
fatal: options '-b', '-B', and '--detach' cannot be used together
ok 33 - 'worktree add' with '-b poodle --detach bamboo main' has mutually exclusive options
expecting success of 2400.34 ''worktree add' with '-B poodle --detach bamboo main' has mutually exclusive options':
test_must_fail git worktree add $opts 2>actual &&
grep -E "fatal:( options)? .* cannot be used together" actual
fatal: options '-b', '-B', and '--detach' cannot be used together
ok 34 - 'worktree add' with '-B poodle --detach bamboo main' has mutually exclusive options
expecting success of 2400.35 ''worktree add' with '--orphan --detach bamboo' has mutually exclusive options':
test_must_fail git worktree add $opts 2>actual &&
grep -E "fatal:( options)? .* cannot be used together" actual
fatal: options '--orphan', and '--detach' cannot be used together
ok 35 - 'worktree add' with '--orphan --detach bamboo' has mutually exclusive options
expecting success of 2400.36 ''worktree add' with '--orphan --no-checkout bamboo' has mutually exclusive options':
test_must_fail git worktree add $opts 2>actual &&
grep -E "fatal:( options)? .* cannot be used together" actual
fatal: '--orphan' and '--no-checkout' cannot be used together
ok 36 - 'worktree add' with '--orphan --no-checkout bamboo' has mutually exclusive options
expecting success of 2400.37 ''worktree add' with '--orphan bamboo main' has mutually exclusive options':
test_must_fail git worktree add $opts 2>actual &&
grep -E "fatal:( options)? .* cannot be used together" actual
fatal: '--orphan' and '<commit-ish>' cannot be used together
ok 37 - 'worktree add' with '--orphan bamboo main' has mutually exclusive options
expecting success of 2400.38 ''worktree add' with '--orphan -b bamboo wtdir/ main' has mutually exclusive options':
test_must_fail git worktree add $opts 2>actual &&
grep -E "fatal:( options)? .* cannot be used together" actual
fatal: '--orphan' and '<commit-ish>' cannot be used together
ok 38 - 'worktree add' with '--orphan -b bamboo wtdir/ main' has mutually exclusive options
expecting success of 2400.39 '"add -B" fails if the branch is checked out':
git rev-parse newmain >before &&
test_must_fail git worktree add -B newmain bamboo main &&
git rev-parse newmain >after &&
test_cmp before after
fatal: 'newmain' is already checked out at '/<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/there'
ok 39 - "add -B" fails if the branch is checked out
expecting success of 2400.40 'add -B':
git worktree add -B poodle bamboo2 main^ &&
git -C bamboo2 symbolic-ref HEAD >actual &&
echo refs/heads/poodle >expected &&
test_cmp expected actual &&
test_cmp_rev main^ poodle
Preparing worktree (new branch 'poodle')
HEAD is now at 15d3bfc b
ok 40 - add -B
expecting success of 2400.41 'add --quiet':
test_when_finished "git worktree remove -f -f another-worktree" &&
git worktree add --quiet another-worktree main 2>actual &&
test_must_be_empty actual
ok 41 - add --quiet
expecting success of 2400.42 'add --quiet -b':
test_when_finished "git branch -D quietnewbranch" &&
test_when_finished "git worktree remove -f -f another-worktree" &&
git worktree add --quiet -b quietnewbranch another-worktree 2>actual &&
test_must_be_empty actual
Deleted branch quietnewbranch (was 179a9e0).
ok 42 - add --quiet -b
expecting success of 2400.43 '"add --orphan"':
test_when_finished "git worktree remove -f -f orphandir" &&
git worktree add --orphan -b neworphan orphandir &&
echo refs/heads/neworphan >expected &&
git -C orphandir symbolic-ref HEAD >actual &&
test_cmp expected actual
Preparing worktree (new branch 'neworphan')
ok 43 - "add --orphan"
expecting success of 2400.44 '"add --orphan (no -b)"':
test_when_finished "git worktree remove -f -f neworphan" &&
git worktree add --orphan neworphan &&
echo refs/heads/neworphan >expected &&
git -C neworphan symbolic-ref HEAD >actual &&
test_cmp expected actual
Preparing worktree (new branch 'neworphan')
ok 44 - "add --orphan (no -b)"
expecting success of 2400.45 '"add --orphan --quiet"':
test_when_finished "git worktree remove -f -f orphandir" &&
git worktree add --quiet --orphan -b neworphan orphandir 2>log.actual &&
test_must_be_empty log.actual &&
echo refs/heads/neworphan >expected &&
git -C orphandir symbolic-ref HEAD >actual &&
test_cmp expected actual
ok 45 - "add --orphan --quiet"
expecting success of 2400.46 '"add --orphan" fails if the branch already exists':
test_when_finished "git branch -D existingbranch" &&
git worktree add -b existingbranch orphandir main &&
git worktree remove orphandir &&
test_must_fail git worktree add --orphan -b existingbranch orphandir
Preparing worktree (new branch 'existingbranch')
HEAD is now at 179a9e0 c
Preparing worktree (new branch 'existingbranch')
fatal: a branch named 'existingbranch' already exists
Deleted branch existingbranch (was 179a9e0).
ok 46 - "add --orphan" fails if the branch already exists
expecting success of 2400.47 '"add --orphan" with empty repository':
test_when_finished "rm -rf empty_repo" &&
echo refs/heads/newbranch >expected &&
GIT_DIR="empty_repo" git init --bare &&
git -C empty_repo worktree add --orphan -b newbranch worktreedir &&
git -C empty_repo/worktreedir symbolic-ref HEAD >actual &&
test_cmp expected actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/empty_repo/
Preparing worktree (new branch 'newbranch')
ok 47 - "add --orphan" with empty repository
expecting success of 2400.48 '"add" worktree with orphan branch and lock':
git worktree add --lock --orphan -b orphanbr orphan-with-lock &&
test_when_finished "git worktree unlock orphan-with-lock || :" &&
test -f .git/worktrees/orphan-with-lock/locked
Preparing worktree (new branch 'orphanbr')
ok 48 - "add" worktree with orphan branch and lock
expecting success of 2400.49 '"add" worktree with orphan branch, lock, and reason':
lock_reason="why not" &&
git worktree add --detach --lock --reason "$lock_reason" orphan-with-lock-reason main &&
test_when_finished "git worktree unlock orphan-with-lock-reason || :" &&
test -f .git/worktrees/orphan-with-lock-reason/locked &&
echo "$lock_reason" >expect &&
test_cmp expect .git/worktrees/orphan-with-lock-reason/locked
Preparing worktree (detached HEAD 179a9e0)
HEAD is now at 179a9e0 c
ok 49 - "add" worktree with orphan branch, lock, and reason
expecting success of 2400.50 ''worktree add' show orphan hint in bad/orphan HEAD w/ no opts':
test_when_finished "rm -rf repo" &&
git init repo &&
(cd repo && test_commit commit) &&
git -C repo switch --orphan noref &&
test_must_fail git -C repo worktree add $opts foobar/ 2>actual &&
! grep "error: unknown switch" actual &&
grep "hint: If you meant to create a worktree containing a new orphan branch" actual &&
if [ $use_branch -eq 1 ]
then
grep -E "^hint: +git worktree add --orphan -b [^ ]+ [^ ]+$" actual
else
grep -E "^hint: +git worktree add --orphan [^ ]+$" actual
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'noref'
hint: If you meant to create a worktree containing a new orphan branch
hint: git worktree add --orphan foobar/
ok 50 - 'worktree add' show orphan hint in bad/orphan HEAD w/ no opts
expecting success of 2400.51 ''worktree add' show orphan hint in bad/orphan HEAD w/ -b':
test_when_finished "rm -rf repo" &&
git init repo &&
(cd repo && test_commit commit) &&
git -C repo switch --orphan noref &&
test_must_fail git -C repo worktree add $opts foobar/ 2>actual &&
! grep "error: unknown switch" actual &&
grep "hint: If you meant to create a worktree containing a new orphan branch" actual &&
if [ $use_branch -eq 1 ]
then
grep -E "^hint: +git worktree add --orphan -b [^ ]+ [^ ]+$" actual
else
grep -E "^hint: +git worktree add --orphan [^ ]+$" actual
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'noref'
hint: If you meant to create a worktree containing a new orphan branch
hint: git worktree add --orphan -b foobar_branch foobar/
ok 51 - 'worktree add' show orphan hint in bad/orphan HEAD w/ -b
expecting success of 2400.52 ''worktree add' show orphan hint in bad/orphan HEAD w/ -B':
test_when_finished "rm -rf repo" &&
git init repo &&
(cd repo && test_commit commit) &&
git -C repo switch --orphan noref &&
test_must_fail git -C repo worktree add $opts foobar/ 2>actual &&
! grep "error: unknown switch" actual &&
grep "hint: If you meant to create a worktree containing a new orphan branch" actual &&
if [ $use_branch -eq 1 ]
then
grep -E "^hint: +git worktree add --orphan -b [^ ]+ [^ ]+$" actual
else
grep -E "^hint: +git worktree add --orphan [^ ]+$" actual
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'noref'
hint: If you meant to create a worktree containing a new orphan branch
hint: git worktree add --orphan -b foobar_branch foobar/
ok 52 - 'worktree add' show orphan hint in bad/orphan HEAD w/ -B
expecting success of 2400.53 ''worktree add' doesn't show orphan hint in bad/orphan HEAD w/ --quiet':
test_when_finished "rm -rf repo" &&
git init repo &&
(cd repo && test_commit commit) &&
test_must_fail git -C repo worktree add --quiet foobar_branch foobar/ 2>actual &&
! grep "error: unknown switch" actual &&
! grep "hint: If you meant to create a worktree containing a new orphan branch" actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
ok 53 - 'worktree add' doesn't show orphan hint in bad/orphan HEAD w/ --quiet
expecting success of 2400.54 'local clone from linked checkout':
git clone --local here here-clone &&
( cd here-clone && git fsck )
Cloning into 'here-clone'...
done.
ok 54 - local clone from linked checkout
expecting success of 2400.55 'local clone --shared from linked checkout':
git -C bare worktree add --detach ../baretree &&
git clone --local --shared baretree bare-clone &&
grep /bare/ bare-clone/.git/objects/info/alternates
Preparing worktree (detached HEAD 2519212)
HEAD is now at 2519212 init
Cloning into 'bare-clone'...
done.
/<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/bare/objects
ok 55 - local clone --shared from linked checkout
expecting success of 2400.56 '"add" worktree with --no-checkout':
git worktree add --no-checkout -b swamp swamp &&
! test -e swamp/init.t &&
git -C swamp reset --hard &&
test_cmp init.t swamp/init.t
Preparing worktree (new branch 'swamp')
HEAD is now at 179a9e0 c
ok 56 - "add" worktree with --no-checkout
expecting success of 2400.57 '"add" worktree with --checkout':
git worktree add --checkout -b swmap2 swamp2 &&
test_cmp init.t swamp2/init.t
Preparing worktree (new branch 'swmap2')
HEAD is now at 179a9e0 c
ok 57 - "add" worktree with --checkout
expecting success of 2400.58 'put a worktree under rebase':
git worktree add under-rebase &&
(
cd under-rebase &&
set_fake_editor &&
FAKE_LINES="edit 1" git rebase -i HEAD^ &&
git worktree list | grep "under-rebase.*detached HEAD"
)
Preparing worktree (new branch 'under-rebase')
HEAD is now at 179a9e0 c
rebase -i script before editing:
pick 179a9e0 c
rebase -i script after editing:
edit 179a9e0 c
Rebasing (1/1)
Stopped at 179a9e0... c
You can amend the commit now, with
git commit --amend
Once you are satisfied with your changes, run
git rebase --continue
/<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/under-rebase 179a9e0 (detached HEAD)
ok 58 - put a worktree under rebase
expecting success of 2400.59 'add a worktree, checking out a rebased branch':
test_must_fail git worktree add new-rebase under-rebase &&
! test -d new-rebase
Preparing worktree (checking out 'under-rebase')
fatal: 'under-rebase' is already checked out at '/<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/under-rebase'
ok 59 - add a worktree, checking out a rebased branch
expecting success of 2400.60 'checking out a rebased branch from another worktree':
git worktree add new-place &&
test_must_fail git -C new-place checkout under-rebase
Preparing worktree (new branch 'new-place')
HEAD is now at 179a9e0 c
fatal: 'under-rebase' is already checked out at '/<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/under-rebase'
ok 60 - checking out a rebased branch from another worktree
expecting success of 2400.61 'not allow to delete a branch under rebase':
(
cd under-rebase &&
test_must_fail git branch -D under-rebase
)
error: Cannot delete branch 'under-rebase' checked out at '/<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/under-rebase'
ok 61 - not allow to delete a branch under rebase
expecting success of 2400.62 'rename a branch under rebase not allowed':
test_must_fail git branch -M under-rebase rebase-with-new-name
fatal: Branch refs/heads/under-rebase is being rebased at /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/under-rebase
ok 62 - rename a branch under rebase not allowed
expecting success of 2400.63 'check out from current worktree branch ok':
(
cd under-rebase &&
git checkout under-rebase &&
git checkout - &&
git rebase --abort
)
Switched to branch 'under-rebase'
Note: switching to '179a9e09a27c48c73ff2a192ec62ebcd60fedd6a'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 179a9e0 c
ok 63 - check out from current worktree branch ok
expecting success of 2400.64 'checkout a branch under bisect':
git worktree add under-bisect &&
(
cd under-bisect &&
git bisect start &&
git bisect bad &&
git bisect good HEAD~2 &&
git worktree list | grep "under-bisect.*detached HEAD" &&
test_must_fail git worktree add new-bisect under-bisect &&
! test -d new-bisect
)
Preparing worktree (new branch 'under-bisect')
HEAD is now at 179a9e0 c
status: waiting for both good and bad commits
status: waiting for good commit(s), bad commit known
Bisecting: 0 revisions left to test after this (roughly 0 steps)
[15d3bfcc767862b6abd36db671feb8356eb7d7d7] b
/<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/under-bisect 15d3bfc (detached HEAD)
Preparing worktree (checking out 'under-bisect')
fatal: 'under-bisect' is already checked out at '/<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/under-bisect'
ok 64 - checkout a branch under bisect
expecting success of 2400.65 'rename a branch under bisect not allowed':
test_must_fail git branch -M under-bisect bisect-with-new-name
fatal: Branch refs/heads/under-bisect is being bisected at /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/under-bisect
ok 65 - rename a branch under bisect not allowed
expecting success of 2400.66 '--track sets up tracking':
test_when_finished rm -rf track &&
git worktree add --track -b track track main &&
test_branch_upstream track . main
Preparing worktree (new branch 'track')
branch 'track' set up to track 'main'.
HEAD is now at 179a9e0 c
ok 66 - --track sets up tracking
expecting success of 2400.67 '"add" <path> <remote/branch> w/ no HEAD':
test_when_finished rm -rf repo_upstream repo_local foo &&
setup_remote_repo repo_upstream repo_local &&
git -C repo_local config --bool core.bare true &&
git -C repo_local branch -D main &&
git -C repo_local worktree add ./foo repo_upstream/foo
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo_upstream/.git/
[main (root-commit) 135732a] repo_upstream_main
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 repo_upstream_main.t
Switched to a new branch 'foo'
[foo 7502c9e] upstream_foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 upstream_foo.t
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo_local/.git/
[main (root-commit) d4b0dca] repo_local_main
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 repo_local_main.t
From ../repo_upstream
* [new branch] foo -> repo_upstream/foo
* [new branch] main -> repo_upstream/main
* [new tag] repo_upstream_main -> repo_upstream_main
* [new tag] upstream_foo -> upstream_foo
Deleted branch main (was d4b0dca).
Preparing worktree (detached HEAD 7502c9e)
HEAD is now at 7502c9e upstream_foo
ok 67 - "add" <path> <remote/branch> w/ no HEAD
expecting success of 2400.68 '--no-track avoids setting up tracking':
test_when_finished rm -rf repo_upstream repo_local foo &&
setup_remote_repo repo_upstream repo_local &&
(
cd repo_local &&
git worktree add --no-track -b foo ../foo repo_upstream/foo
) &&
(
cd foo &&
test_must_fail git config "branch.foo.remote" &&
test_must_fail git config "branch.foo.merge" &&
test_cmp_rev refs/remotes/repo_upstream/foo refs/heads/foo
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo_upstream/.git/
[main (root-commit) 135732a] repo_upstream_main
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 repo_upstream_main.t
Switched to a new branch 'foo'
[foo 7502c9e] upstream_foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 upstream_foo.t
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo_local/.git/
[main (root-commit) d4b0dca] repo_local_main
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 repo_local_main.t
From ../repo_upstream
* [new branch] foo -> repo_upstream/foo
* [new branch] main -> repo_upstream/main
* [new tag] repo_upstream_main -> repo_upstream_main
* [new tag] upstream_foo -> upstream_foo
Preparing worktree (new branch 'foo')
HEAD is now at 7502c9e upstream_foo
ok 68 - --no-track avoids setting up tracking
expecting success of 2400.69 '"add" <path> <non-existent-branch> fails':
test_must_fail git worktree add foo non-existent
fatal: invalid reference: non-existent
ok 69 - "add" <path> <non-existent-branch> fails
expecting success of 2400.70 '"add" <path> <branch> dwims':
test_when_finished rm -rf repo_upstream repo_dwim foo &&
setup_remote_repo repo_upstream repo_dwim &&
git init repo_dwim &&
(
cd repo_dwim &&
git worktree add ../foo foo
) &&
(
cd foo &&
test_branch_upstream foo repo_upstream foo &&
test_cmp_rev refs/remotes/repo_upstream/foo refs/heads/foo
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo_upstream/.git/
[main (root-commit) 135732a] repo_upstream_main
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 repo_upstream_main.t
Switched to a new branch 'foo'
[foo 7502c9e] upstream_foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 upstream_foo.t
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo_dwim/.git/
[main (root-commit) 9838263] repo_dwim_main
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 repo_dwim_main.t
From ../repo_upstream
* [new branch] foo -> repo_upstream/foo
* [new branch] main -> repo_upstream/main
* [new tag] repo_upstream_main -> repo_upstream_main
* [new tag] upstream_foo -> upstream_foo
Reinitialized existing Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo_dwim/.git/
Preparing worktree (new branch 'foo')
branch 'foo' set up to track 'repo_upstream/foo'.
HEAD is now at 7502c9e upstream_foo
ok 70 - "add" <path> <branch> dwims
expecting success of 2400.71 '"add" <path> <branch> dwims with checkout.defaultRemote':
test_when_finished rm -rf repo_upstream repo_dwim foo &&
setup_remote_repo repo_upstream repo_dwim &&
git init repo_dwim &&
(
cd repo_dwim &&
git remote add repo_upstream2 ../repo_upstream &&
git fetch repo_upstream2 &&
test_must_fail git worktree add ../foo foo &&
git -c checkout.defaultRemote=repo_upstream worktree add ../foo foo &&
git status -uno --porcelain >status.actual &&
test_must_be_empty status.actual
) &&
(
cd foo &&
test_branch_upstream foo repo_upstream foo &&
test_cmp_rev refs/remotes/repo_upstream/foo refs/heads/foo
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo_upstream/.git/
[main (root-commit) 135732a] repo_upstream_main
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 repo_upstream_main.t
Switched to a new branch 'foo'
[foo 7502c9e] upstream_foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 upstream_foo.t
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo_dwim/.git/
[main (root-commit) 9838263] repo_dwim_main
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 repo_dwim_main.t
From ../repo_upstream
* [new branch] foo -> repo_upstream/foo
* [new branch] main -> repo_upstream/main
* [new tag] repo_upstream_main -> repo_upstream_main
* [new tag] upstream_foo -> upstream_foo
Reinitialized existing Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo_dwim/.git/
From ../repo_upstream
* [new branch] foo -> repo_upstream2/foo
* [new branch] main -> repo_upstream2/main
fatal: invalid reference: foo
Preparing worktree (new branch 'foo')
branch 'foo' set up to track 'repo_upstream/foo'.
HEAD is now at 7502c9e upstream_foo
ok 71 - "add" <path> <branch> dwims with checkout.defaultRemote
expecting success of 2400.72 'git worktree add does not match remote':
test_when_finished rm -rf repo_a repo_b foo &&
setup_remote_repo repo_a repo_b &&
(
cd repo_b &&
git worktree add ../foo
) &&
(
cd foo &&
test_must_fail git config "branch.foo.remote" &&
test_must_fail git config "branch.foo.merge" &&
test_cmp_rev ! refs/remotes/repo_a/foo refs/heads/foo
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo_a/.git/
[main (root-commit) dcba593] repo_a_main
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 repo_a_main.t
Switched to a new branch 'foo'
[foo 9855f4b] upstream_foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 upstream_foo.t
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo_b/.git/
[main (root-commit) 49eaa9c] repo_b_main
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 repo_b_main.t
From ../repo_a
* [new branch] foo -> repo_a/foo
* [new branch] main -> repo_a/main
* [new tag] repo_a_main -> repo_a_main
* [new tag] upstream_foo -> upstream_foo
Preparing worktree (new branch 'foo')
HEAD is now at 49eaa9c repo_b_main
ok 72 - git worktree add does not match remote
expecting success of 2400.73 'git worktree add --guess-remote sets up tracking':
test_when_finished rm -rf repo_a repo_b foo &&
setup_remote_repo repo_a repo_b &&
(
cd repo_b &&
git worktree add --guess-remote ../foo
) &&
(
cd foo &&
test_branch_upstream foo repo_a foo &&
test_cmp_rev refs/remotes/repo_a/foo refs/heads/foo
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo_a/.git/
[main (root-commit) dcba593] repo_a_main
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 repo_a_main.t
Switched to a new branch 'foo'
[foo 9855f4b] upstream_foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 upstream_foo.t
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo_b/.git/
[main (root-commit) 49eaa9c] repo_b_main
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 repo_b_main.t
From ../repo_a
* [new branch] foo -> repo_a/foo
* [new branch] main -> repo_a/main
* [new tag] repo_a_main -> repo_a_main
* [new tag] upstream_foo -> upstream_foo
Preparing worktree (new branch 'foo')
branch 'foo' set up to track 'repo_a/foo'.
HEAD is now at 9855f4b upstream_foo
ok 73 - git worktree add --guess-remote sets up tracking
expecting success of 2400.74 'git worktree add --guess-remote sets up tracking (quiet)':
test_when_finished rm -rf repo_a repo_b foo &&
setup_remote_repo repo_a repo_b &&
(
cd repo_b &&
git worktree add --quiet --guess-remote ../foo 2>actual &&
test_must_be_empty actual
) &&
(
cd foo &&
test_branch_upstream foo repo_a foo &&
test_cmp_rev refs/remotes/repo_a/foo refs/heads/foo
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo_a/.git/
[main (root-commit) dcba593] repo_a_main
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 repo_a_main.t
Switched to a new branch 'foo'
[foo 9855f4b] upstream_foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 upstream_foo.t
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo_b/.git/
[main (root-commit) 49eaa9c] repo_b_main
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 repo_b_main.t
From ../repo_a
* [new branch] foo -> repo_a/foo
* [new branch] main -> repo_a/main
* [new tag] repo_a_main -> repo_a_main
* [new tag] upstream_foo -> upstream_foo
ok 74 - git worktree add --guess-remote sets up tracking (quiet)
expecting success of 2400.75 'git worktree --no-guess-remote (quiet)':
test_when_finished rm -rf repo_a repo_b foo &&
setup_remote_repo repo_a repo_b &&
(
cd repo_b &&
git worktree add --quiet --no-guess-remote ../foo
) &&
(
cd foo &&
test_must_fail git config "branch.foo.remote" &&
test_must_fail git config "branch.foo.merge" &&
test_cmp_rev ! refs/remotes/repo_a/foo refs/heads/foo
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo_a/.git/
[main (root-commit) dcba593] repo_a_main
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 repo_a_main.t
Switched to a new branch 'foo'
[foo 9855f4b] upstream_foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 upstream_foo.t
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo_b/.git/
[main (root-commit) 49eaa9c] repo_b_main
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 repo_b_main.t
From ../repo_a
* [new branch] foo -> repo_a/foo
* [new branch] main -> repo_a/main
* [new tag] repo_a_main -> repo_a_main
* [new tag] upstream_foo -> upstream_foo
ok 75 - git worktree --no-guess-remote (quiet)
expecting success of 2400.76 'git worktree add with worktree.guessRemote sets up tracking':
test_when_finished rm -rf repo_a repo_b foo &&
setup_remote_repo repo_a repo_b &&
(
cd repo_b &&
git config worktree.guessRemote true &&
git worktree add ../foo
) &&
(
cd foo &&
test_branch_upstream foo repo_a foo &&
test_cmp_rev refs/remotes/repo_a/foo refs/heads/foo
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo_a/.git/
[main (root-commit) dcba593] repo_a_main
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 repo_a_main.t
Switched to a new branch 'foo'
[foo 9855f4b] upstream_foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 upstream_foo.t
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo_b/.git/
[main (root-commit) 49eaa9c] repo_b_main
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 repo_b_main.t
From ../repo_a
* [new branch] foo -> repo_a/foo
* [new branch] main -> repo_a/main
* [new tag] repo_a_main -> repo_a_main
* [new tag] upstream_foo -> upstream_foo
Preparing worktree (new branch 'foo')
branch 'foo' set up to track 'repo_a/foo'.
HEAD is now at 9855f4b upstream_foo
ok 76 - git worktree add with worktree.guessRemote sets up tracking
expecting success of 2400.77 'git worktree --no-guess-remote option overrides config':
test_when_finished rm -rf repo_a repo_b foo &&
setup_remote_repo repo_a repo_b &&
(
cd repo_b &&
git config worktree.guessRemote true &&
git worktree add --no-guess-remote ../foo
) &&
(
cd foo &&
test_must_fail git config "branch.foo.remote" &&
test_must_fail git config "branch.foo.merge" &&
test_cmp_rev ! refs/remotes/repo_a/foo refs/heads/foo
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo_a/.git/
[main (root-commit) dcba593] repo_a_main
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 repo_a_main.t
Switched to a new branch 'foo'
[foo 9855f4b] upstream_foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 upstream_foo.t
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo_b/.git/
[main (root-commit) 49eaa9c] repo_b_main
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 repo_b_main.t
From ../repo_a
* [new branch] foo -> repo_a/foo
* [new branch] main -> repo_a/main
* [new tag] repo_a_main -> repo_a_main
* [new tag] upstream_foo -> upstream_foo
Preparing worktree (new branch 'foo')
HEAD is now at 49eaa9c repo_b_main
ok 77 - git worktree --no-guess-remote option overrides config
expecting success of 2400.78 '"add" DWIM infer --orphan w/ empty repo, DWIM (no --branch), no --quiet (expect output), 'cd repo && git', no --branch':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
No possible source branch, inferring '--orphan'
ok 78 - "add" DWIM infer --orphan w/ empty repo, DWIM (no --branch), no --quiet (expect output), 'cd repo && git', no --branch
expecting success of 2400.79 '"add" DWIM doesnt infer --orphan w/ DWIM (no --branch), no --quiet (expect output), 'cd repo && git', no --branch, >=1 local branches, valid HEAD':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
HEAD is now at 6d95aef commit
ok 79 - "add" DWIM doesnt infer --orphan w/ DWIM (no --branch), no --quiet (expect output), 'cd repo && git', no --branch, >=1 local branches, valid HEAD
expecting success of 2400.80 '"add" DWIM infer --orphan w/ DWIM (no --branch), no --quiet (expect output), 'cd repo && git', no --branch, 0 local branches, 0 remotes, 0 fetched remote branches, --no-guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
No possible source branch, inferring '--orphan'
ok 80 - "add" DWIM infer --orphan w/ DWIM (no --branch), no --quiet (expect output), 'cd repo && git', no --branch, 0 local branches, 0 remotes, 0 fetched remote branches, --no-guess-remote
expecting success of 2400.81 '"add" DWIM infer --orphan w/ DWIM (no --branch), no --quiet (expect output), 'cd repo && git', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --no-guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
No possible source branch, inferring '--orphan'
ok 81 - "add" DWIM infer --orphan w/ DWIM (no --branch), no --quiet (expect output), 'cd repo && git', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --no-guess-remote
expecting success of 2400.82 '"add" error need fetch w/ DWIM (no --branch), no --quiet (expect output), 'cd repo && git', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
fatal: No local or remote refs exist despite at least one remote
ok 82 - "add" error need fetch w/ DWIM (no --branch), no --quiet (expect output), 'cd repo && git', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote
expecting success of 2400.83 '"add" DWIM infer --orphan w/ DWIM (no --branch), no --quiet (expect output), 'cd repo && git', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote, --force':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
No possible source branch, inferring '--orphan'
ok 83 - "add" DWIM infer --orphan w/ DWIM (no --branch), no --quiet (expect output), 'cd repo && git', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote, --force
expecting success of 2400.84 '"add" DWIM doesnt infer --orphan w/ DWIM (no --branch), no --quiet (expect output), 'cd repo && git', no --branch, 0 local branches, >=1 remotes, >=1 fetched remote branches, --guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
From ../upstream
* [new branch] foo -> upstream/foo
* [new branch] main -> upstream/main
* [new tag] commit -> commit
branch 'foo' set up to track 'upstream/foo'.
HEAD is now at 6d95aef commit
ok 84 - "add" DWIM doesnt infer --orphan w/ DWIM (no --branch), no --quiet (expect output), 'cd repo && git', no --branch, 0 local branches, >=1 remotes, >=1 fetched remote branches, --guess-remote
expecting success of 2400.85 '"add" DWIM infer --orphan w/ empty repo, no --quiet (expect output), 'cd repo && git', --branch':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
No possible source branch, inferring '--orphan'
ok 85 - "add" DWIM infer --orphan w/ empty repo, no --quiet (expect output), 'cd repo && git', --branch
expecting success of 2400.86 '"add" DWIM doesnt infer --orphan w/ no --quiet (expect output), 'cd repo && git', --branch, >=1 local branches, valid HEAD':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
HEAD is now at 6d95aef commit
ok 86 - "add" DWIM doesnt infer --orphan w/ no --quiet (expect output), 'cd repo && git', --branch, >=1 local branches, valid HEAD
expecting success of 2400.87 '"add" DWIM infer --orphan w/ no --quiet (expect output), 'cd repo && git', --branch, 0 local branches, 0 remotes, 0 fetched remote branches, --no-guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
No possible source branch, inferring '--orphan'
ok 87 - "add" DWIM infer --orphan w/ no --quiet (expect output), 'cd repo && git', --branch, 0 local branches, 0 remotes, 0 fetched remote branches, --no-guess-remote
expecting success of 2400.88 '"add" DWIM infer --orphan w/ no --quiet (expect output), 'cd repo && git', --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --no-guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
No possible source branch, inferring '--orphan'
ok 88 - "add" DWIM infer --orphan w/ no --quiet (expect output), 'cd repo && git', --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --no-guess-remote
expecting success of 2400.89 '"add" DWIM infer --orphan w/ no --quiet (expect output), 'cd repo && git', --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
No possible source branch, inferring '--orphan'
ok 89 - "add" DWIM infer --orphan w/ no --quiet (expect output), 'cd repo && git', --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote
expecting success of 2400.90 '"add" DWIM infer --orphan w/ no --quiet (expect output), 'cd repo && git', --branch, 0 local branches, >=1 remotes, >=1 fetched remote branches, --guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
From ../upstream
* [new branch] foo -> upstream/foo
* [new branch] main -> upstream/main
* [new tag] commit -> commit
No possible source branch, inferring '--orphan'
ok 90 - "add" DWIM infer --orphan w/ no --quiet (expect output), 'cd repo && git', --branch, 0 local branches, >=1 remotes, >=1 fetched remote branches, --guess-remote
expecting success of 2400.91 '"add" error, warn on bad HEAD, hint use orphan w/ DWIM (no --branch), no --quiet (expect output), 'cd repo && git', no --branch, >=1 local branches, invalid (or orphan) HEAD':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
warning: HEAD points to an invalid (or orphaned) reference.
HEAD path: '/<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/HEAD'
HEAD contents: 'ref: refs/heads/badbranch'
hint: If you meant to create a worktree containing a new orphan branch
fatal: invalid reference: HEAD
ok 91 - "add" error, warn on bad HEAD, hint use orphan w/ DWIM (no --branch), no --quiet (expect output), 'cd repo && git', no --branch, >=1 local branches, invalid (or orphan) HEAD
expecting success of 2400.92 '"add" error, warn on bad HEAD, hint use orphan w/ no --quiet (expect output), 'cd repo && git', --branch, >=1 local branches, invalid (or orphan) HEAD':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
warning: HEAD points to an invalid (or orphaned) reference.
HEAD path: '/<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/HEAD'
HEAD contents: 'ref: refs/heads/badbranch'
hint: If you meant to create a worktree containing a new orphan branch
fatal: invalid reference: HEAD
ok 92 - "add" error, warn on bad HEAD, hint use orphan w/ no --quiet (expect output), 'cd repo && git', --branch, >=1 local branches, invalid (or orphan) HEAD
expecting success of 2400.93 '"add" error, warn on bad HEAD, hint use orphan w/ no --quiet (expect output), 'cd repo && git', --detach, >=1 local branches, invalid (or orphan) HEAD':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
warning: HEAD points to an invalid (or orphaned) reference.
HEAD path: '/<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/HEAD'
HEAD contents: 'ref: refs/heads/badbranch'
hint: If you meant to create a worktree containing a new orphan branch
fatal: invalid reference: HEAD
ok 93 - "add" error, warn on bad HEAD, hint use orphan w/ no --quiet (expect output), 'cd repo && git', --detach, >=1 local branches, invalid (or orphan) HEAD
expecting success of 2400.94 '"add" DWIM infer --orphan w/ empty repo, DWIM (no --branch), no --quiet (expect output), 'cd wt && git', no --branch':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
No possible source branch, inferring '--orphan'
ok 94 - "add" DWIM infer --orphan w/ empty repo, DWIM (no --branch), no --quiet (expect output), 'cd wt && git', no --branch
expecting success of 2400.95 '"add" DWIM doesnt infer --orphan w/ DWIM (no --branch), no --quiet (expect output), 'cd wt && git', no --branch, >=1 local branches, valid HEAD':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'main')
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
HEAD is now at 6d95aef commit
ok 95 - "add" DWIM doesnt infer --orphan w/ DWIM (no --branch), no --quiet (expect output), 'cd wt && git', no --branch, >=1 local branches, valid HEAD
expecting success of 2400.96 '"add" DWIM infer --orphan w/ DWIM (no --branch), no --quiet (expect output), 'cd wt && git', no --branch, 0 local branches, 0 remotes, 0 fetched remote branches, --no-guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
No possible source branch, inferring '--orphan'
ok 96 - "add" DWIM infer --orphan w/ DWIM (no --branch), no --quiet (expect output), 'cd wt && git', no --branch, 0 local branches, 0 remotes, 0 fetched remote branches, --no-guess-remote
expecting success of 2400.97 '"add" DWIM infer --orphan w/ DWIM (no --branch), no --quiet (expect output), 'cd wt && git', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --no-guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
No possible source branch, inferring '--orphan'
ok 97 - "add" DWIM infer --orphan w/ DWIM (no --branch), no --quiet (expect output), 'cd wt && git', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --no-guess-remote
expecting success of 2400.98 '"add" error need fetch w/ DWIM (no --branch), no --quiet (expect output), 'cd wt && git', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
fatal: No local or remote refs exist despite at least one remote
ok 98 - "add" error need fetch w/ DWIM (no --branch), no --quiet (expect output), 'cd wt && git', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote
expecting success of 2400.99 '"add" DWIM infer --orphan w/ DWIM (no --branch), no --quiet (expect output), 'cd wt && git', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote, --force':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
No possible source branch, inferring '--orphan'
ok 99 - "add" DWIM infer --orphan w/ DWIM (no --branch), no --quiet (expect output), 'cd wt && git', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote, --force
expecting success of 2400.100 '"add" DWIM doesnt infer --orphan w/ DWIM (no --branch), no --quiet (expect output), 'cd wt && git', no --branch, 0 local branches, >=1 remotes, >=1 fetched remote branches, --guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
From ../upstream
* [new branch] foo -> upstream/foo
* [new branch] main -> upstream/main
* [new tag] commit -> commit
branch 'foo' set up to track 'upstream/foo'.
HEAD is now at 6d95aef commit
ok 100 - "add" DWIM doesnt infer --orphan w/ DWIM (no --branch), no --quiet (expect output), 'cd wt && git', no --branch, 0 local branches, >=1 remotes, >=1 fetched remote branches, --guess-remote
expecting success of 2400.101 '"add" DWIM infer --orphan w/ empty repo, no --quiet (expect output), 'cd wt && git', --branch':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
No possible source branch, inferring '--orphan'
ok 101 - "add" DWIM infer --orphan w/ empty repo, no --quiet (expect output), 'cd wt && git', --branch
expecting success of 2400.102 '"add" DWIM doesnt infer --orphan w/ no --quiet (expect output), 'cd wt && git', --branch, >=1 local branches, valid HEAD':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'main')
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
HEAD is now at 6d95aef commit
ok 102 - "add" DWIM doesnt infer --orphan w/ no --quiet (expect output), 'cd wt && git', --branch, >=1 local branches, valid HEAD
expecting success of 2400.103 '"add" DWIM infer --orphan w/ no --quiet (expect output), 'cd wt && git', --branch, 0 local branches, 0 remotes, 0 fetched remote branches, --no-guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
No possible source branch, inferring '--orphan'
ok 103 - "add" DWIM infer --orphan w/ no --quiet (expect output), 'cd wt && git', --branch, 0 local branches, 0 remotes, 0 fetched remote branches, --no-guess-remote
expecting success of 2400.104 '"add" DWIM infer --orphan w/ no --quiet (expect output), 'cd wt && git', --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --no-guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
No possible source branch, inferring '--orphan'
ok 104 - "add" DWIM infer --orphan w/ no --quiet (expect output), 'cd wt && git', --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --no-guess-remote
expecting success of 2400.105 '"add" DWIM infer --orphan w/ no --quiet (expect output), 'cd wt && git', --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
No possible source branch, inferring '--orphan'
ok 105 - "add" DWIM infer --orphan w/ no --quiet (expect output), 'cd wt && git', --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote
expecting success of 2400.106 '"add" DWIM infer --orphan w/ no --quiet (expect output), 'cd wt && git', --branch, 0 local branches, >=1 remotes, >=1 fetched remote branches, --guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
From ../upstream
* [new branch] foo -> upstream/foo
* [new branch] main -> upstream/main
* [new tag] commit -> commit
No possible source branch, inferring '--orphan'
ok 106 - "add" DWIM infer --orphan w/ no --quiet (expect output), 'cd wt && git', --branch, 0 local branches, >=1 remotes, >=1 fetched remote branches, --guess-remote
expecting success of 2400.107 '"add" error, warn on bad HEAD, hint use orphan w/ DWIM (no --branch), no --quiet (expect output), 'cd wt && git', no --branch, >=1 local branches, invalid (or orphan) HEAD':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'main')
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
warning: HEAD points to an invalid (or orphaned) reference.
HEAD path: '/<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/worktrees/wt/HEAD'
HEAD contents: 'ref: refs/heads/badbranch'
hint: If you meant to create a worktree containing a new orphan branch
fatal: invalid reference: HEAD
ok 107 - "add" error, warn on bad HEAD, hint use orphan w/ DWIM (no --branch), no --quiet (expect output), 'cd wt && git', no --branch, >=1 local branches, invalid (or orphan) HEAD
expecting success of 2400.108 '"add" error, warn on bad HEAD, hint use orphan w/ no --quiet (expect output), 'cd wt && git', --branch, >=1 local branches, invalid (or orphan) HEAD':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'main')
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
warning: HEAD points to an invalid (or orphaned) reference.
HEAD path: '/<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/worktrees/wt/HEAD'
HEAD contents: 'ref: refs/heads/badbranch'
hint: If you meant to create a worktree containing a new orphan branch
fatal: invalid reference: HEAD
ok 108 - "add" error, warn on bad HEAD, hint use orphan w/ no --quiet (expect output), 'cd wt && git', --branch, >=1 local branches, invalid (or orphan) HEAD
expecting success of 2400.109 '"add" error, warn on bad HEAD, hint use orphan w/ no --quiet (expect output), 'cd wt && git', --detach, >=1 local branches, invalid (or orphan) HEAD':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'main')
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
warning: HEAD points to an invalid (or orphaned) reference.
HEAD path: '/<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/worktrees/wt/HEAD'
HEAD contents: 'ref: refs/heads/badbranch'
hint: If you meant to create a worktree containing a new orphan branch
fatal: invalid reference: HEAD
ok 109 - "add" error, warn on bad HEAD, hint use orphan w/ no --quiet (expect output), 'cd wt && git', --detach, >=1 local branches, invalid (or orphan) HEAD
expecting success of 2400.110 '"add" DWIM infer --orphan w/ empty repo, DWIM (no --branch), no --quiet (expect output), 'git -C repo', no --branch':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
No possible source branch, inferring '--orphan'
ok 110 - "add" DWIM infer --orphan w/ empty repo, DWIM (no --branch), no --quiet (expect output), 'git -C repo', no --branch
expecting success of 2400.111 '"add" DWIM doesnt infer --orphan w/ DWIM (no --branch), no --quiet (expect output), 'git -C repo', no --branch, >=1 local branches, valid HEAD':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
HEAD is now at 6d95aef commit
ok 111 - "add" DWIM doesnt infer --orphan w/ DWIM (no --branch), no --quiet (expect output), 'git -C repo', no --branch, >=1 local branches, valid HEAD
expecting success of 2400.112 '"add" DWIM infer --orphan w/ DWIM (no --branch), no --quiet (expect output), 'git -C repo', no --branch, 0 local branches, 0 remotes, 0 fetched remote branches, --no-guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
No possible source branch, inferring '--orphan'
ok 112 - "add" DWIM infer --orphan w/ DWIM (no --branch), no --quiet (expect output), 'git -C repo', no --branch, 0 local branches, 0 remotes, 0 fetched remote branches, --no-guess-remote
expecting success of 2400.113 '"add" DWIM infer --orphan w/ DWIM (no --branch), no --quiet (expect output), 'git -C repo', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --no-guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
No possible source branch, inferring '--orphan'
ok 113 - "add" DWIM infer --orphan w/ DWIM (no --branch), no --quiet (expect output), 'git -C repo', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --no-guess-remote
expecting success of 2400.114 '"add" error need fetch w/ DWIM (no --branch), no --quiet (expect output), 'git -C repo', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
fatal: No local or remote refs exist despite at least one remote
ok 114 - "add" error need fetch w/ DWIM (no --branch), no --quiet (expect output), 'git -C repo', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote
expecting success of 2400.115 '"add" DWIM infer --orphan w/ DWIM (no --branch), no --quiet (expect output), 'git -C repo', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote, --force':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
No possible source branch, inferring '--orphan'
ok 115 - "add" DWIM infer --orphan w/ DWIM (no --branch), no --quiet (expect output), 'git -C repo', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote, --force
expecting success of 2400.116 '"add" DWIM doesnt infer --orphan w/ DWIM (no --branch), no --quiet (expect output), 'git -C repo', no --branch, 0 local branches, >=1 remotes, >=1 fetched remote branches, --guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
From ../upstream
* [new branch] foo -> upstream/foo
* [new branch] main -> upstream/main
* [new tag] commit -> commit
branch 'foo' set up to track 'upstream/foo'.
HEAD is now at 6d95aef commit
ok 116 - "add" DWIM doesnt infer --orphan w/ DWIM (no --branch), no --quiet (expect output), 'git -C repo', no --branch, 0 local branches, >=1 remotes, >=1 fetched remote branches, --guess-remote
expecting success of 2400.117 '"add" DWIM infer --orphan w/ empty repo, no --quiet (expect output), 'git -C repo', --branch':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
No possible source branch, inferring '--orphan'
ok 117 - "add" DWIM infer --orphan w/ empty repo, no --quiet (expect output), 'git -C repo', --branch
expecting success of 2400.118 '"add" DWIM doesnt infer --orphan w/ no --quiet (expect output), 'git -C repo', --branch, >=1 local branches, valid HEAD':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
HEAD is now at 6d95aef commit
ok 118 - "add" DWIM doesnt infer --orphan w/ no --quiet (expect output), 'git -C repo', --branch, >=1 local branches, valid HEAD
expecting success of 2400.119 '"add" DWIM infer --orphan w/ no --quiet (expect output), 'git -C repo', --branch, 0 local branches, 0 remotes, 0 fetched remote branches, --no-guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
No possible source branch, inferring '--orphan'
ok 119 - "add" DWIM infer --orphan w/ no --quiet (expect output), 'git -C repo', --branch, 0 local branches, 0 remotes, 0 fetched remote branches, --no-guess-remote
expecting success of 2400.120 '"add" DWIM infer --orphan w/ no --quiet (expect output), 'git -C repo', --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --no-guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
No possible source branch, inferring '--orphan'
ok 120 - "add" DWIM infer --orphan w/ no --quiet (expect output), 'git -C repo', --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --no-guess-remote
expecting success of 2400.121 '"add" DWIM infer --orphan w/ no --quiet (expect output), 'git -C repo', --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
No possible source branch, inferring '--orphan'
ok 121 - "add" DWIM infer --orphan w/ no --quiet (expect output), 'git -C repo', --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote
expecting success of 2400.122 '"add" DWIM infer --orphan w/ no --quiet (expect output), 'git -C repo', --branch, 0 local branches, >=1 remotes, >=1 fetched remote branches, --guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
From ../upstream
* [new branch] foo -> upstream/foo
* [new branch] main -> upstream/main
* [new tag] commit -> commit
No possible source branch, inferring '--orphan'
ok 122 - "add" DWIM infer --orphan w/ no --quiet (expect output), 'git -C repo', --branch, 0 local branches, >=1 remotes, >=1 fetched remote branches, --guess-remote
expecting success of 2400.123 '"add" error, warn on bad HEAD, hint use orphan w/ DWIM (no --branch), no --quiet (expect output), 'git -C repo', no --branch, >=1 local branches, invalid (or orphan) HEAD':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
warning: HEAD points to an invalid (or orphaned) reference.
HEAD path: '/<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/HEAD'
HEAD contents: 'ref: refs/heads/badbranch'
hint: If you meant to create a worktree containing a new orphan branch
fatal: invalid reference: HEAD
ok 123 - "add" error, warn on bad HEAD, hint use orphan w/ DWIM (no --branch), no --quiet (expect output), 'git -C repo', no --branch, >=1 local branches, invalid (or orphan) HEAD
expecting success of 2400.124 '"add" error, warn on bad HEAD, hint use orphan w/ no --quiet (expect output), 'git -C repo', --branch, >=1 local branches, invalid (or orphan) HEAD':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
warning: HEAD points to an invalid (or orphaned) reference.
HEAD path: '/<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/HEAD'
HEAD contents: 'ref: refs/heads/badbranch'
hint: If you meant to create a worktree containing a new orphan branch
fatal: invalid reference: HEAD
ok 124 - "add" error, warn on bad HEAD, hint use orphan w/ no --quiet (expect output), 'git -C repo', --branch, >=1 local branches, invalid (or orphan) HEAD
expecting success of 2400.125 '"add" error, warn on bad HEAD, hint use orphan w/ no --quiet (expect output), 'git -C repo', --detach, >=1 local branches, invalid (or orphan) HEAD':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
warning: HEAD points to an invalid (or orphaned) reference.
HEAD path: '/<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/HEAD'
HEAD contents: 'ref: refs/heads/badbranch'
hint: If you meant to create a worktree containing a new orphan branch
fatal: invalid reference: HEAD
ok 125 - "add" error, warn on bad HEAD, hint use orphan w/ no --quiet (expect output), 'git -C repo', --detach, >=1 local branches, invalid (or orphan) HEAD
expecting success of 2400.126 '"add" DWIM infer --orphan w/ empty repo, DWIM (no --branch), no --quiet (expect output), 'git -C wt', no --branch':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
No possible source branch, inferring '--orphan'
ok 126 - "add" DWIM infer --orphan w/ empty repo, DWIM (no --branch), no --quiet (expect output), 'git -C wt', no --branch
expecting success of 2400.127 '"add" DWIM doesnt infer --orphan w/ DWIM (no --branch), no --quiet (expect output), 'git -C wt', no --branch, >=1 local branches, valid HEAD':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'main')
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
HEAD is now at 6d95aef commit
ok 127 - "add" DWIM doesnt infer --orphan w/ DWIM (no --branch), no --quiet (expect output), 'git -C wt', no --branch, >=1 local branches, valid HEAD
expecting success of 2400.128 '"add" DWIM infer --orphan w/ DWIM (no --branch), no --quiet (expect output), 'git -C wt', no --branch, 0 local branches, 0 remotes, 0 fetched remote branches, --no-guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
No possible source branch, inferring '--orphan'
ok 128 - "add" DWIM infer --orphan w/ DWIM (no --branch), no --quiet (expect output), 'git -C wt', no --branch, 0 local branches, 0 remotes, 0 fetched remote branches, --no-guess-remote
expecting success of 2400.129 '"add" DWIM infer --orphan w/ DWIM (no --branch), no --quiet (expect output), 'git -C wt', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --no-guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
No possible source branch, inferring '--orphan'
ok 129 - "add" DWIM infer --orphan w/ DWIM (no --branch), no --quiet (expect output), 'git -C wt', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --no-guess-remote
expecting success of 2400.130 '"add" error need fetch w/ DWIM (no --branch), no --quiet (expect output), 'git -C wt', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
fatal: No local or remote refs exist despite at least one remote
ok 130 - "add" error need fetch w/ DWIM (no --branch), no --quiet (expect output), 'git -C wt', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote
expecting success of 2400.131 '"add" DWIM infer --orphan w/ DWIM (no --branch), no --quiet (expect output), 'git -C wt', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote, --force':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
No possible source branch, inferring '--orphan'
ok 131 - "add" DWIM infer --orphan w/ DWIM (no --branch), no --quiet (expect output), 'git -C wt', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote, --force
expecting success of 2400.132 '"add" DWIM doesnt infer --orphan w/ DWIM (no --branch), no --quiet (expect output), 'git -C wt', no --branch, 0 local branches, >=1 remotes, >=1 fetched remote branches, --guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
From ../upstream
* [new branch] foo -> upstream/foo
* [new branch] main -> upstream/main
* [new tag] commit -> commit
branch 'foo' set up to track 'upstream/foo'.
HEAD is now at 6d95aef commit
ok 132 - "add" DWIM doesnt infer --orphan w/ DWIM (no --branch), no --quiet (expect output), 'git -C wt', no --branch, 0 local branches, >=1 remotes, >=1 fetched remote branches, --guess-remote
expecting success of 2400.133 '"add" DWIM infer --orphan w/ empty repo, no --quiet (expect output), 'git -C wt', --branch':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
No possible source branch, inferring '--orphan'
ok 133 - "add" DWIM infer --orphan w/ empty repo, no --quiet (expect output), 'git -C wt', --branch
expecting success of 2400.134 '"add" DWIM doesnt infer --orphan w/ no --quiet (expect output), 'git -C wt', --branch, >=1 local branches, valid HEAD':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'main')
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
HEAD is now at 6d95aef commit
ok 134 - "add" DWIM doesnt infer --orphan w/ no --quiet (expect output), 'git -C wt', --branch, >=1 local branches, valid HEAD
expecting success of 2400.135 '"add" DWIM infer --orphan w/ no --quiet (expect output), 'git -C wt', --branch, 0 local branches, 0 remotes, 0 fetched remote branches, --no-guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
No possible source branch, inferring '--orphan'
ok 135 - "add" DWIM infer --orphan w/ no --quiet (expect output), 'git -C wt', --branch, 0 local branches, 0 remotes, 0 fetched remote branches, --no-guess-remote
expecting success of 2400.136 '"add" DWIM infer --orphan w/ no --quiet (expect output), 'git -C wt', --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --no-guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
No possible source branch, inferring '--orphan'
ok 136 - "add" DWIM infer --orphan w/ no --quiet (expect output), 'git -C wt', --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --no-guess-remote
expecting success of 2400.137 '"add" DWIM infer --orphan w/ no --quiet (expect output), 'git -C wt', --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
No possible source branch, inferring '--orphan'
ok 137 - "add" DWIM infer --orphan w/ no --quiet (expect output), 'git -C wt', --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote
expecting success of 2400.138 '"add" DWIM infer --orphan w/ no --quiet (expect output), 'git -C wt', --branch, 0 local branches, >=1 remotes, >=1 fetched remote branches, --guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
From ../upstream
* [new branch] foo -> upstream/foo
* [new branch] main -> upstream/main
* [new tag] commit -> commit
No possible source branch, inferring '--orphan'
ok 138 - "add" DWIM infer --orphan w/ no --quiet (expect output), 'git -C wt', --branch, 0 local branches, >=1 remotes, >=1 fetched remote branches, --guess-remote
expecting success of 2400.139 '"add" error, warn on bad HEAD, hint use orphan w/ DWIM (no --branch), no --quiet (expect output), 'git -C wt', no --branch, >=1 local branches, invalid (or orphan) HEAD':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'main')
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
warning: HEAD points to an invalid (or orphaned) reference.
HEAD path: '/<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/worktrees/wt/HEAD'
HEAD contents: 'ref: refs/heads/badbranch'
hint: If you meant to create a worktree containing a new orphan branch
fatal: invalid reference: HEAD
ok 139 - "add" error, warn on bad HEAD, hint use orphan w/ DWIM (no --branch), no --quiet (expect output), 'git -C wt', no --branch, >=1 local branches, invalid (or orphan) HEAD
expecting success of 2400.140 '"add" error, warn on bad HEAD, hint use orphan w/ no --quiet (expect output), 'git -C wt', --branch, >=1 local branches, invalid (or orphan) HEAD':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'main')
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
warning: HEAD points to an invalid (or orphaned) reference.
HEAD path: '/<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/worktrees/wt/HEAD'
HEAD contents: 'ref: refs/heads/badbranch'
hint: If you meant to create a worktree containing a new orphan branch
fatal: invalid reference: HEAD
ok 140 - "add" error, warn on bad HEAD, hint use orphan w/ no --quiet (expect output), 'git -C wt', --branch, >=1 local branches, invalid (or orphan) HEAD
expecting success of 2400.141 '"add" error, warn on bad HEAD, hint use orphan w/ no --quiet (expect output), 'git -C wt', --detach, >=1 local branches, invalid (or orphan) HEAD':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'main')
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
warning: HEAD points to an invalid (or orphaned) reference.
HEAD path: '/<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/worktrees/wt/HEAD'
HEAD contents: 'ref: refs/heads/badbranch'
hint: If you meant to create a worktree containing a new orphan branch
fatal: invalid reference: HEAD
ok 141 - "add" error, warn on bad HEAD, hint use orphan w/ no --quiet (expect output), 'git -C wt', --detach, >=1 local branches, invalid (or orphan) HEAD
expecting success of 2400.142 '"add" error inferred "--orphan" gives illegal opts combo w/ empty repo, DWIM (no --branch), no --quiet (expect output), no --branch, --no-checkout':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
No possible source branch, inferring '--orphan'
fatal: '--orphan' and '--no-checkout' cannot be used together
ok 142 - "add" error inferred "--orphan" gives illegal opts combo w/ empty repo, DWIM (no --branch), no --quiet (expect output), no --branch, --no-checkout
expecting success of 2400.143 '"add" error inferred "--orphan" gives illegal opts combo w/ empty repo, DWIM (no --branch), no --quiet (expect output), no --branch, --track':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
No possible source branch, inferring '--orphan'
fatal: '--orphan' and '--track' cannot be used together
ok 143 - "add" error inferred "--orphan" gives illegal opts combo w/ empty repo, DWIM (no --branch), no --quiet (expect output), no --branch, --track
expecting success of 2400.144 '"add" error inferred "--orphan" gives illegal opts combo w/ empty repo, no --quiet (expect output), --branch, --no-checkout':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
No possible source branch, inferring '--orphan'
fatal: '--orphan' and '--no-checkout' cannot be used together
ok 144 - "add" error inferred "--orphan" gives illegal opts combo w/ empty repo, no --quiet (expect output), --branch, --no-checkout
expecting success of 2400.145 '"add" error inferred "--orphan" gives illegal opts combo w/ empty repo, no --quiet (expect output), --branch, --track':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
No possible source branch, inferring '--orphan'
fatal: '--orphan' and '--track' cannot be used together
ok 145 - "add" error inferred "--orphan" gives illegal opts combo w/ empty repo, no --quiet (expect output), --branch, --track
expecting success of 2400.146 '"add" DWIM infer --orphan w/ empty repo, DWIM (no --branch), --quiet, 'cd repo && git', no --branch':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
ok 146 - "add" DWIM infer --orphan w/ empty repo, DWIM (no --branch), --quiet, 'cd repo && git', no --branch
expecting success of 2400.147 '"add" DWIM doesnt infer --orphan w/ DWIM (no --branch), --quiet, 'cd repo && git', no --branch, >=1 local branches, valid HEAD':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
ok 147 - "add" DWIM doesnt infer --orphan w/ DWIM (no --branch), --quiet, 'cd repo && git', no --branch, >=1 local branches, valid HEAD
expecting success of 2400.148 '"add" DWIM infer --orphan w/ DWIM (no --branch), --quiet, 'cd repo && git', no --branch, 0 local branches, 0 remotes, 0 fetched remote branches, --no-guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
ok 148 - "add" DWIM infer --orphan w/ DWIM (no --branch), --quiet, 'cd repo && git', no --branch, 0 local branches, 0 remotes, 0 fetched remote branches, --no-guess-remote
expecting success of 2400.149 '"add" DWIM infer --orphan w/ DWIM (no --branch), --quiet, 'cd repo && git', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --no-guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
ok 149 - "add" DWIM infer --orphan w/ DWIM (no --branch), --quiet, 'cd repo && git', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --no-guess-remote
expecting success of 2400.150 '"add" error need fetch w/ DWIM (no --branch), --quiet, 'cd repo && git', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
fatal: No local or remote refs exist despite at least one remote
ok 150 - "add" error need fetch w/ DWIM (no --branch), --quiet, 'cd repo && git', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote
expecting success of 2400.151 '"add" DWIM infer --orphan w/ DWIM (no --branch), --quiet, 'cd repo && git', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote, --force':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
ok 151 - "add" DWIM infer --orphan w/ DWIM (no --branch), --quiet, 'cd repo && git', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote, --force
expecting success of 2400.152 '"add" DWIM doesnt infer --orphan w/ DWIM (no --branch), --quiet, 'cd repo && git', no --branch, 0 local branches, >=1 remotes, >=1 fetched remote branches, --guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
From ../upstream
* [new branch] foo -> upstream/foo
* [new branch] main -> upstream/main
* [new tag] commit -> commit
ok 152 - "add" DWIM doesnt infer --orphan w/ DWIM (no --branch), --quiet, 'cd repo && git', no --branch, 0 local branches, >=1 remotes, >=1 fetched remote branches, --guess-remote
expecting success of 2400.153 '"add" DWIM infer --orphan w/ empty repo, --quiet, 'cd repo && git', --branch':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
ok 153 - "add" DWIM infer --orphan w/ empty repo, --quiet, 'cd repo && git', --branch
expecting success of 2400.154 '"add" DWIM doesnt infer --orphan w/ --quiet, 'cd repo && git', --branch, >=1 local branches, valid HEAD':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
ok 154 - "add" DWIM doesnt infer --orphan w/ --quiet, 'cd repo && git', --branch, >=1 local branches, valid HEAD
expecting success of 2400.155 '"add" DWIM infer --orphan w/ --quiet, 'cd repo && git', --branch, 0 local branches, 0 remotes, 0 fetched remote branches, --no-guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
ok 155 - "add" DWIM infer --orphan w/ --quiet, 'cd repo && git', --branch, 0 local branches, 0 remotes, 0 fetched remote branches, --no-guess-remote
expecting success of 2400.156 '"add" DWIM infer --orphan w/ --quiet, 'cd repo && git', --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --no-guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
ok 156 - "add" DWIM infer --orphan w/ --quiet, 'cd repo && git', --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --no-guess-remote
expecting success of 2400.157 '"add" DWIM infer --orphan w/ --quiet, 'cd repo && git', --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
ok 157 - "add" DWIM infer --orphan w/ --quiet, 'cd repo && git', --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote
expecting success of 2400.158 '"add" DWIM infer --orphan w/ --quiet, 'cd repo && git', --branch, 0 local branches, >=1 remotes, >=1 fetched remote branches, --guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
From ../upstream
* [new branch] foo -> upstream/foo
* [new branch] main -> upstream/main
* [new tag] commit -> commit
ok 158 - "add" DWIM infer --orphan w/ --quiet, 'cd repo && git', --branch, 0 local branches, >=1 remotes, >=1 fetched remote branches, --guess-remote
expecting success of 2400.159 '"add" error, warn on bad HEAD, hint use orphan w/ DWIM (no --branch), --quiet, 'cd repo && git', no --branch, >=1 local branches, invalid (or orphan) HEAD':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
fatal: invalid reference: HEAD
fatal: invalid reference: HEAD
ok 159 - "add" error, warn on bad HEAD, hint use orphan w/ DWIM (no --branch), --quiet, 'cd repo && git', no --branch, >=1 local branches, invalid (or orphan) HEAD
expecting success of 2400.160 '"add" error, warn on bad HEAD, hint use orphan w/ --quiet, 'cd repo && git', --branch, >=1 local branches, invalid (or orphan) HEAD':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
fatal: invalid reference: HEAD
fatal: invalid reference: HEAD
ok 160 - "add" error, warn on bad HEAD, hint use orphan w/ --quiet, 'cd repo && git', --branch, >=1 local branches, invalid (or orphan) HEAD
expecting success of 2400.161 '"add" error, warn on bad HEAD, hint use orphan w/ --quiet, 'cd repo && git', --detach, >=1 local branches, invalid (or orphan) HEAD':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
fatal: invalid reference: HEAD
fatal: invalid reference: HEAD
ok 161 - "add" error, warn on bad HEAD, hint use orphan w/ --quiet, 'cd repo && git', --detach, >=1 local branches, invalid (or orphan) HEAD
expecting success of 2400.162 '"add" DWIM infer --orphan w/ empty repo, DWIM (no --branch), --quiet, 'cd wt && git', no --branch':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
ok 162 - "add" DWIM infer --orphan w/ empty repo, DWIM (no --branch), --quiet, 'cd wt && git', no --branch
expecting success of 2400.163 '"add" DWIM doesnt infer --orphan w/ DWIM (no --branch), --quiet, 'cd wt && git', no --branch, >=1 local branches, valid HEAD':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'main')
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
ok 163 - "add" DWIM doesnt infer --orphan w/ DWIM (no --branch), --quiet, 'cd wt && git', no --branch, >=1 local branches, valid HEAD
expecting success of 2400.164 '"add" DWIM infer --orphan w/ DWIM (no --branch), --quiet, 'cd wt && git', no --branch, 0 local branches, 0 remotes, 0 fetched remote branches, --no-guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
ok 164 - "add" DWIM infer --orphan w/ DWIM (no --branch), --quiet, 'cd wt && git', no --branch, 0 local branches, 0 remotes, 0 fetched remote branches, --no-guess-remote
expecting success of 2400.165 '"add" DWIM infer --orphan w/ DWIM (no --branch), --quiet, 'cd wt && git', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --no-guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
ok 165 - "add" DWIM infer --orphan w/ DWIM (no --branch), --quiet, 'cd wt && git', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --no-guess-remote
expecting success of 2400.166 '"add" error need fetch w/ DWIM (no --branch), --quiet, 'cd wt && git', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
fatal: No local or remote refs exist despite at least one remote
ok 166 - "add" error need fetch w/ DWIM (no --branch), --quiet, 'cd wt && git', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote
expecting success of 2400.167 '"add" DWIM infer --orphan w/ DWIM (no --branch), --quiet, 'cd wt && git', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote, --force':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
ok 167 - "add" DWIM infer --orphan w/ DWIM (no --branch), --quiet, 'cd wt && git', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote, --force
expecting success of 2400.168 '"add" DWIM doesnt infer --orphan w/ DWIM (no --branch), --quiet, 'cd wt && git', no --branch, 0 local branches, >=1 remotes, >=1 fetched remote branches, --guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
From ../upstream
* [new branch] foo -> upstream/foo
* [new branch] main -> upstream/main
* [new tag] commit -> commit
ok 168 - "add" DWIM doesnt infer --orphan w/ DWIM (no --branch), --quiet, 'cd wt && git', no --branch, 0 local branches, >=1 remotes, >=1 fetched remote branches, --guess-remote
expecting success of 2400.169 '"add" DWIM infer --orphan w/ empty repo, --quiet, 'cd wt && git', --branch':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
ok 169 - "add" DWIM infer --orphan w/ empty repo, --quiet, 'cd wt && git', --branch
expecting success of 2400.170 '"add" DWIM doesnt infer --orphan w/ --quiet, 'cd wt && git', --branch, >=1 local branches, valid HEAD':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'main')
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
ok 170 - "add" DWIM doesnt infer --orphan w/ --quiet, 'cd wt && git', --branch, >=1 local branches, valid HEAD
expecting success of 2400.171 '"add" DWIM infer --orphan w/ --quiet, 'cd wt && git', --branch, 0 local branches, 0 remotes, 0 fetched remote branches, --no-guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
ok 171 - "add" DWIM infer --orphan w/ --quiet, 'cd wt && git', --branch, 0 local branches, 0 remotes, 0 fetched remote branches, --no-guess-remote
expecting success of 2400.172 '"add" DWIM infer --orphan w/ --quiet, 'cd wt && git', --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --no-guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
ok 172 - "add" DWIM infer --orphan w/ --quiet, 'cd wt && git', --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --no-guess-remote
expecting success of 2400.173 '"add" DWIM infer --orphan w/ --quiet, 'cd wt && git', --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
ok 173 - "add" DWIM infer --orphan w/ --quiet, 'cd wt && git', --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote
expecting success of 2400.174 '"add" DWIM infer --orphan w/ --quiet, 'cd wt && git', --branch, 0 local branches, >=1 remotes, >=1 fetched remote branches, --guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
From ../upstream
* [new branch] foo -> upstream/foo
* [new branch] main -> upstream/main
* [new tag] commit -> commit
ok 174 - "add" DWIM infer --orphan w/ --quiet, 'cd wt && git', --branch, 0 local branches, >=1 remotes, >=1 fetched remote branches, --guess-remote
expecting success of 2400.175 '"add" error, warn on bad HEAD, hint use orphan w/ DWIM (no --branch), --quiet, 'cd wt && git', no --branch, >=1 local branches, invalid (or orphan) HEAD':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'main')
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
fatal: invalid reference: HEAD
fatal: invalid reference: HEAD
ok 175 - "add" error, warn on bad HEAD, hint use orphan w/ DWIM (no --branch), --quiet, 'cd wt && git', no --branch, >=1 local branches, invalid (or orphan) HEAD
expecting success of 2400.176 '"add" error, warn on bad HEAD, hint use orphan w/ --quiet, 'cd wt && git', --branch, >=1 local branches, invalid (or orphan) HEAD':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'main')
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
fatal: invalid reference: HEAD
fatal: invalid reference: HEAD
ok 176 - "add" error, warn on bad HEAD, hint use orphan w/ --quiet, 'cd wt && git', --branch, >=1 local branches, invalid (or orphan) HEAD
expecting success of 2400.177 '"add" error, warn on bad HEAD, hint use orphan w/ --quiet, 'cd wt && git', --detach, >=1 local branches, invalid (or orphan) HEAD':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'main')
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
fatal: invalid reference: HEAD
fatal: invalid reference: HEAD
ok 177 - "add" error, warn on bad HEAD, hint use orphan w/ --quiet, 'cd wt && git', --detach, >=1 local branches, invalid (or orphan) HEAD
expecting success of 2400.178 '"add" DWIM infer --orphan w/ empty repo, DWIM (no --branch), --quiet, 'git -C repo', no --branch':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
ok 178 - "add" DWIM infer --orphan w/ empty repo, DWIM (no --branch), --quiet, 'git -C repo', no --branch
expecting success of 2400.179 '"add" DWIM doesnt infer --orphan w/ DWIM (no --branch), --quiet, 'git -C repo', no --branch, >=1 local branches, valid HEAD':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
ok 179 - "add" DWIM doesnt infer --orphan w/ DWIM (no --branch), --quiet, 'git -C repo', no --branch, >=1 local branches, valid HEAD
expecting success of 2400.180 '"add" DWIM infer --orphan w/ DWIM (no --branch), --quiet, 'git -C repo', no --branch, 0 local branches, 0 remotes, 0 fetched remote branches, --no-guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
ok 180 - "add" DWIM infer --orphan w/ DWIM (no --branch), --quiet, 'git -C repo', no --branch, 0 local branches, 0 remotes, 0 fetched remote branches, --no-guess-remote
expecting success of 2400.181 '"add" DWIM infer --orphan w/ DWIM (no --branch), --quiet, 'git -C repo', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --no-guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
ok 181 - "add" DWIM infer --orphan w/ DWIM (no --branch), --quiet, 'git -C repo', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --no-guess-remote
expecting success of 2400.182 '"add" error need fetch w/ DWIM (no --branch), --quiet, 'git -C repo', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
fatal: No local or remote refs exist despite at least one remote
ok 182 - "add" error need fetch w/ DWIM (no --branch), --quiet, 'git -C repo', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote
expecting success of 2400.183 '"add" DWIM infer --orphan w/ DWIM (no --branch), --quiet, 'git -C repo', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote, --force':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
ok 183 - "add" DWIM infer --orphan w/ DWIM (no --branch), --quiet, 'git -C repo', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote, --force
expecting success of 2400.184 '"add" DWIM doesnt infer --orphan w/ DWIM (no --branch), --quiet, 'git -C repo', no --branch, 0 local branches, >=1 remotes, >=1 fetched remote branches, --guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
From ../upstream
* [new branch] foo -> upstream/foo
* [new branch] main -> upstream/main
* [new tag] commit -> commit
ok 184 - "add" DWIM doesnt infer --orphan w/ DWIM (no --branch), --quiet, 'git -C repo', no --branch, 0 local branches, >=1 remotes, >=1 fetched remote branches, --guess-remote
expecting success of 2400.185 '"add" DWIM infer --orphan w/ empty repo, --quiet, 'git -C repo', --branch':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
ok 185 - "add" DWIM infer --orphan w/ empty repo, --quiet, 'git -C repo', --branch
expecting success of 2400.186 '"add" DWIM doesnt infer --orphan w/ --quiet, 'git -C repo', --branch, >=1 local branches, valid HEAD':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
ok 186 - "add" DWIM doesnt infer --orphan w/ --quiet, 'git -C repo', --branch, >=1 local branches, valid HEAD
expecting success of 2400.187 '"add" DWIM infer --orphan w/ --quiet, 'git -C repo', --branch, 0 local branches, 0 remotes, 0 fetched remote branches, --no-guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
ok 187 - "add" DWIM infer --orphan w/ --quiet, 'git -C repo', --branch, 0 local branches, 0 remotes, 0 fetched remote branches, --no-guess-remote
expecting success of 2400.188 '"add" DWIM infer --orphan w/ --quiet, 'git -C repo', --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --no-guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
ok 188 - "add" DWIM infer --orphan w/ --quiet, 'git -C repo', --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --no-guess-remote
expecting success of 2400.189 '"add" DWIM infer --orphan w/ --quiet, 'git -C repo', --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
ok 189 - "add" DWIM infer --orphan w/ --quiet, 'git -C repo', --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote
expecting success of 2400.190 '"add" DWIM infer --orphan w/ --quiet, 'git -C repo', --branch, 0 local branches, >=1 remotes, >=1 fetched remote branches, --guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
From ../upstream
* [new branch] foo -> upstream/foo
* [new branch] main -> upstream/main
* [new tag] commit -> commit
ok 190 - "add" DWIM infer --orphan w/ --quiet, 'git -C repo', --branch, 0 local branches, >=1 remotes, >=1 fetched remote branches, --guess-remote
expecting success of 2400.191 '"add" error, warn on bad HEAD, hint use orphan w/ DWIM (no --branch), --quiet, 'git -C repo', no --branch, >=1 local branches, invalid (or orphan) HEAD':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
fatal: invalid reference: HEAD
fatal: invalid reference: HEAD
ok 191 - "add" error, warn on bad HEAD, hint use orphan w/ DWIM (no --branch), --quiet, 'git -C repo', no --branch, >=1 local branches, invalid (or orphan) HEAD
expecting success of 2400.192 '"add" error, warn on bad HEAD, hint use orphan w/ --quiet, 'git -C repo', --branch, >=1 local branches, invalid (or orphan) HEAD':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
fatal: invalid reference: HEAD
fatal: invalid reference: HEAD
ok 192 - "add" error, warn on bad HEAD, hint use orphan w/ --quiet, 'git -C repo', --branch, >=1 local branches, invalid (or orphan) HEAD
expecting success of 2400.193 '"add" error, warn on bad HEAD, hint use orphan w/ --quiet, 'git -C repo', --detach, >=1 local branches, invalid (or orphan) HEAD':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
fatal: invalid reference: HEAD
fatal: invalid reference: HEAD
ok 193 - "add" error, warn on bad HEAD, hint use orphan w/ --quiet, 'git -C repo', --detach, >=1 local branches, invalid (or orphan) HEAD
expecting success of 2400.194 '"add" DWIM infer --orphan w/ empty repo, DWIM (no --branch), --quiet, 'git -C wt', no --branch':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
ok 194 - "add" DWIM infer --orphan w/ empty repo, DWIM (no --branch), --quiet, 'git -C wt', no --branch
expecting success of 2400.195 '"add" DWIM doesnt infer --orphan w/ DWIM (no --branch), --quiet, 'git -C wt', no --branch, >=1 local branches, valid HEAD':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'main')
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
ok 195 - "add" DWIM doesnt infer --orphan w/ DWIM (no --branch), --quiet, 'git -C wt', no --branch, >=1 local branches, valid HEAD
expecting success of 2400.196 '"add" DWIM infer --orphan w/ DWIM (no --branch), --quiet, 'git -C wt', no --branch, 0 local branches, 0 remotes, 0 fetched remote branches, --no-guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
ok 196 - "add" DWIM infer --orphan w/ DWIM (no --branch), --quiet, 'git -C wt', no --branch, 0 local branches, 0 remotes, 0 fetched remote branches, --no-guess-remote
expecting success of 2400.197 '"add" DWIM infer --orphan w/ DWIM (no --branch), --quiet, 'git -C wt', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --no-guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
ok 197 - "add" DWIM infer --orphan w/ DWIM (no --branch), --quiet, 'git -C wt', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --no-guess-remote
expecting success of 2400.198 '"add" error need fetch w/ DWIM (no --branch), --quiet, 'git -C wt', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
fatal: No local or remote refs exist despite at least one remote
ok 198 - "add" error need fetch w/ DWIM (no --branch), --quiet, 'git -C wt', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote
expecting success of 2400.199 '"add" DWIM infer --orphan w/ DWIM (no --branch), --quiet, 'git -C wt', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote, --force':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
ok 199 - "add" DWIM infer --orphan w/ DWIM (no --branch), --quiet, 'git -C wt', no --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote, --force
expecting success of 2400.200 '"add" DWIM doesnt infer --orphan w/ DWIM (no --branch), --quiet, 'git -C wt', no --branch, 0 local branches, >=1 remotes, >=1 fetched remote branches, --guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
From ../upstream
* [new branch] foo -> upstream/foo
* [new branch] main -> upstream/main
* [new tag] commit -> commit
ok 200 - "add" DWIM doesnt infer --orphan w/ DWIM (no --branch), --quiet, 'git -C wt', no --branch, 0 local branches, >=1 remotes, >=1 fetched remote branches, --guess-remote
expecting success of 2400.201 '"add" DWIM infer --orphan w/ empty repo, --quiet, 'git -C wt', --branch':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
ok 201 - "add" DWIM infer --orphan w/ empty repo, --quiet, 'git -C wt', --branch
expecting success of 2400.202 '"add" DWIM doesnt infer --orphan w/ --quiet, 'git -C wt', --branch, >=1 local branches, valid HEAD':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'main')
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
ok 202 - "add" DWIM doesnt infer --orphan w/ --quiet, 'git -C wt', --branch, >=1 local branches, valid HEAD
expecting success of 2400.203 '"add" DWIM infer --orphan w/ --quiet, 'git -C wt', --branch, 0 local branches, 0 remotes, 0 fetched remote branches, --no-guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
ok 203 - "add" DWIM infer --orphan w/ --quiet, 'git -C wt', --branch, 0 local branches, 0 remotes, 0 fetched remote branches, --no-guess-remote
expecting success of 2400.204 '"add" DWIM infer --orphan w/ --quiet, 'git -C wt', --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --no-guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
ok 204 - "add" DWIM infer --orphan w/ --quiet, 'git -C wt', --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --no-guess-remote
expecting success of 2400.205 '"add" DWIM infer --orphan w/ --quiet, 'git -C wt', --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
ok 205 - "add" DWIM infer --orphan w/ --quiet, 'git -C wt', --branch, 0 local branches, >=1 remotes, 0 fetched remote branches, --guess-remote
expecting success of 2400.206 '"add" DWIM infer --orphan w/ --quiet, 'git -C wt', --branch, 0 local branches, >=1 remotes, >=1 fetched remote branches, --guess-remote':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'orphanbranch')
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/upstream/.git/
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
Switched to a new branch 'foo'
From ../upstream
* [new branch] foo -> upstream/foo
* [new branch] main -> upstream/main
* [new tag] commit -> commit
ok 206 - "add" DWIM infer --orphan w/ --quiet, 'git -C wt', --branch, 0 local branches, >=1 remotes, >=1 fetched remote branches, --guess-remote
expecting success of 2400.207 '"add" error, warn on bad HEAD, hint use orphan w/ DWIM (no --branch), --quiet, 'git -C wt', no --branch, >=1 local branches, invalid (or orphan) HEAD':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'main')
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
fatal: invalid reference: HEAD
fatal: invalid reference: HEAD
ok 207 - "add" error, warn on bad HEAD, hint use orphan w/ DWIM (no --branch), --quiet, 'git -C wt', no --branch, >=1 local branches, invalid (or orphan) HEAD
expecting success of 2400.208 '"add" error, warn on bad HEAD, hint use orphan w/ --quiet, 'git -C wt', --branch, >=1 local branches, invalid (or orphan) HEAD':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'main')
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
fatal: invalid reference: HEAD
fatal: invalid reference: HEAD
ok 208 - "add" error, warn on bad HEAD, hint use orphan w/ --quiet, 'git -C wt', --branch, >=1 local branches, invalid (or orphan) HEAD
expecting success of 2400.209 '"add" error, warn on bad HEAD, hint use orphan w/ --quiet, 'git -C wt', --detach, >=1 local branches, invalid (or orphan) HEAD':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
Preparing worktree (new branch 'main')
[main (root-commit) 6d95aef] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 commit.t
fatal: invalid reference: HEAD
fatal: invalid reference: HEAD
ok 209 - "add" error, warn on bad HEAD, hint use orphan w/ --quiet, 'git -C wt', --detach, >=1 local branches, invalid (or orphan) HEAD
expecting success of 2400.210 '"add" error inferred "--orphan" gives illegal opts combo w/ empty repo, DWIM (no --branch), --quiet, no --branch, --no-checkout':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
fatal: '--orphan' and '--no-checkout' cannot be used together
ok 210 - "add" error inferred "--orphan" gives illegal opts combo w/ empty repo, DWIM (no --branch), --quiet, no --branch, --no-checkout
expecting success of 2400.211 '"add" error inferred "--orphan" gives illegal opts combo w/ empty repo, DWIM (no --branch), --quiet, no --branch, --track':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
fatal: '--orphan' and '--track' cannot be used together
ok 211 - "add" error inferred "--orphan" gives illegal opts combo w/ empty repo, DWIM (no --branch), --quiet, no --branch, --track
expecting success of 2400.212 '"add" error inferred "--orphan" gives illegal opts combo w/ empty repo, --quiet, --branch, --no-checkout':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
fatal: '--orphan' and '--no-checkout' cannot be used together
ok 212 - "add" error inferred "--orphan" gives illegal opts combo w/ empty repo, --quiet, --branch, --no-checkout
expecting success of 2400.213 '"add" error inferred "--orphan" gives illegal opts combo w/ empty repo, --quiet, --branch, --track':
test_when_finished "rm -rf repo" &&
git init repo &&
if [ $local_ref -eq 1 ] && [ "$git_ns" = "repo" ]
then
(cd repo && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C repo symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 1 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b main ../wt &&
(cd wt && test_commit commit) &&
if [ $bad_head -eq 1 ]
then
git -C wt symbolic-ref HEAD refs/heads/badbranch
fi
elif [ $local_ref -eq 0 ] && [ "$git_ns" = "wt" ]
then
test_when_finished "git -C repo worktree remove -f ../wt" &&
git -C repo worktree add --orphan -b orphanbranch ../wt
fi &&
if [ $remote -eq 1 ]
then
test_when_finished "rm -rf upstream" &&
git init upstream &&
(cd upstream && test_commit commit) &&
git -C upstream switch -c foo &&
git -C repo remote add upstream ../upstream
fi &&
if [ $remote_ref -eq 1 ]
then
git -C repo fetch
fi &&
if [ $success -eq 1 ]
then
test_when_finished git -C repo worktree remove ../foo
fi &&
(
if [ $use_cd -eq 1 ]
then
cd $git_ns
fi &&
if [ "$outcome" = "infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
grep "$info_text" actual
fi
elif [ "$outcome" = "no_infer" ]
then
git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
test_must_be_empty actual
else
! grep "$info_text" actual
fi
elif [ "$outcome" = "fetch_error" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
grep "$fetch_error_text" actual
elif [ "$outcome" = "fatal_orphan_bad_combo" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
! grep "$info_text" actual
else
grep "$info_text" actual
fi &&
grep "$bad_combo_regex" actual
elif [ "$outcome" = "warn_bad_head" ]
then
test_must_fail git $dashc_args worktree add $args 2>actual &&
if [ $use_quiet -eq 1 ]
then
grep "$invalid_ref_regex" actual &&
! grep "$orphan_hint" actual
else
headpath=$(git $dashc_args rev-parse --path-format=absolute --git-path HEAD) &&
headcontents=$(cat "$headpath") &&
grep "HEAD points to an invalid (or orphaned) reference" actual &&
grep "HEAD path: .$headpath." actual &&
grep "HEAD contents: .$headcontents." actual &&
grep "$orphan_hint" actual &&
! grep "$info_text" actual
fi &&
grep "$invalid_ref_regex" actual
else
# Unreachable
false
fi
) &&
if [ $success -ne 1 ]
then
test_path_is_missing foo
fi
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/repo/.git/
fatal: '--orphan' and '--track' cannot be used together
ok 213 - "add" error inferred "--orphan" gives illegal opts combo w/ empty repo, --quiet, --branch, --track
expecting success of 2400.214 '"add" invokes post-checkout hook (branch)':
post_checkout_hook &&
{
echo $ZERO_OID $(git rev-parse HEAD) 1 &&
echo $(pwd)/.git/worktrees/gumby &&
echo $(pwd)/gumby
} >hook.expect &&
git worktree add gumby &&
test_cmp hook.expect gumby/hook.actual
Preparing worktree (new branch 'gumby')
HEAD is now at 179a9e0 c
ok 214 - "add" invokes post-checkout hook (branch)
expecting success of 2400.215 '"add" invokes post-checkout hook (detached)':
post_checkout_hook &&
{
echo $ZERO_OID $(git rev-parse HEAD) 1 &&
echo $(pwd)/.git/worktrees/grumpy &&
echo $(pwd)/grumpy
} >hook.expect &&
git worktree add --detach grumpy &&
test_cmp hook.expect grumpy/hook.actual
Preparing worktree (detached HEAD 179a9e0)
HEAD is now at 179a9e0 c
ok 215 - "add" invokes post-checkout hook (detached)
expecting success of 2400.216 '"add --no-checkout" suppresses post-checkout hook':
post_checkout_hook &&
rm -f hook.actual &&
git worktree add --no-checkout gloopy &&
test_path_is_missing gloopy/hook.actual
Preparing worktree (new branch 'gloopy')
ok 216 - "add --no-checkout" suppresses post-checkout hook
expecting success of 2400.217 '"add" in other worktree invokes post-checkout hook':
post_checkout_hook &&
{
echo $ZERO_OID $(git rev-parse HEAD) 1 &&
echo $(pwd)/.git/worktrees/guppy &&
echo $(pwd)/guppy
} >hook.expect &&
git -C gloopy worktree add --detach ../guppy &&
test_cmp hook.expect guppy/hook.actual
Preparing worktree (detached HEAD 179a9e0)
HEAD is now at 179a9e0 c
ok 217 - "add" in other worktree invokes post-checkout hook
expecting success of 2400.218 '"add" in bare repo invokes post-checkout hook':
rm -rf bare &&
git clone --bare . bare &&
{
echo $ZERO_OID $(git --git-dir=bare rev-parse HEAD) 1 &&
echo $(pwd)/bare/worktrees/goozy &&
echo $(pwd)/goozy
} >hook.expect &&
post_checkout_hook bare &&
git -C bare worktree add --detach ../goozy &&
test_cmp hook.expect goozy/hook.actual
Cloning into bare repository 'bare'...
done.
Preparing worktree (detached HEAD 179a9e0)
HEAD is now at 179a9e0 c
ok 218 - "add" in bare repo invokes post-checkout hook
expecting success of 2400.219 '"add" an existing but missing worktree':
git worktree add --detach pneu &&
test_must_fail git worktree add --detach pneu &&
rm -fr pneu &&
test_must_fail git worktree add --detach pneu &&
git worktree add --force --detach pneu
Preparing worktree (detached HEAD 179a9e0)
HEAD is now at 179a9e0 c
Preparing worktree (detached HEAD 179a9e0)
fatal: 'pneu' already exists
Preparing worktree (detached HEAD 179a9e0)
fatal: 'pneu' is a missing but already registered worktree;
use 'add -f' to override, or 'prune' or 'remove' to clear
Preparing worktree (detached HEAD 179a9e0)
HEAD is now at 179a9e0 c
ok 219 - "add" an existing but missing worktree
expecting success of 2400.220 '"add" an existing locked but missing worktree':
git worktree add --detach gnoo &&
git worktree lock gnoo &&
test_when_finished "git worktree unlock gnoo || :" &&
rm -fr gnoo &&
test_must_fail git worktree add --detach gnoo &&
test_must_fail git worktree add --force --detach gnoo &&
git worktree add --force --force --detach gnoo
Preparing worktree (detached HEAD 179a9e0)
HEAD is now at 179a9e0 c
Preparing worktree (detached HEAD 179a9e0)
fatal: 'gnoo' is a missing but locked worktree;
use 'add -f -f' to override, or 'unlock' and 'prune' or 'remove' to clear
Preparing worktree (detached HEAD 179a9e0)
fatal: 'gnoo' is a missing but locked worktree;
use 'add -f -f' to override, or 'unlock' and 'prune' or 'remove' to clear
Preparing worktree (detached HEAD 179a9e0)
HEAD is now at 179a9e0 c
fatal: 'gnoo' is not locked
ok 220 - "add" an existing locked but missing worktree
expecting success of 2400.221 '"add" not tripped up by magic worktree matching"':
# if worktree "sub1/bar" exists, "git worktree add bar" in distinct
# directory `sub2` should not mistakenly complain that `bar` is an
# already-registered worktree
mkdir sub1 sub2 &&
git -C sub1 --git-dir=../.git worktree add --detach bozo &&
git -C sub2 --git-dir=../.git worktree add --detach bozo
Preparing worktree (detached HEAD 179a9e0)
HEAD is now at 179a9e0 c
Preparing worktree (detached HEAD 179a9e0)
HEAD is now at 179a9e0 c
ok 221 - "add" not tripped up by magic worktree matching"
checking prerequisite: FUNNYNAMES
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-FUNNYNAMES" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-FUNNYNAMES" &&
test_have_prereq !MINGW &&
touch -- \
"FUNNYNAMES tab embedded" \
"FUNNYNAMES \"quote embedded\"" \
"FUNNYNAMES newline
embedded" 2>/dev/null &&
rm -- \
"FUNNYNAMES tab embedded" \
"FUNNYNAMES \"quote embedded\"" \
"FUNNYNAMES newline
embedded" 2>/dev/null
)
prerequisite FUNNYNAMES ok
expecting success of 2400.222 'sanitize generated worktree name':
git worktree add --detach ". weird*..?.lock.lock" &&
test -d .git/worktrees/---weird-.-
Preparing worktree (detached HEAD 179a9e0)
HEAD is now at 179a9e0 c
ok 222 - sanitize generated worktree name
expecting success of 2400.223 '"add" should not fail because of another bad worktree':
git init add-fail &&
(
cd add-fail &&
test_commit first &&
mkdir sub &&
git worktree add sub/to-be-deleted &&
rm -rf sub &&
git worktree add second
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/add-fail/.git/
[main (root-commit) 264aca7] first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 first.t
Preparing worktree (new branch 'to-be-deleted')
HEAD is now at 264aca7 first
Preparing worktree (new branch 'second')
HEAD is now at 264aca7 first
ok 223 - "add" should not fail because of another bad worktree
expecting success of 2400.224 '"add" with uninitialized submodule, with submodule.recurse unset':
test_config_global protocol.file.allow always &&
test_create_repo submodule &&
test_commit -C submodule first &&
test_create_repo project &&
git -C project submodule add ../submodule &&
git -C project add submodule &&
test_tick &&
git -C project commit -m add_sub &&
git clone project project-clone &&
git -C project-clone worktree add ../project-2
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/submodule/.git/
[main (root-commit) 264aca7] first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 first.t
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/project/.git/
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/project/submodule'...
done.
[main (root-commit) 57eb801] add_sub
Author: A U Thor <author@example.com>
2 files changed, 4 insertions(+)
create mode 100644 .gitmodules
create mode 160000 submodule
Cloning into 'project-clone'...
done.
Preparing worktree (new branch 'project-2')
HEAD is now at 57eb801 add_sub
ok 224 - "add" with uninitialized submodule, with submodule.recurse unset
expecting success of 2400.225 '"add" with uninitialized submodule, with submodule.recurse set':
git -C project-clone -c submodule.recurse worktree add ../project-3
Preparing worktree (new branch 'project-3')
HEAD is now at 57eb801 add_sub
ok 225 - "add" with uninitialized submodule, with submodule.recurse set
expecting success of 2400.226 '"add" with initialized submodule, with submodule.recurse unset':
test_config_global protocol.file.allow always &&
git -C project-clone submodule update --init &&
git -C project-clone worktree add ../project-4
Submodule 'submodule' (/<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/submodule) registered for path 'submodule'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t2400-worktree-add/project-clone/submodule'...
done.
Submodule path 'submodule': checked out '264aca7c7b40ec0269cc15ea29c2bdbebfea2e3a'
Preparing worktree (new branch 'project-4')
HEAD is now at 57eb801 add_sub
ok 226 - "add" with initialized submodule, with submodule.recurse unset
expecting success of 2400.227 '"add" with initialized submodule, with submodule.recurse set':
git -C project-clone -c submodule.recurse worktree add ../project-5
Preparing worktree (new branch 'project-5')
HEAD is now at 57eb801 add_sub
ok 227 - "add" with initialized submodule, with submodule.recurse set
# passed all 227 test(s)
1..227
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3211-peel-ref.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3211-peel-ref/.git/
expecting success of 3211.1 'create annotated tag in refs/tags':
test_commit base &&
git tag -m annotated foo
[main (root-commit) d1ff1c9] base
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 base.t
ok 1 - create annotated tag in refs/tags
expecting success of 3211.2 'create annotated tag outside of refs/tags':
git update-ref refs/outside/foo refs/tags/foo
ok 2 - create annotated tag outside of refs/tags
expecting success of 3211.3 'set up expected show-ref output':
{
print_ref "refs/heads/main" &&
print_ref "refs/outside/foo" &&
print_ref "refs/outside/foo^{}" &&
print_ref "refs/tags/base" &&
print_ref "refs/tags/foo" &&
print_ref "refs/tags/foo^{}"
} >expect
ok 3 - set up expected show-ref output
expecting success of 3211.4 'refs are peeled outside of refs/tags (loose)':
git show-ref -d >actual &&
test_cmp expect actual
ok 4 - refs are peeled outside of refs/tags (loose)
expecting success of 3211.5 'refs are peeled outside of refs/tags (packed)':
git pack-refs --all &&
git show-ref -d >actual &&
test_cmp expect actual
ok 5 - refs are peeled outside of refs/tags (packed)
expecting success of 3211.6 'create old-style pack-refs without fully-peeled':
# Git no longer writes without fully-peeled, so we just write our own
# from scratch; we could also munge the existing file to remove the
# fully-peeled bits, but that seems even more prone to failure,
# especially if the format ever changes again. At least this way we
# know we are emulating exactly what an older git would have written.
{
echo "# pack-refs with: peeled " &&
print_ref "refs/heads/main" &&
print_ref "refs/outside/foo" &&
print_ref "refs/tags/base" &&
print_ref "refs/tags/foo" &&
echo "^$(git rev-parse "refs/tags/foo^{}")"
} >tmp &&
mv tmp .git/packed-refs
ok 6 - create old-style pack-refs without fully-peeled
expecting success of 3211.7 'refs are peeled outside of refs/tags (old packed)':
git show-ref -d >actual &&
test_cmp expect actual
ok 7 - refs are peeled outside of refs/tags (old packed)
expecting success of 3211.8 'peeled refs survive deletion of packed ref':
git pack-refs --all &&
cp .git/packed-refs fully-peeled &&
git branch yadda &&
git pack-refs --all &&
git branch -d yadda &&
test_cmp fully-peeled .git/packed-refs
Deleted branch yadda (was d1ff1c9).
ok 8 - peeled refs survive deletion of packed ref
# passed all 8 test(s)
1..8
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3300-funny-names.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3300-funny-names/.git/
expecting success of 3300.1 'setup':
cat >"$p0" <<-\EOF &&
1. A quick brown fox jumps over the lazy cat, oops dog.
2. A quick brown fox jumps over the lazy cat, oops dog.
3. A quick brown fox jumps over the lazy cat, oops dog.
EOF
{ cat "$p0" >"$p1" || :; } &&
{ echo "Foo Bar Baz" >"$p2" || :; }
ok 1 - setup
expecting success of 3300.2 'setup: populate index and tree':
git update-index --add "$p0" "$p2" &&
t0=$(git write-tree)
ok 2 - setup: populate index and tree
expecting success of 3300.3 'ls-files prints space in filename verbatim':
printf "%s\n" "just space" no-funny >expected &&
git ls-files >current &&
test_cmp expected current
ok 3 - ls-files prints space in filename verbatim
expecting success of 3300.4 'setup: add funny filename':
git update-index --add "$p1" &&
t1=$(git write-tree)
ok 4 - setup: add funny filename
expecting success of 3300.5 'ls-files quotes funny filename':
cat >expected <<-\EOF &&
just space
no-funny
"tabs\t,\" (dq) and spaces"
EOF
git ls-files >current &&
test_cmp expected current
ok 5 - ls-files quotes funny filename
expecting success of 3300.6 'ls-files -z does not quote funny filename':
cat >expected <<-\EOF &&
just space
no-funny
tabs ," (dq) and spaces
EOF
git ls-files -z >ls-files.z &&
perl -pe "y/\000/\012/" <ls-files.z >current &&
test_cmp expected current
ok 6 - ls-files -z does not quote funny filename
expecting success of 3300.7 'ls-tree quotes funny filename':
cat >expected <<-\EOF &&
just space
no-funny
"tabs\t,\" (dq) and spaces"
EOF
git ls-tree -r $t1 >ls-tree &&
sed -e "s/^[^ ]* //" <ls-tree >current &&
test_cmp expected current
ok 7 - ls-tree quotes funny filename
expecting success of 3300.8 'diff-index --name-status quotes funny filename':
cat >expected <<-\EOF &&
A "tabs\t,\" (dq) and spaces"
EOF
git diff-index --name-status $t0 >current &&
test_cmp expected current
ok 8 - diff-index --name-status quotes funny filename
expecting success of 3300.9 'diff-tree --name-status quotes funny filename':
cat >expected <<-\EOF &&
A "tabs\t,\" (dq) and spaces"
EOF
git diff-tree --name-status $t0 $t1 >current &&
test_cmp expected current
ok 9 - diff-tree --name-status quotes funny filename
expecting success of 3300.10 'diff-index -z does not quote funny filename':
cat >expected <<-\EOF &&
A
tabs ," (dq) and spaces
EOF
git diff-index -z --name-status $t0 >diff-index.z &&
perl -pe "y/\000/\012/" <diff-index.z >current &&
test_cmp expected current
ok 10 - diff-index -z does not quote funny filename
expecting success of 3300.11 'diff-tree -z does not quote funny filename':
cat >expected <<-\EOF &&
A
tabs ," (dq) and spaces
EOF
git diff-tree -z --name-status $t0 $t1 >diff-tree.z &&
perl -pe y/\\000/\\012/ <diff-tree.z >current &&
test_cmp expected current
ok 11 - diff-tree -z does not quote funny filename
expecting success of 3300.12 'diff-tree --find-copies-harder quotes funny filename':
cat >expected <<-\EOF &&
CNUM no-funny "tabs\t,\" (dq) and spaces"
EOF
git diff-tree -C --find-copies-harder --name-status $t0 $t1 >out &&
sed -e "s/^C[0-9]*/CNUM/" <out >current &&
test_cmp expected current
ok 12 - diff-tree --find-copies-harder quotes funny filename
expecting success of 3300.13 'setup: remove unfunny index entry':
git update-index --force-remove "$p0"
ok 13 - setup: remove unfunny index entry
expecting success of 3300.14 'diff-tree -M quotes funny filename':
cat >expected <<-\EOF &&
RNUM no-funny "tabs\t,\" (dq) and spaces"
EOF
git diff-index -M --name-status $t0 >out &&
sed -e "s/^R[0-9]*/RNUM/" <out >current &&
test_cmp expected current
ok 14 - diff-tree -M quotes funny filename
expecting success of 3300.15 'diff-index -M -p quotes funny filename':
cat >expected <<-\EOF &&
diff --git a/no-funny "b/tabs\t,\" (dq) and spaces"
similarity index NUM%
rename from no-funny
rename to "tabs\t,\" (dq) and spaces"
EOF
git diff-index -M -p $t0 >diff &&
sed -e "s/index [0-9]*%/index NUM%/" <diff >current &&
test_cmp expected current
ok 15 - diff-index -M -p quotes funny filename
expecting success of 3300.16 'setup: mode change':
chmod +x "$p1"
ok 16 - setup: mode change
expecting success of 3300.17 'diff-index -M -p with mode change quotes funny filename':
cat >expected <<-\EOF &&
diff --git a/no-funny "b/tabs\t,\" (dq) and spaces"
old mode 100644
new mode 100755
similarity index NUM%
rename from no-funny
rename to "tabs\t,\" (dq) and spaces"
EOF
git diff-index -M -p $t0 >diff &&
sed -e "s/index [0-9]*%/index NUM%/" <diff >current &&
test_cmp expected current
ok 17 - diff-index -M -p with mode change quotes funny filename
expecting success of 3300.18 'diffstat for rename quotes funny filename':
cat >expected <<-\EOF &&
"tabs\t,\" (dq) and spaces"
1 file changed, 0 insertions(+), 0 deletions(-)
EOF
git diff-index -M -p $t0 >diff &&
git apply --stat <diff >diffstat &&
sed -e "s/|.*//" -e "s/ *\$//" <diffstat >current &&
test_cmp expected current
ok 18 - diffstat for rename quotes funny filename
expecting success of 3300.19 'numstat for rename quotes funny filename':
cat >expected <<-\EOF &&
0 0 "tabs\t,\" (dq) and spaces"
EOF
git diff-index -M -p $t0 >diff &&
git apply --numstat <diff >current &&
test_cmp expected current
ok 19 - numstat for rename quotes funny filename
expecting success of 3300.20 'numstat without -M quotes funny filename':
cat >expected <<-\EOF &&
0 3 no-funny
3 0 "tabs\t,\" (dq) and spaces"
EOF
git diff-index -p $t0 >diff &&
git apply --numstat <diff >current &&
test_cmp expected current
ok 20 - numstat without -M quotes funny filename
expecting success of 3300.21 'numstat for non-git rename diff quotes funny filename':
cat >expected <<-\EOF &&
0 3 no-funny
3 0 "tabs\t,\" (dq) and spaces"
EOF
git diff-index -p $t0 >git-diff &&
sed -ne "/^[-+@]/p" <git-diff >diff &&
git apply --numstat <diff >current &&
test_cmp expected current
ok 21 - numstat for non-git rename diff quotes funny filename
# passed all 21 test(s)
1..21
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3210-pack-refs.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3210-pack-refs/.git/
expecting success of 3210.1 'enable reflogs':
git config core.logallrefupdates true
ok 1 - enable reflogs
expecting success of 3210.2 'prepare a trivial repository':
echo Hello > A &&
git update-index --add A &&
git commit -m "Initial commit." &&
HEAD=$(git rev-parse --verify HEAD)
[main (root-commit) 2daebe9] Initial commit.
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 A
ok 2 - prepare a trivial repository
expecting success of 3210.3 'see if git show-ref works as expected':
git branch a &&
SHA1=$(cat .git/refs/heads/a) &&
echo "$SHA1 refs/heads/a" >expect &&
git show-ref a >result &&
test_cmp expect result
ok 3 - see if git show-ref works as expected
expecting success of 3210.4 'see if a branch still exists when packed':
git branch b &&
git pack-refs --all &&
rm -f .git/refs/heads/b &&
echo "$SHA1 refs/heads/b" >expect &&
git show-ref b >result &&
test_cmp expect result
ok 4 - see if a branch still exists when packed
expecting success of 3210.5 'git branch c/d should barf if branch c exists':
git branch c &&
git pack-refs --all &&
rm -f .git/refs/heads/c &&
test_must_fail git branch c/d
fatal: cannot lock ref 'refs/heads/c/d': 'refs/heads/c' exists; cannot create 'refs/heads/c/d'
ok 5 - git branch c/d should barf if branch c exists
expecting success of 3210.6 'see if a branch still exists after git pack-refs --prune':
git branch e &&
git pack-refs --all --prune &&
echo "$SHA1 refs/heads/e" >expect &&
git show-ref e >result &&
test_cmp expect result
ok 6 - see if a branch still exists after git pack-refs --prune
expecting success of 3210.7 'see if git pack-refs --prune remove ref files':
git branch f &&
git pack-refs --all --prune &&
! test -f .git/refs/heads/f
ok 7 - see if git pack-refs --prune remove ref files
expecting success of 3210.8 'see if git pack-refs --prune removes empty dirs':
git branch r/s/t &&
git pack-refs --all --prune &&
! test -e .git/refs/heads/r
ok 8 - see if git pack-refs --prune removes empty dirs
expecting success of 3210.9 'git branch g should work when git branch g/h has been deleted':
git branch g/h &&
git pack-refs --all --prune &&
git branch -d g/h &&
git branch g &&
git pack-refs --all &&
git branch -d g
Deleted branch g/h (was 2daebe9).
Deleted branch g (was 2daebe9).
ok 9 - git branch g should work when git branch g/h has been deleted
expecting success of 3210.10 'git branch i/j/k should barf if branch i exists':
git branch i &&
git pack-refs --all --prune &&
test_must_fail git branch i/j/k
fatal: cannot lock ref 'refs/heads/i/j/k': 'refs/heads/i' exists; cannot create 'refs/heads/i/j/k'
ok 10 - git branch i/j/k should barf if branch i exists
expecting success of 3210.11 'test git branch k after branch k/l/m and k/lm have been deleted':
git branch k/l &&
git branch k/lm &&
git branch -d k/l &&
git branch k/l/m &&
git branch -d k/l/m &&
git branch -d k/lm &&
git branch k
Deleted branch k/l (was 2daebe9).
Deleted branch k/l/m (was 2daebe9).
Deleted branch k/lm (was 2daebe9).
ok 11 - test git branch k after branch k/l/m and k/lm have been deleted
expecting success of 3210.12 'test git branch n after some branch deletion and pruning':
git branch n/o &&
git branch n/op &&
git branch -d n/o &&
git branch n/o/p &&
git branch -d n/op &&
git pack-refs --all --prune &&
git branch -d n/o/p &&
git branch n
Deleted branch n/o (was 2daebe9).
Deleted branch n/op (was 2daebe9).
Deleted branch n/o/p (was 2daebe9).
ok 12 - test git branch n after some branch deletion and pruning
expecting success of 3210.13 'test excluded refs are not packed':
git branch dont_pack1 &&
git branch dont_pack2 &&
git branch pack_this &&
git pack-refs --all --exclude "refs/heads/dont_pack*" &&
test -f .git/refs/heads/dont_pack1 &&
test -f .git/refs/heads/dont_pack2 &&
! test -f .git/refs/heads/pack_this
ok 13 - test excluded refs are not packed
expecting success of 3210.14 'test --no-exclude refs clears excluded refs':
git branch dont_pack3 &&
git branch dont_pack4 &&
git pack-refs --all --exclude "refs/heads/dont_pack*" --no-exclude &&
! test -f .git/refs/heads/dont_pack3 &&
! test -f .git/refs/heads/dont_pack4
ok 14 - test --no-exclude refs clears excluded refs
expecting success of 3210.15 'test only included refs are packed':
git branch pack_this1 &&
git branch pack_this2 &&
git tag dont_pack5 &&
git pack-refs --include "refs/heads/pack_this*" &&
test -f .git/refs/tags/dont_pack5 &&
! test -f .git/refs/heads/pack_this1 &&
! test -f .git/refs/heads/pack_this2
ok 15 - test only included refs are packed
expecting success of 3210.16 'test --no-include refs clears included refs':
git branch pack1 &&
git branch pack2 &&
git pack-refs --include "refs/heads/pack*" --no-include &&
test -f .git/refs/heads/pack1 &&
test -f .git/refs/heads/pack2
ok 16 - test --no-include refs clears included refs
expecting success of 3210.17 'test --exclude takes precedence over --include':
git branch dont_pack5 &&
git pack-refs --include "refs/heads/pack*" --exclude "refs/heads/pack*" &&
test -f .git/refs/heads/dont_pack5
ok 17 - test --exclude takes precedence over --include
expecting success of 3210.18 'see if up-to-date packed refs are preserved':
git branch q &&
git pack-refs --all --prune &&
git update-ref refs/heads/q refs/heads/q &&
! test -f .git/refs/heads/q
ok 18 - see if up-to-date packed refs are preserved
expecting success of 3210.19 'pack, prune and repack':
git tag foo &&
git pack-refs --all --prune &&
git show-ref >all-of-them &&
git pack-refs &&
git show-ref >again &&
test_cmp all-of-them again
ok 19 - pack, prune and repack
expecting success of 3210.20 'explicit pack-refs with dangling packed reference':
git commit --allow-empty -m "soon to be garbage-collected" &&
git pack-refs --all &&
git reset --hard HEAD^ &&
git reflog expire --expire=all --all &&
git prune --expire=all &&
git pack-refs --all 2>result &&
test_must_be_empty result
[main 6d2fc87] soon to be garbage-collected
Author: A U Thor <author@example.com>
HEAD is now at 2daebe9 Initial commit.
ok 20 - explicit pack-refs with dangling packed reference
expecting success of 3210.21 'delete ref with dangling packed version':
git checkout -b lamb &&
git commit --allow-empty -m "future garbage" &&
git pack-refs --all &&
git reset --hard HEAD^ &&
git checkout main &&
git reflog expire --expire=all --all &&
git prune --expire=all &&
git branch -d lamb 2>result &&
test_must_be_empty result
Switched to a new branch 'lamb'
[lamb ce057e0] future garbage
Author: A U Thor <author@example.com>
HEAD is now at 2daebe9 Initial commit.
Switched to branch 'main'
Deleted branch lamb (was 2daebe9).
ok 21 - delete ref with dangling packed version
expecting success of 3210.22 'delete ref while another dangling packed ref':
git branch lamb &&
git commit --allow-empty -m "future garbage" &&
git pack-refs --all &&
git reset --hard HEAD^ &&
git reflog expire --expire=all --all &&
git prune --expire=all &&
git branch -d lamb 2>result &&
test_must_be_empty result
[main ce057e0] future garbage
Author: A U Thor <author@example.com>
HEAD is now at 2daebe9 Initial commit.
Deleted branch lamb (was 2daebe9).
ok 22 - delete ref while another dangling packed ref
expecting success of 3210.23 'pack ref directly below refs/':
git update-ref refs/top HEAD &&
git pack-refs --all --prune &&
grep refs/top .git/packed-refs &&
test_path_is_missing .git/refs/top
2daebe96d7fd03d28875d852f87c06a18f4a6639 refs/top
ok 23 - pack ref directly below refs/
expecting success of 3210.24 'do not pack ref in refs/bisect':
git update-ref refs/bisect/local HEAD &&
git pack-refs --all --prune &&
! grep refs/bisect/local .git/packed-refs >/dev/null &&
test_path_is_file .git/refs/bisect/local
ok 24 - do not pack ref in refs/bisect
expecting success of 3210.25 'disable reflogs':
git config core.logallrefupdates false &&
rm -rf .git/logs
ok 25 - disable reflogs
expecting success of 3210.26 'create packed foo/bar/baz branch':
git branch foo/bar/baz &&
git pack-refs --all --prune &&
test_path_is_missing .git/refs/heads/foo/bar/baz &&
test_must_fail git reflog exists refs/heads/foo/bar/baz
ok 26 - create packed foo/bar/baz branch
expecting success of 3210.27 'notice d/f conflict with existing directory':
test_must_fail git branch foo &&
test_must_fail git branch foo/bar
fatal: cannot lock ref 'refs/heads/foo': 'refs/heads/foo/bar/baz' exists; cannot create 'refs/heads/foo'
fatal: cannot lock ref 'refs/heads/foo/bar': 'refs/heads/foo/bar/baz' exists; cannot create 'refs/heads/foo/bar'
ok 27 - notice d/f conflict with existing directory
expecting success of 3210.28 'existing directory reports concrete ref':
test_must_fail git branch foo 2>stderr &&
test_i18ngrep refs/heads/foo/bar/baz stderr
fatal: cannot lock ref 'refs/heads/foo': 'refs/heads/foo/bar/baz' exists; cannot create 'refs/heads/foo'
ok 28 - existing directory reports concrete ref
expecting success of 3210.29 'notice d/f conflict with existing ref':
test_must_fail git branch foo/bar/baz/extra &&
test_must_fail git branch foo/bar/baz/lots/of/extra/components
fatal: cannot lock ref 'refs/heads/foo/bar/baz/extra': 'refs/heads/foo/bar/baz' exists; cannot create 'refs/heads/foo/bar/baz/extra'
fatal: cannot lock ref 'refs/heads/foo/bar/baz/lots/of/extra/components': 'refs/heads/foo/bar/baz' exists; cannot create 'refs/heads/foo/bar/baz/lots/of/extra/components'
ok 29 - notice d/f conflict with existing ref
expecting success of 3210.30 'reject packed-refs with unterminated line':
cp .git/packed-refs .git/packed-refs.bak &&
test_when_finished "mv .git/packed-refs.bak .git/packed-refs" &&
printf "%s" "$HEAD refs/zzzzz" >>.git/packed-refs &&
echo "fatal: unterminated line in .git/packed-refs: $HEAD refs/zzzzz" >expected_err &&
test_must_fail git for-each-ref >out 2>err &&
test_cmp expected_err err
ok 30 - reject packed-refs with unterminated line
expecting success of 3210.31 'reject packed-refs containing junk':
cp .git/packed-refs .git/packed-refs.bak &&
test_when_finished "mv .git/packed-refs.bak .git/packed-refs" &&
printf "%s\n" "bogus content" >>.git/packed-refs &&
echo "fatal: unexpected line in .git/packed-refs: bogus content" >expected_err &&
test_must_fail git for-each-ref >out 2>err &&
test_cmp expected_err err
ok 31 - reject packed-refs containing junk
expecting success of 3210.32 'reject packed-refs with a short SHA-1':
cp .git/packed-refs .git/packed-refs.bak &&
test_when_finished "mv .git/packed-refs.bak .git/packed-refs" &&
printf "%.7s %s\n" $HEAD refs/zzzzz >>.git/packed-refs &&
printf "fatal: unexpected line in .git/packed-refs: %.7s %s\n" $HEAD refs/zzzzz >expected_err &&
test_must_fail git for-each-ref >out 2>err &&
test_cmp expected_err err
ok 32 - reject packed-refs with a short SHA-1
expecting success of 3210.33 'timeout if packed-refs.lock exists':
LOCK=.git/packed-refs.lock &&
>"$LOCK" &&
test_when_finished "rm -f $LOCK" &&
test_must_fail git pack-refs --all --prune
fatal: Unable to create '/<<PKGBUILDDIR>>/t/trash directory.t3210-pack-refs/.git/packed-refs.lock': File exists.
Another git process seems to be running in this repository, e.g.
an editor opened by 'git commit'. Please make sure all processes
are terminated then try again. If it still fails, a git process
may have crashed in this repository earlier:
remove the file manually to continue.
ok 33 - timeout if packed-refs.lock exists
expecting success of 3210.34 'retry acquiring packed-refs.lock':
LOCK=.git/packed-refs.lock &&
>"$LOCK" &&
test_when_finished "wait && rm -f $LOCK" &&
{
( sleep 1 && rm -f $LOCK ) &
} &&
git -c core.packedrefstimeout=3000 pack-refs --all --prune
ok 34 - retry acquiring packed-refs.lock
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
expecting success of 3210.35 'pack symlinked packed-refs':
# First make sure that symlinking works when reading:
git update-ref refs/heads/lossy refs/heads/main &&
git for-each-ref >all-refs-before &&
mv .git/packed-refs .git/my-deviant-packed-refs &&
ln -s my-deviant-packed-refs .git/packed-refs &&
git for-each-ref >all-refs-linked &&
test_cmp all-refs-before all-refs-linked &&
git pack-refs --all --prune &&
git for-each-ref >all-refs-packed &&
test_cmp all-refs-before all-refs-packed &&
test -h .git/packed-refs &&
test "$(test_readlink .git/packed-refs)" = "my-deviant-packed-refs"
ok 35 - pack symlinked packed-refs
# passed all 35 test(s)
1..35
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3302-notes-index-expensive.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3302-notes-index-expensive/.git/
expecting success of 3302.1 'setup 10':
mkdir "$count" &&
(
cd "$count" &&
create_repo "$count"
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3302-notes-index-expensive/10/.git/
ok 1 - setup 10
expecting success of 3302.2 'notes work':
(
cd "$count" &&
test_notes "$count"
)
ok 2 - notes work
checking prerequisite: USR_BIN_TIME
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-USR_BIN_TIME" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-USR_BIN_TIME" &&
test -x /usr/bin/time
)
prerequisite USR_BIN_TIME not satisfied
ok 3 # skip notes timing with /usr/bin/time (missing USR_BIN_TIME)
checking prerequisite: EXPENSIVE
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-EXPENSIVE" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-EXPENSIVE" &&
test -n "$GIT_TEST_LONG"
)
prerequisite EXPENSIVE not satisfied
ok 4 # skip setup 100 (missing EXPENSIVE)
ok 5 # skip notes work (missing EXPENSIVE)
ok 6 # skip notes timing with /usr/bin/time (missing EXPENSIVE,USR_BIN_TIME of USR_BIN_TIME,EXPENSIVE)
ok 7 # skip setup 1000 (missing EXPENSIVE)
ok 8 # skip notes work (missing EXPENSIVE)
ok 9 # skip notes timing with /usr/bin/time (missing EXPENSIVE,USR_BIN_TIME of USR_BIN_TIME,EXPENSIVE)
ok 10 # skip setup 10000 (missing EXPENSIVE)
ok 11 # skip notes work (missing EXPENSIVE)
ok 12 # skip notes timing with /usr/bin/time (missing EXPENSIVE,USR_BIN_TIME of USR_BIN_TIME,EXPENSIVE)
# passed all 12 test(s)
1..12
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3207-branch-submodule.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3207-branch-submodule/.git/
expecting success of 3207.1 'setup superproject and submodule':
git config --global protocol.file.allow always &&
mkdir test_dirs &&
(
cd test_dirs &&
git init super &&
test_commit -C super foo &&
git init sub-sub-upstream &&
test_commit -C sub-sub-upstream foo &&
git init sub-upstream &&
# Submodule in a submodule
git -C sub-upstream submodule add "${pwd}/test_dirs/sub-sub-upstream" sub-sub &&
git -C sub-upstream commit -m "add submodule" &&
# Regular submodule
git -C super submodule add "${pwd}/test_dirs/sub-upstream" sub &&
# Submodule in a subdirectory
git -C super submodule add "${pwd}/test_dirs/sub-sub-upstream" second/sub &&
git -C super commit -m "add submodule" &&
git -C super config submodule.propagateBranches true &&
git -C super/sub submodule update --init
) &&
reset_test
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3207-branch-submodule/test_dirs/super/.git/
[main (root-commit) ddd63c9] foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo.t
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3207-branch-submodule/test_dirs/sub-sub-upstream/.git/
[main (root-commit) 946e985] foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo.t
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3207-branch-submodule/test_dirs/sub-upstream/.git/
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3207-branch-submodule/test_dirs/sub-upstream/sub-sub'...
done.
[main (root-commit) 562db0f] add submodule
Author: A U Thor <author@example.com>
2 files changed, 4 insertions(+)
create mode 100644 .gitmodules
create mode 160000 sub-sub
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3207-branch-submodule/test_dirs/super/sub'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3207-branch-submodule/test_dirs/super/second/sub'...
done.
[main 37ccf91] add submodule
Author: A U Thor <author@example.com>
3 files changed, 8 insertions(+)
create mode 100644 .gitmodules
create mode 160000 second/sub
create mode 160000 sub
Submodule 'sub-sub' (/<<PKGBUILDDIR>>/t/trash directory.t3207-branch-submodule/test_dirs/sub-sub-upstream) registered for path 'sub-sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3207-branch-submodule/test_dirs/super/sub/sub-sub'...
done.
Submodule path 'sub-sub': checked out '946e985ab20de757ca5b872b16d64e92ff3803a9'
ok 1 - setup superproject and submodule
expecting success of 3207.2 '--recurse-submodules should create branches':
test_when_finished "reset_test" &&
(
cd super &&
git branch --recurse-submodules branch-a &&
git rev-parse branch-a &&
git -C sub rev-parse branch-a &&
git -C sub/sub-sub rev-parse branch-a &&
git -C second/sub rev-parse branch-a
)
submodule 'second/sub': creating branch 'branch-a'
submodule 'sub': creating branch 'branch-a'
submodule 'sub': submodule 'sub-sub': creating branch 'branch-a'
37ccf9177019276124ad55a88bc7440e7f9bf0d8
562db0febb78a010f675abef132ac1acdafc6a75
946e985ab20de757ca5b872b16d64e92ff3803a9
946e985ab20de757ca5b872b16d64e92ff3803a9
ok 2 - --recurse-submodules should create branches
expecting success of 3207.3 '--recurse-submodules should die if submodule.propagateBranches is false':
test_when_finished "reset_test" &&
(
cd super &&
echo "fatal: branch with --recurse-submodules can only be used if submodule.propagateBranches is enabled" >expected &&
test_must_fail git -c submodule.propagateBranches=false branch --recurse-submodules branch-a 2>actual &&
test_cmp expected actual
)
ok 3 - --recurse-submodules should die if submodule.propagateBranches is false
expecting success of 3207.4 '--recurse-submodules should fail when not creating branches':
test_when_finished "reset_test" &&
(
cd super &&
git branch --recurse-submodules branch-a &&
echo "fatal: --recurse-submodules can only be used to create branches" >expected &&
test_must_fail git branch --recurse-submodules -D branch-a 2>actual &&
test_cmp expected actual &&
# Assert that the branches were not deleted
git rev-parse branch-a &&
git -C sub rev-parse branch-a
)
submodule 'second/sub': creating branch 'branch-a'
submodule 'sub': creating branch 'branch-a'
submodule 'sub': submodule 'sub-sub': creating branch 'branch-a'
37ccf9177019276124ad55a88bc7440e7f9bf0d8
562db0febb78a010f675abef132ac1acdafc6a75
ok 4 - --recurse-submodules should fail when not creating branches
expecting success of 3207.5 'should respect submodule.recurse when creating branches':
test_when_finished "reset_test" &&
(
cd super &&
git -c submodule.recurse=true branch branch-a &&
git rev-parse branch-a &&
git -C sub rev-parse branch-a
)
submodule 'second/sub': creating branch 'branch-a'
submodule 'sub': creating branch 'branch-a'
submodule 'sub': submodule 'sub-sub': creating branch 'branch-a'
37ccf9177019276124ad55a88bc7440e7f9bf0d8
562db0febb78a010f675abef132ac1acdafc6a75
ok 5 - should respect submodule.recurse when creating branches
expecting success of 3207.6 'should ignore submodule.recurse when not creating branches':
test_when_finished "reset_test" &&
(
cd super &&
git branch --recurse-submodules branch-a &&
git -c submodule.recurse=true branch -D branch-a &&
test_no_branch . branch-a &&
git -C sub rev-parse branch-a
)
submodule 'second/sub': creating branch 'branch-a'
submodule 'sub': creating branch 'branch-a'
submodule 'sub': submodule 'sub-sub': creating branch 'branch-a'
Deleted branch branch-a (was 37ccf91).
branch-a
fatal: ambiguous argument 'branch-a': unknown revision or path not in the working tree.
562db0febb78a010f675abef132ac1acdafc6a75
ok 6 - should ignore submodule.recurse when not creating branches
expecting success of 3207.7 'should create branches based off commit id in superproject':
test_when_finished "reset_test" &&
(
cd super &&
git branch --recurse-submodules branch-a &&
git checkout --recurse-submodules branch-a &&
git -C sub rev-parse HEAD >expected &&
# Move the tip of sub:branch-a so that it no longer matches the commit in super:branch-a
git -C sub checkout branch-a &&
test_commit -C sub bar &&
# Create a new branch-b branch with start-point=branch-a
git branch --recurse-submodules branch-b branch-a &&
git rev-parse branch-b &&
git -C sub rev-parse branch-b >actual &&
# Assert that the commit id of sub:second-branch matches super:branch-a and not sub:branch-a
test_cmp expected actual
)
submodule 'second/sub': creating branch 'branch-a'
submodule 'sub': creating branch 'branch-a'
submodule 'sub': submodule 'sub-sub': creating branch 'branch-a'
Switched to branch 'branch-a'
Switched to branch 'branch-a'
[branch-a ac26b25] bar
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 bar.t
submodule 'second/sub': creating branch 'branch-b'
submodule 'sub': creating branch 'branch-b'
submodule 'sub': submodule 'sub-sub': creating branch 'branch-b'
37ccf9177019276124ad55a88bc7440e7f9bf0d8
ok 7 - should create branches based off commit id in superproject
expecting success of 3207.8 'should not create any branches if branch is not valid for all repos':
test_when_finished "reset_test" &&
(
cd super &&
git -C sub branch branch-a &&
test_must_fail git branch --recurse-submodules branch-a 2>actual &&
test_no_branch . branch-a &&
grep "submodule .sub.: fatal: a branch named .branch-a. already exists" actual
)
branch-a
fatal: ambiguous argument 'branch-a': unknown revision or path not in the working tree.
submodule 'sub': fatal: a branch named 'branch-a' already exists
ok 8 - should not create any branches if branch is not valid for all repos
expecting success of 3207.9 'should create branches if branch exists and --force is given':
test_when_finished "reset_test" &&
(
cd super &&
git -C sub rev-parse HEAD >expected &&
test_commit -C sub baz &&
# branch-a in sub now points to a newer commit.
git -C sub branch branch-a HEAD &&
git -C sub rev-parse branch-a >actual-old-branch-a &&
git branch --recurse-submodules --force branch-a &&
git rev-parse branch-a &&
git -C sub rev-parse branch-a >actual-new-branch-a &&
test_cmp expected actual-new-branch-a &&
# assert that branch --force actually moved the sub
# branch
! test_cmp expected actual-old-branch-a
)
[main a1a8242] baz
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 baz.t
submodule 'second/sub': creating branch 'branch-a'
submodule 'sub': creating branch 'branch-a'
submodule 'sub': submodule 'sub-sub': creating branch 'branch-a'
37ccf9177019276124ad55a88bc7440e7f9bf0d8
--- expected 2023-10-09 02:18:45.177159970 +0000
+++ actual-old-branch-a 2023-10-09 02:18:45.209159957 +0000
@@ -1 +1 @@
-562db0febb78a010f675abef132ac1acdafc6a75
+a1a8242dc9178d3f89bedc868ec372bd77ce9938
ok 9 - should create branches if branch exists and --force is given
expecting success of 3207.10 'should create branch when submodule is not in HEAD:.gitmodules':
test_when_finished "reset_test" &&
(
cd super &&
git branch branch-a &&
git checkout -b branch-b &&
git submodule add ../sub-upstream sub2 &&
git -C sub2 submodule update --init &&
# branch-b now has a committed submodule not in branch-a
git commit -m "add second submodule" &&
git checkout branch-a &&
git branch --recurse-submodules branch-c branch-b &&
git checkout --recurse-submodules branch-c &&
git -C sub2 rev-parse branch-c &&
git -C sub2/sub-sub rev-parse branch-c
)
Switched to a new branch 'branch-b'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3207-branch-submodule/super/sub2'...
done.
Submodule 'sub-sub' (/<<PKGBUILDDIR>>/t/trash directory.t3207-branch-submodule/test_dirs/sub-sub-upstream) registered for path 'sub-sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3207-branch-submodule/super/sub2/sub-sub'...
done.
Submodule path 'sub-sub': checked out '946e985ab20de757ca5b872b16d64e92ff3803a9'
[branch-b fab3357] add second submodule
Author: A U Thor <author@example.com>
2 files changed, 4 insertions(+)
create mode 160000 sub2
warning: unable to rmdir 'sub2': Directory not empty
Switched to branch 'branch-a'
submodule 'second/sub': creating branch 'branch-c'
submodule 'sub': creating branch 'branch-c'
submodule 'sub': submodule 'sub-sub': creating branch 'branch-c'
submodule 'sub2': creating branch 'branch-c'
submodule 'sub2': submodule 'sub-sub': creating branch 'branch-c'
Switched to branch 'branch-c'
562db0febb78a010f675abef132ac1acdafc6a75
946e985ab20de757ca5b872b16d64e92ff3803a9
ok 10 - should create branch when submodule is not in HEAD:.gitmodules
expecting success of 3207.11 'should not create branches in inactive submodules':
test_when_finished "reset_test" &&
test_config -C super submodule.sub.active false &&
(
cd super &&
git branch --recurse-submodules branch-a &&
git rev-parse branch-a &&
test_no_branch sub branch-a
)
submodule 'second/sub': creating branch 'branch-a'
37ccf9177019276124ad55a88bc7440e7f9bf0d8
branch-a
fatal: ambiguous argument 'branch-a': unknown revision or path not in the working tree.
ok 11 - should not create branches in inactive submodules
expecting success of 3207.12 'should set up tracking of local branches with track=always':
test_when_finished "reset_test" &&
(
cd super &&
git -c branch.autoSetupMerge=always branch --recurse-submodules branch-a main &&
git -C sub rev-parse main &&
test_cmp_config -C sub . branch.branch-a.remote &&
test_cmp_config -C sub refs/heads/main branch.branch-a.merge
)
branch 'branch-a' set up to track 'main'.
submodule 'second/sub': creating branch 'branch-a'
submodule 'second/sub': branch 'branch-a' set up to track 'main'.
submodule 'sub': creating branch 'branch-a'
submodule 'sub': branch 'branch-a' set up to track 'main'.
submodule 'sub': submodule 'sub-sub': creating branch 'branch-a'
submodule 'sub': submodule 'sub-sub': branch 'branch-a' set up to track 'main'.
562db0febb78a010f675abef132ac1acdafc6a75
ok 12 - should set up tracking of local branches with track=always
expecting success of 3207.13 'should set up tracking of local branches with explicit track':
test_when_finished "reset_test" &&
(
cd super &&
git branch --track --recurse-submodules branch-a main &&
git -C sub rev-parse main &&
test_cmp_config -C sub . branch.branch-a.remote &&
test_cmp_config -C sub refs/heads/main branch.branch-a.merge
)
branch 'branch-a' set up to track 'main'.
submodule 'second/sub': creating branch 'branch-a'
submodule 'second/sub': branch 'branch-a' set up to track 'main'.
submodule 'sub': creating branch 'branch-a'
submodule 'sub': branch 'branch-a' set up to track 'main'.
submodule 'sub': submodule 'sub-sub': creating branch 'branch-a'
submodule 'sub': submodule 'sub-sub': branch 'branch-a' set up to track 'main'.
562db0febb78a010f675abef132ac1acdafc6a75
ok 13 - should set up tracking of local branches with explicit track
expecting success of 3207.14 'should not set up unnecessary tracking of local branches':
test_when_finished "reset_test" &&
(
cd super &&
git branch --recurse-submodules branch-a main &&
git -C sub rev-parse main &&
test_cmp_config -C sub "" --default "" branch.branch-a.remote &&
test_cmp_config -C sub "" --default "" branch.branch-a.merge
)
submodule 'second/sub': creating branch 'branch-a'
submodule 'sub': creating branch 'branch-a'
submodule 'sub': submodule 'sub-sub': creating branch 'branch-a'
562db0febb78a010f675abef132ac1acdafc6a75
ok 14 - should not set up unnecessary tracking of local branches
expecting success of 3207.15 'setup tests with remotes':
(
cd test_dirs &&
(
cd super &&
git branch branch-a &&
git checkout -b branch-b &&
git submodule add ../sub-upstream sub2 &&
# branch-b now has a committed submodule not in branch-a
git commit -m "add second submodule"
) &&
git clone --branch main --recurse-submodules super super-clone &&
git -C super-clone config submodule.propagateBranches true
) &&
reset_remote_test
Switched to a new branch 'branch-b'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3207-branch-submodule/test_dirs/super/sub2'...
done.
[branch-b fab3357] add second submodule
Author: A U Thor <author@example.com>
2 files changed, 4 insertions(+)
create mode 160000 sub2
Cloning into 'super-clone'...
done.
Submodule 'second/sub' (/<<PKGBUILDDIR>>/t/trash directory.t3207-branch-submodule/test_dirs/sub-sub-upstream) registered for path 'second/sub'
Submodule 'sub' (/<<PKGBUILDDIR>>/t/trash directory.t3207-branch-submodule/test_dirs/sub-upstream) registered for path 'sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3207-branch-submodule/test_dirs/super-clone/second/sub'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3207-branch-submodule/test_dirs/super-clone/sub'...
done.
Submodule path 'second/sub': checked out '946e985ab20de757ca5b872b16d64e92ff3803a9'
Submodule path 'sub': checked out '562db0febb78a010f675abef132ac1acdafc6a75'
Submodule 'sub-sub' (/<<PKGBUILDDIR>>/t/trash directory.t3207-branch-submodule/test_dirs/sub-sub-upstream) registered for path 'sub/sub-sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3207-branch-submodule/test_dirs/super-clone/sub/sub-sub'...
done.
Submodule path 'sub/sub-sub': checked out '946e985ab20de757ca5b872b16d64e92ff3803a9'
ok 15 - setup tests with remotes
expecting success of 3207.16 'should get fatal error upon branch creation when submodule is not in .git/modules':
test_when_finished "reset_remote_test" &&
(
cd super-clone &&
# This should succeed because super-clone has sub in .git/modules
git branch --recurse-submodules branch-a origin/branch-a &&
# This should fail because super-clone does not have sub2 .git/modules
test_must_fail git branch --recurse-submodules branch-b origin/branch-b 2>actual &&
grep "fatal: submodule .sub2.: unable to find submodule" actual &&
test_no_branch . branch-b &&
test_no_branch sub branch-b &&
# User can fix themselves by initializing the submodule
git checkout origin/branch-b &&
git submodule update --init --recursive &&
git branch --recurse-submodules branch-b origin/branch-b
)
branch 'branch-a' set up to track 'origin/branch-a'.
submodule 'second/sub': creating branch 'branch-a'
submodule 'second/sub': branch 'branch-a' set up to track 'origin/branch-a'.
submodule 'sub': creating branch 'branch-a'
submodule 'sub': branch 'branch-a' set up to track 'origin/branch-a'.
submodule 'sub': submodule 'sub-sub': creating branch 'branch-a'
submodule 'sub': submodule 'sub-sub': branch 'branch-a' set up to track 'origin/branch-a'.
fatal: submodule 'sub2': unable to find submodule
branch-b
fatal: ambiguous argument 'branch-b': unknown revision or path not in the working tree.
branch-b
fatal: ambiguous argument 'branch-b': unknown revision or path not in the working tree.
Note: switching to 'origin/branch-b'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at fab3357 add second submodule
Submodule 'sub2' (/<<PKGBUILDDIR>>/t/trash directory.t3207-branch-submodule/test_dirs/sub-upstream) registered for path 'sub2'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3207-branch-submodule/super-clone/sub2'...
done.
Submodule path 'sub2': checked out '562db0febb78a010f675abef132ac1acdafc6a75'
Submodule 'sub-sub' (/<<PKGBUILDDIR>>/t/trash directory.t3207-branch-submodule/test_dirs/sub-sub-upstream) registered for path 'sub2/sub-sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3207-branch-submodule/super-clone/sub2/sub-sub'...
done.
Submodule path 'sub2/sub-sub': checked out '946e985ab20de757ca5b872b16d64e92ff3803a9'
branch 'branch-b' set up to track 'origin/branch-b'.
submodule 'second/sub': creating branch 'branch-b'
submodule 'second/sub': branch 'branch-b' set up to track 'origin/branch-b'.
submodule 'sub': creating branch 'branch-b'
submodule 'sub': branch 'branch-b' set up to track 'origin/branch-b'.
submodule 'sub': submodule 'sub-sub': creating branch 'branch-b'
submodule 'sub': submodule 'sub-sub': branch 'branch-b' set up to track 'origin/branch-b'.
submodule 'sub2': creating branch 'branch-b'
submodule 'sub2': branch 'branch-b' set up to track 'origin/branch-b'.
submodule 'sub2': submodule 'sub-sub': creating branch 'branch-b'
submodule 'sub2': submodule 'sub-sub': branch 'branch-b' set up to track 'origin/branch-b'.
ok 16 - should get fatal error upon branch creation when submodule is not in .git/modules
expecting success of 3207.17 'should set up tracking of remote-tracking branches by default':
test_when_finished "reset_remote_test" &&
(
cd super-clone &&
git branch --recurse-submodules branch-a origin/branch-a &&
test_cmp_config origin branch.branch-a.remote &&
test_cmp_config refs/heads/branch-a branch.branch-a.merge &&
# "origin/branch-a" does not exist for "sub", but it matches the refspec
# so tracking should be set up
test_cmp_config -C sub origin branch.branch-a.remote &&
test_cmp_config -C sub refs/heads/branch-a branch.branch-a.merge &&
test_cmp_config -C sub/sub-sub origin branch.branch-a.remote &&
test_cmp_config -C sub/sub-sub refs/heads/branch-a branch.branch-a.merge
)
branch 'branch-a' set up to track 'origin/branch-a'.
submodule 'second/sub': creating branch 'branch-a'
submodule 'second/sub': branch 'branch-a' set up to track 'origin/branch-a'.
submodule 'sub': creating branch 'branch-a'
submodule 'sub': branch 'branch-a' set up to track 'origin/branch-a'.
submodule 'sub': submodule 'sub-sub': creating branch 'branch-a'
submodule 'sub': submodule 'sub-sub': branch 'branch-a' set up to track 'origin/branch-a'.
ok 17 - should set up tracking of remote-tracking branches by default
expecting success of 3207.18 'should not fail when unable to set up tracking in submodule':
test_when_finished "reset_remote_test" &&
(
cd super-clone &&
git remote rename origin ex-origin &&
git branch --recurse-submodules branch-a ex-origin/branch-a &&
test_cmp_config ex-origin branch.branch-a.remote &&
test_cmp_config refs/heads/branch-a branch.branch-a.merge &&
test_cmp_config -C sub "" --default "" branch.branch-a.remote &&
test_cmp_config -C sub "" --default "" branch.branch-a.merge
)
branch 'branch-a' set up to track 'ex-origin/branch-a'.
submodule 'second/sub': creating branch 'branch-a'
submodule 'sub': creating branch 'branch-a'
submodule 'sub': submodule 'sub-sub': creating branch 'branch-a'
ok 18 - should not fail when unable to set up tracking in submodule
expecting success of 3207.19 '--track=inherit should set up tracking correctly':
test_when_finished "reset_remote_test" &&
(
cd super-clone &&
git branch --recurse-submodules branch-a origin/branch-a &&
# Set this manually instead of using branch --set-upstream-to
# to circumvent the "nonexistent upstream" check.
git -C sub config branch.branch-a.remote origin &&
git -C sub config branch.branch-a.merge refs/heads/sub-branch-a &&
git -C sub/sub-sub config branch.branch-a.remote other &&
git -C sub/sub-sub config branch.branch-a.merge refs/heads/sub-sub-branch-a &&
git branch --recurse-submodules --track=inherit branch-b branch-a &&
test_cmp_config origin branch.branch-b.remote &&
test_cmp_config refs/heads/branch-a branch.branch-b.merge &&
test_cmp_config -C sub origin branch.branch-b.remote &&
test_cmp_config -C sub refs/heads/sub-branch-a branch.branch-b.merge &&
test_cmp_config -C sub/sub-sub other branch.branch-b.remote &&
test_cmp_config -C sub/sub-sub refs/heads/sub-sub-branch-a branch.branch-b.merge
)
branch 'branch-a' set up to track 'origin/branch-a'.
submodule 'second/sub': creating branch 'branch-a'
submodule 'second/sub': branch 'branch-a' set up to track 'origin/branch-a'.
submodule 'sub': creating branch 'branch-a'
submodule 'sub': branch 'branch-a' set up to track 'origin/branch-a'.
submodule 'sub': submodule 'sub-sub': creating branch 'branch-a'
submodule 'sub': submodule 'sub-sub': branch 'branch-a' set up to track 'origin/branch-a'.
branch 'branch-b' set up to track 'origin/branch-a'.
submodule 'second/sub': creating branch 'branch-b'
submodule 'second/sub': branch 'branch-b' set up to track 'origin/branch-a'.
submodule 'sub': creating branch 'branch-b'
submodule 'sub': branch 'branch-b' set up to track 'origin/sub-branch-a'.
submodule 'sub': submodule 'sub-sub': creating branch 'branch-b'
submodule 'sub': submodule 'sub-sub': branch 'branch-b' set up to track 'other/sub-sub-branch-a'.
ok 19 - --track=inherit should set up tracking correctly
expecting success of 3207.20 '--no-track should not set up tracking':
test_when_finished "reset_remote_test" &&
(
cd super-clone &&
git branch --recurse-submodules --no-track branch-a origin/branch-a &&
test_cmp_config "" --default "" branch.branch-a.remote &&
test_cmp_config "" --default "" branch.branch-a.merge &&
test_cmp_config -C sub "" --default "" branch.branch-a.remote &&
test_cmp_config -C sub "" --default "" branch.branch-a.merge &&
test_cmp_config -C sub/sub-sub "" --default "" branch.branch-a.remote &&
test_cmp_config -C sub/sub-sub "" --default "" branch.branch-a.merge
)
submodule 'second/sub': creating branch 'branch-a'
submodule 'sub': creating branch 'branch-a'
submodule 'sub': submodule 'sub-sub': creating branch 'branch-a'
ok 20 - --no-track should not set up tracking
# passed all 20 test(s)
1..20
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3304-notes-mixed.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3304-notes-mixed/.git/
expecting success of 3304.1 'setup: create a couple of commits':
test_tick &&
cat <<INPUT_END >input &&
commit refs/heads/main
committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
data <<COMMIT
commit #1
COMMIT
M 644 inline file
data <<EOF
file in commit #1
EOF
INPUT_END
test_tick &&
cat <<INPUT_END >>input &&
commit refs/heads/main
committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
data <<COMMIT
commit #2
COMMIT
M 644 inline file
data <<EOF
file in commit #2
EOF
INPUT_END
git fast-import --quiet <input
ok 1 - setup: create a couple of commits
expecting success of 3304.2 'create a notes tree with both notes and non-notes':
commit1=$(git rev-parse refs/heads/main^) &&
commit2=$(git rev-parse refs/heads/main) &&
test_tick &&
cat <<INPUT_END >input &&
commit refs/notes/commits
committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
data <<COMMIT
notes commit #1
COMMIT
N inline $commit1
data <<EOF
note for commit #1
EOF
N inline $commit2
data <<EOF
note for commit #2
EOF
INPUT_END
test_tick &&
cat <<INPUT_END >>input &&
commit refs/notes/commits
committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
data <<COMMIT
notes commit #2
COMMIT
M 644 inline foobar/non-note.txt
data <<EOF
A non-note in a notes tree
EOF
N inline $commit2
data <<EOF
edited note for commit #2
EOF
INPUT_END
test_tick &&
cat <<INPUT_END >>input &&
commit refs/notes/commits
committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
data <<COMMIT
notes commit #3
COMMIT
N inline $commit1
data <<EOF
edited note for commit #1
EOF
M 644 inline deadbeef
data <<EOF
non-note with SHA1-like name
EOF
M 644 inline de/adbeef
data <<EOF
another non-note with SHA1-like name
EOF
M 644 inline de/adbeefdeadbeefdeadbeefdeadbeefdeadbeef
data <<EOF
This is actually a valid note, albeit to a non-existing object.
It is needed in order to trigger the "mishandling" of the dead/beef non-note.
EOF
M 644 inline dead/beef
data <<EOF
yet another non-note with SHA1-like name
EOF
INPUT_END
git fast-import --quiet <input &&
git config core.notesRef refs/notes/commits
ok 2 - create a notes tree with both notes and non-notes
expecting success of 3304.3 'verify contents of notes':
git log | grep "^ " > actual &&
test_cmp expect actual
ok 3 - verify contents of notes
expecting success of 3304.4 'verify contents of non-notes':
git cat-file -p refs/notes/commits:foobar/non-note.txt > actual_nn1 &&
test_cmp expect_nn1 actual_nn1 &&
git cat-file -p refs/notes/commits:deadbeef > actual_nn2 &&
test_cmp expect_nn2 actual_nn2 &&
git cat-file -p refs/notes/commits:de/adbeef > actual_nn3 &&
test_cmp expect_nn3 actual_nn3 &&
git cat-file -p refs/notes/commits:dead/beef > actual_nn4 &&
test_cmp expect_nn4 actual_nn4
ok 4 - verify contents of non-notes
expecting success of 3304.5 'git-notes preserves non-notes':
test_tick &&
git notes add -f -m "foo bar"
Overwriting existing notes for object 5f8b8322f6a2c6d36eb6d42312d2393900ab7b81
ok 5 - git-notes preserves non-notes
expecting success of 3304.6 'verify contents of non-notes after git-notes':
git cat-file -p refs/notes/commits:foobar/non-note.txt > actual_nn1 &&
test_cmp expect_nn1 actual_nn1 &&
git cat-file -p refs/notes/commits:deadbeef > actual_nn2 &&
test_cmp expect_nn2 actual_nn2 &&
git cat-file -p refs/notes/commits:de/adbeef > actual_nn3 &&
test_cmp expect_nn3 actual_nn3 &&
git cat-file -p refs/notes/commits:dead/beef > actual_nn4 &&
test_cmp expect_nn4 actual_nn4
ok 6 - verify contents of non-notes after git-notes
# passed all 6 test(s)
1..6
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3301-notes.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3301-notes/.git/
expecting success of 3301.1 'cannot annotate non-existing HEAD':
test_must_fail env MSG=3 git notes add
fatal: failed to resolve 'HEAD' as a valid ref.
ok 1 - cannot annotate non-existing HEAD
expecting success of 3301.2 'setup':
test_commit 1st &&
test_commit 2nd
[master (root-commit) 04ed9a0] 1st
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 1st.t
[master 7a4ca6e] 2nd
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 2nd.t
ok 2 - setup
expecting success of 3301.3 'need valid notes ref':
test_must_fail env MSG=1 GIT_NOTES_REF=/ git notes show &&
test_must_fail env MSG=2 GIT_NOTES_REF=/ git notes show
fatal: refusing to show notes in / (outside of refs/notes/)
fatal: refusing to show notes in / (outside of refs/notes/)
ok 3 - need valid notes ref
expecting success of 3301.4 'refusing to add notes in refs/heads/':
test_must_fail env MSG=1 GIT_NOTES_REF=refs/heads/bogus git notes add
fatal: refusing to add notes in refs/heads/bogus (outside of refs/notes/)
ok 4 - refusing to add notes in refs/heads/
expecting success of 3301.5 'refusing to edit notes in refs/remotes/':
test_must_fail env MSG=1 GIT_NOTES_REF=refs/heads/bogus git notes edit
fatal: refusing to edit notes in refs/heads/bogus (outside of refs/notes/)
ok 5 - refusing to edit notes in refs/remotes/
expecting success of 3301.6 'handle empty notes gracefully':
test_expect_code 1 git notes show
error: no note found for object 7a4ca6ee52a974a66cbaa78e33214535dff1d691.
ok 6 - handle empty notes gracefully
expecting success of 3301.7 'show non-existent notes entry with %N':
test_write_lines A B >expect &&
git show -s --format="A%n%NB" >actual &&
test_cmp expect actual
ok 7 - show non-existent notes entry with %N
expecting success of 3301.8 'create notes':
MSG=b4 git notes add &&
test_path_is_missing .git/NOTES_EDITMSG &&
git ls-tree -r refs/notes/commits >actual &&
test_line_count = 1 actual &&
echo b4 >expect &&
git notes show >actual &&
test_cmp expect actual &&
git show HEAD^ &&
test_must_fail git notes show HEAD^
b4
commit 04ed9a0bbe0285f41c913e2002cb09ef8449d4a6
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:13:13 2005 -0700
1st
diff --git a/1st.t b/1st.t
new file mode 100644
index 0000000..2a5d015
--- /dev/null
+++ b/1st.t
@@ -0,0 +1 @@
+1st
error: no note found for object 04ed9a0bbe0285f41c913e2002cb09ef8449d4a6.
ok 8 - create notes
expecting success of 3301.9 'show notes entry with %N':
test_write_lines A b4 B >expect &&
git show -s --format="A%n%NB" >actual &&
test_cmp expect actual
ok 9 - show notes entry with %N
expecting success of 3301.10 'create reflog entry':
ref=$(git rev-parse --short refs/notes/commits) &&
cat <<-EOF >expect &&
$ref refs/notes/commits@{0}: notes: Notes added by 'git notes add'
EOF
git reflog show refs/notes/commits >actual &&
test_cmp expect actual
ok 10 - create reflog entry
expecting success of 3301.11 'edit existing notes':
MSG=b3 git notes edit &&
test_path_is_missing .git/NOTES_EDITMSG &&
git ls-tree -r refs/notes/commits >actual &&
test_line_count = 1 actual &&
echo b3 >expect &&
git notes show >actual &&
test_cmp expect actual &&
git show HEAD^ &&
test_must_fail git notes show HEAD^
b3
commit 04ed9a0bbe0285f41c913e2002cb09ef8449d4a6
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:13:13 2005 -0700
1st
diff --git a/1st.t b/1st.t
new file mode 100644
index 0000000..2a5d015
--- /dev/null
+++ b/1st.t
@@ -0,0 +1 @@
+1st
error: no note found for object 04ed9a0bbe0285f41c913e2002cb09ef8449d4a6.
ok 11 - edit existing notes
expecting success of 3301.12 'show notes from treeish':
echo b3 >expect &&
git notes --ref commits^{tree} show >actual &&
test_cmp expect actual &&
echo b4 >expect &&
git notes --ref commits@{1} show >actual &&
test_cmp expect actual
ok 12 - show notes from treeish
expecting success of 3301.13 'cannot edit notes from non-ref':
test_must_fail git notes --ref commits^{tree} edit &&
test_must_fail git notes --ref commits@{1} edit
fatal: Cannot use notes ref refs/notes/commits^{tree}
fatal: Cannot use notes ref refs/notes/commits@{1}
ok 13 - cannot edit notes from non-ref
expecting success of 3301.14 'cannot "git notes add -m" where notes already exists':
test_must_fail git notes add -m "b2" &&
test_path_is_missing .git/NOTES_EDITMSG &&
git ls-tree -r refs/notes/commits >actual &&
test_line_count = 1 actual &&
echo b3 >expect &&
git notes show >actual &&
test_cmp expect actual &&
git show HEAD^ &&
test_must_fail git notes show HEAD^
error: Cannot add notes. Found existing notes for object 7a4ca6ee52a974a66cbaa78e33214535dff1d691. Use '-f' to overwrite existing notes
commit 04ed9a0bbe0285f41c913e2002cb09ef8449d4a6
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:13:13 2005 -0700
1st
diff --git a/1st.t b/1st.t
new file mode 100644
index 0000000..2a5d015
--- /dev/null
+++ b/1st.t
@@ -0,0 +1 @@
+1st
error: no note found for object 04ed9a0bbe0285f41c913e2002cb09ef8449d4a6.
ok 14 - cannot "git notes add -m" where notes already exists
expecting success of 3301.15 'can overwrite existing note with "git notes add -f -m"':
git notes add -f -m "b1" &&
test_path_is_missing .git/NOTES_EDITMSG &&
git ls-tree -r refs/notes/commits >actual &&
test_line_count = 1 actual &&
echo b1 >expect &&
git notes show >actual &&
test_cmp expect actual &&
git show HEAD^ &&
test_must_fail git notes show HEAD^
Overwriting existing notes for object 7a4ca6ee52a974a66cbaa78e33214535dff1d691
commit 04ed9a0bbe0285f41c913e2002cb09ef8449d4a6
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:13:13 2005 -0700
1st
diff --git a/1st.t b/1st.t
new file mode 100644
index 0000000..2a5d015
--- /dev/null
+++ b/1st.t
@@ -0,0 +1 @@
+1st
error: no note found for object 04ed9a0bbe0285f41c913e2002cb09ef8449d4a6.
ok 15 - can overwrite existing note with "git notes add -f -m"
expecting success of 3301.16 'add w/no options on existing note morphs into edit':
MSG=b2 git notes add &&
test_path_is_missing .git/NOTES_EDITMSG &&
git ls-tree -r refs/notes/commits >actual &&
test_line_count = 1 actual &&
echo b2 >expect &&
git notes show >actual &&
test_cmp expect actual &&
git show HEAD^ &&
test_must_fail git notes show HEAD^
b2
commit 04ed9a0bbe0285f41c913e2002cb09ef8449d4a6
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:13:13 2005 -0700
1st
diff --git a/1st.t b/1st.t
new file mode 100644
index 0000000..2a5d015
--- /dev/null
+++ b/1st.t
@@ -0,0 +1 @@
+1st
error: no note found for object 04ed9a0bbe0285f41c913e2002cb09ef8449d4a6.
ok 16 - add w/no options on existing note morphs into edit
expecting success of 3301.17 'can overwrite existing note with "git notes add -f"':
MSG=b1 git notes add -f &&
test_path_is_missing .git/NOTES_EDITMSG &&
git ls-tree -r refs/notes/commits >actual &&
test_line_count = 1 actual &&
echo b1 >expect &&
git notes show >actual &&
test_cmp expect actual &&
git show HEAD^ &&
test_must_fail git notes show HEAD^
Overwriting existing notes for object 7a4ca6ee52a974a66cbaa78e33214535dff1d691
b1
commit 04ed9a0bbe0285f41c913e2002cb09ef8449d4a6
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:13:13 2005 -0700
1st
diff --git a/1st.t b/1st.t
new file mode 100644
index 0000000..2a5d015
--- /dev/null
+++ b/1st.t
@@ -0,0 +1 @@
+1st
error: no note found for object 04ed9a0bbe0285f41c913e2002cb09ef8449d4a6.
ok 17 - can overwrite existing note with "git notes add -f"
expecting success of 3301.18 'show notes':
commit=$(git rev-parse HEAD) &&
cat >expect <<-EOF &&
commit $commit
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
${indent}2nd
Notes:
${indent}b1
EOF
git cat-file commit HEAD >commits &&
! grep b1 commits &&
git log -1 >actual &&
test_cmp expect actual
ok 18 - show notes
expecting success of 3301.19 'show multi-line notes':
test_commit 3rd &&
MSG="b3${LF}c3c3c3c3${LF}d3d3d3" git notes add &&
commit=$(git rev-parse HEAD) &&
cat >expect-multiline <<-EOF &&
commit $commit
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
${indent}3rd
Notes:
${indent}b3
${indent}c3c3c3c3
${indent}d3d3d3
EOF
cat expect >>expect-multiline &&
git log -2 >actual &&
test_cmp expect-multiline actual
[master d07d62e] 3rd
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 3rd.t
b3
c3c3c3c3
d3d3d3
ok 19 - show multi-line notes
expecting success of 3301.20 'show -F notes':
test_commit 4th &&
echo "xyzzy" >note5 &&
git notes add -F note5 &&
commit=$(git rev-parse HEAD) &&
cat >expect-F <<-EOF &&
commit $commit
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
${indent}4th
Notes:
${indent}xyzzy
EOF
cat expect-multiline >>expect-F &&
git log -3 >actual &&
test_cmp expect-F actual
[master 0f7aa3e] 4th
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 4th.t
ok 20 - show -F notes
expecting success of 3301.21 'Re-adding -F notes without -f fails':
echo "zyxxy" >note5 &&
test_must_fail git notes add -F note5 &&
git log -3 >actual &&
test_cmp expect-F actual
error: Cannot add notes. Found existing notes for object 0f7aa3ec6325aeb88b910453bb3eb37c49d75c11. Use '-f' to overwrite existing notes
ok 21 - Re-adding -F notes without -f fails
expecting success of 3301.22 'git log --pretty=raw does not show notes':
commit=$(git rev-parse HEAD) &&
tree=$(git rev-parse HEAD^{tree}) &&
parent=$(git rev-parse HEAD^) &&
cat >expect <<-EOF &&
commit $commit
tree $tree
parent $parent
author A U Thor <author@example.com> 1112912173 -0700
committer C O Mitter <committer@example.com> 1112912173 -0700
${indent}4th
EOF
git log -1 --pretty=raw >actual &&
test_cmp expect actual
ok 22 - git log --pretty=raw does not show notes
expecting success of 3301.23 'git log --show-notes':
cat >>expect <<-EOF &&
Notes:
${indent}xyzzy
EOF
git log -1 --pretty=raw --show-notes >actual &&
test_cmp expect actual
ok 23 - git log --show-notes
expecting success of 3301.24 'git log --no-notes':
git log -1 --no-notes >actual &&
! grep xyzzy actual
ok 24 - git log --no-notes
expecting success of 3301.25 'git format-patch does not show notes':
git format-patch -1 --stdout >actual &&
! grep xyzzy actual
ok 25 - git format-patch does not show notes
expecting success of 3301.26 'git format-patch --show-notes does show notes':
git format-patch --show-notes -1 --stdout >actual &&
grep xyzzy actual
xyzzy
ok 26 - git format-patch --show-notes does show notes
expecting success of 3301.27 'git show does show notes':
git show $p >actual &&
eval "$negate grep xyzzy actual"
xyzzy
ok 27 - git show does show notes
expecting success of 3301.28 'git show --pretty does not show notes':
git show $p >actual &&
eval "$negate grep xyzzy actual"
ok 28 - git show --pretty does not show notes
expecting success of 3301.29 'git show --pretty=raw does not show notes':
git show $p >actual &&
eval "$negate grep xyzzy actual"
ok 29 - git show --pretty=raw does not show notes
expecting success of 3301.30 'git show --pretty=short does not show notes':
git show $p >actual &&
eval "$negate grep xyzzy actual"
ok 30 - git show --pretty=short does not show notes
expecting success of 3301.31 'git show --pretty=medium does not show notes':
git show $p >actual &&
eval "$negate grep xyzzy actual"
ok 31 - git show --pretty=medium does not show notes
expecting success of 3301.32 'git show --pretty=full does not show notes':
git show $p >actual &&
eval "$negate grep xyzzy actual"
ok 32 - git show --pretty=full does not show notes
expecting success of 3301.33 'git show --pretty=fuller does not show notes':
git show $p >actual &&
eval "$negate grep xyzzy actual"
ok 33 - git show --pretty=fuller does not show notes
expecting success of 3301.34 'git show --pretty=format:%s does not show notes':
git show $p >actual &&
eval "$negate grep xyzzy actual"
ok 34 - git show --pretty=format:%s does not show notes
expecting success of 3301.35 'git show --oneline does not show notes':
git show $p >actual &&
eval "$negate grep xyzzy actual"
ok 35 - git show --oneline does not show notes
expecting success of 3301.36 'setup alternate notes ref':
git notes --ref=alternate add -m alternate
ok 36 - setup alternate notes ref
expecting success of 3301.37 'git log --notes shows default notes':
git log -1 --notes >actual &&
grep xyzzy actual &&
! grep alternate actual
xyzzy
ok 37 - git log --notes shows default notes
expecting success of 3301.38 'git log --notes=X shows only X':
git log -1 --notes=alternate >actual &&
! grep xyzzy actual &&
grep alternate actual
Notes (alternate):
alternate
ok 38 - git log --notes=X shows only X
expecting success of 3301.39 'git log --notes --notes=X shows both':
git log -1 --notes --notes=alternate >actual &&
grep xyzzy actual &&
grep alternate actual
xyzzy
Notes (alternate):
alternate
ok 39 - git log --notes --notes=X shows both
expecting success of 3301.40 'git log --no-notes resets default state':
git log -1 --notes --notes=alternate \
--no-notes --notes=alternate \
>actual &&
! grep xyzzy actual &&
grep alternate actual
Notes (alternate):
alternate
ok 40 - git log --no-notes resets default state
expecting success of 3301.41 'git log --no-notes resets ref list':
git log -1 --notes --notes=alternate \
--no-notes --notes \
>actual &&
grep xyzzy actual &&
! grep alternate actual
xyzzy
ok 41 - git log --no-notes resets ref list
expecting success of 3301.42 'show -m notes':
test_commit 5th &&
git notes add -m spam -m "foo${LF}bar${LF}baz" &&
commit=$(git rev-parse HEAD) &&
cat >expect-m <<-EOF &&
commit $commit
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:17:13 2005 -0700
${indent}5th
Notes:
${indent}spam
${indent}
${indent}foo
${indent}bar
${indent}baz
EOF
cat expect-F >>expect-m &&
git log -4 >actual &&
test_cmp expect-m actual
[master 7f9ad88] 5th
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 5th.t
ok 42 - show -m notes
expecting success of 3301.43 'remove note with add -f -F /dev/null':
git notes add -f -F /dev/null &&
commit=$(git rev-parse HEAD) &&
cat >expect-rm-F <<-EOF &&
commit $commit
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:17:13 2005 -0700
${indent}5th
EOF
cat expect-F >>expect-rm-F &&
git log -4 >actual &&
test_cmp expect-rm-F actual &&
test_must_fail git notes show
Overwriting existing notes for object 7f9ad8836c775acb134c0a055fc55fb4cd1ba361
Removing note for object 7f9ad8836c775acb134c0a055fc55fb4cd1ba361
error: no note found for object 7f9ad8836c775acb134c0a055fc55fb4cd1ba361.
ok 43 - remove note with add -f -F /dev/null
expecting success of 3301.44 'do not create empty note with -m ""':
git notes add -m "" &&
git log -4 >actual &&
test_cmp expect-rm-F actual &&
test_must_fail git notes show
Removing note for object 7f9ad8836c775acb134c0a055fc55fb4cd1ba361
error: no note found for object 7f9ad8836c775acb134c0a055fc55fb4cd1ba361.
ok 44 - do not create empty note with -m ""
expecting success of 3301.45 'create note with combination of -m and -F':
test_when_finished git notes remove HEAD &&
cat >expect-combine_m_and_F <<-EOF &&
foo
xyzzy
bar
zyxxy
baz
EOF
echo "xyzzy" >note_a &&
echo "zyxxy" >note_b &&
git notes add -m "foo" -F note_a -m "bar" -F note_b -m "baz" &&
git notes show >actual &&
test_cmp expect-combine_m_and_F actual
Removing note for object HEAD
ok 45 - create note with combination of -m and -F
expecting success of 3301.46 'create note with combination of -m and -F and --separator':
test_when_finished git notes remove HEAD &&
cat >expect-combine_m_and_F <<-\EOF &&
foo
-------
xyzzy
-------
bar
-------
zyxxy
-------
baz
EOF
echo "xyzzy" >note_a &&
echo "zyxxy" >note_b &&
git notes add -m "foo" -F note_a -m "bar" -F note_b -m "baz" --separator="-------" &&
git notes show >actual &&
test_cmp expect-combine_m_and_F actual
Removing note for object HEAD
ok 46 - create note with combination of -m and -F and --separator
expecting success of 3301.47 'create note with combination of -m and -F and --no-separator':
cat >expect-combine_m_and_F <<-\EOF &&
foo
xyzzy
bar
zyxxy
baz
EOF
echo "xyzzy" >note_a &&
echo "zyxxy" >note_b &&
git notes add -m "foo" -F note_a -m "bar" -F note_b -m "baz" --no-separator &&
git notes show >actual &&
test_cmp expect-combine_m_and_F actual
ok 47 - create note with combination of -m and -F and --no-separator
expecting success of 3301.48 'remove note with "git notes remove"':
git notes remove HEAD^ &&
git notes remove &&
commit=$(git rev-parse HEAD) &&
parent=$(git rev-parse HEAD^) &&
cat >expect-rm-remove <<-EOF &&
commit $commit
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:17:13 2005 -0700
${indent}5th
commit $parent
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
${indent}4th
EOF
cat expect-multiline >>expect-rm-remove &&
git log -4 >actual &&
test_cmp expect-rm-remove actual &&
test_must_fail git notes show HEAD^
Removing note for object HEAD^
Removing note for object HEAD
error: no note found for object 0f7aa3ec6325aeb88b910453bb3eb37c49d75c11.
ok 48 - remove note with "git notes remove"
expecting success of 3301.49 'removing non-existing note should not create new commit':
git rev-parse --verify refs/notes/commits >before_commit &&
test_must_fail git notes remove HEAD^ &&
git rev-parse --verify refs/notes/commits >after_commit &&
test_cmp before_commit after_commit
Object HEAD^ has no note
ok 49 - removing non-existing note should not create new commit
expecting success of 3301.50 'removing more than one':
before=$(git rev-parse --verify refs/notes/commits) &&
test_when_finished "git update-ref refs/notes/commits $before" &&
# We have only two -- add another and make sure it stays
git notes add -m "extra" &&
git notes list HEAD >after-removal-expect &&
git notes remove HEAD^^ HEAD^^^ &&
git notes list | sed -e "s/ .*//" >actual &&
test_cmp after-removal-expect actual
Removing note for object HEAD^^
Removing note for object HEAD^^^
ok 50 - removing more than one
expecting success of 3301.51 'removing is atomic':
before=$(git rev-parse --verify refs/notes/commits) &&
test_when_finished "git update-ref refs/notes/commits $before" &&
test_must_fail git notes remove HEAD^^ HEAD^^^ HEAD^ &&
after=$(git rev-parse --verify refs/notes/commits) &&
test "$before" = "$after"
Removing note for object HEAD^^
Removing note for object HEAD^^^
Object HEAD^ has no note
ok 51 - removing is atomic
expecting success of 3301.52 'removing with --ignore-missing':
before=$(git rev-parse --verify refs/notes/commits) &&
test_when_finished "git update-ref refs/notes/commits $before" &&
# We have only two -- add another and make sure it stays
git notes add -m "extra" &&
git notes list HEAD >after-removal-expect &&
git notes remove --ignore-missing HEAD^^ HEAD^^^ HEAD^ &&
git notes list | sed -e "s/ .*//" >actual &&
test_cmp after-removal-expect actual
Removing note for object HEAD^^
Removing note for object HEAD^^^
Object HEAD^ has no note
ok 52 - removing with --ignore-missing
expecting success of 3301.53 'removing with --ignore-missing but bogus ref':
before=$(git rev-parse --verify refs/notes/commits) &&
test_when_finished "git update-ref refs/notes/commits $before" &&
test_must_fail git notes remove --ignore-missing HEAD^^ HEAD^^^ NO-SUCH-COMMIT &&
after=$(git rev-parse --verify refs/notes/commits) &&
test "$before" = "$after"
Removing note for object HEAD^^
Removing note for object HEAD^^^
error: Failed to resolve 'NO-SUCH-COMMIT' as a valid ref.
ok 53 - removing with --ignore-missing but bogus ref
expecting success of 3301.54 'remove reads from --stdin':
before=$(git rev-parse --verify refs/notes/commits) &&
test_when_finished "git update-ref refs/notes/commits $before" &&
# We have only two -- add another and make sure it stays
git notes add -m "extra" &&
git notes list HEAD >after-removal-expect &&
git rev-parse HEAD^^ HEAD^^^ >input &&
git notes remove --stdin <input &&
git notes list | sed -e "s/ .*//" >actual &&
test_cmp after-removal-expect actual
Removing note for object d07d62e5208f22eb5695e7eb47667dc8b9860290
Removing note for object 7a4ca6ee52a974a66cbaa78e33214535dff1d691
ok 54 - remove reads from --stdin
expecting success of 3301.55 'remove --stdin is also atomic':
before=$(git rev-parse --verify refs/notes/commits) &&
test_when_finished "git update-ref refs/notes/commits $before" &&
git rev-parse HEAD^^ HEAD^^^ HEAD^ >input &&
test_must_fail git notes remove --stdin <input &&
after=$(git rev-parse --verify refs/notes/commits) &&
test "$before" = "$after"
Removing note for object d07d62e5208f22eb5695e7eb47667dc8b9860290
Removing note for object 7a4ca6ee52a974a66cbaa78e33214535dff1d691
Object 0f7aa3ec6325aeb88b910453bb3eb37c49d75c11 has no note
ok 55 - remove --stdin is also atomic
expecting success of 3301.56 'removing with --stdin --ignore-missing':
before=$(git rev-parse --verify refs/notes/commits) &&
test_when_finished "git update-ref refs/notes/commits $before" &&
# We have only two -- add another and make sure it stays
git notes add -m "extra" &&
git notes list HEAD >after-removal-expect &&
git rev-parse HEAD^^ HEAD^^^ HEAD^ >input &&
git notes remove --ignore-missing --stdin <input &&
git notes list | sed -e "s/ .*//" >actual &&
test_cmp after-removal-expect actual
Removing note for object d07d62e5208f22eb5695e7eb47667dc8b9860290
Removing note for object 7a4ca6ee52a974a66cbaa78e33214535dff1d691
Object 0f7aa3ec6325aeb88b910453bb3eb37c49d75c11 has no note
ok 56 - removing with --stdin --ignore-missing
expecting success of 3301.57 'list notes with "git notes list"':
commit_2=$(git rev-parse 2nd) &&
commit_3=$(git rev-parse 3rd) &&
note_2=$(git rev-parse refs/notes/commits:$commit_2) &&
note_3=$(git rev-parse refs/notes/commits:$commit_3) &&
sort -t" " -k2 >expect <<-EOF &&
$note_2 $commit_2
$note_3 $commit_3
EOF
git notes list >actual &&
test_cmp expect actual
ok 57 - list notes with "git notes list"
expecting success of 3301.58 'list notes with "git notes"':
git notes >actual &&
test_cmp expect actual
ok 58 - list notes with "git notes"
expecting success of 3301.59 '"git notes" without subcommand does not take arguments':
test_expect_code 129 git notes HEAD^^ 2>err &&
grep "^error: unknown subcommand" err
error: unknown subcommand: `HEAD^^'
ok 59 - "git notes" without subcommand does not take arguments
expecting success of 3301.60 'list specific note with "git notes list <object>"':
git rev-parse refs/notes/commits:$commit_3 >expect &&
git notes list HEAD^^ >actual &&
test_cmp expect actual
ok 60 - list specific note with "git notes list <object>"
expecting success of 3301.61 'listing non-existing notes fails':
test_must_fail git notes list HEAD >actual &&
test_must_be_empty actual
error: no note found for object 7f9ad8836c775acb134c0a055fc55fb4cd1ba361.
ok 61 - listing non-existing notes fails
expecting success of 3301.62 'append: specify a separator with an empty arg':
test_when_finished git notes remove HEAD &&
cat >expect <<-\EOF &&
notes-1
notes-2
EOF
git notes add -m "notes-1" &&
git notes append --separator="" -m "notes-2" &&
git notes show >actual &&
test_cmp expect actual
Removing note for object HEAD
ok 62 - append: specify a separator with an empty arg
expecting success of 3301.63 'append: specify a separator without arg':
test_when_finished git notes remove HEAD &&
cat >expect <<-\EOF &&
notes-1
notes-2
EOF
git notes add -m "notes-1" &&
git notes append --separator -m "notes-2" &&
git notes show >actual &&
test_cmp expect actual
Removing note for object HEAD
ok 63 - append: specify a separator without arg
expecting success of 3301.64 'append: specify as --no-separator':
test_when_finished git notes remove HEAD &&
cat >expect <<-\EOF &&
notes-1
notes-2
EOF
git notes add -m "notes-1" &&
git notes append --no-separator -m "notes-2" &&
git notes show >actual &&
test_cmp expect actual
Removing note for object HEAD
ok 64 - append: specify as --no-separator
expecting success of 3301.65 'append: specify separator with line break':
test_when_finished git notes remove HEAD &&
cat >expect <<-\EOF &&
notes-1
-------
notes-2
EOF
git notes add -m "notes-1" &&
git notes append --separator="-------$LF" -m "notes-2" &&
git notes show >actual &&
test_cmp expect actual
Removing note for object HEAD
ok 65 - append: specify separator with line break
expecting success of 3301.66 'append: specify separator without line break':
test_when_finished git notes remove HEAD &&
cat >expect <<-\EOF &&
notes-1
-------
notes-2
EOF
git notes add -m "notes-1" &&
git notes append --separator="-------" -m "notes-2" &&
git notes show >actual &&
test_cmp expect actual
Removing note for object HEAD
ok 66 - append: specify separator without line break
expecting success of 3301.67 'append: specify separator with multiple messages':
test_when_finished git notes remove HEAD &&
cat >expect <<-\EOF &&
notes-1
-------
notes-2
-------
notes-3
EOF
git notes add -m "notes-1" &&
git notes append --separator="-------" -m "notes-2" -m "notes-3" &&
git notes show >actual &&
test_cmp expect actual
Removing note for object HEAD
ok 67 - append: specify separator with multiple messages
expecting success of 3301.68 'append note with combination of -m and -F and --separator':
test_when_finished git notes remove HEAD &&
cat >expect-combine_m_and_F <<-\EOF &&
m-notes-1
-------
f-notes-1
-------
m-notes-2
-------
f-notes-2
-------
m-notes-3
EOF
echo "f-notes-1" >note_a &&
echo "f-notes-2" >note_b &&
git notes append -m "m-notes-1" -F note_a -m "m-notes-2" -F note_b -m "m-notes-3" --separator="-------" &&
git notes show >actual &&
test_cmp expect-combine_m_and_F actual
Removing note for object HEAD
ok 68 - append note with combination of -m and -F and --separator
expecting success of 3301.69 'append to existing note with "git notes append"':
cat >expect <<-EOF &&
Initial set of notes
More notes appended with git notes append
EOF
git notes add -m "Initial set of notes" &&
git notes append -m "More notes appended with git notes append" &&
git notes show >actual &&
test_cmp expect actual
ok 69 - append to existing note with "git notes append"
expecting success of 3301.70 '"git notes list" does not expand to "git notes list HEAD"':
commit_5=$(git rev-parse 5th) &&
note_5=$(git rev-parse refs/notes/commits:$commit_5) &&
sort -t" " -k2 >expect_list <<-EOF &&
$note_2 $commit_2
$note_3 $commit_3
$note_5 $commit_5
EOF
git notes list >actual &&
test_cmp expect_list actual
ok 70 - "git notes list" does not expand to "git notes list HEAD"
expecting success of 3301.71 'appending empty string does not change existing note':
git notes append -m "" &&
git notes show >actual &&
test_cmp expect actual
ok 71 - appending empty string does not change existing note
expecting success of 3301.72 'git notes append == add when there is no existing note':
git notes remove HEAD &&
test_must_fail git notes list HEAD &&
git notes append -m "Initial set of notes${LF}${LF}More notes appended with git notes append" &&
git notes show >actual &&
test_cmp expect actual
Removing note for object HEAD
error: no note found for object 7f9ad8836c775acb134c0a055fc55fb4cd1ba361.
ok 72 - git notes append == add when there is no existing note
expecting success of 3301.73 'appending empty string to non-existing note does not create note':
git notes remove HEAD &&
test_must_fail git notes list HEAD &&
git notes append -m "" &&
test_must_fail git notes list HEAD
Removing note for object HEAD
error: no note found for object 7f9ad8836c775acb134c0a055fc55fb4cd1ba361.
Removing note for object 7f9ad8836c775acb134c0a055fc55fb4cd1ba361
error: no note found for object 7f9ad8836c775acb134c0a055fc55fb4cd1ba361.
ok 73 - appending empty string to non-existing note does not create note
expecting success of 3301.74 'create other note on a different notes ref (setup)':
test_commit 6th &&
GIT_NOTES_REF="refs/notes/other" git notes add -m "other note" &&
commit=$(git rev-parse HEAD) &&
cat >expect-not-other <<-EOF &&
commit $commit
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:18:13 2005 -0700
${indent}6th
EOF
cp expect-not-other expect-other &&
cat >>expect-other <<-EOF
Notes (other):
${indent}other note
EOF
[master 2c12533] 6th
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 6th.t
ok 74 - create other note on a different notes ref (setup)
expecting success of 3301.75 'Do not show note on other ref by default':
git log -1 >actual &&
test_cmp expect-not-other actual
ok 75 - Do not show note on other ref by default
expecting success of 3301.76 'Do show note when ref is given in GIT_NOTES_REF':
GIT_NOTES_REF="refs/notes/other" git log -1 >actual &&
test_cmp expect-other actual
ok 76 - Do show note when ref is given in GIT_NOTES_REF
expecting success of 3301.77 'Do show note when ref is given in core.notesRef config':
test_config core.notesRef "refs/notes/other" &&
git log -1 >actual &&
test_cmp expect-other actual
ok 77 - Do show note when ref is given in core.notesRef config
expecting success of 3301.78 'Do not show note when core.notesRef is overridden':
test_config core.notesRef "refs/notes/other" &&
GIT_NOTES_REF="refs/notes/wrong" git log -1 >actual &&
test_cmp expect-not-other actual
ok 78 - Do not show note when core.notesRef is overridden
expecting success of 3301.79 'Show all notes when notes.displayRef=refs/notes/*':
commit=$(git rev-parse HEAD) &&
parent=$(git rev-parse HEAD^) &&
cat >expect-both <<-EOF &&
commit $commit
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:18:13 2005 -0700
${indent}6th
Notes:
${indent}order test
Notes (other):
${indent}other note
commit $parent
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:17:13 2005 -0700
${indent}5th
Notes:
${indent}replacement for deleted note
EOF
GIT_NOTES_REF=refs/notes/commits git notes add \
-m"replacement for deleted note" HEAD^ &&
GIT_NOTES_REF=refs/notes/commits git notes add -m"order test" &&
test_unconfig core.notesRef &&
test_config notes.displayRef "refs/notes/*" &&
git log -2 >actual &&
test_cmp expect-both actual
ok 79 - Show all notes when notes.displayRef=refs/notes/*
expecting success of 3301.80 'core.notesRef is implicitly in notes.displayRef':
test_config core.notesRef refs/notes/commits &&
test_config notes.displayRef refs/notes/other &&
git log -2 >actual &&
test_cmp expect-both actual
ok 80 - core.notesRef is implicitly in notes.displayRef
expecting success of 3301.81 'notes.displayRef can be given more than once':
test_unconfig core.notesRef &&
test_config notes.displayRef refs/notes/commits &&
git config --add notes.displayRef refs/notes/other &&
git log -2 >actual &&
test_cmp expect-both actual
ok 81 - notes.displayRef can be given more than once
expecting success of 3301.82 'notes.displayRef respects order':
commit=$(git rev-parse HEAD) &&
cat >expect-both-reversed <<-EOF &&
commit $commit
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:18:13 2005 -0700
${indent}6th
Notes (other):
${indent}other note
Notes:
${indent}order test
EOF
test_config core.notesRef refs/notes/other &&
test_config notes.displayRef refs/notes/commits &&
git log -1 >actual &&
test_cmp expect-both-reversed actual
ok 82 - notes.displayRef respects order
expecting success of 3301.83 'notes.displayRef with no value handled gracefully':
test_must_fail git -c notes.displayRef log -0 --notes &&
test_must_fail git -c notes.displayRef diff-tree --notes HEAD
error: missing value for 'notes.displayref'
fatal: unable to parse 'notes.displayref' from command-line config
error: missing value for 'notes.displayref'
fatal: unable to parse 'notes.displayref' from command-line config
ok 83 - notes.displayRef with no value handled gracefully
expecting success of 3301.84 'GIT_NOTES_DISPLAY_REF works':
GIT_NOTES_DISPLAY_REF=refs/notes/commits:refs/notes/other \
git log -2 >actual &&
test_cmp expect-both actual
ok 84 - GIT_NOTES_DISPLAY_REF works
expecting success of 3301.85 'GIT_NOTES_DISPLAY_REF overrides config':
commit=$(git rev-parse HEAD) &&
parent=$(git rev-parse HEAD^) &&
cat >expect-none <<-EOF &&
commit $commit
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:18:13 2005 -0700
${indent}6th
commit $parent
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:17:13 2005 -0700
${indent}5th
EOF
test_config notes.displayRef "refs/notes/*" &&
GIT_NOTES_REF= GIT_NOTES_DISPLAY_REF= git log -2 >actual &&
test_cmp expect-none actual
ok 85 - GIT_NOTES_DISPLAY_REF overrides config
expecting success of 3301.86 '--show-notes=* adds to GIT_NOTES_DISPLAY_REF':
GIT_NOTES_REF= GIT_NOTES_DISPLAY_REF= git log --show-notes=* -2 >actual &&
test_cmp expect-both actual
ok 86 - --show-notes=* adds to GIT_NOTES_DISPLAY_REF
expecting success of 3301.87 '--no-standard-notes':
commit=$(git rev-parse HEAD) &&
cat >expect-commits <<-EOF &&
commit $commit
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:18:13 2005 -0700
${indent}6th
Notes:
${indent}order test
EOF
git log --no-standard-notes --show-notes=commits -1 >actual &&
test_cmp expect-commits actual
ok 87 - --no-standard-notes
expecting success of 3301.88 '--standard-notes':
test_config notes.displayRef "refs/notes/*" &&
git log --no-standard-notes --show-notes=commits \
--standard-notes -2 >actual &&
test_cmp expect-both actual
ok 88 - --standard-notes
expecting success of 3301.89 '--show-notes=ref accumulates':
git log --show-notes=other --show-notes=commits \
--no-standard-notes -1 >actual &&
test_cmp expect-both-reversed actual
ok 89 - --show-notes=ref accumulates
expecting success of 3301.90 'Allow notes on non-commits (trees, blobs, tags)':
test_config core.notesRef refs/notes/other &&
echo "Note on a tree" >expect &&
git notes add -m "Note on a tree" HEAD: &&
git notes show HEAD: >actual &&
test_cmp expect actual &&
echo "Note on a blob" >expect &&
git ls-tree --name-only HEAD >files &&
filename=$(head -n1 files) &&
git notes add -m "Note on a blob" HEAD:$filename &&
git notes show HEAD:$filename >actual &&
test_cmp expect actual &&
echo "Note on a tag" >expect &&
git tag -a -m "This is an annotated tag" foobar HEAD^ &&
git notes add -m "Note on a tag" foobar &&
git notes show foobar >actual &&
test_cmp expect actual
ok 90 - Allow notes on non-commits (trees, blobs, tags)
expecting success of 3301.91 'create note from other note with "git notes add -C"':
test_commit 7th &&
commit=$(git rev-parse HEAD) &&
cat >expect <<-EOF &&
commit $commit
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:19:13 2005 -0700
${indent}7th
Notes:
${indent}order test
EOF
note=$(git notes list HEAD^) &&
git notes add -C $note &&
git log -1 >actual &&
test_cmp expect actual &&
git notes list HEAD^ >expect &&
git notes list HEAD >actual &&
test_cmp expect actual
[master fb01e0c] 7th
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 7th.t
ok 91 - create note from other note with "git notes add -C"
expecting success of 3301.92 'create note from non-existing note with "git notes add -C" fails':
test_commit 8th &&
test_must_fail git notes add -C deadbeef &&
test_must_fail git notes list HEAD
[master 9a4c31c] 8th
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 8th.t
fatal: failed to resolve 'deadbeef' as a valid ref.
error: no note found for object 9a4c31c7f722b5d517e92c64e932dd751e1413bf.
ok 92 - create note from non-existing note with "git notes add -C" fails
expecting success of 3301.93 'create note from non-blob with "git notes add -C" fails':
commit=$(git rev-parse --verify HEAD) &&
tree=$(git rev-parse --verify HEAD:) &&
test_must_fail git notes add -C $commit &&
test_must_fail git notes add -C $tree &&
test_must_fail git notes list HEAD
fatal: cannot read note data from non-blob object '9a4c31c7f722b5d517e92c64e932dd751e1413bf'.
fatal: cannot read note data from non-blob object '37f6454412e4ed89ae47782f956ed0fb573892f6'.
error: no note found for object 9a4c31c7f722b5d517e92c64e932dd751e1413bf.
ok 93 - create note from non-blob with "git notes add -C" fails
expecting success of 3301.94 'create note from blob with "git notes add -C" reuses blob id':
commit=$(git rev-parse HEAD) &&
cat >expect <<-EOF &&
commit $commit
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:20:13 2005 -0700
${indent}8th
Notes:
${indent}This is a blob object
EOF
echo "This is a blob object" | git hash-object -w --stdin >blob &&
git notes add -C $(cat blob) &&
git log -1 >actual &&
test_cmp expect actual &&
git notes list HEAD >actual &&
test_cmp blob actual
ok 94 - create note from blob with "git notes add -C" reuses blob id
expecting success of 3301.95 'create note from blob with "-C", also specify "-m", "-F" and "--separator"':
# 8th will be reuseed in following tests, so rollback when the test is done
test_when_finished "git notes remove && git notes add -C $(cat blob)" &&
commit=$(git rev-parse HEAD) &&
cat >expect <<-EOF &&
commit $commit
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:20:13 2005 -0700
${indent}8th
Notes:
${indent}This is a blob object
${indent}-------
${indent}This is created by -m
${indent}-------
${indent}This is created by -F
EOF
git notes remove &&
echo "This is a blob object" | git hash-object -w --stdin >blob &&
echo "This is created by -F" >note_a &&
git notes add -C $(cat blob) -m "This is created by -m" -F note_a --separator="-------" &&
git log -1 >actual &&
test_cmp expect actual
Removing note for object HEAD
Removing note for object HEAD
ok 95 - create note from blob with "-C", also specify "-m", "-F" and "--separator"
expecting success of 3301.96 'create note from other note with "git notes add -c"':
test_commit 9th &&
commit=$(git rev-parse HEAD) &&
cat >expect <<-EOF &&
commit $commit
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:21:13 2005 -0700
${indent}9th
Notes:
${indent}yet another note
EOF
note=$(git notes list HEAD^^) &&
MSG="yet another note" git notes add -c $note &&
git log -1 >actual &&
test_cmp expect actual
[master 2e0db4b] 9th
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 9th.t
yet another note
ok 96 - create note from other note with "git notes add -c"
expecting success of 3301.97 'create note from non-existing note with "git notes add -c" fails':
test_commit 10th &&
test_must_fail env MSG="yet another note" git notes add -c deadbeef &&
test_must_fail git notes list HEAD
[master 7c3b87a] 10th
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 10th.t
fatal: failed to resolve 'deadbeef' as a valid ref.
error: no note found for object 7c3b87ab368f81e11b1ea87b2ab99a71ccd25406.
ok 97 - create note from non-existing note with "git notes add -c" fails
expecting success of 3301.98 'append to note from other note with "git notes append -C"':
commit=$(git rev-parse HEAD^) &&
cat >expect <<-EOF &&
commit $commit
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:21:13 2005 -0700
${indent}9th
Notes:
${indent}yet another note
${indent}
${indent}yet another note
EOF
note=$(git notes list HEAD^) &&
git notes append -C $note HEAD^ &&
git log -1 HEAD^ >actual &&
test_cmp expect actual
ok 98 - append to note from other note with "git notes append -C"
expecting success of 3301.99 'create note from other note with "git notes append -c"':
commit=$(git rev-parse HEAD) &&
cat >expect <<-EOF &&
commit $commit
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:22:13 2005 -0700
${indent}10th
Notes:
${indent}other note
EOF
note=$(git notes list HEAD^) &&
MSG="other note" git notes append -c $note &&
git log -1 >actual &&
test_cmp expect actual
other note
ok 99 - create note from other note with "git notes append -c"
expecting success of 3301.100 'append to note from other note with "git notes append -c"':
commit=$(git rev-parse HEAD) &&
cat >expect <<-EOF &&
commit $commit
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:22:13 2005 -0700
${indent}10th
Notes:
${indent}other note
${indent}
${indent}yet another note
EOF
note=$(git notes list HEAD) &&
MSG="yet another note" git notes append -c $note &&
git log -1 >actual &&
test_cmp expect actual
yet another note
ok 100 - append to note from other note with "git notes append -c"
expecting success of 3301.101 'copy note with "git notes copy"':
commit=$(git rev-parse 4th) &&
cat >expect <<-EOF &&
commit $commit
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
${indent}4th
Notes:
${indent}This is a blob object
EOF
git notes copy 8th 4th &&
git log 3rd..4th >actual &&
test_cmp expect actual &&
git notes list 4th >expect &&
git notes list 8th >actual &&
test_cmp expect actual
ok 101 - copy note with "git notes copy"
expecting success of 3301.102 'copy note with "git notes copy" with default':
test_commit 11th &&
commit=$(git rev-parse HEAD) &&
cat >expect <<-EOF &&
commit $commit
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:23:13 2005 -0700
${indent}11th
Notes:
${indent}other note
${indent}
${indent}yet another note
EOF
git notes copy HEAD^ &&
git log -1 >actual &&
test_cmp expect actual &&
git notes list HEAD^ >expect &&
git notes list HEAD >actual &&
test_cmp expect actual
[master a446fff] 11th
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 11th.t
ok 102 - copy note with "git notes copy" with default
expecting success of 3301.103 'prevent overwrite with "git notes copy"':
test_must_fail git notes copy HEAD~2 HEAD &&
cat >expect <<-EOF &&
commit $commit
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:23:13 2005 -0700
${indent}11th
Notes:
${indent}other note
${indent}
${indent}yet another note
EOF
git log -1 >actual &&
test_cmp expect actual &&
git notes list HEAD^ >expect &&
git notes list HEAD >actual &&
test_cmp expect actual
error: Cannot copy notes. Found existing notes for object a446fff8777efdc6eb8f4b7c8a5ff699484df0d5. Use '-f' to overwrite existing notes
ok 103 - prevent overwrite with "git notes copy"
expecting success of 3301.104 'allow overwrite with "git notes copy -f"':
commit=$(git rev-parse HEAD) &&
cat >expect <<-EOF &&
commit $commit
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:23:13 2005 -0700
${indent}11th
Notes:
${indent}This is a blob object
EOF
git notes copy -f HEAD~3 HEAD &&
git log -1 >actual &&
test_cmp expect actual &&
git notes list HEAD~3 >expect &&
git notes list HEAD >actual &&
test_cmp expect actual
Overwriting existing notes for object a446fff8777efdc6eb8f4b7c8a5ff699484df0d5
ok 104 - allow overwrite with "git notes copy -f"
expecting success of 3301.105 'allow overwrite with "git notes copy -f" with default':
commit=$(git rev-parse HEAD) &&
cat >expect <<-EOF &&
commit $commit
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:23:13 2005 -0700
${indent}11th
Notes:
${indent}yet another note
${indent}
${indent}yet another note
EOF
git notes copy -f HEAD~2 &&
git log -1 >actual &&
test_cmp expect actual &&
git notes list HEAD~2 >expect &&
git notes list HEAD >actual &&
test_cmp expect actual
Overwriting existing notes for object a446fff8777efdc6eb8f4b7c8a5ff699484df0d5
ok 105 - allow overwrite with "git notes copy -f" with default
expecting success of 3301.106 'cannot copy note from object without notes':
test_commit 12th &&
test_commit 13th &&
test_must_fail git notes copy HEAD^ HEAD
[master 65e263d] 12th
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 12th.t
[master e871aa6] 13th
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 13th.t
error: missing notes on source object 65e263ded02ae4e8839bc151095113737579dc12. Cannot copy.
ok 106 - cannot copy note from object without notes
expecting success of 3301.107 'git notes copy --stdin':
commit=$(git rev-parse HEAD) &&
parent=$(git rev-parse HEAD^) &&
cat >expect <<-EOF &&
commit $commit
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:25:13 2005 -0700
${indent}13th
Notes:
${indent}yet another note
${indent}
${indent}yet another note
commit $parent
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:24:13 2005 -0700
${indent}12th
Notes:
${indent}other note
${indent}
${indent}yet another note
EOF
from=$(git rev-parse HEAD~3) &&
to=$(git rev-parse HEAD^) &&
echo "$from" "$to" >copy &&
from=$(git rev-parse HEAD~2) &&
to=$(git rev-parse HEAD) &&
echo "$from" "$to" >>copy &&
git notes copy --stdin <copy &&
git log -2 >actual &&
test_cmp expect actual &&
git notes list HEAD~2 >expect &&
git notes list HEAD >actual &&
test_cmp expect actual &&
git notes list HEAD~3 >expect &&
git notes list HEAD^ >actual &&
test_cmp expect actual
ok 107 - git notes copy --stdin
expecting success of 3301.108 'git notes copy --for-rewrite (unconfigured)':
test_commit 14th &&
test_commit 15th &&
commit=$(git rev-parse HEAD) &&
parent=$(git rev-parse HEAD^) &&
cat >expect <<-EOF &&
commit $commit
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:27:13 2005 -0700
${indent}15th
commit $parent
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:26:13 2005 -0700
${indent}14th
EOF
from=$(git rev-parse HEAD~3) &&
to=$(git rev-parse HEAD^) &&
echo "$from" "$to" >copy &&
from=$(git rev-parse HEAD~2) &&
to=$(git rev-parse HEAD) &&
echo "$from" "$to" >>copy &&
git notes copy --for-rewrite=foo <copy &&
git log -2 >actual &&
test_cmp expect actual
[master 07c85d7] 14th
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 14th.t
[master 4acf42e] 15th
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 15th.t
ok 108 - git notes copy --for-rewrite (unconfigured)
expecting success of 3301.109 'git notes copy --for-rewrite (enabled)':
commit=$(git rev-parse HEAD) &&
parent=$(git rev-parse HEAD^) &&
cat >expect <<-EOF &&
commit $commit
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:27:13 2005 -0700
${indent}15th
Notes:
${indent}yet another note
${indent}
${indent}yet another note
commit $parent
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:26:13 2005 -0700
${indent}14th
Notes:
${indent}other note
${indent}
${indent}yet another note
EOF
test_config notes.rewriteMode overwrite &&
test_config notes.rewriteRef "refs/notes/*" &&
from=$(git rev-parse HEAD~3) &&
to=$(git rev-parse HEAD^) &&
echo "$from" "$to" >copy &&
from=$(git rev-parse HEAD~2) &&
to=$(git rev-parse HEAD) &&
echo "$from" "$to" >>copy &&
git notes copy --for-rewrite=foo <copy &&
git log -2 >actual &&
test_cmp expect actual
ok 109 - git notes copy --for-rewrite (enabled)
expecting success of 3301.110 'git notes copy --for-rewrite (disabled)':
test_config notes.rewrite.bar false &&
from=$(git rev-parse HEAD~3) &&
to=$(git rev-parse HEAD) &&
echo "$from" "$to" >copy &&
git notes copy --for-rewrite=bar <copy &&
git log -2 >actual &&
test_cmp expect actual
ok 110 - git notes copy --for-rewrite (disabled)
expecting success of 3301.111 'git notes copy --for-rewrite (overwrite)':
commit=$(git rev-parse HEAD) &&
cat >expect <<-EOF &&
commit $commit
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:27:13 2005 -0700
${indent}15th
Notes:
${indent}a fresh note
EOF
git notes add -f -m"a fresh note" HEAD^ &&
test_config notes.rewriteMode overwrite &&
test_config notes.rewriteRef "refs/notes/*" &&
from=$(git rev-parse HEAD^) &&
to=$(git rev-parse HEAD) &&
echo "$from" "$to" >copy &&
git notes copy --for-rewrite=foo <copy &&
git log -1 >actual &&
test_cmp expect actual
Overwriting existing notes for object 07c85d77059393ed0154b8c96906547a59dfcddd
ok 111 - git notes copy --for-rewrite (overwrite)
expecting success of 3301.112 'git notes copy --for-rewrite (ignore)':
test_config notes.rewriteMode ignore &&
test_config notes.rewriteRef "refs/notes/*" &&
from=$(git rev-parse HEAD^) &&
to=$(git rev-parse HEAD) &&
echo "$from" "$to" >copy &&
git notes copy --for-rewrite=foo <copy &&
git log -1 >actual &&
test_cmp expect actual
ok 112 - git notes copy --for-rewrite (ignore)
expecting success of 3301.113 'git notes copy --for-rewrite (append)':
commit=$(git rev-parse HEAD) &&
cat >expect <<-EOF &&
commit $commit
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:27:13 2005 -0700
${indent}15th
Notes:
${indent}a fresh note
${indent}
${indent}another fresh note
EOF
git notes add -f -m"another fresh note" HEAD^ &&
test_config notes.rewriteMode concatenate &&
test_config notes.rewriteRef "refs/notes/*" &&
from=$(git rev-parse HEAD^) &&
to=$(git rev-parse HEAD) &&
echo "$from" "$to" >copy &&
git notes copy --for-rewrite=foo <copy &&
git log -1 >actual &&
test_cmp expect actual
Overwriting existing notes for object 07c85d77059393ed0154b8c96906547a59dfcddd
ok 113 - git notes copy --for-rewrite (append)
expecting success of 3301.114 'git notes copy --for-rewrite (append two to one)':
commit=$(git rev-parse HEAD) &&
cat >expect <<-EOF &&
commit $commit
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:27:13 2005 -0700
${indent}15th
Notes:
${indent}a fresh note
${indent}
${indent}another fresh note
${indent}
${indent}append 1
${indent}
${indent}append 2
EOF
git notes add -f -m"append 1" HEAD^ &&
git notes add -f -m"append 2" HEAD^^ &&
test_config notes.rewriteMode concatenate &&
test_config notes.rewriteRef "refs/notes/*" &&
from=$(git rev-parse HEAD^) &&
to=$(git rev-parse HEAD) &&
echo "$from" "$to" >copy &&
from=$(git rev-parse HEAD^^) &&
to=$(git rev-parse HEAD) &&
echo "$from" "$to" >>copy &&
git notes copy --for-rewrite=foo <copy &&
git log -1 >actual &&
test_cmp expect actual
Overwriting existing notes for object 07c85d77059393ed0154b8c96906547a59dfcddd
Overwriting existing notes for object e871aa61182b1d95d0a6fb75445d891722863b6b
ok 114 - git notes copy --for-rewrite (append two to one)
expecting success of 3301.115 'git notes copy --for-rewrite (append empty)':
git notes remove HEAD^ &&
test_config notes.rewriteMode concatenate &&
test_config notes.rewriteRef "refs/notes/*" &&
from=$(git rev-parse HEAD^) &&
to=$(git rev-parse HEAD) &&
echo "$from" "$to" >copy &&
git notes copy --for-rewrite=foo <copy &&
git log -1 >actual &&
test_cmp expect actual
Removing note for object HEAD^
ok 115 - git notes copy --for-rewrite (append empty)
expecting success of 3301.116 'GIT_NOTES_REWRITE_MODE works':
commit=$(git rev-parse HEAD) &&
cat >expect <<-EOF &&
commit $commit
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:27:13 2005 -0700
${indent}15th
Notes:
${indent}replacement note 1
EOF
test_config notes.rewriteMode concatenate &&
test_config notes.rewriteRef "refs/notes/*" &&
git notes add -f -m"replacement note 1" HEAD^ &&
from=$(git rev-parse HEAD^) &&
to=$(git rev-parse HEAD) &&
echo "$from" "$to" >copy &&
GIT_NOTES_REWRITE_MODE=overwrite git notes copy --for-rewrite=foo <copy &&
git log -1 >actual &&
test_cmp expect actual
ok 116 - GIT_NOTES_REWRITE_MODE works
expecting success of 3301.117 'GIT_NOTES_REWRITE_REF works':
commit=$(git rev-parse HEAD) &&
cat >expect <<-EOF &&
commit $commit
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:27:13 2005 -0700
${indent}15th
Notes:
${indent}replacement note 2
EOF
git notes add -f -m"replacement note 2" HEAD^ &&
test_config notes.rewriteMode overwrite &&
test_unconfig notes.rewriteRef &&
from=$(git rev-parse HEAD^) &&
to=$(git rev-parse HEAD) &&
echo "$from" "$to" >copy &&
GIT_NOTES_REWRITE_REF=refs/notes/commits:refs/notes/other \
git notes copy --for-rewrite=foo <copy &&
git log -1 >actual &&
test_cmp expect actual
Overwriting existing notes for object 07c85d77059393ed0154b8c96906547a59dfcddd
ok 117 - GIT_NOTES_REWRITE_REF works
expecting success of 3301.118 'GIT_NOTES_REWRITE_REF overrides config':
git notes add -f -m"replacement note 3" HEAD^ &&
test_config notes.rewriteMode overwrite &&
test_config notes.rewriteRef refs/notes/other &&
from=$(git rev-parse HEAD^) &&
to=$(git rev-parse HEAD) &&
echo "$from" "$to" >copy &&
GIT_NOTES_REWRITE_REF=refs/notes/commits \
git notes copy --for-rewrite=foo <copy &&
git log -1 >actual &&
grep "replacement note 3" actual
Overwriting existing notes for object 07c85d77059393ed0154b8c96906547a59dfcddd
replacement note 3
ok 118 - GIT_NOTES_REWRITE_REF overrides config
expecting success of 3301.119 'git notes copy diagnoses too many or too few arguments':
test_must_fail git notes copy 2>error &&
test_i18ngrep "too few arguments" error &&
test_must_fail git notes copy one two three 2>error &&
test_i18ngrep "too many arguments" error
error: too few arguments
error: too many arguments
ok 119 - git notes copy diagnoses too many or too few arguments
expecting success of 3301.120 'git notes get-ref expands refs/heads/main to refs/notes/refs/heads/main':
test_unconfig core.notesRef &&
sane_unset GIT_NOTES_REF &&
echo refs/notes/refs/heads/main >expect &&
git notes --ref=refs/heads/main get-ref >actual &&
test_cmp expect actual
ok 120 - git notes get-ref expands refs/heads/main to refs/notes/refs/heads/main
expecting success of 3301.121 'git notes get-ref (no overrides)':
test_unconfig core.notesRef &&
sane_unset GIT_NOTES_REF &&
echo refs/notes/commits >expect &&
git notes get-ref >actual &&
test_cmp expect actual
ok 121 - git notes get-ref (no overrides)
expecting success of 3301.122 'git notes get-ref (core.notesRef)':
test_config core.notesRef refs/notes/foo &&
echo refs/notes/foo >expect &&
git notes get-ref >actual &&
test_cmp expect actual
ok 122 - git notes get-ref (core.notesRef)
expecting success of 3301.123 'git notes get-ref (GIT_NOTES_REF)':
echo refs/notes/bar >expect &&
GIT_NOTES_REF=refs/notes/bar git notes get-ref >actual &&
test_cmp expect actual
ok 123 - git notes get-ref (GIT_NOTES_REF)
expecting success of 3301.124 'git notes get-ref (--ref)':
echo refs/notes/baz >expect &&
GIT_NOTES_REF=refs/notes/bar git notes --ref=baz get-ref >actual &&
test_cmp expect actual
ok 124 - git notes get-ref (--ref)
expecting success of 3301.125 'setup testing of empty notes':
test_unconfig core.notesRef &&
test_commit 16th &&
empty_blob=$(git hash-object -w /dev/null) &&
echo "$empty_blob" >expect_empty
[master 21d0abc] 16th
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 16th.t
ok 125 - setup testing of empty notes
expecting success of 3301.126 ''git notes add' removes empty note':
test_might_fail git notes remove HEAD &&
MSG= git notes add &&
test_must_fail git notes list HEAD
Object HEAD has no note
Removing note for object 21d0abcd10f591529d5148ae8bc7703fc1f73398
error: no note found for object 21d0abcd10f591529d5148ae8bc7703fc1f73398.
ok 126 - 'git notes add' removes empty note
expecting success of 3301.127 ''git notes add --allow-empty' stores empty note':
test_might_fail git notes remove HEAD &&
MSG= git notes add --allow-empty &&
git notes list HEAD >actual &&
test_cmp expect_empty actual
Object HEAD has no note
ok 127 - 'git notes add --allow-empty' stores empty note
expecting success of 3301.128 ''git notes add -F /dev/null' removes empty note':
test_might_fail git notes remove HEAD &&
MSG= git notes add -F /dev/null &&
test_must_fail git notes list HEAD
Removing note for object HEAD
Removing note for object 21d0abcd10f591529d5148ae8bc7703fc1f73398
error: no note found for object 21d0abcd10f591529d5148ae8bc7703fc1f73398.
ok 128 - 'git notes add -F /dev/null' removes empty note
expecting success of 3301.129 ''git notes add -F /dev/null --allow-empty' stores empty note':
test_might_fail git notes remove HEAD &&
MSG= git notes add -F /dev/null --allow-empty &&
git notes list HEAD >actual &&
test_cmp expect_empty actual
Object HEAD has no note
ok 129 - 'git notes add -F /dev/null --allow-empty' stores empty note
expecting success of 3301.130 ''git notes add -m ""' removes empty note':
test_might_fail git notes remove HEAD &&
MSG= git notes add -m "" &&
test_must_fail git notes list HEAD
Removing note for object HEAD
Removing note for object 21d0abcd10f591529d5148ae8bc7703fc1f73398
error: no note found for object 21d0abcd10f591529d5148ae8bc7703fc1f73398.
ok 130 - 'git notes add -m ""' removes empty note
expecting success of 3301.131 ''git notes add -m "" --allow-empty' stores empty note':
test_might_fail git notes remove HEAD &&
MSG= git notes add -m "" --allow-empty &&
git notes list HEAD >actual &&
test_cmp expect_empty actual
Object HEAD has no note
ok 131 - 'git notes add -m "" --allow-empty' stores empty note
expecting success of 3301.132 ''git notes add -c "$empty_blob"' removes empty note':
test_might_fail git notes remove HEAD &&
MSG= git notes add -c "$empty_blob" &&
test_must_fail git notes list HEAD
Removing note for object HEAD
Removing note for object 21d0abcd10f591529d5148ae8bc7703fc1f73398
error: no note found for object 21d0abcd10f591529d5148ae8bc7703fc1f73398.
ok 132 - 'git notes add -c "$empty_blob"' removes empty note
expecting success of 3301.133 ''git notes add -c "$empty_blob" --allow-empty' stores empty note':
test_might_fail git notes remove HEAD &&
MSG= git notes add -c "$empty_blob" --allow-empty &&
git notes list HEAD >actual &&
test_cmp expect_empty actual
Object HEAD has no note
ok 133 - 'git notes add -c "$empty_blob" --allow-empty' stores empty note
expecting success of 3301.134 ''git notes add -C "$empty_blob"' removes empty note':
test_might_fail git notes remove HEAD &&
MSG= git notes add -C "$empty_blob" &&
test_must_fail git notes list HEAD
Removing note for object HEAD
Removing note for object 21d0abcd10f591529d5148ae8bc7703fc1f73398
error: no note found for object 21d0abcd10f591529d5148ae8bc7703fc1f73398.
ok 134 - 'git notes add -C "$empty_blob"' removes empty note
expecting success of 3301.135 ''git notes add -C "$empty_blob" --allow-empty' stores empty note':
test_might_fail git notes remove HEAD &&
MSG= git notes add -C "$empty_blob" --allow-empty &&
git notes list HEAD >actual &&
test_cmp expect_empty actual
Object HEAD has no note
ok 135 - 'git notes add -C "$empty_blob" --allow-empty' stores empty note
expecting success of 3301.136 ''git notes append' removes empty note':
test_might_fail git notes remove HEAD &&
MSG= git notes append &&
test_must_fail git notes list HEAD
Removing note for object HEAD
Removing note for object 21d0abcd10f591529d5148ae8bc7703fc1f73398
error: no note found for object 21d0abcd10f591529d5148ae8bc7703fc1f73398.
ok 136 - 'git notes append' removes empty note
expecting success of 3301.137 ''git notes append --allow-empty' stores empty note':
test_might_fail git notes remove HEAD &&
MSG= git notes append --allow-empty &&
git notes list HEAD >actual &&
test_cmp expect_empty actual
Object HEAD has no note
ok 137 - 'git notes append --allow-empty' stores empty note
expecting success of 3301.138 ''git notes append -F /dev/null' removes empty note':
test_might_fail git notes remove HEAD &&
MSG= git notes append -F /dev/null &&
test_must_fail git notes list HEAD
Removing note for object HEAD
Removing note for object 21d0abcd10f591529d5148ae8bc7703fc1f73398
error: no note found for object 21d0abcd10f591529d5148ae8bc7703fc1f73398.
ok 138 - 'git notes append -F /dev/null' removes empty note
expecting success of 3301.139 ''git notes append -F /dev/null --allow-empty' stores empty note':
test_might_fail git notes remove HEAD &&
MSG= git notes append -F /dev/null --allow-empty &&
git notes list HEAD >actual &&
test_cmp expect_empty actual
Object HEAD has no note
ok 139 - 'git notes append -F /dev/null --allow-empty' stores empty note
expecting success of 3301.140 ''git notes append -m ""' removes empty note':
test_might_fail git notes remove HEAD &&
MSG= git notes append -m "" &&
test_must_fail git notes list HEAD
Removing note for object HEAD
Removing note for object 21d0abcd10f591529d5148ae8bc7703fc1f73398
error: no note found for object 21d0abcd10f591529d5148ae8bc7703fc1f73398.
ok 140 - 'git notes append -m ""' removes empty note
expecting success of 3301.141 ''git notes append -m "" --allow-empty' stores empty note':
test_might_fail git notes remove HEAD &&
MSG= git notes append -m "" --allow-empty &&
git notes list HEAD >actual &&
test_cmp expect_empty actual
Object HEAD has no note
ok 141 - 'git notes append -m "" --allow-empty' stores empty note
expecting success of 3301.142 ''git notes append -c "$empty_blob"' removes empty note':
test_might_fail git notes remove HEAD &&
MSG= git notes append -c "$empty_blob" &&
test_must_fail git notes list HEAD
Removing note for object HEAD
Removing note for object 21d0abcd10f591529d5148ae8bc7703fc1f73398
error: no note found for object 21d0abcd10f591529d5148ae8bc7703fc1f73398.
ok 142 - 'git notes append -c "$empty_blob"' removes empty note
expecting success of 3301.143 ''git notes append -c "$empty_blob" --allow-empty' stores empty note':
test_might_fail git notes remove HEAD &&
MSG= git notes append -c "$empty_blob" --allow-empty &&
git notes list HEAD >actual &&
test_cmp expect_empty actual
Object HEAD has no note
ok 143 - 'git notes append -c "$empty_blob" --allow-empty' stores empty note
expecting success of 3301.144 ''git notes append -C "$empty_blob"' removes empty note':
test_might_fail git notes remove HEAD &&
MSG= git notes append -C "$empty_blob" &&
test_must_fail git notes list HEAD
Removing note for object HEAD
Removing note for object 21d0abcd10f591529d5148ae8bc7703fc1f73398
error: no note found for object 21d0abcd10f591529d5148ae8bc7703fc1f73398.
ok 144 - 'git notes append -C "$empty_blob"' removes empty note
expecting success of 3301.145 ''git notes append -C "$empty_blob" --allow-empty' stores empty note':
test_might_fail git notes remove HEAD &&
MSG= git notes append -C "$empty_blob" --allow-empty &&
git notes list HEAD >actual &&
test_cmp expect_empty actual
Object HEAD has no note
ok 145 - 'git notes append -C "$empty_blob" --allow-empty' stores empty note
expecting success of 3301.146 ''git notes edit' removes empty note':
test_might_fail git notes remove HEAD &&
MSG= git notes edit &&
test_must_fail git notes list HEAD
Removing note for object HEAD
Removing note for object 21d0abcd10f591529d5148ae8bc7703fc1f73398
error: no note found for object 21d0abcd10f591529d5148ae8bc7703fc1f73398.
ok 146 - 'git notes edit' removes empty note
expecting success of 3301.147 ''git notes edit --allow-empty' stores empty note':
test_might_fail git notes remove HEAD &&
MSG= git notes edit --allow-empty &&
git notes list HEAD >actual &&
test_cmp expect_empty actual
Object HEAD has no note
ok 147 - 'git notes edit --allow-empty' stores empty note
expecting success of 3301.148 'empty notes are displayed by git log':
test_commit 17th &&
git log -1 >expect &&
cat >>expect <<-EOF &&
Notes:
EOF
git notes add -C "$empty_blob" --allow-empty &&
git log -1 >actual &&
test_cmp expect actual
[master 27a79f3] 17th
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 17th.t
ok 148 - empty notes are displayed by git log
# passed all 148 test(s)
1..148
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3306-notes-prune.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3306-notes-prune/.git/
expecting success of 3306.1 'setup: create a few commits with notes':
: > file1 &&
git add file1 &&
test_tick &&
git commit -m 1st &&
git notes add -m "Note #1" &&
first=$(git rev-parse HEAD) &&
: > file2 &&
git add file2 &&
test_tick &&
git commit -m 2nd &&
git notes add -m "Note #2" &&
second=$(git rev-parse HEAD) &&
: > file3 &&
git add file3 &&
test_tick &&
git commit -m 3rd &&
third=$(git rev-parse HEAD) &&
COMMIT_FILE=$(echo $third | sed "s!^..!.git/objects/&/!") &&
test -f $COMMIT_FILE &&
test-tool chmtime =+0 $COMMIT_FILE &&
git notes add -m "Note #3"
[master (root-commit) ab5f302] 1st
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file1
[master 08341ad] 2nd
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file2
[master 5ee1c35] 3rd
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file3
ok 1 - setup: create a few commits with notes
expecting success of 3306.2 'verify commits and notes':
git log > actual &&
test_cmp expect actual
ok 2 - verify commits and notes
expecting success of 3306.3 'remove some commits':
git reset --hard HEAD~1 &&
git reflog expire --expire=now HEAD &&
git gc --prune=now
HEAD is now at 08341ad 2nd
ok 3 - remove some commits
expecting success of 3306.4 'verify that commits are gone':
test_must_fail git cat-file -p $third &&
git cat-file -p $second &&
git cat-file -p $first
fatal: Not a valid object name 5ee1c35e83ea47cd3cc4f8cbee0568915fbbbd29
tree aefde3a01f6e10d72fd4899ce14c8b2654d3eb45
parent ab5f302035f2e7aaf04265f08b42034c23256e1f
author A U Thor <author@example.com> 1112912053 -0700
committer C O Mitter <committer@example.com> 1112912053 -0700
2nd
tree ad24149d789e59d4b5f9ce41cda90110ca0f98b7
author A U Thor <author@example.com> 1112911993 -0700
committer C O Mitter <committer@example.com> 1112911993 -0700
1st
ok 4 - verify that commits are gone
expecting success of 3306.5 'verify that notes are still present':
git notes show $third &&
git notes show $second &&
git notes show $first
Note #3
Note #2
Note #1
ok 5 - verify that notes are still present
expecting success of 3306.6 'prune -n does not remove notes':
git notes list > expect &&
git notes prune -n &&
git notes list > actual &&
test_cmp expect actual
5ee1c35e83ea47cd3cc4f8cbee0568915fbbbd29
ok 6 - prune -n does not remove notes
expecting success of 3306.7 'prune -n lists prunable notes':
echo $third >expect &&
git notes prune -n > actual &&
test_cmp expect actual
ok 7 - prune -n lists prunable notes
expecting success of 3306.8 'prune notes':
git notes prune
ok 8 - prune notes
expecting success of 3306.9 'verify that notes are gone':
test_must_fail git notes show $third &&
git notes show $second &&
git notes show $first
error: no note found for object 5ee1c35e83ea47cd3cc4f8cbee0568915fbbbd29.
Note #2
Note #1
ok 9 - verify that notes are gone
expecting success of 3306.10 'remove some commits':
git reset --hard HEAD~1 &&
git reflog expire --expire=now HEAD &&
git gc --prune=now
HEAD is now at ab5f302 1st
ok 10 - remove some commits
expecting success of 3306.11 'prune -v notes':
echo $second >expect &&
git notes prune -v > actual &&
test_cmp expect actual
ok 11 - prune -v notes
expecting success of 3306.12 'verify that notes are gone':
test_must_fail git notes show $third &&
test_must_fail git notes show $second &&
git notes show $first
error: no note found for object 5ee1c35e83ea47cd3cc4f8cbee0568915fbbbd29.
error: no note found for object 08341ad9e94faa089d60fd3f523affb25c6da189.
Note #1
ok 12 - verify that notes are gone
# passed all 12 test(s)
1..12
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3307-notes-man.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3307-notes-man/.git/
expecting success of 3307.1 'setup':
test_commit A &&
test_commit B &&
test_commit C
[master (root-commit) 0ddfaf1] A
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 A.t
[master d9df450] B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 B.t
[master 35a8500] C
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 C.t
ok 1 - setup
expecting success of 3307.2 'example 1: notes to add an Acked-by line':
cat <<-\EOF >expect &&
B
Notes:
Acked-by: A C Ker <acker@example.com>
EOF
git notes add -m "Acked-by: A C Ker <acker@example.com>" B &&
git show -s B^{commit} >log &&
tail -n 4 log >actual &&
test_cmp expect actual
ok 2 - example 1: notes to add an Acked-by line
expecting success of 3307.3 'example 2: binary notes':
cp "$TEST_DIRECTORY"/test-binary-1.png . &&
git checkout B &&
blob=$(git hash-object -w test-binary-1.png) &&
git notes --ref=logo add -C "$blob" &&
git notes --ref=logo copy B C &&
git notes --ref=logo show C >actual &&
test_cmp test-binary-1.png actual
Note: switching to 'B'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at d9df450 B
ok 3 - example 2: binary notes
# passed all 3 test(s)
1..3
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3308-notes-merge.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3308-notes-merge/.git/
expecting success of 3308.1 'setup':
test_commit 1st &&
test_commit 2nd &&
test_commit 3rd &&
test_commit 4th &&
test_commit 5th &&
# Create notes on 4 first commits
git config core.notesRef refs/notes/x &&
git notes add -m "Notes on 1st commit" 1st &&
git notes add -m "Notes on 2nd commit" 2nd &&
git notes add -m "Notes on 3rd commit" 3rd &&
git notes add -m "Notes on 4th commit" 4th &&
# Copy notes to remote-notes
git fetch . refs/notes/*:refs/remote-notes/origin/* &&
test_oid_cache <<-EOF
hash4a sha1:5e93d24084d32e1cb61f7070505b9d2530cca987
hash3a sha1:8366731eeee53787d2bdf8fc1eff7d94757e8da0
hash2a sha1:eede89064cd42441590d6afec6c37b321ada3389
hash1a sha1:daa55ffad6cb99bf64226532147ffcaf5ce8bdd1
hash5b sha1:0f2efbd00262f2fd41dfae33df8765618eeacd99
hash4b sha1:dec2502dac3ea161543f71930044deff93fa945c
hash3b sha1:4069cdb399fd45463ec6eef8e051a16a03592d91
hash2c sha1:d000d30e6ddcfce3a8122c403226a2ce2fd04d9d
hash1c sha1:43add6bd0c8c0bc871ac7991e0f5573cfba27804
hash4d sha1:1f257a3a90328557c452f0817d6cc50c89d315d4
hash3d sha1:05a4927951bcef347f51486575b878b2b60137f2
hash4a sha256:eef876be1d32ac2e2e42240e0429325cec116e55e88cb2969899fac695aa762f
hash3a sha256:cf7cd1bc091d7ba4166a86df864110e42087cd893a5ae96bc50d637e0290939d
hash2a sha256:21ddde7ebce2c285213898cb04deca0fd3209610cf7aaf8222e4e2f45262fae2
hash1a sha256:f9fe0eda16c6027732ed9d4295689a03abd16f893be69b3dcbf4037ddb191921
hash5b sha256:20046f2244577797a9e3d3f790ea9eca4d8a6bafb2a5570bcb0e03aa02ce100b
hash4b sha256:f90563d134c61a95bb88afbd45d48ccc9e919c62aa6fbfcd483302b3e4d8dbcb
hash3b sha256:988f2aca9f2d87e93e6a73197c2bb99560cc44a2f92d18653968f956f01221e0
hash2c sha256:84153b777b4d42827a756c6578dcdb59d8ae5d1360b874fb37c430150c825c26
hash1c sha256:9beb2bc4eef72e4c4087be168a20573e34d993d9ab1883055f23e322afa06567
hash4d sha256:32de39dc06e679a7abb2d4a55ede7709b3124340a4a90aa305971b1c72ac319d
hash3d sha256:fa73b20e41cbb7541c4c81d1535016131dbfbeb05bf6a71f6115e9cad31c7af5
EOF
[master (root-commit) 04ed9a0] 1st
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 1st.t
[master 7a4ca6e] 2nd
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 2nd.t
[master d07d62e] 3rd
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 3rd.t
[master 0f7aa3e] 4th
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 4th.t
[master 7f9ad88] 5th
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 5th.t
From .
* [new ref] refs/notes/x -> refs/remote-notes/origin/x
ok 1 - setup
expecting success of 3308.2 'verify initial notes (x)':
verify_notes x
ok 2 - verify initial notes (x)
expecting success of 3308.3 'fail to merge empty notes ref into empty notes ref (z => y)':
test_must_fail git -c "core.notesRef=refs/notes/y" notes merge z
fatal: Cannot merge empty notes ref (refs/notes/z) into empty notes ref (refs/notes/y)
ok 3 - fail to merge empty notes ref into empty notes ref (z => y)
expecting success of 3308.4 'fail to merge into various non-notes refs':
test_must_fail git -c "core.notesRef=refs/notes" notes merge x &&
test_must_fail git -c "core.notesRef=refs/notes/" notes merge x &&
git update-ref refs/notes/dir/foo HEAD &&
test_must_fail git -c "core.notesRef=refs/notes/dir" notes merge x &&
test_must_fail git -c "core.notesRef=refs/notes/dir/" notes merge x &&
test_must_fail git -c "core.notesRef=refs/heads/main" notes merge x &&
test_must_fail git -c "core.notesRef=refs/notes/y:" notes merge x &&
test_must_fail git -c "core.notesRef=refs/notes/y:foo" notes merge x &&
test_must_fail git -c "core.notesRef=refs/notes/foo^{bar" notes merge x
fatal: refusing to merge notes in refs/notes (outside of refs/notes/)
fatal: Failed to resolve local notes ref 'refs/notes/'
fatal: update_ref failed for ref 'refs/notes/dir': cannot lock ref 'refs/notes/dir': 'refs/notes/dir/foo' exists; cannot create 'refs/notes/dir'
fatal: Failed to resolve local notes ref 'refs/notes/dir/'
fatal: refusing to merge notes in refs/heads/main (outside of refs/notes/)
fatal: Failed to resolve local notes ref 'refs/notes/y:'
fatal: Failed to resolve local notes ref 'refs/notes/y:foo'
fatal: Failed to resolve local notes ref 'refs/notes/foo^{bar'
ok 4 - fail to merge into various non-notes refs
expecting success of 3308.5 'merge non-notes ref into empty notes ref (remote-notes/origin/x => v)':
git config core.notesRef refs/notes/v &&
git notes merge refs/remote-notes/origin/x &&
verify_notes v &&
# refs/remote-notes/origin/x and v should point to the same notes commit
test "$(git rev-parse refs/remote-notes/origin/x)" = "$(git rev-parse refs/notes/v)"
ok 5 - merge non-notes ref into empty notes ref (remote-notes/origin/x => v)
expecting success of 3308.6 'merge notes into empty notes ref (x => y)':
git config core.notesRef refs/notes/y &&
git notes merge x &&
verify_notes y &&
# x and y should point to the same notes commit
test "$(git rev-parse refs/notes/x)" = "$(git rev-parse refs/notes/y)"
ok 6 - merge notes into empty notes ref (x => y)
expecting success of 3308.7 'merge empty notes ref (z => y)':
git notes merge z &&
# y should not change (still == x)
test "$(git rev-parse refs/notes/x)" = "$(git rev-parse refs/notes/y)"
ok 7 - merge empty notes ref (z => y)
expecting success of 3308.8 'change notes on other notes ref (y)':
# Not touching notes to 1st commit
git notes remove 2nd &&
git notes append -m "More notes on 3rd commit" 3rd &&
git notes add -f -m "New notes on 4th commit" 4th &&
git notes add -m "Notes on 5th commit" 5th
Removing note for object 2nd
Overwriting existing notes for object 0f7aa3ec6325aeb88b910453bb3eb37c49d75c11
ok 8 - change notes on other notes ref (y)
expecting success of 3308.9 'merge previous notes commit (y^ => y) => No-op':
pre_state="$(git rev-parse refs/notes/y)" &&
git notes merge y^ &&
# y should not move
test "$pre_state" = "$(git rev-parse refs/notes/y)"
Already up to date.
ok 9 - merge previous notes commit (y^ => y) => No-op
expecting success of 3308.10 'verify changed notes on other notes ref (y)':
verify_notes y
ok 10 - verify changed notes on other notes ref (y)
expecting success of 3308.11 'verify unchanged notes on original notes ref (x)':
verify_notes x
ok 11 - verify unchanged notes on original notes ref (x)
expecting success of 3308.12 'merge original notes (x) into changed notes (y) => No-op':
git notes merge -vvv x &&
verify_notes y &&
verify_notes x
One merge base found (bf2877f)
Merging remote commit bf2877f into local commit 21b8c5e with merge-base bf2877f
Already up to date.
ok 12 - merge original notes (x) into changed notes (y) => No-op
expecting success of 3308.13 'merge changed (y) into original (x) => Fast-forward':
git config core.notesRef refs/notes/x &&
git notes merge y &&
verify_notes x &&
verify_notes y &&
# x and y should point to same the notes commit
test "$(git rev-parse refs/notes/x)" = "$(git rev-parse refs/notes/y)"
Fast-forward
ok 13 - merge changed (y) into original (x) => Fast-forward
expecting success of 3308.14 'merge empty notes ref (z => y)':
# Prepare empty (but valid) notes ref (z)
git config core.notesRef refs/notes/z &&
git notes add -m "foo" &&
git notes remove &&
git notes >output_notes_z &&
test_must_be_empty output_notes_z &&
# Do the merge (z => y)
git config core.notesRef refs/notes/y &&
git notes merge z &&
verify_notes y &&
# y should no longer point to the same notes commit as x
test "$(git rev-parse refs/notes/x)" != "$(git rev-parse refs/notes/y)"
Removing note for object HEAD
ok 14 - merge empty notes ref (z => y)
expecting success of 3308.15 'change notes on other notes ref (y)':
# Append to 1st commit notes
git notes append -m "More notes on 1st commit" 1st &&
# Add new notes to 2nd commit
git notes add -m "New notes on 2nd commit" 2nd &&
verify_notes y
ok 15 - change notes on other notes ref (y)
expecting success of 3308.16 'change notes on notes ref (x)':
git config core.notesRef refs/notes/x &&
git notes remove 3rd &&
git notes append -m "More notes on 4th commit" 4th &&
verify_notes x
Removing note for object 3rd
ok 16 - change notes on notes ref (x)
expecting success of 3308.17 'merge y into x => Non-conflicting 3-way merge':
git notes merge y &&
verify_notes x &&
verify_notes y
ok 17 - merge y into x => Non-conflicting 3-way merge
expecting success of 3308.18 'create notes on new, separate notes ref (w)':
git config core.notesRef refs/notes/w &&
# Add same note as refs/notes/y on 2nd commit
git notes add -m "New notes on 2nd commit" 2nd &&
# Add new note on 3rd commit (non-conflicting)
git notes add -m "New notes on 3rd commit" 3rd &&
# Verify state of notes on new, separate notes ref (w)
verify_notes w
ok 18 - create notes on new, separate notes ref (w)
expecting success of 3308.19 'merge w into x => Non-conflicting history-less merge':
git config core.notesRef refs/notes/x &&
git notes merge w &&
# Verify new state of notes on other notes ref (x)
verify_notes x &&
# Also verify that nothing changed on other notes refs (y and w)
verify_notes y &&
verify_notes w
ok 19 - merge w into x => Non-conflicting history-less merge
# passed all 19 test(s)
1..19
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3070-wildmatch.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3070-wildmatch/.git/
checking prerequisite: EXPENSIVE_ON_WINDOWS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-EXPENSIVE_ON_WINDOWS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-EXPENSIVE_ON_WINDOWS" &&
test_have_prereq EXPENSIVE || test_have_prereq !MINGW,!CYGWIN
)
checking prerequisite: EXPENSIVE
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-EXPENSIVE" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-EXPENSIVE" &&
test -n "$GIT_TEST_LONG"
)
prerequisite EXPENSIVE not satisfied
prerequisite EXPENSIVE_ON_WINDOWS ok
expecting success of 3070.1 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
ok 1 - cleanup after previous file test
expecting success of 3070.2 'setup match file test for foo':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 2 - setup match file test for foo
expecting success of 3070.3 'wildmatch: match 'foo' 'foo'':
test-tool wildmatch wildmatch 'foo' 'foo'
ok 3 - wildmatch: match 'foo' 'foo'
expecting success of 3070.4 'wildmatch (via ls-files): match 'foo' 'foo'':
printf '%s' 'foo' >expect &&
git --glob-pathspecs ls-files -z -- 'foo' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 4 - wildmatch (via ls-files): match 'foo' 'foo'
expecting success of 3070.5 'iwildmatch: match 'foo' 'foo'':
test-tool wildmatch iwildmatch 'foo' 'foo'
ok 5 - iwildmatch: match 'foo' 'foo'
expecting success of 3070.6 'iwildmatch (via ls-files): match 'foo' 'foo'':
printf '%s' 'foo' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'foo' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 6 - iwildmatch (via ls-files): match 'foo' 'foo'
expecting success of 3070.7 'pathmatch: match 'foo' 'foo'':
test-tool wildmatch pathmatch 'foo' 'foo'
ok 7 - pathmatch: match 'foo' 'foo'
expecting success of 3070.8 'pathmatch (via ls-files): match 'foo' 'foo'':
printf '%s' 'foo' >expect &&
git ls-files -z -- 'foo' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 8 - pathmatch (via ls-files): match 'foo' 'foo'
expecting success of 3070.9 'ipathmatch: match 'foo' 'foo'':
test-tool wildmatch ipathmatch 'foo' 'foo'
ok 9 - ipathmatch: match 'foo' 'foo'
expecting success of 3070.10 'ipathmatch (via ls-files): match 'foo' 'foo'':
printf '%s' 'foo' >expect &&
git --icase-pathspecs ls-files -z -- 'foo' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 10 - ipathmatch (via ls-files): match 'foo' 'foo'
expecting success of 3070.11 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo
ok 11 - cleanup after previous file test
expecting success of 3070.12 'setup match file test for foo':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 12 - setup match file test for foo
expecting success of 3070.13 'wildmatch: no match 'foo' 'bar'':
test_must_fail test-tool wildmatch wildmatch 'foo' 'bar'
ok 13 - wildmatch: no match 'foo' 'bar'
expecting success of 3070.14 'wildmatch (via ls-files): no match 'bar' 'foo'':
>expect &&
git --glob-pathspecs ls-files -z -- 'bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 14 - wildmatch (via ls-files): no match 'bar' 'foo'
expecting success of 3070.15 'iwildmatch: no match 'foo' 'bar'':
test_must_fail test-tool wildmatch iwildmatch 'foo' 'bar'
ok 15 - iwildmatch: no match 'foo' 'bar'
expecting success of 3070.16 'iwildmatch (via ls-files): no match 'bar' 'foo'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 16 - iwildmatch (via ls-files): no match 'bar' 'foo'
expecting success of 3070.17 'pathmatch: no match 'foo' 'bar'':
test_must_fail test-tool wildmatch pathmatch 'foo' 'bar'
ok 17 - pathmatch: no match 'foo' 'bar'
expecting success of 3070.18 'pathmatch (via ls-files): no match 'bar' 'foo'':
>expect &&
git ls-files -z -- 'bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 18 - pathmatch (via ls-files): no match 'bar' 'foo'
expecting success of 3070.19 'ipathmatch: no match 'foo' 'bar'':
test_must_fail test-tool wildmatch ipathmatch 'foo' 'bar'
ok 19 - ipathmatch: no match 'foo' 'bar'
expecting success of 3070.20 'ipathmatch (via ls-files): no match 'bar' 'foo'':
>expect &&
git --icase-pathspecs ls-files -z -- 'bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 20 - ipathmatch (via ls-files): no match 'bar' 'foo'
expecting success of 3070.21 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo
ok 21 - cleanup after previous file test
expecting success of 3070.22 'setup match file test for ':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 22 - setup match file test for
expecting success of 3070.23 'wildmatch: match '' ''':
test-tool wildmatch wildmatch '' ''
ok 23 - wildmatch: match '' ''
checking known breakage of 3070.24 'wildmatch (via ls-files): match skip '' ''': false
not ok 24 - wildmatch (via ls-files): match skip '' '' # TODO known breakage
expecting success of 3070.25 'iwildmatch: match '' ''':
test-tool wildmatch iwildmatch '' ''
ok 25 - iwildmatch: match '' ''
checking known breakage of 3070.26 'iwildmatch (via ls-files): match skip '' ''': false
not ok 26 - iwildmatch (via ls-files): match skip '' '' # TODO known breakage
expecting success of 3070.27 'pathmatch: match '' ''':
test-tool wildmatch pathmatch '' ''
ok 27 - pathmatch: match '' ''
checking known breakage of 3070.28 'pathmatch (via ls-files): match skip '' ''': false
not ok 28 - pathmatch (via ls-files): match skip '' '' # TODO known breakage
expecting success of 3070.29 'ipathmatch: match '' ''':
test-tool wildmatch ipathmatch '' ''
ok 29 - ipathmatch: match '' ''
checking known breakage of 3070.30 'ipathmatch (via ls-files): match skip '' ''': false
not ok 30 - ipathmatch (via ls-files): match skip '' '' # TODO known breakage
expecting success of 3070.31 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
ok 31 - cleanup after previous file test
expecting success of 3070.32 'setup match file test for foo':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 32 - setup match file test for foo
expecting success of 3070.33 'wildmatch: match 'foo' '???'':
test-tool wildmatch wildmatch 'foo' '???'
ok 33 - wildmatch: match 'foo' '???'
expecting success of 3070.34 'wildmatch (via ls-files): match '???' 'foo'':
printf '%s' 'foo' >expect &&
git --glob-pathspecs ls-files -z -- '???' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 34 - wildmatch (via ls-files): match '???' 'foo'
expecting success of 3070.35 'iwildmatch: match 'foo' '???'':
test-tool wildmatch iwildmatch 'foo' '???'
ok 35 - iwildmatch: match 'foo' '???'
expecting success of 3070.36 'iwildmatch (via ls-files): match '???' 'foo'':
printf '%s' 'foo' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '???' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 36 - iwildmatch (via ls-files): match '???' 'foo'
expecting success of 3070.37 'pathmatch: match 'foo' '???'':
test-tool wildmatch pathmatch 'foo' '???'
ok 37 - pathmatch: match 'foo' '???'
expecting success of 3070.38 'pathmatch (via ls-files): match '???' 'foo'':
printf '%s' 'foo' >expect &&
git ls-files -z -- '???' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 38 - pathmatch (via ls-files): match '???' 'foo'
expecting success of 3070.39 'ipathmatch: match 'foo' '???'':
test-tool wildmatch ipathmatch 'foo' '???'
ok 39 - ipathmatch: match 'foo' '???'
expecting success of 3070.40 'ipathmatch (via ls-files): match '???' 'foo'':
printf '%s' 'foo' >expect &&
git --icase-pathspecs ls-files -z -- '???' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 40 - ipathmatch (via ls-files): match '???' 'foo'
expecting success of 3070.41 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo
ok 41 - cleanup after previous file test
expecting success of 3070.42 'setup match file test for foo':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 42 - setup match file test for foo
expecting success of 3070.43 'wildmatch: no match 'foo' '??'':
test_must_fail test-tool wildmatch wildmatch 'foo' '??'
ok 43 - wildmatch: no match 'foo' '??'
expecting success of 3070.44 'wildmatch (via ls-files): no match '??' 'foo'':
>expect &&
git --glob-pathspecs ls-files -z -- '??' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 44 - wildmatch (via ls-files): no match '??' 'foo'
expecting success of 3070.45 'iwildmatch: no match 'foo' '??'':
test_must_fail test-tool wildmatch iwildmatch 'foo' '??'
ok 45 - iwildmatch: no match 'foo' '??'
expecting success of 3070.46 'iwildmatch (via ls-files): no match '??' 'foo'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '??' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 46 - iwildmatch (via ls-files): no match '??' 'foo'
expecting success of 3070.47 'pathmatch: no match 'foo' '??'':
test_must_fail test-tool wildmatch pathmatch 'foo' '??'
ok 47 - pathmatch: no match 'foo' '??'
expecting success of 3070.48 'pathmatch (via ls-files): no match '??' 'foo'':
>expect &&
git ls-files -z -- '??' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 48 - pathmatch (via ls-files): no match '??' 'foo'
expecting success of 3070.49 'ipathmatch: no match 'foo' '??'':
test_must_fail test-tool wildmatch ipathmatch 'foo' '??'
ok 49 - ipathmatch: no match 'foo' '??'
expecting success of 3070.50 'ipathmatch (via ls-files): no match '??' 'foo'':
>expect &&
git --icase-pathspecs ls-files -z -- '??' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 50 - ipathmatch (via ls-files): no match '??' 'foo'
expecting success of 3070.51 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo
ok 51 - cleanup after previous file test
expecting success of 3070.52 'setup match file test for foo':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 52 - setup match file test for foo
expecting success of 3070.53 'wildmatch: match 'foo' '*'':
test-tool wildmatch wildmatch 'foo' '*'
ok 53 - wildmatch: match 'foo' '*'
expecting success of 3070.54 'wildmatch (via ls-files): match '*' 'foo'':
printf '%s' 'foo' >expect &&
git --glob-pathspecs ls-files -z -- '*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 54 - wildmatch (via ls-files): match '*' 'foo'
expecting success of 3070.55 'iwildmatch: match 'foo' '*'':
test-tool wildmatch iwildmatch 'foo' '*'
ok 55 - iwildmatch: match 'foo' '*'
expecting success of 3070.56 'iwildmatch (via ls-files): match '*' 'foo'':
printf '%s' 'foo' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 56 - iwildmatch (via ls-files): match '*' 'foo'
expecting success of 3070.57 'pathmatch: match 'foo' '*'':
test-tool wildmatch pathmatch 'foo' '*'
ok 57 - pathmatch: match 'foo' '*'
expecting success of 3070.58 'pathmatch (via ls-files): match '*' 'foo'':
printf '%s' 'foo' >expect &&
git ls-files -z -- '*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 58 - pathmatch (via ls-files): match '*' 'foo'
expecting success of 3070.59 'ipathmatch: match 'foo' '*'':
test-tool wildmatch ipathmatch 'foo' '*'
ok 59 - ipathmatch: match 'foo' '*'
expecting success of 3070.60 'ipathmatch (via ls-files): match '*' 'foo'':
printf '%s' 'foo' >expect &&
git --icase-pathspecs ls-files -z -- '*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 60 - ipathmatch (via ls-files): match '*' 'foo'
expecting success of 3070.61 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo
ok 61 - cleanup after previous file test
expecting success of 3070.62 'setup match file test for foo':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 62 - setup match file test for foo
expecting success of 3070.63 'wildmatch: match 'foo' 'f*'':
test-tool wildmatch wildmatch 'foo' 'f*'
ok 63 - wildmatch: match 'foo' 'f*'
expecting success of 3070.64 'wildmatch (via ls-files): match 'f*' 'foo'':
printf '%s' 'foo' >expect &&
git --glob-pathspecs ls-files -z -- 'f*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 64 - wildmatch (via ls-files): match 'f*' 'foo'
expecting success of 3070.65 'iwildmatch: match 'foo' 'f*'':
test-tool wildmatch iwildmatch 'foo' 'f*'
ok 65 - iwildmatch: match 'foo' 'f*'
expecting success of 3070.66 'iwildmatch (via ls-files): match 'f*' 'foo'':
printf '%s' 'foo' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'f*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 66 - iwildmatch (via ls-files): match 'f*' 'foo'
expecting success of 3070.67 'pathmatch: match 'foo' 'f*'':
test-tool wildmatch pathmatch 'foo' 'f*'
ok 67 - pathmatch: match 'foo' 'f*'
expecting success of 3070.68 'pathmatch (via ls-files): match 'f*' 'foo'':
printf '%s' 'foo' >expect &&
git ls-files -z -- 'f*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 68 - pathmatch (via ls-files): match 'f*' 'foo'
expecting success of 3070.69 'ipathmatch: match 'foo' 'f*'':
test-tool wildmatch ipathmatch 'foo' 'f*'
ok 69 - ipathmatch: match 'foo' 'f*'
expecting success of 3070.70 'ipathmatch (via ls-files): match 'f*' 'foo'':
printf '%s' 'foo' >expect &&
git --icase-pathspecs ls-files -z -- 'f*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 70 - ipathmatch (via ls-files): match 'f*' 'foo'
expecting success of 3070.71 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo
ok 71 - cleanup after previous file test
expecting success of 3070.72 'setup match file test for foo':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 72 - setup match file test for foo
expecting success of 3070.73 'wildmatch: no match 'foo' '*f'':
test_must_fail test-tool wildmatch wildmatch 'foo' '*f'
ok 73 - wildmatch: no match 'foo' '*f'
expecting success of 3070.74 'wildmatch (via ls-files): no match '*f' 'foo'':
>expect &&
git --glob-pathspecs ls-files -z -- '*f' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 74 - wildmatch (via ls-files): no match '*f' 'foo'
expecting success of 3070.75 'iwildmatch: no match 'foo' '*f'':
test_must_fail test-tool wildmatch iwildmatch 'foo' '*f'
ok 75 - iwildmatch: no match 'foo' '*f'
expecting success of 3070.76 'iwildmatch (via ls-files): no match '*f' 'foo'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '*f' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 76 - iwildmatch (via ls-files): no match '*f' 'foo'
expecting success of 3070.77 'pathmatch: no match 'foo' '*f'':
test_must_fail test-tool wildmatch pathmatch 'foo' '*f'
ok 77 - pathmatch: no match 'foo' '*f'
expecting success of 3070.78 'pathmatch (via ls-files): no match '*f' 'foo'':
>expect &&
git ls-files -z -- '*f' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 78 - pathmatch (via ls-files): no match '*f' 'foo'
expecting success of 3070.79 'ipathmatch: no match 'foo' '*f'':
test_must_fail test-tool wildmatch ipathmatch 'foo' '*f'
ok 79 - ipathmatch: no match 'foo' '*f'
expecting success of 3070.80 'ipathmatch (via ls-files): no match '*f' 'foo'':
>expect &&
git --icase-pathspecs ls-files -z -- '*f' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 80 - ipathmatch (via ls-files): no match '*f' 'foo'
expecting success of 3070.81 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo
ok 81 - cleanup after previous file test
expecting success of 3070.82 'setup match file test for foo':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 82 - setup match file test for foo
expecting success of 3070.83 'wildmatch: match 'foo' '*foo*'':
test-tool wildmatch wildmatch 'foo' '*foo*'
ok 83 - wildmatch: match 'foo' '*foo*'
expecting success of 3070.84 'wildmatch (via ls-files): match '*foo*' 'foo'':
printf '%s' 'foo' >expect &&
git --glob-pathspecs ls-files -z -- '*foo*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 84 - wildmatch (via ls-files): match '*foo*' 'foo'
expecting success of 3070.85 'iwildmatch: match 'foo' '*foo*'':
test-tool wildmatch iwildmatch 'foo' '*foo*'
ok 85 - iwildmatch: match 'foo' '*foo*'
expecting success of 3070.86 'iwildmatch (via ls-files): match '*foo*' 'foo'':
printf '%s' 'foo' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '*foo*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 86 - iwildmatch (via ls-files): match '*foo*' 'foo'
expecting success of 3070.87 'pathmatch: match 'foo' '*foo*'':
test-tool wildmatch pathmatch 'foo' '*foo*'
ok 87 - pathmatch: match 'foo' '*foo*'
expecting success of 3070.88 'pathmatch (via ls-files): match '*foo*' 'foo'':
printf '%s' 'foo' >expect &&
git ls-files -z -- '*foo*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 88 - pathmatch (via ls-files): match '*foo*' 'foo'
expecting success of 3070.89 'ipathmatch: match 'foo' '*foo*'':
test-tool wildmatch ipathmatch 'foo' '*foo*'
ok 89 - ipathmatch: match 'foo' '*foo*'
expecting success of 3070.90 'ipathmatch (via ls-files): match '*foo*' 'foo'':
printf '%s' 'foo' >expect &&
git --icase-pathspecs ls-files -z -- '*foo*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 90 - ipathmatch (via ls-files): match '*foo*' 'foo'
expecting success of 3070.91 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo
ok 91 - cleanup after previous file test
expecting success of 3070.92 'setup match file test for foobar':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 92 - setup match file test for foobar
expecting success of 3070.93 'wildmatch: match 'foobar' '*ob*a*r*'':
test-tool wildmatch wildmatch 'foobar' '*ob*a*r*'
ok 93 - wildmatch: match 'foobar' '*ob*a*r*'
expecting success of 3070.94 'wildmatch (via ls-files): match '*ob*a*r*' 'foobar'':
printf '%s' 'foobar' >expect &&
git --glob-pathspecs ls-files -z -- '*ob*a*r*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 94 - wildmatch (via ls-files): match '*ob*a*r*' 'foobar'
expecting success of 3070.95 'iwildmatch: match 'foobar' '*ob*a*r*'':
test-tool wildmatch iwildmatch 'foobar' '*ob*a*r*'
ok 95 - iwildmatch: match 'foobar' '*ob*a*r*'
expecting success of 3070.96 'iwildmatch (via ls-files): match '*ob*a*r*' 'foobar'':
printf '%s' 'foobar' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '*ob*a*r*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 96 - iwildmatch (via ls-files): match '*ob*a*r*' 'foobar'
expecting success of 3070.97 'pathmatch: match 'foobar' '*ob*a*r*'':
test-tool wildmatch pathmatch 'foobar' '*ob*a*r*'
ok 97 - pathmatch: match 'foobar' '*ob*a*r*'
expecting success of 3070.98 'pathmatch (via ls-files): match '*ob*a*r*' 'foobar'':
printf '%s' 'foobar' >expect &&
git ls-files -z -- '*ob*a*r*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 98 - pathmatch (via ls-files): match '*ob*a*r*' 'foobar'
expecting success of 3070.99 'ipathmatch: match 'foobar' '*ob*a*r*'':
test-tool wildmatch ipathmatch 'foobar' '*ob*a*r*'
ok 99 - ipathmatch: match 'foobar' '*ob*a*r*'
expecting success of 3070.100 'ipathmatch (via ls-files): match '*ob*a*r*' 'foobar'':
printf '%s' 'foobar' >expect &&
git --icase-pathspecs ls-files -z -- '*ob*a*r*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 100 - ipathmatch (via ls-files): match '*ob*a*r*' 'foobar'
expecting success of 3070.101 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foobar
ok 101 - cleanup after previous file test
expecting success of 3070.102 'setup match file test for aaaaaaabababab':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 102 - setup match file test for aaaaaaabababab
expecting success of 3070.103 'wildmatch: match 'aaaaaaabababab' '*ab'':
test-tool wildmatch wildmatch 'aaaaaaabababab' '*ab'
ok 103 - wildmatch: match 'aaaaaaabababab' '*ab'
expecting success of 3070.104 'wildmatch (via ls-files): match '*ab' 'aaaaaaabababab'':
printf '%s' 'aaaaaaabababab' >expect &&
git --glob-pathspecs ls-files -z -- '*ab' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 104 - wildmatch (via ls-files): match '*ab' 'aaaaaaabababab'
expecting success of 3070.105 'iwildmatch: match 'aaaaaaabababab' '*ab'':
test-tool wildmatch iwildmatch 'aaaaaaabababab' '*ab'
ok 105 - iwildmatch: match 'aaaaaaabababab' '*ab'
expecting success of 3070.106 'iwildmatch (via ls-files): match '*ab' 'aaaaaaabababab'':
printf '%s' 'aaaaaaabababab' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '*ab' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 106 - iwildmatch (via ls-files): match '*ab' 'aaaaaaabababab'
expecting success of 3070.107 'pathmatch: match 'aaaaaaabababab' '*ab'':
test-tool wildmatch pathmatch 'aaaaaaabababab' '*ab'
ok 107 - pathmatch: match 'aaaaaaabababab' '*ab'
expecting success of 3070.108 'pathmatch (via ls-files): match '*ab' 'aaaaaaabababab'':
printf '%s' 'aaaaaaabababab' >expect &&
git ls-files -z -- '*ab' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 108 - pathmatch (via ls-files): match '*ab' 'aaaaaaabababab'
expecting success of 3070.109 'ipathmatch: match 'aaaaaaabababab' '*ab'':
test-tool wildmatch ipathmatch 'aaaaaaabababab' '*ab'
ok 109 - ipathmatch: match 'aaaaaaabababab' '*ab'
expecting success of 3070.110 'ipathmatch (via ls-files): match '*ab' 'aaaaaaabababab'':
printf '%s' 'aaaaaaabababab' >expect &&
git --icase-pathspecs ls-files -z -- '*ab' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 110 - ipathmatch (via ls-files): match '*ab' 'aaaaaaabababab'
expecting success of 3070.111 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing aaaaaaabababab
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 111 - cleanup after previous file test
expecting success of 3070.112 'setup match file test for foo*':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 112 - setup match file test for foo*
expecting success of 3070.113 'wildmatch: match 'foo*' 'foo\*'':
test-tool wildmatch wildmatch 'foo*' 'foo\*'
ok 113 - wildmatch: match 'foo*' 'foo\*'
expecting success of 3070.114 'wildmatch (via ls-files): match 'foo\*' 'foo*'':
printf '%s' 'foo*' >expect &&
git --glob-pathspecs ls-files -z -- 'foo\*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 114 - wildmatch (via ls-files): match 'foo\*' 'foo*'
expecting success of 3070.115 'iwildmatch: match 'foo*' 'foo\*'':
test-tool wildmatch iwildmatch 'foo*' 'foo\*'
ok 115 - iwildmatch: match 'foo*' 'foo\*'
expecting success of 3070.116 'iwildmatch (via ls-files): match 'foo\*' 'foo*'':
printf '%s' 'foo*' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'foo\*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 116 - iwildmatch (via ls-files): match 'foo\*' 'foo*'
expecting success of 3070.117 'pathmatch: match 'foo*' 'foo\*'':
test-tool wildmatch pathmatch 'foo*' 'foo\*'
ok 117 - pathmatch: match 'foo*' 'foo\*'
expecting success of 3070.118 'pathmatch (via ls-files): match 'foo\*' 'foo*'':
printf '%s' 'foo*' >expect &&
git ls-files -z -- 'foo\*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 118 - pathmatch (via ls-files): match 'foo\*' 'foo*'
expecting success of 3070.119 'ipathmatch: match 'foo*' 'foo\*'':
test-tool wildmatch ipathmatch 'foo*' 'foo\*'
ok 119 - ipathmatch: match 'foo*' 'foo\*'
expecting success of 3070.120 'ipathmatch (via ls-files): match 'foo\*' 'foo*'':
printf '%s' 'foo*' >expect &&
git --icase-pathspecs ls-files -z -- 'foo\*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 120 - ipathmatch (via ls-files): match 'foo\*' 'foo*'
expecting success of 3070.121 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo*
ok 121 - cleanup after previous file test
expecting success of 3070.122 'setup match file test for foobar':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 122 - setup match file test for foobar
expecting success of 3070.123 'wildmatch: no match 'foobar' 'foo\*bar'':
test_must_fail test-tool wildmatch wildmatch 'foobar' 'foo\*bar'
ok 123 - wildmatch: no match 'foobar' 'foo\*bar'
expecting success of 3070.124 'wildmatch (via ls-files): no match 'foo\*bar' 'foobar'':
>expect &&
git --glob-pathspecs ls-files -z -- 'foo\*bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 124 - wildmatch (via ls-files): no match 'foo\*bar' 'foobar'
expecting success of 3070.125 'iwildmatch: no match 'foobar' 'foo\*bar'':
test_must_fail test-tool wildmatch iwildmatch 'foobar' 'foo\*bar'
ok 125 - iwildmatch: no match 'foobar' 'foo\*bar'
expecting success of 3070.126 'iwildmatch (via ls-files): no match 'foo\*bar' 'foobar'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'foo\*bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 126 - iwildmatch (via ls-files): no match 'foo\*bar' 'foobar'
expecting success of 3070.127 'pathmatch: no match 'foobar' 'foo\*bar'':
test_must_fail test-tool wildmatch pathmatch 'foobar' 'foo\*bar'
ok 127 - pathmatch: no match 'foobar' 'foo\*bar'
expecting success of 3070.128 'pathmatch (via ls-files): no match 'foo\*bar' 'foobar'':
>expect &&
git ls-files -z -- 'foo\*bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 128 - pathmatch (via ls-files): no match 'foo\*bar' 'foobar'
expecting success of 3070.129 'ipathmatch: no match 'foobar' 'foo\*bar'':
test_must_fail test-tool wildmatch ipathmatch 'foobar' 'foo\*bar'
ok 129 - ipathmatch: no match 'foobar' 'foo\*bar'
expecting success of 3070.130 'ipathmatch (via ls-files): no match 'foo\*bar' 'foobar'':
>expect &&
git --icase-pathspecs ls-files -z -- 'foo\*bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 130 - ipathmatch (via ls-files): no match 'foo\*bar' 'foobar'
expecting success of 3070.131 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foobar
ok 131 - cleanup after previous file test
expecting success of 3070.132 'setup match file test for f\oo':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 132 - setup match file test for f\oo
expecting success of 3070.133 'wildmatch: match 'f\oo' 'f\\oo'':
test-tool wildmatch wildmatch 'f\oo' 'f\\oo'
ok 133 - wildmatch: match 'f\oo' 'f\\oo'
expecting success of 3070.134 'wildmatch (via ls-files): match 'f\\oo' 'f\oo'':
printf '%s' 'f\oo' >expect &&
git --glob-pathspecs ls-files -z -- 'f\\oo' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 134 - wildmatch (via ls-files): match 'f\\oo' 'f\oo'
expecting success of 3070.135 'iwildmatch: match 'f\oo' 'f\\oo'':
test-tool wildmatch iwildmatch 'f\oo' 'f\\oo'
ok 135 - iwildmatch: match 'f\oo' 'f\\oo'
expecting success of 3070.136 'iwildmatch (via ls-files): match 'f\\oo' 'f\oo'':
printf '%s' 'f\oo' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'f\\oo' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 136 - iwildmatch (via ls-files): match 'f\\oo' 'f\oo'
expecting success of 3070.137 'pathmatch: match 'f\oo' 'f\\oo'':
test-tool wildmatch pathmatch 'f\oo' 'f\\oo'
ok 137 - pathmatch: match 'f\oo' 'f\\oo'
expecting success of 3070.138 'pathmatch (via ls-files): match 'f\\oo' 'f\oo'':
printf '%s' 'f\oo' >expect &&
git ls-files -z -- 'f\\oo' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 138 - pathmatch (via ls-files): match 'f\\oo' 'f\oo'
expecting success of 3070.139 'ipathmatch: match 'f\oo' 'f\\oo'':
test-tool wildmatch ipathmatch 'f\oo' 'f\\oo'
ok 139 - ipathmatch: match 'f\oo' 'f\\oo'
expecting success of 3070.140 'ipathmatch (via ls-files): match 'f\\oo' 'f\oo'':
printf '%s' 'f\oo' >expect &&
git --icase-pathspecs ls-files -z -- 'f\\oo' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 140 - ipathmatch (via ls-files): match 'f\\oo' 'f\oo'
expecting success of 3070.141 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing "f\\oo"
ok 141 - cleanup after previous file test
expecting success of 3070.142 'setup match file test for ball':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 142 - setup match file test for ball
expecting success of 3070.143 'wildmatch: match 'ball' '*[al]?'':
test-tool wildmatch wildmatch 'ball' '*[al]?'
ok 143 - wildmatch: match 'ball' '*[al]?'
expecting success of 3070.144 'wildmatch (via ls-files): match '*[al]?' 'ball'':
printf '%s' 'ball' >expect &&
git --glob-pathspecs ls-files -z -- '*[al]?' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 144 - wildmatch (via ls-files): match '*[al]?' 'ball'
expecting success of 3070.145 'iwildmatch: match 'ball' '*[al]?'':
test-tool wildmatch iwildmatch 'ball' '*[al]?'
ok 145 - iwildmatch: match 'ball' '*[al]?'
expecting success of 3070.146 'iwildmatch (via ls-files): match '*[al]?' 'ball'':
printf '%s' 'ball' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '*[al]?' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 146 - iwildmatch (via ls-files): match '*[al]?' 'ball'
expecting success of 3070.147 'pathmatch: match 'ball' '*[al]?'':
test-tool wildmatch pathmatch 'ball' '*[al]?'
ok 147 - pathmatch: match 'ball' '*[al]?'
expecting success of 3070.148 'pathmatch (via ls-files): match '*[al]?' 'ball'':
printf '%s' 'ball' >expect &&
git ls-files -z -- '*[al]?' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 148 - pathmatch (via ls-files): match '*[al]?' 'ball'
expecting success of 3070.149 'ipathmatch: match 'ball' '*[al]?'':
test-tool wildmatch ipathmatch 'ball' '*[al]?'
ok 149 - ipathmatch: match 'ball' '*[al]?'
expecting success of 3070.150 'ipathmatch (via ls-files): match '*[al]?' 'ball'':
printf '%s' 'ball' >expect &&
git --icase-pathspecs ls-files -z -- '*[al]?' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 150 - ipathmatch (via ls-files): match '*[al]?' 'ball'
expecting success of 3070.151 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing ball
Removing expect
ok 151 - cleanup after previous file test
expecting success of 3070.152 'setup match file test for ten':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 152 - setup match file test for ten
expecting success of 3070.153 'wildmatch: no match 'ten' '[ten]'':
test_must_fail test-tool wildmatch wildmatch 'ten' '[ten]'
ok 153 - wildmatch: no match 'ten' '[ten]'
expecting success of 3070.154 'wildmatch (via ls-files): no match '[ten]' 'ten'':
>expect &&
git --glob-pathspecs ls-files -z -- '[ten]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 154 - wildmatch (via ls-files): no match '[ten]' 'ten'
expecting success of 3070.155 'iwildmatch: no match 'ten' '[ten]'':
test_must_fail test-tool wildmatch iwildmatch 'ten' '[ten]'
ok 155 - iwildmatch: no match 'ten' '[ten]'
expecting success of 3070.156 'iwildmatch (via ls-files): no match '[ten]' 'ten'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[ten]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 156 - iwildmatch (via ls-files): no match '[ten]' 'ten'
expecting success of 3070.157 'pathmatch: no match 'ten' '[ten]'':
test_must_fail test-tool wildmatch pathmatch 'ten' '[ten]'
ok 157 - pathmatch: no match 'ten' '[ten]'
expecting success of 3070.158 'pathmatch (via ls-files): no match '[ten]' 'ten'':
>expect &&
git ls-files -z -- '[ten]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 158 - pathmatch (via ls-files): no match '[ten]' 'ten'
expecting success of 3070.159 'ipathmatch: no match 'ten' '[ten]'':
test_must_fail test-tool wildmatch ipathmatch 'ten' '[ten]'
ok 159 - ipathmatch: no match 'ten' '[ten]'
expecting success of 3070.160 'ipathmatch (via ls-files): no match '[ten]' 'ten'':
>expect &&
git --icase-pathspecs ls-files -z -- '[ten]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 160 - ipathmatch (via ls-files): no match '[ten]' 'ten'
expecting success of 3070.161 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing ten
ok 161 - cleanup after previous file test
expecting success of 3070.162 'setup match file test for ten':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 162 - setup match file test for ten
expecting success of 3070.163 'wildmatch: match 'ten' '**[!te]'':
test-tool wildmatch wildmatch 'ten' '**[!te]'
ok 163 - wildmatch: match 'ten' '**[!te]'
expecting success of 3070.164 'wildmatch (via ls-files): match '**[!te]' 'ten'':
printf '%s' 'ten' >expect &&
git --glob-pathspecs ls-files -z -- '**[!te]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 164 - wildmatch (via ls-files): match '**[!te]' 'ten'
expecting success of 3070.165 'iwildmatch: match 'ten' '**[!te]'':
test-tool wildmatch iwildmatch 'ten' '**[!te]'
ok 165 - iwildmatch: match 'ten' '**[!te]'
expecting success of 3070.166 'iwildmatch (via ls-files): match '**[!te]' 'ten'':
printf '%s' 'ten' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '**[!te]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 166 - iwildmatch (via ls-files): match '**[!te]' 'ten'
expecting success of 3070.167 'pathmatch: match 'ten' '**[!te]'':
test-tool wildmatch pathmatch 'ten' '**[!te]'
ok 167 - pathmatch: match 'ten' '**[!te]'
expecting success of 3070.168 'pathmatch (via ls-files): match '**[!te]' 'ten'':
printf '%s' 'ten' >expect &&
git ls-files -z -- '**[!te]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 168 - pathmatch (via ls-files): match '**[!te]' 'ten'
expecting success of 3070.169 'ipathmatch: match 'ten' '**[!te]'':
test-tool wildmatch ipathmatch 'ten' '**[!te]'
ok 169 - ipathmatch: match 'ten' '**[!te]'
expecting success of 3070.170 'ipathmatch (via ls-files): match '**[!te]' 'ten'':
printf '%s' 'ten' >expect &&
git --icase-pathspecs ls-files -z -- '**[!te]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 170 - ipathmatch (via ls-files): match '**[!te]' 'ten'
expecting success of 3070.171 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing ten
ok 171 - cleanup after previous file test
expecting success of 3070.172 'setup match file test for ten':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 172 - setup match file test for ten
expecting success of 3070.173 'wildmatch: no match 'ten' '**[!ten]'':
test_must_fail test-tool wildmatch wildmatch 'ten' '**[!ten]'
ok 173 - wildmatch: no match 'ten' '**[!ten]'
expecting success of 3070.174 'wildmatch (via ls-files): no match '**[!ten]' 'ten'':
>expect &&
git --glob-pathspecs ls-files -z -- '**[!ten]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 174 - wildmatch (via ls-files): no match '**[!ten]' 'ten'
expecting success of 3070.175 'iwildmatch: no match 'ten' '**[!ten]'':
test_must_fail test-tool wildmatch iwildmatch 'ten' '**[!ten]'
ok 175 - iwildmatch: no match 'ten' '**[!ten]'
expecting success of 3070.176 'iwildmatch (via ls-files): no match '**[!ten]' 'ten'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '**[!ten]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 176 - iwildmatch (via ls-files): no match '**[!ten]' 'ten'
expecting success of 3070.177 'pathmatch: no match 'ten' '**[!ten]'':
test_must_fail test-tool wildmatch pathmatch 'ten' '**[!ten]'
ok 177 - pathmatch: no match 'ten' '**[!ten]'
expecting success of 3070.178 'pathmatch (via ls-files): no match '**[!ten]' 'ten'':
>expect &&
git ls-files -z -- '**[!ten]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 178 - pathmatch (via ls-files): no match '**[!ten]' 'ten'
expecting success of 3070.179 'ipathmatch: no match 'ten' '**[!ten]'':
test_must_fail test-tool wildmatch ipathmatch 'ten' '**[!ten]'
ok 179 - ipathmatch: no match 'ten' '**[!ten]'
expecting success of 3070.180 'ipathmatch (via ls-files): no match '**[!ten]' 'ten'':
>expect &&
git --icase-pathspecs ls-files -z -- '**[!ten]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 180 - ipathmatch (via ls-files): no match '**[!ten]' 'ten'
expecting success of 3070.181 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing ten
ok 181 - cleanup after previous file test
expecting success of 3070.182 'setup match file test for ten':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 182 - setup match file test for ten
expecting success of 3070.183 'wildmatch: match 'ten' 't[a-g]n'':
test-tool wildmatch wildmatch 'ten' 't[a-g]n'
ok 183 - wildmatch: match 'ten' 't[a-g]n'
expecting success of 3070.184 'wildmatch (via ls-files): match 't[a-g]n' 'ten'':
printf '%s' 'ten' >expect &&
git --glob-pathspecs ls-files -z -- 't[a-g]n' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 184 - wildmatch (via ls-files): match 't[a-g]n' 'ten'
expecting success of 3070.185 'iwildmatch: match 'ten' 't[a-g]n'':
test-tool wildmatch iwildmatch 'ten' 't[a-g]n'
ok 185 - iwildmatch: match 'ten' 't[a-g]n'
expecting success of 3070.186 'iwildmatch (via ls-files): match 't[a-g]n' 'ten'':
printf '%s' 'ten' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 't[a-g]n' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 186 - iwildmatch (via ls-files): match 't[a-g]n' 'ten'
expecting success of 3070.187 'pathmatch: match 'ten' 't[a-g]n'':
test-tool wildmatch pathmatch 'ten' 't[a-g]n'
ok 187 - pathmatch: match 'ten' 't[a-g]n'
expecting success of 3070.188 'pathmatch (via ls-files): match 't[a-g]n' 'ten'':
printf '%s' 'ten' >expect &&
git ls-files -z -- 't[a-g]n' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 188 - pathmatch (via ls-files): match 't[a-g]n' 'ten'
expecting success of 3070.189 'ipathmatch: match 'ten' 't[a-g]n'':
test-tool wildmatch ipathmatch 'ten' 't[a-g]n'
ok 189 - ipathmatch: match 'ten' 't[a-g]n'
expecting success of 3070.190 'ipathmatch (via ls-files): match 't[a-g]n' 'ten'':
printf '%s' 'ten' >expect &&
git --icase-pathspecs ls-files -z -- 't[a-g]n' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 190 - ipathmatch (via ls-files): match 't[a-g]n' 'ten'
expecting success of 3070.191 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing ten
ok 191 - cleanup after previous file test
expecting success of 3070.192 'setup match file test for ten':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 192 - setup match file test for ten
expecting success of 3070.193 'wildmatch: no match 'ten' 't[!a-g]n'':
test_must_fail test-tool wildmatch wildmatch 'ten' 't[!a-g]n'
ok 193 - wildmatch: no match 'ten' 't[!a-g]n'
expecting success of 3070.194 'wildmatch (via ls-files): no match 't[!a-g]n' 'ten'':
>expect &&
git --glob-pathspecs ls-files -z -- 't[!a-g]n' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 194 - wildmatch (via ls-files): no match 't[!a-g]n' 'ten'
expecting success of 3070.195 'iwildmatch: no match 'ten' 't[!a-g]n'':
test_must_fail test-tool wildmatch iwildmatch 'ten' 't[!a-g]n'
ok 195 - iwildmatch: no match 'ten' 't[!a-g]n'
expecting success of 3070.196 'iwildmatch (via ls-files): no match 't[!a-g]n' 'ten'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 't[!a-g]n' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 196 - iwildmatch (via ls-files): no match 't[!a-g]n' 'ten'
expecting success of 3070.197 'pathmatch: no match 'ten' 't[!a-g]n'':
test_must_fail test-tool wildmatch pathmatch 'ten' 't[!a-g]n'
ok 197 - pathmatch: no match 'ten' 't[!a-g]n'
expecting success of 3070.198 'pathmatch (via ls-files): no match 't[!a-g]n' 'ten'':
>expect &&
git ls-files -z -- 't[!a-g]n' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 198 - pathmatch (via ls-files): no match 't[!a-g]n' 'ten'
expecting success of 3070.199 'ipathmatch: no match 'ten' 't[!a-g]n'':
test_must_fail test-tool wildmatch ipathmatch 'ten' 't[!a-g]n'
ok 199 - ipathmatch: no match 'ten' 't[!a-g]n'
expecting success of 3070.200 'ipathmatch (via ls-files): no match 't[!a-g]n' 'ten'':
>expect &&
git --icase-pathspecs ls-files -z -- 't[!a-g]n' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 200 - ipathmatch (via ls-files): no match 't[!a-g]n' 'ten'
expecting success of 3070.201 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing ten
ok 201 - cleanup after previous file test
expecting success of 3070.202 'setup match file test for ton':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 202 - setup match file test for ton
expecting success of 3070.203 'wildmatch: match 'ton' 't[!a-g]n'':
test-tool wildmatch wildmatch 'ton' 't[!a-g]n'
ok 203 - wildmatch: match 'ton' 't[!a-g]n'
expecting success of 3070.204 'wildmatch (via ls-files): match 't[!a-g]n' 'ton'':
printf '%s' 'ton' >expect &&
git --glob-pathspecs ls-files -z -- 't[!a-g]n' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 204 - wildmatch (via ls-files): match 't[!a-g]n' 'ton'
expecting success of 3070.205 'iwildmatch: match 'ton' 't[!a-g]n'':
test-tool wildmatch iwildmatch 'ton' 't[!a-g]n'
ok 205 - iwildmatch: match 'ton' 't[!a-g]n'
expecting success of 3070.206 'iwildmatch (via ls-files): match 't[!a-g]n' 'ton'':
printf '%s' 'ton' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 't[!a-g]n' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 206 - iwildmatch (via ls-files): match 't[!a-g]n' 'ton'
expecting success of 3070.207 'pathmatch: match 'ton' 't[!a-g]n'':
test-tool wildmatch pathmatch 'ton' 't[!a-g]n'
ok 207 - pathmatch: match 'ton' 't[!a-g]n'
expecting success of 3070.208 'pathmatch (via ls-files): match 't[!a-g]n' 'ton'':
printf '%s' 'ton' >expect &&
git ls-files -z -- 't[!a-g]n' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 208 - pathmatch (via ls-files): match 't[!a-g]n' 'ton'
expecting success of 3070.209 'ipathmatch: match 'ton' 't[!a-g]n'':
test-tool wildmatch ipathmatch 'ton' 't[!a-g]n'
ok 209 - ipathmatch: match 'ton' 't[!a-g]n'
expecting success of 3070.210 'ipathmatch (via ls-files): match 't[!a-g]n' 'ton'':
printf '%s' 'ton' >expect &&
git --icase-pathspecs ls-files -z -- 't[!a-g]n' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 210 - ipathmatch (via ls-files): match 't[!a-g]n' 'ton'
expecting success of 3070.211 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing ton
ok 211 - cleanup after previous file test
expecting success of 3070.212 'setup match file test for ton':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 212 - setup match file test for ton
expecting success of 3070.213 'wildmatch: match 'ton' 't[^a-g]n'':
test-tool wildmatch wildmatch 'ton' 't[^a-g]n'
ok 213 - wildmatch: match 'ton' 't[^a-g]n'
expecting success of 3070.214 'wildmatch (via ls-files): match 't[^a-g]n' 'ton'':
printf '%s' 'ton' >expect &&
git --glob-pathspecs ls-files -z -- 't[^a-g]n' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 214 - wildmatch (via ls-files): match 't[^a-g]n' 'ton'
expecting success of 3070.215 'iwildmatch: match 'ton' 't[^a-g]n'':
test-tool wildmatch iwildmatch 'ton' 't[^a-g]n'
ok 215 - iwildmatch: match 'ton' 't[^a-g]n'
expecting success of 3070.216 'iwildmatch (via ls-files): match 't[^a-g]n' 'ton'':
printf '%s' 'ton' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 't[^a-g]n' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 216 - iwildmatch (via ls-files): match 't[^a-g]n' 'ton'
expecting success of 3070.217 'pathmatch: match 'ton' 't[^a-g]n'':
test-tool wildmatch pathmatch 'ton' 't[^a-g]n'
ok 217 - pathmatch: match 'ton' 't[^a-g]n'
expecting success of 3070.218 'pathmatch (via ls-files): match 't[^a-g]n' 'ton'':
printf '%s' 'ton' >expect &&
git ls-files -z -- 't[^a-g]n' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 218 - pathmatch (via ls-files): match 't[^a-g]n' 'ton'
expecting success of 3070.219 'ipathmatch: match 'ton' 't[^a-g]n'':
test-tool wildmatch ipathmatch 'ton' 't[^a-g]n'
ok 219 - ipathmatch: match 'ton' 't[^a-g]n'
expecting success of 3070.220 'ipathmatch (via ls-files): match 't[^a-g]n' 'ton'':
printf '%s' 'ton' >expect &&
git --icase-pathspecs ls-files -z -- 't[^a-g]n' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 220 - ipathmatch (via ls-files): match 't[^a-g]n' 'ton'
expecting success of 3070.221 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing ton
ok 221 - cleanup after previous file test
expecting success of 3070.222 'setup match file test for a]b':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 222 - setup match file test for a]b
expecting success of 3070.223 'wildmatch: match 'a]b' 'a[]]b'':
test-tool wildmatch wildmatch 'a]b' 'a[]]b'
ok 223 - wildmatch: match 'a]b' 'a[]]b'
expecting success of 3070.224 'wildmatch (via ls-files): match 'a[]]b' 'a]b'':
printf '%s' 'a]b' >expect &&
git --glob-pathspecs ls-files -z -- 'a[]]b' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 224 - wildmatch (via ls-files): match 'a[]]b' 'a]b'
expecting success of 3070.225 'iwildmatch: match 'a]b' 'a[]]b'':
test-tool wildmatch iwildmatch 'a]b' 'a[]]b'
ok 225 - iwildmatch: match 'a]b' 'a[]]b'
expecting success of 3070.226 'iwildmatch (via ls-files): match 'a[]]b' 'a]b'':
printf '%s' 'a]b' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'a[]]b' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 226 - iwildmatch (via ls-files): match 'a[]]b' 'a]b'
expecting success of 3070.227 'pathmatch: match 'a]b' 'a[]]b'':
test-tool wildmatch pathmatch 'a]b' 'a[]]b'
ok 227 - pathmatch: match 'a]b' 'a[]]b'
expecting success of 3070.228 'pathmatch (via ls-files): match 'a[]]b' 'a]b'':
printf '%s' 'a]b' >expect &&
git ls-files -z -- 'a[]]b' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 228 - pathmatch (via ls-files): match 'a[]]b' 'a]b'
expecting success of 3070.229 'ipathmatch: match 'a]b' 'a[]]b'':
test-tool wildmatch ipathmatch 'a]b' 'a[]]b'
ok 229 - ipathmatch: match 'a]b' 'a[]]b'
expecting success of 3070.230 'ipathmatch (via ls-files): match 'a[]]b' 'a]b'':
printf '%s' 'a]b' >expect &&
git --icase-pathspecs ls-files -z -- 'a[]]b' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 230 - ipathmatch (via ls-files): match 'a[]]b' 'a]b'
expecting success of 3070.231 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing a]b
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 231 - cleanup after previous file test
expecting success of 3070.232 'setup match file test for a-b':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 232 - setup match file test for a-b
expecting success of 3070.233 'wildmatch: match 'a-b' 'a[]-]b'':
test-tool wildmatch wildmatch 'a-b' 'a[]-]b'
ok 233 - wildmatch: match 'a-b' 'a[]-]b'
expecting success of 3070.234 'wildmatch (via ls-files): match 'a[]-]b' 'a-b'':
printf '%s' 'a-b' >expect &&
git --glob-pathspecs ls-files -z -- 'a[]-]b' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 234 - wildmatch (via ls-files): match 'a[]-]b' 'a-b'
expecting success of 3070.235 'iwildmatch: match 'a-b' 'a[]-]b'':
test-tool wildmatch iwildmatch 'a-b' 'a[]-]b'
ok 235 - iwildmatch: match 'a-b' 'a[]-]b'
expecting success of 3070.236 'iwildmatch (via ls-files): match 'a[]-]b' 'a-b'':
printf '%s' 'a-b' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'a[]-]b' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 236 - iwildmatch (via ls-files): match 'a[]-]b' 'a-b'
expecting success of 3070.237 'pathmatch: match 'a-b' 'a[]-]b'':
test-tool wildmatch pathmatch 'a-b' 'a[]-]b'
ok 237 - pathmatch: match 'a-b' 'a[]-]b'
expecting success of 3070.238 'pathmatch (via ls-files): match 'a[]-]b' 'a-b'':
printf '%s' 'a-b' >expect &&
git ls-files -z -- 'a[]-]b' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 238 - pathmatch (via ls-files): match 'a[]-]b' 'a-b'
expecting success of 3070.239 'ipathmatch: match 'a-b' 'a[]-]b'':
test-tool wildmatch ipathmatch 'a-b' 'a[]-]b'
ok 239 - ipathmatch: match 'a-b' 'a[]-]b'
expecting success of 3070.240 'ipathmatch (via ls-files): match 'a[]-]b' 'a-b'':
printf '%s' 'a-b' >expect &&
git --icase-pathspecs ls-files -z -- 'a[]-]b' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 240 - ipathmatch (via ls-files): match 'a[]-]b' 'a-b'
expecting success of 3070.241 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing a-b
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 241 - cleanup after previous file test
expecting success of 3070.242 'setup match file test for a]b':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 242 - setup match file test for a]b
expecting success of 3070.243 'wildmatch: match 'a]b' 'a[]-]b'':
test-tool wildmatch wildmatch 'a]b' 'a[]-]b'
ok 243 - wildmatch: match 'a]b' 'a[]-]b'
expecting success of 3070.244 'wildmatch (via ls-files): match 'a[]-]b' 'a]b'':
printf '%s' 'a]b' >expect &&
git --glob-pathspecs ls-files -z -- 'a[]-]b' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 244 - wildmatch (via ls-files): match 'a[]-]b' 'a]b'
expecting success of 3070.245 'iwildmatch: match 'a]b' 'a[]-]b'':
test-tool wildmatch iwildmatch 'a]b' 'a[]-]b'
ok 245 - iwildmatch: match 'a]b' 'a[]-]b'
expecting success of 3070.246 'iwildmatch (via ls-files): match 'a[]-]b' 'a]b'':
printf '%s' 'a]b' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'a[]-]b' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 246 - iwildmatch (via ls-files): match 'a[]-]b' 'a]b'
expecting success of 3070.247 'pathmatch: match 'a]b' 'a[]-]b'':
test-tool wildmatch pathmatch 'a]b' 'a[]-]b'
ok 247 - pathmatch: match 'a]b' 'a[]-]b'
expecting success of 3070.248 'pathmatch (via ls-files): match 'a[]-]b' 'a]b'':
printf '%s' 'a]b' >expect &&
git ls-files -z -- 'a[]-]b' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 248 - pathmatch (via ls-files): match 'a[]-]b' 'a]b'
expecting success of 3070.249 'ipathmatch: match 'a]b' 'a[]-]b'':
test-tool wildmatch ipathmatch 'a]b' 'a[]-]b'
ok 249 - ipathmatch: match 'a]b' 'a[]-]b'
expecting success of 3070.250 'ipathmatch (via ls-files): match 'a[]-]b' 'a]b'':
printf '%s' 'a]b' >expect &&
git --icase-pathspecs ls-files -z -- 'a[]-]b' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 250 - ipathmatch (via ls-files): match 'a[]-]b' 'a]b'
expecting success of 3070.251 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing a]b
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 251 - cleanup after previous file test
expecting success of 3070.252 'setup match file test for aab':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 252 - setup match file test for aab
expecting success of 3070.253 'wildmatch: no match 'aab' 'a[]-]b'':
test_must_fail test-tool wildmatch wildmatch 'aab' 'a[]-]b'
ok 253 - wildmatch: no match 'aab' 'a[]-]b'
expecting success of 3070.254 'wildmatch (via ls-files): no match 'a[]-]b' 'aab'':
>expect &&
git --glob-pathspecs ls-files -z -- 'a[]-]b' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 254 - wildmatch (via ls-files): no match 'a[]-]b' 'aab'
expecting success of 3070.255 'iwildmatch: no match 'aab' 'a[]-]b'':
test_must_fail test-tool wildmatch iwildmatch 'aab' 'a[]-]b'
ok 255 - iwildmatch: no match 'aab' 'a[]-]b'
expecting success of 3070.256 'iwildmatch (via ls-files): no match 'a[]-]b' 'aab'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'a[]-]b' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 256 - iwildmatch (via ls-files): no match 'a[]-]b' 'aab'
expecting success of 3070.257 'pathmatch: no match 'aab' 'a[]-]b'':
test_must_fail test-tool wildmatch pathmatch 'aab' 'a[]-]b'
ok 257 - pathmatch: no match 'aab' 'a[]-]b'
expecting success of 3070.258 'pathmatch (via ls-files): no match 'a[]-]b' 'aab'':
>expect &&
git ls-files -z -- 'a[]-]b' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 258 - pathmatch (via ls-files): no match 'a[]-]b' 'aab'
expecting success of 3070.259 'ipathmatch: no match 'aab' 'a[]-]b'':
test_must_fail test-tool wildmatch ipathmatch 'aab' 'a[]-]b'
ok 259 - ipathmatch: no match 'aab' 'a[]-]b'
expecting success of 3070.260 'ipathmatch (via ls-files): no match 'a[]-]b' 'aab'':
>expect &&
git --icase-pathspecs ls-files -z -- 'a[]-]b' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 260 - ipathmatch (via ls-files): no match 'a[]-]b' 'aab'
expecting success of 3070.261 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing aab
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 261 - cleanup after previous file test
expecting success of 3070.262 'setup match file test for aab':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 262 - setup match file test for aab
expecting success of 3070.263 'wildmatch: match 'aab' 'a[]a-]b'':
test-tool wildmatch wildmatch 'aab' 'a[]a-]b'
ok 263 - wildmatch: match 'aab' 'a[]a-]b'
expecting success of 3070.264 'wildmatch (via ls-files): match 'a[]a-]b' 'aab'':
printf '%s' 'aab' >expect &&
git --glob-pathspecs ls-files -z -- 'a[]a-]b' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 264 - wildmatch (via ls-files): match 'a[]a-]b' 'aab'
expecting success of 3070.265 'iwildmatch: match 'aab' 'a[]a-]b'':
test-tool wildmatch iwildmatch 'aab' 'a[]a-]b'
ok 265 - iwildmatch: match 'aab' 'a[]a-]b'
expecting success of 3070.266 'iwildmatch (via ls-files): match 'a[]a-]b' 'aab'':
printf '%s' 'aab' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'a[]a-]b' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 266 - iwildmatch (via ls-files): match 'a[]a-]b' 'aab'
expecting success of 3070.267 'pathmatch: match 'aab' 'a[]a-]b'':
test-tool wildmatch pathmatch 'aab' 'a[]a-]b'
ok 267 - pathmatch: match 'aab' 'a[]a-]b'
expecting success of 3070.268 'pathmatch (via ls-files): match 'a[]a-]b' 'aab'':
printf '%s' 'aab' >expect &&
git ls-files -z -- 'a[]a-]b' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 268 - pathmatch (via ls-files): match 'a[]a-]b' 'aab'
expecting success of 3070.269 'ipathmatch: match 'aab' 'a[]a-]b'':
test-tool wildmatch ipathmatch 'aab' 'a[]a-]b'
ok 269 - ipathmatch: match 'aab' 'a[]a-]b'
expecting success of 3070.270 'ipathmatch (via ls-files): match 'a[]a-]b' 'aab'':
printf '%s' 'aab' >expect &&
git --icase-pathspecs ls-files -z -- 'a[]a-]b' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 270 - ipathmatch (via ls-files): match 'a[]a-]b' 'aab'
expecting success of 3070.271 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing aab
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 271 - cleanup after previous file test
expecting success of 3070.272 'setup match file test for ]':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 272 - setup match file test for ]
expecting success of 3070.273 'wildmatch: match ']' ']'':
test-tool wildmatch wildmatch ']' ']'
ok 273 - wildmatch: match ']' ']'
expecting success of 3070.274 'wildmatch (via ls-files): match ']' ']'':
printf '%s' ']' >expect &&
git --glob-pathspecs ls-files -z -- ']' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 274 - wildmatch (via ls-files): match ']' ']'
expecting success of 3070.275 'iwildmatch: match ']' ']'':
test-tool wildmatch iwildmatch ']' ']'
ok 275 - iwildmatch: match ']' ']'
expecting success of 3070.276 'iwildmatch (via ls-files): match ']' ']'':
printf '%s' ']' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- ']' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 276 - iwildmatch (via ls-files): match ']' ']'
expecting success of 3070.277 'pathmatch: match ']' ']'':
test-tool wildmatch pathmatch ']' ']'
ok 277 - pathmatch: match ']' ']'
expecting success of 3070.278 'pathmatch (via ls-files): match ']' ']'':
printf '%s' ']' >expect &&
git ls-files -z -- ']' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 278 - pathmatch (via ls-files): match ']' ']'
expecting success of 3070.279 'ipathmatch: match ']' ']'':
test-tool wildmatch ipathmatch ']' ']'
ok 279 - ipathmatch: match ']' ']'
expecting success of 3070.280 'ipathmatch (via ls-files): match ']' ']'':
printf '%s' ']' >expect &&
git --icase-pathspecs ls-files -z -- ']' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 280 - ipathmatch (via ls-files): match ']' ']'
expecting success of 3070.281 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing ]
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 281 - cleanup after previous file test
expecting success of 3070.282 'setup match file test for foo/baz/bar':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 282 - setup match file test for foo/baz/bar
expecting success of 3070.283 'wildmatch: no match 'foo/baz/bar' 'foo*bar'':
test_must_fail test-tool wildmatch wildmatch 'foo/baz/bar' 'foo*bar'
ok 283 - wildmatch: no match 'foo/baz/bar' 'foo*bar'
expecting success of 3070.284 'wildmatch (via ls-files): no match 'foo*bar' 'foo/baz/bar'':
>expect &&
git --glob-pathspecs ls-files -z -- 'foo*bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 284 - wildmatch (via ls-files): no match 'foo*bar' 'foo/baz/bar'
expecting success of 3070.285 'iwildmatch: no match 'foo/baz/bar' 'foo*bar'':
test_must_fail test-tool wildmatch iwildmatch 'foo/baz/bar' 'foo*bar'
ok 285 - iwildmatch: no match 'foo/baz/bar' 'foo*bar'
expecting success of 3070.286 'iwildmatch (via ls-files): no match 'foo*bar' 'foo/baz/bar'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'foo*bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 286 - iwildmatch (via ls-files): no match 'foo*bar' 'foo/baz/bar'
expecting success of 3070.287 'pathmatch: match 'foo/baz/bar' 'foo*bar'':
test-tool wildmatch pathmatch 'foo/baz/bar' 'foo*bar'
ok 287 - pathmatch: match 'foo/baz/bar' 'foo*bar'
expecting success of 3070.288 'pathmatch (via ls-files): match 'foo*bar' 'foo/baz/bar'':
printf '%s' 'foo/baz/bar' >expect &&
git ls-files -z -- 'foo*bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 288 - pathmatch (via ls-files): match 'foo*bar' 'foo/baz/bar'
expecting success of 3070.289 'ipathmatch: match 'foo/baz/bar' 'foo*bar'':
test-tool wildmatch ipathmatch 'foo/baz/bar' 'foo*bar'
ok 289 - ipathmatch: match 'foo/baz/bar' 'foo*bar'
expecting success of 3070.290 'ipathmatch (via ls-files): match 'foo*bar' 'foo/baz/bar'':
printf '%s' 'foo/baz/bar' >expect &&
git --icase-pathspecs ls-files -z -- 'foo*bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 290 - ipathmatch (via ls-files): match 'foo*bar' 'foo/baz/bar'
expecting success of 3070.291 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo/
ok 291 - cleanup after previous file test
expecting success of 3070.292 'setup match file test for foo/baz/bar':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 292 - setup match file test for foo/baz/bar
expecting success of 3070.293 'wildmatch: no match 'foo/baz/bar' 'foo**bar'':
test_must_fail test-tool wildmatch wildmatch 'foo/baz/bar' 'foo**bar'
ok 293 - wildmatch: no match 'foo/baz/bar' 'foo**bar'
expecting success of 3070.294 'wildmatch (via ls-files): no match 'foo**bar' 'foo/baz/bar'':
>expect &&
git --glob-pathspecs ls-files -z -- 'foo**bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 294 - wildmatch (via ls-files): no match 'foo**bar' 'foo/baz/bar'
expecting success of 3070.295 'iwildmatch: no match 'foo/baz/bar' 'foo**bar'':
test_must_fail test-tool wildmatch iwildmatch 'foo/baz/bar' 'foo**bar'
ok 295 - iwildmatch: no match 'foo/baz/bar' 'foo**bar'
expecting success of 3070.296 'iwildmatch (via ls-files): no match 'foo**bar' 'foo/baz/bar'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'foo**bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 296 - iwildmatch (via ls-files): no match 'foo**bar' 'foo/baz/bar'
expecting success of 3070.297 'pathmatch: match 'foo/baz/bar' 'foo**bar'':
test-tool wildmatch pathmatch 'foo/baz/bar' 'foo**bar'
ok 297 - pathmatch: match 'foo/baz/bar' 'foo**bar'
expecting success of 3070.298 'pathmatch (via ls-files): match 'foo**bar' 'foo/baz/bar'':
printf '%s' 'foo/baz/bar' >expect &&
git ls-files -z -- 'foo**bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 298 - pathmatch (via ls-files): match 'foo**bar' 'foo/baz/bar'
expecting success of 3070.299 'ipathmatch: match 'foo/baz/bar' 'foo**bar'':
test-tool wildmatch ipathmatch 'foo/baz/bar' 'foo**bar'
ok 299 - ipathmatch: match 'foo/baz/bar' 'foo**bar'
expecting success of 3070.300 'ipathmatch (via ls-files): match 'foo**bar' 'foo/baz/bar'':
printf '%s' 'foo/baz/bar' >expect &&
git --icase-pathspecs ls-files -z -- 'foo**bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 300 - ipathmatch (via ls-files): match 'foo**bar' 'foo/baz/bar'
expecting success of 3070.301 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo/
ok 301 - cleanup after previous file test
expecting success of 3070.302 'setup match file test for foobazbar':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 302 - setup match file test for foobazbar
expecting success of 3070.303 'wildmatch: match 'foobazbar' 'foo**bar'':
test-tool wildmatch wildmatch 'foobazbar' 'foo**bar'
ok 303 - wildmatch: match 'foobazbar' 'foo**bar'
expecting success of 3070.304 'wildmatch (via ls-files): match 'foo**bar' 'foobazbar'':
printf '%s' 'foobazbar' >expect &&
git --glob-pathspecs ls-files -z -- 'foo**bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 304 - wildmatch (via ls-files): match 'foo**bar' 'foobazbar'
expecting success of 3070.305 'iwildmatch: match 'foobazbar' 'foo**bar'':
test-tool wildmatch iwildmatch 'foobazbar' 'foo**bar'
ok 305 - iwildmatch: match 'foobazbar' 'foo**bar'
expecting success of 3070.306 'iwildmatch (via ls-files): match 'foo**bar' 'foobazbar'':
printf '%s' 'foobazbar' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'foo**bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 306 - iwildmatch (via ls-files): match 'foo**bar' 'foobazbar'
expecting success of 3070.307 'pathmatch: match 'foobazbar' 'foo**bar'':
test-tool wildmatch pathmatch 'foobazbar' 'foo**bar'
ok 307 - pathmatch: match 'foobazbar' 'foo**bar'
expecting success of 3070.308 'pathmatch (via ls-files): match 'foo**bar' 'foobazbar'':
printf '%s' 'foobazbar' >expect &&
git ls-files -z -- 'foo**bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 308 - pathmatch (via ls-files): match 'foo**bar' 'foobazbar'
expecting success of 3070.309 'ipathmatch: match 'foobazbar' 'foo**bar'':
test-tool wildmatch ipathmatch 'foobazbar' 'foo**bar'
ok 309 - ipathmatch: match 'foobazbar' 'foo**bar'
expecting success of 3070.310 'ipathmatch (via ls-files): match 'foo**bar' 'foobazbar'':
printf '%s' 'foobazbar' >expect &&
git --icase-pathspecs ls-files -z -- 'foo**bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 310 - ipathmatch (via ls-files): match 'foo**bar' 'foobazbar'
expecting success of 3070.311 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foobazbar
ok 311 - cleanup after previous file test
expecting success of 3070.312 'setup match file test for foo/baz/bar':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 312 - setup match file test for foo/baz/bar
expecting success of 3070.313 'wildmatch: match 'foo/baz/bar' 'foo/**/bar'':
test-tool wildmatch wildmatch 'foo/baz/bar' 'foo/**/bar'
ok 313 - wildmatch: match 'foo/baz/bar' 'foo/**/bar'
expecting success of 3070.314 'wildmatch (via ls-files): match 'foo/**/bar' 'foo/baz/bar'':
printf '%s' 'foo/baz/bar' >expect &&
git --glob-pathspecs ls-files -z -- 'foo/**/bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 314 - wildmatch (via ls-files): match 'foo/**/bar' 'foo/baz/bar'
expecting success of 3070.315 'iwildmatch: match 'foo/baz/bar' 'foo/**/bar'':
test-tool wildmatch iwildmatch 'foo/baz/bar' 'foo/**/bar'
ok 315 - iwildmatch: match 'foo/baz/bar' 'foo/**/bar'
expecting success of 3070.316 'iwildmatch (via ls-files): match 'foo/**/bar' 'foo/baz/bar'':
printf '%s' 'foo/baz/bar' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'foo/**/bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 316 - iwildmatch (via ls-files): match 'foo/**/bar' 'foo/baz/bar'
expecting success of 3070.317 'pathmatch: match 'foo/baz/bar' 'foo/**/bar'':
test-tool wildmatch pathmatch 'foo/baz/bar' 'foo/**/bar'
ok 317 - pathmatch: match 'foo/baz/bar' 'foo/**/bar'
expecting success of 3070.318 'pathmatch (via ls-files): match 'foo/**/bar' 'foo/baz/bar'':
printf '%s' 'foo/baz/bar' >expect &&
git ls-files -z -- 'foo/**/bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 318 - pathmatch (via ls-files): match 'foo/**/bar' 'foo/baz/bar'
expecting success of 3070.319 'ipathmatch: match 'foo/baz/bar' 'foo/**/bar'':
test-tool wildmatch ipathmatch 'foo/baz/bar' 'foo/**/bar'
ok 319 - ipathmatch: match 'foo/baz/bar' 'foo/**/bar'
expecting success of 3070.320 'ipathmatch (via ls-files): match 'foo/**/bar' 'foo/baz/bar'':
printf '%s' 'foo/baz/bar' >expect &&
git --icase-pathspecs ls-files -z -- 'foo/**/bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 320 - ipathmatch (via ls-files): match 'foo/**/bar' 'foo/baz/bar'
expecting success of 3070.321 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo/
ok 321 - cleanup after previous file test
expecting success of 3070.322 'setup match file test for foo/baz/bar':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 322 - setup match file test for foo/baz/bar
expecting success of 3070.323 'wildmatch: match 'foo/baz/bar' 'foo/**/**/bar'':
test-tool wildmatch wildmatch 'foo/baz/bar' 'foo/**/**/bar'
ok 323 - wildmatch: match 'foo/baz/bar' 'foo/**/**/bar'
expecting success of 3070.324 'wildmatch (via ls-files): match 'foo/**/**/bar' 'foo/baz/bar'':
printf '%s' 'foo/baz/bar' >expect &&
git --glob-pathspecs ls-files -z -- 'foo/**/**/bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 324 - wildmatch (via ls-files): match 'foo/**/**/bar' 'foo/baz/bar'
expecting success of 3070.325 'iwildmatch: match 'foo/baz/bar' 'foo/**/**/bar'':
test-tool wildmatch iwildmatch 'foo/baz/bar' 'foo/**/**/bar'
ok 325 - iwildmatch: match 'foo/baz/bar' 'foo/**/**/bar'
expecting success of 3070.326 'iwildmatch (via ls-files): match 'foo/**/**/bar' 'foo/baz/bar'':
printf '%s' 'foo/baz/bar' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'foo/**/**/bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 326 - iwildmatch (via ls-files): match 'foo/**/**/bar' 'foo/baz/bar'
expecting success of 3070.327 'pathmatch: no match 'foo/baz/bar' 'foo/**/**/bar'':
test_must_fail test-tool wildmatch pathmatch 'foo/baz/bar' 'foo/**/**/bar'
ok 327 - pathmatch: no match 'foo/baz/bar' 'foo/**/**/bar'
expecting success of 3070.328 'pathmatch (via ls-files): no match 'foo/**/**/bar' 'foo/baz/bar'':
>expect &&
git ls-files -z -- 'foo/**/**/bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 328 - pathmatch (via ls-files): no match 'foo/**/**/bar' 'foo/baz/bar'
expecting success of 3070.329 'ipathmatch: no match 'foo/baz/bar' 'foo/**/**/bar'':
test_must_fail test-tool wildmatch ipathmatch 'foo/baz/bar' 'foo/**/**/bar'
ok 329 - ipathmatch: no match 'foo/baz/bar' 'foo/**/**/bar'
expecting success of 3070.330 'ipathmatch (via ls-files): no match 'foo/**/**/bar' 'foo/baz/bar'':
>expect &&
git --icase-pathspecs ls-files -z -- 'foo/**/**/bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 330 - ipathmatch (via ls-files): no match 'foo/**/**/bar' 'foo/baz/bar'
expecting success of 3070.331 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo/
ok 331 - cleanup after previous file test
expecting success of 3070.332 'setup match file test for foo/b/a/z/bar':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 332 - setup match file test for foo/b/a/z/bar
expecting success of 3070.333 'wildmatch: match 'foo/b/a/z/bar' 'foo/**/bar'':
test-tool wildmatch wildmatch 'foo/b/a/z/bar' 'foo/**/bar'
ok 333 - wildmatch: match 'foo/b/a/z/bar' 'foo/**/bar'
expecting success of 3070.334 'wildmatch (via ls-files): match 'foo/**/bar' 'foo/b/a/z/bar'':
printf '%s' 'foo/b/a/z/bar' >expect &&
git --glob-pathspecs ls-files -z -- 'foo/**/bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 334 - wildmatch (via ls-files): match 'foo/**/bar' 'foo/b/a/z/bar'
expecting success of 3070.335 'iwildmatch: match 'foo/b/a/z/bar' 'foo/**/bar'':
test-tool wildmatch iwildmatch 'foo/b/a/z/bar' 'foo/**/bar'
ok 335 - iwildmatch: match 'foo/b/a/z/bar' 'foo/**/bar'
expecting success of 3070.336 'iwildmatch (via ls-files): match 'foo/**/bar' 'foo/b/a/z/bar'':
printf '%s' 'foo/b/a/z/bar' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'foo/**/bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 336 - iwildmatch (via ls-files): match 'foo/**/bar' 'foo/b/a/z/bar'
expecting success of 3070.337 'pathmatch: match 'foo/b/a/z/bar' 'foo/**/bar'':
test-tool wildmatch pathmatch 'foo/b/a/z/bar' 'foo/**/bar'
ok 337 - pathmatch: match 'foo/b/a/z/bar' 'foo/**/bar'
expecting success of 3070.338 'pathmatch (via ls-files): match 'foo/**/bar' 'foo/b/a/z/bar'':
printf '%s' 'foo/b/a/z/bar' >expect &&
git ls-files -z -- 'foo/**/bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 338 - pathmatch (via ls-files): match 'foo/**/bar' 'foo/b/a/z/bar'
expecting success of 3070.339 'ipathmatch: match 'foo/b/a/z/bar' 'foo/**/bar'':
test-tool wildmatch ipathmatch 'foo/b/a/z/bar' 'foo/**/bar'
ok 339 - ipathmatch: match 'foo/b/a/z/bar' 'foo/**/bar'
expecting success of 3070.340 'ipathmatch (via ls-files): match 'foo/**/bar' 'foo/b/a/z/bar'':
printf '%s' 'foo/b/a/z/bar' >expect &&
git --icase-pathspecs ls-files -z -- 'foo/**/bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 340 - ipathmatch (via ls-files): match 'foo/**/bar' 'foo/b/a/z/bar'
expecting success of 3070.341 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo/
ok 341 - cleanup after previous file test
expecting success of 3070.342 'setup match file test for foo/b/a/z/bar':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 342 - setup match file test for foo/b/a/z/bar
expecting success of 3070.343 'wildmatch: match 'foo/b/a/z/bar' 'foo/**/**/bar'':
test-tool wildmatch wildmatch 'foo/b/a/z/bar' 'foo/**/**/bar'
ok 343 - wildmatch: match 'foo/b/a/z/bar' 'foo/**/**/bar'
expecting success of 3070.344 'wildmatch (via ls-files): match 'foo/**/**/bar' 'foo/b/a/z/bar'':
printf '%s' 'foo/b/a/z/bar' >expect &&
git --glob-pathspecs ls-files -z -- 'foo/**/**/bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 344 - wildmatch (via ls-files): match 'foo/**/**/bar' 'foo/b/a/z/bar'
expecting success of 3070.345 'iwildmatch: match 'foo/b/a/z/bar' 'foo/**/**/bar'':
test-tool wildmatch iwildmatch 'foo/b/a/z/bar' 'foo/**/**/bar'
ok 345 - iwildmatch: match 'foo/b/a/z/bar' 'foo/**/**/bar'
expecting success of 3070.346 'iwildmatch (via ls-files): match 'foo/**/**/bar' 'foo/b/a/z/bar'':
printf '%s' 'foo/b/a/z/bar' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'foo/**/**/bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 346 - iwildmatch (via ls-files): match 'foo/**/**/bar' 'foo/b/a/z/bar'
expecting success of 3070.347 'pathmatch: match 'foo/b/a/z/bar' 'foo/**/**/bar'':
test-tool wildmatch pathmatch 'foo/b/a/z/bar' 'foo/**/**/bar'
ok 347 - pathmatch: match 'foo/b/a/z/bar' 'foo/**/**/bar'
expecting success of 3070.348 'pathmatch (via ls-files): match 'foo/**/**/bar' 'foo/b/a/z/bar'':
printf '%s' 'foo/b/a/z/bar' >expect &&
git ls-files -z -- 'foo/**/**/bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 348 - pathmatch (via ls-files): match 'foo/**/**/bar' 'foo/b/a/z/bar'
expecting success of 3070.349 'ipathmatch: match 'foo/b/a/z/bar' 'foo/**/**/bar'':
test-tool wildmatch ipathmatch 'foo/b/a/z/bar' 'foo/**/**/bar'
ok 349 - ipathmatch: match 'foo/b/a/z/bar' 'foo/**/**/bar'
expecting success of 3070.350 'ipathmatch (via ls-files): match 'foo/**/**/bar' 'foo/b/a/z/bar'':
printf '%s' 'foo/b/a/z/bar' >expect &&
git --icase-pathspecs ls-files -z -- 'foo/**/**/bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 350 - ipathmatch (via ls-files): match 'foo/**/**/bar' 'foo/b/a/z/bar'
expecting success of 3070.351 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo/
ok 351 - cleanup after previous file test
expecting success of 3070.352 'setup match file test for foo/bar':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 352 - setup match file test for foo/bar
expecting success of 3070.353 'wildmatch: match 'foo/bar' 'foo/**/bar'':
test-tool wildmatch wildmatch 'foo/bar' 'foo/**/bar'
ok 353 - wildmatch: match 'foo/bar' 'foo/**/bar'
expecting success of 3070.354 'wildmatch (via ls-files): match 'foo/**/bar' 'foo/bar'':
printf '%s' 'foo/bar' >expect &&
git --glob-pathspecs ls-files -z -- 'foo/**/bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 354 - wildmatch (via ls-files): match 'foo/**/bar' 'foo/bar'
expecting success of 3070.355 'iwildmatch: match 'foo/bar' 'foo/**/bar'':
test-tool wildmatch iwildmatch 'foo/bar' 'foo/**/bar'
ok 355 - iwildmatch: match 'foo/bar' 'foo/**/bar'
expecting success of 3070.356 'iwildmatch (via ls-files): match 'foo/**/bar' 'foo/bar'':
printf '%s' 'foo/bar' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'foo/**/bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 356 - iwildmatch (via ls-files): match 'foo/**/bar' 'foo/bar'
expecting success of 3070.357 'pathmatch: no match 'foo/bar' 'foo/**/bar'':
test_must_fail test-tool wildmatch pathmatch 'foo/bar' 'foo/**/bar'
ok 357 - pathmatch: no match 'foo/bar' 'foo/**/bar'
expecting success of 3070.358 'pathmatch (via ls-files): no match 'foo/**/bar' 'foo/bar'':
>expect &&
git ls-files -z -- 'foo/**/bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 358 - pathmatch (via ls-files): no match 'foo/**/bar' 'foo/bar'
expecting success of 3070.359 'ipathmatch: no match 'foo/bar' 'foo/**/bar'':
test_must_fail test-tool wildmatch ipathmatch 'foo/bar' 'foo/**/bar'
ok 359 - ipathmatch: no match 'foo/bar' 'foo/**/bar'
expecting success of 3070.360 'ipathmatch (via ls-files): no match 'foo/**/bar' 'foo/bar'':
>expect &&
git --icase-pathspecs ls-files -z -- 'foo/**/bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 360 - ipathmatch (via ls-files): no match 'foo/**/bar' 'foo/bar'
expecting success of 3070.361 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo/
ok 361 - cleanup after previous file test
expecting success of 3070.362 'setup match file test for foo/bar':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 362 - setup match file test for foo/bar
expecting success of 3070.363 'wildmatch: match 'foo/bar' 'foo/**/**/bar'':
test-tool wildmatch wildmatch 'foo/bar' 'foo/**/**/bar'
ok 363 - wildmatch: match 'foo/bar' 'foo/**/**/bar'
expecting success of 3070.364 'wildmatch (via ls-files): match 'foo/**/**/bar' 'foo/bar'':
printf '%s' 'foo/bar' >expect &&
git --glob-pathspecs ls-files -z -- 'foo/**/**/bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 364 - wildmatch (via ls-files): match 'foo/**/**/bar' 'foo/bar'
expecting success of 3070.365 'iwildmatch: match 'foo/bar' 'foo/**/**/bar'':
test-tool wildmatch iwildmatch 'foo/bar' 'foo/**/**/bar'
ok 365 - iwildmatch: match 'foo/bar' 'foo/**/**/bar'
expecting success of 3070.366 'iwildmatch (via ls-files): match 'foo/**/**/bar' 'foo/bar'':
printf '%s' 'foo/bar' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'foo/**/**/bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 366 - iwildmatch (via ls-files): match 'foo/**/**/bar' 'foo/bar'
expecting success of 3070.367 'pathmatch: no match 'foo/bar' 'foo/**/**/bar'':
test_must_fail test-tool wildmatch pathmatch 'foo/bar' 'foo/**/**/bar'
ok 367 - pathmatch: no match 'foo/bar' 'foo/**/**/bar'
expecting success of 3070.368 'pathmatch (via ls-files): no match 'foo/**/**/bar' 'foo/bar'':
>expect &&
git ls-files -z -- 'foo/**/**/bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 368 - pathmatch (via ls-files): no match 'foo/**/**/bar' 'foo/bar'
expecting success of 3070.369 'ipathmatch: no match 'foo/bar' 'foo/**/**/bar'':
test_must_fail test-tool wildmatch ipathmatch 'foo/bar' 'foo/**/**/bar'
ok 369 - ipathmatch: no match 'foo/bar' 'foo/**/**/bar'
expecting success of 3070.370 'ipathmatch (via ls-files): no match 'foo/**/**/bar' 'foo/bar'':
>expect &&
git --icase-pathspecs ls-files -z -- 'foo/**/**/bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 370 - ipathmatch (via ls-files): no match 'foo/**/**/bar' 'foo/bar'
expecting success of 3070.371 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo/
ok 371 - cleanup after previous file test
expecting success of 3070.372 'setup match file test for foo/bar':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 372 - setup match file test for foo/bar
expecting success of 3070.373 'wildmatch: no match 'foo/bar' 'foo?bar'':
test_must_fail test-tool wildmatch wildmatch 'foo/bar' 'foo?bar'
ok 373 - wildmatch: no match 'foo/bar' 'foo?bar'
expecting success of 3070.374 'wildmatch (via ls-files): no match 'foo?bar' 'foo/bar'':
>expect &&
git --glob-pathspecs ls-files -z -- 'foo?bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 374 - wildmatch (via ls-files): no match 'foo?bar' 'foo/bar'
expecting success of 3070.375 'iwildmatch: no match 'foo/bar' 'foo?bar'':
test_must_fail test-tool wildmatch iwildmatch 'foo/bar' 'foo?bar'
ok 375 - iwildmatch: no match 'foo/bar' 'foo?bar'
expecting success of 3070.376 'iwildmatch (via ls-files): no match 'foo?bar' 'foo/bar'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'foo?bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 376 - iwildmatch (via ls-files): no match 'foo?bar' 'foo/bar'
expecting success of 3070.377 'pathmatch: match 'foo/bar' 'foo?bar'':
test-tool wildmatch pathmatch 'foo/bar' 'foo?bar'
ok 377 - pathmatch: match 'foo/bar' 'foo?bar'
expecting success of 3070.378 'pathmatch (via ls-files): match 'foo?bar' 'foo/bar'':
printf '%s' 'foo/bar' >expect &&
git ls-files -z -- 'foo?bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 378 - pathmatch (via ls-files): match 'foo?bar' 'foo/bar'
expecting success of 3070.379 'ipathmatch: match 'foo/bar' 'foo?bar'':
test-tool wildmatch ipathmatch 'foo/bar' 'foo?bar'
ok 379 - ipathmatch: match 'foo/bar' 'foo?bar'
expecting success of 3070.380 'ipathmatch (via ls-files): match 'foo?bar' 'foo/bar'':
printf '%s' 'foo/bar' >expect &&
git --icase-pathspecs ls-files -z -- 'foo?bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 380 - ipathmatch (via ls-files): match 'foo?bar' 'foo/bar'
expecting success of 3070.381 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo/
ok 381 - cleanup after previous file test
expecting success of 3070.382 'setup match file test for foo/bar':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 382 - setup match file test for foo/bar
expecting success of 3070.383 'wildmatch: no match 'foo/bar' 'foo[/]bar'':
test_must_fail test-tool wildmatch wildmatch 'foo/bar' 'foo[/]bar'
ok 383 - wildmatch: no match 'foo/bar' 'foo[/]bar'
expecting success of 3070.384 'wildmatch (via ls-files): no match 'foo[/]bar' 'foo/bar'':
>expect &&
git --glob-pathspecs ls-files -z -- 'foo[/]bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 384 - wildmatch (via ls-files): no match 'foo[/]bar' 'foo/bar'
expecting success of 3070.385 'iwildmatch: no match 'foo/bar' 'foo[/]bar'':
test_must_fail test-tool wildmatch iwildmatch 'foo/bar' 'foo[/]bar'
ok 385 - iwildmatch: no match 'foo/bar' 'foo[/]bar'
expecting success of 3070.386 'iwildmatch (via ls-files): no match 'foo[/]bar' 'foo/bar'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'foo[/]bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 386 - iwildmatch (via ls-files): no match 'foo[/]bar' 'foo/bar'
expecting success of 3070.387 'pathmatch: match 'foo/bar' 'foo[/]bar'':
test-tool wildmatch pathmatch 'foo/bar' 'foo[/]bar'
ok 387 - pathmatch: match 'foo/bar' 'foo[/]bar'
expecting success of 3070.388 'pathmatch (via ls-files): match 'foo[/]bar' 'foo/bar'':
printf '%s' 'foo/bar' >expect &&
git ls-files -z -- 'foo[/]bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 388 - pathmatch (via ls-files): match 'foo[/]bar' 'foo/bar'
expecting success of 3070.389 'ipathmatch: match 'foo/bar' 'foo[/]bar'':
test-tool wildmatch ipathmatch 'foo/bar' 'foo[/]bar'
ok 389 - ipathmatch: match 'foo/bar' 'foo[/]bar'
expecting success of 3070.390 'ipathmatch (via ls-files): match 'foo[/]bar' 'foo/bar'':
printf '%s' 'foo/bar' >expect &&
git --icase-pathspecs ls-files -z -- 'foo[/]bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 390 - ipathmatch (via ls-files): match 'foo[/]bar' 'foo/bar'
expecting success of 3070.391 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo/
ok 391 - cleanup after previous file test
expecting success of 3070.392 'setup match file test for foo/bar':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 392 - setup match file test for foo/bar
expecting success of 3070.393 'wildmatch: no match 'foo/bar' 'foo[^a-z]bar'':
test_must_fail test-tool wildmatch wildmatch 'foo/bar' 'foo[^a-z]bar'
ok 393 - wildmatch: no match 'foo/bar' 'foo[^a-z]bar'
expecting success of 3070.394 'wildmatch (via ls-files): no match 'foo[^a-z]bar' 'foo/bar'':
>expect &&
git --glob-pathspecs ls-files -z -- 'foo[^a-z]bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 394 - wildmatch (via ls-files): no match 'foo[^a-z]bar' 'foo/bar'
expecting success of 3070.395 'iwildmatch: no match 'foo/bar' 'foo[^a-z]bar'':
test_must_fail test-tool wildmatch iwildmatch 'foo/bar' 'foo[^a-z]bar'
ok 395 - iwildmatch: no match 'foo/bar' 'foo[^a-z]bar'
expecting success of 3070.396 'iwildmatch (via ls-files): no match 'foo[^a-z]bar' 'foo/bar'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'foo[^a-z]bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 396 - iwildmatch (via ls-files): no match 'foo[^a-z]bar' 'foo/bar'
expecting success of 3070.397 'pathmatch: match 'foo/bar' 'foo[^a-z]bar'':
test-tool wildmatch pathmatch 'foo/bar' 'foo[^a-z]bar'
ok 397 - pathmatch: match 'foo/bar' 'foo[^a-z]bar'
expecting success of 3070.398 'pathmatch (via ls-files): match 'foo[^a-z]bar' 'foo/bar'':
printf '%s' 'foo/bar' >expect &&
git ls-files -z -- 'foo[^a-z]bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 398 - pathmatch (via ls-files): match 'foo[^a-z]bar' 'foo/bar'
expecting success of 3070.399 'ipathmatch: match 'foo/bar' 'foo[^a-z]bar'':
test-tool wildmatch ipathmatch 'foo/bar' 'foo[^a-z]bar'
ok 399 - ipathmatch: match 'foo/bar' 'foo[^a-z]bar'
expecting success of 3070.400 'ipathmatch (via ls-files): match 'foo[^a-z]bar' 'foo/bar'':
printf '%s' 'foo/bar' >expect &&
git --icase-pathspecs ls-files -z -- 'foo[^a-z]bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 400 - ipathmatch (via ls-files): match 'foo[^a-z]bar' 'foo/bar'
expecting success of 3070.401 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo/
ok 401 - cleanup after previous file test
expecting success of 3070.402 'setup match file test for foo/bar':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 402 - setup match file test for foo/bar
expecting success of 3070.403 'wildmatch: no match 'foo/bar' 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r'':
test_must_fail test-tool wildmatch wildmatch 'foo/bar' 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r'
ok 403 - wildmatch: no match 'foo/bar' 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r'
expecting success of 3070.404 'wildmatch (via ls-files): no match 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r' 'foo/bar'':
>expect &&
git --glob-pathspecs ls-files -z -- 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 404 - wildmatch (via ls-files): no match 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r' 'foo/bar'
expecting success of 3070.405 'iwildmatch: no match 'foo/bar' 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r'':
test_must_fail test-tool wildmatch iwildmatch 'foo/bar' 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r'
ok 405 - iwildmatch: no match 'foo/bar' 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r'
expecting success of 3070.406 'iwildmatch (via ls-files): no match 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r' 'foo/bar'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 406 - iwildmatch (via ls-files): no match 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r' 'foo/bar'
expecting success of 3070.407 'pathmatch: match 'foo/bar' 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r'':
test-tool wildmatch pathmatch 'foo/bar' 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r'
ok 407 - pathmatch: match 'foo/bar' 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r'
expecting success of 3070.408 'pathmatch (via ls-files): match 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r' 'foo/bar'':
printf '%s' 'foo/bar' >expect &&
git ls-files -z -- 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 408 - pathmatch (via ls-files): match 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r' 'foo/bar'
expecting success of 3070.409 'ipathmatch: match 'foo/bar' 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r'':
test-tool wildmatch ipathmatch 'foo/bar' 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r'
ok 409 - ipathmatch: match 'foo/bar' 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r'
expecting success of 3070.410 'ipathmatch (via ls-files): match 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r' 'foo/bar'':
printf '%s' 'foo/bar' >expect &&
git --icase-pathspecs ls-files -z -- 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 410 - ipathmatch (via ls-files): match 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r' 'foo/bar'
expecting success of 3070.411 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo/
ok 411 - cleanup after previous file test
expecting success of 3070.412 'setup match file test for foo-bar':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 412 - setup match file test for foo-bar
expecting success of 3070.413 'wildmatch: match 'foo-bar' 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r'':
test-tool wildmatch wildmatch 'foo-bar' 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r'
ok 413 - wildmatch: match 'foo-bar' 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r'
expecting success of 3070.414 'wildmatch (via ls-files): match 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r' 'foo-bar'':
printf '%s' 'foo-bar' >expect &&
git --glob-pathspecs ls-files -z -- 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 414 - wildmatch (via ls-files): match 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r' 'foo-bar'
expecting success of 3070.415 'iwildmatch: match 'foo-bar' 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r'':
test-tool wildmatch iwildmatch 'foo-bar' 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r'
ok 415 - iwildmatch: match 'foo-bar' 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r'
expecting success of 3070.416 'iwildmatch (via ls-files): match 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r' 'foo-bar'':
printf '%s' 'foo-bar' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 416 - iwildmatch (via ls-files): match 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r' 'foo-bar'
expecting success of 3070.417 'pathmatch: match 'foo-bar' 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r'':
test-tool wildmatch pathmatch 'foo-bar' 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r'
ok 417 - pathmatch: match 'foo-bar' 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r'
expecting success of 3070.418 'pathmatch (via ls-files): match 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r' 'foo-bar'':
printf '%s' 'foo-bar' >expect &&
git ls-files -z -- 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 418 - pathmatch (via ls-files): match 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r' 'foo-bar'
expecting success of 3070.419 'ipathmatch: match 'foo-bar' 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r'':
test-tool wildmatch ipathmatch 'foo-bar' 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r'
ok 419 - ipathmatch: match 'foo-bar' 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r'
expecting success of 3070.420 'ipathmatch (via ls-files): match 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r' 'foo-bar'':
printf '%s' 'foo-bar' >expect &&
git --icase-pathspecs ls-files -z -- 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 420 - ipathmatch (via ls-files): match 'f[^eiu][^eiu][^eiu][^eiu][^eiu]r' 'foo-bar'
expecting success of 3070.421 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo-bar
ok 421 - cleanup after previous file test
expecting success of 3070.422 'setup match file test for foo':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 422 - setup match file test for foo
expecting success of 3070.423 'wildmatch: match 'foo' '**/foo'':
test-tool wildmatch wildmatch 'foo' '**/foo'
ok 423 - wildmatch: match 'foo' '**/foo'
expecting success of 3070.424 'wildmatch (via ls-files): match '**/foo' 'foo'':
printf '%s' 'foo' >expect &&
git --glob-pathspecs ls-files -z -- '**/foo' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 424 - wildmatch (via ls-files): match '**/foo' 'foo'
expecting success of 3070.425 'iwildmatch: match 'foo' '**/foo'':
test-tool wildmatch iwildmatch 'foo' '**/foo'
ok 425 - iwildmatch: match 'foo' '**/foo'
expecting success of 3070.426 'iwildmatch (via ls-files): match '**/foo' 'foo'':
printf '%s' 'foo' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '**/foo' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 426 - iwildmatch (via ls-files): match '**/foo' 'foo'
expecting success of 3070.427 'pathmatch: no match 'foo' '**/foo'':
test_must_fail test-tool wildmatch pathmatch 'foo' '**/foo'
ok 427 - pathmatch: no match 'foo' '**/foo'
expecting success of 3070.428 'pathmatch (via ls-files): no match '**/foo' 'foo'':
>expect &&
git ls-files -z -- '**/foo' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 428 - pathmatch (via ls-files): no match '**/foo' 'foo'
expecting success of 3070.429 'ipathmatch: no match 'foo' '**/foo'':
test_must_fail test-tool wildmatch ipathmatch 'foo' '**/foo'
ok 429 - ipathmatch: no match 'foo' '**/foo'
expecting success of 3070.430 'ipathmatch (via ls-files): no match '**/foo' 'foo'':
>expect &&
git --icase-pathspecs ls-files -z -- '**/foo' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 430 - ipathmatch (via ls-files): no match '**/foo' 'foo'
expecting success of 3070.431 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo
ok 431 - cleanup after previous file test
expecting success of 3070.432 'setup match file test for XXX/foo':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 432 - setup match file test for XXX/foo
expecting success of 3070.433 'wildmatch: match 'XXX/foo' '**/foo'':
test-tool wildmatch wildmatch 'XXX/foo' '**/foo'
ok 433 - wildmatch: match 'XXX/foo' '**/foo'
expecting success of 3070.434 'wildmatch (via ls-files): match '**/foo' 'XXX/foo'':
printf '%s' 'XXX/foo' >expect &&
git --glob-pathspecs ls-files -z -- '**/foo' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 434 - wildmatch (via ls-files): match '**/foo' 'XXX/foo'
expecting success of 3070.435 'iwildmatch: match 'XXX/foo' '**/foo'':
test-tool wildmatch iwildmatch 'XXX/foo' '**/foo'
ok 435 - iwildmatch: match 'XXX/foo' '**/foo'
expecting success of 3070.436 'iwildmatch (via ls-files): match '**/foo' 'XXX/foo'':
printf '%s' 'XXX/foo' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '**/foo' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 436 - iwildmatch (via ls-files): match '**/foo' 'XXX/foo'
expecting success of 3070.437 'pathmatch: match 'XXX/foo' '**/foo'':
test-tool wildmatch pathmatch 'XXX/foo' '**/foo'
ok 437 - pathmatch: match 'XXX/foo' '**/foo'
expecting success of 3070.438 'pathmatch (via ls-files): match '**/foo' 'XXX/foo'':
printf '%s' 'XXX/foo' >expect &&
git ls-files -z -- '**/foo' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 438 - pathmatch (via ls-files): match '**/foo' 'XXX/foo'
expecting success of 3070.439 'ipathmatch: match 'XXX/foo' '**/foo'':
test-tool wildmatch ipathmatch 'XXX/foo' '**/foo'
ok 439 - ipathmatch: match 'XXX/foo' '**/foo'
expecting success of 3070.440 'ipathmatch (via ls-files): match '**/foo' 'XXX/foo'':
printf '%s' 'XXX/foo' >expect &&
git --icase-pathspecs ls-files -z -- '**/foo' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 440 - ipathmatch (via ls-files): match '**/foo' 'XXX/foo'
expecting success of 3070.441 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing XXX/
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 441 - cleanup after previous file test
expecting success of 3070.442 'setup match file test for bar/baz/foo':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 442 - setup match file test for bar/baz/foo
expecting success of 3070.443 'wildmatch: match 'bar/baz/foo' '**/foo'':
test-tool wildmatch wildmatch 'bar/baz/foo' '**/foo'
ok 443 - wildmatch: match 'bar/baz/foo' '**/foo'
expecting success of 3070.444 'wildmatch (via ls-files): match '**/foo' 'bar/baz/foo'':
printf '%s' 'bar/baz/foo' >expect &&
git --glob-pathspecs ls-files -z -- '**/foo' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 444 - wildmatch (via ls-files): match '**/foo' 'bar/baz/foo'
expecting success of 3070.445 'iwildmatch: match 'bar/baz/foo' '**/foo'':
test-tool wildmatch iwildmatch 'bar/baz/foo' '**/foo'
ok 445 - iwildmatch: match 'bar/baz/foo' '**/foo'
expecting success of 3070.446 'iwildmatch (via ls-files): match '**/foo' 'bar/baz/foo'':
printf '%s' 'bar/baz/foo' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '**/foo' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 446 - iwildmatch (via ls-files): match '**/foo' 'bar/baz/foo'
expecting success of 3070.447 'pathmatch: match 'bar/baz/foo' '**/foo'':
test-tool wildmatch pathmatch 'bar/baz/foo' '**/foo'
ok 447 - pathmatch: match 'bar/baz/foo' '**/foo'
expecting success of 3070.448 'pathmatch (via ls-files): match '**/foo' 'bar/baz/foo'':
printf '%s' 'bar/baz/foo' >expect &&
git ls-files -z -- '**/foo' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 448 - pathmatch (via ls-files): match '**/foo' 'bar/baz/foo'
expecting success of 3070.449 'ipathmatch: match 'bar/baz/foo' '**/foo'':
test-tool wildmatch ipathmatch 'bar/baz/foo' '**/foo'
ok 449 - ipathmatch: match 'bar/baz/foo' '**/foo'
expecting success of 3070.450 'ipathmatch (via ls-files): match '**/foo' 'bar/baz/foo'':
printf '%s' 'bar/baz/foo' >expect &&
git --icase-pathspecs ls-files -z -- '**/foo' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 450 - ipathmatch (via ls-files): match '**/foo' 'bar/baz/foo'
expecting success of 3070.451 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing bar/
Removing expect
ok 451 - cleanup after previous file test
expecting success of 3070.452 'setup match file test for bar/baz/foo':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 452 - setup match file test for bar/baz/foo
expecting success of 3070.453 'wildmatch: no match 'bar/baz/foo' '*/foo'':
test_must_fail test-tool wildmatch wildmatch 'bar/baz/foo' '*/foo'
ok 453 - wildmatch: no match 'bar/baz/foo' '*/foo'
expecting success of 3070.454 'wildmatch (via ls-files): no match '*/foo' 'bar/baz/foo'':
>expect &&
git --glob-pathspecs ls-files -z -- '*/foo' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 454 - wildmatch (via ls-files): no match '*/foo' 'bar/baz/foo'
expecting success of 3070.455 'iwildmatch: no match 'bar/baz/foo' '*/foo'':
test_must_fail test-tool wildmatch iwildmatch 'bar/baz/foo' '*/foo'
ok 455 - iwildmatch: no match 'bar/baz/foo' '*/foo'
expecting success of 3070.456 'iwildmatch (via ls-files): no match '*/foo' 'bar/baz/foo'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '*/foo' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 456 - iwildmatch (via ls-files): no match '*/foo' 'bar/baz/foo'
expecting success of 3070.457 'pathmatch: match 'bar/baz/foo' '*/foo'':
test-tool wildmatch pathmatch 'bar/baz/foo' '*/foo'
ok 457 - pathmatch: match 'bar/baz/foo' '*/foo'
expecting success of 3070.458 'pathmatch (via ls-files): match '*/foo' 'bar/baz/foo'':
printf '%s' 'bar/baz/foo' >expect &&
git ls-files -z -- '*/foo' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 458 - pathmatch (via ls-files): match '*/foo' 'bar/baz/foo'
expecting success of 3070.459 'ipathmatch: match 'bar/baz/foo' '*/foo'':
test-tool wildmatch ipathmatch 'bar/baz/foo' '*/foo'
ok 459 - ipathmatch: match 'bar/baz/foo' '*/foo'
expecting success of 3070.460 'ipathmatch (via ls-files): match '*/foo' 'bar/baz/foo'':
printf '%s' 'bar/baz/foo' >expect &&
git --icase-pathspecs ls-files -z -- '*/foo' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 460 - ipathmatch (via ls-files): match '*/foo' 'bar/baz/foo'
expecting success of 3070.461 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing bar/
Removing expect
ok 461 - cleanup after previous file test
expecting success of 3070.462 'setup match file test for foo/bar/baz':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 462 - setup match file test for foo/bar/baz
expecting success of 3070.463 'wildmatch: no match 'foo/bar/baz' '**/bar*'':
test_must_fail test-tool wildmatch wildmatch 'foo/bar/baz' '**/bar*'
ok 463 - wildmatch: no match 'foo/bar/baz' '**/bar*'
expecting success of 3070.464 'wildmatch (via ls-files): no match '**/bar*' 'foo/bar/baz'':
>expect &&
git --glob-pathspecs ls-files -z -- '**/bar*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 464 - wildmatch (via ls-files): no match '**/bar*' 'foo/bar/baz'
expecting success of 3070.465 'iwildmatch: no match 'foo/bar/baz' '**/bar*'':
test_must_fail test-tool wildmatch iwildmatch 'foo/bar/baz' '**/bar*'
ok 465 - iwildmatch: no match 'foo/bar/baz' '**/bar*'
expecting success of 3070.466 'iwildmatch (via ls-files): no match '**/bar*' 'foo/bar/baz'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '**/bar*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 466 - iwildmatch (via ls-files): no match '**/bar*' 'foo/bar/baz'
expecting success of 3070.467 'pathmatch: match 'foo/bar/baz' '**/bar*'':
test-tool wildmatch pathmatch 'foo/bar/baz' '**/bar*'
ok 467 - pathmatch: match 'foo/bar/baz' '**/bar*'
expecting success of 3070.468 'pathmatch (via ls-files): match '**/bar*' 'foo/bar/baz'':
printf '%s' 'foo/bar/baz' >expect &&
git ls-files -z -- '**/bar*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 468 - pathmatch (via ls-files): match '**/bar*' 'foo/bar/baz'
expecting success of 3070.469 'ipathmatch: match 'foo/bar/baz' '**/bar*'':
test-tool wildmatch ipathmatch 'foo/bar/baz' '**/bar*'
ok 469 - ipathmatch: match 'foo/bar/baz' '**/bar*'
expecting success of 3070.470 'ipathmatch (via ls-files): match '**/bar*' 'foo/bar/baz'':
printf '%s' 'foo/bar/baz' >expect &&
git --icase-pathspecs ls-files -z -- '**/bar*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 470 - ipathmatch (via ls-files): match '**/bar*' 'foo/bar/baz'
expecting success of 3070.471 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo/
ok 471 - cleanup after previous file test
expecting success of 3070.472 'setup match file test for deep/foo/bar/baz':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 472 - setup match file test for deep/foo/bar/baz
expecting success of 3070.473 'wildmatch: match 'deep/foo/bar/baz' '**/bar/*'':
test-tool wildmatch wildmatch 'deep/foo/bar/baz' '**/bar/*'
ok 473 - wildmatch: match 'deep/foo/bar/baz' '**/bar/*'
expecting success of 3070.474 'wildmatch (via ls-files): match '**/bar/*' 'deep/foo/bar/baz'':
printf '%s' 'deep/foo/bar/baz' >expect &&
git --glob-pathspecs ls-files -z -- '**/bar/*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 474 - wildmatch (via ls-files): match '**/bar/*' 'deep/foo/bar/baz'
expecting success of 3070.475 'iwildmatch: match 'deep/foo/bar/baz' '**/bar/*'':
test-tool wildmatch iwildmatch 'deep/foo/bar/baz' '**/bar/*'
ok 475 - iwildmatch: match 'deep/foo/bar/baz' '**/bar/*'
expecting success of 3070.476 'iwildmatch (via ls-files): match '**/bar/*' 'deep/foo/bar/baz'':
printf '%s' 'deep/foo/bar/baz' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '**/bar/*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 476 - iwildmatch (via ls-files): match '**/bar/*' 'deep/foo/bar/baz'
expecting success of 3070.477 'pathmatch: match 'deep/foo/bar/baz' '**/bar/*'':
test-tool wildmatch pathmatch 'deep/foo/bar/baz' '**/bar/*'
ok 477 - pathmatch: match 'deep/foo/bar/baz' '**/bar/*'
expecting success of 3070.478 'pathmatch (via ls-files): match '**/bar/*' 'deep/foo/bar/baz'':
printf '%s' 'deep/foo/bar/baz' >expect &&
git ls-files -z -- '**/bar/*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 478 - pathmatch (via ls-files): match '**/bar/*' 'deep/foo/bar/baz'
expecting success of 3070.479 'ipathmatch: match 'deep/foo/bar/baz' '**/bar/*'':
test-tool wildmatch ipathmatch 'deep/foo/bar/baz' '**/bar/*'
ok 479 - ipathmatch: match 'deep/foo/bar/baz' '**/bar/*'
expecting success of 3070.480 'ipathmatch (via ls-files): match '**/bar/*' 'deep/foo/bar/baz'':
printf '%s' 'deep/foo/bar/baz' >expect &&
git --icase-pathspecs ls-files -z -- '**/bar/*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 480 - ipathmatch (via ls-files): match '**/bar/*' 'deep/foo/bar/baz'
expecting success of 3070.481 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing deep/
Removing expect
ok 481 - cleanup after previous file test
expecting success of 3070.482 'setup match file test for deep/foo/bar/baz/':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 482 - setup match file test for deep/foo/bar/baz/
expecting success of 3070.483 'wildmatch: no match 'deep/foo/bar/baz/' '**/bar/*'':
test_must_fail test-tool wildmatch wildmatch 'deep/foo/bar/baz/' '**/bar/*'
ok 483 - wildmatch: no match 'deep/foo/bar/baz/' '**/bar/*'
checking known breakage of 3070.484 'wildmatch (via ls-files): no match skip '**/bar/*' 'deep/foo/bar/baz/'': false
not ok 484 - wildmatch (via ls-files): no match skip '**/bar/*' 'deep/foo/bar/baz/' # TODO known breakage
expecting success of 3070.485 'iwildmatch: no match 'deep/foo/bar/baz/' '**/bar/*'':
test_must_fail test-tool wildmatch iwildmatch 'deep/foo/bar/baz/' '**/bar/*'
ok 485 - iwildmatch: no match 'deep/foo/bar/baz/' '**/bar/*'
checking known breakage of 3070.486 'iwildmatch (via ls-files): no match skip '**/bar/*' 'deep/foo/bar/baz/'': false
not ok 486 - iwildmatch (via ls-files): no match skip '**/bar/*' 'deep/foo/bar/baz/' # TODO known breakage
expecting success of 3070.487 'pathmatch: match 'deep/foo/bar/baz/' '**/bar/*'':
test-tool wildmatch pathmatch 'deep/foo/bar/baz/' '**/bar/*'
ok 487 - pathmatch: match 'deep/foo/bar/baz/' '**/bar/*'
checking known breakage of 3070.488 'pathmatch (via ls-files): match skip '**/bar/*' 'deep/foo/bar/baz/'': false
not ok 488 - pathmatch (via ls-files): match skip '**/bar/*' 'deep/foo/bar/baz/' # TODO known breakage
expecting success of 3070.489 'ipathmatch: match 'deep/foo/bar/baz/' '**/bar/*'':
test-tool wildmatch ipathmatch 'deep/foo/bar/baz/' '**/bar/*'
ok 489 - ipathmatch: match 'deep/foo/bar/baz/' '**/bar/*'
checking known breakage of 3070.490 'ipathmatch (via ls-files): match skip '**/bar/*' 'deep/foo/bar/baz/'': false
not ok 490 - ipathmatch (via ls-files): match skip '**/bar/*' 'deep/foo/bar/baz/' # TODO known breakage
expecting success of 3070.491 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
ok 491 - cleanup after previous file test
expecting success of 3070.492 'setup match file test for deep/foo/bar/baz/':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 492 - setup match file test for deep/foo/bar/baz/
expecting success of 3070.493 'wildmatch: match 'deep/foo/bar/baz/' '**/bar/**'':
test-tool wildmatch wildmatch 'deep/foo/bar/baz/' '**/bar/**'
ok 493 - wildmatch: match 'deep/foo/bar/baz/' '**/bar/**'
checking known breakage of 3070.494 'wildmatch (via ls-files): match skip '**/bar/**' 'deep/foo/bar/baz/'': false
not ok 494 - wildmatch (via ls-files): match skip '**/bar/**' 'deep/foo/bar/baz/' # TODO known breakage
expecting success of 3070.495 'iwildmatch: match 'deep/foo/bar/baz/' '**/bar/**'':
test-tool wildmatch iwildmatch 'deep/foo/bar/baz/' '**/bar/**'
ok 495 - iwildmatch: match 'deep/foo/bar/baz/' '**/bar/**'
checking known breakage of 3070.496 'iwildmatch (via ls-files): match skip '**/bar/**' 'deep/foo/bar/baz/'': false
not ok 496 - iwildmatch (via ls-files): match skip '**/bar/**' 'deep/foo/bar/baz/' # TODO known breakage
expecting success of 3070.497 'pathmatch: match 'deep/foo/bar/baz/' '**/bar/**'':
test-tool wildmatch pathmatch 'deep/foo/bar/baz/' '**/bar/**'
ok 497 - pathmatch: match 'deep/foo/bar/baz/' '**/bar/**'
checking known breakage of 3070.498 'pathmatch (via ls-files): match skip '**/bar/**' 'deep/foo/bar/baz/'': false
not ok 498 - pathmatch (via ls-files): match skip '**/bar/**' 'deep/foo/bar/baz/' # TODO known breakage
expecting success of 3070.499 'ipathmatch: match 'deep/foo/bar/baz/' '**/bar/**'':
test-tool wildmatch ipathmatch 'deep/foo/bar/baz/' '**/bar/**'
ok 499 - ipathmatch: match 'deep/foo/bar/baz/' '**/bar/**'
checking known breakage of 3070.500 'ipathmatch (via ls-files): match skip '**/bar/**' 'deep/foo/bar/baz/'': false
not ok 500 - ipathmatch (via ls-files): match skip '**/bar/**' 'deep/foo/bar/baz/' # TODO known breakage
expecting success of 3070.501 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
ok 501 - cleanup after previous file test
expecting success of 3070.502 'setup match file test for deep/foo/bar':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 502 - setup match file test for deep/foo/bar
expecting success of 3070.503 'wildmatch: no match 'deep/foo/bar' '**/bar/*'':
test_must_fail test-tool wildmatch wildmatch 'deep/foo/bar' '**/bar/*'
ok 503 - wildmatch: no match 'deep/foo/bar' '**/bar/*'
expecting success of 3070.504 'wildmatch (via ls-files): no match '**/bar/*' 'deep/foo/bar'':
>expect &&
git --glob-pathspecs ls-files -z -- '**/bar/*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 504 - wildmatch (via ls-files): no match '**/bar/*' 'deep/foo/bar'
expecting success of 3070.505 'iwildmatch: no match 'deep/foo/bar' '**/bar/*'':
test_must_fail test-tool wildmatch iwildmatch 'deep/foo/bar' '**/bar/*'
ok 505 - iwildmatch: no match 'deep/foo/bar' '**/bar/*'
expecting success of 3070.506 'iwildmatch (via ls-files): no match '**/bar/*' 'deep/foo/bar'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '**/bar/*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 506 - iwildmatch (via ls-files): no match '**/bar/*' 'deep/foo/bar'
expecting success of 3070.507 'pathmatch: no match 'deep/foo/bar' '**/bar/*'':
test_must_fail test-tool wildmatch pathmatch 'deep/foo/bar' '**/bar/*'
ok 507 - pathmatch: no match 'deep/foo/bar' '**/bar/*'
expecting success of 3070.508 'pathmatch (via ls-files): no match '**/bar/*' 'deep/foo/bar'':
>expect &&
git ls-files -z -- '**/bar/*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 508 - pathmatch (via ls-files): no match '**/bar/*' 'deep/foo/bar'
expecting success of 3070.509 'ipathmatch: no match 'deep/foo/bar' '**/bar/*'':
test_must_fail test-tool wildmatch ipathmatch 'deep/foo/bar' '**/bar/*'
ok 509 - ipathmatch: no match 'deep/foo/bar' '**/bar/*'
expecting success of 3070.510 'ipathmatch (via ls-files): no match '**/bar/*' 'deep/foo/bar'':
>expect &&
git --icase-pathspecs ls-files -z -- '**/bar/*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 510 - ipathmatch (via ls-files): no match '**/bar/*' 'deep/foo/bar'
expecting success of 3070.511 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing deep/
Removing expect
ok 511 - cleanup after previous file test
expecting success of 3070.512 'setup match file test for deep/foo/bar/':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 512 - setup match file test for deep/foo/bar/
expecting success of 3070.513 'wildmatch: match 'deep/foo/bar/' '**/bar/**'':
test-tool wildmatch wildmatch 'deep/foo/bar/' '**/bar/**'
ok 513 - wildmatch: match 'deep/foo/bar/' '**/bar/**'
checking known breakage of 3070.514 'wildmatch (via ls-files): match skip '**/bar/**' 'deep/foo/bar/'': false
not ok 514 - wildmatch (via ls-files): match skip '**/bar/**' 'deep/foo/bar/' # TODO known breakage
expecting success of 3070.515 'iwildmatch: match 'deep/foo/bar/' '**/bar/**'':
test-tool wildmatch iwildmatch 'deep/foo/bar/' '**/bar/**'
ok 515 - iwildmatch: match 'deep/foo/bar/' '**/bar/**'
checking known breakage of 3070.516 'iwildmatch (via ls-files): match skip '**/bar/**' 'deep/foo/bar/'': false
not ok 516 - iwildmatch (via ls-files): match skip '**/bar/**' 'deep/foo/bar/' # TODO known breakage
expecting success of 3070.517 'pathmatch: match 'deep/foo/bar/' '**/bar/**'':
test-tool wildmatch pathmatch 'deep/foo/bar/' '**/bar/**'
ok 517 - pathmatch: match 'deep/foo/bar/' '**/bar/**'
checking known breakage of 3070.518 'pathmatch (via ls-files): match skip '**/bar/**' 'deep/foo/bar/'': false
not ok 518 - pathmatch (via ls-files): match skip '**/bar/**' 'deep/foo/bar/' # TODO known breakage
expecting success of 3070.519 'ipathmatch: match 'deep/foo/bar/' '**/bar/**'':
test-tool wildmatch ipathmatch 'deep/foo/bar/' '**/bar/**'
ok 519 - ipathmatch: match 'deep/foo/bar/' '**/bar/**'
checking known breakage of 3070.520 'ipathmatch (via ls-files): match skip '**/bar/**' 'deep/foo/bar/'': false
not ok 520 - ipathmatch (via ls-files): match skip '**/bar/**' 'deep/foo/bar/' # TODO known breakage
expecting success of 3070.521 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
ok 521 - cleanup after previous file test
expecting success of 3070.522 'setup match file test for foo/bar/baz':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 522 - setup match file test for foo/bar/baz
expecting success of 3070.523 'wildmatch: no match 'foo/bar/baz' '**/bar**'':
test_must_fail test-tool wildmatch wildmatch 'foo/bar/baz' '**/bar**'
ok 523 - wildmatch: no match 'foo/bar/baz' '**/bar**'
expecting success of 3070.524 'wildmatch (via ls-files): no match '**/bar**' 'foo/bar/baz'':
>expect &&
git --glob-pathspecs ls-files -z -- '**/bar**' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 524 - wildmatch (via ls-files): no match '**/bar**' 'foo/bar/baz'
expecting success of 3070.525 'iwildmatch: no match 'foo/bar/baz' '**/bar**'':
test_must_fail test-tool wildmatch iwildmatch 'foo/bar/baz' '**/bar**'
ok 525 - iwildmatch: no match 'foo/bar/baz' '**/bar**'
expecting success of 3070.526 'iwildmatch (via ls-files): no match '**/bar**' 'foo/bar/baz'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '**/bar**' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 526 - iwildmatch (via ls-files): no match '**/bar**' 'foo/bar/baz'
expecting success of 3070.527 'pathmatch: match 'foo/bar/baz' '**/bar**'':
test-tool wildmatch pathmatch 'foo/bar/baz' '**/bar**'
ok 527 - pathmatch: match 'foo/bar/baz' '**/bar**'
expecting success of 3070.528 'pathmatch (via ls-files): match '**/bar**' 'foo/bar/baz'':
printf '%s' 'foo/bar/baz' >expect &&
git ls-files -z -- '**/bar**' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 528 - pathmatch (via ls-files): match '**/bar**' 'foo/bar/baz'
expecting success of 3070.529 'ipathmatch: match 'foo/bar/baz' '**/bar**'':
test-tool wildmatch ipathmatch 'foo/bar/baz' '**/bar**'
ok 529 - ipathmatch: match 'foo/bar/baz' '**/bar**'
expecting success of 3070.530 'ipathmatch (via ls-files): match '**/bar**' 'foo/bar/baz'':
printf '%s' 'foo/bar/baz' >expect &&
git --icase-pathspecs ls-files -z -- '**/bar**' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 530 - ipathmatch (via ls-files): match '**/bar**' 'foo/bar/baz'
expecting success of 3070.531 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo/
ok 531 - cleanup after previous file test
expecting success of 3070.532 'setup match file test for foo/bar/baz/x':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 532 - setup match file test for foo/bar/baz/x
expecting success of 3070.533 'wildmatch: match 'foo/bar/baz/x' '*/bar/**'':
test-tool wildmatch wildmatch 'foo/bar/baz/x' '*/bar/**'
ok 533 - wildmatch: match 'foo/bar/baz/x' '*/bar/**'
expecting success of 3070.534 'wildmatch (via ls-files): match '*/bar/**' 'foo/bar/baz/x'':
printf '%s' 'foo/bar/baz/x' >expect &&
git --glob-pathspecs ls-files -z -- '*/bar/**' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 534 - wildmatch (via ls-files): match '*/bar/**' 'foo/bar/baz/x'
expecting success of 3070.535 'iwildmatch: match 'foo/bar/baz/x' '*/bar/**'':
test-tool wildmatch iwildmatch 'foo/bar/baz/x' '*/bar/**'
ok 535 - iwildmatch: match 'foo/bar/baz/x' '*/bar/**'
expecting success of 3070.536 'iwildmatch (via ls-files): match '*/bar/**' 'foo/bar/baz/x'':
printf '%s' 'foo/bar/baz/x' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '*/bar/**' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 536 - iwildmatch (via ls-files): match '*/bar/**' 'foo/bar/baz/x'
expecting success of 3070.537 'pathmatch: match 'foo/bar/baz/x' '*/bar/**'':
test-tool wildmatch pathmatch 'foo/bar/baz/x' '*/bar/**'
ok 537 - pathmatch: match 'foo/bar/baz/x' '*/bar/**'
expecting success of 3070.538 'pathmatch (via ls-files): match '*/bar/**' 'foo/bar/baz/x'':
printf '%s' 'foo/bar/baz/x' >expect &&
git ls-files -z -- '*/bar/**' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 538 - pathmatch (via ls-files): match '*/bar/**' 'foo/bar/baz/x'
expecting success of 3070.539 'ipathmatch: match 'foo/bar/baz/x' '*/bar/**'':
test-tool wildmatch ipathmatch 'foo/bar/baz/x' '*/bar/**'
ok 539 - ipathmatch: match 'foo/bar/baz/x' '*/bar/**'
expecting success of 3070.540 'ipathmatch (via ls-files): match '*/bar/**' 'foo/bar/baz/x'':
printf '%s' 'foo/bar/baz/x' >expect &&
git --icase-pathspecs ls-files -z -- '*/bar/**' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 540 - ipathmatch (via ls-files): match '*/bar/**' 'foo/bar/baz/x'
expecting success of 3070.541 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo/
ok 541 - cleanup after previous file test
expecting success of 3070.542 'setup match file test for deep/foo/bar/baz/x':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 542 - setup match file test for deep/foo/bar/baz/x
expecting success of 3070.543 'wildmatch: no match 'deep/foo/bar/baz/x' '*/bar/**'':
test_must_fail test-tool wildmatch wildmatch 'deep/foo/bar/baz/x' '*/bar/**'
ok 543 - wildmatch: no match 'deep/foo/bar/baz/x' '*/bar/**'
expecting success of 3070.544 'wildmatch (via ls-files): no match '*/bar/**' 'deep/foo/bar/baz/x'':
>expect &&
git --glob-pathspecs ls-files -z -- '*/bar/**' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 544 - wildmatch (via ls-files): no match '*/bar/**' 'deep/foo/bar/baz/x'
expecting success of 3070.545 'iwildmatch: no match 'deep/foo/bar/baz/x' '*/bar/**'':
test_must_fail test-tool wildmatch iwildmatch 'deep/foo/bar/baz/x' '*/bar/**'
ok 545 - iwildmatch: no match 'deep/foo/bar/baz/x' '*/bar/**'
expecting success of 3070.546 'iwildmatch (via ls-files): no match '*/bar/**' 'deep/foo/bar/baz/x'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '*/bar/**' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 546 - iwildmatch (via ls-files): no match '*/bar/**' 'deep/foo/bar/baz/x'
expecting success of 3070.547 'pathmatch: match 'deep/foo/bar/baz/x' '*/bar/**'':
test-tool wildmatch pathmatch 'deep/foo/bar/baz/x' '*/bar/**'
ok 547 - pathmatch: match 'deep/foo/bar/baz/x' '*/bar/**'
expecting success of 3070.548 'pathmatch (via ls-files): match '*/bar/**' 'deep/foo/bar/baz/x'':
printf '%s' 'deep/foo/bar/baz/x' >expect &&
git ls-files -z -- '*/bar/**' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 548 - pathmatch (via ls-files): match '*/bar/**' 'deep/foo/bar/baz/x'
expecting success of 3070.549 'ipathmatch: match 'deep/foo/bar/baz/x' '*/bar/**'':
test-tool wildmatch ipathmatch 'deep/foo/bar/baz/x' '*/bar/**'
ok 549 - ipathmatch: match 'deep/foo/bar/baz/x' '*/bar/**'
expecting success of 3070.550 'ipathmatch (via ls-files): match '*/bar/**' 'deep/foo/bar/baz/x'':
printf '%s' 'deep/foo/bar/baz/x' >expect &&
git --icase-pathspecs ls-files -z -- '*/bar/**' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 550 - ipathmatch (via ls-files): match '*/bar/**' 'deep/foo/bar/baz/x'
expecting success of 3070.551 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing deep/
Removing expect
ok 551 - cleanup after previous file test
expecting success of 3070.552 'setup match file test for deep/foo/bar/baz/x':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 552 - setup match file test for deep/foo/bar/baz/x
expecting success of 3070.553 'wildmatch: match 'deep/foo/bar/baz/x' '**/bar/*/*'':
test-tool wildmatch wildmatch 'deep/foo/bar/baz/x' '**/bar/*/*'
ok 553 - wildmatch: match 'deep/foo/bar/baz/x' '**/bar/*/*'
expecting success of 3070.554 'wildmatch (via ls-files): match '**/bar/*/*' 'deep/foo/bar/baz/x'':
printf '%s' 'deep/foo/bar/baz/x' >expect &&
git --glob-pathspecs ls-files -z -- '**/bar/*/*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 554 - wildmatch (via ls-files): match '**/bar/*/*' 'deep/foo/bar/baz/x'
expecting success of 3070.555 'iwildmatch: match 'deep/foo/bar/baz/x' '**/bar/*/*'':
test-tool wildmatch iwildmatch 'deep/foo/bar/baz/x' '**/bar/*/*'
ok 555 - iwildmatch: match 'deep/foo/bar/baz/x' '**/bar/*/*'
expecting success of 3070.556 'iwildmatch (via ls-files): match '**/bar/*/*' 'deep/foo/bar/baz/x'':
printf '%s' 'deep/foo/bar/baz/x' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '**/bar/*/*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 556 - iwildmatch (via ls-files): match '**/bar/*/*' 'deep/foo/bar/baz/x'
expecting success of 3070.557 'pathmatch: match 'deep/foo/bar/baz/x' '**/bar/*/*'':
test-tool wildmatch pathmatch 'deep/foo/bar/baz/x' '**/bar/*/*'
ok 557 - pathmatch: match 'deep/foo/bar/baz/x' '**/bar/*/*'
expecting success of 3070.558 'pathmatch (via ls-files): match '**/bar/*/*' 'deep/foo/bar/baz/x'':
printf '%s' 'deep/foo/bar/baz/x' >expect &&
git ls-files -z -- '**/bar/*/*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 558 - pathmatch (via ls-files): match '**/bar/*/*' 'deep/foo/bar/baz/x'
expecting success of 3070.559 'ipathmatch: match 'deep/foo/bar/baz/x' '**/bar/*/*'':
test-tool wildmatch ipathmatch 'deep/foo/bar/baz/x' '**/bar/*/*'
ok 559 - ipathmatch: match 'deep/foo/bar/baz/x' '**/bar/*/*'
expecting success of 3070.560 'ipathmatch (via ls-files): match '**/bar/*/*' 'deep/foo/bar/baz/x'':
printf '%s' 'deep/foo/bar/baz/x' >expect &&
git --icase-pathspecs ls-files -z -- '**/bar/*/*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 560 - ipathmatch (via ls-files): match '**/bar/*/*' 'deep/foo/bar/baz/x'
expecting success of 3070.561 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing deep/
Removing expect
ok 561 - cleanup after previous file test
expecting success of 3070.562 'setup match file test for acrt':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 562 - setup match file test for acrt
expecting success of 3070.563 'wildmatch: no match 'acrt' 'a[c-c]st'':
test_must_fail test-tool wildmatch wildmatch 'acrt' 'a[c-c]st'
ok 563 - wildmatch: no match 'acrt' 'a[c-c]st'
expecting success of 3070.564 'wildmatch (via ls-files): no match 'a[c-c]st' 'acrt'':
>expect &&
git --glob-pathspecs ls-files -z -- 'a[c-c]st' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 564 - wildmatch (via ls-files): no match 'a[c-c]st' 'acrt'
expecting success of 3070.565 'iwildmatch: no match 'acrt' 'a[c-c]st'':
test_must_fail test-tool wildmatch iwildmatch 'acrt' 'a[c-c]st'
ok 565 - iwildmatch: no match 'acrt' 'a[c-c]st'
expecting success of 3070.566 'iwildmatch (via ls-files): no match 'a[c-c]st' 'acrt'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'a[c-c]st' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 566 - iwildmatch (via ls-files): no match 'a[c-c]st' 'acrt'
expecting success of 3070.567 'pathmatch: no match 'acrt' 'a[c-c]st'':
test_must_fail test-tool wildmatch pathmatch 'acrt' 'a[c-c]st'
ok 567 - pathmatch: no match 'acrt' 'a[c-c]st'
expecting success of 3070.568 'pathmatch (via ls-files): no match 'a[c-c]st' 'acrt'':
>expect &&
git ls-files -z -- 'a[c-c]st' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 568 - pathmatch (via ls-files): no match 'a[c-c]st' 'acrt'
expecting success of 3070.569 'ipathmatch: no match 'acrt' 'a[c-c]st'':
test_must_fail test-tool wildmatch ipathmatch 'acrt' 'a[c-c]st'
ok 569 - ipathmatch: no match 'acrt' 'a[c-c]st'
expecting success of 3070.570 'ipathmatch (via ls-files): no match 'a[c-c]st' 'acrt'':
>expect &&
git --icase-pathspecs ls-files -z -- 'a[c-c]st' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 570 - ipathmatch (via ls-files): no match 'a[c-c]st' 'acrt'
expecting success of 3070.571 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing acrt
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 571 - cleanup after previous file test
expecting success of 3070.572 'setup match file test for acrt':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 572 - setup match file test for acrt
expecting success of 3070.573 'wildmatch: match 'acrt' 'a[c-c]rt'':
test-tool wildmatch wildmatch 'acrt' 'a[c-c]rt'
ok 573 - wildmatch: match 'acrt' 'a[c-c]rt'
expecting success of 3070.574 'wildmatch (via ls-files): match 'a[c-c]rt' 'acrt'':
printf '%s' 'acrt' >expect &&
git --glob-pathspecs ls-files -z -- 'a[c-c]rt' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 574 - wildmatch (via ls-files): match 'a[c-c]rt' 'acrt'
expecting success of 3070.575 'iwildmatch: match 'acrt' 'a[c-c]rt'':
test-tool wildmatch iwildmatch 'acrt' 'a[c-c]rt'
ok 575 - iwildmatch: match 'acrt' 'a[c-c]rt'
expecting success of 3070.576 'iwildmatch (via ls-files): match 'a[c-c]rt' 'acrt'':
printf '%s' 'acrt' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'a[c-c]rt' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 576 - iwildmatch (via ls-files): match 'a[c-c]rt' 'acrt'
expecting success of 3070.577 'pathmatch: match 'acrt' 'a[c-c]rt'':
test-tool wildmatch pathmatch 'acrt' 'a[c-c]rt'
ok 577 - pathmatch: match 'acrt' 'a[c-c]rt'
expecting success of 3070.578 'pathmatch (via ls-files): match 'a[c-c]rt' 'acrt'':
printf '%s' 'acrt' >expect &&
git ls-files -z -- 'a[c-c]rt' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 578 - pathmatch (via ls-files): match 'a[c-c]rt' 'acrt'
expecting success of 3070.579 'ipathmatch: match 'acrt' 'a[c-c]rt'':
test-tool wildmatch ipathmatch 'acrt' 'a[c-c]rt'
ok 579 - ipathmatch: match 'acrt' 'a[c-c]rt'
expecting success of 3070.580 'ipathmatch (via ls-files): match 'a[c-c]rt' 'acrt'':
printf '%s' 'acrt' >expect &&
git --icase-pathspecs ls-files -z -- 'a[c-c]rt' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 580 - ipathmatch (via ls-files): match 'a[c-c]rt' 'acrt'
expecting success of 3070.581 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing acrt
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 581 - cleanup after previous file test
expecting success of 3070.582 'setup match file test for ]':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 582 - setup match file test for ]
expecting success of 3070.583 'wildmatch: no match ']' '[!]-]'':
test_must_fail test-tool wildmatch wildmatch ']' '[!]-]'
ok 583 - wildmatch: no match ']' '[!]-]'
expecting success of 3070.584 'wildmatch (via ls-files): no match '[!]-]' ']'':
>expect &&
git --glob-pathspecs ls-files -z -- '[!]-]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 584 - wildmatch (via ls-files): no match '[!]-]' ']'
expecting success of 3070.585 'iwildmatch: no match ']' '[!]-]'':
test_must_fail test-tool wildmatch iwildmatch ']' '[!]-]'
ok 585 - iwildmatch: no match ']' '[!]-]'
expecting success of 3070.586 'iwildmatch (via ls-files): no match '[!]-]' ']'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[!]-]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 586 - iwildmatch (via ls-files): no match '[!]-]' ']'
expecting success of 3070.587 'pathmatch: no match ']' '[!]-]'':
test_must_fail test-tool wildmatch pathmatch ']' '[!]-]'
ok 587 - pathmatch: no match ']' '[!]-]'
expecting success of 3070.588 'pathmatch (via ls-files): no match '[!]-]' ']'':
>expect &&
git ls-files -z -- '[!]-]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 588 - pathmatch (via ls-files): no match '[!]-]' ']'
expecting success of 3070.589 'ipathmatch: no match ']' '[!]-]'':
test_must_fail test-tool wildmatch ipathmatch ']' '[!]-]'
ok 589 - ipathmatch: no match ']' '[!]-]'
expecting success of 3070.590 'ipathmatch (via ls-files): no match '[!]-]' ']'':
>expect &&
git --icase-pathspecs ls-files -z -- '[!]-]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 590 - ipathmatch (via ls-files): no match '[!]-]' ']'
expecting success of 3070.591 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing ]
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 591 - cleanup after previous file test
expecting success of 3070.592 'setup match file test for a':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 592 - setup match file test for a
expecting success of 3070.593 'wildmatch: match 'a' '[!]-]'':
test-tool wildmatch wildmatch 'a' '[!]-]'
ok 593 - wildmatch: match 'a' '[!]-]'
expecting success of 3070.594 'wildmatch (via ls-files): match '[!]-]' 'a'':
printf '%s' 'a' >expect &&
git --glob-pathspecs ls-files -z -- '[!]-]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 594 - wildmatch (via ls-files): match '[!]-]' 'a'
expecting success of 3070.595 'iwildmatch: match 'a' '[!]-]'':
test-tool wildmatch iwildmatch 'a' '[!]-]'
ok 595 - iwildmatch: match 'a' '[!]-]'
expecting success of 3070.596 'iwildmatch (via ls-files): match '[!]-]' 'a'':
printf '%s' 'a' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[!]-]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 596 - iwildmatch (via ls-files): match '[!]-]' 'a'
expecting success of 3070.597 'pathmatch: match 'a' '[!]-]'':
test-tool wildmatch pathmatch 'a' '[!]-]'
ok 597 - pathmatch: match 'a' '[!]-]'
expecting success of 3070.598 'pathmatch (via ls-files): match '[!]-]' 'a'':
printf '%s' 'a' >expect &&
git ls-files -z -- '[!]-]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 598 - pathmatch (via ls-files): match '[!]-]' 'a'
expecting success of 3070.599 'ipathmatch: match 'a' '[!]-]'':
test-tool wildmatch ipathmatch 'a' '[!]-]'
ok 599 - ipathmatch: match 'a' '[!]-]'
expecting success of 3070.600 'ipathmatch (via ls-files): match '[!]-]' 'a'':
printf '%s' 'a' >expect &&
git --icase-pathspecs ls-files -z -- '[!]-]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 600 - ipathmatch (via ls-files): match '[!]-]' 'a'
expecting success of 3070.601 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing a
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 601 - cleanup after previous file test
expecting success of 3070.602 'setup match file test for ':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 602 - setup match file test for
expecting success of 3070.603 'wildmatch: no match '' '\'':
test_must_fail test-tool wildmatch wildmatch '' '\'
ok 603 - wildmatch: no match '' '\'
checking known breakage of 3070.604 'wildmatch (via ls-files): no match skip '\' ''': false
not ok 604 - wildmatch (via ls-files): no match skip '\' '' # TODO known breakage
expecting success of 3070.605 'iwildmatch: no match '' '\'':
test_must_fail test-tool wildmatch iwildmatch '' '\'
ok 605 - iwildmatch: no match '' '\'
checking known breakage of 3070.606 'iwildmatch (via ls-files): no match skip '\' ''': false
not ok 606 - iwildmatch (via ls-files): no match skip '\' '' # TODO known breakage
expecting success of 3070.607 'pathmatch: no match '' '\'':
test_must_fail test-tool wildmatch pathmatch '' '\'
ok 607 - pathmatch: no match '' '\'
checking known breakage of 3070.608 'pathmatch (via ls-files): no match skip '\' ''': false
not ok 608 - pathmatch (via ls-files): no match skip '\' '' # TODO known breakage
expecting success of 3070.609 'ipathmatch: no match '' '\'':
test_must_fail test-tool wildmatch ipathmatch '' '\'
ok 609 - ipathmatch: no match '' '\'
checking known breakage of 3070.610 'ipathmatch (via ls-files): no match skip '\' ''': false
not ok 610 - ipathmatch (via ls-files): no match skip '\' '' # TODO known breakage
expecting success of 3070.611 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
ok 611 - cleanup after previous file test
expecting success of 3070.612 'setup match file test for \':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 612 - setup match file test for \
expecting success of 3070.613 'wildmatch: no match '\' '\'':
test_must_fail test-tool wildmatch wildmatch '\' '\'
ok 613 - wildmatch: no match '\' '\'
expecting success of 3070.614 'wildmatch (via ls-files): match '\' '\'':
printf '%s' '\' >expect &&
git --glob-pathspecs ls-files -z -- '\' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 614 - wildmatch (via ls-files): match '\' '\'
expecting success of 3070.615 'iwildmatch: no match '\' '\'':
test_must_fail test-tool wildmatch iwildmatch '\' '\'
ok 615 - iwildmatch: no match '\' '\'
expecting success of 3070.616 'iwildmatch (via ls-files): match '\' '\'':
printf '%s' '\' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '\' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 616 - iwildmatch (via ls-files): match '\' '\'
expecting success of 3070.617 'pathmatch: no match '\' '\'':
test_must_fail test-tool wildmatch pathmatch '\' '\'
ok 617 - pathmatch: no match '\' '\'
expecting success of 3070.618 'pathmatch (via ls-files): match '\' '\'':
printf '%s' '\' >expect &&
git ls-files -z -- '\' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 618 - pathmatch (via ls-files): match '\' '\'
expecting success of 3070.619 'ipathmatch: no match '\' '\'':
test_must_fail test-tool wildmatch ipathmatch '\' '\'
ok 619 - ipathmatch: no match '\' '\'
expecting success of 3070.620 'ipathmatch (via ls-files): match '\' '\'':
printf '%s' '\' >expect &&
git --icase-pathspecs ls-files -z -- '\' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 620 - ipathmatch (via ls-files): match '\' '\'
expecting success of 3070.621 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing "\\"
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 621 - cleanup after previous file test
expecting success of 3070.622 'setup match file test for XXX/\':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 622 - setup match file test for XXX/\
expecting success of 3070.623 'wildmatch: no match 'XXX/\' '*/\'':
test_must_fail test-tool wildmatch wildmatch 'XXX/\' '*/\'
ok 623 - wildmatch: no match 'XXX/\' '*/\'
expecting success of 3070.624 'wildmatch (via ls-files): no match '*/\' 'XXX/\'':
>expect &&
git --glob-pathspecs ls-files -z -- '*/\' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 624 - wildmatch (via ls-files): no match '*/\' 'XXX/\'
expecting success of 3070.625 'iwildmatch: no match 'XXX/\' '*/\'':
test_must_fail test-tool wildmatch iwildmatch 'XXX/\' '*/\'
ok 625 - iwildmatch: no match 'XXX/\' '*/\'
expecting success of 3070.626 'iwildmatch (via ls-files): no match '*/\' 'XXX/\'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '*/\' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 626 - iwildmatch (via ls-files): no match '*/\' 'XXX/\'
expecting success of 3070.627 'pathmatch: no match 'XXX/\' '*/\'':
test_must_fail test-tool wildmatch pathmatch 'XXX/\' '*/\'
ok 627 - pathmatch: no match 'XXX/\' '*/\'
expecting success of 3070.628 'pathmatch (via ls-files): no match '*/\' 'XXX/\'':
>expect &&
git ls-files -z -- '*/\' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 628 - pathmatch (via ls-files): no match '*/\' 'XXX/\'
expecting success of 3070.629 'ipathmatch: no match 'XXX/\' '*/\'':
test_must_fail test-tool wildmatch ipathmatch 'XXX/\' '*/\'
ok 629 - ipathmatch: no match 'XXX/\' '*/\'
expecting success of 3070.630 'ipathmatch (via ls-files): no match '*/\' 'XXX/\'':
>expect &&
git --icase-pathspecs ls-files -z -- '*/\' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 630 - ipathmatch (via ls-files): no match '*/\' 'XXX/\'
expecting success of 3070.631 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing XXX/
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 631 - cleanup after previous file test
expecting success of 3070.632 'setup match file test for XXX/\':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 632 - setup match file test for XXX/\
expecting success of 3070.633 'wildmatch: match 'XXX/\' '*/\\'':
test-tool wildmatch wildmatch 'XXX/\' '*/\\'
ok 633 - wildmatch: match 'XXX/\' '*/\\'
expecting success of 3070.634 'wildmatch (via ls-files): match '*/\\' 'XXX/\'':
printf '%s' 'XXX/\' >expect &&
git --glob-pathspecs ls-files -z -- '*/\\' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 634 - wildmatch (via ls-files): match '*/\\' 'XXX/\'
expecting success of 3070.635 'iwildmatch: match 'XXX/\' '*/\\'':
test-tool wildmatch iwildmatch 'XXX/\' '*/\\'
ok 635 - iwildmatch: match 'XXX/\' '*/\\'
expecting success of 3070.636 'iwildmatch (via ls-files): match '*/\\' 'XXX/\'':
printf '%s' 'XXX/\' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '*/\\' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 636 - iwildmatch (via ls-files): match '*/\\' 'XXX/\'
expecting success of 3070.637 'pathmatch: match 'XXX/\' '*/\\'':
test-tool wildmatch pathmatch 'XXX/\' '*/\\'
ok 637 - pathmatch: match 'XXX/\' '*/\\'
expecting success of 3070.638 'pathmatch (via ls-files): match '*/\\' 'XXX/\'':
printf '%s' 'XXX/\' >expect &&
git ls-files -z -- '*/\\' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 638 - pathmatch (via ls-files): match '*/\\' 'XXX/\'
expecting success of 3070.639 'ipathmatch: match 'XXX/\' '*/\\'':
test-tool wildmatch ipathmatch 'XXX/\' '*/\\'
ok 639 - ipathmatch: match 'XXX/\' '*/\\'
expecting success of 3070.640 'ipathmatch (via ls-files): match '*/\\' 'XXX/\'':
printf '%s' 'XXX/\' >expect &&
git --icase-pathspecs ls-files -z -- '*/\\' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 640 - ipathmatch (via ls-files): match '*/\\' 'XXX/\'
expecting success of 3070.641 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing XXX/
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 641 - cleanup after previous file test
expecting success of 3070.642 'setup match file test for foo':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 642 - setup match file test for foo
expecting success of 3070.643 'wildmatch: match 'foo' 'foo'':
test-tool wildmatch wildmatch 'foo' 'foo'
ok 643 - wildmatch: match 'foo' 'foo'
expecting success of 3070.644 'wildmatch (via ls-files): match 'foo' 'foo'':
printf '%s' 'foo' >expect &&
git --glob-pathspecs ls-files -z -- 'foo' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 644 - wildmatch (via ls-files): match 'foo' 'foo'
expecting success of 3070.645 'iwildmatch: match 'foo' 'foo'':
test-tool wildmatch iwildmatch 'foo' 'foo'
ok 645 - iwildmatch: match 'foo' 'foo'
expecting success of 3070.646 'iwildmatch (via ls-files): match 'foo' 'foo'':
printf '%s' 'foo' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'foo' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 646 - iwildmatch (via ls-files): match 'foo' 'foo'
expecting success of 3070.647 'pathmatch: match 'foo' 'foo'':
test-tool wildmatch pathmatch 'foo' 'foo'
ok 647 - pathmatch: match 'foo' 'foo'
expecting success of 3070.648 'pathmatch (via ls-files): match 'foo' 'foo'':
printf '%s' 'foo' >expect &&
git ls-files -z -- 'foo' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 648 - pathmatch (via ls-files): match 'foo' 'foo'
expecting success of 3070.649 'ipathmatch: match 'foo' 'foo'':
test-tool wildmatch ipathmatch 'foo' 'foo'
ok 649 - ipathmatch: match 'foo' 'foo'
expecting success of 3070.650 'ipathmatch (via ls-files): match 'foo' 'foo'':
printf '%s' 'foo' >expect &&
git --icase-pathspecs ls-files -z -- 'foo' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 650 - ipathmatch (via ls-files): match 'foo' 'foo'
expecting success of 3070.651 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo
ok 651 - cleanup after previous file test
expecting success of 3070.652 'setup match file test for @foo':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 652 - setup match file test for @foo
expecting success of 3070.653 'wildmatch: match '@foo' '@foo'':
test-tool wildmatch wildmatch '@foo' '@foo'
ok 653 - wildmatch: match '@foo' '@foo'
expecting success of 3070.654 'wildmatch (via ls-files): match '@foo' '@foo'':
printf '%s' '@foo' >expect &&
git --glob-pathspecs ls-files -z -- '@foo' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 654 - wildmatch (via ls-files): match '@foo' '@foo'
expecting success of 3070.655 'iwildmatch: match '@foo' '@foo'':
test-tool wildmatch iwildmatch '@foo' '@foo'
ok 655 - iwildmatch: match '@foo' '@foo'
expecting success of 3070.656 'iwildmatch (via ls-files): match '@foo' '@foo'':
printf '%s' '@foo' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '@foo' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 656 - iwildmatch (via ls-files): match '@foo' '@foo'
expecting success of 3070.657 'pathmatch: match '@foo' '@foo'':
test-tool wildmatch pathmatch '@foo' '@foo'
ok 657 - pathmatch: match '@foo' '@foo'
expecting success of 3070.658 'pathmatch (via ls-files): match '@foo' '@foo'':
printf '%s' '@foo' >expect &&
git ls-files -z -- '@foo' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 658 - pathmatch (via ls-files): match '@foo' '@foo'
expecting success of 3070.659 'ipathmatch: match '@foo' '@foo'':
test-tool wildmatch ipathmatch '@foo' '@foo'
ok 659 - ipathmatch: match '@foo' '@foo'
expecting success of 3070.660 'ipathmatch (via ls-files): match '@foo' '@foo'':
printf '%s' '@foo' >expect &&
git --icase-pathspecs ls-files -z -- '@foo' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 660 - ipathmatch (via ls-files): match '@foo' '@foo'
expecting success of 3070.661 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing @foo
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 661 - cleanup after previous file test
expecting success of 3070.662 'setup match file test for foo':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 662 - setup match file test for foo
expecting success of 3070.663 'wildmatch: no match 'foo' '@foo'':
test_must_fail test-tool wildmatch wildmatch 'foo' '@foo'
ok 663 - wildmatch: no match 'foo' '@foo'
expecting success of 3070.664 'wildmatch (via ls-files): no match '@foo' 'foo'':
>expect &&
git --glob-pathspecs ls-files -z -- '@foo' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 664 - wildmatch (via ls-files): no match '@foo' 'foo'
expecting success of 3070.665 'iwildmatch: no match 'foo' '@foo'':
test_must_fail test-tool wildmatch iwildmatch 'foo' '@foo'
ok 665 - iwildmatch: no match 'foo' '@foo'
expecting success of 3070.666 'iwildmatch (via ls-files): no match '@foo' 'foo'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '@foo' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 666 - iwildmatch (via ls-files): no match '@foo' 'foo'
expecting success of 3070.667 'pathmatch: no match 'foo' '@foo'':
test_must_fail test-tool wildmatch pathmatch 'foo' '@foo'
ok 667 - pathmatch: no match 'foo' '@foo'
expecting success of 3070.668 'pathmatch (via ls-files): no match '@foo' 'foo'':
>expect &&
git ls-files -z -- '@foo' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 668 - pathmatch (via ls-files): no match '@foo' 'foo'
expecting success of 3070.669 'ipathmatch: no match 'foo' '@foo'':
test_must_fail test-tool wildmatch ipathmatch 'foo' '@foo'
ok 669 - ipathmatch: no match 'foo' '@foo'
expecting success of 3070.670 'ipathmatch (via ls-files): no match '@foo' 'foo'':
>expect &&
git --icase-pathspecs ls-files -z -- '@foo' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 670 - ipathmatch (via ls-files): no match '@foo' 'foo'
expecting success of 3070.671 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo
ok 671 - cleanup after previous file test
expecting success of 3070.672 'setup match file test for [ab]':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 672 - setup match file test for [ab]
expecting success of 3070.673 'wildmatch: match '[ab]' '\[ab]'':
test-tool wildmatch wildmatch '[ab]' '\[ab]'
ok 673 - wildmatch: match '[ab]' '\[ab]'
expecting success of 3070.674 'wildmatch (via ls-files): match '\[ab]' '[ab]'':
printf '%s' '[ab]' >expect &&
git --glob-pathspecs ls-files -z -- '\[ab]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 674 - wildmatch (via ls-files): match '\[ab]' '[ab]'
expecting success of 3070.675 'iwildmatch: match '[ab]' '\[ab]'':
test-tool wildmatch iwildmatch '[ab]' '\[ab]'
ok 675 - iwildmatch: match '[ab]' '\[ab]'
expecting success of 3070.676 'iwildmatch (via ls-files): match '\[ab]' '[ab]'':
printf '%s' '[ab]' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '\[ab]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 676 - iwildmatch (via ls-files): match '\[ab]' '[ab]'
expecting success of 3070.677 'pathmatch: match '[ab]' '\[ab]'':
test-tool wildmatch pathmatch '[ab]' '\[ab]'
ok 677 - pathmatch: match '[ab]' '\[ab]'
expecting success of 3070.678 'pathmatch (via ls-files): match '\[ab]' '[ab]'':
printf '%s' '[ab]' >expect &&
git ls-files -z -- '\[ab]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 678 - pathmatch (via ls-files): match '\[ab]' '[ab]'
expecting success of 3070.679 'ipathmatch: match '[ab]' '\[ab]'':
test-tool wildmatch ipathmatch '[ab]' '\[ab]'
ok 679 - ipathmatch: match '[ab]' '\[ab]'
expecting success of 3070.680 'ipathmatch (via ls-files): match '\[ab]' '[ab]'':
printf '%s' '[ab]' >expect &&
git --icase-pathspecs ls-files -z -- '\[ab]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 680 - ipathmatch (via ls-files): match '\[ab]' '[ab]'
expecting success of 3070.681 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing [ab]
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 681 - cleanup after previous file test
expecting success of 3070.682 'setup match file test for [ab]':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 682 - setup match file test for [ab]
expecting success of 3070.683 'wildmatch: match '[ab]' '[[]ab]'':
test-tool wildmatch wildmatch '[ab]' '[[]ab]'
ok 683 - wildmatch: match '[ab]' '[[]ab]'
expecting success of 3070.684 'wildmatch (via ls-files): match '[[]ab]' '[ab]'':
printf '%s' '[ab]' >expect &&
git --glob-pathspecs ls-files -z -- '[[]ab]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 684 - wildmatch (via ls-files): match '[[]ab]' '[ab]'
expecting success of 3070.685 'iwildmatch: match '[ab]' '[[]ab]'':
test-tool wildmatch iwildmatch '[ab]' '[[]ab]'
ok 685 - iwildmatch: match '[ab]' '[[]ab]'
expecting success of 3070.686 'iwildmatch (via ls-files): match '[[]ab]' '[ab]'':
printf '%s' '[ab]' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[[]ab]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 686 - iwildmatch (via ls-files): match '[[]ab]' '[ab]'
expecting success of 3070.687 'pathmatch: match '[ab]' '[[]ab]'':
test-tool wildmatch pathmatch '[ab]' '[[]ab]'
ok 687 - pathmatch: match '[ab]' '[[]ab]'
expecting success of 3070.688 'pathmatch (via ls-files): match '[[]ab]' '[ab]'':
printf '%s' '[ab]' >expect &&
git ls-files -z -- '[[]ab]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 688 - pathmatch (via ls-files): match '[[]ab]' '[ab]'
expecting success of 3070.689 'ipathmatch: match '[ab]' '[[]ab]'':
test-tool wildmatch ipathmatch '[ab]' '[[]ab]'
ok 689 - ipathmatch: match '[ab]' '[[]ab]'
expecting success of 3070.690 'ipathmatch (via ls-files): match '[[]ab]' '[ab]'':
printf '%s' '[ab]' >expect &&
git --icase-pathspecs ls-files -z -- '[[]ab]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 690 - ipathmatch (via ls-files): match '[[]ab]' '[ab]'
expecting success of 3070.691 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing [ab]
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 691 - cleanup after previous file test
expecting success of 3070.692 'setup match file test for [ab]':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 692 - setup match file test for [ab]
expecting success of 3070.693 'wildmatch: match '[ab]' '[[:]ab]'':
test-tool wildmatch wildmatch '[ab]' '[[:]ab]'
ok 693 - wildmatch: match '[ab]' '[[:]ab]'
expecting success of 3070.694 'wildmatch (via ls-files): match '[[:]ab]' '[ab]'':
printf '%s' '[ab]' >expect &&
git --glob-pathspecs ls-files -z -- '[[:]ab]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 694 - wildmatch (via ls-files): match '[[:]ab]' '[ab]'
expecting success of 3070.695 'iwildmatch: match '[ab]' '[[:]ab]'':
test-tool wildmatch iwildmatch '[ab]' '[[:]ab]'
ok 695 - iwildmatch: match '[ab]' '[[:]ab]'
expecting success of 3070.696 'iwildmatch (via ls-files): match '[[:]ab]' '[ab]'':
printf '%s' '[ab]' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[[:]ab]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 696 - iwildmatch (via ls-files): match '[[:]ab]' '[ab]'
expecting success of 3070.697 'pathmatch: match '[ab]' '[[:]ab]'':
test-tool wildmatch pathmatch '[ab]' '[[:]ab]'
ok 697 - pathmatch: match '[ab]' '[[:]ab]'
expecting success of 3070.698 'pathmatch (via ls-files): match '[[:]ab]' '[ab]'':
printf '%s' '[ab]' >expect &&
git ls-files -z -- '[[:]ab]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 698 - pathmatch (via ls-files): match '[[:]ab]' '[ab]'
expecting success of 3070.699 'ipathmatch: match '[ab]' '[[:]ab]'':
test-tool wildmatch ipathmatch '[ab]' '[[:]ab]'
ok 699 - ipathmatch: match '[ab]' '[[:]ab]'
expecting success of 3070.700 'ipathmatch (via ls-files): match '[[:]ab]' '[ab]'':
printf '%s' '[ab]' >expect &&
git --icase-pathspecs ls-files -z -- '[[:]ab]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 700 - ipathmatch (via ls-files): match '[[:]ab]' '[ab]'
expecting success of 3070.701 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing [ab]
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 701 - cleanup after previous file test
expecting success of 3070.702 'setup match file test for [ab]':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 702 - setup match file test for [ab]
expecting success of 3070.703 'wildmatch: no match '[ab]' '[[::]ab]'':
test_must_fail test-tool wildmatch wildmatch '[ab]' '[[::]ab]'
ok 703 - wildmatch: no match '[ab]' '[[::]ab]'
expecting success of 3070.704 'wildmatch (via ls-files): no match '[[::]ab]' '[ab]'':
>expect &&
git --glob-pathspecs ls-files -z -- '[[::]ab]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 704 - wildmatch (via ls-files): no match '[[::]ab]' '[ab]'
expecting success of 3070.705 'iwildmatch: no match '[ab]' '[[::]ab]'':
test_must_fail test-tool wildmatch iwildmatch '[ab]' '[[::]ab]'
ok 705 - iwildmatch: no match '[ab]' '[[::]ab]'
expecting success of 3070.706 'iwildmatch (via ls-files): no match '[[::]ab]' '[ab]'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[[::]ab]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 706 - iwildmatch (via ls-files): no match '[[::]ab]' '[ab]'
expecting success of 3070.707 'pathmatch: no match '[ab]' '[[::]ab]'':
test_must_fail test-tool wildmatch pathmatch '[ab]' '[[::]ab]'
ok 707 - pathmatch: no match '[ab]' '[[::]ab]'
expecting success of 3070.708 'pathmatch (via ls-files): no match '[[::]ab]' '[ab]'':
>expect &&
git ls-files -z -- '[[::]ab]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 708 - pathmatch (via ls-files): no match '[[::]ab]' '[ab]'
expecting success of 3070.709 'ipathmatch: no match '[ab]' '[[::]ab]'':
test_must_fail test-tool wildmatch ipathmatch '[ab]' '[[::]ab]'
ok 709 - ipathmatch: no match '[ab]' '[[::]ab]'
expecting success of 3070.710 'ipathmatch (via ls-files): no match '[[::]ab]' '[ab]'':
>expect &&
git --icase-pathspecs ls-files -z -- '[[::]ab]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 710 - ipathmatch (via ls-files): no match '[[::]ab]' '[ab]'
expecting success of 3070.711 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing [ab]
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 711 - cleanup after previous file test
expecting success of 3070.712 'setup match file test for [ab]':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 712 - setup match file test for [ab]
expecting success of 3070.713 'wildmatch: match '[ab]' '[[:digit]ab]'':
test-tool wildmatch wildmatch '[ab]' '[[:digit]ab]'
ok 713 - wildmatch: match '[ab]' '[[:digit]ab]'
expecting success of 3070.714 'wildmatch (via ls-files): match '[[:digit]ab]' '[ab]'':
printf '%s' '[ab]' >expect &&
git --glob-pathspecs ls-files -z -- '[[:digit]ab]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 714 - wildmatch (via ls-files): match '[[:digit]ab]' '[ab]'
expecting success of 3070.715 'iwildmatch: match '[ab]' '[[:digit]ab]'':
test-tool wildmatch iwildmatch '[ab]' '[[:digit]ab]'
ok 715 - iwildmatch: match '[ab]' '[[:digit]ab]'
expecting success of 3070.716 'iwildmatch (via ls-files): match '[[:digit]ab]' '[ab]'':
printf '%s' '[ab]' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[[:digit]ab]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 716 - iwildmatch (via ls-files): match '[[:digit]ab]' '[ab]'
expecting success of 3070.717 'pathmatch: match '[ab]' '[[:digit]ab]'':
test-tool wildmatch pathmatch '[ab]' '[[:digit]ab]'
ok 717 - pathmatch: match '[ab]' '[[:digit]ab]'
expecting success of 3070.718 'pathmatch (via ls-files): match '[[:digit]ab]' '[ab]'':
printf '%s' '[ab]' >expect &&
git ls-files -z -- '[[:digit]ab]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 718 - pathmatch (via ls-files): match '[[:digit]ab]' '[ab]'
expecting success of 3070.719 'ipathmatch: match '[ab]' '[[:digit]ab]'':
test-tool wildmatch ipathmatch '[ab]' '[[:digit]ab]'
ok 719 - ipathmatch: match '[ab]' '[[:digit]ab]'
expecting success of 3070.720 'ipathmatch (via ls-files): match '[[:digit]ab]' '[ab]'':
printf '%s' '[ab]' >expect &&
git --icase-pathspecs ls-files -z -- '[[:digit]ab]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 720 - ipathmatch (via ls-files): match '[[:digit]ab]' '[ab]'
expecting success of 3070.721 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing [ab]
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 721 - cleanup after previous file test
expecting success of 3070.722 'setup match file test for [ab]':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 722 - setup match file test for [ab]
expecting success of 3070.723 'wildmatch: match '[ab]' '[\[:]ab]'':
test-tool wildmatch wildmatch '[ab]' '[\[:]ab]'
ok 723 - wildmatch: match '[ab]' '[\[:]ab]'
expecting success of 3070.724 'wildmatch (via ls-files): match '[\[:]ab]' '[ab]'':
printf '%s' '[ab]' >expect &&
git --glob-pathspecs ls-files -z -- '[\[:]ab]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 724 - wildmatch (via ls-files): match '[\[:]ab]' '[ab]'
expecting success of 3070.725 'iwildmatch: match '[ab]' '[\[:]ab]'':
test-tool wildmatch iwildmatch '[ab]' '[\[:]ab]'
ok 725 - iwildmatch: match '[ab]' '[\[:]ab]'
expecting success of 3070.726 'iwildmatch (via ls-files): match '[\[:]ab]' '[ab]'':
printf '%s' '[ab]' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[\[:]ab]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 726 - iwildmatch (via ls-files): match '[\[:]ab]' '[ab]'
expecting success of 3070.727 'pathmatch: match '[ab]' '[\[:]ab]'':
test-tool wildmatch pathmatch '[ab]' '[\[:]ab]'
ok 727 - pathmatch: match '[ab]' '[\[:]ab]'
expecting success of 3070.728 'pathmatch (via ls-files): match '[\[:]ab]' '[ab]'':
printf '%s' '[ab]' >expect &&
git ls-files -z -- '[\[:]ab]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 728 - pathmatch (via ls-files): match '[\[:]ab]' '[ab]'
expecting success of 3070.729 'ipathmatch: match '[ab]' '[\[:]ab]'':
test-tool wildmatch ipathmatch '[ab]' '[\[:]ab]'
ok 729 - ipathmatch: match '[ab]' '[\[:]ab]'
expecting success of 3070.730 'ipathmatch (via ls-files): match '[\[:]ab]' '[ab]'':
printf '%s' '[ab]' >expect &&
git --icase-pathspecs ls-files -z -- '[\[:]ab]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 730 - ipathmatch (via ls-files): match '[\[:]ab]' '[ab]'
expecting success of 3070.731 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing [ab]
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 731 - cleanup after previous file test
expecting success of 3070.732 'setup match file test for ?a?b':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 732 - setup match file test for ?a?b
expecting success of 3070.733 'wildmatch: match '?a?b' '\??\?b'':
test-tool wildmatch wildmatch '?a?b' '\??\?b'
ok 733 - wildmatch: match '?a?b' '\??\?b'
expecting success of 3070.734 'wildmatch (via ls-files): match '\??\?b' '?a?b'':
printf '%s' '?a?b' >expect &&
git --glob-pathspecs ls-files -z -- '\??\?b' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 734 - wildmatch (via ls-files): match '\??\?b' '?a?b'
expecting success of 3070.735 'iwildmatch: match '?a?b' '\??\?b'':
test-tool wildmatch iwildmatch '?a?b' '\??\?b'
ok 735 - iwildmatch: match '?a?b' '\??\?b'
expecting success of 3070.736 'iwildmatch (via ls-files): match '\??\?b' '?a?b'':
printf '%s' '?a?b' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '\??\?b' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 736 - iwildmatch (via ls-files): match '\??\?b' '?a?b'
expecting success of 3070.737 'pathmatch: match '?a?b' '\??\?b'':
test-tool wildmatch pathmatch '?a?b' '\??\?b'
ok 737 - pathmatch: match '?a?b' '\??\?b'
expecting success of 3070.738 'pathmatch (via ls-files): match '\??\?b' '?a?b'':
printf '%s' '?a?b' >expect &&
git ls-files -z -- '\??\?b' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 738 - pathmatch (via ls-files): match '\??\?b' '?a?b'
expecting success of 3070.739 'ipathmatch: match '?a?b' '\??\?b'':
test-tool wildmatch ipathmatch '?a?b' '\??\?b'
ok 739 - ipathmatch: match '?a?b' '\??\?b'
expecting success of 3070.740 'ipathmatch (via ls-files): match '\??\?b' '?a?b'':
printf '%s' '?a?b' >expect &&
git --icase-pathspecs ls-files -z -- '\??\?b' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 740 - ipathmatch (via ls-files): match '\??\?b' '?a?b'
expecting success of 3070.741 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing ?a?b
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 741 - cleanup after previous file test
expecting success of 3070.742 'setup match file test for abc':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 742 - setup match file test for abc
expecting success of 3070.743 'wildmatch: match 'abc' '\a\b\c'':
test-tool wildmatch wildmatch 'abc' '\a\b\c'
ok 743 - wildmatch: match 'abc' '\a\b\c'
expecting success of 3070.744 'wildmatch (via ls-files): match '\a\b\c' 'abc'':
printf '%s' 'abc' >expect &&
git --glob-pathspecs ls-files -z -- '\a\b\c' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 744 - wildmatch (via ls-files): match '\a\b\c' 'abc'
expecting success of 3070.745 'iwildmatch: match 'abc' '\a\b\c'':
test-tool wildmatch iwildmatch 'abc' '\a\b\c'
ok 745 - iwildmatch: match 'abc' '\a\b\c'
expecting success of 3070.746 'iwildmatch (via ls-files): match '\a\b\c' 'abc'':
printf '%s' 'abc' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '\a\b\c' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 746 - iwildmatch (via ls-files): match '\a\b\c' 'abc'
expecting success of 3070.747 'pathmatch: match 'abc' '\a\b\c'':
test-tool wildmatch pathmatch 'abc' '\a\b\c'
ok 747 - pathmatch: match 'abc' '\a\b\c'
expecting success of 3070.748 'pathmatch (via ls-files): match '\a\b\c' 'abc'':
printf '%s' 'abc' >expect &&
git ls-files -z -- '\a\b\c' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 748 - pathmatch (via ls-files): match '\a\b\c' 'abc'
expecting success of 3070.749 'ipathmatch: match 'abc' '\a\b\c'':
test-tool wildmatch ipathmatch 'abc' '\a\b\c'
ok 749 - ipathmatch: match 'abc' '\a\b\c'
expecting success of 3070.750 'ipathmatch (via ls-files): match '\a\b\c' 'abc'':
printf '%s' 'abc' >expect &&
git --icase-pathspecs ls-files -z -- '\a\b\c' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 750 - ipathmatch (via ls-files): match '\a\b\c' 'abc'
expecting success of 3070.751 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing abc
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 751 - cleanup after previous file test
expecting success of 3070.752 'setup match file test for foo':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 752 - setup match file test for foo
expecting success of 3070.753 'wildmatch: no match 'foo' ''':
test_must_fail test-tool wildmatch wildmatch 'foo' ''
ok 753 - wildmatch: no match 'foo' ''
expecting success of 3070.754 'wildmatch (via ls-files): match dies on '' 'foo'':
printf '%s' 'foo' >expect &&
test_must_fail git --glob-pathspecs ls-files -z -- ''
fatal: empty string is not a valid pathspec. please use . instead if you meant to match all paths
ok 754 - wildmatch (via ls-files): match dies on '' 'foo'
expecting success of 3070.755 'iwildmatch: no match 'foo' ''':
test_must_fail test-tool wildmatch iwildmatch 'foo' ''
ok 755 - iwildmatch: no match 'foo' ''
expecting success of 3070.756 'iwildmatch (via ls-files): match dies on '' 'foo'':
printf '%s' 'foo' >expect &&
test_must_fail git --glob-pathspecs --icase-pathspecs ls-files -z -- ''
fatal: empty string is not a valid pathspec. please use . instead if you meant to match all paths
ok 756 - iwildmatch (via ls-files): match dies on '' 'foo'
expecting success of 3070.757 'pathmatch: no match 'foo' ''':
test_must_fail test-tool wildmatch pathmatch 'foo' ''
ok 757 - pathmatch: no match 'foo' ''
expecting success of 3070.758 'pathmatch (via ls-files): match dies on '' 'foo'':
printf '%s' 'foo' >expect &&
test_must_fail git ls-files -z -- ''
fatal: empty string is not a valid pathspec. please use . instead if you meant to match all paths
ok 758 - pathmatch (via ls-files): match dies on '' 'foo'
expecting success of 3070.759 'ipathmatch: no match 'foo' ''':
test_must_fail test-tool wildmatch ipathmatch 'foo' ''
ok 759 - ipathmatch: no match 'foo' ''
expecting success of 3070.760 'ipathmatch (via ls-files): match dies on '' 'foo'':
printf '%s' 'foo' >expect &&
test_must_fail git --icase-pathspecs ls-files -z -- ''
fatal: empty string is not a valid pathspec. please use . instead if you meant to match all paths
ok 760 - ipathmatch (via ls-files): match dies on '' 'foo'
expecting success of 3070.761 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing expect
Removing foo
ok 761 - cleanup after previous file test
expecting success of 3070.762 'setup match file test for foo/bar/baz/to':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 762 - setup match file test for foo/bar/baz/to
expecting success of 3070.763 'wildmatch: match 'foo/bar/baz/to' '**/t[o]'':
test-tool wildmatch wildmatch 'foo/bar/baz/to' '**/t[o]'
ok 763 - wildmatch: match 'foo/bar/baz/to' '**/t[o]'
expecting success of 3070.764 'wildmatch (via ls-files): match '**/t[o]' 'foo/bar/baz/to'':
printf '%s' 'foo/bar/baz/to' >expect &&
git --glob-pathspecs ls-files -z -- '**/t[o]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 764 - wildmatch (via ls-files): match '**/t[o]' 'foo/bar/baz/to'
expecting success of 3070.765 'iwildmatch: match 'foo/bar/baz/to' '**/t[o]'':
test-tool wildmatch iwildmatch 'foo/bar/baz/to' '**/t[o]'
ok 765 - iwildmatch: match 'foo/bar/baz/to' '**/t[o]'
expecting success of 3070.766 'iwildmatch (via ls-files): match '**/t[o]' 'foo/bar/baz/to'':
printf '%s' 'foo/bar/baz/to' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '**/t[o]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 766 - iwildmatch (via ls-files): match '**/t[o]' 'foo/bar/baz/to'
expecting success of 3070.767 'pathmatch: match 'foo/bar/baz/to' '**/t[o]'':
test-tool wildmatch pathmatch 'foo/bar/baz/to' '**/t[o]'
ok 767 - pathmatch: match 'foo/bar/baz/to' '**/t[o]'
expecting success of 3070.768 'pathmatch (via ls-files): match '**/t[o]' 'foo/bar/baz/to'':
printf '%s' 'foo/bar/baz/to' >expect &&
git ls-files -z -- '**/t[o]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 768 - pathmatch (via ls-files): match '**/t[o]' 'foo/bar/baz/to'
expecting success of 3070.769 'ipathmatch: match 'foo/bar/baz/to' '**/t[o]'':
test-tool wildmatch ipathmatch 'foo/bar/baz/to' '**/t[o]'
ok 769 - ipathmatch: match 'foo/bar/baz/to' '**/t[o]'
expecting success of 3070.770 'ipathmatch (via ls-files): match '**/t[o]' 'foo/bar/baz/to'':
printf '%s' 'foo/bar/baz/to' >expect &&
git --icase-pathspecs ls-files -z -- '**/t[o]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 770 - ipathmatch (via ls-files): match '**/t[o]' 'foo/bar/baz/to'
expecting success of 3070.771 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo/
ok 771 - cleanup after previous file test
expecting success of 3070.772 'setup match file test for a1B':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 772 - setup match file test for a1B
expecting success of 3070.773 'wildmatch: match 'a1B' '[[:alpha:]][[:digit:]][[:upper:]]'':
test-tool wildmatch wildmatch 'a1B' '[[:alpha:]][[:digit:]][[:upper:]]'
ok 773 - wildmatch: match 'a1B' '[[:alpha:]][[:digit:]][[:upper:]]'
expecting success of 3070.774 'wildmatch (via ls-files): match '[[:alpha:]][[:digit:]][[:upper:]]' 'a1B'':
printf '%s' 'a1B' >expect &&
git --glob-pathspecs ls-files -z -- '[[:alpha:]][[:digit:]][[:upper:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 774 - wildmatch (via ls-files): match '[[:alpha:]][[:digit:]][[:upper:]]' 'a1B'
expecting success of 3070.775 'iwildmatch: match 'a1B' '[[:alpha:]][[:digit:]][[:upper:]]'':
test-tool wildmatch iwildmatch 'a1B' '[[:alpha:]][[:digit:]][[:upper:]]'
ok 775 - iwildmatch: match 'a1B' '[[:alpha:]][[:digit:]][[:upper:]]'
expecting success of 3070.776 'iwildmatch (via ls-files): match '[[:alpha:]][[:digit:]][[:upper:]]' 'a1B'':
printf '%s' 'a1B' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[[:alpha:]][[:digit:]][[:upper:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 776 - iwildmatch (via ls-files): match '[[:alpha:]][[:digit:]][[:upper:]]' 'a1B'
expecting success of 3070.777 'pathmatch: match 'a1B' '[[:alpha:]][[:digit:]][[:upper:]]'':
test-tool wildmatch pathmatch 'a1B' '[[:alpha:]][[:digit:]][[:upper:]]'
ok 777 - pathmatch: match 'a1B' '[[:alpha:]][[:digit:]][[:upper:]]'
expecting success of 3070.778 'pathmatch (via ls-files): match '[[:alpha:]][[:digit:]][[:upper:]]' 'a1B'':
printf '%s' 'a1B' >expect &&
git ls-files -z -- '[[:alpha:]][[:digit:]][[:upper:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 778 - pathmatch (via ls-files): match '[[:alpha:]][[:digit:]][[:upper:]]' 'a1B'
expecting success of 3070.779 'ipathmatch: match 'a1B' '[[:alpha:]][[:digit:]][[:upper:]]'':
test-tool wildmatch ipathmatch 'a1B' '[[:alpha:]][[:digit:]][[:upper:]]'
ok 779 - ipathmatch: match 'a1B' '[[:alpha:]][[:digit:]][[:upper:]]'
expecting success of 3070.780 'ipathmatch (via ls-files): match '[[:alpha:]][[:digit:]][[:upper:]]' 'a1B'':
printf '%s' 'a1B' >expect &&
git --icase-pathspecs ls-files -z -- '[[:alpha:]][[:digit:]][[:upper:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 780 - ipathmatch (via ls-files): match '[[:alpha:]][[:digit:]][[:upper:]]' 'a1B'
expecting success of 3070.781 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing a1B
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 781 - cleanup after previous file test
expecting success of 3070.782 'setup match file test for a':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 782 - setup match file test for a
expecting success of 3070.783 'wildmatch: no match 'a' '[[:digit:][:upper:][:space:]]'':
test_must_fail test-tool wildmatch wildmatch 'a' '[[:digit:][:upper:][:space:]]'
ok 783 - wildmatch: no match 'a' '[[:digit:][:upper:][:space:]]'
expecting success of 3070.784 'wildmatch (via ls-files): no match '[[:digit:][:upper:][:space:]]' 'a'':
>expect &&
git --glob-pathspecs ls-files -z -- '[[:digit:][:upper:][:space:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 784 - wildmatch (via ls-files): no match '[[:digit:][:upper:][:space:]]' 'a'
expecting success of 3070.785 'iwildmatch: match 'a' '[[:digit:][:upper:][:space:]]'':
test-tool wildmatch iwildmatch 'a' '[[:digit:][:upper:][:space:]]'
ok 785 - iwildmatch: match 'a' '[[:digit:][:upper:][:space:]]'
expecting success of 3070.786 'iwildmatch (via ls-files): match '[[:digit:][:upper:][:space:]]' 'a'':
printf '%s' 'a' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[[:digit:][:upper:][:space:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 786 - iwildmatch (via ls-files): match '[[:digit:][:upper:][:space:]]' 'a'
expecting success of 3070.787 'pathmatch: no match 'a' '[[:digit:][:upper:][:space:]]'':
test_must_fail test-tool wildmatch pathmatch 'a' '[[:digit:][:upper:][:space:]]'
ok 787 - pathmatch: no match 'a' '[[:digit:][:upper:][:space:]]'
expecting success of 3070.788 'pathmatch (via ls-files): no match '[[:digit:][:upper:][:space:]]' 'a'':
>expect &&
git ls-files -z -- '[[:digit:][:upper:][:space:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 788 - pathmatch (via ls-files): no match '[[:digit:][:upper:][:space:]]' 'a'
expecting success of 3070.789 'ipathmatch: match 'a' '[[:digit:][:upper:][:space:]]'':
test-tool wildmatch ipathmatch 'a' '[[:digit:][:upper:][:space:]]'
ok 789 - ipathmatch: match 'a' '[[:digit:][:upper:][:space:]]'
expecting success of 3070.790 'ipathmatch (via ls-files): match '[[:digit:][:upper:][:space:]]' 'a'':
printf '%s' 'a' >expect &&
git --icase-pathspecs ls-files -z -- '[[:digit:][:upper:][:space:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 790 - ipathmatch (via ls-files): match '[[:digit:][:upper:][:space:]]' 'a'
expecting success of 3070.791 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing a
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 791 - cleanup after previous file test
expecting success of 3070.792 'setup match file test for A':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 792 - setup match file test for A
expecting success of 3070.793 'wildmatch: match 'A' '[[:digit:][:upper:][:space:]]'':
test-tool wildmatch wildmatch 'A' '[[:digit:][:upper:][:space:]]'
ok 793 - wildmatch: match 'A' '[[:digit:][:upper:][:space:]]'
expecting success of 3070.794 'wildmatch (via ls-files): match '[[:digit:][:upper:][:space:]]' 'A'':
printf '%s' 'A' >expect &&
git --glob-pathspecs ls-files -z -- '[[:digit:][:upper:][:space:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 794 - wildmatch (via ls-files): match '[[:digit:][:upper:][:space:]]' 'A'
expecting success of 3070.795 'iwildmatch: match 'A' '[[:digit:][:upper:][:space:]]'':
test-tool wildmatch iwildmatch 'A' '[[:digit:][:upper:][:space:]]'
ok 795 - iwildmatch: match 'A' '[[:digit:][:upper:][:space:]]'
expecting success of 3070.796 'iwildmatch (via ls-files): match '[[:digit:][:upper:][:space:]]' 'A'':
printf '%s' 'A' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[[:digit:][:upper:][:space:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 796 - iwildmatch (via ls-files): match '[[:digit:][:upper:][:space:]]' 'A'
expecting success of 3070.797 'pathmatch: match 'A' '[[:digit:][:upper:][:space:]]'':
test-tool wildmatch pathmatch 'A' '[[:digit:][:upper:][:space:]]'
ok 797 - pathmatch: match 'A' '[[:digit:][:upper:][:space:]]'
expecting success of 3070.798 'pathmatch (via ls-files): match '[[:digit:][:upper:][:space:]]' 'A'':
printf '%s' 'A' >expect &&
git ls-files -z -- '[[:digit:][:upper:][:space:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 798 - pathmatch (via ls-files): match '[[:digit:][:upper:][:space:]]' 'A'
expecting success of 3070.799 'ipathmatch: match 'A' '[[:digit:][:upper:][:space:]]'':
test-tool wildmatch ipathmatch 'A' '[[:digit:][:upper:][:space:]]'
ok 799 - ipathmatch: match 'A' '[[:digit:][:upper:][:space:]]'
expecting success of 3070.800 'ipathmatch (via ls-files): match '[[:digit:][:upper:][:space:]]' 'A'':
printf '%s' 'A' >expect &&
git --icase-pathspecs ls-files -z -- '[[:digit:][:upper:][:space:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 800 - ipathmatch (via ls-files): match '[[:digit:][:upper:][:space:]]' 'A'
expecting success of 3070.801 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing A
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 801 - cleanup after previous file test
expecting success of 3070.802 'setup match file test for 1':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 802 - setup match file test for 1
expecting success of 3070.803 'wildmatch: match '1' '[[:digit:][:upper:][:space:]]'':
test-tool wildmatch wildmatch '1' '[[:digit:][:upper:][:space:]]'
ok 803 - wildmatch: match '1' '[[:digit:][:upper:][:space:]]'
expecting success of 3070.804 'wildmatch (via ls-files): match '[[:digit:][:upper:][:space:]]' '1'':
printf '%s' '1' >expect &&
git --glob-pathspecs ls-files -z -- '[[:digit:][:upper:][:space:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 804 - wildmatch (via ls-files): match '[[:digit:][:upper:][:space:]]' '1'
expecting success of 3070.805 'iwildmatch: match '1' '[[:digit:][:upper:][:space:]]'':
test-tool wildmatch iwildmatch '1' '[[:digit:][:upper:][:space:]]'
ok 805 - iwildmatch: match '1' '[[:digit:][:upper:][:space:]]'
expecting success of 3070.806 'iwildmatch (via ls-files): match '[[:digit:][:upper:][:space:]]' '1'':
printf '%s' '1' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[[:digit:][:upper:][:space:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 806 - iwildmatch (via ls-files): match '[[:digit:][:upper:][:space:]]' '1'
expecting success of 3070.807 'pathmatch: match '1' '[[:digit:][:upper:][:space:]]'':
test-tool wildmatch pathmatch '1' '[[:digit:][:upper:][:space:]]'
ok 807 - pathmatch: match '1' '[[:digit:][:upper:][:space:]]'
expecting success of 3070.808 'pathmatch (via ls-files): match '[[:digit:][:upper:][:space:]]' '1'':
printf '%s' '1' >expect &&
git ls-files -z -- '[[:digit:][:upper:][:space:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 808 - pathmatch (via ls-files): match '[[:digit:][:upper:][:space:]]' '1'
expecting success of 3070.809 'ipathmatch: match '1' '[[:digit:][:upper:][:space:]]'':
test-tool wildmatch ipathmatch '1' '[[:digit:][:upper:][:space:]]'
ok 809 - ipathmatch: match '1' '[[:digit:][:upper:][:space:]]'
expecting success of 3070.810 'ipathmatch (via ls-files): match '[[:digit:][:upper:][:space:]]' '1'':
printf '%s' '1' >expect &&
git --icase-pathspecs ls-files -z -- '[[:digit:][:upper:][:space:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 810 - ipathmatch (via ls-files): match '[[:digit:][:upper:][:space:]]' '1'
expecting success of 3070.811 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing 1
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 811 - cleanup after previous file test
expecting success of 3070.812 'setup match file test for 1':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 812 - setup match file test for 1
expecting success of 3070.813 'wildmatch: no match '1' '[[:digit:][:upper:][:spaci:]]'':
test_must_fail test-tool wildmatch wildmatch '1' '[[:digit:][:upper:][:spaci:]]'
ok 813 - wildmatch: no match '1' '[[:digit:][:upper:][:spaci:]]'
expecting success of 3070.814 'wildmatch (via ls-files): no match '[[:digit:][:upper:][:spaci:]]' '1'':
>expect &&
git --glob-pathspecs ls-files -z -- '[[:digit:][:upper:][:spaci:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 814 - wildmatch (via ls-files): no match '[[:digit:][:upper:][:spaci:]]' '1'
expecting success of 3070.815 'iwildmatch: no match '1' '[[:digit:][:upper:][:spaci:]]'':
test_must_fail test-tool wildmatch iwildmatch '1' '[[:digit:][:upper:][:spaci:]]'
ok 815 - iwildmatch: no match '1' '[[:digit:][:upper:][:spaci:]]'
expecting success of 3070.816 'iwildmatch (via ls-files): no match '[[:digit:][:upper:][:spaci:]]' '1'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[[:digit:][:upper:][:spaci:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 816 - iwildmatch (via ls-files): no match '[[:digit:][:upper:][:spaci:]]' '1'
expecting success of 3070.817 'pathmatch: no match '1' '[[:digit:][:upper:][:spaci:]]'':
test_must_fail test-tool wildmatch pathmatch '1' '[[:digit:][:upper:][:spaci:]]'
ok 817 - pathmatch: no match '1' '[[:digit:][:upper:][:spaci:]]'
expecting success of 3070.818 'pathmatch (via ls-files): no match '[[:digit:][:upper:][:spaci:]]' '1'':
>expect &&
git ls-files -z -- '[[:digit:][:upper:][:spaci:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 818 - pathmatch (via ls-files): no match '[[:digit:][:upper:][:spaci:]]' '1'
expecting success of 3070.819 'ipathmatch: no match '1' '[[:digit:][:upper:][:spaci:]]'':
test_must_fail test-tool wildmatch ipathmatch '1' '[[:digit:][:upper:][:spaci:]]'
ok 819 - ipathmatch: no match '1' '[[:digit:][:upper:][:spaci:]]'
expecting success of 3070.820 'ipathmatch (via ls-files): no match '[[:digit:][:upper:][:spaci:]]' '1'':
>expect &&
git --icase-pathspecs ls-files -z -- '[[:digit:][:upper:][:spaci:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 820 - ipathmatch (via ls-files): no match '[[:digit:][:upper:][:spaci:]]' '1'
expecting success of 3070.821 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing 1
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 821 - cleanup after previous file test
expecting success of 3070.822 'setup match file test for ':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 822 - setup match file test for
expecting success of 3070.823 'wildmatch: match ' ' '[[:digit:][:upper:][:space:]]'':
test-tool wildmatch wildmatch ' ' '[[:digit:][:upper:][:space:]]'
ok 823 - wildmatch: match ' ' '[[:digit:][:upper:][:space:]]'
expecting success of 3070.824 'wildmatch (via ls-files): match '[[:digit:][:upper:][:space:]]' ' '':
printf '%s' ' ' >expect &&
git --glob-pathspecs ls-files -z -- '[[:digit:][:upper:][:space:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 824 - wildmatch (via ls-files): match '[[:digit:][:upper:][:space:]]' ' '
expecting success of 3070.825 'iwildmatch: match ' ' '[[:digit:][:upper:][:space:]]'':
test-tool wildmatch iwildmatch ' ' '[[:digit:][:upper:][:space:]]'
ok 825 - iwildmatch: match ' ' '[[:digit:][:upper:][:space:]]'
expecting success of 3070.826 'iwildmatch (via ls-files): match '[[:digit:][:upper:][:space:]]' ' '':
printf '%s' ' ' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[[:digit:][:upper:][:space:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 826 - iwildmatch (via ls-files): match '[[:digit:][:upper:][:space:]]' ' '
expecting success of 3070.827 'pathmatch: match ' ' '[[:digit:][:upper:][:space:]]'':
test-tool wildmatch pathmatch ' ' '[[:digit:][:upper:][:space:]]'
ok 827 - pathmatch: match ' ' '[[:digit:][:upper:][:space:]]'
expecting success of 3070.828 'pathmatch (via ls-files): match '[[:digit:][:upper:][:space:]]' ' '':
printf '%s' ' ' >expect &&
git ls-files -z -- '[[:digit:][:upper:][:space:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 828 - pathmatch (via ls-files): match '[[:digit:][:upper:][:space:]]' ' '
expecting success of 3070.829 'ipathmatch: match ' ' '[[:digit:][:upper:][:space:]]'':
test-tool wildmatch ipathmatch ' ' '[[:digit:][:upper:][:space:]]'
ok 829 - ipathmatch: match ' ' '[[:digit:][:upper:][:space:]]'
expecting success of 3070.830 'ipathmatch (via ls-files): match '[[:digit:][:upper:][:space:]]' ' '':
printf '%s' ' ' >expect &&
git --icase-pathspecs ls-files -z -- '[[:digit:][:upper:][:space:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 830 - ipathmatch (via ls-files): match '[[:digit:][:upper:][:space:]]' ' '
expecting success of 3070.831 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 831 - cleanup after previous file test
expecting success of 3070.832 'setup match file test for .':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 832 - setup match file test for .
expecting success of 3070.833 'wildmatch: no match '.' '[[:digit:][:upper:][:space:]]'':
test_must_fail test-tool wildmatch wildmatch '.' '[[:digit:][:upper:][:space:]]'
ok 833 - wildmatch: no match '.' '[[:digit:][:upper:][:space:]]'
checking known breakage of 3070.834 'wildmatch (via ls-files): no match skip '[[:digit:][:upper:][:space:]]' '.'': false
not ok 834 - wildmatch (via ls-files): no match skip '[[:digit:][:upper:][:space:]]' '.' # TODO known breakage
expecting success of 3070.835 'iwildmatch: no match '.' '[[:digit:][:upper:][:space:]]'':
test_must_fail test-tool wildmatch iwildmatch '.' '[[:digit:][:upper:][:space:]]'
ok 835 - iwildmatch: no match '.' '[[:digit:][:upper:][:space:]]'
checking known breakage of 3070.836 'iwildmatch (via ls-files): no match skip '[[:digit:][:upper:][:space:]]' '.'': false
not ok 836 - iwildmatch (via ls-files): no match skip '[[:digit:][:upper:][:space:]]' '.' # TODO known breakage
expecting success of 3070.837 'pathmatch: no match '.' '[[:digit:][:upper:][:space:]]'':
test_must_fail test-tool wildmatch pathmatch '.' '[[:digit:][:upper:][:space:]]'
ok 837 - pathmatch: no match '.' '[[:digit:][:upper:][:space:]]'
checking known breakage of 3070.838 'pathmatch (via ls-files): no match skip '[[:digit:][:upper:][:space:]]' '.'': false
not ok 838 - pathmatch (via ls-files): no match skip '[[:digit:][:upper:][:space:]]' '.' # TODO known breakage
expecting success of 3070.839 'ipathmatch: no match '.' '[[:digit:][:upper:][:space:]]'':
test_must_fail test-tool wildmatch ipathmatch '.' '[[:digit:][:upper:][:space:]]'
ok 839 - ipathmatch: no match '.' '[[:digit:][:upper:][:space:]]'
checking known breakage of 3070.840 'ipathmatch (via ls-files): no match skip '[[:digit:][:upper:][:space:]]' '.'': false
not ok 840 - ipathmatch (via ls-files): no match skip '[[:digit:][:upper:][:space:]]' '.' # TODO known breakage
expecting success of 3070.841 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
ok 841 - cleanup after previous file test
expecting success of 3070.842 'setup match file test for .':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 842 - setup match file test for .
expecting success of 3070.843 'wildmatch: match '.' '[[:digit:][:punct:][:space:]]'':
test-tool wildmatch wildmatch '.' '[[:digit:][:punct:][:space:]]'
ok 843 - wildmatch: match '.' '[[:digit:][:punct:][:space:]]'
checking known breakage of 3070.844 'wildmatch (via ls-files): match skip '[[:digit:][:punct:][:space:]]' '.'': false
not ok 844 - wildmatch (via ls-files): match skip '[[:digit:][:punct:][:space:]]' '.' # TODO known breakage
expecting success of 3070.845 'iwildmatch: match '.' '[[:digit:][:punct:][:space:]]'':
test-tool wildmatch iwildmatch '.' '[[:digit:][:punct:][:space:]]'
ok 845 - iwildmatch: match '.' '[[:digit:][:punct:][:space:]]'
checking known breakage of 3070.846 'iwildmatch (via ls-files): match skip '[[:digit:][:punct:][:space:]]' '.'': false
not ok 846 - iwildmatch (via ls-files): match skip '[[:digit:][:punct:][:space:]]' '.' # TODO known breakage
expecting success of 3070.847 'pathmatch: match '.' '[[:digit:][:punct:][:space:]]'':
test-tool wildmatch pathmatch '.' '[[:digit:][:punct:][:space:]]'
ok 847 - pathmatch: match '.' '[[:digit:][:punct:][:space:]]'
checking known breakage of 3070.848 'pathmatch (via ls-files): match skip '[[:digit:][:punct:][:space:]]' '.'': false
not ok 848 - pathmatch (via ls-files): match skip '[[:digit:][:punct:][:space:]]' '.' # TODO known breakage
expecting success of 3070.849 'ipathmatch: match '.' '[[:digit:][:punct:][:space:]]'':
test-tool wildmatch ipathmatch '.' '[[:digit:][:punct:][:space:]]'
ok 849 - ipathmatch: match '.' '[[:digit:][:punct:][:space:]]'
checking known breakage of 3070.850 'ipathmatch (via ls-files): match skip '[[:digit:][:punct:][:space:]]' '.'': false
not ok 850 - ipathmatch (via ls-files): match skip '[[:digit:][:punct:][:space:]]' '.' # TODO known breakage
expecting success of 3070.851 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
ok 851 - cleanup after previous file test
expecting success of 3070.852 'setup match file test for 5':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 852 - setup match file test for 5
expecting success of 3070.853 'wildmatch: match '5' '[[:xdigit:]]'':
test-tool wildmatch wildmatch '5' '[[:xdigit:]]'
ok 853 - wildmatch: match '5' '[[:xdigit:]]'
expecting success of 3070.854 'wildmatch (via ls-files): match '[[:xdigit:]]' '5'':
printf '%s' '5' >expect &&
git --glob-pathspecs ls-files -z -- '[[:xdigit:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 854 - wildmatch (via ls-files): match '[[:xdigit:]]' '5'
expecting success of 3070.855 'iwildmatch: match '5' '[[:xdigit:]]'':
test-tool wildmatch iwildmatch '5' '[[:xdigit:]]'
ok 855 - iwildmatch: match '5' '[[:xdigit:]]'
expecting success of 3070.856 'iwildmatch (via ls-files): match '[[:xdigit:]]' '5'':
printf '%s' '5' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[[:xdigit:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 856 - iwildmatch (via ls-files): match '[[:xdigit:]]' '5'
expecting success of 3070.857 'pathmatch: match '5' '[[:xdigit:]]'':
test-tool wildmatch pathmatch '5' '[[:xdigit:]]'
ok 857 - pathmatch: match '5' '[[:xdigit:]]'
expecting success of 3070.858 'pathmatch (via ls-files): match '[[:xdigit:]]' '5'':
printf '%s' '5' >expect &&
git ls-files -z -- '[[:xdigit:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 858 - pathmatch (via ls-files): match '[[:xdigit:]]' '5'
expecting success of 3070.859 'ipathmatch: match '5' '[[:xdigit:]]'':
test-tool wildmatch ipathmatch '5' '[[:xdigit:]]'
ok 859 - ipathmatch: match '5' '[[:xdigit:]]'
expecting success of 3070.860 'ipathmatch (via ls-files): match '[[:xdigit:]]' '5'':
printf '%s' '5' >expect &&
git --icase-pathspecs ls-files -z -- '[[:xdigit:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 860 - ipathmatch (via ls-files): match '[[:xdigit:]]' '5'
expecting success of 3070.861 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing 5
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 861 - cleanup after previous file test
expecting success of 3070.862 'setup match file test for f':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 862 - setup match file test for f
expecting success of 3070.863 'wildmatch: match 'f' '[[:xdigit:]]'':
test-tool wildmatch wildmatch 'f' '[[:xdigit:]]'
ok 863 - wildmatch: match 'f' '[[:xdigit:]]'
expecting success of 3070.864 'wildmatch (via ls-files): match '[[:xdigit:]]' 'f'':
printf '%s' 'f' >expect &&
git --glob-pathspecs ls-files -z -- '[[:xdigit:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 864 - wildmatch (via ls-files): match '[[:xdigit:]]' 'f'
expecting success of 3070.865 'iwildmatch: match 'f' '[[:xdigit:]]'':
test-tool wildmatch iwildmatch 'f' '[[:xdigit:]]'
ok 865 - iwildmatch: match 'f' '[[:xdigit:]]'
expecting success of 3070.866 'iwildmatch (via ls-files): match '[[:xdigit:]]' 'f'':
printf '%s' 'f' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[[:xdigit:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 866 - iwildmatch (via ls-files): match '[[:xdigit:]]' 'f'
expecting success of 3070.867 'pathmatch: match 'f' '[[:xdigit:]]'':
test-tool wildmatch pathmatch 'f' '[[:xdigit:]]'
ok 867 - pathmatch: match 'f' '[[:xdigit:]]'
expecting success of 3070.868 'pathmatch (via ls-files): match '[[:xdigit:]]' 'f'':
printf '%s' 'f' >expect &&
git ls-files -z -- '[[:xdigit:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 868 - pathmatch (via ls-files): match '[[:xdigit:]]' 'f'
expecting success of 3070.869 'ipathmatch: match 'f' '[[:xdigit:]]'':
test-tool wildmatch ipathmatch 'f' '[[:xdigit:]]'
ok 869 - ipathmatch: match 'f' '[[:xdigit:]]'
expecting success of 3070.870 'ipathmatch (via ls-files): match '[[:xdigit:]]' 'f'':
printf '%s' 'f' >expect &&
git --icase-pathspecs ls-files -z -- '[[:xdigit:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 870 - ipathmatch (via ls-files): match '[[:xdigit:]]' 'f'
expecting success of 3070.871 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing f
ok 871 - cleanup after previous file test
expecting success of 3070.872 'setup match file test for D':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 872 - setup match file test for D
expecting success of 3070.873 'wildmatch: match 'D' '[[:xdigit:]]'':
test-tool wildmatch wildmatch 'D' '[[:xdigit:]]'
ok 873 - wildmatch: match 'D' '[[:xdigit:]]'
expecting success of 3070.874 'wildmatch (via ls-files): match '[[:xdigit:]]' 'D'':
printf '%s' 'D' >expect &&
git --glob-pathspecs ls-files -z -- '[[:xdigit:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 874 - wildmatch (via ls-files): match '[[:xdigit:]]' 'D'
expecting success of 3070.875 'iwildmatch: match 'D' '[[:xdigit:]]'':
test-tool wildmatch iwildmatch 'D' '[[:xdigit:]]'
ok 875 - iwildmatch: match 'D' '[[:xdigit:]]'
expecting success of 3070.876 'iwildmatch (via ls-files): match '[[:xdigit:]]' 'D'':
printf '%s' 'D' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[[:xdigit:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 876 - iwildmatch (via ls-files): match '[[:xdigit:]]' 'D'
expecting success of 3070.877 'pathmatch: match 'D' '[[:xdigit:]]'':
test-tool wildmatch pathmatch 'D' '[[:xdigit:]]'
ok 877 - pathmatch: match 'D' '[[:xdigit:]]'
expecting success of 3070.878 'pathmatch (via ls-files): match '[[:xdigit:]]' 'D'':
printf '%s' 'D' >expect &&
git ls-files -z -- '[[:xdigit:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 878 - pathmatch (via ls-files): match '[[:xdigit:]]' 'D'
expecting success of 3070.879 'ipathmatch: match 'D' '[[:xdigit:]]'':
test-tool wildmatch ipathmatch 'D' '[[:xdigit:]]'
ok 879 - ipathmatch: match 'D' '[[:xdigit:]]'
expecting success of 3070.880 'ipathmatch (via ls-files): match '[[:xdigit:]]' 'D'':
printf '%s' 'D' >expect &&
git --icase-pathspecs ls-files -z -- '[[:xdigit:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 880 - ipathmatch (via ls-files): match '[[:xdigit:]]' 'D'
expecting success of 3070.881 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing D
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 881 - cleanup after previous file test
expecting success of 3070.882 'setup match file test for _':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 882 - setup match file test for _
expecting success of 3070.883 'wildmatch: match '_' '[[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:xdigit:]]'':
test-tool wildmatch wildmatch '_' '[[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:xdigit:]]'
ok 883 - wildmatch: match '_' '[[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:xdigit:]]'
expecting success of 3070.884 'wildmatch (via ls-files): match '[[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:xdigit:]]' '_'':
printf '%s' '_' >expect &&
git --glob-pathspecs ls-files -z -- '[[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:xdigit:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 884 - wildmatch (via ls-files): match '[[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:xdigit:]]' '_'
expecting success of 3070.885 'iwildmatch: match '_' '[[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:xdigit:]]'':
test-tool wildmatch iwildmatch '_' '[[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:xdigit:]]'
ok 885 - iwildmatch: match '_' '[[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:xdigit:]]'
expecting success of 3070.886 'iwildmatch (via ls-files): match '[[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:xdigit:]]' '_'':
printf '%s' '_' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:xdigit:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 886 - iwildmatch (via ls-files): match '[[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:xdigit:]]' '_'
expecting success of 3070.887 'pathmatch: match '_' '[[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:xdigit:]]'':
test-tool wildmatch pathmatch '_' '[[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:xdigit:]]'
ok 887 - pathmatch: match '_' '[[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:xdigit:]]'
expecting success of 3070.888 'pathmatch (via ls-files): match '[[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:xdigit:]]' '_'':
printf '%s' '_' >expect &&
git ls-files -z -- '[[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:xdigit:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 888 - pathmatch (via ls-files): match '[[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:xdigit:]]' '_'
expecting success of 3070.889 'ipathmatch: match '_' '[[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:xdigit:]]'':
test-tool wildmatch ipathmatch '_' '[[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:xdigit:]]'
ok 889 - ipathmatch: match '_' '[[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:xdigit:]]'
expecting success of 3070.890 'ipathmatch (via ls-files): match '[[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:xdigit:]]' '_'':
printf '%s' '_' >expect &&
git --icase-pathspecs ls-files -z -- '[[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:xdigit:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 890 - ipathmatch (via ls-files): match '[[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:xdigit:]]' '_'
expecting success of 3070.891 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing _
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 891 - cleanup after previous file test
expecting success of 3070.892 'setup match file test for .':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 892 - setup match file test for .
expecting success of 3070.893 'wildmatch: match '.' '[^[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:lower:][:space:][:upper:][:xdigit:]]'':
test-tool wildmatch wildmatch '.' '[^[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:lower:][:space:][:upper:][:xdigit:]]'
ok 893 - wildmatch: match '.' '[^[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:lower:][:space:][:upper:][:xdigit:]]'
checking known breakage of 3070.894 'wildmatch (via ls-files): match skip '[^[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:lower:][:space:][:upper:][:xdigit:]]' '.'': false
not ok 894 - wildmatch (via ls-files): match skip '[^[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:lower:][:space:][:upper:][:xdigit:]]' '.' # TODO known breakage
expecting success of 3070.895 'iwildmatch: match '.' '[^[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:lower:][:space:][:upper:][:xdigit:]]'':
test-tool wildmatch iwildmatch '.' '[^[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:lower:][:space:][:upper:][:xdigit:]]'
ok 895 - iwildmatch: match '.' '[^[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:lower:][:space:][:upper:][:xdigit:]]'
checking known breakage of 3070.896 'iwildmatch (via ls-files): match skip '[^[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:lower:][:space:][:upper:][:xdigit:]]' '.'': false
not ok 896 - iwildmatch (via ls-files): match skip '[^[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:lower:][:space:][:upper:][:xdigit:]]' '.' # TODO known breakage
expecting success of 3070.897 'pathmatch: match '.' '[^[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:lower:][:space:][:upper:][:xdigit:]]'':
test-tool wildmatch pathmatch '.' '[^[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:lower:][:space:][:upper:][:xdigit:]]'
ok 897 - pathmatch: match '.' '[^[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:lower:][:space:][:upper:][:xdigit:]]'
checking known breakage of 3070.898 'pathmatch (via ls-files): match skip '[^[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:lower:][:space:][:upper:][:xdigit:]]' '.'': false
not ok 898 - pathmatch (via ls-files): match skip '[^[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:lower:][:space:][:upper:][:xdigit:]]' '.' # TODO known breakage
expecting success of 3070.899 'ipathmatch: match '.' '[^[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:lower:][:space:][:upper:][:xdigit:]]'':
test-tool wildmatch ipathmatch '.' '[^[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:lower:][:space:][:upper:][:xdigit:]]'
ok 899 - ipathmatch: match '.' '[^[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:lower:][:space:][:upper:][:xdigit:]]'
checking known breakage of 3070.900 'ipathmatch (via ls-files): match skip '[^[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:lower:][:space:][:upper:][:xdigit:]]' '.'': false
not ok 900 - ipathmatch (via ls-files): match skip '[^[:alnum:][:alpha:][:blank:][:cntrl:][:digit:][:lower:][:space:][:upper:][:xdigit:]]' '.' # TODO known breakage
expecting success of 3070.901 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
ok 901 - cleanup after previous file test
expecting success of 3070.902 'setup match file test for 5':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 902 - setup match file test for 5
expecting success of 3070.903 'wildmatch: match '5' '[a-c[:digit:]x-z]'':
test-tool wildmatch wildmatch '5' '[a-c[:digit:]x-z]'
ok 903 - wildmatch: match '5' '[a-c[:digit:]x-z]'
expecting success of 3070.904 'wildmatch (via ls-files): match '[a-c[:digit:]x-z]' '5'':
printf '%s' '5' >expect &&
git --glob-pathspecs ls-files -z -- '[a-c[:digit:]x-z]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 904 - wildmatch (via ls-files): match '[a-c[:digit:]x-z]' '5'
expecting success of 3070.905 'iwildmatch: match '5' '[a-c[:digit:]x-z]'':
test-tool wildmatch iwildmatch '5' '[a-c[:digit:]x-z]'
ok 905 - iwildmatch: match '5' '[a-c[:digit:]x-z]'
expecting success of 3070.906 'iwildmatch (via ls-files): match '[a-c[:digit:]x-z]' '5'':
printf '%s' '5' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[a-c[:digit:]x-z]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 906 - iwildmatch (via ls-files): match '[a-c[:digit:]x-z]' '5'
expecting success of 3070.907 'pathmatch: match '5' '[a-c[:digit:]x-z]'':
test-tool wildmatch pathmatch '5' '[a-c[:digit:]x-z]'
ok 907 - pathmatch: match '5' '[a-c[:digit:]x-z]'
expecting success of 3070.908 'pathmatch (via ls-files): match '[a-c[:digit:]x-z]' '5'':
printf '%s' '5' >expect &&
git ls-files -z -- '[a-c[:digit:]x-z]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 908 - pathmatch (via ls-files): match '[a-c[:digit:]x-z]' '5'
expecting success of 3070.909 'ipathmatch: match '5' '[a-c[:digit:]x-z]'':
test-tool wildmatch ipathmatch '5' '[a-c[:digit:]x-z]'
ok 909 - ipathmatch: match '5' '[a-c[:digit:]x-z]'
expecting success of 3070.910 'ipathmatch (via ls-files): match '[a-c[:digit:]x-z]' '5'':
printf '%s' '5' >expect &&
git --icase-pathspecs ls-files -z -- '[a-c[:digit:]x-z]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 910 - ipathmatch (via ls-files): match '[a-c[:digit:]x-z]' '5'
expecting success of 3070.911 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing 5
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 911 - cleanup after previous file test
expecting success of 3070.912 'setup match file test for b':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 912 - setup match file test for b
expecting success of 3070.913 'wildmatch: match 'b' '[a-c[:digit:]x-z]'':
test-tool wildmatch wildmatch 'b' '[a-c[:digit:]x-z]'
ok 913 - wildmatch: match 'b' '[a-c[:digit:]x-z]'
expecting success of 3070.914 'wildmatch (via ls-files): match '[a-c[:digit:]x-z]' 'b'':
printf '%s' 'b' >expect &&
git --glob-pathspecs ls-files -z -- '[a-c[:digit:]x-z]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 914 - wildmatch (via ls-files): match '[a-c[:digit:]x-z]' 'b'
expecting success of 3070.915 'iwildmatch: match 'b' '[a-c[:digit:]x-z]'':
test-tool wildmatch iwildmatch 'b' '[a-c[:digit:]x-z]'
ok 915 - iwildmatch: match 'b' '[a-c[:digit:]x-z]'
expecting success of 3070.916 'iwildmatch (via ls-files): match '[a-c[:digit:]x-z]' 'b'':
printf '%s' 'b' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[a-c[:digit:]x-z]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 916 - iwildmatch (via ls-files): match '[a-c[:digit:]x-z]' 'b'
expecting success of 3070.917 'pathmatch: match 'b' '[a-c[:digit:]x-z]'':
test-tool wildmatch pathmatch 'b' '[a-c[:digit:]x-z]'
ok 917 - pathmatch: match 'b' '[a-c[:digit:]x-z]'
expecting success of 3070.918 'pathmatch (via ls-files): match '[a-c[:digit:]x-z]' 'b'':
printf '%s' 'b' >expect &&
git ls-files -z -- '[a-c[:digit:]x-z]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 918 - pathmatch (via ls-files): match '[a-c[:digit:]x-z]' 'b'
expecting success of 3070.919 'ipathmatch: match 'b' '[a-c[:digit:]x-z]'':
test-tool wildmatch ipathmatch 'b' '[a-c[:digit:]x-z]'
ok 919 - ipathmatch: match 'b' '[a-c[:digit:]x-z]'
expecting success of 3070.920 'ipathmatch (via ls-files): match '[a-c[:digit:]x-z]' 'b'':
printf '%s' 'b' >expect &&
git --icase-pathspecs ls-files -z -- '[a-c[:digit:]x-z]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 920 - ipathmatch (via ls-files): match '[a-c[:digit:]x-z]' 'b'
expecting success of 3070.921 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing b
Removing expect
ok 921 - cleanup after previous file test
expecting success of 3070.922 'setup match file test for y':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 922 - setup match file test for y
expecting success of 3070.923 'wildmatch: match 'y' '[a-c[:digit:]x-z]'':
test-tool wildmatch wildmatch 'y' '[a-c[:digit:]x-z]'
ok 923 - wildmatch: match 'y' '[a-c[:digit:]x-z]'
expecting success of 3070.924 'wildmatch (via ls-files): match '[a-c[:digit:]x-z]' 'y'':
printf '%s' 'y' >expect &&
git --glob-pathspecs ls-files -z -- '[a-c[:digit:]x-z]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 924 - wildmatch (via ls-files): match '[a-c[:digit:]x-z]' 'y'
expecting success of 3070.925 'iwildmatch: match 'y' '[a-c[:digit:]x-z]'':
test-tool wildmatch iwildmatch 'y' '[a-c[:digit:]x-z]'
ok 925 - iwildmatch: match 'y' '[a-c[:digit:]x-z]'
expecting success of 3070.926 'iwildmatch (via ls-files): match '[a-c[:digit:]x-z]' 'y'':
printf '%s' 'y' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[a-c[:digit:]x-z]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 926 - iwildmatch (via ls-files): match '[a-c[:digit:]x-z]' 'y'
expecting success of 3070.927 'pathmatch: match 'y' '[a-c[:digit:]x-z]'':
test-tool wildmatch pathmatch 'y' '[a-c[:digit:]x-z]'
ok 927 - pathmatch: match 'y' '[a-c[:digit:]x-z]'
expecting success of 3070.928 'pathmatch (via ls-files): match '[a-c[:digit:]x-z]' 'y'':
printf '%s' 'y' >expect &&
git ls-files -z -- '[a-c[:digit:]x-z]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 928 - pathmatch (via ls-files): match '[a-c[:digit:]x-z]' 'y'
expecting success of 3070.929 'ipathmatch: match 'y' '[a-c[:digit:]x-z]'':
test-tool wildmatch ipathmatch 'y' '[a-c[:digit:]x-z]'
ok 929 - ipathmatch: match 'y' '[a-c[:digit:]x-z]'
expecting success of 3070.930 'ipathmatch (via ls-files): match '[a-c[:digit:]x-z]' 'y'':
printf '%s' 'y' >expect &&
git --icase-pathspecs ls-files -z -- '[a-c[:digit:]x-z]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 930 - ipathmatch (via ls-files): match '[a-c[:digit:]x-z]' 'y'
expecting success of 3070.931 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing y
ok 931 - cleanup after previous file test
expecting success of 3070.932 'setup match file test for q':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 932 - setup match file test for q
expecting success of 3070.933 'wildmatch: no match 'q' '[a-c[:digit:]x-z]'':
test_must_fail test-tool wildmatch wildmatch 'q' '[a-c[:digit:]x-z]'
ok 933 - wildmatch: no match 'q' '[a-c[:digit:]x-z]'
expecting success of 3070.934 'wildmatch (via ls-files): no match '[a-c[:digit:]x-z]' 'q'':
>expect &&
git --glob-pathspecs ls-files -z -- '[a-c[:digit:]x-z]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 934 - wildmatch (via ls-files): no match '[a-c[:digit:]x-z]' 'q'
expecting success of 3070.935 'iwildmatch: no match 'q' '[a-c[:digit:]x-z]'':
test_must_fail test-tool wildmatch iwildmatch 'q' '[a-c[:digit:]x-z]'
ok 935 - iwildmatch: no match 'q' '[a-c[:digit:]x-z]'
expecting success of 3070.936 'iwildmatch (via ls-files): no match '[a-c[:digit:]x-z]' 'q'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[a-c[:digit:]x-z]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 936 - iwildmatch (via ls-files): no match '[a-c[:digit:]x-z]' 'q'
expecting success of 3070.937 'pathmatch: no match 'q' '[a-c[:digit:]x-z]'':
test_must_fail test-tool wildmatch pathmatch 'q' '[a-c[:digit:]x-z]'
ok 937 - pathmatch: no match 'q' '[a-c[:digit:]x-z]'
expecting success of 3070.938 'pathmatch (via ls-files): no match '[a-c[:digit:]x-z]' 'q'':
>expect &&
git ls-files -z -- '[a-c[:digit:]x-z]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 938 - pathmatch (via ls-files): no match '[a-c[:digit:]x-z]' 'q'
expecting success of 3070.939 'ipathmatch: no match 'q' '[a-c[:digit:]x-z]'':
test_must_fail test-tool wildmatch ipathmatch 'q' '[a-c[:digit:]x-z]'
ok 939 - ipathmatch: no match 'q' '[a-c[:digit:]x-z]'
expecting success of 3070.940 'ipathmatch (via ls-files): no match '[a-c[:digit:]x-z]' 'q'':
>expect &&
git --icase-pathspecs ls-files -z -- '[a-c[:digit:]x-z]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 940 - ipathmatch (via ls-files): no match '[a-c[:digit:]x-z]' 'q'
expecting success of 3070.941 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing q
ok 941 - cleanup after previous file test
expecting success of 3070.942 'setup match file test for ]':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 942 - setup match file test for ]
expecting success of 3070.943 'wildmatch: match ']' '[\\-^]'':
test-tool wildmatch wildmatch ']' '[\\-^]'
ok 943 - wildmatch: match ']' '[\\-^]'
expecting success of 3070.944 'wildmatch (via ls-files): match '[\\-^]' ']'':
printf '%s' ']' >expect &&
git --glob-pathspecs ls-files -z -- '[\\-^]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 944 - wildmatch (via ls-files): match '[\\-^]' ']'
expecting success of 3070.945 'iwildmatch: match ']' '[\\-^]'':
test-tool wildmatch iwildmatch ']' '[\\-^]'
ok 945 - iwildmatch: match ']' '[\\-^]'
expecting success of 3070.946 'iwildmatch (via ls-files): match '[\\-^]' ']'':
printf '%s' ']' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[\\-^]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 946 - iwildmatch (via ls-files): match '[\\-^]' ']'
expecting success of 3070.947 'pathmatch: match ']' '[\\-^]'':
test-tool wildmatch pathmatch ']' '[\\-^]'
ok 947 - pathmatch: match ']' '[\\-^]'
expecting success of 3070.948 'pathmatch (via ls-files): match '[\\-^]' ']'':
printf '%s' ']' >expect &&
git ls-files -z -- '[\\-^]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 948 - pathmatch (via ls-files): match '[\\-^]' ']'
expecting success of 3070.949 'ipathmatch: match ']' '[\\-^]'':
test-tool wildmatch ipathmatch ']' '[\\-^]'
ok 949 - ipathmatch: match ']' '[\\-^]'
expecting success of 3070.950 'ipathmatch (via ls-files): match '[\\-^]' ']'':
printf '%s' ']' >expect &&
git --icase-pathspecs ls-files -z -- '[\\-^]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 950 - ipathmatch (via ls-files): match '[\\-^]' ']'
expecting success of 3070.951 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing ]
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 951 - cleanup after previous file test
expecting success of 3070.952 'setup match file test for [':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 952 - setup match file test for [
expecting success of 3070.953 'wildmatch: no match '[' '[\\-^]'':
test_must_fail test-tool wildmatch wildmatch '[' '[\\-^]'
ok 953 - wildmatch: no match '[' '[\\-^]'
expecting success of 3070.954 'wildmatch (via ls-files): no match '[\\-^]' '['':
>expect &&
git --glob-pathspecs ls-files -z -- '[\\-^]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 954 - wildmatch (via ls-files): no match '[\\-^]' '['
expecting success of 3070.955 'iwildmatch: no match '[' '[\\-^]'':
test_must_fail test-tool wildmatch iwildmatch '[' '[\\-^]'
ok 955 - iwildmatch: no match '[' '[\\-^]'
expecting success of 3070.956 'iwildmatch (via ls-files): no match '[\\-^]' '['':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[\\-^]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 956 - iwildmatch (via ls-files): no match '[\\-^]' '['
expecting success of 3070.957 'pathmatch: no match '[' '[\\-^]'':
test_must_fail test-tool wildmatch pathmatch '[' '[\\-^]'
ok 957 - pathmatch: no match '[' '[\\-^]'
expecting success of 3070.958 'pathmatch (via ls-files): no match '[\\-^]' '['':
>expect &&
git ls-files -z -- '[\\-^]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 958 - pathmatch (via ls-files): no match '[\\-^]' '['
expecting success of 3070.959 'ipathmatch: no match '[' '[\\-^]'':
test_must_fail test-tool wildmatch ipathmatch '[' '[\\-^]'
ok 959 - ipathmatch: no match '[' '[\\-^]'
expecting success of 3070.960 'ipathmatch (via ls-files): no match '[\\-^]' '['':
>expect &&
git --icase-pathspecs ls-files -z -- '[\\-^]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 960 - ipathmatch (via ls-files): no match '[\\-^]' '['
expecting success of 3070.961 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing [
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 961 - cleanup after previous file test
expecting success of 3070.962 'setup match file test for -':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 962 - setup match file test for -
expecting success of 3070.963 'wildmatch: match '-' '[\-_]'':
test-tool wildmatch wildmatch '-' '[\-_]'
ok 963 - wildmatch: match '-' '[\-_]'
expecting success of 3070.964 'wildmatch (via ls-files): match '[\-_]' '-'':
printf '%s' '-' >expect &&
git --glob-pathspecs ls-files -z -- '[\-_]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 964 - wildmatch (via ls-files): match '[\-_]' '-'
expecting success of 3070.965 'iwildmatch: match '-' '[\-_]'':
test-tool wildmatch iwildmatch '-' '[\-_]'
ok 965 - iwildmatch: match '-' '[\-_]'
expecting success of 3070.966 'iwildmatch (via ls-files): match '[\-_]' '-'':
printf '%s' '-' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[\-_]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 966 - iwildmatch (via ls-files): match '[\-_]' '-'
expecting success of 3070.967 'pathmatch: match '-' '[\-_]'':
test-tool wildmatch pathmatch '-' '[\-_]'
ok 967 - pathmatch: match '-' '[\-_]'
expecting success of 3070.968 'pathmatch (via ls-files): match '[\-_]' '-'':
printf '%s' '-' >expect &&
git ls-files -z -- '[\-_]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 968 - pathmatch (via ls-files): match '[\-_]' '-'
expecting success of 3070.969 'ipathmatch: match '-' '[\-_]'':
test-tool wildmatch ipathmatch '-' '[\-_]'
ok 969 - ipathmatch: match '-' '[\-_]'
expecting success of 3070.970 'ipathmatch (via ls-files): match '[\-_]' '-'':
printf '%s' '-' >expect &&
git --icase-pathspecs ls-files -z -- '[\-_]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 970 - ipathmatch (via ls-files): match '[\-_]' '-'
expecting success of 3070.971 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing -
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 971 - cleanup after previous file test
expecting success of 3070.972 'setup match file test for ]':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 972 - setup match file test for ]
expecting success of 3070.973 'wildmatch: match ']' '[\]]'':
test-tool wildmatch wildmatch ']' '[\]]'
ok 973 - wildmatch: match ']' '[\]]'
expecting success of 3070.974 'wildmatch (via ls-files): match '[\]]' ']'':
printf '%s' ']' >expect &&
git --glob-pathspecs ls-files -z -- '[\]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 974 - wildmatch (via ls-files): match '[\]]' ']'
expecting success of 3070.975 'iwildmatch: match ']' '[\]]'':
test-tool wildmatch iwildmatch ']' '[\]]'
ok 975 - iwildmatch: match ']' '[\]]'
expecting success of 3070.976 'iwildmatch (via ls-files): match '[\]]' ']'':
printf '%s' ']' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[\]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 976 - iwildmatch (via ls-files): match '[\]]' ']'
expecting success of 3070.977 'pathmatch: match ']' '[\]]'':
test-tool wildmatch pathmatch ']' '[\]]'
ok 977 - pathmatch: match ']' '[\]]'
expecting success of 3070.978 'pathmatch (via ls-files): match '[\]]' ']'':
printf '%s' ']' >expect &&
git ls-files -z -- '[\]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 978 - pathmatch (via ls-files): match '[\]]' ']'
expecting success of 3070.979 'ipathmatch: match ']' '[\]]'':
test-tool wildmatch ipathmatch ']' '[\]]'
ok 979 - ipathmatch: match ']' '[\]]'
expecting success of 3070.980 'ipathmatch (via ls-files): match '[\]]' ']'':
printf '%s' ']' >expect &&
git --icase-pathspecs ls-files -z -- '[\]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 980 - ipathmatch (via ls-files): match '[\]]' ']'
expecting success of 3070.981 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing ]
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 981 - cleanup after previous file test
expecting success of 3070.982 'setup match file test for \]':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 982 - setup match file test for \]
expecting success of 3070.983 'wildmatch: no match '\]' '[\]]'':
test_must_fail test-tool wildmatch wildmatch '\]' '[\]]'
ok 983 - wildmatch: no match '\]' '[\]]'
expecting success of 3070.984 'wildmatch (via ls-files): no match '[\]]' '\]'':
>expect &&
git --glob-pathspecs ls-files -z -- '[\]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 984 - wildmatch (via ls-files): no match '[\]]' '\]'
expecting success of 3070.985 'iwildmatch: no match '\]' '[\]]'':
test_must_fail test-tool wildmatch iwildmatch '\]' '[\]]'
ok 985 - iwildmatch: no match '\]' '[\]]'
expecting success of 3070.986 'iwildmatch (via ls-files): no match '[\]]' '\]'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[\]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 986 - iwildmatch (via ls-files): no match '[\]]' '\]'
expecting success of 3070.987 'pathmatch: no match '\]' '[\]]'':
test_must_fail test-tool wildmatch pathmatch '\]' '[\]]'
ok 987 - pathmatch: no match '\]' '[\]]'
expecting success of 3070.988 'pathmatch (via ls-files): no match '[\]]' '\]'':
>expect &&
git ls-files -z -- '[\]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 988 - pathmatch (via ls-files): no match '[\]]' '\]'
expecting success of 3070.989 'ipathmatch: no match '\]' '[\]]'':
test_must_fail test-tool wildmatch ipathmatch '\]' '[\]]'
ok 989 - ipathmatch: no match '\]' '[\]]'
expecting success of 3070.990 'ipathmatch (via ls-files): no match '[\]]' '\]'':
>expect &&
git --icase-pathspecs ls-files -z -- '[\]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 990 - ipathmatch (via ls-files): no match '[\]]' '\]'
expecting success of 3070.991 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing "\\]"
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 991 - cleanup after previous file test
expecting success of 3070.992 'setup match file test for \':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 992 - setup match file test for \
expecting success of 3070.993 'wildmatch: no match '\' '[\]]'':
test_must_fail test-tool wildmatch wildmatch '\' '[\]]'
ok 993 - wildmatch: no match '\' '[\]]'
expecting success of 3070.994 'wildmatch (via ls-files): no match '[\]]' '\'':
>expect &&
git --glob-pathspecs ls-files -z -- '[\]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 994 - wildmatch (via ls-files): no match '[\]]' '\'
expecting success of 3070.995 'iwildmatch: no match '\' '[\]]'':
test_must_fail test-tool wildmatch iwildmatch '\' '[\]]'
ok 995 - iwildmatch: no match '\' '[\]]'
expecting success of 3070.996 'iwildmatch (via ls-files): no match '[\]]' '\'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[\]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 996 - iwildmatch (via ls-files): no match '[\]]' '\'
expecting success of 3070.997 'pathmatch: no match '\' '[\]]'':
test_must_fail test-tool wildmatch pathmatch '\' '[\]]'
ok 997 - pathmatch: no match '\' '[\]]'
expecting success of 3070.998 'pathmatch (via ls-files): no match '[\]]' '\'':
>expect &&
git ls-files -z -- '[\]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 998 - pathmatch (via ls-files): no match '[\]]' '\'
expecting success of 3070.999 'ipathmatch: no match '\' '[\]]'':
test_must_fail test-tool wildmatch ipathmatch '\' '[\]]'
ok 999 - ipathmatch: no match '\' '[\]]'
expecting success of 3070.1000 'ipathmatch (via ls-files): no match '[\]]' '\'':
>expect &&
git --icase-pathspecs ls-files -z -- '[\]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1000 - ipathmatch (via ls-files): no match '[\]]' '\'
expecting success of 3070.1001 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing "\\"
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1001 - cleanup after previous file test
expecting success of 3070.1002 'setup match file test for ab':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1002 - setup match file test for ab
expecting success of 3070.1003 'wildmatch: no match 'ab' 'a[]b'':
test_must_fail test-tool wildmatch wildmatch 'ab' 'a[]b'
ok 1003 - wildmatch: no match 'ab' 'a[]b'
expecting success of 3070.1004 'wildmatch (via ls-files): no match 'a[]b' 'ab'':
>expect &&
git --glob-pathspecs ls-files -z -- 'a[]b' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1004 - wildmatch (via ls-files): no match 'a[]b' 'ab'
expecting success of 3070.1005 'iwildmatch: no match 'ab' 'a[]b'':
test_must_fail test-tool wildmatch iwildmatch 'ab' 'a[]b'
ok 1005 - iwildmatch: no match 'ab' 'a[]b'
expecting success of 3070.1006 'iwildmatch (via ls-files): no match 'a[]b' 'ab'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'a[]b' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1006 - iwildmatch (via ls-files): no match 'a[]b' 'ab'
expecting success of 3070.1007 'pathmatch: no match 'ab' 'a[]b'':
test_must_fail test-tool wildmatch pathmatch 'ab' 'a[]b'
ok 1007 - pathmatch: no match 'ab' 'a[]b'
expecting success of 3070.1008 'pathmatch (via ls-files): no match 'a[]b' 'ab'':
>expect &&
git ls-files -z -- 'a[]b' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1008 - pathmatch (via ls-files): no match 'a[]b' 'ab'
expecting success of 3070.1009 'ipathmatch: no match 'ab' 'a[]b'':
test_must_fail test-tool wildmatch ipathmatch 'ab' 'a[]b'
ok 1009 - ipathmatch: no match 'ab' 'a[]b'
expecting success of 3070.1010 'ipathmatch (via ls-files): no match 'a[]b' 'ab'':
>expect &&
git --icase-pathspecs ls-files -z -- 'a[]b' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1010 - ipathmatch (via ls-files): no match 'a[]b' 'ab'
expecting success of 3070.1011 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing ab
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1011 - cleanup after previous file test
expecting success of 3070.1012 'setup match file test for a[]b':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1012 - setup match file test for a[]b
expecting success of 3070.1013 'wildmatch: no match 'a[]b' 'a[]b'':
test_must_fail test-tool wildmatch wildmatch 'a[]b' 'a[]b'
ok 1013 - wildmatch: no match 'a[]b' 'a[]b'
expecting success of 3070.1014 'wildmatch (via ls-files): match 'a[]b' 'a[]b'':
printf '%s' 'a[]b' >expect &&
git --glob-pathspecs ls-files -z -- 'a[]b' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1014 - wildmatch (via ls-files): match 'a[]b' 'a[]b'
expecting success of 3070.1015 'iwildmatch: no match 'a[]b' 'a[]b'':
test_must_fail test-tool wildmatch iwildmatch 'a[]b' 'a[]b'
ok 1015 - iwildmatch: no match 'a[]b' 'a[]b'
expecting success of 3070.1016 'iwildmatch (via ls-files): match 'a[]b' 'a[]b'':
printf '%s' 'a[]b' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'a[]b' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1016 - iwildmatch (via ls-files): match 'a[]b' 'a[]b'
expecting success of 3070.1017 'pathmatch: no match 'a[]b' 'a[]b'':
test_must_fail test-tool wildmatch pathmatch 'a[]b' 'a[]b'
ok 1017 - pathmatch: no match 'a[]b' 'a[]b'
expecting success of 3070.1018 'pathmatch (via ls-files): match 'a[]b' 'a[]b'':
printf '%s' 'a[]b' >expect &&
git ls-files -z -- 'a[]b' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1018 - pathmatch (via ls-files): match 'a[]b' 'a[]b'
expecting success of 3070.1019 'ipathmatch: no match 'a[]b' 'a[]b'':
test_must_fail test-tool wildmatch ipathmatch 'a[]b' 'a[]b'
ok 1019 - ipathmatch: no match 'a[]b' 'a[]b'
expecting success of 3070.1020 'ipathmatch (via ls-files): match 'a[]b' 'a[]b'':
printf '%s' 'a[]b' >expect &&
git --icase-pathspecs ls-files -z -- 'a[]b' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1020 - ipathmatch (via ls-files): match 'a[]b' 'a[]b'
expecting success of 3070.1021 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing a[]b
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1021 - cleanup after previous file test
expecting success of 3070.1022 'setup match file test for ab[':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1022 - setup match file test for ab[
expecting success of 3070.1023 'wildmatch: no match 'ab[' 'ab['':
test_must_fail test-tool wildmatch wildmatch 'ab[' 'ab['
ok 1023 - wildmatch: no match 'ab[' 'ab['
expecting success of 3070.1024 'wildmatch (via ls-files): match 'ab[' 'ab['':
printf '%s' 'ab[' >expect &&
git --glob-pathspecs ls-files -z -- 'ab[' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1024 - wildmatch (via ls-files): match 'ab[' 'ab['
expecting success of 3070.1025 'iwildmatch: no match 'ab[' 'ab['':
test_must_fail test-tool wildmatch iwildmatch 'ab[' 'ab['
ok 1025 - iwildmatch: no match 'ab[' 'ab['
expecting success of 3070.1026 'iwildmatch (via ls-files): match 'ab[' 'ab['':
printf '%s' 'ab[' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'ab[' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1026 - iwildmatch (via ls-files): match 'ab[' 'ab['
expecting success of 3070.1027 'pathmatch: no match 'ab[' 'ab['':
test_must_fail test-tool wildmatch pathmatch 'ab[' 'ab['
ok 1027 - pathmatch: no match 'ab[' 'ab['
expecting success of 3070.1028 'pathmatch (via ls-files): match 'ab[' 'ab['':
printf '%s' 'ab[' >expect &&
git ls-files -z -- 'ab[' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1028 - pathmatch (via ls-files): match 'ab[' 'ab['
expecting success of 3070.1029 'ipathmatch: no match 'ab[' 'ab['':
test_must_fail test-tool wildmatch ipathmatch 'ab[' 'ab['
ok 1029 - ipathmatch: no match 'ab[' 'ab['
expecting success of 3070.1030 'ipathmatch (via ls-files): match 'ab[' 'ab['':
printf '%s' 'ab[' >expect &&
git --icase-pathspecs ls-files -z -- 'ab[' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1030 - ipathmatch (via ls-files): match 'ab[' 'ab['
expecting success of 3070.1031 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing ab[
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1031 - cleanup after previous file test
expecting success of 3070.1032 'setup match file test for ab':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1032 - setup match file test for ab
expecting success of 3070.1033 'wildmatch: no match 'ab' '[!'':
test_must_fail test-tool wildmatch wildmatch 'ab' '[!'
ok 1033 - wildmatch: no match 'ab' '[!'
expecting success of 3070.1034 'wildmatch (via ls-files): no match '[!' 'ab'':
>expect &&
git --glob-pathspecs ls-files -z -- '[!' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1034 - wildmatch (via ls-files): no match '[!' 'ab'
expecting success of 3070.1035 'iwildmatch: no match 'ab' '[!'':
test_must_fail test-tool wildmatch iwildmatch 'ab' '[!'
ok 1035 - iwildmatch: no match 'ab' '[!'
expecting success of 3070.1036 'iwildmatch (via ls-files): no match '[!' 'ab'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[!' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1036 - iwildmatch (via ls-files): no match '[!' 'ab'
expecting success of 3070.1037 'pathmatch: no match 'ab' '[!'':
test_must_fail test-tool wildmatch pathmatch 'ab' '[!'
ok 1037 - pathmatch: no match 'ab' '[!'
expecting success of 3070.1038 'pathmatch (via ls-files): no match '[!' 'ab'':
>expect &&
git ls-files -z -- '[!' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1038 - pathmatch (via ls-files): no match '[!' 'ab'
expecting success of 3070.1039 'ipathmatch: no match 'ab' '[!'':
test_must_fail test-tool wildmatch ipathmatch 'ab' '[!'
ok 1039 - ipathmatch: no match 'ab' '[!'
expecting success of 3070.1040 'ipathmatch (via ls-files): no match '[!' 'ab'':
>expect &&
git --icase-pathspecs ls-files -z -- '[!' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1040 - ipathmatch (via ls-files): no match '[!' 'ab'
expecting success of 3070.1041 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing ab
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1041 - cleanup after previous file test
expecting success of 3070.1042 'setup match file test for ab':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1042 - setup match file test for ab
expecting success of 3070.1043 'wildmatch: no match 'ab' '[-'':
test_must_fail test-tool wildmatch wildmatch 'ab' '[-'
ok 1043 - wildmatch: no match 'ab' '[-'
expecting success of 3070.1044 'wildmatch (via ls-files): no match '[-' 'ab'':
>expect &&
git --glob-pathspecs ls-files -z -- '[-' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1044 - wildmatch (via ls-files): no match '[-' 'ab'
expecting success of 3070.1045 'iwildmatch: no match 'ab' '[-'':
test_must_fail test-tool wildmatch iwildmatch 'ab' '[-'
ok 1045 - iwildmatch: no match 'ab' '[-'
expecting success of 3070.1046 'iwildmatch (via ls-files): no match '[-' 'ab'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[-' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1046 - iwildmatch (via ls-files): no match '[-' 'ab'
expecting success of 3070.1047 'pathmatch: no match 'ab' '[-'':
test_must_fail test-tool wildmatch pathmatch 'ab' '[-'
ok 1047 - pathmatch: no match 'ab' '[-'
expecting success of 3070.1048 'pathmatch (via ls-files): no match '[-' 'ab'':
>expect &&
git ls-files -z -- '[-' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1048 - pathmatch (via ls-files): no match '[-' 'ab'
expecting success of 3070.1049 'ipathmatch: no match 'ab' '[-'':
test_must_fail test-tool wildmatch ipathmatch 'ab' '[-'
ok 1049 - ipathmatch: no match 'ab' '[-'
expecting success of 3070.1050 'ipathmatch (via ls-files): no match '[-' 'ab'':
>expect &&
git --icase-pathspecs ls-files -z -- '[-' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1050 - ipathmatch (via ls-files): no match '[-' 'ab'
expecting success of 3070.1051 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing ab
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1051 - cleanup after previous file test
expecting success of 3070.1052 'setup match file test for -':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1052 - setup match file test for -
expecting success of 3070.1053 'wildmatch: match '-' '[-]'':
test-tool wildmatch wildmatch '-' '[-]'
ok 1053 - wildmatch: match '-' '[-]'
expecting success of 3070.1054 'wildmatch (via ls-files): match '[-]' '-'':
printf '%s' '-' >expect &&
git --glob-pathspecs ls-files -z -- '[-]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1054 - wildmatch (via ls-files): match '[-]' '-'
expecting success of 3070.1055 'iwildmatch: match '-' '[-]'':
test-tool wildmatch iwildmatch '-' '[-]'
ok 1055 - iwildmatch: match '-' '[-]'
expecting success of 3070.1056 'iwildmatch (via ls-files): match '[-]' '-'':
printf '%s' '-' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[-]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1056 - iwildmatch (via ls-files): match '[-]' '-'
expecting success of 3070.1057 'pathmatch: match '-' '[-]'':
test-tool wildmatch pathmatch '-' '[-]'
ok 1057 - pathmatch: match '-' '[-]'
expecting success of 3070.1058 'pathmatch (via ls-files): match '[-]' '-'':
printf '%s' '-' >expect &&
git ls-files -z -- '[-]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1058 - pathmatch (via ls-files): match '[-]' '-'
expecting success of 3070.1059 'ipathmatch: match '-' '[-]'':
test-tool wildmatch ipathmatch '-' '[-]'
ok 1059 - ipathmatch: match '-' '[-]'
expecting success of 3070.1060 'ipathmatch (via ls-files): match '[-]' '-'':
printf '%s' '-' >expect &&
git --icase-pathspecs ls-files -z -- '[-]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1060 - ipathmatch (via ls-files): match '[-]' '-'
expecting success of 3070.1061 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing -
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1061 - cleanup after previous file test
expecting success of 3070.1062 'setup match file test for -':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1062 - setup match file test for -
expecting success of 3070.1063 'wildmatch: no match '-' '[a-'':
test_must_fail test-tool wildmatch wildmatch '-' '[a-'
ok 1063 - wildmatch: no match '-' '[a-'
expecting success of 3070.1064 'wildmatch (via ls-files): no match '[a-' '-'':
>expect &&
git --glob-pathspecs ls-files -z -- '[a-' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1064 - wildmatch (via ls-files): no match '[a-' '-'
expecting success of 3070.1065 'iwildmatch: no match '-' '[a-'':
test_must_fail test-tool wildmatch iwildmatch '-' '[a-'
ok 1065 - iwildmatch: no match '-' '[a-'
expecting success of 3070.1066 'iwildmatch (via ls-files): no match '[a-' '-'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[a-' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1066 - iwildmatch (via ls-files): no match '[a-' '-'
expecting success of 3070.1067 'pathmatch: no match '-' '[a-'':
test_must_fail test-tool wildmatch pathmatch '-' '[a-'
ok 1067 - pathmatch: no match '-' '[a-'
expecting success of 3070.1068 'pathmatch (via ls-files): no match '[a-' '-'':
>expect &&
git ls-files -z -- '[a-' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1068 - pathmatch (via ls-files): no match '[a-' '-'
expecting success of 3070.1069 'ipathmatch: no match '-' '[a-'':
test_must_fail test-tool wildmatch ipathmatch '-' '[a-'
ok 1069 - ipathmatch: no match '-' '[a-'
expecting success of 3070.1070 'ipathmatch (via ls-files): no match '[a-' '-'':
>expect &&
git --icase-pathspecs ls-files -z -- '[a-' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1070 - ipathmatch (via ls-files): no match '[a-' '-'
expecting success of 3070.1071 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing -
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1071 - cleanup after previous file test
expecting success of 3070.1072 'setup match file test for -':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1072 - setup match file test for -
expecting success of 3070.1073 'wildmatch: no match '-' '[!a-'':
test_must_fail test-tool wildmatch wildmatch '-' '[!a-'
ok 1073 - wildmatch: no match '-' '[!a-'
expecting success of 3070.1074 'wildmatch (via ls-files): no match '[!a-' '-'':
>expect &&
git --glob-pathspecs ls-files -z -- '[!a-' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1074 - wildmatch (via ls-files): no match '[!a-' '-'
expecting success of 3070.1075 'iwildmatch: no match '-' '[!a-'':
test_must_fail test-tool wildmatch iwildmatch '-' '[!a-'
ok 1075 - iwildmatch: no match '-' '[!a-'
expecting success of 3070.1076 'iwildmatch (via ls-files): no match '[!a-' '-'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[!a-' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1076 - iwildmatch (via ls-files): no match '[!a-' '-'
expecting success of 3070.1077 'pathmatch: no match '-' '[!a-'':
test_must_fail test-tool wildmatch pathmatch '-' '[!a-'
ok 1077 - pathmatch: no match '-' '[!a-'
expecting success of 3070.1078 'pathmatch (via ls-files): no match '[!a-' '-'':
>expect &&
git ls-files -z -- '[!a-' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1078 - pathmatch (via ls-files): no match '[!a-' '-'
expecting success of 3070.1079 'ipathmatch: no match '-' '[!a-'':
test_must_fail test-tool wildmatch ipathmatch '-' '[!a-'
ok 1079 - ipathmatch: no match '-' '[!a-'
expecting success of 3070.1080 'ipathmatch (via ls-files): no match '[!a-' '-'':
>expect &&
git --icase-pathspecs ls-files -z -- '[!a-' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1080 - ipathmatch (via ls-files): no match '[!a-' '-'
expecting success of 3070.1081 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing -
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1081 - cleanup after previous file test
expecting success of 3070.1082 'setup match file test for -':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1082 - setup match file test for -
expecting success of 3070.1083 'wildmatch: match '-' '[--A]'':
test-tool wildmatch wildmatch '-' '[--A]'
ok 1083 - wildmatch: match '-' '[--A]'
expecting success of 3070.1084 'wildmatch (via ls-files): match '[--A]' '-'':
printf '%s' '-' >expect &&
git --glob-pathspecs ls-files -z -- '[--A]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1084 - wildmatch (via ls-files): match '[--A]' '-'
expecting success of 3070.1085 'iwildmatch: match '-' '[--A]'':
test-tool wildmatch iwildmatch '-' '[--A]'
ok 1085 - iwildmatch: match '-' '[--A]'
expecting success of 3070.1086 'iwildmatch (via ls-files): match '[--A]' '-'':
printf '%s' '-' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[--A]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1086 - iwildmatch (via ls-files): match '[--A]' '-'
expecting success of 3070.1087 'pathmatch: match '-' '[--A]'':
test-tool wildmatch pathmatch '-' '[--A]'
ok 1087 - pathmatch: match '-' '[--A]'
expecting success of 3070.1088 'pathmatch (via ls-files): match '[--A]' '-'':
printf '%s' '-' >expect &&
git ls-files -z -- '[--A]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1088 - pathmatch (via ls-files): match '[--A]' '-'
expecting success of 3070.1089 'ipathmatch: match '-' '[--A]'':
test-tool wildmatch ipathmatch '-' '[--A]'
ok 1089 - ipathmatch: match '-' '[--A]'
expecting success of 3070.1090 'ipathmatch (via ls-files): match '[--A]' '-'':
printf '%s' '-' >expect &&
git --icase-pathspecs ls-files -z -- '[--A]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1090 - ipathmatch (via ls-files): match '[--A]' '-'
expecting success of 3070.1091 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing -
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1091 - cleanup after previous file test
expecting success of 3070.1092 'setup match file test for 5':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1092 - setup match file test for 5
expecting success of 3070.1093 'wildmatch: match '5' '[--A]'':
test-tool wildmatch wildmatch '5' '[--A]'
ok 1093 - wildmatch: match '5' '[--A]'
expecting success of 3070.1094 'wildmatch (via ls-files): match '[--A]' '5'':
printf '%s' '5' >expect &&
git --glob-pathspecs ls-files -z -- '[--A]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1094 - wildmatch (via ls-files): match '[--A]' '5'
expecting success of 3070.1095 'iwildmatch: match '5' '[--A]'':
test-tool wildmatch iwildmatch '5' '[--A]'
ok 1095 - iwildmatch: match '5' '[--A]'
expecting success of 3070.1096 'iwildmatch (via ls-files): match '[--A]' '5'':
printf '%s' '5' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[--A]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1096 - iwildmatch (via ls-files): match '[--A]' '5'
expecting success of 3070.1097 'pathmatch: match '5' '[--A]'':
test-tool wildmatch pathmatch '5' '[--A]'
ok 1097 - pathmatch: match '5' '[--A]'
expecting success of 3070.1098 'pathmatch (via ls-files): match '[--A]' '5'':
printf '%s' '5' >expect &&
git ls-files -z -- '[--A]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1098 - pathmatch (via ls-files): match '[--A]' '5'
expecting success of 3070.1099 'ipathmatch: match '5' '[--A]'':
test-tool wildmatch ipathmatch '5' '[--A]'
ok 1099 - ipathmatch: match '5' '[--A]'
expecting success of 3070.1100 'ipathmatch (via ls-files): match '[--A]' '5'':
printf '%s' '5' >expect &&
git --icase-pathspecs ls-files -z -- '[--A]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1100 - ipathmatch (via ls-files): match '[--A]' '5'
expecting success of 3070.1101 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing 5
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1101 - cleanup after previous file test
expecting success of 3070.1102 'setup match file test for ':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1102 - setup match file test for
expecting success of 3070.1103 'wildmatch: match ' ' '[ --]'':
test-tool wildmatch wildmatch ' ' '[ --]'
ok 1103 - wildmatch: match ' ' '[ --]'
expecting success of 3070.1104 'wildmatch (via ls-files): match '[ --]' ' '':
printf '%s' ' ' >expect &&
git --glob-pathspecs ls-files -z -- '[ --]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1104 - wildmatch (via ls-files): match '[ --]' ' '
expecting success of 3070.1105 'iwildmatch: match ' ' '[ --]'':
test-tool wildmatch iwildmatch ' ' '[ --]'
ok 1105 - iwildmatch: match ' ' '[ --]'
expecting success of 3070.1106 'iwildmatch (via ls-files): match '[ --]' ' '':
printf '%s' ' ' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[ --]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1106 - iwildmatch (via ls-files): match '[ --]' ' '
expecting success of 3070.1107 'pathmatch: match ' ' '[ --]'':
test-tool wildmatch pathmatch ' ' '[ --]'
ok 1107 - pathmatch: match ' ' '[ --]'
expecting success of 3070.1108 'pathmatch (via ls-files): match '[ --]' ' '':
printf '%s' ' ' >expect &&
git ls-files -z -- '[ --]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1108 - pathmatch (via ls-files): match '[ --]' ' '
expecting success of 3070.1109 'ipathmatch: match ' ' '[ --]'':
test-tool wildmatch ipathmatch ' ' '[ --]'
ok 1109 - ipathmatch: match ' ' '[ --]'
expecting success of 3070.1110 'ipathmatch (via ls-files): match '[ --]' ' '':
printf '%s' ' ' >expect &&
git --icase-pathspecs ls-files -z -- '[ --]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1110 - ipathmatch (via ls-files): match '[ --]' ' '
expecting success of 3070.1111 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1111 - cleanup after previous file test
expecting success of 3070.1112 'setup match file test for $':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1112 - setup match file test for $
expecting success of 3070.1113 'wildmatch: match '$' '[ --]'':
test-tool wildmatch wildmatch '$' '[ --]'
ok 1113 - wildmatch: match '$' '[ --]'
expecting success of 3070.1114 'wildmatch (via ls-files): match '[ --]' '$'':
printf '%s' '$' >expect &&
git --glob-pathspecs ls-files -z -- '[ --]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1114 - wildmatch (via ls-files): match '[ --]' '$'
expecting success of 3070.1115 'iwildmatch: match '$' '[ --]'':
test-tool wildmatch iwildmatch '$' '[ --]'
ok 1115 - iwildmatch: match '$' '[ --]'
expecting success of 3070.1116 'iwildmatch (via ls-files): match '[ --]' '$'':
printf '%s' '$' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[ --]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1116 - iwildmatch (via ls-files): match '[ --]' '$'
expecting success of 3070.1117 'pathmatch: match '$' '[ --]'':
test-tool wildmatch pathmatch '$' '[ --]'
ok 1117 - pathmatch: match '$' '[ --]'
expecting success of 3070.1118 'pathmatch (via ls-files): match '[ --]' '$'':
printf '%s' '$' >expect &&
git ls-files -z -- '[ --]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1118 - pathmatch (via ls-files): match '[ --]' '$'
expecting success of 3070.1119 'ipathmatch: match '$' '[ --]'':
test-tool wildmatch ipathmatch '$' '[ --]'
ok 1119 - ipathmatch: match '$' '[ --]'
expecting success of 3070.1120 'ipathmatch (via ls-files): match '[ --]' '$'':
printf '%s' '$' >expect &&
git --icase-pathspecs ls-files -z -- '[ --]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1120 - ipathmatch (via ls-files): match '[ --]' '$'
expecting success of 3070.1121 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing $
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1121 - cleanup after previous file test
expecting success of 3070.1122 'setup match file test for -':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1122 - setup match file test for -
expecting success of 3070.1123 'wildmatch: match '-' '[ --]'':
test-tool wildmatch wildmatch '-' '[ --]'
ok 1123 - wildmatch: match '-' '[ --]'
expecting success of 3070.1124 'wildmatch (via ls-files): match '[ --]' '-'':
printf '%s' '-' >expect &&
git --glob-pathspecs ls-files -z -- '[ --]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1124 - wildmatch (via ls-files): match '[ --]' '-'
expecting success of 3070.1125 'iwildmatch: match '-' '[ --]'':
test-tool wildmatch iwildmatch '-' '[ --]'
ok 1125 - iwildmatch: match '-' '[ --]'
expecting success of 3070.1126 'iwildmatch (via ls-files): match '[ --]' '-'':
printf '%s' '-' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[ --]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1126 - iwildmatch (via ls-files): match '[ --]' '-'
expecting success of 3070.1127 'pathmatch: match '-' '[ --]'':
test-tool wildmatch pathmatch '-' '[ --]'
ok 1127 - pathmatch: match '-' '[ --]'
expecting success of 3070.1128 'pathmatch (via ls-files): match '[ --]' '-'':
printf '%s' '-' >expect &&
git ls-files -z -- '[ --]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1128 - pathmatch (via ls-files): match '[ --]' '-'
expecting success of 3070.1129 'ipathmatch: match '-' '[ --]'':
test-tool wildmatch ipathmatch '-' '[ --]'
ok 1129 - ipathmatch: match '-' '[ --]'
expecting success of 3070.1130 'ipathmatch (via ls-files): match '[ --]' '-'':
printf '%s' '-' >expect &&
git --icase-pathspecs ls-files -z -- '[ --]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1130 - ipathmatch (via ls-files): match '[ --]' '-'
expecting success of 3070.1131 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing -
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1131 - cleanup after previous file test
expecting success of 3070.1132 'setup match file test for 0':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1132 - setup match file test for 0
expecting success of 3070.1133 'wildmatch: no match '0' '[ --]'':
test_must_fail test-tool wildmatch wildmatch '0' '[ --]'
ok 1133 - wildmatch: no match '0' '[ --]'
expecting success of 3070.1134 'wildmatch (via ls-files): no match '[ --]' '0'':
>expect &&
git --glob-pathspecs ls-files -z -- '[ --]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1134 - wildmatch (via ls-files): no match '[ --]' '0'
expecting success of 3070.1135 'iwildmatch: no match '0' '[ --]'':
test_must_fail test-tool wildmatch iwildmatch '0' '[ --]'
ok 1135 - iwildmatch: no match '0' '[ --]'
expecting success of 3070.1136 'iwildmatch (via ls-files): no match '[ --]' '0'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[ --]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1136 - iwildmatch (via ls-files): no match '[ --]' '0'
expecting success of 3070.1137 'pathmatch: no match '0' '[ --]'':
test_must_fail test-tool wildmatch pathmatch '0' '[ --]'
ok 1137 - pathmatch: no match '0' '[ --]'
expecting success of 3070.1138 'pathmatch (via ls-files): no match '[ --]' '0'':
>expect &&
git ls-files -z -- '[ --]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1138 - pathmatch (via ls-files): no match '[ --]' '0'
expecting success of 3070.1139 'ipathmatch: no match '0' '[ --]'':
test_must_fail test-tool wildmatch ipathmatch '0' '[ --]'
ok 1139 - ipathmatch: no match '0' '[ --]'
expecting success of 3070.1140 'ipathmatch (via ls-files): no match '[ --]' '0'':
>expect &&
git --icase-pathspecs ls-files -z -- '[ --]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1140 - ipathmatch (via ls-files): no match '[ --]' '0'
expecting success of 3070.1141 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing 0
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1141 - cleanup after previous file test
expecting success of 3070.1142 'setup match file test for -':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1142 - setup match file test for -
expecting success of 3070.1143 'wildmatch: match '-' '[---]'':
test-tool wildmatch wildmatch '-' '[---]'
ok 1143 - wildmatch: match '-' '[---]'
expecting success of 3070.1144 'wildmatch (via ls-files): match '[---]' '-'':
printf '%s' '-' >expect &&
git --glob-pathspecs ls-files -z -- '[---]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1144 - wildmatch (via ls-files): match '[---]' '-'
expecting success of 3070.1145 'iwildmatch: match '-' '[---]'':
test-tool wildmatch iwildmatch '-' '[---]'
ok 1145 - iwildmatch: match '-' '[---]'
expecting success of 3070.1146 'iwildmatch (via ls-files): match '[---]' '-'':
printf '%s' '-' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[---]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1146 - iwildmatch (via ls-files): match '[---]' '-'
expecting success of 3070.1147 'pathmatch: match '-' '[---]'':
test-tool wildmatch pathmatch '-' '[---]'
ok 1147 - pathmatch: match '-' '[---]'
expecting success of 3070.1148 'pathmatch (via ls-files): match '[---]' '-'':
printf '%s' '-' >expect &&
git ls-files -z -- '[---]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1148 - pathmatch (via ls-files): match '[---]' '-'
expecting success of 3070.1149 'ipathmatch: match '-' '[---]'':
test-tool wildmatch ipathmatch '-' '[---]'
ok 1149 - ipathmatch: match '-' '[---]'
expecting success of 3070.1150 'ipathmatch (via ls-files): match '[---]' '-'':
printf '%s' '-' >expect &&
git --icase-pathspecs ls-files -z -- '[---]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1150 - ipathmatch (via ls-files): match '[---]' '-'
expecting success of 3070.1151 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing -
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1151 - cleanup after previous file test
expecting success of 3070.1152 'setup match file test for -':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1152 - setup match file test for -
expecting success of 3070.1153 'wildmatch: match '-' '[------]'':
test-tool wildmatch wildmatch '-' '[------]'
ok 1153 - wildmatch: match '-' '[------]'
expecting success of 3070.1154 'wildmatch (via ls-files): match '[------]' '-'':
printf '%s' '-' >expect &&
git --glob-pathspecs ls-files -z -- '[------]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1154 - wildmatch (via ls-files): match '[------]' '-'
expecting success of 3070.1155 'iwildmatch: match '-' '[------]'':
test-tool wildmatch iwildmatch '-' '[------]'
ok 1155 - iwildmatch: match '-' '[------]'
expecting success of 3070.1156 'iwildmatch (via ls-files): match '[------]' '-'':
printf '%s' '-' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[------]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1156 - iwildmatch (via ls-files): match '[------]' '-'
expecting success of 3070.1157 'pathmatch: match '-' '[------]'':
test-tool wildmatch pathmatch '-' '[------]'
ok 1157 - pathmatch: match '-' '[------]'
expecting success of 3070.1158 'pathmatch (via ls-files): match '[------]' '-'':
printf '%s' '-' >expect &&
git ls-files -z -- '[------]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1158 - pathmatch (via ls-files): match '[------]' '-'
expecting success of 3070.1159 'ipathmatch: match '-' '[------]'':
test-tool wildmatch ipathmatch '-' '[------]'
ok 1159 - ipathmatch: match '-' '[------]'
expecting success of 3070.1160 'ipathmatch (via ls-files): match '[------]' '-'':
printf '%s' '-' >expect &&
git --icase-pathspecs ls-files -z -- '[------]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1160 - ipathmatch (via ls-files): match '[------]' '-'
expecting success of 3070.1161 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing -
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1161 - cleanup after previous file test
expecting success of 3070.1162 'setup match file test for j':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1162 - setup match file test for j
expecting success of 3070.1163 'wildmatch: no match 'j' '[a-e-n]'':
test_must_fail test-tool wildmatch wildmatch 'j' '[a-e-n]'
ok 1163 - wildmatch: no match 'j' '[a-e-n]'
expecting success of 3070.1164 'wildmatch (via ls-files): no match '[a-e-n]' 'j'':
>expect &&
git --glob-pathspecs ls-files -z -- '[a-e-n]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1164 - wildmatch (via ls-files): no match '[a-e-n]' 'j'
expecting success of 3070.1165 'iwildmatch: no match 'j' '[a-e-n]'':
test_must_fail test-tool wildmatch iwildmatch 'j' '[a-e-n]'
ok 1165 - iwildmatch: no match 'j' '[a-e-n]'
expecting success of 3070.1166 'iwildmatch (via ls-files): no match '[a-e-n]' 'j'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[a-e-n]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1166 - iwildmatch (via ls-files): no match '[a-e-n]' 'j'
expecting success of 3070.1167 'pathmatch: no match 'j' '[a-e-n]'':
test_must_fail test-tool wildmatch pathmatch 'j' '[a-e-n]'
ok 1167 - pathmatch: no match 'j' '[a-e-n]'
expecting success of 3070.1168 'pathmatch (via ls-files): no match '[a-e-n]' 'j'':
>expect &&
git ls-files -z -- '[a-e-n]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1168 - pathmatch (via ls-files): no match '[a-e-n]' 'j'
expecting success of 3070.1169 'ipathmatch: no match 'j' '[a-e-n]'':
test_must_fail test-tool wildmatch ipathmatch 'j' '[a-e-n]'
ok 1169 - ipathmatch: no match 'j' '[a-e-n]'
expecting success of 3070.1170 'ipathmatch (via ls-files): no match '[a-e-n]' 'j'':
>expect &&
git --icase-pathspecs ls-files -z -- '[a-e-n]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1170 - ipathmatch (via ls-files): no match '[a-e-n]' 'j'
expecting success of 3070.1171 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing j
ok 1171 - cleanup after previous file test
expecting success of 3070.1172 'setup match file test for -':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1172 - setup match file test for -
expecting success of 3070.1173 'wildmatch: match '-' '[a-e-n]'':
test-tool wildmatch wildmatch '-' '[a-e-n]'
ok 1173 - wildmatch: match '-' '[a-e-n]'
expecting success of 3070.1174 'wildmatch (via ls-files): match '[a-e-n]' '-'':
printf '%s' '-' >expect &&
git --glob-pathspecs ls-files -z -- '[a-e-n]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1174 - wildmatch (via ls-files): match '[a-e-n]' '-'
expecting success of 3070.1175 'iwildmatch: match '-' '[a-e-n]'':
test-tool wildmatch iwildmatch '-' '[a-e-n]'
ok 1175 - iwildmatch: match '-' '[a-e-n]'
expecting success of 3070.1176 'iwildmatch (via ls-files): match '[a-e-n]' '-'':
printf '%s' '-' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[a-e-n]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1176 - iwildmatch (via ls-files): match '[a-e-n]' '-'
expecting success of 3070.1177 'pathmatch: match '-' '[a-e-n]'':
test-tool wildmatch pathmatch '-' '[a-e-n]'
ok 1177 - pathmatch: match '-' '[a-e-n]'
expecting success of 3070.1178 'pathmatch (via ls-files): match '[a-e-n]' '-'':
printf '%s' '-' >expect &&
git ls-files -z -- '[a-e-n]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1178 - pathmatch (via ls-files): match '[a-e-n]' '-'
expecting success of 3070.1179 'ipathmatch: match '-' '[a-e-n]'':
test-tool wildmatch ipathmatch '-' '[a-e-n]'
ok 1179 - ipathmatch: match '-' '[a-e-n]'
expecting success of 3070.1180 'ipathmatch (via ls-files): match '[a-e-n]' '-'':
printf '%s' '-' >expect &&
git --icase-pathspecs ls-files -z -- '[a-e-n]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1180 - ipathmatch (via ls-files): match '[a-e-n]' '-'
expecting success of 3070.1181 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing -
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1181 - cleanup after previous file test
expecting success of 3070.1182 'setup match file test for a':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1182 - setup match file test for a
expecting success of 3070.1183 'wildmatch: match 'a' '[!------]'':
test-tool wildmatch wildmatch 'a' '[!------]'
ok 1183 - wildmatch: match 'a' '[!------]'
expecting success of 3070.1184 'wildmatch (via ls-files): match '[!------]' 'a'':
printf '%s' 'a' >expect &&
git --glob-pathspecs ls-files -z -- '[!------]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1184 - wildmatch (via ls-files): match '[!------]' 'a'
expecting success of 3070.1185 'iwildmatch: match 'a' '[!------]'':
test-tool wildmatch iwildmatch 'a' '[!------]'
ok 1185 - iwildmatch: match 'a' '[!------]'
expecting success of 3070.1186 'iwildmatch (via ls-files): match '[!------]' 'a'':
printf '%s' 'a' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[!------]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1186 - iwildmatch (via ls-files): match '[!------]' 'a'
expecting success of 3070.1187 'pathmatch: match 'a' '[!------]'':
test-tool wildmatch pathmatch 'a' '[!------]'
ok 1187 - pathmatch: match 'a' '[!------]'
expecting success of 3070.1188 'pathmatch (via ls-files): match '[!------]' 'a'':
printf '%s' 'a' >expect &&
git ls-files -z -- '[!------]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1188 - pathmatch (via ls-files): match '[!------]' 'a'
expecting success of 3070.1189 'ipathmatch: match 'a' '[!------]'':
test-tool wildmatch ipathmatch 'a' '[!------]'
ok 1189 - ipathmatch: match 'a' '[!------]'
expecting success of 3070.1190 'ipathmatch (via ls-files): match '[!------]' 'a'':
printf '%s' 'a' >expect &&
git --icase-pathspecs ls-files -z -- '[!------]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1190 - ipathmatch (via ls-files): match '[!------]' 'a'
expecting success of 3070.1191 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing a
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1191 - cleanup after previous file test
expecting success of 3070.1192 'setup match file test for [':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1192 - setup match file test for [
expecting success of 3070.1193 'wildmatch: no match '[' '[]-a]'':
test_must_fail test-tool wildmatch wildmatch '[' '[]-a]'
ok 1193 - wildmatch: no match '[' '[]-a]'
expecting success of 3070.1194 'wildmatch (via ls-files): no match '[]-a]' '['':
>expect &&
git --glob-pathspecs ls-files -z -- '[]-a]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1194 - wildmatch (via ls-files): no match '[]-a]' '['
expecting success of 3070.1195 'iwildmatch: no match '[' '[]-a]'':
test_must_fail test-tool wildmatch iwildmatch '[' '[]-a]'
ok 1195 - iwildmatch: no match '[' '[]-a]'
expecting success of 3070.1196 'iwildmatch (via ls-files): no match '[]-a]' '['':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[]-a]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1196 - iwildmatch (via ls-files): no match '[]-a]' '['
expecting success of 3070.1197 'pathmatch: no match '[' '[]-a]'':
test_must_fail test-tool wildmatch pathmatch '[' '[]-a]'
ok 1197 - pathmatch: no match '[' '[]-a]'
expecting success of 3070.1198 'pathmatch (via ls-files): no match '[]-a]' '['':
>expect &&
git ls-files -z -- '[]-a]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1198 - pathmatch (via ls-files): no match '[]-a]' '['
expecting success of 3070.1199 'ipathmatch: no match '[' '[]-a]'':
test_must_fail test-tool wildmatch ipathmatch '[' '[]-a]'
ok 1199 - ipathmatch: no match '[' '[]-a]'
expecting success of 3070.1200 'ipathmatch (via ls-files): no match '[]-a]' '['':
>expect &&
git --icase-pathspecs ls-files -z -- '[]-a]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1200 - ipathmatch (via ls-files): no match '[]-a]' '['
expecting success of 3070.1201 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing [
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1201 - cleanup after previous file test
expecting success of 3070.1202 'setup match file test for ^':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1202 - setup match file test for ^
expecting success of 3070.1203 'wildmatch: match '^' '[]-a]'':
test-tool wildmatch wildmatch '^' '[]-a]'
ok 1203 - wildmatch: match '^' '[]-a]'
expecting success of 3070.1204 'wildmatch (via ls-files): match '[]-a]' '^'':
printf '%s' '^' >expect &&
git --glob-pathspecs ls-files -z -- '[]-a]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1204 - wildmatch (via ls-files): match '[]-a]' '^'
expecting success of 3070.1205 'iwildmatch: match '^' '[]-a]'':
test-tool wildmatch iwildmatch '^' '[]-a]'
ok 1205 - iwildmatch: match '^' '[]-a]'
expecting success of 3070.1206 'iwildmatch (via ls-files): match '[]-a]' '^'':
printf '%s' '^' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[]-a]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1206 - iwildmatch (via ls-files): match '[]-a]' '^'
expecting success of 3070.1207 'pathmatch: match '^' '[]-a]'':
test-tool wildmatch pathmatch '^' '[]-a]'
ok 1207 - pathmatch: match '^' '[]-a]'
expecting success of 3070.1208 'pathmatch (via ls-files): match '[]-a]' '^'':
printf '%s' '^' >expect &&
git ls-files -z -- '[]-a]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1208 - pathmatch (via ls-files): match '[]-a]' '^'
expecting success of 3070.1209 'ipathmatch: match '^' '[]-a]'':
test-tool wildmatch ipathmatch '^' '[]-a]'
ok 1209 - ipathmatch: match '^' '[]-a]'
expecting success of 3070.1210 'ipathmatch (via ls-files): match '[]-a]' '^'':
printf '%s' '^' >expect &&
git --icase-pathspecs ls-files -z -- '[]-a]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1210 - ipathmatch (via ls-files): match '[]-a]' '^'
expecting success of 3070.1211 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing ^
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1211 - cleanup after previous file test
expecting success of 3070.1212 'setup match file test for ^':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1212 - setup match file test for ^
expecting success of 3070.1213 'wildmatch: no match '^' '[!]-a]'':
test_must_fail test-tool wildmatch wildmatch '^' '[!]-a]'
ok 1213 - wildmatch: no match '^' '[!]-a]'
expecting success of 3070.1214 'wildmatch (via ls-files): no match '[!]-a]' '^'':
>expect &&
git --glob-pathspecs ls-files -z -- '[!]-a]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1214 - wildmatch (via ls-files): no match '[!]-a]' '^'
expecting success of 3070.1215 'iwildmatch: no match '^' '[!]-a]'':
test_must_fail test-tool wildmatch iwildmatch '^' '[!]-a]'
ok 1215 - iwildmatch: no match '^' '[!]-a]'
expecting success of 3070.1216 'iwildmatch (via ls-files): no match '[!]-a]' '^'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[!]-a]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1216 - iwildmatch (via ls-files): no match '[!]-a]' '^'
expecting success of 3070.1217 'pathmatch: no match '^' '[!]-a]'':
test_must_fail test-tool wildmatch pathmatch '^' '[!]-a]'
ok 1217 - pathmatch: no match '^' '[!]-a]'
expecting success of 3070.1218 'pathmatch (via ls-files): no match '[!]-a]' '^'':
>expect &&
git ls-files -z -- '[!]-a]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1218 - pathmatch (via ls-files): no match '[!]-a]' '^'
expecting success of 3070.1219 'ipathmatch: no match '^' '[!]-a]'':
test_must_fail test-tool wildmatch ipathmatch '^' '[!]-a]'
ok 1219 - ipathmatch: no match '^' '[!]-a]'
expecting success of 3070.1220 'ipathmatch (via ls-files): no match '[!]-a]' '^'':
>expect &&
git --icase-pathspecs ls-files -z -- '[!]-a]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1220 - ipathmatch (via ls-files): no match '[!]-a]' '^'
expecting success of 3070.1221 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing ^
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1221 - cleanup after previous file test
expecting success of 3070.1222 'setup match file test for [':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1222 - setup match file test for [
expecting success of 3070.1223 'wildmatch: match '[' '[!]-a]'':
test-tool wildmatch wildmatch '[' '[!]-a]'
ok 1223 - wildmatch: match '[' '[!]-a]'
expecting success of 3070.1224 'wildmatch (via ls-files): match '[!]-a]' '['':
printf '%s' '[' >expect &&
git --glob-pathspecs ls-files -z -- '[!]-a]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1224 - wildmatch (via ls-files): match '[!]-a]' '['
expecting success of 3070.1225 'iwildmatch: match '[' '[!]-a]'':
test-tool wildmatch iwildmatch '[' '[!]-a]'
ok 1225 - iwildmatch: match '[' '[!]-a]'
expecting success of 3070.1226 'iwildmatch (via ls-files): match '[!]-a]' '['':
printf '%s' '[' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[!]-a]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1226 - iwildmatch (via ls-files): match '[!]-a]' '['
expecting success of 3070.1227 'pathmatch: match '[' '[!]-a]'':
test-tool wildmatch pathmatch '[' '[!]-a]'
ok 1227 - pathmatch: match '[' '[!]-a]'
expecting success of 3070.1228 'pathmatch (via ls-files): match '[!]-a]' '['':
printf '%s' '[' >expect &&
git ls-files -z -- '[!]-a]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1228 - pathmatch (via ls-files): match '[!]-a]' '['
expecting success of 3070.1229 'ipathmatch: match '[' '[!]-a]'':
test-tool wildmatch ipathmatch '[' '[!]-a]'
ok 1229 - ipathmatch: match '[' '[!]-a]'
expecting success of 3070.1230 'ipathmatch (via ls-files): match '[!]-a]' '['':
printf '%s' '[' >expect &&
git --icase-pathspecs ls-files -z -- '[!]-a]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1230 - ipathmatch (via ls-files): match '[!]-a]' '['
expecting success of 3070.1231 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing [
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1231 - cleanup after previous file test
expecting success of 3070.1232 'setup match file test for ^':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1232 - setup match file test for ^
expecting success of 3070.1233 'wildmatch: match '^' '[a^bc]'':
test-tool wildmatch wildmatch '^' '[a^bc]'
ok 1233 - wildmatch: match '^' '[a^bc]'
expecting success of 3070.1234 'wildmatch (via ls-files): match '[a^bc]' '^'':
printf '%s' '^' >expect &&
git --glob-pathspecs ls-files -z -- '[a^bc]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1234 - wildmatch (via ls-files): match '[a^bc]' '^'
expecting success of 3070.1235 'iwildmatch: match '^' '[a^bc]'':
test-tool wildmatch iwildmatch '^' '[a^bc]'
ok 1235 - iwildmatch: match '^' '[a^bc]'
expecting success of 3070.1236 'iwildmatch (via ls-files): match '[a^bc]' '^'':
printf '%s' '^' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[a^bc]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1236 - iwildmatch (via ls-files): match '[a^bc]' '^'
expecting success of 3070.1237 'pathmatch: match '^' '[a^bc]'':
test-tool wildmatch pathmatch '^' '[a^bc]'
ok 1237 - pathmatch: match '^' '[a^bc]'
expecting success of 3070.1238 'pathmatch (via ls-files): match '[a^bc]' '^'':
printf '%s' '^' >expect &&
git ls-files -z -- '[a^bc]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1238 - pathmatch (via ls-files): match '[a^bc]' '^'
expecting success of 3070.1239 'ipathmatch: match '^' '[a^bc]'':
test-tool wildmatch ipathmatch '^' '[a^bc]'
ok 1239 - ipathmatch: match '^' '[a^bc]'
expecting success of 3070.1240 'ipathmatch (via ls-files): match '[a^bc]' '^'':
printf '%s' '^' >expect &&
git --icase-pathspecs ls-files -z -- '[a^bc]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1240 - ipathmatch (via ls-files): match '[a^bc]' '^'
expecting success of 3070.1241 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing ^
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1241 - cleanup after previous file test
expecting success of 3070.1242 'setup match file test for -b]':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1242 - setup match file test for -b]
expecting success of 3070.1243 'wildmatch: match '-b]' '[a-]b]'':
test-tool wildmatch wildmatch '-b]' '[a-]b]'
ok 1243 - wildmatch: match '-b]' '[a-]b]'
expecting success of 3070.1244 'wildmatch (via ls-files): match '[a-]b]' '-b]'':
printf '%s' '-b]' >expect &&
git --glob-pathspecs ls-files -z -- '[a-]b]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1244 - wildmatch (via ls-files): match '[a-]b]' '-b]'
expecting success of 3070.1245 'iwildmatch: match '-b]' '[a-]b]'':
test-tool wildmatch iwildmatch '-b]' '[a-]b]'
ok 1245 - iwildmatch: match '-b]' '[a-]b]'
expecting success of 3070.1246 'iwildmatch (via ls-files): match '[a-]b]' '-b]'':
printf '%s' '-b]' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[a-]b]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1246 - iwildmatch (via ls-files): match '[a-]b]' '-b]'
expecting success of 3070.1247 'pathmatch: match '-b]' '[a-]b]'':
test-tool wildmatch pathmatch '-b]' '[a-]b]'
ok 1247 - pathmatch: match '-b]' '[a-]b]'
expecting success of 3070.1248 'pathmatch (via ls-files): match '[a-]b]' '-b]'':
printf '%s' '-b]' >expect &&
git ls-files -z -- '[a-]b]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1248 - pathmatch (via ls-files): match '[a-]b]' '-b]'
expecting success of 3070.1249 'ipathmatch: match '-b]' '[a-]b]'':
test-tool wildmatch ipathmatch '-b]' '[a-]b]'
ok 1249 - ipathmatch: match '-b]' '[a-]b]'
expecting success of 3070.1250 'ipathmatch (via ls-files): match '[a-]b]' '-b]'':
printf '%s' '-b]' >expect &&
git --icase-pathspecs ls-files -z -- '[a-]b]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1250 - ipathmatch (via ls-files): match '[a-]b]' '-b]'
expecting success of 3070.1251 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing -b]
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1251 - cleanup after previous file test
expecting success of 3070.1252 'setup match file test for \':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1252 - setup match file test for \
expecting success of 3070.1253 'wildmatch: no match '\' '[\]'':
test_must_fail test-tool wildmatch wildmatch '\' '[\]'
ok 1253 - wildmatch: no match '\' '[\]'
expecting success of 3070.1254 'wildmatch (via ls-files): no match '[\]' '\'':
>expect &&
git --glob-pathspecs ls-files -z -- '[\]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1254 - wildmatch (via ls-files): no match '[\]' '\'
expecting success of 3070.1255 'iwildmatch: no match '\' '[\]'':
test_must_fail test-tool wildmatch iwildmatch '\' '[\]'
ok 1255 - iwildmatch: no match '\' '[\]'
expecting success of 3070.1256 'iwildmatch (via ls-files): no match '[\]' '\'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[\]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1256 - iwildmatch (via ls-files): no match '[\]' '\'
expecting success of 3070.1257 'pathmatch: no match '\' '[\]'':
test_must_fail test-tool wildmatch pathmatch '\' '[\]'
ok 1257 - pathmatch: no match '\' '[\]'
expecting success of 3070.1258 'pathmatch (via ls-files): no match '[\]' '\'':
>expect &&
git ls-files -z -- '[\]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1258 - pathmatch (via ls-files): no match '[\]' '\'
expecting success of 3070.1259 'ipathmatch: no match '\' '[\]'':
test_must_fail test-tool wildmatch ipathmatch '\' '[\]'
ok 1259 - ipathmatch: no match '\' '[\]'
expecting success of 3070.1260 'ipathmatch (via ls-files): no match '[\]' '\'':
>expect &&
git --icase-pathspecs ls-files -z -- '[\]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1260 - ipathmatch (via ls-files): no match '[\]' '\'
expecting success of 3070.1261 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing "\\"
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1261 - cleanup after previous file test
expecting success of 3070.1262 'setup match file test for \':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1262 - setup match file test for \
expecting success of 3070.1263 'wildmatch: match '\' '[\\]'':
test-tool wildmatch wildmatch '\' '[\\]'
ok 1263 - wildmatch: match '\' '[\\]'
expecting success of 3070.1264 'wildmatch (via ls-files): match '[\\]' '\'':
printf '%s' '\' >expect &&
git --glob-pathspecs ls-files -z -- '[\\]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1264 - wildmatch (via ls-files): match '[\\]' '\'
expecting success of 3070.1265 'iwildmatch: match '\' '[\\]'':
test-tool wildmatch iwildmatch '\' '[\\]'
ok 1265 - iwildmatch: match '\' '[\\]'
expecting success of 3070.1266 'iwildmatch (via ls-files): match '[\\]' '\'':
printf '%s' '\' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[\\]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1266 - iwildmatch (via ls-files): match '[\\]' '\'
expecting success of 3070.1267 'pathmatch: match '\' '[\\]'':
test-tool wildmatch pathmatch '\' '[\\]'
ok 1267 - pathmatch: match '\' '[\\]'
expecting success of 3070.1268 'pathmatch (via ls-files): match '[\\]' '\'':
printf '%s' '\' >expect &&
git ls-files -z -- '[\\]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1268 - pathmatch (via ls-files): match '[\\]' '\'
expecting success of 3070.1269 'ipathmatch: match '\' '[\\]'':
test-tool wildmatch ipathmatch '\' '[\\]'
ok 1269 - ipathmatch: match '\' '[\\]'
expecting success of 3070.1270 'ipathmatch (via ls-files): match '[\\]' '\'':
printf '%s' '\' >expect &&
git --icase-pathspecs ls-files -z -- '[\\]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1270 - ipathmatch (via ls-files): match '[\\]' '\'
expecting success of 3070.1271 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing "\\"
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1271 - cleanup after previous file test
expecting success of 3070.1272 'setup match file test for \':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1272 - setup match file test for \
expecting success of 3070.1273 'wildmatch: no match '\' '[!\\]'':
test_must_fail test-tool wildmatch wildmatch '\' '[!\\]'
ok 1273 - wildmatch: no match '\' '[!\\]'
expecting success of 3070.1274 'wildmatch (via ls-files): no match '[!\\]' '\'':
>expect &&
git --glob-pathspecs ls-files -z -- '[!\\]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1274 - wildmatch (via ls-files): no match '[!\\]' '\'
expecting success of 3070.1275 'iwildmatch: no match '\' '[!\\]'':
test_must_fail test-tool wildmatch iwildmatch '\' '[!\\]'
ok 1275 - iwildmatch: no match '\' '[!\\]'
expecting success of 3070.1276 'iwildmatch (via ls-files): no match '[!\\]' '\'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[!\\]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1276 - iwildmatch (via ls-files): no match '[!\\]' '\'
expecting success of 3070.1277 'pathmatch: no match '\' '[!\\]'':
test_must_fail test-tool wildmatch pathmatch '\' '[!\\]'
ok 1277 - pathmatch: no match '\' '[!\\]'
expecting success of 3070.1278 'pathmatch (via ls-files): no match '[!\\]' '\'':
>expect &&
git ls-files -z -- '[!\\]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1278 - pathmatch (via ls-files): no match '[!\\]' '\'
expecting success of 3070.1279 'ipathmatch: no match '\' '[!\\]'':
test_must_fail test-tool wildmatch ipathmatch '\' '[!\\]'
ok 1279 - ipathmatch: no match '\' '[!\\]'
expecting success of 3070.1280 'ipathmatch (via ls-files): no match '[!\\]' '\'':
>expect &&
git --icase-pathspecs ls-files -z -- '[!\\]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1280 - ipathmatch (via ls-files): no match '[!\\]' '\'
expecting success of 3070.1281 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing "\\"
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1281 - cleanup after previous file test
expecting success of 3070.1282 'setup match file test for G':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1282 - setup match file test for G
expecting success of 3070.1283 'wildmatch: match 'G' '[A-\\]'':
test-tool wildmatch wildmatch 'G' '[A-\\]'
ok 1283 - wildmatch: match 'G' '[A-\\]'
expecting success of 3070.1284 'wildmatch (via ls-files): match '[A-\\]' 'G'':
printf '%s' 'G' >expect &&
git --glob-pathspecs ls-files -z -- '[A-\\]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1284 - wildmatch (via ls-files): match '[A-\\]' 'G'
expecting success of 3070.1285 'iwildmatch: match 'G' '[A-\\]'':
test-tool wildmatch iwildmatch 'G' '[A-\\]'
ok 1285 - iwildmatch: match 'G' '[A-\\]'
expecting success of 3070.1286 'iwildmatch (via ls-files): match '[A-\\]' 'G'':
printf '%s' 'G' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[A-\\]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1286 - iwildmatch (via ls-files): match '[A-\\]' 'G'
expecting success of 3070.1287 'pathmatch: match 'G' '[A-\\]'':
test-tool wildmatch pathmatch 'G' '[A-\\]'
ok 1287 - pathmatch: match 'G' '[A-\\]'
expecting success of 3070.1288 'pathmatch (via ls-files): match '[A-\\]' 'G'':
printf '%s' 'G' >expect &&
git ls-files -z -- '[A-\\]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1288 - pathmatch (via ls-files): match '[A-\\]' 'G'
expecting success of 3070.1289 'ipathmatch: match 'G' '[A-\\]'':
test-tool wildmatch ipathmatch 'G' '[A-\\]'
ok 1289 - ipathmatch: match 'G' '[A-\\]'
expecting success of 3070.1290 'ipathmatch (via ls-files): match '[A-\\]' 'G'':
printf '%s' 'G' >expect &&
git --icase-pathspecs ls-files -z -- '[A-\\]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1290 - ipathmatch (via ls-files): match '[A-\\]' 'G'
expecting success of 3070.1291 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing G
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1291 - cleanup after previous file test
expecting success of 3070.1292 'setup match file test for aaabbb':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1292 - setup match file test for aaabbb
expecting success of 3070.1293 'wildmatch: no match 'aaabbb' 'b*a'':
test_must_fail test-tool wildmatch wildmatch 'aaabbb' 'b*a'
ok 1293 - wildmatch: no match 'aaabbb' 'b*a'
expecting success of 3070.1294 'wildmatch (via ls-files): no match 'b*a' 'aaabbb'':
>expect &&
git --glob-pathspecs ls-files -z -- 'b*a' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1294 - wildmatch (via ls-files): no match 'b*a' 'aaabbb'
expecting success of 3070.1295 'iwildmatch: no match 'aaabbb' 'b*a'':
test_must_fail test-tool wildmatch iwildmatch 'aaabbb' 'b*a'
ok 1295 - iwildmatch: no match 'aaabbb' 'b*a'
expecting success of 3070.1296 'iwildmatch (via ls-files): no match 'b*a' 'aaabbb'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'b*a' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1296 - iwildmatch (via ls-files): no match 'b*a' 'aaabbb'
expecting success of 3070.1297 'pathmatch: no match 'aaabbb' 'b*a'':
test_must_fail test-tool wildmatch pathmatch 'aaabbb' 'b*a'
ok 1297 - pathmatch: no match 'aaabbb' 'b*a'
expecting success of 3070.1298 'pathmatch (via ls-files): no match 'b*a' 'aaabbb'':
>expect &&
git ls-files -z -- 'b*a' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1298 - pathmatch (via ls-files): no match 'b*a' 'aaabbb'
expecting success of 3070.1299 'ipathmatch: no match 'aaabbb' 'b*a'':
test_must_fail test-tool wildmatch ipathmatch 'aaabbb' 'b*a'
ok 1299 - ipathmatch: no match 'aaabbb' 'b*a'
expecting success of 3070.1300 'ipathmatch (via ls-files): no match 'b*a' 'aaabbb'':
>expect &&
git --icase-pathspecs ls-files -z -- 'b*a' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1300 - ipathmatch (via ls-files): no match 'b*a' 'aaabbb'
expecting success of 3070.1301 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing aaabbb
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1301 - cleanup after previous file test
expecting success of 3070.1302 'setup match file test for aabcaa':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1302 - setup match file test for aabcaa
expecting success of 3070.1303 'wildmatch: no match 'aabcaa' '*ba*'':
test_must_fail test-tool wildmatch wildmatch 'aabcaa' '*ba*'
ok 1303 - wildmatch: no match 'aabcaa' '*ba*'
expecting success of 3070.1304 'wildmatch (via ls-files): no match '*ba*' 'aabcaa'':
>expect &&
git --glob-pathspecs ls-files -z -- '*ba*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1304 - wildmatch (via ls-files): no match '*ba*' 'aabcaa'
expecting success of 3070.1305 'iwildmatch: no match 'aabcaa' '*ba*'':
test_must_fail test-tool wildmatch iwildmatch 'aabcaa' '*ba*'
ok 1305 - iwildmatch: no match 'aabcaa' '*ba*'
expecting success of 3070.1306 'iwildmatch (via ls-files): no match '*ba*' 'aabcaa'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '*ba*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1306 - iwildmatch (via ls-files): no match '*ba*' 'aabcaa'
expecting success of 3070.1307 'pathmatch: no match 'aabcaa' '*ba*'':
test_must_fail test-tool wildmatch pathmatch 'aabcaa' '*ba*'
ok 1307 - pathmatch: no match 'aabcaa' '*ba*'
expecting success of 3070.1308 'pathmatch (via ls-files): no match '*ba*' 'aabcaa'':
>expect &&
git ls-files -z -- '*ba*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1308 - pathmatch (via ls-files): no match '*ba*' 'aabcaa'
expecting success of 3070.1309 'ipathmatch: no match 'aabcaa' '*ba*'':
test_must_fail test-tool wildmatch ipathmatch 'aabcaa' '*ba*'
ok 1309 - ipathmatch: no match 'aabcaa' '*ba*'
expecting success of 3070.1310 'ipathmatch (via ls-files): no match '*ba*' 'aabcaa'':
>expect &&
git --icase-pathspecs ls-files -z -- '*ba*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1310 - ipathmatch (via ls-files): no match '*ba*' 'aabcaa'
expecting success of 3070.1311 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing aabcaa
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1311 - cleanup after previous file test
expecting success of 3070.1312 'setup match file test for ,':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1312 - setup match file test for ,
expecting success of 3070.1313 'wildmatch: match ',' '[,]'':
test-tool wildmatch wildmatch ',' '[,]'
ok 1313 - wildmatch: match ',' '[,]'
expecting success of 3070.1314 'wildmatch (via ls-files): match '[,]' ','':
printf '%s' ',' >expect &&
git --glob-pathspecs ls-files -z -- '[,]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1314 - wildmatch (via ls-files): match '[,]' ','
expecting success of 3070.1315 'iwildmatch: match ',' '[,]'':
test-tool wildmatch iwildmatch ',' '[,]'
ok 1315 - iwildmatch: match ',' '[,]'
expecting success of 3070.1316 'iwildmatch (via ls-files): match '[,]' ','':
printf '%s' ',' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[,]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1316 - iwildmatch (via ls-files): match '[,]' ','
expecting success of 3070.1317 'pathmatch: match ',' '[,]'':
test-tool wildmatch pathmatch ',' '[,]'
ok 1317 - pathmatch: match ',' '[,]'
expecting success of 3070.1318 'pathmatch (via ls-files): match '[,]' ','':
printf '%s' ',' >expect &&
git ls-files -z -- '[,]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1318 - pathmatch (via ls-files): match '[,]' ','
expecting success of 3070.1319 'ipathmatch: match ',' '[,]'':
test-tool wildmatch ipathmatch ',' '[,]'
ok 1319 - ipathmatch: match ',' '[,]'
expecting success of 3070.1320 'ipathmatch (via ls-files): match '[,]' ','':
printf '%s' ',' >expect &&
git --icase-pathspecs ls-files -z -- '[,]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1320 - ipathmatch (via ls-files): match '[,]' ','
expecting success of 3070.1321 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing ,
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1321 - cleanup after previous file test
expecting success of 3070.1322 'setup match file test for ,':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1322 - setup match file test for ,
expecting success of 3070.1323 'wildmatch: match ',' '[\\,]'':
test-tool wildmatch wildmatch ',' '[\\,]'
ok 1323 - wildmatch: match ',' '[\\,]'
expecting success of 3070.1324 'wildmatch (via ls-files): match '[\\,]' ','':
printf '%s' ',' >expect &&
git --glob-pathspecs ls-files -z -- '[\\,]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1324 - wildmatch (via ls-files): match '[\\,]' ','
expecting success of 3070.1325 'iwildmatch: match ',' '[\\,]'':
test-tool wildmatch iwildmatch ',' '[\\,]'
ok 1325 - iwildmatch: match ',' '[\\,]'
expecting success of 3070.1326 'iwildmatch (via ls-files): match '[\\,]' ','':
printf '%s' ',' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[\\,]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1326 - iwildmatch (via ls-files): match '[\\,]' ','
expecting success of 3070.1327 'pathmatch: match ',' '[\\,]'':
test-tool wildmatch pathmatch ',' '[\\,]'
ok 1327 - pathmatch: match ',' '[\\,]'
expecting success of 3070.1328 'pathmatch (via ls-files): match '[\\,]' ','':
printf '%s' ',' >expect &&
git ls-files -z -- '[\\,]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1328 - pathmatch (via ls-files): match '[\\,]' ','
expecting success of 3070.1329 'ipathmatch: match ',' '[\\,]'':
test-tool wildmatch ipathmatch ',' '[\\,]'
ok 1329 - ipathmatch: match ',' '[\\,]'
expecting success of 3070.1330 'ipathmatch (via ls-files): match '[\\,]' ','':
printf '%s' ',' >expect &&
git --icase-pathspecs ls-files -z -- '[\\,]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1330 - ipathmatch (via ls-files): match '[\\,]' ','
expecting success of 3070.1331 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing ,
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1331 - cleanup after previous file test
expecting success of 3070.1332 'setup match file test for \':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1332 - setup match file test for \
expecting success of 3070.1333 'wildmatch: match '\' '[\\,]'':
test-tool wildmatch wildmatch '\' '[\\,]'
ok 1333 - wildmatch: match '\' '[\\,]'
expecting success of 3070.1334 'wildmatch (via ls-files): match '[\\,]' '\'':
printf '%s' '\' >expect &&
git --glob-pathspecs ls-files -z -- '[\\,]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1334 - wildmatch (via ls-files): match '[\\,]' '\'
expecting success of 3070.1335 'iwildmatch: match '\' '[\\,]'':
test-tool wildmatch iwildmatch '\' '[\\,]'
ok 1335 - iwildmatch: match '\' '[\\,]'
expecting success of 3070.1336 'iwildmatch (via ls-files): match '[\\,]' '\'':
printf '%s' '\' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[\\,]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1336 - iwildmatch (via ls-files): match '[\\,]' '\'
expecting success of 3070.1337 'pathmatch: match '\' '[\\,]'':
test-tool wildmatch pathmatch '\' '[\\,]'
ok 1337 - pathmatch: match '\' '[\\,]'
expecting success of 3070.1338 'pathmatch (via ls-files): match '[\\,]' '\'':
printf '%s' '\' >expect &&
git ls-files -z -- '[\\,]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1338 - pathmatch (via ls-files): match '[\\,]' '\'
expecting success of 3070.1339 'ipathmatch: match '\' '[\\,]'':
test-tool wildmatch ipathmatch '\' '[\\,]'
ok 1339 - ipathmatch: match '\' '[\\,]'
expecting success of 3070.1340 'ipathmatch (via ls-files): match '[\\,]' '\'':
printf '%s' '\' >expect &&
git --icase-pathspecs ls-files -z -- '[\\,]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1340 - ipathmatch (via ls-files): match '[\\,]' '\'
expecting success of 3070.1341 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing "\\"
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1341 - cleanup after previous file test
expecting success of 3070.1342 'setup match file test for -':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1342 - setup match file test for -
expecting success of 3070.1343 'wildmatch: match '-' '[,-.]'':
test-tool wildmatch wildmatch '-' '[,-.]'
ok 1343 - wildmatch: match '-' '[,-.]'
expecting success of 3070.1344 'wildmatch (via ls-files): match '[,-.]' '-'':
printf '%s' '-' >expect &&
git --glob-pathspecs ls-files -z -- '[,-.]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1344 - wildmatch (via ls-files): match '[,-.]' '-'
expecting success of 3070.1345 'iwildmatch: match '-' '[,-.]'':
test-tool wildmatch iwildmatch '-' '[,-.]'
ok 1345 - iwildmatch: match '-' '[,-.]'
expecting success of 3070.1346 'iwildmatch (via ls-files): match '[,-.]' '-'':
printf '%s' '-' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[,-.]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1346 - iwildmatch (via ls-files): match '[,-.]' '-'
expecting success of 3070.1347 'pathmatch: match '-' '[,-.]'':
test-tool wildmatch pathmatch '-' '[,-.]'
ok 1347 - pathmatch: match '-' '[,-.]'
expecting success of 3070.1348 'pathmatch (via ls-files): match '[,-.]' '-'':
printf '%s' '-' >expect &&
git ls-files -z -- '[,-.]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1348 - pathmatch (via ls-files): match '[,-.]' '-'
expecting success of 3070.1349 'ipathmatch: match '-' '[,-.]'':
test-tool wildmatch ipathmatch '-' '[,-.]'
ok 1349 - ipathmatch: match '-' '[,-.]'
expecting success of 3070.1350 'ipathmatch (via ls-files): match '[,-.]' '-'':
printf '%s' '-' >expect &&
git --icase-pathspecs ls-files -z -- '[,-.]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1350 - ipathmatch (via ls-files): match '[,-.]' '-'
expecting success of 3070.1351 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing -
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1351 - cleanup after previous file test
expecting success of 3070.1352 'setup match file test for +':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1352 - setup match file test for +
expecting success of 3070.1353 'wildmatch: no match '+' '[,-.]'':
test_must_fail test-tool wildmatch wildmatch '+' '[,-.]'
ok 1353 - wildmatch: no match '+' '[,-.]'
expecting success of 3070.1354 'wildmatch (via ls-files): no match '[,-.]' '+'':
>expect &&
git --glob-pathspecs ls-files -z -- '[,-.]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1354 - wildmatch (via ls-files): no match '[,-.]' '+'
expecting success of 3070.1355 'iwildmatch: no match '+' '[,-.]'':
test_must_fail test-tool wildmatch iwildmatch '+' '[,-.]'
ok 1355 - iwildmatch: no match '+' '[,-.]'
expecting success of 3070.1356 'iwildmatch (via ls-files): no match '[,-.]' '+'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[,-.]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1356 - iwildmatch (via ls-files): no match '[,-.]' '+'
expecting success of 3070.1357 'pathmatch: no match '+' '[,-.]'':
test_must_fail test-tool wildmatch pathmatch '+' '[,-.]'
ok 1357 - pathmatch: no match '+' '[,-.]'
expecting success of 3070.1358 'pathmatch (via ls-files): no match '[,-.]' '+'':
>expect &&
git ls-files -z -- '[,-.]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1358 - pathmatch (via ls-files): no match '[,-.]' '+'
expecting success of 3070.1359 'ipathmatch: no match '+' '[,-.]'':
test_must_fail test-tool wildmatch ipathmatch '+' '[,-.]'
ok 1359 - ipathmatch: no match '+' '[,-.]'
expecting success of 3070.1360 'ipathmatch (via ls-files): no match '[,-.]' '+'':
>expect &&
git --icase-pathspecs ls-files -z -- '[,-.]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1360 - ipathmatch (via ls-files): no match '[,-.]' '+'
expecting success of 3070.1361 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing +
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1361 - cleanup after previous file test
expecting success of 3070.1362 'setup match file test for -.]':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1362 - setup match file test for -.]
expecting success of 3070.1363 'wildmatch: no match '-.]' '[,-.]'':
test_must_fail test-tool wildmatch wildmatch '-.]' '[,-.]'
ok 1363 - wildmatch: no match '-.]' '[,-.]'
expecting success of 3070.1364 'wildmatch (via ls-files): no match '[,-.]' '-.]'':
>expect &&
git --glob-pathspecs ls-files -z -- '[,-.]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1364 - wildmatch (via ls-files): no match '[,-.]' '-.]'
expecting success of 3070.1365 'iwildmatch: no match '-.]' '[,-.]'':
test_must_fail test-tool wildmatch iwildmatch '-.]' '[,-.]'
ok 1365 - iwildmatch: no match '-.]' '[,-.]'
expecting success of 3070.1366 'iwildmatch (via ls-files): no match '[,-.]' '-.]'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[,-.]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1366 - iwildmatch (via ls-files): no match '[,-.]' '-.]'
expecting success of 3070.1367 'pathmatch: no match '-.]' '[,-.]'':
test_must_fail test-tool wildmatch pathmatch '-.]' '[,-.]'
ok 1367 - pathmatch: no match '-.]' '[,-.]'
expecting success of 3070.1368 'pathmatch (via ls-files): no match '[,-.]' '-.]'':
>expect &&
git ls-files -z -- '[,-.]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1368 - pathmatch (via ls-files): no match '[,-.]' '-.]'
expecting success of 3070.1369 'ipathmatch: no match '-.]' '[,-.]'':
test_must_fail test-tool wildmatch ipathmatch '-.]' '[,-.]'
ok 1369 - ipathmatch: no match '-.]' '[,-.]'
expecting success of 3070.1370 'ipathmatch (via ls-files): no match '[,-.]' '-.]'':
>expect &&
git --icase-pathspecs ls-files -z -- '[,-.]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1370 - ipathmatch (via ls-files): no match '[,-.]' '-.]'
expecting success of 3070.1371 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing -.]
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1371 - cleanup after previous file test
expecting success of 3070.1372 'setup match file test for 2':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1372 - setup match file test for 2
expecting success of 3070.1373 'wildmatch: match '2' '[\1-\3]'':
test-tool wildmatch wildmatch '2' '[\1-\3]'
ok 1373 - wildmatch: match '2' '[\1-\3]'
expecting success of 3070.1374 'wildmatch (via ls-files): match '[\1-\3]' '2'':
printf '%s' '2' >expect &&
git --glob-pathspecs ls-files -z -- '[\1-\3]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1374 - wildmatch (via ls-files): match '[\1-\3]' '2'
expecting success of 3070.1375 'iwildmatch: match '2' '[\1-\3]'':
test-tool wildmatch iwildmatch '2' '[\1-\3]'
ok 1375 - iwildmatch: match '2' '[\1-\3]'
expecting success of 3070.1376 'iwildmatch (via ls-files): match '[\1-\3]' '2'':
printf '%s' '2' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[\1-\3]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1376 - iwildmatch (via ls-files): match '[\1-\3]' '2'
expecting success of 3070.1377 'pathmatch: match '2' '[\1-\3]'':
test-tool wildmatch pathmatch '2' '[\1-\3]'
ok 1377 - pathmatch: match '2' '[\1-\3]'
expecting success of 3070.1378 'pathmatch (via ls-files): match '[\1-\3]' '2'':
printf '%s' '2' >expect &&
git ls-files -z -- '[\1-\3]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1378 - pathmatch (via ls-files): match '[\1-\3]' '2'
expecting success of 3070.1379 'ipathmatch: match '2' '[\1-\3]'':
test-tool wildmatch ipathmatch '2' '[\1-\3]'
ok 1379 - ipathmatch: match '2' '[\1-\3]'
expecting success of 3070.1380 'ipathmatch (via ls-files): match '[\1-\3]' '2'':
printf '%s' '2' >expect &&
git --icase-pathspecs ls-files -z -- '[\1-\3]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1380 - ipathmatch (via ls-files): match '[\1-\3]' '2'
expecting success of 3070.1381 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing 2
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1381 - cleanup after previous file test
expecting success of 3070.1382 'setup match file test for 3':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1382 - setup match file test for 3
expecting success of 3070.1383 'wildmatch: match '3' '[\1-\3]'':
test-tool wildmatch wildmatch '3' '[\1-\3]'
ok 1383 - wildmatch: match '3' '[\1-\3]'
expecting success of 3070.1384 'wildmatch (via ls-files): match '[\1-\3]' '3'':
printf '%s' '3' >expect &&
git --glob-pathspecs ls-files -z -- '[\1-\3]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1384 - wildmatch (via ls-files): match '[\1-\3]' '3'
expecting success of 3070.1385 'iwildmatch: match '3' '[\1-\3]'':
test-tool wildmatch iwildmatch '3' '[\1-\3]'
ok 1385 - iwildmatch: match '3' '[\1-\3]'
expecting success of 3070.1386 'iwildmatch (via ls-files): match '[\1-\3]' '3'':
printf '%s' '3' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[\1-\3]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1386 - iwildmatch (via ls-files): match '[\1-\3]' '3'
expecting success of 3070.1387 'pathmatch: match '3' '[\1-\3]'':
test-tool wildmatch pathmatch '3' '[\1-\3]'
ok 1387 - pathmatch: match '3' '[\1-\3]'
expecting success of 3070.1388 'pathmatch (via ls-files): match '[\1-\3]' '3'':
printf '%s' '3' >expect &&
git ls-files -z -- '[\1-\3]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1388 - pathmatch (via ls-files): match '[\1-\3]' '3'
expecting success of 3070.1389 'ipathmatch: match '3' '[\1-\3]'':
test-tool wildmatch ipathmatch '3' '[\1-\3]'
ok 1389 - ipathmatch: match '3' '[\1-\3]'
expecting success of 3070.1390 'ipathmatch (via ls-files): match '[\1-\3]' '3'':
printf '%s' '3' >expect &&
git --icase-pathspecs ls-files -z -- '[\1-\3]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1390 - ipathmatch (via ls-files): match '[\1-\3]' '3'
expecting success of 3070.1391 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing 3
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1391 - cleanup after previous file test
expecting success of 3070.1392 'setup match file test for 4':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1392 - setup match file test for 4
expecting success of 3070.1393 'wildmatch: no match '4' '[\1-\3]'':
test_must_fail test-tool wildmatch wildmatch '4' '[\1-\3]'
ok 1393 - wildmatch: no match '4' '[\1-\3]'
expecting success of 3070.1394 'wildmatch (via ls-files): no match '[\1-\3]' '4'':
>expect &&
git --glob-pathspecs ls-files -z -- '[\1-\3]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1394 - wildmatch (via ls-files): no match '[\1-\3]' '4'
expecting success of 3070.1395 'iwildmatch: no match '4' '[\1-\3]'':
test_must_fail test-tool wildmatch iwildmatch '4' '[\1-\3]'
ok 1395 - iwildmatch: no match '4' '[\1-\3]'
expecting success of 3070.1396 'iwildmatch (via ls-files): no match '[\1-\3]' '4'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[\1-\3]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1396 - iwildmatch (via ls-files): no match '[\1-\3]' '4'
expecting success of 3070.1397 'pathmatch: no match '4' '[\1-\3]'':
test_must_fail test-tool wildmatch pathmatch '4' '[\1-\3]'
ok 1397 - pathmatch: no match '4' '[\1-\3]'
expecting success of 3070.1398 'pathmatch (via ls-files): no match '[\1-\3]' '4'':
>expect &&
git ls-files -z -- '[\1-\3]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1398 - pathmatch (via ls-files): no match '[\1-\3]' '4'
expecting success of 3070.1399 'ipathmatch: no match '4' '[\1-\3]'':
test_must_fail test-tool wildmatch ipathmatch '4' '[\1-\3]'
ok 1399 - ipathmatch: no match '4' '[\1-\3]'
expecting success of 3070.1400 'ipathmatch (via ls-files): no match '[\1-\3]' '4'':
>expect &&
git --icase-pathspecs ls-files -z -- '[\1-\3]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1400 - ipathmatch (via ls-files): no match '[\1-\3]' '4'
expecting success of 3070.1401 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing 4
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1401 - cleanup after previous file test
expecting success of 3070.1402 'setup match file test for \':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1402 - setup match file test for \
expecting success of 3070.1403 'wildmatch: match '\' '[[-\]]'':
test-tool wildmatch wildmatch '\' '[[-\]]'
ok 1403 - wildmatch: match '\' '[[-\]]'
expecting success of 3070.1404 'wildmatch (via ls-files): match '[[-\]]' '\'':
printf '%s' '\' >expect &&
git --glob-pathspecs ls-files -z -- '[[-\]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1404 - wildmatch (via ls-files): match '[[-\]]' '\'
expecting success of 3070.1405 'iwildmatch: match '\' '[[-\]]'':
test-tool wildmatch iwildmatch '\' '[[-\]]'
ok 1405 - iwildmatch: match '\' '[[-\]]'
expecting success of 3070.1406 'iwildmatch (via ls-files): match '[[-\]]' '\'':
printf '%s' '\' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[[-\]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1406 - iwildmatch (via ls-files): match '[[-\]]' '\'
expecting success of 3070.1407 'pathmatch: match '\' '[[-\]]'':
test-tool wildmatch pathmatch '\' '[[-\]]'
ok 1407 - pathmatch: match '\' '[[-\]]'
expecting success of 3070.1408 'pathmatch (via ls-files): match '[[-\]]' '\'':
printf '%s' '\' >expect &&
git ls-files -z -- '[[-\]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1408 - pathmatch (via ls-files): match '[[-\]]' '\'
expecting success of 3070.1409 'ipathmatch: match '\' '[[-\]]'':
test-tool wildmatch ipathmatch '\' '[[-\]]'
ok 1409 - ipathmatch: match '\' '[[-\]]'
expecting success of 3070.1410 'ipathmatch (via ls-files): match '[[-\]]' '\'':
printf '%s' '\' >expect &&
git --icase-pathspecs ls-files -z -- '[[-\]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1410 - ipathmatch (via ls-files): match '[[-\]]' '\'
expecting success of 3070.1411 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing "\\"
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1411 - cleanup after previous file test
expecting success of 3070.1412 'setup match file test for [':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1412 - setup match file test for [
expecting success of 3070.1413 'wildmatch: match '[' '[[-\]]'':
test-tool wildmatch wildmatch '[' '[[-\]]'
ok 1413 - wildmatch: match '[' '[[-\]]'
expecting success of 3070.1414 'wildmatch (via ls-files): match '[[-\]]' '['':
printf '%s' '[' >expect &&
git --glob-pathspecs ls-files -z -- '[[-\]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1414 - wildmatch (via ls-files): match '[[-\]]' '['
expecting success of 3070.1415 'iwildmatch: match '[' '[[-\]]'':
test-tool wildmatch iwildmatch '[' '[[-\]]'
ok 1415 - iwildmatch: match '[' '[[-\]]'
expecting success of 3070.1416 'iwildmatch (via ls-files): match '[[-\]]' '['':
printf '%s' '[' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[[-\]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1416 - iwildmatch (via ls-files): match '[[-\]]' '['
expecting success of 3070.1417 'pathmatch: match '[' '[[-\]]'':
test-tool wildmatch pathmatch '[' '[[-\]]'
ok 1417 - pathmatch: match '[' '[[-\]]'
expecting success of 3070.1418 'pathmatch (via ls-files): match '[[-\]]' '['':
printf '%s' '[' >expect &&
git ls-files -z -- '[[-\]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1418 - pathmatch (via ls-files): match '[[-\]]' '['
expecting success of 3070.1419 'ipathmatch: match '[' '[[-\]]'':
test-tool wildmatch ipathmatch '[' '[[-\]]'
ok 1419 - ipathmatch: match '[' '[[-\]]'
expecting success of 3070.1420 'ipathmatch (via ls-files): match '[[-\]]' '['':
printf '%s' '[' >expect &&
git --icase-pathspecs ls-files -z -- '[[-\]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1420 - ipathmatch (via ls-files): match '[[-\]]' '['
expecting success of 3070.1421 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing [
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1421 - cleanup after previous file test
expecting success of 3070.1422 'setup match file test for ]':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1422 - setup match file test for ]
expecting success of 3070.1423 'wildmatch: match ']' '[[-\]]'':
test-tool wildmatch wildmatch ']' '[[-\]]'
ok 1423 - wildmatch: match ']' '[[-\]]'
expecting success of 3070.1424 'wildmatch (via ls-files): match '[[-\]]' ']'':
printf '%s' ']' >expect &&
git --glob-pathspecs ls-files -z -- '[[-\]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1424 - wildmatch (via ls-files): match '[[-\]]' ']'
expecting success of 3070.1425 'iwildmatch: match ']' '[[-\]]'':
test-tool wildmatch iwildmatch ']' '[[-\]]'
ok 1425 - iwildmatch: match ']' '[[-\]]'
expecting success of 3070.1426 'iwildmatch (via ls-files): match '[[-\]]' ']'':
printf '%s' ']' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[[-\]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1426 - iwildmatch (via ls-files): match '[[-\]]' ']'
expecting success of 3070.1427 'pathmatch: match ']' '[[-\]]'':
test-tool wildmatch pathmatch ']' '[[-\]]'
ok 1427 - pathmatch: match ']' '[[-\]]'
expecting success of 3070.1428 'pathmatch (via ls-files): match '[[-\]]' ']'':
printf '%s' ']' >expect &&
git ls-files -z -- '[[-\]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1428 - pathmatch (via ls-files): match '[[-\]]' ']'
expecting success of 3070.1429 'ipathmatch: match ']' '[[-\]]'':
test-tool wildmatch ipathmatch ']' '[[-\]]'
ok 1429 - ipathmatch: match ']' '[[-\]]'
expecting success of 3070.1430 'ipathmatch (via ls-files): match '[[-\]]' ']'':
printf '%s' ']' >expect &&
git --icase-pathspecs ls-files -z -- '[[-\]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1430 - ipathmatch (via ls-files): match '[[-\]]' ']'
expecting success of 3070.1431 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing ]
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1431 - cleanup after previous file test
expecting success of 3070.1432 'setup match file test for -':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1432 - setup match file test for -
expecting success of 3070.1433 'wildmatch: no match '-' '[[-\]]'':
test_must_fail test-tool wildmatch wildmatch '-' '[[-\]]'
ok 1433 - wildmatch: no match '-' '[[-\]]'
expecting success of 3070.1434 'wildmatch (via ls-files): no match '[[-\]]' '-'':
>expect &&
git --glob-pathspecs ls-files -z -- '[[-\]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1434 - wildmatch (via ls-files): no match '[[-\]]' '-'
expecting success of 3070.1435 'iwildmatch: no match '-' '[[-\]]'':
test_must_fail test-tool wildmatch iwildmatch '-' '[[-\]]'
ok 1435 - iwildmatch: no match '-' '[[-\]]'
expecting success of 3070.1436 'iwildmatch (via ls-files): no match '[[-\]]' '-'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[[-\]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1436 - iwildmatch (via ls-files): no match '[[-\]]' '-'
expecting success of 3070.1437 'pathmatch: no match '-' '[[-\]]'':
test_must_fail test-tool wildmatch pathmatch '-' '[[-\]]'
ok 1437 - pathmatch: no match '-' '[[-\]]'
expecting success of 3070.1438 'pathmatch (via ls-files): no match '[[-\]]' '-'':
>expect &&
git ls-files -z -- '[[-\]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1438 - pathmatch (via ls-files): no match '[[-\]]' '-'
expecting success of 3070.1439 'ipathmatch: no match '-' '[[-\]]'':
test_must_fail test-tool wildmatch ipathmatch '-' '[[-\]]'
ok 1439 - ipathmatch: no match '-' '[[-\]]'
expecting success of 3070.1440 'ipathmatch (via ls-files): no match '[[-\]]' '-'':
>expect &&
git --icase-pathspecs ls-files -z -- '[[-\]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1440 - ipathmatch (via ls-files): no match '[[-\]]' '-'
expecting success of 3070.1441 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing -
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1441 - cleanup after previous file test
expecting success of 3070.1442 'setup match file test for -adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1442 - setup match file test for -adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1
expecting success of 3070.1443 'wildmatch: match '-adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1' '-*-*-*-*-*-*-12-*-*-*-m-*-*-*'':
test-tool wildmatch wildmatch '-adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1' '-*-*-*-*-*-*-12-*-*-*-m-*-*-*'
ok 1443 - wildmatch: match '-adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1' '-*-*-*-*-*-*-12-*-*-*-m-*-*-*'
expecting success of 3070.1444 'wildmatch (via ls-files): match '-*-*-*-*-*-*-12-*-*-*-m-*-*-*' '-adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1'':
printf '%s' '-adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1' >expect &&
git --glob-pathspecs ls-files -z -- '-*-*-*-*-*-*-12-*-*-*-m-*-*-*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1444 - wildmatch (via ls-files): match '-*-*-*-*-*-*-12-*-*-*-m-*-*-*' '-adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1'
expecting success of 3070.1445 'iwildmatch: match '-adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1' '-*-*-*-*-*-*-12-*-*-*-m-*-*-*'':
test-tool wildmatch iwildmatch '-adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1' '-*-*-*-*-*-*-12-*-*-*-m-*-*-*'
ok 1445 - iwildmatch: match '-adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1' '-*-*-*-*-*-*-12-*-*-*-m-*-*-*'
expecting success of 3070.1446 'iwildmatch (via ls-files): match '-*-*-*-*-*-*-12-*-*-*-m-*-*-*' '-adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1'':
printf '%s' '-adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '-*-*-*-*-*-*-12-*-*-*-m-*-*-*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1446 - iwildmatch (via ls-files): match '-*-*-*-*-*-*-12-*-*-*-m-*-*-*' '-adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1'
expecting success of 3070.1447 'pathmatch: match '-adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1' '-*-*-*-*-*-*-12-*-*-*-m-*-*-*'':
test-tool wildmatch pathmatch '-adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1' '-*-*-*-*-*-*-12-*-*-*-m-*-*-*'
ok 1447 - pathmatch: match '-adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1' '-*-*-*-*-*-*-12-*-*-*-m-*-*-*'
expecting success of 3070.1448 'pathmatch (via ls-files): match '-*-*-*-*-*-*-12-*-*-*-m-*-*-*' '-adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1'':
printf '%s' '-adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1' >expect &&
git ls-files -z -- '-*-*-*-*-*-*-12-*-*-*-m-*-*-*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1448 - pathmatch (via ls-files): match '-*-*-*-*-*-*-12-*-*-*-m-*-*-*' '-adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1'
expecting success of 3070.1449 'ipathmatch: match '-adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1' '-*-*-*-*-*-*-12-*-*-*-m-*-*-*'':
test-tool wildmatch ipathmatch '-adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1' '-*-*-*-*-*-*-12-*-*-*-m-*-*-*'
ok 1449 - ipathmatch: match '-adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1' '-*-*-*-*-*-*-12-*-*-*-m-*-*-*'
expecting success of 3070.1450 'ipathmatch (via ls-files): match '-*-*-*-*-*-*-12-*-*-*-m-*-*-*' '-adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1'':
printf '%s' '-adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1' >expect &&
git --icase-pathspecs ls-files -z -- '-*-*-*-*-*-*-12-*-*-*-m-*-*-*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1450 - ipathmatch (via ls-files): match '-*-*-*-*-*-*-12-*-*-*-m-*-*-*' '-adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1'
expecting success of 3070.1451 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing -adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1451 - cleanup after previous file test
expecting success of 3070.1452 'setup match file test for -adobe-courier-bold-o-normal--12-120-75-75-X-70-iso8859-1':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1452 - setup match file test for -adobe-courier-bold-o-normal--12-120-75-75-X-70-iso8859-1
expecting success of 3070.1453 'wildmatch: no match '-adobe-courier-bold-o-normal--12-120-75-75-X-70-iso8859-1' '-*-*-*-*-*-*-12-*-*-*-m-*-*-*'':
test_must_fail test-tool wildmatch wildmatch '-adobe-courier-bold-o-normal--12-120-75-75-X-70-iso8859-1' '-*-*-*-*-*-*-12-*-*-*-m-*-*-*'
ok 1453 - wildmatch: no match '-adobe-courier-bold-o-normal--12-120-75-75-X-70-iso8859-1' '-*-*-*-*-*-*-12-*-*-*-m-*-*-*'
expecting success of 3070.1454 'wildmatch (via ls-files): no match '-*-*-*-*-*-*-12-*-*-*-m-*-*-*' '-adobe-courier-bold-o-normal--12-120-75-75-X-70-iso8859-1'':
>expect &&
git --glob-pathspecs ls-files -z -- '-*-*-*-*-*-*-12-*-*-*-m-*-*-*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1454 - wildmatch (via ls-files): no match '-*-*-*-*-*-*-12-*-*-*-m-*-*-*' '-adobe-courier-bold-o-normal--12-120-75-75-X-70-iso8859-1'
expecting success of 3070.1455 'iwildmatch: no match '-adobe-courier-bold-o-normal--12-120-75-75-X-70-iso8859-1' '-*-*-*-*-*-*-12-*-*-*-m-*-*-*'':
test_must_fail test-tool wildmatch iwildmatch '-adobe-courier-bold-o-normal--12-120-75-75-X-70-iso8859-1' '-*-*-*-*-*-*-12-*-*-*-m-*-*-*'
ok 1455 - iwildmatch: no match '-adobe-courier-bold-o-normal--12-120-75-75-X-70-iso8859-1' '-*-*-*-*-*-*-12-*-*-*-m-*-*-*'
expecting success of 3070.1456 'iwildmatch (via ls-files): no match '-*-*-*-*-*-*-12-*-*-*-m-*-*-*' '-adobe-courier-bold-o-normal--12-120-75-75-X-70-iso8859-1'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '-*-*-*-*-*-*-12-*-*-*-m-*-*-*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1456 - iwildmatch (via ls-files): no match '-*-*-*-*-*-*-12-*-*-*-m-*-*-*' '-adobe-courier-bold-o-normal--12-120-75-75-X-70-iso8859-1'
expecting success of 3070.1457 'pathmatch: no match '-adobe-courier-bold-o-normal--12-120-75-75-X-70-iso8859-1' '-*-*-*-*-*-*-12-*-*-*-m-*-*-*'':
test_must_fail test-tool wildmatch pathmatch '-adobe-courier-bold-o-normal--12-120-75-75-X-70-iso8859-1' '-*-*-*-*-*-*-12-*-*-*-m-*-*-*'
ok 1457 - pathmatch: no match '-adobe-courier-bold-o-normal--12-120-75-75-X-70-iso8859-1' '-*-*-*-*-*-*-12-*-*-*-m-*-*-*'
expecting success of 3070.1458 'pathmatch (via ls-files): no match '-*-*-*-*-*-*-12-*-*-*-m-*-*-*' '-adobe-courier-bold-o-normal--12-120-75-75-X-70-iso8859-1'':
>expect &&
git ls-files -z -- '-*-*-*-*-*-*-12-*-*-*-m-*-*-*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1458 - pathmatch (via ls-files): no match '-*-*-*-*-*-*-12-*-*-*-m-*-*-*' '-adobe-courier-bold-o-normal--12-120-75-75-X-70-iso8859-1'
expecting success of 3070.1459 'ipathmatch: no match '-adobe-courier-bold-o-normal--12-120-75-75-X-70-iso8859-1' '-*-*-*-*-*-*-12-*-*-*-m-*-*-*'':
test_must_fail test-tool wildmatch ipathmatch '-adobe-courier-bold-o-normal--12-120-75-75-X-70-iso8859-1' '-*-*-*-*-*-*-12-*-*-*-m-*-*-*'
ok 1459 - ipathmatch: no match '-adobe-courier-bold-o-normal--12-120-75-75-X-70-iso8859-1' '-*-*-*-*-*-*-12-*-*-*-m-*-*-*'
expecting success of 3070.1460 'ipathmatch (via ls-files): no match '-*-*-*-*-*-*-12-*-*-*-m-*-*-*' '-adobe-courier-bold-o-normal--12-120-75-75-X-70-iso8859-1'':
>expect &&
git --icase-pathspecs ls-files -z -- '-*-*-*-*-*-*-12-*-*-*-m-*-*-*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1460 - ipathmatch (via ls-files): no match '-*-*-*-*-*-*-12-*-*-*-m-*-*-*' '-adobe-courier-bold-o-normal--12-120-75-75-X-70-iso8859-1'
expecting success of 3070.1461 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing -adobe-courier-bold-o-normal--12-120-75-75-X-70-iso8859-1
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1461 - cleanup after previous file test
expecting success of 3070.1462 'setup match file test for -adobe-courier-bold-o-normal--12-120-75-75-/-70-iso8859-1':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1462 - setup match file test for -adobe-courier-bold-o-normal--12-120-75-75-/-70-iso8859-1
expecting success of 3070.1463 'wildmatch: no match '-adobe-courier-bold-o-normal--12-120-75-75-/-70-iso8859-1' '-*-*-*-*-*-*-12-*-*-*-m-*-*-*'':
test_must_fail test-tool wildmatch wildmatch '-adobe-courier-bold-o-normal--12-120-75-75-/-70-iso8859-1' '-*-*-*-*-*-*-12-*-*-*-m-*-*-*'
ok 1463 - wildmatch: no match '-adobe-courier-bold-o-normal--12-120-75-75-/-70-iso8859-1' '-*-*-*-*-*-*-12-*-*-*-m-*-*-*'
expecting success of 3070.1464 'wildmatch (via ls-files): no match '-*-*-*-*-*-*-12-*-*-*-m-*-*-*' '-adobe-courier-bold-o-normal--12-120-75-75-/-70-iso8859-1'':
>expect &&
git --glob-pathspecs ls-files -z -- '-*-*-*-*-*-*-12-*-*-*-m-*-*-*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1464 - wildmatch (via ls-files): no match '-*-*-*-*-*-*-12-*-*-*-m-*-*-*' '-adobe-courier-bold-o-normal--12-120-75-75-/-70-iso8859-1'
expecting success of 3070.1465 'iwildmatch: no match '-adobe-courier-bold-o-normal--12-120-75-75-/-70-iso8859-1' '-*-*-*-*-*-*-12-*-*-*-m-*-*-*'':
test_must_fail test-tool wildmatch iwildmatch '-adobe-courier-bold-o-normal--12-120-75-75-/-70-iso8859-1' '-*-*-*-*-*-*-12-*-*-*-m-*-*-*'
ok 1465 - iwildmatch: no match '-adobe-courier-bold-o-normal--12-120-75-75-/-70-iso8859-1' '-*-*-*-*-*-*-12-*-*-*-m-*-*-*'
expecting success of 3070.1466 'iwildmatch (via ls-files): no match '-*-*-*-*-*-*-12-*-*-*-m-*-*-*' '-adobe-courier-bold-o-normal--12-120-75-75-/-70-iso8859-1'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '-*-*-*-*-*-*-12-*-*-*-m-*-*-*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1466 - iwildmatch (via ls-files): no match '-*-*-*-*-*-*-12-*-*-*-m-*-*-*' '-adobe-courier-bold-o-normal--12-120-75-75-/-70-iso8859-1'
expecting success of 3070.1467 'pathmatch: no match '-adobe-courier-bold-o-normal--12-120-75-75-/-70-iso8859-1' '-*-*-*-*-*-*-12-*-*-*-m-*-*-*'':
test_must_fail test-tool wildmatch pathmatch '-adobe-courier-bold-o-normal--12-120-75-75-/-70-iso8859-1' '-*-*-*-*-*-*-12-*-*-*-m-*-*-*'
ok 1467 - pathmatch: no match '-adobe-courier-bold-o-normal--12-120-75-75-/-70-iso8859-1' '-*-*-*-*-*-*-12-*-*-*-m-*-*-*'
expecting success of 3070.1468 'pathmatch (via ls-files): no match '-*-*-*-*-*-*-12-*-*-*-m-*-*-*' '-adobe-courier-bold-o-normal--12-120-75-75-/-70-iso8859-1'':
>expect &&
git ls-files -z -- '-*-*-*-*-*-*-12-*-*-*-m-*-*-*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1468 - pathmatch (via ls-files): no match '-*-*-*-*-*-*-12-*-*-*-m-*-*-*' '-adobe-courier-bold-o-normal--12-120-75-75-/-70-iso8859-1'
expecting success of 3070.1469 'ipathmatch: no match '-adobe-courier-bold-o-normal--12-120-75-75-/-70-iso8859-1' '-*-*-*-*-*-*-12-*-*-*-m-*-*-*'':
test_must_fail test-tool wildmatch ipathmatch '-adobe-courier-bold-o-normal--12-120-75-75-/-70-iso8859-1' '-*-*-*-*-*-*-12-*-*-*-m-*-*-*'
ok 1469 - ipathmatch: no match '-adobe-courier-bold-o-normal--12-120-75-75-/-70-iso8859-1' '-*-*-*-*-*-*-12-*-*-*-m-*-*-*'
expecting success of 3070.1470 'ipathmatch (via ls-files): no match '-*-*-*-*-*-*-12-*-*-*-m-*-*-*' '-adobe-courier-bold-o-normal--12-120-75-75-/-70-iso8859-1'':
>expect &&
git --icase-pathspecs ls-files -z -- '-*-*-*-*-*-*-12-*-*-*-m-*-*-*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1470 - ipathmatch (via ls-files): no match '-*-*-*-*-*-*-12-*-*-*-m-*-*-*' '-adobe-courier-bold-o-normal--12-120-75-75-/-70-iso8859-1'
expecting success of 3070.1471 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing -adobe-courier-bold-o-normal--12-120-75-75-/
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1471 - cleanup after previous file test
expecting success of 3070.1472 'setup match file test for XXX/adobe/courier/bold/o/normal//12/120/75/75/m/70/iso8859/1':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1472 - setup match file test for XXX/adobe/courier/bold/o/normal//12/120/75/75/m/70/iso8859/1
expecting success of 3070.1473 'wildmatch: match 'XXX/adobe/courier/bold/o/normal//12/120/75/75/m/70/iso8859/1' 'XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*'':
test-tool wildmatch wildmatch 'XXX/adobe/courier/bold/o/normal//12/120/75/75/m/70/iso8859/1' 'XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*'
ok 1473 - wildmatch: match 'XXX/adobe/courier/bold/o/normal//12/120/75/75/m/70/iso8859/1' 'XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*'
checking known breakage of 3070.1474 'wildmatch (via ls-files): match skip 'XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*' 'XXX/adobe/courier/bold/o/normal//12/120/75/75/m/70/iso8859/1'': false
not ok 1474 - wildmatch (via ls-files): match skip 'XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*' 'XXX/adobe/courier/bold/o/normal//12/120/75/75/m/70/iso8859/1' # TODO known breakage
expecting success of 3070.1475 'iwildmatch: match 'XXX/adobe/courier/bold/o/normal//12/120/75/75/m/70/iso8859/1' 'XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*'':
test-tool wildmatch iwildmatch 'XXX/adobe/courier/bold/o/normal//12/120/75/75/m/70/iso8859/1' 'XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*'
ok 1475 - iwildmatch: match 'XXX/adobe/courier/bold/o/normal//12/120/75/75/m/70/iso8859/1' 'XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*'
checking known breakage of 3070.1476 'iwildmatch (via ls-files): match skip 'XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*' 'XXX/adobe/courier/bold/o/normal//12/120/75/75/m/70/iso8859/1'': false
not ok 1476 - iwildmatch (via ls-files): match skip 'XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*' 'XXX/adobe/courier/bold/o/normal//12/120/75/75/m/70/iso8859/1' # TODO known breakage
expecting success of 3070.1477 'pathmatch: match 'XXX/adobe/courier/bold/o/normal//12/120/75/75/m/70/iso8859/1' 'XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*'':
test-tool wildmatch pathmatch 'XXX/adobe/courier/bold/o/normal//12/120/75/75/m/70/iso8859/1' 'XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*'
ok 1477 - pathmatch: match 'XXX/adobe/courier/bold/o/normal//12/120/75/75/m/70/iso8859/1' 'XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*'
checking known breakage of 3070.1478 'pathmatch (via ls-files): match skip 'XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*' 'XXX/adobe/courier/bold/o/normal//12/120/75/75/m/70/iso8859/1'': false
not ok 1478 - pathmatch (via ls-files): match skip 'XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*' 'XXX/adobe/courier/bold/o/normal//12/120/75/75/m/70/iso8859/1' # TODO known breakage
expecting success of 3070.1479 'ipathmatch: match 'XXX/adobe/courier/bold/o/normal//12/120/75/75/m/70/iso8859/1' 'XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*'':
test-tool wildmatch ipathmatch 'XXX/adobe/courier/bold/o/normal//12/120/75/75/m/70/iso8859/1' 'XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*'
ok 1479 - ipathmatch: match 'XXX/adobe/courier/bold/o/normal//12/120/75/75/m/70/iso8859/1' 'XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*'
checking known breakage of 3070.1480 'ipathmatch (via ls-files): match skip 'XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*' 'XXX/adobe/courier/bold/o/normal//12/120/75/75/m/70/iso8859/1'': false
not ok 1480 - ipathmatch (via ls-files): match skip 'XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*' 'XXX/adobe/courier/bold/o/normal//12/120/75/75/m/70/iso8859/1' # TODO known breakage
expecting success of 3070.1481 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
ok 1481 - cleanup after previous file test
expecting success of 3070.1482 'setup match file test for XXX/adobe/courier/bold/o/normal//12/120/75/75/X/70/iso8859/1':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1482 - setup match file test for XXX/adobe/courier/bold/o/normal//12/120/75/75/X/70/iso8859/1
expecting success of 3070.1483 'wildmatch: no match 'XXX/adobe/courier/bold/o/normal//12/120/75/75/X/70/iso8859/1' 'XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*'':
test_must_fail test-tool wildmatch wildmatch 'XXX/adobe/courier/bold/o/normal//12/120/75/75/X/70/iso8859/1' 'XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*'
ok 1483 - wildmatch: no match 'XXX/adobe/courier/bold/o/normal//12/120/75/75/X/70/iso8859/1' 'XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*'
checking known breakage of 3070.1484 'wildmatch (via ls-files): no match skip 'XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*' 'XXX/adobe/courier/bold/o/normal//12/120/75/75/X/70/iso8859/1'': false
not ok 1484 - wildmatch (via ls-files): no match skip 'XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*' 'XXX/adobe/courier/bold/o/normal//12/120/75/75/X/70/iso8859/1' # TODO known breakage
expecting success of 3070.1485 'iwildmatch: no match 'XXX/adobe/courier/bold/o/normal//12/120/75/75/X/70/iso8859/1' 'XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*'':
test_must_fail test-tool wildmatch iwildmatch 'XXX/adobe/courier/bold/o/normal//12/120/75/75/X/70/iso8859/1' 'XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*'
ok 1485 - iwildmatch: no match 'XXX/adobe/courier/bold/o/normal//12/120/75/75/X/70/iso8859/1' 'XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*'
checking known breakage of 3070.1486 'iwildmatch (via ls-files): no match skip 'XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*' 'XXX/adobe/courier/bold/o/normal//12/120/75/75/X/70/iso8859/1'': false
not ok 1486 - iwildmatch (via ls-files): no match skip 'XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*' 'XXX/adobe/courier/bold/o/normal//12/120/75/75/X/70/iso8859/1' # TODO known breakage
expecting success of 3070.1487 'pathmatch: no match 'XXX/adobe/courier/bold/o/normal//12/120/75/75/X/70/iso8859/1' 'XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*'':
test_must_fail test-tool wildmatch pathmatch 'XXX/adobe/courier/bold/o/normal//12/120/75/75/X/70/iso8859/1' 'XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*'
ok 1487 - pathmatch: no match 'XXX/adobe/courier/bold/o/normal//12/120/75/75/X/70/iso8859/1' 'XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*'
checking known breakage of 3070.1488 'pathmatch (via ls-files): no match skip 'XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*' 'XXX/adobe/courier/bold/o/normal//12/120/75/75/X/70/iso8859/1'': false
not ok 1488 - pathmatch (via ls-files): no match skip 'XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*' 'XXX/adobe/courier/bold/o/normal//12/120/75/75/X/70/iso8859/1' # TODO known breakage
expecting success of 3070.1489 'ipathmatch: no match 'XXX/adobe/courier/bold/o/normal//12/120/75/75/X/70/iso8859/1' 'XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*'':
test_must_fail test-tool wildmatch ipathmatch 'XXX/adobe/courier/bold/o/normal//12/120/75/75/X/70/iso8859/1' 'XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*'
ok 1489 - ipathmatch: no match 'XXX/adobe/courier/bold/o/normal//12/120/75/75/X/70/iso8859/1' 'XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*'
checking known breakage of 3070.1490 'ipathmatch (via ls-files): no match skip 'XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*' 'XXX/adobe/courier/bold/o/normal//12/120/75/75/X/70/iso8859/1'': false
not ok 1490 - ipathmatch (via ls-files): no match skip 'XXX/*/*/*/*/*/*/12/*/*/*/m/*/*/*' 'XXX/adobe/courier/bold/o/normal//12/120/75/75/X/70/iso8859/1' # TODO known breakage
expecting success of 3070.1491 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
ok 1491 - cleanup after previous file test
expecting success of 3070.1492 'setup match file test for abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txt':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1492 - setup match file test for abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txt
expecting success of 3070.1493 'wildmatch: match 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txt' '**/*a*b*g*n*t'':
test-tool wildmatch wildmatch 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txt' '**/*a*b*g*n*t'
ok 1493 - wildmatch: match 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txt' '**/*a*b*g*n*t'
expecting success of 3070.1494 'wildmatch (via ls-files): match '**/*a*b*g*n*t' 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txt'':
printf '%s' 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txt' >expect &&
git --glob-pathspecs ls-files -z -- '**/*a*b*g*n*t' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1494 - wildmatch (via ls-files): match '**/*a*b*g*n*t' 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txt'
expecting success of 3070.1495 'iwildmatch: match 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txt' '**/*a*b*g*n*t'':
test-tool wildmatch iwildmatch 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txt' '**/*a*b*g*n*t'
ok 1495 - iwildmatch: match 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txt' '**/*a*b*g*n*t'
expecting success of 3070.1496 'iwildmatch (via ls-files): match '**/*a*b*g*n*t' 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txt'':
printf '%s' 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txt' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '**/*a*b*g*n*t' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1496 - iwildmatch (via ls-files): match '**/*a*b*g*n*t' 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txt'
expecting success of 3070.1497 'pathmatch: match 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txt' '**/*a*b*g*n*t'':
test-tool wildmatch pathmatch 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txt' '**/*a*b*g*n*t'
ok 1497 - pathmatch: match 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txt' '**/*a*b*g*n*t'
expecting success of 3070.1498 'pathmatch (via ls-files): match '**/*a*b*g*n*t' 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txt'':
printf '%s' 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txt' >expect &&
git ls-files -z -- '**/*a*b*g*n*t' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1498 - pathmatch (via ls-files): match '**/*a*b*g*n*t' 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txt'
expecting success of 3070.1499 'ipathmatch: match 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txt' '**/*a*b*g*n*t'':
test-tool wildmatch ipathmatch 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txt' '**/*a*b*g*n*t'
ok 1499 - ipathmatch: match 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txt' '**/*a*b*g*n*t'
expecting success of 3070.1500 'ipathmatch (via ls-files): match '**/*a*b*g*n*t' 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txt'':
printf '%s' 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txt' >expect &&
git --icase-pathspecs ls-files -z -- '**/*a*b*g*n*t' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1500 - ipathmatch (via ls-files): match '**/*a*b*g*n*t' 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txt'
expecting success of 3070.1501 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing abcd/
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1501 - cleanup after previous file test
expecting success of 3070.1502 'setup match file test for abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txtz':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1502 - setup match file test for abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txtz
expecting success of 3070.1503 'wildmatch: no match 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txtz' '**/*a*b*g*n*t'':
test_must_fail test-tool wildmatch wildmatch 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txtz' '**/*a*b*g*n*t'
ok 1503 - wildmatch: no match 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txtz' '**/*a*b*g*n*t'
expecting success of 3070.1504 'wildmatch (via ls-files): no match '**/*a*b*g*n*t' 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txtz'':
>expect &&
git --glob-pathspecs ls-files -z -- '**/*a*b*g*n*t' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1504 - wildmatch (via ls-files): no match '**/*a*b*g*n*t' 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txtz'
expecting success of 3070.1505 'iwildmatch: no match 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txtz' '**/*a*b*g*n*t'':
test_must_fail test-tool wildmatch iwildmatch 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txtz' '**/*a*b*g*n*t'
ok 1505 - iwildmatch: no match 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txtz' '**/*a*b*g*n*t'
expecting success of 3070.1506 'iwildmatch (via ls-files): no match '**/*a*b*g*n*t' 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txtz'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '**/*a*b*g*n*t' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1506 - iwildmatch (via ls-files): no match '**/*a*b*g*n*t' 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txtz'
expecting success of 3070.1507 'pathmatch: no match 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txtz' '**/*a*b*g*n*t'':
test_must_fail test-tool wildmatch pathmatch 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txtz' '**/*a*b*g*n*t'
ok 1507 - pathmatch: no match 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txtz' '**/*a*b*g*n*t'
expecting success of 3070.1508 'pathmatch (via ls-files): no match '**/*a*b*g*n*t' 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txtz'':
>expect &&
git ls-files -z -- '**/*a*b*g*n*t' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1508 - pathmatch (via ls-files): no match '**/*a*b*g*n*t' 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txtz'
expecting success of 3070.1509 'ipathmatch: no match 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txtz' '**/*a*b*g*n*t'':
test_must_fail test-tool wildmatch ipathmatch 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txtz' '**/*a*b*g*n*t'
ok 1509 - ipathmatch: no match 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txtz' '**/*a*b*g*n*t'
expecting success of 3070.1510 'ipathmatch (via ls-files): no match '**/*a*b*g*n*t' 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txtz'':
>expect &&
git --icase-pathspecs ls-files -z -- '**/*a*b*g*n*t' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1510 - ipathmatch (via ls-files): no match '**/*a*b*g*n*t' 'abcd/abcdefg/abcdefghijk/abcdefghijklmnop.txtz'
expecting success of 3070.1511 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing abcd/
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1511 - cleanup after previous file test
expecting success of 3070.1512 'setup match file test for foo':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1512 - setup match file test for foo
expecting success of 3070.1513 'wildmatch: no match 'foo' '*/*/*'':
test_must_fail test-tool wildmatch wildmatch 'foo' '*/*/*'
ok 1513 - wildmatch: no match 'foo' '*/*/*'
expecting success of 3070.1514 'wildmatch (via ls-files): no match '*/*/*' 'foo'':
>expect &&
git --glob-pathspecs ls-files -z -- '*/*/*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1514 - wildmatch (via ls-files): no match '*/*/*' 'foo'
expecting success of 3070.1515 'iwildmatch: no match 'foo' '*/*/*'':
test_must_fail test-tool wildmatch iwildmatch 'foo' '*/*/*'
ok 1515 - iwildmatch: no match 'foo' '*/*/*'
expecting success of 3070.1516 'iwildmatch (via ls-files): no match '*/*/*' 'foo'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '*/*/*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1516 - iwildmatch (via ls-files): no match '*/*/*' 'foo'
expecting success of 3070.1517 'pathmatch: no match 'foo' '*/*/*'':
test_must_fail test-tool wildmatch pathmatch 'foo' '*/*/*'
ok 1517 - pathmatch: no match 'foo' '*/*/*'
expecting success of 3070.1518 'pathmatch (via ls-files): no match '*/*/*' 'foo'':
>expect &&
git ls-files -z -- '*/*/*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1518 - pathmatch (via ls-files): no match '*/*/*' 'foo'
expecting success of 3070.1519 'ipathmatch: no match 'foo' '*/*/*'':
test_must_fail test-tool wildmatch ipathmatch 'foo' '*/*/*'
ok 1519 - ipathmatch: no match 'foo' '*/*/*'
expecting success of 3070.1520 'ipathmatch (via ls-files): no match '*/*/*' 'foo'':
>expect &&
git --icase-pathspecs ls-files -z -- '*/*/*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1520 - ipathmatch (via ls-files): no match '*/*/*' 'foo'
expecting success of 3070.1521 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo
ok 1521 - cleanup after previous file test
expecting success of 3070.1522 'setup match file test for foo/bar':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1522 - setup match file test for foo/bar
expecting success of 3070.1523 'wildmatch: no match 'foo/bar' '*/*/*'':
test_must_fail test-tool wildmatch wildmatch 'foo/bar' '*/*/*'
ok 1523 - wildmatch: no match 'foo/bar' '*/*/*'
expecting success of 3070.1524 'wildmatch (via ls-files): no match '*/*/*' 'foo/bar'':
>expect &&
git --glob-pathspecs ls-files -z -- '*/*/*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1524 - wildmatch (via ls-files): no match '*/*/*' 'foo/bar'
expecting success of 3070.1525 'iwildmatch: no match 'foo/bar' '*/*/*'':
test_must_fail test-tool wildmatch iwildmatch 'foo/bar' '*/*/*'
ok 1525 - iwildmatch: no match 'foo/bar' '*/*/*'
expecting success of 3070.1526 'iwildmatch (via ls-files): no match '*/*/*' 'foo/bar'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '*/*/*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1526 - iwildmatch (via ls-files): no match '*/*/*' 'foo/bar'
expecting success of 3070.1527 'pathmatch: no match 'foo/bar' '*/*/*'':
test_must_fail test-tool wildmatch pathmatch 'foo/bar' '*/*/*'
ok 1527 - pathmatch: no match 'foo/bar' '*/*/*'
expecting success of 3070.1528 'pathmatch (via ls-files): no match '*/*/*' 'foo/bar'':
>expect &&
git ls-files -z -- '*/*/*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1528 - pathmatch (via ls-files): no match '*/*/*' 'foo/bar'
expecting success of 3070.1529 'ipathmatch: no match 'foo/bar' '*/*/*'':
test_must_fail test-tool wildmatch ipathmatch 'foo/bar' '*/*/*'
ok 1529 - ipathmatch: no match 'foo/bar' '*/*/*'
expecting success of 3070.1530 'ipathmatch (via ls-files): no match '*/*/*' 'foo/bar'':
>expect &&
git --icase-pathspecs ls-files -z -- '*/*/*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1530 - ipathmatch (via ls-files): no match '*/*/*' 'foo/bar'
expecting success of 3070.1531 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo/
ok 1531 - cleanup after previous file test
expecting success of 3070.1532 'setup match file test for foo/bba/arr':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1532 - setup match file test for foo/bba/arr
expecting success of 3070.1533 'wildmatch: match 'foo/bba/arr' '*/*/*'':
test-tool wildmatch wildmatch 'foo/bba/arr' '*/*/*'
ok 1533 - wildmatch: match 'foo/bba/arr' '*/*/*'
expecting success of 3070.1534 'wildmatch (via ls-files): match '*/*/*' 'foo/bba/arr'':
printf '%s' 'foo/bba/arr' >expect &&
git --glob-pathspecs ls-files -z -- '*/*/*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1534 - wildmatch (via ls-files): match '*/*/*' 'foo/bba/arr'
expecting success of 3070.1535 'iwildmatch: match 'foo/bba/arr' '*/*/*'':
test-tool wildmatch iwildmatch 'foo/bba/arr' '*/*/*'
ok 1535 - iwildmatch: match 'foo/bba/arr' '*/*/*'
expecting success of 3070.1536 'iwildmatch (via ls-files): match '*/*/*' 'foo/bba/arr'':
printf '%s' 'foo/bba/arr' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '*/*/*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1536 - iwildmatch (via ls-files): match '*/*/*' 'foo/bba/arr'
expecting success of 3070.1537 'pathmatch: match 'foo/bba/arr' '*/*/*'':
test-tool wildmatch pathmatch 'foo/bba/arr' '*/*/*'
ok 1537 - pathmatch: match 'foo/bba/arr' '*/*/*'
expecting success of 3070.1538 'pathmatch (via ls-files): match '*/*/*' 'foo/bba/arr'':
printf '%s' 'foo/bba/arr' >expect &&
git ls-files -z -- '*/*/*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1538 - pathmatch (via ls-files): match '*/*/*' 'foo/bba/arr'
expecting success of 3070.1539 'ipathmatch: match 'foo/bba/arr' '*/*/*'':
test-tool wildmatch ipathmatch 'foo/bba/arr' '*/*/*'
ok 1539 - ipathmatch: match 'foo/bba/arr' '*/*/*'
expecting success of 3070.1540 'ipathmatch (via ls-files): match '*/*/*' 'foo/bba/arr'':
printf '%s' 'foo/bba/arr' >expect &&
git --icase-pathspecs ls-files -z -- '*/*/*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1540 - ipathmatch (via ls-files): match '*/*/*' 'foo/bba/arr'
expecting success of 3070.1541 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo/
ok 1541 - cleanup after previous file test
expecting success of 3070.1542 'setup match file test for foo/bb/aa/rr':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1542 - setup match file test for foo/bb/aa/rr
expecting success of 3070.1543 'wildmatch: no match 'foo/bb/aa/rr' '*/*/*'':
test_must_fail test-tool wildmatch wildmatch 'foo/bb/aa/rr' '*/*/*'
ok 1543 - wildmatch: no match 'foo/bb/aa/rr' '*/*/*'
expecting success of 3070.1544 'wildmatch (via ls-files): no match '*/*/*' 'foo/bb/aa/rr'':
>expect &&
git --glob-pathspecs ls-files -z -- '*/*/*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1544 - wildmatch (via ls-files): no match '*/*/*' 'foo/bb/aa/rr'
expecting success of 3070.1545 'iwildmatch: no match 'foo/bb/aa/rr' '*/*/*'':
test_must_fail test-tool wildmatch iwildmatch 'foo/bb/aa/rr' '*/*/*'
ok 1545 - iwildmatch: no match 'foo/bb/aa/rr' '*/*/*'
expecting success of 3070.1546 'iwildmatch (via ls-files): no match '*/*/*' 'foo/bb/aa/rr'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '*/*/*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1546 - iwildmatch (via ls-files): no match '*/*/*' 'foo/bb/aa/rr'
expecting success of 3070.1547 'pathmatch: match 'foo/bb/aa/rr' '*/*/*'':
test-tool wildmatch pathmatch 'foo/bb/aa/rr' '*/*/*'
ok 1547 - pathmatch: match 'foo/bb/aa/rr' '*/*/*'
expecting success of 3070.1548 'pathmatch (via ls-files): match '*/*/*' 'foo/bb/aa/rr'':
printf '%s' 'foo/bb/aa/rr' >expect &&
git ls-files -z -- '*/*/*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1548 - pathmatch (via ls-files): match '*/*/*' 'foo/bb/aa/rr'
expecting success of 3070.1549 'ipathmatch: match 'foo/bb/aa/rr' '*/*/*'':
test-tool wildmatch ipathmatch 'foo/bb/aa/rr' '*/*/*'
ok 1549 - ipathmatch: match 'foo/bb/aa/rr' '*/*/*'
expecting success of 3070.1550 'ipathmatch (via ls-files): match '*/*/*' 'foo/bb/aa/rr'':
printf '%s' 'foo/bb/aa/rr' >expect &&
git --icase-pathspecs ls-files -z -- '*/*/*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1550 - ipathmatch (via ls-files): match '*/*/*' 'foo/bb/aa/rr'
expecting success of 3070.1551 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo/
ok 1551 - cleanup after previous file test
expecting success of 3070.1552 'setup match file test for foo/bb/aa/rr':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1552 - setup match file test for foo/bb/aa/rr
expecting success of 3070.1553 'wildmatch: match 'foo/bb/aa/rr' '**/**/**'':
test-tool wildmatch wildmatch 'foo/bb/aa/rr' '**/**/**'
ok 1553 - wildmatch: match 'foo/bb/aa/rr' '**/**/**'
expecting success of 3070.1554 'wildmatch (via ls-files): match '**/**/**' 'foo/bb/aa/rr'':
printf '%s' 'foo/bb/aa/rr' >expect &&
git --glob-pathspecs ls-files -z -- '**/**/**' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1554 - wildmatch (via ls-files): match '**/**/**' 'foo/bb/aa/rr'
expecting success of 3070.1555 'iwildmatch: match 'foo/bb/aa/rr' '**/**/**'':
test-tool wildmatch iwildmatch 'foo/bb/aa/rr' '**/**/**'
ok 1555 - iwildmatch: match 'foo/bb/aa/rr' '**/**/**'
expecting success of 3070.1556 'iwildmatch (via ls-files): match '**/**/**' 'foo/bb/aa/rr'':
printf '%s' 'foo/bb/aa/rr' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '**/**/**' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1556 - iwildmatch (via ls-files): match '**/**/**' 'foo/bb/aa/rr'
expecting success of 3070.1557 'pathmatch: match 'foo/bb/aa/rr' '**/**/**'':
test-tool wildmatch pathmatch 'foo/bb/aa/rr' '**/**/**'
ok 1557 - pathmatch: match 'foo/bb/aa/rr' '**/**/**'
expecting success of 3070.1558 'pathmatch (via ls-files): match '**/**/**' 'foo/bb/aa/rr'':
printf '%s' 'foo/bb/aa/rr' >expect &&
git ls-files -z -- '**/**/**' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1558 - pathmatch (via ls-files): match '**/**/**' 'foo/bb/aa/rr'
expecting success of 3070.1559 'ipathmatch: match 'foo/bb/aa/rr' '**/**/**'':
test-tool wildmatch ipathmatch 'foo/bb/aa/rr' '**/**/**'
ok 1559 - ipathmatch: match 'foo/bb/aa/rr' '**/**/**'
expecting success of 3070.1560 'ipathmatch (via ls-files): match '**/**/**' 'foo/bb/aa/rr'':
printf '%s' 'foo/bb/aa/rr' >expect &&
git --icase-pathspecs ls-files -z -- '**/**/**' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1560 - ipathmatch (via ls-files): match '**/**/**' 'foo/bb/aa/rr'
expecting success of 3070.1561 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo/
ok 1561 - cleanup after previous file test
expecting success of 3070.1562 'setup match file test for abcXdefXghi':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1562 - setup match file test for abcXdefXghi
expecting success of 3070.1563 'wildmatch: match 'abcXdefXghi' '*X*i'':
test-tool wildmatch wildmatch 'abcXdefXghi' '*X*i'
ok 1563 - wildmatch: match 'abcXdefXghi' '*X*i'
expecting success of 3070.1564 'wildmatch (via ls-files): match '*X*i' 'abcXdefXghi'':
printf '%s' 'abcXdefXghi' >expect &&
git --glob-pathspecs ls-files -z -- '*X*i' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1564 - wildmatch (via ls-files): match '*X*i' 'abcXdefXghi'
expecting success of 3070.1565 'iwildmatch: match 'abcXdefXghi' '*X*i'':
test-tool wildmatch iwildmatch 'abcXdefXghi' '*X*i'
ok 1565 - iwildmatch: match 'abcXdefXghi' '*X*i'
expecting success of 3070.1566 'iwildmatch (via ls-files): match '*X*i' 'abcXdefXghi'':
printf '%s' 'abcXdefXghi' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '*X*i' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1566 - iwildmatch (via ls-files): match '*X*i' 'abcXdefXghi'
expecting success of 3070.1567 'pathmatch: match 'abcXdefXghi' '*X*i'':
test-tool wildmatch pathmatch 'abcXdefXghi' '*X*i'
ok 1567 - pathmatch: match 'abcXdefXghi' '*X*i'
expecting success of 3070.1568 'pathmatch (via ls-files): match '*X*i' 'abcXdefXghi'':
printf '%s' 'abcXdefXghi' >expect &&
git ls-files -z -- '*X*i' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1568 - pathmatch (via ls-files): match '*X*i' 'abcXdefXghi'
expecting success of 3070.1569 'ipathmatch: match 'abcXdefXghi' '*X*i'':
test-tool wildmatch ipathmatch 'abcXdefXghi' '*X*i'
ok 1569 - ipathmatch: match 'abcXdefXghi' '*X*i'
expecting success of 3070.1570 'ipathmatch (via ls-files): match '*X*i' 'abcXdefXghi'':
printf '%s' 'abcXdefXghi' >expect &&
git --icase-pathspecs ls-files -z -- '*X*i' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1570 - ipathmatch (via ls-files): match '*X*i' 'abcXdefXghi'
expecting success of 3070.1571 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing abcXdefXghi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1571 - cleanup after previous file test
expecting success of 3070.1572 'setup match file test for ab/cXd/efXg/hi':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1572 - setup match file test for ab/cXd/efXg/hi
expecting success of 3070.1573 'wildmatch: no match 'ab/cXd/efXg/hi' '*X*i'':
test_must_fail test-tool wildmatch wildmatch 'ab/cXd/efXg/hi' '*X*i'
ok 1573 - wildmatch: no match 'ab/cXd/efXg/hi' '*X*i'
expecting success of 3070.1574 'wildmatch (via ls-files): no match '*X*i' 'ab/cXd/efXg/hi'':
>expect &&
git --glob-pathspecs ls-files -z -- '*X*i' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1574 - wildmatch (via ls-files): no match '*X*i' 'ab/cXd/efXg/hi'
expecting success of 3070.1575 'iwildmatch: no match 'ab/cXd/efXg/hi' '*X*i'':
test_must_fail test-tool wildmatch iwildmatch 'ab/cXd/efXg/hi' '*X*i'
ok 1575 - iwildmatch: no match 'ab/cXd/efXg/hi' '*X*i'
expecting success of 3070.1576 'iwildmatch (via ls-files): no match '*X*i' 'ab/cXd/efXg/hi'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '*X*i' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1576 - iwildmatch (via ls-files): no match '*X*i' 'ab/cXd/efXg/hi'
expecting success of 3070.1577 'pathmatch: match 'ab/cXd/efXg/hi' '*X*i'':
test-tool wildmatch pathmatch 'ab/cXd/efXg/hi' '*X*i'
ok 1577 - pathmatch: match 'ab/cXd/efXg/hi' '*X*i'
expecting success of 3070.1578 'pathmatch (via ls-files): match '*X*i' 'ab/cXd/efXg/hi'':
printf '%s' 'ab/cXd/efXg/hi' >expect &&
git ls-files -z -- '*X*i' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1578 - pathmatch (via ls-files): match '*X*i' 'ab/cXd/efXg/hi'
expecting success of 3070.1579 'ipathmatch: match 'ab/cXd/efXg/hi' '*X*i'':
test-tool wildmatch ipathmatch 'ab/cXd/efXg/hi' '*X*i'
ok 1579 - ipathmatch: match 'ab/cXd/efXg/hi' '*X*i'
expecting success of 3070.1580 'ipathmatch (via ls-files): match '*X*i' 'ab/cXd/efXg/hi'':
printf '%s' 'ab/cXd/efXg/hi' >expect &&
git --icase-pathspecs ls-files -z -- '*X*i' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1580 - ipathmatch (via ls-files): match '*X*i' 'ab/cXd/efXg/hi'
expecting success of 3070.1581 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing ab/
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1581 - cleanup after previous file test
expecting success of 3070.1582 'setup match file test for ab/cXd/efXg/hi':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1582 - setup match file test for ab/cXd/efXg/hi
expecting success of 3070.1583 'wildmatch: match 'ab/cXd/efXg/hi' '*/*X*/*/*i'':
test-tool wildmatch wildmatch 'ab/cXd/efXg/hi' '*/*X*/*/*i'
ok 1583 - wildmatch: match 'ab/cXd/efXg/hi' '*/*X*/*/*i'
expecting success of 3070.1584 'wildmatch (via ls-files): match '*/*X*/*/*i' 'ab/cXd/efXg/hi'':
printf '%s' 'ab/cXd/efXg/hi' >expect &&
git --glob-pathspecs ls-files -z -- '*/*X*/*/*i' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1584 - wildmatch (via ls-files): match '*/*X*/*/*i' 'ab/cXd/efXg/hi'
expecting success of 3070.1585 'iwildmatch: match 'ab/cXd/efXg/hi' '*/*X*/*/*i'':
test-tool wildmatch iwildmatch 'ab/cXd/efXg/hi' '*/*X*/*/*i'
ok 1585 - iwildmatch: match 'ab/cXd/efXg/hi' '*/*X*/*/*i'
expecting success of 3070.1586 'iwildmatch (via ls-files): match '*/*X*/*/*i' 'ab/cXd/efXg/hi'':
printf '%s' 'ab/cXd/efXg/hi' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '*/*X*/*/*i' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1586 - iwildmatch (via ls-files): match '*/*X*/*/*i' 'ab/cXd/efXg/hi'
expecting success of 3070.1587 'pathmatch: match 'ab/cXd/efXg/hi' '*/*X*/*/*i'':
test-tool wildmatch pathmatch 'ab/cXd/efXg/hi' '*/*X*/*/*i'
ok 1587 - pathmatch: match 'ab/cXd/efXg/hi' '*/*X*/*/*i'
expecting success of 3070.1588 'pathmatch (via ls-files): match '*/*X*/*/*i' 'ab/cXd/efXg/hi'':
printf '%s' 'ab/cXd/efXg/hi' >expect &&
git ls-files -z -- '*/*X*/*/*i' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1588 - pathmatch (via ls-files): match '*/*X*/*/*i' 'ab/cXd/efXg/hi'
expecting success of 3070.1589 'ipathmatch: match 'ab/cXd/efXg/hi' '*/*X*/*/*i'':
test-tool wildmatch ipathmatch 'ab/cXd/efXg/hi' '*/*X*/*/*i'
ok 1589 - ipathmatch: match 'ab/cXd/efXg/hi' '*/*X*/*/*i'
expecting success of 3070.1590 'ipathmatch (via ls-files): match '*/*X*/*/*i' 'ab/cXd/efXg/hi'':
printf '%s' 'ab/cXd/efXg/hi' >expect &&
git --icase-pathspecs ls-files -z -- '*/*X*/*/*i' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1590 - ipathmatch (via ls-files): match '*/*X*/*/*i' 'ab/cXd/efXg/hi'
expecting success of 3070.1591 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing ab/
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1591 - cleanup after previous file test
expecting success of 3070.1592 'setup match file test for ab/cXd/efXg/hi':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1592 - setup match file test for ab/cXd/efXg/hi
expecting success of 3070.1593 'wildmatch: match 'ab/cXd/efXg/hi' '**/*X*/**/*i'':
test-tool wildmatch wildmatch 'ab/cXd/efXg/hi' '**/*X*/**/*i'
ok 1593 - wildmatch: match 'ab/cXd/efXg/hi' '**/*X*/**/*i'
expecting success of 3070.1594 'wildmatch (via ls-files): match '**/*X*/**/*i' 'ab/cXd/efXg/hi'':
printf '%s' 'ab/cXd/efXg/hi' >expect &&
git --glob-pathspecs ls-files -z -- '**/*X*/**/*i' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1594 - wildmatch (via ls-files): match '**/*X*/**/*i' 'ab/cXd/efXg/hi'
expecting success of 3070.1595 'iwildmatch: match 'ab/cXd/efXg/hi' '**/*X*/**/*i'':
test-tool wildmatch iwildmatch 'ab/cXd/efXg/hi' '**/*X*/**/*i'
ok 1595 - iwildmatch: match 'ab/cXd/efXg/hi' '**/*X*/**/*i'
expecting success of 3070.1596 'iwildmatch (via ls-files): match '**/*X*/**/*i' 'ab/cXd/efXg/hi'':
printf '%s' 'ab/cXd/efXg/hi' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '**/*X*/**/*i' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1596 - iwildmatch (via ls-files): match '**/*X*/**/*i' 'ab/cXd/efXg/hi'
expecting success of 3070.1597 'pathmatch: match 'ab/cXd/efXg/hi' '**/*X*/**/*i'':
test-tool wildmatch pathmatch 'ab/cXd/efXg/hi' '**/*X*/**/*i'
ok 1597 - pathmatch: match 'ab/cXd/efXg/hi' '**/*X*/**/*i'
expecting success of 3070.1598 'pathmatch (via ls-files): match '**/*X*/**/*i' 'ab/cXd/efXg/hi'':
printf '%s' 'ab/cXd/efXg/hi' >expect &&
git ls-files -z -- '**/*X*/**/*i' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1598 - pathmatch (via ls-files): match '**/*X*/**/*i' 'ab/cXd/efXg/hi'
expecting success of 3070.1599 'ipathmatch: match 'ab/cXd/efXg/hi' '**/*X*/**/*i'':
test-tool wildmatch ipathmatch 'ab/cXd/efXg/hi' '**/*X*/**/*i'
ok 1599 - ipathmatch: match 'ab/cXd/efXg/hi' '**/*X*/**/*i'
expecting success of 3070.1600 'ipathmatch (via ls-files): match '**/*X*/**/*i' 'ab/cXd/efXg/hi'':
printf '%s' 'ab/cXd/efXg/hi' >expect &&
git --icase-pathspecs ls-files -z -- '**/*X*/**/*i' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1600 - ipathmatch (via ls-files): match '**/*X*/**/*i' 'ab/cXd/efXg/hi'
expecting success of 3070.1601 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing ab/
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1601 - cleanup after previous file test
expecting success of 3070.1602 'setup match file test for foo':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1602 - setup match file test for foo
expecting success of 3070.1603 'wildmatch: no match 'foo' 'fo'':
test_must_fail test-tool wildmatch wildmatch 'foo' 'fo'
ok 1603 - wildmatch: no match 'foo' 'fo'
expecting success of 3070.1604 'wildmatch (via ls-files): no match 'fo' 'foo'':
>expect &&
git --glob-pathspecs ls-files -z -- 'fo' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1604 - wildmatch (via ls-files): no match 'fo' 'foo'
expecting success of 3070.1605 'iwildmatch: no match 'foo' 'fo'':
test_must_fail test-tool wildmatch iwildmatch 'foo' 'fo'
ok 1605 - iwildmatch: no match 'foo' 'fo'
expecting success of 3070.1606 'iwildmatch (via ls-files): no match 'fo' 'foo'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'fo' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1606 - iwildmatch (via ls-files): no match 'fo' 'foo'
expecting success of 3070.1607 'pathmatch: no match 'foo' 'fo'':
test_must_fail test-tool wildmatch pathmatch 'foo' 'fo'
ok 1607 - pathmatch: no match 'foo' 'fo'
expecting success of 3070.1608 'pathmatch (via ls-files): no match 'fo' 'foo'':
>expect &&
git ls-files -z -- 'fo' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1608 - pathmatch (via ls-files): no match 'fo' 'foo'
expecting success of 3070.1609 'ipathmatch: no match 'foo' 'fo'':
test_must_fail test-tool wildmatch ipathmatch 'foo' 'fo'
ok 1609 - ipathmatch: no match 'foo' 'fo'
expecting success of 3070.1610 'ipathmatch (via ls-files): no match 'fo' 'foo'':
>expect &&
git --icase-pathspecs ls-files -z -- 'fo' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1610 - ipathmatch (via ls-files): no match 'fo' 'foo'
expecting success of 3070.1611 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo
ok 1611 - cleanup after previous file test
expecting success of 3070.1612 'setup match file test for foo/bar':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1612 - setup match file test for foo/bar
expecting success of 3070.1613 'wildmatch: match 'foo/bar' 'foo/bar'':
test-tool wildmatch wildmatch 'foo/bar' 'foo/bar'
ok 1613 - wildmatch: match 'foo/bar' 'foo/bar'
expecting success of 3070.1614 'wildmatch (via ls-files): match 'foo/bar' 'foo/bar'':
printf '%s' 'foo/bar' >expect &&
git --glob-pathspecs ls-files -z -- 'foo/bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1614 - wildmatch (via ls-files): match 'foo/bar' 'foo/bar'
expecting success of 3070.1615 'iwildmatch: match 'foo/bar' 'foo/bar'':
test-tool wildmatch iwildmatch 'foo/bar' 'foo/bar'
ok 1615 - iwildmatch: match 'foo/bar' 'foo/bar'
expecting success of 3070.1616 'iwildmatch (via ls-files): match 'foo/bar' 'foo/bar'':
printf '%s' 'foo/bar' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'foo/bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1616 - iwildmatch (via ls-files): match 'foo/bar' 'foo/bar'
expecting success of 3070.1617 'pathmatch: match 'foo/bar' 'foo/bar'':
test-tool wildmatch pathmatch 'foo/bar' 'foo/bar'
ok 1617 - pathmatch: match 'foo/bar' 'foo/bar'
expecting success of 3070.1618 'pathmatch (via ls-files): match 'foo/bar' 'foo/bar'':
printf '%s' 'foo/bar' >expect &&
git ls-files -z -- 'foo/bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1618 - pathmatch (via ls-files): match 'foo/bar' 'foo/bar'
expecting success of 3070.1619 'ipathmatch: match 'foo/bar' 'foo/bar'':
test-tool wildmatch ipathmatch 'foo/bar' 'foo/bar'
ok 1619 - ipathmatch: match 'foo/bar' 'foo/bar'
expecting success of 3070.1620 'ipathmatch (via ls-files): match 'foo/bar' 'foo/bar'':
printf '%s' 'foo/bar' >expect &&
git --icase-pathspecs ls-files -z -- 'foo/bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1620 - ipathmatch (via ls-files): match 'foo/bar' 'foo/bar'
expecting success of 3070.1621 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo/
ok 1621 - cleanup after previous file test
expecting success of 3070.1622 'setup match file test for foo/bar':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1622 - setup match file test for foo/bar
expecting success of 3070.1623 'wildmatch: match 'foo/bar' 'foo/*'':
test-tool wildmatch wildmatch 'foo/bar' 'foo/*'
ok 1623 - wildmatch: match 'foo/bar' 'foo/*'
expecting success of 3070.1624 'wildmatch (via ls-files): match 'foo/*' 'foo/bar'':
printf '%s' 'foo/bar' >expect &&
git --glob-pathspecs ls-files -z -- 'foo/*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1624 - wildmatch (via ls-files): match 'foo/*' 'foo/bar'
expecting success of 3070.1625 'iwildmatch: match 'foo/bar' 'foo/*'':
test-tool wildmatch iwildmatch 'foo/bar' 'foo/*'
ok 1625 - iwildmatch: match 'foo/bar' 'foo/*'
expecting success of 3070.1626 'iwildmatch (via ls-files): match 'foo/*' 'foo/bar'':
printf '%s' 'foo/bar' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'foo/*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1626 - iwildmatch (via ls-files): match 'foo/*' 'foo/bar'
expecting success of 3070.1627 'pathmatch: match 'foo/bar' 'foo/*'':
test-tool wildmatch pathmatch 'foo/bar' 'foo/*'
ok 1627 - pathmatch: match 'foo/bar' 'foo/*'
expecting success of 3070.1628 'pathmatch (via ls-files): match 'foo/*' 'foo/bar'':
printf '%s' 'foo/bar' >expect &&
git ls-files -z -- 'foo/*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1628 - pathmatch (via ls-files): match 'foo/*' 'foo/bar'
expecting success of 3070.1629 'ipathmatch: match 'foo/bar' 'foo/*'':
test-tool wildmatch ipathmatch 'foo/bar' 'foo/*'
ok 1629 - ipathmatch: match 'foo/bar' 'foo/*'
expecting success of 3070.1630 'ipathmatch (via ls-files): match 'foo/*' 'foo/bar'':
printf '%s' 'foo/bar' >expect &&
git --icase-pathspecs ls-files -z -- 'foo/*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1630 - ipathmatch (via ls-files): match 'foo/*' 'foo/bar'
expecting success of 3070.1631 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo/
ok 1631 - cleanup after previous file test
expecting success of 3070.1632 'setup match file test for foo/bba/arr':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1632 - setup match file test for foo/bba/arr
expecting success of 3070.1633 'wildmatch: no match 'foo/bba/arr' 'foo/*'':
test_must_fail test-tool wildmatch wildmatch 'foo/bba/arr' 'foo/*'
ok 1633 - wildmatch: no match 'foo/bba/arr' 'foo/*'
expecting success of 3070.1634 'wildmatch (via ls-files): no match 'foo/*' 'foo/bba/arr'':
>expect &&
git --glob-pathspecs ls-files -z -- 'foo/*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1634 - wildmatch (via ls-files): no match 'foo/*' 'foo/bba/arr'
expecting success of 3070.1635 'iwildmatch: no match 'foo/bba/arr' 'foo/*'':
test_must_fail test-tool wildmatch iwildmatch 'foo/bba/arr' 'foo/*'
ok 1635 - iwildmatch: no match 'foo/bba/arr' 'foo/*'
expecting success of 3070.1636 'iwildmatch (via ls-files): no match 'foo/*' 'foo/bba/arr'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'foo/*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1636 - iwildmatch (via ls-files): no match 'foo/*' 'foo/bba/arr'
expecting success of 3070.1637 'pathmatch: match 'foo/bba/arr' 'foo/*'':
test-tool wildmatch pathmatch 'foo/bba/arr' 'foo/*'
ok 1637 - pathmatch: match 'foo/bba/arr' 'foo/*'
expecting success of 3070.1638 'pathmatch (via ls-files): match 'foo/*' 'foo/bba/arr'':
printf '%s' 'foo/bba/arr' >expect &&
git ls-files -z -- 'foo/*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1638 - pathmatch (via ls-files): match 'foo/*' 'foo/bba/arr'
expecting success of 3070.1639 'ipathmatch: match 'foo/bba/arr' 'foo/*'':
test-tool wildmatch ipathmatch 'foo/bba/arr' 'foo/*'
ok 1639 - ipathmatch: match 'foo/bba/arr' 'foo/*'
expecting success of 3070.1640 'ipathmatch (via ls-files): match 'foo/*' 'foo/bba/arr'':
printf '%s' 'foo/bba/arr' >expect &&
git --icase-pathspecs ls-files -z -- 'foo/*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1640 - ipathmatch (via ls-files): match 'foo/*' 'foo/bba/arr'
expecting success of 3070.1641 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo/
ok 1641 - cleanup after previous file test
expecting success of 3070.1642 'setup match file test for foo/bba/arr':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1642 - setup match file test for foo/bba/arr
expecting success of 3070.1643 'wildmatch: match 'foo/bba/arr' 'foo/**'':
test-tool wildmatch wildmatch 'foo/bba/arr' 'foo/**'
ok 1643 - wildmatch: match 'foo/bba/arr' 'foo/**'
expecting success of 3070.1644 'wildmatch (via ls-files): match 'foo/**' 'foo/bba/arr'':
printf '%s' 'foo/bba/arr' >expect &&
git --glob-pathspecs ls-files -z -- 'foo/**' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1644 - wildmatch (via ls-files): match 'foo/**' 'foo/bba/arr'
expecting success of 3070.1645 'iwildmatch: match 'foo/bba/arr' 'foo/**'':
test-tool wildmatch iwildmatch 'foo/bba/arr' 'foo/**'
ok 1645 - iwildmatch: match 'foo/bba/arr' 'foo/**'
expecting success of 3070.1646 'iwildmatch (via ls-files): match 'foo/**' 'foo/bba/arr'':
printf '%s' 'foo/bba/arr' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'foo/**' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1646 - iwildmatch (via ls-files): match 'foo/**' 'foo/bba/arr'
expecting success of 3070.1647 'pathmatch: match 'foo/bba/arr' 'foo/**'':
test-tool wildmatch pathmatch 'foo/bba/arr' 'foo/**'
ok 1647 - pathmatch: match 'foo/bba/arr' 'foo/**'
expecting success of 3070.1648 'pathmatch (via ls-files): match 'foo/**' 'foo/bba/arr'':
printf '%s' 'foo/bba/arr' >expect &&
git ls-files -z -- 'foo/**' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1648 - pathmatch (via ls-files): match 'foo/**' 'foo/bba/arr'
expecting success of 3070.1649 'ipathmatch: match 'foo/bba/arr' 'foo/**'':
test-tool wildmatch ipathmatch 'foo/bba/arr' 'foo/**'
ok 1649 - ipathmatch: match 'foo/bba/arr' 'foo/**'
expecting success of 3070.1650 'ipathmatch (via ls-files): match 'foo/**' 'foo/bba/arr'':
printf '%s' 'foo/bba/arr' >expect &&
git --icase-pathspecs ls-files -z -- 'foo/**' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1650 - ipathmatch (via ls-files): match 'foo/**' 'foo/bba/arr'
expecting success of 3070.1651 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo/
ok 1651 - cleanup after previous file test
expecting success of 3070.1652 'setup match file test for foo/bba/arr':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1652 - setup match file test for foo/bba/arr
expecting success of 3070.1653 'wildmatch: no match 'foo/bba/arr' 'foo*'':
test_must_fail test-tool wildmatch wildmatch 'foo/bba/arr' 'foo*'
ok 1653 - wildmatch: no match 'foo/bba/arr' 'foo*'
expecting success of 3070.1654 'wildmatch (via ls-files): no match 'foo*' 'foo/bba/arr'':
>expect &&
git --glob-pathspecs ls-files -z -- 'foo*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1654 - wildmatch (via ls-files): no match 'foo*' 'foo/bba/arr'
expecting success of 3070.1655 'iwildmatch: no match 'foo/bba/arr' 'foo*'':
test_must_fail test-tool wildmatch iwildmatch 'foo/bba/arr' 'foo*'
ok 1655 - iwildmatch: no match 'foo/bba/arr' 'foo*'
expecting success of 3070.1656 'iwildmatch (via ls-files): no match 'foo*' 'foo/bba/arr'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'foo*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1656 - iwildmatch (via ls-files): no match 'foo*' 'foo/bba/arr'
expecting success of 3070.1657 'pathmatch: match 'foo/bba/arr' 'foo*'':
test-tool wildmatch pathmatch 'foo/bba/arr' 'foo*'
ok 1657 - pathmatch: match 'foo/bba/arr' 'foo*'
expecting success of 3070.1658 'pathmatch (via ls-files): match 'foo*' 'foo/bba/arr'':
printf '%s' 'foo/bba/arr' >expect &&
git ls-files -z -- 'foo*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1658 - pathmatch (via ls-files): match 'foo*' 'foo/bba/arr'
expecting success of 3070.1659 'ipathmatch: match 'foo/bba/arr' 'foo*'':
test-tool wildmatch ipathmatch 'foo/bba/arr' 'foo*'
ok 1659 - ipathmatch: match 'foo/bba/arr' 'foo*'
expecting success of 3070.1660 'ipathmatch (via ls-files): match 'foo*' 'foo/bba/arr'':
printf '%s' 'foo/bba/arr' >expect &&
git --icase-pathspecs ls-files -z -- 'foo*' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1660 - ipathmatch (via ls-files): match 'foo*' 'foo/bba/arr'
expecting success of 3070.1661 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo/
ok 1661 - cleanup after previous file test
expecting success of 3070.1662 'setup match file test for foo/bba/arr':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1662 - setup match file test for foo/bba/arr
expecting success of 3070.1663 'wildmatch: no match 'foo/bba/arr' 'foo**'':
test_must_fail test-tool wildmatch wildmatch 'foo/bba/arr' 'foo**'
ok 1663 - wildmatch: no match 'foo/bba/arr' 'foo**'
expecting success of 3070.1664 'wildmatch (via ls-files): match 'foo**' 'foo/bba/arr'':
printf '%s' 'foo/bba/arr' >expect &&
git --glob-pathspecs ls-files -z -- 'foo**' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1664 - wildmatch (via ls-files): match 'foo**' 'foo/bba/arr'
expecting success of 3070.1665 'iwildmatch: no match 'foo/bba/arr' 'foo**'':
test_must_fail test-tool wildmatch iwildmatch 'foo/bba/arr' 'foo**'
ok 1665 - iwildmatch: no match 'foo/bba/arr' 'foo**'
expecting success of 3070.1666 'iwildmatch (via ls-files): match 'foo**' 'foo/bba/arr'':
printf '%s' 'foo/bba/arr' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'foo**' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1666 - iwildmatch (via ls-files): match 'foo**' 'foo/bba/arr'
expecting success of 3070.1667 'pathmatch: match 'foo/bba/arr' 'foo**'':
test-tool wildmatch pathmatch 'foo/bba/arr' 'foo**'
ok 1667 - pathmatch: match 'foo/bba/arr' 'foo**'
expecting success of 3070.1668 'pathmatch (via ls-files): match 'foo**' 'foo/bba/arr'':
printf '%s' 'foo/bba/arr' >expect &&
git ls-files -z -- 'foo**' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1668 - pathmatch (via ls-files): match 'foo**' 'foo/bba/arr'
expecting success of 3070.1669 'ipathmatch: match 'foo/bba/arr' 'foo**'':
test-tool wildmatch ipathmatch 'foo/bba/arr' 'foo**'
ok 1669 - ipathmatch: match 'foo/bba/arr' 'foo**'
expecting success of 3070.1670 'ipathmatch (via ls-files): match 'foo**' 'foo/bba/arr'':
printf '%s' 'foo/bba/arr' >expect &&
git --icase-pathspecs ls-files -z -- 'foo**' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1670 - ipathmatch (via ls-files): match 'foo**' 'foo/bba/arr'
expecting success of 3070.1671 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo/
ok 1671 - cleanup after previous file test
expecting success of 3070.1672 'setup match file test for foo/bba/arr':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1672 - setup match file test for foo/bba/arr
expecting success of 3070.1673 'wildmatch: no match 'foo/bba/arr' 'foo/*arr'':
test_must_fail test-tool wildmatch wildmatch 'foo/bba/arr' 'foo/*arr'
ok 1673 - wildmatch: no match 'foo/bba/arr' 'foo/*arr'
expecting success of 3070.1674 'wildmatch (via ls-files): no match 'foo/*arr' 'foo/bba/arr'':
>expect &&
git --glob-pathspecs ls-files -z -- 'foo/*arr' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1674 - wildmatch (via ls-files): no match 'foo/*arr' 'foo/bba/arr'
expecting success of 3070.1675 'iwildmatch: no match 'foo/bba/arr' 'foo/*arr'':
test_must_fail test-tool wildmatch iwildmatch 'foo/bba/arr' 'foo/*arr'
ok 1675 - iwildmatch: no match 'foo/bba/arr' 'foo/*arr'
expecting success of 3070.1676 'iwildmatch (via ls-files): no match 'foo/*arr' 'foo/bba/arr'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'foo/*arr' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1676 - iwildmatch (via ls-files): no match 'foo/*arr' 'foo/bba/arr'
expecting success of 3070.1677 'pathmatch: match 'foo/bba/arr' 'foo/*arr'':
test-tool wildmatch pathmatch 'foo/bba/arr' 'foo/*arr'
ok 1677 - pathmatch: match 'foo/bba/arr' 'foo/*arr'
expecting success of 3070.1678 'pathmatch (via ls-files): match 'foo/*arr' 'foo/bba/arr'':
printf '%s' 'foo/bba/arr' >expect &&
git ls-files -z -- 'foo/*arr' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1678 - pathmatch (via ls-files): match 'foo/*arr' 'foo/bba/arr'
expecting success of 3070.1679 'ipathmatch: match 'foo/bba/arr' 'foo/*arr'':
test-tool wildmatch ipathmatch 'foo/bba/arr' 'foo/*arr'
ok 1679 - ipathmatch: match 'foo/bba/arr' 'foo/*arr'
expecting success of 3070.1680 'ipathmatch (via ls-files): match 'foo/*arr' 'foo/bba/arr'':
printf '%s' 'foo/bba/arr' >expect &&
git --icase-pathspecs ls-files -z -- 'foo/*arr' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1680 - ipathmatch (via ls-files): match 'foo/*arr' 'foo/bba/arr'
expecting success of 3070.1681 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo/
ok 1681 - cleanup after previous file test
expecting success of 3070.1682 'setup match file test for foo/bba/arr':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1682 - setup match file test for foo/bba/arr
expecting success of 3070.1683 'wildmatch: no match 'foo/bba/arr' 'foo/**arr'':
test_must_fail test-tool wildmatch wildmatch 'foo/bba/arr' 'foo/**arr'
ok 1683 - wildmatch: no match 'foo/bba/arr' 'foo/**arr'
expecting success of 3070.1684 'wildmatch (via ls-files): no match 'foo/**arr' 'foo/bba/arr'':
>expect &&
git --glob-pathspecs ls-files -z -- 'foo/**arr' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1684 - wildmatch (via ls-files): no match 'foo/**arr' 'foo/bba/arr'
expecting success of 3070.1685 'iwildmatch: no match 'foo/bba/arr' 'foo/**arr'':
test_must_fail test-tool wildmatch iwildmatch 'foo/bba/arr' 'foo/**arr'
ok 1685 - iwildmatch: no match 'foo/bba/arr' 'foo/**arr'
expecting success of 3070.1686 'iwildmatch (via ls-files): no match 'foo/**arr' 'foo/bba/arr'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'foo/**arr' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1686 - iwildmatch (via ls-files): no match 'foo/**arr' 'foo/bba/arr'
expecting success of 3070.1687 'pathmatch: match 'foo/bba/arr' 'foo/**arr'':
test-tool wildmatch pathmatch 'foo/bba/arr' 'foo/**arr'
ok 1687 - pathmatch: match 'foo/bba/arr' 'foo/**arr'
expecting success of 3070.1688 'pathmatch (via ls-files): match 'foo/**arr' 'foo/bba/arr'':
printf '%s' 'foo/bba/arr' >expect &&
git ls-files -z -- 'foo/**arr' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1688 - pathmatch (via ls-files): match 'foo/**arr' 'foo/bba/arr'
expecting success of 3070.1689 'ipathmatch: match 'foo/bba/arr' 'foo/**arr'':
test-tool wildmatch ipathmatch 'foo/bba/arr' 'foo/**arr'
ok 1689 - ipathmatch: match 'foo/bba/arr' 'foo/**arr'
expecting success of 3070.1690 'ipathmatch (via ls-files): match 'foo/**arr' 'foo/bba/arr'':
printf '%s' 'foo/bba/arr' >expect &&
git --icase-pathspecs ls-files -z -- 'foo/**arr' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1690 - ipathmatch (via ls-files): match 'foo/**arr' 'foo/bba/arr'
expecting success of 3070.1691 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo/
ok 1691 - cleanup after previous file test
expecting success of 3070.1692 'setup match file test for foo/bba/arr':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1692 - setup match file test for foo/bba/arr
expecting success of 3070.1693 'wildmatch: no match 'foo/bba/arr' 'foo/*z'':
test_must_fail test-tool wildmatch wildmatch 'foo/bba/arr' 'foo/*z'
ok 1693 - wildmatch: no match 'foo/bba/arr' 'foo/*z'
expecting success of 3070.1694 'wildmatch (via ls-files): no match 'foo/*z' 'foo/bba/arr'':
>expect &&
git --glob-pathspecs ls-files -z -- 'foo/*z' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1694 - wildmatch (via ls-files): no match 'foo/*z' 'foo/bba/arr'
expecting success of 3070.1695 'iwildmatch: no match 'foo/bba/arr' 'foo/*z'':
test_must_fail test-tool wildmatch iwildmatch 'foo/bba/arr' 'foo/*z'
ok 1695 - iwildmatch: no match 'foo/bba/arr' 'foo/*z'
expecting success of 3070.1696 'iwildmatch (via ls-files): no match 'foo/*z' 'foo/bba/arr'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'foo/*z' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1696 - iwildmatch (via ls-files): no match 'foo/*z' 'foo/bba/arr'
expecting success of 3070.1697 'pathmatch: no match 'foo/bba/arr' 'foo/*z'':
test_must_fail test-tool wildmatch pathmatch 'foo/bba/arr' 'foo/*z'
ok 1697 - pathmatch: no match 'foo/bba/arr' 'foo/*z'
expecting success of 3070.1698 'pathmatch (via ls-files): no match 'foo/*z' 'foo/bba/arr'':
>expect &&
git ls-files -z -- 'foo/*z' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1698 - pathmatch (via ls-files): no match 'foo/*z' 'foo/bba/arr'
expecting success of 3070.1699 'ipathmatch: no match 'foo/bba/arr' 'foo/*z'':
test_must_fail test-tool wildmatch ipathmatch 'foo/bba/arr' 'foo/*z'
ok 1699 - ipathmatch: no match 'foo/bba/arr' 'foo/*z'
expecting success of 3070.1700 'ipathmatch (via ls-files): no match 'foo/*z' 'foo/bba/arr'':
>expect &&
git --icase-pathspecs ls-files -z -- 'foo/*z' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1700 - ipathmatch (via ls-files): no match 'foo/*z' 'foo/bba/arr'
expecting success of 3070.1701 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo/
ok 1701 - cleanup after previous file test
expecting success of 3070.1702 'setup match file test for foo/bba/arr':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1702 - setup match file test for foo/bba/arr
expecting success of 3070.1703 'wildmatch: no match 'foo/bba/arr' 'foo/**z'':
test_must_fail test-tool wildmatch wildmatch 'foo/bba/arr' 'foo/**z'
ok 1703 - wildmatch: no match 'foo/bba/arr' 'foo/**z'
expecting success of 3070.1704 'wildmatch (via ls-files): no match 'foo/**z' 'foo/bba/arr'':
>expect &&
git --glob-pathspecs ls-files -z -- 'foo/**z' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1704 - wildmatch (via ls-files): no match 'foo/**z' 'foo/bba/arr'
expecting success of 3070.1705 'iwildmatch: no match 'foo/bba/arr' 'foo/**z'':
test_must_fail test-tool wildmatch iwildmatch 'foo/bba/arr' 'foo/**z'
ok 1705 - iwildmatch: no match 'foo/bba/arr' 'foo/**z'
expecting success of 3070.1706 'iwildmatch (via ls-files): no match 'foo/**z' 'foo/bba/arr'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'foo/**z' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1706 - iwildmatch (via ls-files): no match 'foo/**z' 'foo/bba/arr'
expecting success of 3070.1707 'pathmatch: no match 'foo/bba/arr' 'foo/**z'':
test_must_fail test-tool wildmatch pathmatch 'foo/bba/arr' 'foo/**z'
ok 1707 - pathmatch: no match 'foo/bba/arr' 'foo/**z'
expecting success of 3070.1708 'pathmatch (via ls-files): no match 'foo/**z' 'foo/bba/arr'':
>expect &&
git ls-files -z -- 'foo/**z' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1708 - pathmatch (via ls-files): no match 'foo/**z' 'foo/bba/arr'
expecting success of 3070.1709 'ipathmatch: no match 'foo/bba/arr' 'foo/**z'':
test_must_fail test-tool wildmatch ipathmatch 'foo/bba/arr' 'foo/**z'
ok 1709 - ipathmatch: no match 'foo/bba/arr' 'foo/**z'
expecting success of 3070.1710 'ipathmatch (via ls-files): no match 'foo/**z' 'foo/bba/arr'':
>expect &&
git --icase-pathspecs ls-files -z -- 'foo/**z' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1710 - ipathmatch (via ls-files): no match 'foo/**z' 'foo/bba/arr'
expecting success of 3070.1711 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo/
ok 1711 - cleanup after previous file test
expecting success of 3070.1712 'setup match file test for foo/bar':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1712 - setup match file test for foo/bar
expecting success of 3070.1713 'wildmatch: no match 'foo/bar' 'foo?bar'':
test_must_fail test-tool wildmatch wildmatch 'foo/bar' 'foo?bar'
ok 1713 - wildmatch: no match 'foo/bar' 'foo?bar'
expecting success of 3070.1714 'wildmatch (via ls-files): no match 'foo?bar' 'foo/bar'':
>expect &&
git --glob-pathspecs ls-files -z -- 'foo?bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1714 - wildmatch (via ls-files): no match 'foo?bar' 'foo/bar'
expecting success of 3070.1715 'iwildmatch: no match 'foo/bar' 'foo?bar'':
test_must_fail test-tool wildmatch iwildmatch 'foo/bar' 'foo?bar'
ok 1715 - iwildmatch: no match 'foo/bar' 'foo?bar'
expecting success of 3070.1716 'iwildmatch (via ls-files): no match 'foo?bar' 'foo/bar'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'foo?bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1716 - iwildmatch (via ls-files): no match 'foo?bar' 'foo/bar'
expecting success of 3070.1717 'pathmatch: match 'foo/bar' 'foo?bar'':
test-tool wildmatch pathmatch 'foo/bar' 'foo?bar'
ok 1717 - pathmatch: match 'foo/bar' 'foo?bar'
expecting success of 3070.1718 'pathmatch (via ls-files): match 'foo?bar' 'foo/bar'':
printf '%s' 'foo/bar' >expect &&
git ls-files -z -- 'foo?bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1718 - pathmatch (via ls-files): match 'foo?bar' 'foo/bar'
expecting success of 3070.1719 'ipathmatch: match 'foo/bar' 'foo?bar'':
test-tool wildmatch ipathmatch 'foo/bar' 'foo?bar'
ok 1719 - ipathmatch: match 'foo/bar' 'foo?bar'
expecting success of 3070.1720 'ipathmatch (via ls-files): match 'foo?bar' 'foo/bar'':
printf '%s' 'foo/bar' >expect &&
git --icase-pathspecs ls-files -z -- 'foo?bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1720 - ipathmatch (via ls-files): match 'foo?bar' 'foo/bar'
expecting success of 3070.1721 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo/
ok 1721 - cleanup after previous file test
expecting success of 3070.1722 'setup match file test for foo/bar':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1722 - setup match file test for foo/bar
expecting success of 3070.1723 'wildmatch: no match 'foo/bar' 'foo[/]bar'':
test_must_fail test-tool wildmatch wildmatch 'foo/bar' 'foo[/]bar'
ok 1723 - wildmatch: no match 'foo/bar' 'foo[/]bar'
expecting success of 3070.1724 'wildmatch (via ls-files): no match 'foo[/]bar' 'foo/bar'':
>expect &&
git --glob-pathspecs ls-files -z -- 'foo[/]bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1724 - wildmatch (via ls-files): no match 'foo[/]bar' 'foo/bar'
expecting success of 3070.1725 'iwildmatch: no match 'foo/bar' 'foo[/]bar'':
test_must_fail test-tool wildmatch iwildmatch 'foo/bar' 'foo[/]bar'
ok 1725 - iwildmatch: no match 'foo/bar' 'foo[/]bar'
expecting success of 3070.1726 'iwildmatch (via ls-files): no match 'foo[/]bar' 'foo/bar'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'foo[/]bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1726 - iwildmatch (via ls-files): no match 'foo[/]bar' 'foo/bar'
expecting success of 3070.1727 'pathmatch: match 'foo/bar' 'foo[/]bar'':
test-tool wildmatch pathmatch 'foo/bar' 'foo[/]bar'
ok 1727 - pathmatch: match 'foo/bar' 'foo[/]bar'
expecting success of 3070.1728 'pathmatch (via ls-files): match 'foo[/]bar' 'foo/bar'':
printf '%s' 'foo/bar' >expect &&
git ls-files -z -- 'foo[/]bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1728 - pathmatch (via ls-files): match 'foo[/]bar' 'foo/bar'
expecting success of 3070.1729 'ipathmatch: match 'foo/bar' 'foo[/]bar'':
test-tool wildmatch ipathmatch 'foo/bar' 'foo[/]bar'
ok 1729 - ipathmatch: match 'foo/bar' 'foo[/]bar'
expecting success of 3070.1730 'ipathmatch (via ls-files): match 'foo[/]bar' 'foo/bar'':
printf '%s' 'foo/bar' >expect &&
git --icase-pathspecs ls-files -z -- 'foo[/]bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1730 - ipathmatch (via ls-files): match 'foo[/]bar' 'foo/bar'
expecting success of 3070.1731 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo/
ok 1731 - cleanup after previous file test
expecting success of 3070.1732 'setup match file test for foo/bar':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1732 - setup match file test for foo/bar
expecting success of 3070.1733 'wildmatch: no match 'foo/bar' 'foo[^a-z]bar'':
test_must_fail test-tool wildmatch wildmatch 'foo/bar' 'foo[^a-z]bar'
ok 1733 - wildmatch: no match 'foo/bar' 'foo[^a-z]bar'
expecting success of 3070.1734 'wildmatch (via ls-files): no match 'foo[^a-z]bar' 'foo/bar'':
>expect &&
git --glob-pathspecs ls-files -z -- 'foo[^a-z]bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1734 - wildmatch (via ls-files): no match 'foo[^a-z]bar' 'foo/bar'
expecting success of 3070.1735 'iwildmatch: no match 'foo/bar' 'foo[^a-z]bar'':
test_must_fail test-tool wildmatch iwildmatch 'foo/bar' 'foo[^a-z]bar'
ok 1735 - iwildmatch: no match 'foo/bar' 'foo[^a-z]bar'
expecting success of 3070.1736 'iwildmatch (via ls-files): no match 'foo[^a-z]bar' 'foo/bar'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- 'foo[^a-z]bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1736 - iwildmatch (via ls-files): no match 'foo[^a-z]bar' 'foo/bar'
expecting success of 3070.1737 'pathmatch: match 'foo/bar' 'foo[^a-z]bar'':
test-tool wildmatch pathmatch 'foo/bar' 'foo[^a-z]bar'
ok 1737 - pathmatch: match 'foo/bar' 'foo[^a-z]bar'
expecting success of 3070.1738 'pathmatch (via ls-files): match 'foo[^a-z]bar' 'foo/bar'':
printf '%s' 'foo/bar' >expect &&
git ls-files -z -- 'foo[^a-z]bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1738 - pathmatch (via ls-files): match 'foo[^a-z]bar' 'foo/bar'
expecting success of 3070.1739 'ipathmatch: match 'foo/bar' 'foo[^a-z]bar'':
test-tool wildmatch ipathmatch 'foo/bar' 'foo[^a-z]bar'
ok 1739 - ipathmatch: match 'foo/bar' 'foo[^a-z]bar'
expecting success of 3070.1740 'ipathmatch (via ls-files): match 'foo[^a-z]bar' 'foo/bar'':
printf '%s' 'foo/bar' >expect &&
git --icase-pathspecs ls-files -z -- 'foo[^a-z]bar' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1740 - ipathmatch (via ls-files): match 'foo[^a-z]bar' 'foo/bar'
expecting success of 3070.1741 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing foo/
ok 1741 - cleanup after previous file test
expecting success of 3070.1742 'setup match file test for ab/cXd/efXg/hi':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1742 - setup match file test for ab/cXd/efXg/hi
expecting success of 3070.1743 'wildmatch: no match 'ab/cXd/efXg/hi' '*Xg*i'':
test_must_fail test-tool wildmatch wildmatch 'ab/cXd/efXg/hi' '*Xg*i'
ok 1743 - wildmatch: no match 'ab/cXd/efXg/hi' '*Xg*i'
expecting success of 3070.1744 'wildmatch (via ls-files): no match '*Xg*i' 'ab/cXd/efXg/hi'':
>expect &&
git --glob-pathspecs ls-files -z -- '*Xg*i' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1744 - wildmatch (via ls-files): no match '*Xg*i' 'ab/cXd/efXg/hi'
expecting success of 3070.1745 'iwildmatch: no match 'ab/cXd/efXg/hi' '*Xg*i'':
test_must_fail test-tool wildmatch iwildmatch 'ab/cXd/efXg/hi' '*Xg*i'
ok 1745 - iwildmatch: no match 'ab/cXd/efXg/hi' '*Xg*i'
expecting success of 3070.1746 'iwildmatch (via ls-files): no match '*Xg*i' 'ab/cXd/efXg/hi'':
>expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '*Xg*i' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1746 - iwildmatch (via ls-files): no match '*Xg*i' 'ab/cXd/efXg/hi'
expecting success of 3070.1747 'pathmatch: match 'ab/cXd/efXg/hi' '*Xg*i'':
test-tool wildmatch pathmatch 'ab/cXd/efXg/hi' '*Xg*i'
ok 1747 - pathmatch: match 'ab/cXd/efXg/hi' '*Xg*i'
expecting success of 3070.1748 'pathmatch (via ls-files): match '*Xg*i' 'ab/cXd/efXg/hi'':
printf '%s' 'ab/cXd/efXg/hi' >expect &&
git ls-files -z -- '*Xg*i' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1748 - pathmatch (via ls-files): match '*Xg*i' 'ab/cXd/efXg/hi'
expecting success of 3070.1749 'ipathmatch: match 'ab/cXd/efXg/hi' '*Xg*i'':
test-tool wildmatch ipathmatch 'ab/cXd/efXg/hi' '*Xg*i'
ok 1749 - ipathmatch: match 'ab/cXd/efXg/hi' '*Xg*i'
expecting success of 3070.1750 'ipathmatch (via ls-files): match '*Xg*i' 'ab/cXd/efXg/hi'':
printf '%s' 'ab/cXd/efXg/hi' >expect &&
git --icase-pathspecs ls-files -z -- '*Xg*i' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1750 - ipathmatch (via ls-files): match '*Xg*i' 'ab/cXd/efXg/hi'
expecting success of 3070.1751 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing ab/
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1751 - cleanup after previous file test
expecting success of 3070.1752 'setup match file test for a':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1752 - setup match file test for a
expecting success of 3070.1753 'wildmatch: no match 'a' '[A-Z]'':
test_must_fail test-tool wildmatch wildmatch 'a' '[A-Z]'
ok 1753 - wildmatch: no match 'a' '[A-Z]'
expecting success of 3070.1754 'wildmatch (via ls-files): no match '[A-Z]' 'a'':
>expect &&
git --glob-pathspecs ls-files -z -- '[A-Z]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1754 - wildmatch (via ls-files): no match '[A-Z]' 'a'
expecting success of 3070.1755 'iwildmatch: match 'a' '[A-Z]'':
test-tool wildmatch iwildmatch 'a' '[A-Z]'
ok 1755 - iwildmatch: match 'a' '[A-Z]'
expecting success of 3070.1756 'iwildmatch (via ls-files): match '[A-Z]' 'a'':
printf '%s' 'a' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[A-Z]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1756 - iwildmatch (via ls-files): match '[A-Z]' 'a'
expecting success of 3070.1757 'pathmatch: no match 'a' '[A-Z]'':
test_must_fail test-tool wildmatch pathmatch 'a' '[A-Z]'
ok 1757 - pathmatch: no match 'a' '[A-Z]'
expecting success of 3070.1758 'pathmatch (via ls-files): no match '[A-Z]' 'a'':
>expect &&
git ls-files -z -- '[A-Z]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1758 - pathmatch (via ls-files): no match '[A-Z]' 'a'
expecting success of 3070.1759 'ipathmatch: match 'a' '[A-Z]'':
test-tool wildmatch ipathmatch 'a' '[A-Z]'
ok 1759 - ipathmatch: match 'a' '[A-Z]'
expecting success of 3070.1760 'ipathmatch (via ls-files): match '[A-Z]' 'a'':
printf '%s' 'a' >expect &&
git --icase-pathspecs ls-files -z -- '[A-Z]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1760 - ipathmatch (via ls-files): match '[A-Z]' 'a'
expecting success of 3070.1761 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing a
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1761 - cleanup after previous file test
expecting success of 3070.1762 'setup match file test for A':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1762 - setup match file test for A
expecting success of 3070.1763 'wildmatch: match 'A' '[A-Z]'':
test-tool wildmatch wildmatch 'A' '[A-Z]'
ok 1763 - wildmatch: match 'A' '[A-Z]'
expecting success of 3070.1764 'wildmatch (via ls-files): match '[A-Z]' 'A'':
printf '%s' 'A' >expect &&
git --glob-pathspecs ls-files -z -- '[A-Z]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1764 - wildmatch (via ls-files): match '[A-Z]' 'A'
expecting success of 3070.1765 'iwildmatch: match 'A' '[A-Z]'':
test-tool wildmatch iwildmatch 'A' '[A-Z]'
ok 1765 - iwildmatch: match 'A' '[A-Z]'
expecting success of 3070.1766 'iwildmatch (via ls-files): match '[A-Z]' 'A'':
printf '%s' 'A' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[A-Z]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1766 - iwildmatch (via ls-files): match '[A-Z]' 'A'
expecting success of 3070.1767 'pathmatch: match 'A' '[A-Z]'':
test-tool wildmatch pathmatch 'A' '[A-Z]'
ok 1767 - pathmatch: match 'A' '[A-Z]'
expecting success of 3070.1768 'pathmatch (via ls-files): match '[A-Z]' 'A'':
printf '%s' 'A' >expect &&
git ls-files -z -- '[A-Z]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1768 - pathmatch (via ls-files): match '[A-Z]' 'A'
expecting success of 3070.1769 'ipathmatch: match 'A' '[A-Z]'':
test-tool wildmatch ipathmatch 'A' '[A-Z]'
ok 1769 - ipathmatch: match 'A' '[A-Z]'
expecting success of 3070.1770 'ipathmatch (via ls-files): match '[A-Z]' 'A'':
printf '%s' 'A' >expect &&
git --icase-pathspecs ls-files -z -- '[A-Z]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1770 - ipathmatch (via ls-files): match '[A-Z]' 'A'
expecting success of 3070.1771 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing A
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1771 - cleanup after previous file test
expecting success of 3070.1772 'setup match file test for A':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1772 - setup match file test for A
expecting success of 3070.1773 'wildmatch: no match 'A' '[a-z]'':
test_must_fail test-tool wildmatch wildmatch 'A' '[a-z]'
ok 1773 - wildmatch: no match 'A' '[a-z]'
expecting success of 3070.1774 'wildmatch (via ls-files): no match '[a-z]' 'A'':
>expect &&
git --glob-pathspecs ls-files -z -- '[a-z]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1774 - wildmatch (via ls-files): no match '[a-z]' 'A'
expecting success of 3070.1775 'iwildmatch: match 'A' '[a-z]'':
test-tool wildmatch iwildmatch 'A' '[a-z]'
ok 1775 - iwildmatch: match 'A' '[a-z]'
expecting success of 3070.1776 'iwildmatch (via ls-files): match '[a-z]' 'A'':
printf '%s' 'A' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[a-z]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1776 - iwildmatch (via ls-files): match '[a-z]' 'A'
expecting success of 3070.1777 'pathmatch: no match 'A' '[a-z]'':
test_must_fail test-tool wildmatch pathmatch 'A' '[a-z]'
ok 1777 - pathmatch: no match 'A' '[a-z]'
expecting success of 3070.1778 'pathmatch (via ls-files): no match '[a-z]' 'A'':
>expect &&
git ls-files -z -- '[a-z]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1778 - pathmatch (via ls-files): no match '[a-z]' 'A'
expecting success of 3070.1779 'ipathmatch: match 'A' '[a-z]'':
test-tool wildmatch ipathmatch 'A' '[a-z]'
ok 1779 - ipathmatch: match 'A' '[a-z]'
expecting success of 3070.1780 'ipathmatch (via ls-files): match '[a-z]' 'A'':
printf '%s' 'A' >expect &&
git --icase-pathspecs ls-files -z -- '[a-z]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1780 - ipathmatch (via ls-files): match '[a-z]' 'A'
expecting success of 3070.1781 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing A
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1781 - cleanup after previous file test
expecting success of 3070.1782 'setup match file test for a':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1782 - setup match file test for a
expecting success of 3070.1783 'wildmatch: match 'a' '[a-z]'':
test-tool wildmatch wildmatch 'a' '[a-z]'
ok 1783 - wildmatch: match 'a' '[a-z]'
expecting success of 3070.1784 'wildmatch (via ls-files): match '[a-z]' 'a'':
printf '%s' 'a' >expect &&
git --glob-pathspecs ls-files -z -- '[a-z]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1784 - wildmatch (via ls-files): match '[a-z]' 'a'
expecting success of 3070.1785 'iwildmatch: match 'a' '[a-z]'':
test-tool wildmatch iwildmatch 'a' '[a-z]'
ok 1785 - iwildmatch: match 'a' '[a-z]'
expecting success of 3070.1786 'iwildmatch (via ls-files): match '[a-z]' 'a'':
printf '%s' 'a' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[a-z]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1786 - iwildmatch (via ls-files): match '[a-z]' 'a'
expecting success of 3070.1787 'pathmatch: match 'a' '[a-z]'':
test-tool wildmatch pathmatch 'a' '[a-z]'
ok 1787 - pathmatch: match 'a' '[a-z]'
expecting success of 3070.1788 'pathmatch (via ls-files): match '[a-z]' 'a'':
printf '%s' 'a' >expect &&
git ls-files -z -- '[a-z]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1788 - pathmatch (via ls-files): match '[a-z]' 'a'
expecting success of 3070.1789 'ipathmatch: match 'a' '[a-z]'':
test-tool wildmatch ipathmatch 'a' '[a-z]'
ok 1789 - ipathmatch: match 'a' '[a-z]'
expecting success of 3070.1790 'ipathmatch (via ls-files): match '[a-z]' 'a'':
printf '%s' 'a' >expect &&
git --icase-pathspecs ls-files -z -- '[a-z]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1790 - ipathmatch (via ls-files): match '[a-z]' 'a'
expecting success of 3070.1791 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing a
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1791 - cleanup after previous file test
expecting success of 3070.1792 'setup match file test for a':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1792 - setup match file test for a
expecting success of 3070.1793 'wildmatch: no match 'a' '[[:upper:]]'':
test_must_fail test-tool wildmatch wildmatch 'a' '[[:upper:]]'
ok 1793 - wildmatch: no match 'a' '[[:upper:]]'
expecting success of 3070.1794 'wildmatch (via ls-files): no match '[[:upper:]]' 'a'':
>expect &&
git --glob-pathspecs ls-files -z -- '[[:upper:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1794 - wildmatch (via ls-files): no match '[[:upper:]]' 'a'
expecting success of 3070.1795 'iwildmatch: match 'a' '[[:upper:]]'':
test-tool wildmatch iwildmatch 'a' '[[:upper:]]'
ok 1795 - iwildmatch: match 'a' '[[:upper:]]'
expecting success of 3070.1796 'iwildmatch (via ls-files): match '[[:upper:]]' 'a'':
printf '%s' 'a' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[[:upper:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1796 - iwildmatch (via ls-files): match '[[:upper:]]' 'a'
expecting success of 3070.1797 'pathmatch: no match 'a' '[[:upper:]]'':
test_must_fail test-tool wildmatch pathmatch 'a' '[[:upper:]]'
ok 1797 - pathmatch: no match 'a' '[[:upper:]]'
expecting success of 3070.1798 'pathmatch (via ls-files): no match '[[:upper:]]' 'a'':
>expect &&
git ls-files -z -- '[[:upper:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1798 - pathmatch (via ls-files): no match '[[:upper:]]' 'a'
expecting success of 3070.1799 'ipathmatch: match 'a' '[[:upper:]]'':
test-tool wildmatch ipathmatch 'a' '[[:upper:]]'
ok 1799 - ipathmatch: match 'a' '[[:upper:]]'
expecting success of 3070.1800 'ipathmatch (via ls-files): match '[[:upper:]]' 'a'':
printf '%s' 'a' >expect &&
git --icase-pathspecs ls-files -z -- '[[:upper:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1800 - ipathmatch (via ls-files): match '[[:upper:]]' 'a'
expecting success of 3070.1801 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing a
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1801 - cleanup after previous file test
expecting success of 3070.1802 'setup match file test for A':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1802 - setup match file test for A
expecting success of 3070.1803 'wildmatch: match 'A' '[[:upper:]]'':
test-tool wildmatch wildmatch 'A' '[[:upper:]]'
ok 1803 - wildmatch: match 'A' '[[:upper:]]'
expecting success of 3070.1804 'wildmatch (via ls-files): match '[[:upper:]]' 'A'':
printf '%s' 'A' >expect &&
git --glob-pathspecs ls-files -z -- '[[:upper:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1804 - wildmatch (via ls-files): match '[[:upper:]]' 'A'
expecting success of 3070.1805 'iwildmatch: match 'A' '[[:upper:]]'':
test-tool wildmatch iwildmatch 'A' '[[:upper:]]'
ok 1805 - iwildmatch: match 'A' '[[:upper:]]'
expecting success of 3070.1806 'iwildmatch (via ls-files): match '[[:upper:]]' 'A'':
printf '%s' 'A' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[[:upper:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1806 - iwildmatch (via ls-files): match '[[:upper:]]' 'A'
expecting success of 3070.1807 'pathmatch: match 'A' '[[:upper:]]'':
test-tool wildmatch pathmatch 'A' '[[:upper:]]'
ok 1807 - pathmatch: match 'A' '[[:upper:]]'
expecting success of 3070.1808 'pathmatch (via ls-files): match '[[:upper:]]' 'A'':
printf '%s' 'A' >expect &&
git ls-files -z -- '[[:upper:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1808 - pathmatch (via ls-files): match '[[:upper:]]' 'A'
expecting success of 3070.1809 'ipathmatch: match 'A' '[[:upper:]]'':
test-tool wildmatch ipathmatch 'A' '[[:upper:]]'
ok 1809 - ipathmatch: match 'A' '[[:upper:]]'
expecting success of 3070.1810 'ipathmatch (via ls-files): match '[[:upper:]]' 'A'':
printf '%s' 'A' >expect &&
git --icase-pathspecs ls-files -z -- '[[:upper:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1810 - ipathmatch (via ls-files): match '[[:upper:]]' 'A'
expecting success of 3070.1811 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing A
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1811 - cleanup after previous file test
expecting success of 3070.1812 'setup match file test for A':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1812 - setup match file test for A
expecting success of 3070.1813 'wildmatch: no match 'A' '[[:lower:]]'':
test_must_fail test-tool wildmatch wildmatch 'A' '[[:lower:]]'
ok 1813 - wildmatch: no match 'A' '[[:lower:]]'
expecting success of 3070.1814 'wildmatch (via ls-files): no match '[[:lower:]]' 'A'':
>expect &&
git --glob-pathspecs ls-files -z -- '[[:lower:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1814 - wildmatch (via ls-files): no match '[[:lower:]]' 'A'
expecting success of 3070.1815 'iwildmatch: match 'A' '[[:lower:]]'':
test-tool wildmatch iwildmatch 'A' '[[:lower:]]'
ok 1815 - iwildmatch: match 'A' '[[:lower:]]'
expecting success of 3070.1816 'iwildmatch (via ls-files): match '[[:lower:]]' 'A'':
printf '%s' 'A' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[[:lower:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1816 - iwildmatch (via ls-files): match '[[:lower:]]' 'A'
expecting success of 3070.1817 'pathmatch: no match 'A' '[[:lower:]]'':
test_must_fail test-tool wildmatch pathmatch 'A' '[[:lower:]]'
ok 1817 - pathmatch: no match 'A' '[[:lower:]]'
expecting success of 3070.1818 'pathmatch (via ls-files): no match '[[:lower:]]' 'A'':
>expect &&
git ls-files -z -- '[[:lower:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1818 - pathmatch (via ls-files): no match '[[:lower:]]' 'A'
expecting success of 3070.1819 'ipathmatch: match 'A' '[[:lower:]]'':
test-tool wildmatch ipathmatch 'A' '[[:lower:]]'
ok 1819 - ipathmatch: match 'A' '[[:lower:]]'
expecting success of 3070.1820 'ipathmatch (via ls-files): match '[[:lower:]]' 'A'':
printf '%s' 'A' >expect &&
git --icase-pathspecs ls-files -z -- '[[:lower:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1820 - ipathmatch (via ls-files): match '[[:lower:]]' 'A'
expecting success of 3070.1821 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing A
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1821 - cleanup after previous file test
expecting success of 3070.1822 'setup match file test for a':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1822 - setup match file test for a
expecting success of 3070.1823 'wildmatch: match 'a' '[[:lower:]]'':
test-tool wildmatch wildmatch 'a' '[[:lower:]]'
ok 1823 - wildmatch: match 'a' '[[:lower:]]'
expecting success of 3070.1824 'wildmatch (via ls-files): match '[[:lower:]]' 'a'':
printf '%s' 'a' >expect &&
git --glob-pathspecs ls-files -z -- '[[:lower:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1824 - wildmatch (via ls-files): match '[[:lower:]]' 'a'
expecting success of 3070.1825 'iwildmatch: match 'a' '[[:lower:]]'':
test-tool wildmatch iwildmatch 'a' '[[:lower:]]'
ok 1825 - iwildmatch: match 'a' '[[:lower:]]'
expecting success of 3070.1826 'iwildmatch (via ls-files): match '[[:lower:]]' 'a'':
printf '%s' 'a' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[[:lower:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1826 - iwildmatch (via ls-files): match '[[:lower:]]' 'a'
expecting success of 3070.1827 'pathmatch: match 'a' '[[:lower:]]'':
test-tool wildmatch pathmatch 'a' '[[:lower:]]'
ok 1827 - pathmatch: match 'a' '[[:lower:]]'
expecting success of 3070.1828 'pathmatch (via ls-files): match '[[:lower:]]' 'a'':
printf '%s' 'a' >expect &&
git ls-files -z -- '[[:lower:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1828 - pathmatch (via ls-files): match '[[:lower:]]' 'a'
expecting success of 3070.1829 'ipathmatch: match 'a' '[[:lower:]]'':
test-tool wildmatch ipathmatch 'a' '[[:lower:]]'
ok 1829 - ipathmatch: match 'a' '[[:lower:]]'
expecting success of 3070.1830 'ipathmatch (via ls-files): match '[[:lower:]]' 'a'':
printf '%s' 'a' >expect &&
git --icase-pathspecs ls-files -z -- '[[:lower:]]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1830 - ipathmatch (via ls-files): match '[[:lower:]]' 'a'
expecting success of 3070.1831 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing a
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1831 - cleanup after previous file test
expecting success of 3070.1832 'setup match file test for A':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1832 - setup match file test for A
expecting success of 3070.1833 'wildmatch: no match 'A' '[B-Za]'':
test_must_fail test-tool wildmatch wildmatch 'A' '[B-Za]'
ok 1833 - wildmatch: no match 'A' '[B-Za]'
expecting success of 3070.1834 'wildmatch (via ls-files): no match '[B-Za]' 'A'':
>expect &&
git --glob-pathspecs ls-files -z -- '[B-Za]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1834 - wildmatch (via ls-files): no match '[B-Za]' 'A'
expecting success of 3070.1835 'iwildmatch: match 'A' '[B-Za]'':
test-tool wildmatch iwildmatch 'A' '[B-Za]'
ok 1835 - iwildmatch: match 'A' '[B-Za]'
expecting success of 3070.1836 'iwildmatch (via ls-files): match '[B-Za]' 'A'':
printf '%s' 'A' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[B-Za]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1836 - iwildmatch (via ls-files): match '[B-Za]' 'A'
expecting success of 3070.1837 'pathmatch: no match 'A' '[B-Za]'':
test_must_fail test-tool wildmatch pathmatch 'A' '[B-Za]'
ok 1837 - pathmatch: no match 'A' '[B-Za]'
expecting success of 3070.1838 'pathmatch (via ls-files): no match '[B-Za]' 'A'':
>expect &&
git ls-files -z -- '[B-Za]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1838 - pathmatch (via ls-files): no match '[B-Za]' 'A'
expecting success of 3070.1839 'ipathmatch: match 'A' '[B-Za]'':
test-tool wildmatch ipathmatch 'A' '[B-Za]'
ok 1839 - ipathmatch: match 'A' '[B-Za]'
expecting success of 3070.1840 'ipathmatch (via ls-files): match '[B-Za]' 'A'':
printf '%s' 'A' >expect &&
git --icase-pathspecs ls-files -z -- '[B-Za]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1840 - ipathmatch (via ls-files): match '[B-Za]' 'A'
expecting success of 3070.1841 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing A
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1841 - cleanup after previous file test
expecting success of 3070.1842 'setup match file test for a':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1842 - setup match file test for a
expecting success of 3070.1843 'wildmatch: match 'a' '[B-Za]'':
test-tool wildmatch wildmatch 'a' '[B-Za]'
ok 1843 - wildmatch: match 'a' '[B-Za]'
expecting success of 3070.1844 'wildmatch (via ls-files): match '[B-Za]' 'a'':
printf '%s' 'a' >expect &&
git --glob-pathspecs ls-files -z -- '[B-Za]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1844 - wildmatch (via ls-files): match '[B-Za]' 'a'
expecting success of 3070.1845 'iwildmatch: match 'a' '[B-Za]'':
test-tool wildmatch iwildmatch 'a' '[B-Za]'
ok 1845 - iwildmatch: match 'a' '[B-Za]'
expecting success of 3070.1846 'iwildmatch (via ls-files): match '[B-Za]' 'a'':
printf '%s' 'a' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[B-Za]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1846 - iwildmatch (via ls-files): match '[B-Za]' 'a'
expecting success of 3070.1847 'pathmatch: match 'a' '[B-Za]'':
test-tool wildmatch pathmatch 'a' '[B-Za]'
ok 1847 - pathmatch: match 'a' '[B-Za]'
expecting success of 3070.1848 'pathmatch (via ls-files): match '[B-Za]' 'a'':
printf '%s' 'a' >expect &&
git ls-files -z -- '[B-Za]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1848 - pathmatch (via ls-files): match '[B-Za]' 'a'
expecting success of 3070.1849 'ipathmatch: match 'a' '[B-Za]'':
test-tool wildmatch ipathmatch 'a' '[B-Za]'
ok 1849 - ipathmatch: match 'a' '[B-Za]'
expecting success of 3070.1850 'ipathmatch (via ls-files): match '[B-Za]' 'a'':
printf '%s' 'a' >expect &&
git --icase-pathspecs ls-files -z -- '[B-Za]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1850 - ipathmatch (via ls-files): match '[B-Za]' 'a'
expecting success of 3070.1851 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing a
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1851 - cleanup after previous file test
expecting success of 3070.1852 'setup match file test for A':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1852 - setup match file test for A
expecting success of 3070.1853 'wildmatch: no match 'A' '[B-a]'':
test_must_fail test-tool wildmatch wildmatch 'A' '[B-a]'
ok 1853 - wildmatch: no match 'A' '[B-a]'
expecting success of 3070.1854 'wildmatch (via ls-files): no match '[B-a]' 'A'':
>expect &&
git --glob-pathspecs ls-files -z -- '[B-a]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1854 - wildmatch (via ls-files): no match '[B-a]' 'A'
expecting success of 3070.1855 'iwildmatch: match 'A' '[B-a]'':
test-tool wildmatch iwildmatch 'A' '[B-a]'
ok 1855 - iwildmatch: match 'A' '[B-a]'
expecting success of 3070.1856 'iwildmatch (via ls-files): match '[B-a]' 'A'':
printf '%s' 'A' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[B-a]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1856 - iwildmatch (via ls-files): match '[B-a]' 'A'
expecting success of 3070.1857 'pathmatch: no match 'A' '[B-a]'':
test_must_fail test-tool wildmatch pathmatch 'A' '[B-a]'
ok 1857 - pathmatch: no match 'A' '[B-a]'
expecting success of 3070.1858 'pathmatch (via ls-files): no match '[B-a]' 'A'':
>expect &&
git ls-files -z -- '[B-a]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1858 - pathmatch (via ls-files): no match '[B-a]' 'A'
expecting success of 3070.1859 'ipathmatch: match 'A' '[B-a]'':
test-tool wildmatch ipathmatch 'A' '[B-a]'
ok 1859 - ipathmatch: match 'A' '[B-a]'
expecting success of 3070.1860 'ipathmatch (via ls-files): match '[B-a]' 'A'':
printf '%s' 'A' >expect &&
git --icase-pathspecs ls-files -z -- '[B-a]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1860 - ipathmatch (via ls-files): match '[B-a]' 'A'
expecting success of 3070.1861 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing A
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1861 - cleanup after previous file test
expecting success of 3070.1862 'setup match file test for a':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1862 - setup match file test for a
expecting success of 3070.1863 'wildmatch: match 'a' '[B-a]'':
test-tool wildmatch wildmatch 'a' '[B-a]'
ok 1863 - wildmatch: match 'a' '[B-a]'
expecting success of 3070.1864 'wildmatch (via ls-files): match '[B-a]' 'a'':
printf '%s' 'a' >expect &&
git --glob-pathspecs ls-files -z -- '[B-a]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1864 - wildmatch (via ls-files): match '[B-a]' 'a'
expecting success of 3070.1865 'iwildmatch: match 'a' '[B-a]'':
test-tool wildmatch iwildmatch 'a' '[B-a]'
ok 1865 - iwildmatch: match 'a' '[B-a]'
expecting success of 3070.1866 'iwildmatch (via ls-files): match '[B-a]' 'a'':
printf '%s' 'a' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[B-a]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1866 - iwildmatch (via ls-files): match '[B-a]' 'a'
expecting success of 3070.1867 'pathmatch: match 'a' '[B-a]'':
test-tool wildmatch pathmatch 'a' '[B-a]'
ok 1867 - pathmatch: match 'a' '[B-a]'
expecting success of 3070.1868 'pathmatch (via ls-files): match '[B-a]' 'a'':
printf '%s' 'a' >expect &&
git ls-files -z -- '[B-a]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1868 - pathmatch (via ls-files): match '[B-a]' 'a'
expecting success of 3070.1869 'ipathmatch: match 'a' '[B-a]'':
test-tool wildmatch ipathmatch 'a' '[B-a]'
ok 1869 - ipathmatch: match 'a' '[B-a]'
expecting success of 3070.1870 'ipathmatch (via ls-files): match '[B-a]' 'a'':
printf '%s' 'a' >expect &&
git --icase-pathspecs ls-files -z -- '[B-a]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1870 - ipathmatch (via ls-files): match '[B-a]' 'a'
expecting success of 3070.1871 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing a
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
ok 1871 - cleanup after previous file test
expecting success of 3070.1872 'setup match file test for z':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1872 - setup match file test for z
expecting success of 3070.1873 'wildmatch: no match 'z' '[Z-y]'':
test_must_fail test-tool wildmatch wildmatch 'z' '[Z-y]'
ok 1873 - wildmatch: no match 'z' '[Z-y]'
expecting success of 3070.1874 'wildmatch (via ls-files): no match '[Z-y]' 'z'':
>expect &&
git --glob-pathspecs ls-files -z -- '[Z-y]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1874 - wildmatch (via ls-files): no match '[Z-y]' 'z'
expecting success of 3070.1875 'iwildmatch: match 'z' '[Z-y]'':
test-tool wildmatch iwildmatch 'z' '[Z-y]'
ok 1875 - iwildmatch: match 'z' '[Z-y]'
expecting success of 3070.1876 'iwildmatch (via ls-files): match '[Z-y]' 'z'':
printf '%s' 'z' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[Z-y]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1876 - iwildmatch (via ls-files): match '[Z-y]' 'z'
expecting success of 3070.1877 'pathmatch: no match 'z' '[Z-y]'':
test_must_fail test-tool wildmatch pathmatch 'z' '[Z-y]'
ok 1877 - pathmatch: no match 'z' '[Z-y]'
expecting success of 3070.1878 'pathmatch (via ls-files): no match '[Z-y]' 'z'':
>expect &&
git ls-files -z -- '[Z-y]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1878 - pathmatch (via ls-files): no match '[Z-y]' 'z'
expecting success of 3070.1879 'ipathmatch: match 'z' '[Z-y]'':
test-tool wildmatch ipathmatch 'z' '[Z-y]'
ok 1879 - ipathmatch: match 'z' '[Z-y]'
expecting success of 3070.1880 'ipathmatch (via ls-files): match '[Z-y]' 'z'':
printf '%s' 'z' >expect &&
git --icase-pathspecs ls-files -z -- '[Z-y]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1880 - ipathmatch (via ls-files): match '[Z-y]' 'z'
expecting success of 3070.1881 'cleanup after previous file test':
if test -e .git/created_test_file
then
git reset &&
git clean -df
fi
Removing actual
Removing actual.err
Removing actual.raw
Removing expect
Removing z
ok 1881 - cleanup after previous file test
expecting success of 3070.1882 'setup match file test for Z':
file=$(cat .git/expected_test_file) &&
if should_create_test_file "$file"
then
dirs=${file%/*} &&
if test "$file" != "$dirs"
then
mkdir -p -- "$dirs" &&
touch -- "./$text"
else
touch -- "./$file"
fi &&
git add -A &&
printf "%s" "$file" >.git/created_test_file
elif test -e .git/created_test_file
then
rm .git/created_test_file
fi
ok 1882 - setup match file test for Z
expecting success of 3070.1883 'wildmatch: match 'Z' '[Z-y]'':
test-tool wildmatch wildmatch 'Z' '[Z-y]'
ok 1883 - wildmatch: match 'Z' '[Z-y]'
expecting success of 3070.1884 'wildmatch (via ls-files): match '[Z-y]' 'Z'':
printf '%s' 'Z' >expect &&
git --glob-pathspecs ls-files -z -- '[Z-y]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1884 - wildmatch (via ls-files): match '[Z-y]' 'Z'
expecting success of 3070.1885 'iwildmatch: match 'Z' '[Z-y]'':
test-tool wildmatch iwildmatch 'Z' '[Z-y]'
ok 1885 - iwildmatch: match 'Z' '[Z-y]'
expecting success of 3070.1886 'iwildmatch (via ls-files): match '[Z-y]' 'Z'':
printf '%s' 'Z' >expect &&
git --glob-pathspecs --icase-pathspecs ls-files -z -- '[Z-y]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1886 - iwildmatch (via ls-files): match '[Z-y]' 'Z'
expecting success of 3070.1887 'pathmatch: match 'Z' '[Z-y]'':
test-tool wildmatch pathmatch 'Z' '[Z-y]'
ok 1887 - pathmatch: match 'Z' '[Z-y]'
expecting success of 3070.1888 'pathmatch (via ls-files): match '[Z-y]' 'Z'':
printf '%s' 'Z' >expect &&
git ls-files -z -- '[Z-y]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1888 - pathmatch (via ls-files): match '[Z-y]' 'Z'
expecting success of 3070.1889 'ipathmatch: match 'Z' '[Z-y]'':
test-tool wildmatch ipathmatch 'Z' '[Z-y]'
ok 1889 - ipathmatch: match 'Z' '[Z-y]'
expecting success of 3070.1890 'ipathmatch (via ls-files): match '[Z-y]' 'Z'':
printf '%s' 'Z' >expect &&
git --icase-pathspecs ls-files -z -- '[Z-y]' >actual.raw 2>actual.err &&
tr -d '\0' <actual.raw >actual &&
test_must_be_empty actual.err &&
test_cmp expect actual
ok 1890 - ipathmatch (via ls-files): match '[Z-y]' 'Z'
expecting success of 3070.1891 'matching does not exhibit exponential behavior':
{
test-tool wildmatch wildmatch \
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab \
"*a*a*a*a*a*a*a*a*a*a*a*a*a*a*a*a" &
pid=$!
} &&
sleep 2 &&
! kill $!
t3070-wildmatch.sh: 11: kill: No such process
ok 1891 - matching does not exhibit exponential behavior
# still have 40 known breakage(s)
# passed all remaining 1851 test(s)
1..1891
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3309-notes-merge-auto-resolve.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3309-notes-merge-auto-resolve/.git/
expecting success of 3309.1 'setup commits':
test_commit 1st &&
test_commit 2nd &&
test_commit 3rd &&
test_commit 4th &&
test_commit 5th &&
test_commit 6th &&
test_commit 7th &&
test_commit 8th &&
test_commit 9th &&
test_commit 10th &&
test_commit 11th &&
test_commit 12th &&
test_commit 13th &&
test_commit 14th &&
test_commit 15th &&
test_oid_cache <<-EOF
hash15a sha1:457a85d6c814ea208550f15fcc48f804ac8dc023
hash14a sha1:b0c95b954301d69da2bc3723f4cb1680d355937c
hash13a sha1:5d30216a129eeffa97d9694ffe8c74317a560315
hash12a sha1:dd161bc149470fd890dd4ab52a4cbd79bbd18c36
hash11a sha1:7abbc45126d680336fb24294f013a7cdfa3ed545
hash10a sha1:b8d03e173f67f6505a76f6e00cf93440200dd9be
hash09a sha1:20c613c835011c48a5abe29170a2402ca6354910
hash08a sha1:a3daf8a1e4e5dc3409a303ad8481d57bfea7f5d6
hash07a sha1:897003322b53bc6ca098e9324ee508362347e734
hash06a sha1:11d97fdebfa5ceee540a3da07bce6fa0222bc082
hash15b sha1:68b8630d25516028bed862719855b3d6768d7833
hash14b sha1:5de7ea7ad4f47e7ff91989fb82234634730f75df
hash13b sha1:3a631fdb6f41b05b55d8f4baf20728ba8f6fccbc
hash12b sha1:a66055fa82f7a03fe0c02a6aba3287a85abf7c62
hash05b sha1:154508c7a0bcad82b6fe4b472bc4c26b3bf0825b
hash04b sha1:e2bfd06a37dd2031684a59a6e2b033e212239c78
hash03b sha1:5772f42408c0dd6f097a7ca2d24de0e78d1c46b1
hash15c sha1:9b4b2c61f0615412da3c10f98ff85b57c04ec765
hash11c sha1:7e3c53503a3db8dd996cb62e37c66e070b44b54d
hash08c sha1:851e1638784a884c7dd26c5d41f3340f6387413a
hash05c sha1:99fc34adfc400b95c67b013115e37e31aa9a6d23
hash02c sha1:283b48219aee9a4105f6cab337e789065c82c2b9
hash15d sha1:7c4e546efd0fe939f876beb262ece02797880b54
hash05d sha1:6c841cc36ea496027290967ca96bd2bef54dbb47
hash15e sha1:d682107b8bf7a7aea1e537a8d5cb6a12b60135f1
hash05e sha1:357b6ca14c7afd59b7f8b8aaaa6b8b723771135b
hash15f sha1:6be90240b5f54594203e25d9f2f64b7567175aee
hash05f sha1:660311d7f78dc53db12ac373a43fca7465381a7e
hash15a sha256:45b1558e5c1b75f570010fa48aaa67bb2289fcd431b34ad81cb4c8b95f4f872a
hash14a sha256:6e7af179ea4dd28afdc83ae6912ba0098cdeff764b26a8b750b157dd81749092
hash13a sha256:7353089961baf555388e1bac68c67c8ea94b08ccbd97532201cf7f6790703052
hash12a sha256:5863e4521689ee1879ceab3b38d39e93ab5b51ec70aaf6a96ad388fbdedfa25e
hash11a sha256:82a0ec0338b4ecf8b44304badf4ad38d7469dc41827f38d7ba6c42e3bae3ee98
hash10a sha256:e84f2564e92de9792c93b8d197262c735d7ccb1de6025cef8759af8f6c3308eb
hash09a sha256:4dd07764bcec696f195c0ea71ae89e174876403af1637e4642b8f4453fd23028
hash08a sha256:02132c4546cd88a1d0aa5854dd55da120927f7904ba16afe36fe03e91a622067
hash07a sha256:369baf7d00c6720efdc10273493555f943051f84a4706fb24caeb353fa4789db
hash06a sha256:52d32c10353583b2d96a5849b1f1f43c8018e76f3e8ef1b0d46eb5cff7cdefaf
hash15b sha256:345e6660b345fa174738a31a7a59423c394bdf414804e200bc510c65d971ae96
hash14b sha256:7653a6596021c52e405cba979eea15a729993e7102b9a61ba4667e34f0ead4a1
hash13b sha256:0f202a0b6b9690de2349c173dfd766a37e82744f61c14f1c389306f1d69f470b
hash12b sha256:eb00f219c026136ea6535b16ff8ec3efa510e6bf50098ca041e1a2a1d4b79840
hash05b sha256:993b2290cd0c24c27c849d99f1904f3b590f77af0f539932734ad05679ac5a2f
hash04b sha256:c7fba0d6104917fbf35258f40b9fa4fc697cfa992deecd1570a3b08d0a5587a9
hash03b sha256:7287a2d78a3766c181b08df38951d784b08b72a44f571ed6d855bd0be22c70f6
hash15c sha256:62316660a22bf97857dc4a16709ec4d93a224e8c9f37d661ef91751e1f4c4166
hash11c sha256:51c3763de9b08309370adc5036d58debb331980e73097902957c444602551daa
hash08c sha256:22cf1fa29599898a7218c51135d66ed85d22aad584f77db3305dedce4c3d4798
hash05c sha256:2508fd86db980f0508893a1c1571bdf3b2ee113dc25ddb1a3a2fb94bd6cd0d58
hash02c sha256:63bb527e0b4e1c8e1dd0d54dd778ca7c3718689fd6e37c473044cfbcf1cacfdb
hash15d sha256:667acb4e2d5f8df15e5aea4506dfd16d25bc7feca70fdb0d965a7222f983bb88
hash05d sha256:09e6b5a6fe666c4a027674b6611a254b7d2528cd211c6b5288d1b4db6c741dfa
hash15e sha256:e8cbf52f6fcadc6de3c7761e64a89e9fe38d19a03d3e28ef6ca8596d93fc4f3a
hash05e sha256:cdb1e19f7ba1539f95af51a57edeb88a7ecc97d3c2f52da8c4c86af308595607
hash15f sha256:29c14cb92da448a923963b8a43994268b19c2e57913de73f3667421fd2c0eeec
hash05f sha256:14a6e641b2c0a9f398ebac6b4d34afa5efea4c52d2631382f45f8f662266903b
EOF
[master (root-commit) 04ed9a0] 1st
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 1st.t
[master 7a4ca6e] 2nd
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 2nd.t
[master d07d62e] 3rd
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 3rd.t
[master 0f7aa3e] 4th
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 4th.t
[master 7f9ad88] 5th
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 5th.t
[master 2c12533] 6th
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 6th.t
[master fb01e0c] 7th
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 7th.t
[master 9a4c31c] 8th
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 8th.t
[master 2e0db4b] 9th
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 9th.t
[master 7c3b87a] 10th
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 10th.t
[master a446fff] 11th
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 11th.t
[master 65e263d] 12th
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 12th.t
[master e871aa6] 13th
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 13th.t
[master 07c85d7] 14th
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 14th.t
[master 4acf42e] 15th
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 15th.t
ok 1 - setup commits
expecting success of 3309.2 'setup merge base (x)':
git config core.notesRef refs/notes/x &&
git notes add -m "x notes on 6th commit" 6th &&
git notes add -m "x notes on 7th commit" 7th &&
git notes add -m "x notes on 8th commit" 8th &&
git notes add -m "x notes on 9th commit" 9th &&
git notes add -m "x notes on 10th commit" 10th &&
git notes add -m "x notes on 11th commit" 11th &&
git notes add -m "x notes on 12th commit" 12th &&
git notes add -m "x notes on 13th commit" 13th &&
git notes add -m "x notes on 14th commit" 14th &&
git notes add -m "x notes on 15th commit" 15th
ok 2 - setup merge base (x)
expecting success of 3309.3 'verify state of merge base (x)': verify_notes x x
ok 3 - verify state of merge base (x)
expecting success of 3309.4 'setup local branch (y)':
git update-ref refs/notes/y refs/notes/x &&
git config core.notesRef refs/notes/y &&
git notes add -f -m "y notes on 3rd commit" 3rd &&
git notes add -f -m "y notes on 4th commit" 4th &&
git notes add -f -m "y notes on 5th commit" 5th &&
git notes remove 6th &&
git notes remove 7th &&
git notes remove 8th &&
git notes add -f -m "y notes on 12th commit" 12th &&
git notes add -f -m "y notes on 13th commit" 13th &&
git notes add -f -m "y notes on 14th commit" 14th &&
git notes add -f -m "y notes on 15th commit" 15th
Removing note for object 6th
Removing note for object 7th
Removing note for object 8th
Overwriting existing notes for object 65e263ded02ae4e8839bc151095113737579dc12
Overwriting existing notes for object e871aa61182b1d95d0a6fb75445d891722863b6b
Overwriting existing notes for object 07c85d77059393ed0154b8c96906547a59dfcddd
Overwriting existing notes for object 4acf42e847e7fffbbf89ee365c20ac7caf40de89
ok 4 - setup local branch (y)
expecting success of 3309.5 'verify state of local branch (y)': verify_notes y y
ok 5 - verify state of local branch (y)
expecting success of 3309.6 'setup remote branch (z)':
git update-ref refs/notes/z refs/notes/x &&
git config core.notesRef refs/notes/z &&
git notes add -f -m "z notes on 2nd commit" 2nd &&
git notes add -f -m "y notes on 4th commit" 4th &&
git notes add -f -m "z notes on 5th commit" 5th &&
git notes remove 6th &&
git notes add -f -m "z notes on 8th commit" 8th &&
git notes remove 9th &&
git notes add -f -m "z notes on 11th commit" 11th &&
git notes remove 12th &&
git notes add -f -m "y notes on 14th commit" 14th &&
git notes add -f -m "z notes on 15th commit" 15th
Removing note for object 6th
Overwriting existing notes for object 9a4c31c7f722b5d517e92c64e932dd751e1413bf
Removing note for object 9th
Overwriting existing notes for object a446fff8777efdc6eb8f4b7c8a5ff699484df0d5
Removing note for object 12th
Overwriting existing notes for object 07c85d77059393ed0154b8c96906547a59dfcddd
Overwriting existing notes for object 4acf42e847e7fffbbf89ee365c20ac7caf40de89
ok 6 - setup remote branch (z)
expecting success of 3309.7 'verify state of remote branch (z)': verify_notes z z
ok 7 - verify state of remote branch (z)
expecting success of 3309.8 'merge z into y with invalid strategy => Fail/No changes':
git config core.notesRef refs/notes/y &&
test_must_fail git notes merge --strategy=foo z &&
# Verify no changes (y)
verify_notes y y
error: unknown -s/--strategy: foo
usage: git notes merge [<options>] <notes-ref>
or: git notes merge --commit [<options>]
or: git notes merge --abort [<options>]
General options
-v, --verbose be more verbose
-q, --quiet be more quiet
Merge options
-s, --strategy <strategy>
resolve notes conflicts using the given strategy (manual/ours/theirs/union/cat_sort_uniq)
Committing unmerged notes
--commit finalize notes merge by committing unmerged notes
Aborting notes merge resolution
--abort abort notes merge
ok 8 - merge z into y with invalid strategy => Fail/No changes
expecting success of 3309.9 'merge z into y with invalid configuration option => Fail/No changes':
git config core.notesRef refs/notes/y &&
cat >expect <<-\EOF &&
error: unknown notes merge strategy foo
fatal: unable to parse 'notes.mergeStrategy' from command-line config
EOF
test_must_fail git -c notes.mergeStrategy="foo" notes merge z 2>actual &&
test_cmp expect actual &&
# Verify no changes (y)
verify_notes y y
ok 9 - merge z into y with invalid configuration option => Fail/No changes
expecting success of 3309.10 'merge z into y with "ours" strategy => Non-conflicting 3-way merge':
git notes merge --strategy=ours z &&
verify_notes y ours
Using local notes for 4acf42e847e7fffbbf89ee365c20ac7caf40de89
Using local notes for 65e263ded02ae4e8839bc151095113737579dc12
Using local notes for 7f9ad8836c775acb134c0a055fc55fb4cd1ba361
Using local notes for 9a4c31c7f722b5d517e92c64e932dd751e1413bf
ok 10 - merge z into y with "ours" strategy => Non-conflicting 3-way merge
expecting success of 3309.11 'reset to pre-merge state (y)':
git update-ref refs/notes/y refs/notes/y^1 &&
# Verify pre-merge state
verify_notes y y
ok 11 - reset to pre-merge state (y)
expecting success of 3309.12 'merge z into y with "ours" configuration option => Non-conflicting 3-way merge':
git -c notes.mergeStrategy="ours" notes merge z &&
verify_notes y ours
Using local notes for 4acf42e847e7fffbbf89ee365c20ac7caf40de89
Using local notes for 65e263ded02ae4e8839bc151095113737579dc12
Using local notes for 7f9ad8836c775acb134c0a055fc55fb4cd1ba361
Using local notes for 9a4c31c7f722b5d517e92c64e932dd751e1413bf
ok 12 - merge z into y with "ours" configuration option => Non-conflicting 3-way merge
expecting success of 3309.13 'reset to pre-merge state (y)':
git update-ref refs/notes/y refs/notes/y^1 &&
# Verify pre-merge state
verify_notes y y
ok 13 - reset to pre-merge state (y)
expecting success of 3309.14 'merge z into y with "ours" per-ref configuration option => Non-conflicting 3-way merge':
git -c notes.y.mergeStrategy="ours" notes merge z &&
verify_notes y ours
Using local notes for 4acf42e847e7fffbbf89ee365c20ac7caf40de89
Using local notes for 65e263ded02ae4e8839bc151095113737579dc12
Using local notes for 7f9ad8836c775acb134c0a055fc55fb4cd1ba361
Using local notes for 9a4c31c7f722b5d517e92c64e932dd751e1413bf
ok 14 - merge z into y with "ours" per-ref configuration option => Non-conflicting 3-way merge
expecting success of 3309.15 'reset to pre-merge state (y)':
git update-ref refs/notes/y refs/notes/y^1 &&
# Verify pre-merge state
verify_notes y y
ok 15 - reset to pre-merge state (y)
expecting success of 3309.16 'merge z into y with "theirs" strategy => Non-conflicting 3-way merge':
git notes merge --strategy=theirs z &&
verify_notes y theirs
Using remote notes for 4acf42e847e7fffbbf89ee365c20ac7caf40de89
Using remote notes for 65e263ded02ae4e8839bc151095113737579dc12
Using remote notes for 7f9ad8836c775acb134c0a055fc55fb4cd1ba361
Using remote notes for 9a4c31c7f722b5d517e92c64e932dd751e1413bf
ok 16 - merge z into y with "theirs" strategy => Non-conflicting 3-way merge
expecting success of 3309.17 'reset to pre-merge state (y)':
git update-ref refs/notes/y refs/notes/y^1 &&
# Verify pre-merge state
verify_notes y y
ok 17 - reset to pre-merge state (y)
expecting success of 3309.18 'merge z into y with "theirs" strategy overriding configuration option "ours" => Non-conflicting 3-way merge':
git -c notes.mergeStrategy="ours" notes merge --strategy=theirs z &&
verify_notes y theirs
Using remote notes for 4acf42e847e7fffbbf89ee365c20ac7caf40de89
Using remote notes for 65e263ded02ae4e8839bc151095113737579dc12
Using remote notes for 7f9ad8836c775acb134c0a055fc55fb4cd1ba361
Using remote notes for 9a4c31c7f722b5d517e92c64e932dd751e1413bf
ok 18 - merge z into y with "theirs" strategy overriding configuration option "ours" => Non-conflicting 3-way merge
expecting success of 3309.19 'reset to pre-merge state (y)':
git update-ref refs/notes/y refs/notes/y^1 &&
# Verify pre-merge state
verify_notes y y
ok 19 - reset to pre-merge state (y)
expecting success of 3309.20 'merge z into y with "union" strategy => Non-conflicting 3-way merge':
git notes merge --strategy=union z &&
verify_notes y union
Concatenating local and remote notes for 4acf42e847e7fffbbf89ee365c20ac7caf40de89
Concatenating local and remote notes for 65e263ded02ae4e8839bc151095113737579dc12
Concatenating local and remote notes for 7f9ad8836c775acb134c0a055fc55fb4cd1ba361
Concatenating local and remote notes for 9a4c31c7f722b5d517e92c64e932dd751e1413bf
ok 20 - merge z into y with "union" strategy => Non-conflicting 3-way merge
expecting success of 3309.21 'reset to pre-merge state (y)':
git update-ref refs/notes/y refs/notes/y^1 &&
# Verify pre-merge state
verify_notes y y
ok 21 - reset to pre-merge state (y)
expecting success of 3309.22 'merge z into y with "union" strategy overriding per-ref configuration => Non-conflicting 3-way merge':
git -c notes.y.mergeStrategy="theirs" notes merge --strategy=union z &&
verify_notes y union
Concatenating local and remote notes for 4acf42e847e7fffbbf89ee365c20ac7caf40de89
Concatenating local and remote notes for 65e263ded02ae4e8839bc151095113737579dc12
Concatenating local and remote notes for 7f9ad8836c775acb134c0a055fc55fb4cd1ba361
Concatenating local and remote notes for 9a4c31c7f722b5d517e92c64e932dd751e1413bf
ok 22 - merge z into y with "union" strategy overriding per-ref configuration => Non-conflicting 3-way merge
expecting success of 3309.23 'reset to pre-merge state (y)':
git update-ref refs/notes/y refs/notes/y^1 &&
# Verify pre-merge state
verify_notes y y
ok 23 - reset to pre-merge state (y)
expecting success of 3309.24 'merge z into y with "union" per-ref overriding general configuration => Non-conflicting 3-way merge':
git -c notes.y.mergeStrategy="union" -c notes.mergeStrategy="theirs" notes merge z &&
verify_notes y union
Concatenating local and remote notes for 4acf42e847e7fffbbf89ee365c20ac7caf40de89
Concatenating local and remote notes for 65e263ded02ae4e8839bc151095113737579dc12
Concatenating local and remote notes for 7f9ad8836c775acb134c0a055fc55fb4cd1ba361
Concatenating local and remote notes for 9a4c31c7f722b5d517e92c64e932dd751e1413bf
ok 24 - merge z into y with "union" per-ref overriding general configuration => Non-conflicting 3-way merge
expecting success of 3309.25 'reset to pre-merge state (y)':
git update-ref refs/notes/y refs/notes/y^1 &&
# Verify pre-merge state
verify_notes y y
ok 25 - reset to pre-merge state (y)
expecting success of 3309.26 'merge z into y with "manual" per-ref only checks specific ref configuration => Conflicting 3-way merge':
test_must_fail git -c notes.z.mergeStrategy="union" notes merge z &&
git notes merge --abort &&
verify_notes y y
Automatic notes merge failed. Fix conflicts in .git/NOTES_MERGE_WORKTREE and commit the result with 'git notes merge --commit', or abort the merge with 'git notes merge --abort'.
Auto-merging notes for 4acf42e847e7fffbbf89ee365c20ac7caf40de89
CONFLICT (content): Merge conflict in notes for object 4acf42e847e7fffbbf89ee365c20ac7caf40de89
Auto-merging notes for 65e263ded02ae4e8839bc151095113737579dc12
CONFLICT (delete/modify): Notes for object 65e263ded02ae4e8839bc151095113737579dc12 deleted in refs/notes/z and modified in refs/notes/y. Version from refs/notes/y left in tree.
Auto-merging notes for 7f9ad8836c775acb134c0a055fc55fb4cd1ba361
CONFLICT (add/add): Merge conflict in notes for object 7f9ad8836c775acb134c0a055fc55fb4cd1ba361
Auto-merging notes for 9a4c31c7f722b5d517e92c64e932dd751e1413bf
CONFLICT (delete/modify): Notes for object 9a4c31c7f722b5d517e92c64e932dd751e1413bf deleted in refs/notes/y and modified in refs/notes/z. Version from refs/notes/z left in tree.
ok 26 - merge z into y with "manual" per-ref only checks specific ref configuration => Conflicting 3-way merge
expecting success of 3309.27 'merge y into z with "union" strategy => Non-conflicting 3-way merge':
git config core.notesRef refs/notes/z &&
git notes merge --strategy=union y &&
verify_notes z union2
Concatenating local and remote notes for 4acf42e847e7fffbbf89ee365c20ac7caf40de89
Concatenating local and remote notes for 65e263ded02ae4e8839bc151095113737579dc12
Concatenating local and remote notes for 7f9ad8836c775acb134c0a055fc55fb4cd1ba361
Concatenating local and remote notes for 9a4c31c7f722b5d517e92c64e932dd751e1413bf
ok 27 - merge y into z with "union" strategy => Non-conflicting 3-way merge
expecting success of 3309.28 'reset to pre-merge state (z)':
git update-ref refs/notes/z refs/notes/z^1 &&
# Verify pre-merge state
verify_notes z z
ok 28 - reset to pre-merge state (z)
expecting success of 3309.29 'merge y into z with "cat_sort_uniq" strategy => Non-conflicting 3-way merge':
git notes merge --strategy=cat_sort_uniq y &&
verify_notes z cat_sort_uniq
Concatenating unique lines in local and remote notes for 4acf42e847e7fffbbf89ee365c20ac7caf40de89
Concatenating unique lines in local and remote notes for 65e263ded02ae4e8839bc151095113737579dc12
Concatenating unique lines in local and remote notes for 7f9ad8836c775acb134c0a055fc55fb4cd1ba361
Concatenating unique lines in local and remote notes for 9a4c31c7f722b5d517e92c64e932dd751e1413bf
ok 29 - merge y into z with "cat_sort_uniq" strategy => Non-conflicting 3-way merge
expecting success of 3309.30 'reset to pre-merge state (z)':
git update-ref refs/notes/z refs/notes/z^1 &&
# Verify pre-merge state
verify_notes z z
ok 30 - reset to pre-merge state (z)
expecting success of 3309.31 'merge y into z with "cat_sort_uniq" strategy configuration option => Non-conflicting 3-way merge':
git -c notes.mergeStrategy="cat_sort_uniq" notes merge y &&
verify_notes z cat_sort_uniq
Concatenating unique lines in local and remote notes for 4acf42e847e7fffbbf89ee365c20ac7caf40de89
Concatenating unique lines in local and remote notes for 65e263ded02ae4e8839bc151095113737579dc12
Concatenating unique lines in local and remote notes for 7f9ad8836c775acb134c0a055fc55fb4cd1ba361
Concatenating unique lines in local and remote notes for 9a4c31c7f722b5d517e92c64e932dd751e1413bf
ok 31 - merge y into z with "cat_sort_uniq" strategy configuration option => Non-conflicting 3-way merge
# passed all 31 test(s)
1..31
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3310-notes-merge-manual-resolve.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3310-notes-merge-manual-resolve/.git/
expecting success of 3310.1 'setup commits':
test_commit 1st &&
test_commit 2nd &&
test_commit 3rd &&
test_commit 4th &&
test_commit 5th &&
test_oid_cache <<-EOF
hash04a sha1:6e8e3febca3c2bb896704335cc4d0c34cb2f8715
hash03a sha1:e5388c10860456ee60673025345fe2e153eb8cf8
hash02a sha1:ceefa674873670e7ecd131814d909723cce2b669
hash04b sha1:e2bfd06a37dd2031684a59a6e2b033e212239c78
hash03b sha1:5772f42408c0dd6f097a7ca2d24de0e78d1c46b1
hash01b sha1:b0a6021ec006d07e80e9b20ec9b444cbd9d560d3
hash04c sha1:cff59c793c20bb49a4e01bc06fb06bad642e0d54
hash02c sha1:283b48219aee9a4105f6cab337e789065c82c2b9
hash01c sha1:0a81da8956346e19bcb27a906f04af327e03e31b
hash04d sha1:00494adecf2d9635a02fa431308d67993f853968
hash01e sha1:f75d1df88cbfe4258d49852f26cfc83f2ad4494b
hash04f sha1:021faa20e931fb48986ffc6282b4bb05553ac946
hash01f sha1:0a59e787e6d688aa6309e56e8c1b89431a0fc1c1
hash05g sha1:304dfb4325cf243025b9957486eb605a9b51c199
hash04a sha256:f18a935e65866345098b3b754071dbf9f3aa3520eb27a7b036b278c5e2f1ed7e
hash03a sha256:713035dc94067a64e5fa6e4e1821b7c3bde49a77c7cb3f80eaadefa1ca41b3d2
hash02a sha256:f160a67e048b6fa75bec3952184154045076692cf5dccd3da21e3fd34b7a3f0f
hash04b sha256:c7fba0d6104917fbf35258f40b9fa4fc697cfa992deecd1570a3b08d0a5587a9
hash03b sha256:7287a2d78a3766c181b08df38951d784b08b72a44f571ed6d855bd0be22c70f6
hash01b sha256:da96cf778c15d0a2bb76f98b2a62f6c9c01730fa7030e8f08ef0191048e7d620
hash04c sha256:cb615d2def4b834d5f55b2351df97dc92bee4f5009d285201427f349081c8aca
hash02c sha256:63bb527e0b4e1c8e1dd0d54dd778ca7c3718689fd6e37c473044cfbcf1cacfdb
hash01c sha256:5b87237ac1fbae0246256fed9f9a1f077c4140fb7e6444925f8dbfa5ae406cd8
hash04d sha256:eeddc9f9f6cb3d6b39b861659853f10891dc373e0b6eecb09e03e39b6ce64714
hash01e sha256:108f521b1a74c2e6d0b52a4eda87e09162bf847f7d190cfce496ee1af0b29a5a
hash04f sha256:901acda0454502b3bbd281f130c419e6c8de78afcf72a8def8d45ad31462bce4
hash01f sha256:a2d99d1b8bf23c8af7d9d91368454adc110dfd5cc068a4cebb486ee8f5a1e16c
hash05g sha256:4fef015b01da8efe929a68e3bb9b8fbad81f53995f097befe8ebc93f12ab98ec
EOF
[master (root-commit) 04ed9a0] 1st
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 1st.t
[master 7a4ca6e] 2nd
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 2nd.t
[master d07d62e] 3rd
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 3rd.t
[master 0f7aa3e] 4th
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 4th.t
[master 7f9ad88] 5th
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 5th.t
ok 1 - setup commits
expecting success of 3310.2 'setup merge base (x)':
git config core.notesRef refs/notes/x &&
git notes add -m "x notes on 2nd commit" 2nd &&
git notes add -m "x notes on 3rd commit" 3rd &&
git notes add -m "x notes on 4th commit" 4th &&
verify_notes x
ok 2 - setup merge base (x)
expecting success of 3310.3 'setup local branch (y)':
git update-ref refs/notes/y refs/notes/x &&
git config core.notesRef refs/notes/y &&
git notes add -f -m "y notes on 1st commit" 1st &&
git notes remove 2nd &&
git notes add -f -m "y notes on 3rd commit" 3rd &&
git notes add -f -m "y notes on 4th commit" 4th &&
verify_notes y
Removing note for object 2nd
Overwriting existing notes for object d07d62e5208f22eb5695e7eb47667dc8b9860290
Overwriting existing notes for object 0f7aa3ec6325aeb88b910453bb3eb37c49d75c11
ok 3 - setup local branch (y)
expecting success of 3310.4 'setup remote branch (z)':
git update-ref refs/notes/z refs/notes/x &&
git config core.notesRef refs/notes/z &&
git notes add -f -m "z notes on 1st commit" 1st &&
git notes add -f -m "z notes on 2nd commit" 2nd &&
git notes remove 3rd &&
git notes add -f -m "z notes on 4th commit" 4th &&
verify_notes z
Overwriting existing notes for object 7a4ca6ee52a974a66cbaa78e33214535dff1d691
Removing note for object 3rd
Overwriting existing notes for object 0f7aa3ec6325aeb88b910453bb3eb37c49d75c11
ok 4 - setup remote branch (z)
expecting success of 3310.5 'merge z into m (== y) with default ("manual") resolver => Conflicting 3-way merge':
git update-ref refs/notes/m refs/notes/y &&
git config core.notesRef refs/notes/m &&
test_must_fail git notes merge z >output 2>&1 &&
# Output should point to where to resolve conflicts
test_i18ngrep "\\.git/NOTES_MERGE_WORKTREE" output &&
# Inspect merge conflicts
ls .git/NOTES_MERGE_WORKTREE >output_conflicts &&
test_cmp expect_conflicts output_conflicts &&
( for f in $(cat expect_conflicts); do
test_cmp "expect_conflict_$f" ".git/NOTES_MERGE_WORKTREE/$f" ||
exit 1
done ) &&
# Verify that current notes tree (pre-merge) has not changed (m == y)
verify_notes y &&
verify_notes m &&
test "$(git rev-parse refs/notes/m)" = "$(cat pre_merge_y)"
Automatic notes merge failed. Fix conflicts in .git/NOTES_MERGE_WORKTREE and commit the result with 'git notes merge --commit', or abort the merge with 'git notes merge --abort'.
ok 5 - merge z into m (== y) with default ("manual") resolver => Conflicting 3-way merge
expecting success of 3310.6 'change notes in z':
git notes --ref z append -m "More z notes on 4th commit" 4th &&
verify_notes z
ok 6 - change notes in z
expecting success of 3310.7 'cannot do merge w/conflicts when previous merge is unfinished':
test -d .git/NOTES_MERGE_WORKTREE &&
test_must_fail git notes merge z >output 2>&1 &&
# Output should indicate what is wrong
test_i18ngrep -q "\\.git/NOTES_MERGE_\\* exists" output
ok 7 - cannot do merge w/conflicts when previous merge is unfinished
expecting success of 3310.8 'setup unrelated notes ref (w)':
git config core.notesRef refs/notes/w &&
git notes add -m "w notes on 1st commit" 1st &&
git notes add -m "x notes on 2nd commit" 2nd &&
verify_notes w
ok 8 - setup unrelated notes ref (w)
expecting success of 3310.9 'can do merge without conflicts even if previous merge is unfinished (x => w)':
test -d .git/NOTES_MERGE_WORKTREE &&
git notes merge x &&
verify_notes w &&
# Verify that other notes refs has not changed (x and y)
verify_notes x &&
verify_notes y
ok 9 - can do merge without conflicts even if previous merge is unfinished (x => w)
expecting success of 3310.10 'do not allow mixing --commit and --abort':
test_must_fail git notes merge --commit --abort
error: cannot mix --commit, --abort or -s/--strategy
usage: git notes merge [<options>] <notes-ref>
or: git notes merge --commit [<options>]
or: git notes merge --abort [<options>]
General options
-v, --verbose be more verbose
-q, --quiet be more quiet
Merge options
-s, --strategy <strategy>
resolve notes conflicts using the given strategy (manual/ours/theirs/union/cat_sort_uniq)
Committing unmerged notes
--commit finalize notes merge by committing unmerged notes
Aborting notes merge resolution
--abort abort notes merge
ok 10 - do not allow mixing --commit and --abort
expecting success of 3310.11 'do not allow mixing --commit and --strategy':
test_must_fail git notes merge --commit --strategy theirs
error: cannot mix --commit, --abort or -s/--strategy
usage: git notes merge [<options>] <notes-ref>
or: git notes merge --commit [<options>]
or: git notes merge --abort [<options>]
General options
-v, --verbose be more verbose
-q, --quiet be more quiet
Merge options
-s, --strategy <strategy>
resolve notes conflicts using the given strategy (manual/ours/theirs/union/cat_sort_uniq)
Committing unmerged notes
--commit finalize notes merge by committing unmerged notes
Aborting notes merge resolution
--abort abort notes merge
ok 11 - do not allow mixing --commit and --strategy
expecting success of 3310.12 'do not allow mixing --abort and --strategy':
test_must_fail git notes merge --abort --strategy theirs
error: cannot mix --commit, --abort or -s/--strategy
usage: git notes merge [<options>] <notes-ref>
or: git notes merge --commit [<options>]
or: git notes merge --abort [<options>]
General options
-v, --verbose be more verbose
-q, --quiet be more quiet
Merge options
-s, --strategy <strategy>
resolve notes conflicts using the given strategy (manual/ours/theirs/union/cat_sort_uniq)
Committing unmerged notes
--commit finalize notes merge by committing unmerged notes
Aborting notes merge resolution
--abort abort notes merge
ok 12 - do not allow mixing --abort and --strategy
expecting success of 3310.13 'finalize conflicting merge (z => m)':
# Resolve conflicts and finalize merge
cat >.git/NOTES_MERGE_WORKTREE/$commit_sha1 <<EOF &&
y and z notes on 1st commit
EOF
cat >.git/NOTES_MERGE_WORKTREE/$commit_sha4 <<EOF &&
y and z notes on 4th commit
EOF
git notes merge --commit &&
notes_merge_files_gone &&
# Merge commit has pre-merge y and pre-merge z as parents
test "$(git rev-parse refs/notes/m^1)" = "$(cat pre_merge_y)" &&
test "$(git rev-parse refs/notes/m^2)" = "$(cat pre_merge_z)" &&
# Merge commit mentions the notes refs merged
git log -1 --format=%B refs/notes/m > merge_commit_msg &&
grep -q refs/notes/m merge_commit_msg &&
grep -q refs/notes/z merge_commit_msg &&
# Merge commit mentions conflicting notes
grep -q "Conflicts" merge_commit_msg &&
( for sha1 in $(cat expect_conflicts); do
grep -q "$sha1" merge_commit_msg ||
exit 1
done ) &&
# Verify contents of merge result
verify_notes m &&
# Verify that other notes refs has not changed (w, x, y and z)
verify_notes w &&
verify_notes x &&
verify_notes y &&
verify_notes z
ok 13 - finalize conflicting merge (z => m)
expecting success of 3310.14 'redo merge of z into m (== y) with default ("manual") resolver => Conflicting 3-way merge':
git update-ref refs/notes/m refs/notes/y &&
git config core.notesRef refs/notes/m &&
test_must_fail git notes merge z >output 2>&1 &&
# Output should point to where to resolve conflicts
test_i18ngrep "\\.git/NOTES_MERGE_WORKTREE" output &&
# Inspect merge conflicts
ls .git/NOTES_MERGE_WORKTREE >output_conflicts &&
test_cmp expect_conflicts output_conflicts &&
( for f in $(cat expect_conflicts); do
test_cmp "expect_conflict_$f" ".git/NOTES_MERGE_WORKTREE/$f" ||
exit 1
done ) &&
# Verify that current notes tree (pre-merge) has not changed (m == y)
verify_notes y &&
verify_notes m &&
test "$(git rev-parse refs/notes/m)" = "$(cat pre_merge_y)"
Automatic notes merge failed. Fix conflicts in .git/NOTES_MERGE_WORKTREE and commit the result with 'git notes merge --commit', or abort the merge with 'git notes merge --abort'.
ok 14 - redo merge of z into m (== y) with default ("manual") resolver => Conflicting 3-way merge
expecting success of 3310.15 'abort notes merge':
git notes merge --abort &&
notes_merge_files_gone &&
# m has not moved (still == y)
test "$(git rev-parse refs/notes/m)" = "$(cat pre_merge_y)" &&
# Verify that other notes refs has not changed (w, x, y and z)
verify_notes w &&
verify_notes x &&
verify_notes y &&
verify_notes z
ok 15 - abort notes merge
expecting success of 3310.16 'redo merge of z into m (== y) with default ("manual") resolver => Conflicting 3-way merge':
test_must_fail git notes merge z >output 2>&1 &&
# Output should point to where to resolve conflicts
test_i18ngrep "\\.git/NOTES_MERGE_WORKTREE" output &&
# Inspect merge conflicts
ls .git/NOTES_MERGE_WORKTREE >output_conflicts &&
test_cmp expect_conflicts output_conflicts &&
( for f in $(cat expect_conflicts); do
test_cmp "expect_conflict_$f" ".git/NOTES_MERGE_WORKTREE/$f" ||
exit 1
done ) &&
# Verify that current notes tree (pre-merge) has not changed (m == y)
verify_notes y &&
verify_notes m &&
test "$(git rev-parse refs/notes/m)" = "$(cat pre_merge_y)"
Automatic notes merge failed. Fix conflicts in .git/NOTES_MERGE_WORKTREE and commit the result with 'git notes merge --commit', or abort the merge with 'git notes merge --abort'.
ok 16 - redo merge of z into m (== y) with default ("manual") resolver => Conflicting 3-way merge
expecting success of 3310.17 'add + remove notes in finalized merge (z => m)':
# Resolve one conflict
cat >.git/NOTES_MERGE_WORKTREE/$commit_sha1 <<EOF &&
y and z notes on 1st commit
EOF
# Remove another conflict
rm .git/NOTES_MERGE_WORKTREE/$commit_sha4 &&
# Remove a D/F conflict
rm .git/NOTES_MERGE_WORKTREE/$commit_sha3 &&
# Add a new note
echo "new note on 5th commit" > .git/NOTES_MERGE_WORKTREE/$commit_sha5 &&
# Finalize merge
git notes merge --commit &&
notes_merge_files_gone &&
# Merge commit has pre-merge y and pre-merge z as parents
test "$(git rev-parse refs/notes/m^1)" = "$(cat pre_merge_y)" &&
test "$(git rev-parse refs/notes/m^2)" = "$(cat pre_merge_z)" &&
# Merge commit mentions the notes refs merged
git log -1 --format=%B refs/notes/m > merge_commit_msg &&
grep -q refs/notes/m merge_commit_msg &&
grep -q refs/notes/z merge_commit_msg &&
# Merge commit mentions conflicting notes
grep -q "Conflicts" merge_commit_msg &&
( for sha1 in $(cat expect_conflicts); do
grep -q "$sha1" merge_commit_msg ||
exit 1
done ) &&
# Verify contents of merge result
verify_notes m &&
# Verify that other notes refs has not changed (w, x, y and z)
verify_notes w &&
verify_notes x &&
verify_notes y &&
verify_notes z
ok 17 - add + remove notes in finalized merge (z => m)
expecting success of 3310.18 'redo merge of z into m (== y) with default ("manual") resolver => Conflicting 3-way merge':
git update-ref refs/notes/m refs/notes/y &&
test_must_fail git notes merge z >output 2>&1 &&
# Output should point to where to resolve conflicts
test_i18ngrep "\\.git/NOTES_MERGE_WORKTREE" output &&
# Inspect merge conflicts
ls .git/NOTES_MERGE_WORKTREE >output_conflicts &&
test_cmp expect_conflicts output_conflicts &&
( for f in $(cat expect_conflicts); do
test_cmp "expect_conflict_$f" ".git/NOTES_MERGE_WORKTREE/$f" ||
exit 1
done ) &&
# Verify that current notes tree (pre-merge) has not changed (m == y)
verify_notes y &&
verify_notes m &&
test "$(git rev-parse refs/notes/m)" = "$(cat pre_merge_y)"
Automatic notes merge failed. Fix conflicts in .git/NOTES_MERGE_WORKTREE and commit the result with 'git notes merge --commit', or abort the merge with 'git notes merge --abort'.
ok 18 - redo merge of z into m (== y) with default ("manual") resolver => Conflicting 3-way merge
expecting success of 3310.19 'reset notes ref m to somewhere else (w)':
git update-ref refs/notes/m refs/notes/w &&
verify_notes m &&
test "$(git rev-parse refs/notes/m)" = "$(git rev-parse refs/notes/w)"
ok 19 - reset notes ref m to somewhere else (w)
expecting success of 3310.20 'fail to finalize conflicting merge if underlying ref has moved in the meantime (m != NOTES_MERGE_PARTIAL^1)':
# Resolve conflicts
cat >.git/NOTES_MERGE_WORKTREE/$commit_sha1 <<EOF &&
y and z notes on 1st commit
EOF
cat >.git/NOTES_MERGE_WORKTREE/$commit_sha4 <<EOF &&
y and z notes on 4th commit
EOF
# Fail to finalize merge
test_must_fail git notes merge --commit >output 2>&1 &&
# .git/NOTES_MERGE_* must remain
test -f .git/NOTES_MERGE_PARTIAL &&
test -f .git/NOTES_MERGE_REF &&
test -f .git/NOTES_MERGE_WORKTREE/$commit_sha1 &&
test -f .git/NOTES_MERGE_WORKTREE/$commit_sha2 &&
test -f .git/NOTES_MERGE_WORKTREE/$commit_sha3 &&
test -f .git/NOTES_MERGE_WORKTREE/$commit_sha4 &&
# Refs are unchanged
test "$(git rev-parse refs/notes/m)" = "$(git rev-parse refs/notes/w)" &&
test "$(git rev-parse refs/notes/y)" = "$(git rev-parse NOTES_MERGE_PARTIAL^1)" &&
test "$(git rev-parse refs/notes/m)" != "$(git rev-parse NOTES_MERGE_PARTIAL^1)" &&
# Mention refs/notes/m, and its current and expected value in output
test_i18ngrep -q "refs/notes/m" output &&
test_i18ngrep -q "$(git rev-parse refs/notes/m)" output &&
test_i18ngrep -q "$(git rev-parse NOTES_MERGE_PARTIAL^1)" output &&
# Verify that other notes refs has not changed (w, x, y and z)
verify_notes w &&
verify_notes x &&
verify_notes y &&
verify_notes z
ok 20 - fail to finalize conflicting merge if underlying ref has moved in the meantime (m != NOTES_MERGE_PARTIAL^1)
expecting success of 3310.21 'resolve situation by aborting the notes merge':
git notes merge --abort &&
notes_merge_files_gone &&
# m has not moved (still == w)
test "$(git rev-parse refs/notes/m)" = "$(git rev-parse refs/notes/w)" &&
# Verify that other notes refs has not changed (w, x, y and z)
verify_notes w &&
verify_notes x &&
verify_notes y &&
verify_notes z
ok 21 - resolve situation by aborting the notes merge
expecting success of 3310.22 'switch cwd before committing notes merge':
git notes add -m foo HEAD &&
git notes --ref=other add -m bar HEAD &&
test_must_fail git notes merge refs/notes/other &&
(
cd .git/NOTES_MERGE_WORKTREE &&
echo "foo" > $(git rev-parse HEAD) &&
echo "bar" >> $(git rev-parse HEAD) &&
git notes merge --commit
) &&
git notes show HEAD > actual_notes &&
test_cmp expect_notes actual_notes
Automatic notes merge failed. Fix conflicts in .git/NOTES_MERGE_WORKTREE and commit the result with 'git notes merge --commit', or abort the merge with 'git notes merge --abort'.
Auto-merging notes for 7f9ad8836c775acb134c0a055fc55fb4cd1ba361
CONFLICT (add/add): Merge conflict in notes for object 7f9ad8836c775acb134c0a055fc55fb4cd1ba361
ok 22 - switch cwd before committing notes merge
# passed all 22 test(s)
1..22
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3320-notes-merge-worktrees.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3320-notes-merge-worktrees/.git/
expecting success of 3320.1 'setup commit':
test_commit tantrum
[main (root-commit) 02f8a63] tantrum
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 tantrum.t
ok 1 - setup commit
expecting success of 3320.2 'setup notes ref (x)':
git config core.notesRef refs/notes/x &&
git notes add -m "x notes on tantrum" tantrum
ok 2 - setup notes ref (x)
expecting success of 3320.3 'setup local branch (y)':
git update-ref refs/notes/y refs/notes/x &&
git config core.notesRef refs/notes/y &&
git notes remove tantrum
Removing note for object tantrum
ok 3 - setup local branch (y)
expecting success of 3320.4 'setup remote branch (z)':
git update-ref refs/notes/z refs/notes/x &&
git config core.notesRef refs/notes/z &&
git notes add -f -m "conflicting notes on tantrum" tantrum
Overwriting existing notes for object 02f8a63df5a5eb7863e18dffcbc422a31a01d39e
ok 4 - setup remote branch (z)
expecting success of 3320.5 'modify notes ref ourselves (x)':
git config core.notesRef refs/notes/x &&
git notes add -f -m "more conflicting notes on tantrum" tantrum
Overwriting existing notes for object 02f8a63df5a5eb7863e18dffcbc422a31a01d39e
ok 5 - modify notes ref ourselves (x)
expecting success of 3320.6 'create some new worktrees':
git worktree add -b newbranch worktree main &&
git worktree add -b newbranch2 worktree2 main
Preparing worktree (new branch 'newbranch')
HEAD is now at 02f8a63 tantrum
Preparing worktree (new branch 'newbranch2')
HEAD is now at 02f8a63 tantrum
ok 6 - create some new worktrees
expecting success of 3320.7 'merge z into y fails and sets NOTES_MERGE_REF':
git config core.notesRef refs/notes/y &&
test_must_fail git notes merge z &&
echo "refs/notes/y" >expect &&
git symbolic-ref NOTES_MERGE_REF >actual &&
test_cmp expect actual
Automatic notes merge failed. Fix conflicts in .git/NOTES_MERGE_WORKTREE and commit the result with 'git notes merge --commit', or abort the merge with 'git notes merge --abort'.
Auto-merging notes for 02f8a63df5a5eb7863e18dffcbc422a31a01d39e
CONFLICT (delete/modify): Notes for object 02f8a63df5a5eb7863e18dffcbc422a31a01d39e deleted in refs/notes/y and modified in refs/notes/z. Version from refs/notes/z left in tree.
ok 7 - merge z into y fails and sets NOTES_MERGE_REF
expecting success of 3320.8 'merge z into y while mid-merge in another workdir fails':
(
cd worktree &&
git config core.notesRef refs/notes/y &&
test_must_fail git notes merge z 2>err &&
test_i18ngrep "a notes merge into refs/notes/y is already in-progress at" err
) &&
test_must_fail git -C worktree symbolic-ref NOTES_MERGE_REF
Auto-merging notes for 02f8a63df5a5eb7863e18dffcbc422a31a01d39e
CONFLICT (delete/modify): Notes for object 02f8a63df5a5eb7863e18dffcbc422a31a01d39e deleted in refs/notes/y and modified in refs/notes/z. Version from refs/notes/z left in tree.
fatal: a notes merge into refs/notes/y is already in-progress at /<<PKGBUILDDIR>>/t/trash directory.t3320-notes-merge-worktrees
fatal: ref NOTES_MERGE_REF is not a symbolic ref
ok 8 - merge z into y while mid-merge in another workdir fails
expecting success of 3320.9 'merge z into x while mid-merge on y succeeds':
(
cd worktree2 &&
git config core.notesRef refs/notes/x &&
test_must_fail git notes merge z >out 2>&1 &&
test_i18ngrep "Automatic notes merge failed" out &&
grep -v "A notes merge into refs/notes/x is already in-progress in" out
) &&
echo "refs/notes/x" >expect &&
git -C worktree2 symbolic-ref NOTES_MERGE_REF >actual &&
test_cmp expect actual
Automatic notes merge failed. Fix conflicts in /<<PKGBUILDDIR>>/t/trash directory.t3320-notes-merge-worktrees/.git/worktrees/worktree2/NOTES_MERGE_WORKTREE and commit the result with 'git notes merge --commit', or abort the merge with 'git notes merge --abort'.
Automatic notes merge failed. Fix conflicts in /<<PKGBUILDDIR>>/t/trash directory.t3320-notes-merge-worktrees/.git/worktrees/worktree2/NOTES_MERGE_WORKTREE and commit the result with 'git notes merge --commit', or abort the merge with 'git notes merge --abort'.
Auto-merging notes for 02f8a63df5a5eb7863e18dffcbc422a31a01d39e
CONFLICT (content): Merge conflict in notes for object 02f8a63df5a5eb7863e18dffcbc422a31a01d39e
ok 9 - merge z into x while mid-merge on y succeeds
# passed all 9 test(s)
1..9
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3321-notes-stripspace.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3321-notes-stripspace/.git/
expecting success of 3321.1 'setup the commit':
test_commit 1st
[master (root-commit) 04ed9a0] 1st
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 1st.t
ok 1 - setup the commit
expecting success of 3321.2 'add note by editor':
test_when_finished "git notes remove" &&
cat >expect <<-EOF &&
first-line
second-line
EOF
MSG="${LF}first-line${MULTI_LF}second-line${LF}" git notes add &&
git notes show >actual &&
test_cmp expect actual
first-line
second-line
Removing note for object HEAD
ok 2 - add note by editor
expecting success of 3321.3 'add note by specifying single "-m", "--stripspace" is the default behavior':
test_when_finished "git notes remove" &&
cat >expect <<-EOF &&
first-line
second-line
EOF
git notes add -m "${LF}first-line${MULTI_LF}second-line${LF}" &&
git notes show >actual &&
test_cmp expect actual &&
git notes remove &&
git notes add --stripspace -m "${LF}first-line${MULTI_LF}second-line${LF}" &&
git notes show >actual &&
test_cmp expect actual
Removing note for object HEAD
Removing note for object HEAD
ok 3 - add note by specifying single "-m", "--stripspace" is the default behavior
expecting success of 3321.4 'add note by specifying single "-m" and "--no-stripspace" ':
test_when_finished "git notes remove" &&
cat >expect <<-EOF &&
${LF}first-line${MULTI_LF}second-line
EOF
git notes add --no-stripspace \
-m "${LF}first-line${MULTI_LF}second-line${LF}" &&
git notes show >actual &&
test_cmp expect actual
Removing note for object HEAD
ok 4 - add note by specifying single "-m" and "--no-stripspace"
expecting success of 3321.5 'add note by specifying multiple "-m", "--stripspace" is the default behavior':
test_when_finished "git notes remove" &&
cat >expect <<-EOF &&
first-line
second-line
EOF
git notes add -m "${LF}" \
-m "first-line" \
-m "${MULTI_LF}" \
-m "second-line" \
-m "${LF}" &&
git notes show >actual &&
test_cmp expect actual &&
git notes remove &&
git notes add --stripspace -m "${LF}" \
-m "first-line" \
-m "${MULTI_LF}" \
-m "second-line" \
-m "${LF}" &&
git notes show >actual &&
test_cmp expect actual
Removing note for object HEAD
Removing note for object HEAD
ok 5 - add note by specifying multiple "-m", "--stripspace" is the default behavior
expecting success of 3321.6 'add notes by specifying multiple "-m" and "--no-stripspace"':
test_when_finished "git notes remove" &&
cat >expect <<-EOF &&
${LF}
first-line
${MULTI_LF}
second-line${LF}
EOF
git notes add --no-stripspace \
-m "${LF}" \
-m "first-line" \
-m "${MULTI_LF}" \
-m "second-line" \
-m "${LF}" &&
git notes show >actual &&
test_cmp expect actual
Removing note for object HEAD
ok 6 - add notes by specifying multiple "-m" and "--no-stripspace"
expecting success of 3321.7 'add note by specifying single "-F", "--stripspace" is the default behavior':
test_when_finished "git notes remove" &&
cat >expect <<-EOF &&
first-line
second-line
EOF
cat >note-file <<-EOF &&
${LF}
first-line
${MULTI_LF}
second-line
${LF}
EOF
git notes add -F note-file &&
git notes show >actual &&
test_cmp expect actual &&
git notes remove &&
git notes add --stripspace -F note-file &&
git notes show >actual
Removing note for object HEAD
Removing note for object HEAD
ok 7 - add note by specifying single "-F", "--stripspace" is the default behavior
expecting success of 3321.8 'add note by specifying single "-F" and "--no-stripspace"':
test_when_finished "git notes remove" &&
cat >expect <<-EOF &&
${LF}
first-line
${MULTI_LF}
second-line
${LF}
EOF
cat >note-file <<-EOF &&
${LF}
first-line
${MULTI_LF}
second-line
${LF}
EOF
git notes add --no-stripspace -F note-file &&
git notes show >actual &&
test_cmp expect actual
Removing note for object HEAD
ok 8 - add note by specifying single "-F" and "--no-stripspace"
expecting success of 3321.9 'add note by specifying multiple "-F", "--stripspace" is the default behavior':
test_when_finished "git notes remove" &&
cat >expect <<-EOF &&
file-1-first-line
file-1-second-line
file-2-first-line
file-2-second-line
EOF
cat >note-file-1 <<-EOF &&
${LF}
file-1-first-line
${MULTI_LF}
file-1-second-line
${LF}
EOF
cat >note-file-2 <<-EOF &&
${LF}
file-2-first-line
${MULTI_LF}
file-2-second-line
${LF}
EOF
git notes add -F note-file-1 -F note-file-2 &&
git notes show >actual &&
test_cmp expect actual &&
git notes remove &&
git notes add --stripspace -F note-file-1 -F note-file-2 &&
git notes show >actual &&
test_cmp expect actual
Removing note for object HEAD
Removing note for object HEAD
ok 9 - add note by specifying multiple "-F", "--stripspace" is the default behavior
expecting success of 3321.10 'add note by specifying multiple "-F" with "--no-stripspace"':
test_when_finished "git notes remove" &&
cat >expect <<-EOF &&
${LF}
file-1-first-line
${MULTI_LF}
file-1-second-line
${LF}
${LF}
file-2-first-line
${MULTI_LF}
file-2-second-line
${LF}
EOF
cat >note-file-1 <<-EOF &&
${LF}
file-1-first-line
${MULTI_LF}
file-1-second-line
${LF}
EOF
cat >note-file-2 <<-EOF &&
${LF}
file-2-first-line
${MULTI_LF}
file-2-second-line
${LF}
EOF
git notes add --no-stripspace -F note-file-1 -F note-file-2 &&
git notes show >actual &&
test_cmp expect actual
Removing note for object HEAD
ok 10 - add note by specifying multiple "-F" with "--no-stripspace"
expecting success of 3321.11 'append note by editor':
test_when_finished "git notes remove" &&
cat >expect <<-EOF &&
first-line
second-line
EOF
git notes add -m "first-line" &&
MSG="${MULTI_LF}second-line${LF}" git notes append &&
git notes show >actual &&
test_cmp expect actual
second-line
Removing note for object HEAD
ok 11 - append note by editor
expecting success of 3321.12 'append note by specifying single "-m"':
test_when_finished "git notes remove" &&
cat >expect <<-EOF &&
first-line
second-line
EOF
git notes add -m "${LF}first-line" &&
git notes append -m "${MULTI_LF}second-line${LF}" &&
git notes show >actual &&
test_cmp expect actual
Removing note for object HEAD
ok 12 - append note by specifying single "-m"
expecting success of 3321.13 'append note by specifying multiple "-m"':
test_when_finished "git notes remove" &&
cat >expect <<-EOF &&
first-line
second-line
EOF
git notes add -m "${LF}first-line" &&
git notes append -m "${MULTI_LF}" \
-m "second-line" \
-m "${LF}" &&
git notes show >actual &&
test_cmp expect actual
Removing note for object HEAD
ok 13 - append note by specifying multiple "-m"
expecting success of 3321.14 'add note by specifying single "-F"':
test_when_finished "git notes remove" &&
cat >expect <<-EOF &&
first-line
second-line
EOF
cat >note-file <<-EOF &&
${LF}
first-line
${MULTI_LF}
second-line
${LF}
EOF
git notes add -F note-file &&
git notes show >actual &&
test_cmp expect actual
Removing note for object HEAD
ok 14 - add note by specifying single "-F"
expecting success of 3321.15 'add notes by specifying multiple "-F"':
test_when_finished "git notes remove" &&
cat >expect <<-EOF &&
file-1-first-line
file-1-second-line
file-2-first-line
file-2-second-line
EOF
cat >note-file-1 <<-EOF &&
${LF}
file-1-first-line
${MULTI_LF}
file-1-second-line
${LF}
EOF
cat >note-file-2 <<-EOF &&
${LF}
file-2-first-line
${MULTI_LF}
file-2-second-line
${LF}
EOF
git notes add -F note-file-1 -F note-file-2 &&
git notes show >actual &&
test_cmp expect actual
Removing note for object HEAD
ok 15 - add notes by specifying multiple "-F"
expecting success of 3321.16 'append note by specifying single "-F"':
test_when_finished "git notes remove" &&
cat >expect <<-EOF &&
initial-line
first-line
second-line
EOF
cat >note-file <<-EOF &&
${LF}
first-line
${MULTI_LF}
second-line
${LF}
EOF
git notes add -m "initial-line" &&
git notes append -F note-file &&
git notes show >actual &&
test_cmp expect actual
Removing note for object HEAD
ok 16 - append note by specifying single "-F"
expecting success of 3321.17 'append notes by specifying multiple "-F"':
test_when_finished "git notes remove" &&
cat >expect <<-EOF &&
initial-line
file-1-first-line
file-1-second-line
file-2-first-line
file-2-second-line
EOF
cat >note-file-1 <<-EOF &&
${LF}
file-1-first-line
${MULTI_LF}
file-1-second-line
${LF}
EOF
cat >note-file-2 <<-EOF &&
${LF}
file-2-first-line
${MULTI_LF}
file-2-second-line
${LF}
EOF
git notes add -m "initial-line" &&
git notes append -F note-file-1 -F note-file-2 &&
git notes show >actual &&
test_cmp expect actual
Removing note for object HEAD
ok 17 - append notes by specifying multiple "-F"
expecting success of 3321.18 'append note by specifying multiple "-F" with "--no-stripspace"':
test_when_finished "git notes remove" &&
cat >expect <<-EOF &&
initial-line
${LF}${LF}
file-1-first-line
${MULTI_LF}
file-1-second-line
${LF}
${LF}
file-2-first-line
${MULTI_LF}
file-2-second-line
${LF}
EOF
cat >note-file-1 <<-EOF &&
${LF}
file-1-first-line
${MULTI_LF}
file-1-second-line
${LF}
EOF
cat >note-file-2 <<-EOF &&
${LF}
file-2-first-line
${MULTI_LF}
file-2-second-line
${LF}
EOF
git notes add -m "initial-line" &&
git notes append --no-stripspace -F note-file-1 -F note-file-2 &&
git notes show >actual &&
test_cmp expect actual
Removing note for object HEAD
ok 18 - append note by specifying multiple "-F" with "--no-stripspace"
expecting success of 3321.19 'add notes with empty messages':
rev=$(git rev-parse HEAD) &&
git notes add -m "${LF}" \
-m "${MULTI_LF}" \
-m "${LF}" >actual 2>&1 &&
test_i18ngrep "Removing note for object" actual
Removing note for object 04ed9a0bbe0285f41c913e2002cb09ef8449d4a6
ok 19 - add notes with empty messages
expecting success of 3321.20 'add note by specifying "-C", "--no-stripspace" is the default behavior':
test_when_finished "git notes remove" &&
cat >expect <<-EOF &&
${LF}
first-line
${MULTI_LF}
second-line
${LF}
EOF
cat expect | git hash-object -w --stdin >blob &&
git notes add -C $(cat blob) &&
git notes show >actual &&
test_cmp expect actual &&
git notes remove &&
git notes add --no-stripspace -C $(cat blob) &&
git notes show >actual &&
test_cmp expect actual
Removing note for object HEAD
Removing note for object HEAD
ok 20 - add note by specifying "-C", "--no-stripspace" is the default behavior
expecting success of 3321.21 'reuse note by specifying "-C" and "--stripspace"':
test_when_finished "git notes remove" &&
cat >data <<-EOF &&
${LF}
first-line
${MULTI_LF}
second-line
${LF}
EOF
cat >expect <<-EOF &&
first-line
second-line
EOF
cat data | git hash-object -w --stdin >blob &&
git notes add --stripspace -C $(cat blob) &&
git notes show >actual &&
test_cmp expect actual
Removing note for object HEAD
ok 21 - reuse note by specifying "-C" and "--stripspace"
expecting success of 3321.22 'reuse with "-C" and add note with "-m", "-m" will stripspace all together':
test_when_finished "git notes remove" &&
cat >data <<-EOF &&
${LF}
first-line
${MULTI_LF}
second-line
${LF}
EOF
cat >expect <<-EOF &&
first-line
second-line
third-line
EOF
cat data | git hash-object -w --stdin >blob &&
git notes add -C $(cat blob) -m "third-line" &&
git notes show >actual &&
test_cmp expect actual
Removing note for object HEAD
ok 22 - reuse with "-C" and add note with "-m", "-m" will stripspace all together
expecting success of 3321.23 'add note with "-m" and reuse note with "-C", "-C" will not stripspace all together':
test_when_finished "git notes remove" &&
cat >data <<-EOF &&
second-line
EOF
cat >expect <<-EOF &&
first-line
${LF}
second-line
EOF
cat data | git hash-object -w --stdin >blob &&
git notes add -m "first-line" -C $(cat blob) &&
git notes show >actual &&
test_cmp expect actual
Removing note for object HEAD
ok 23 - add note with "-m" and reuse note with "-C", "-C" will not stripspace all together
expecting success of 3321.24 'add note by specifying "-c", "--stripspace" is the default behavior':
test_when_finished "git notes remove" &&
cat >expect <<-EOF &&
first-line
second-line
EOF
echo "initial-line" | git hash-object -w --stdin >blob &&
MSG="${LF}first-line${MULTI_LF}second-line${LF}" git notes add -c $(cat blob) &&
git notes show >actual &&
test_cmp expect actual &&
git notes remove &&
MSG="${LF}first-line${MULTI_LF}second-line${LF}" git notes add --stripspace -c $(cat blob) &&
git notes show >actual &&
test_cmp expect actual
first-line
second-line
Removing note for object HEAD
first-line
second-line
Removing note for object HEAD
ok 24 - add note by specifying "-c", "--stripspace" is the default behavior
expecting success of 3321.25 'add note by specifying "-c" with "--no-stripspace"':
test_when_finished "git notes remove" &&
cat >expect <<-EOF &&
${LF}first-line${MULTI_LF}second-line${LF}
EOF
echo "initial-line" | git hash-object -w --stdin >blob &&
MSG="${LF}first-line${MULTI_LF}second-line${LF}" git notes add --no-stripspace -c $(cat blob) &&
git notes show >actual &&
test_cmp expect actual
first-line
second-line
Removing note for object HEAD
ok 25 - add note by specifying "-c" with "--no-stripspace"
expecting success of 3321.26 'edit note by specifying "-c", "--stripspace" is the default behavior':
test_when_finished "git notes remove" &&
cat >expect <<-EOF &&
first-line
second-line
EOF
MSG="${LF}first-line${MULTI_LF}second-line${LF}" git notes edit &&
git notes show >actual &&
test_cmp expect actual &&
git notes remove &&
MSG="${LF}first-line${MULTI_LF}second-line${LF}" git notes edit --stripspace &&
git notes show >actual &&
test_cmp expect actual
first-line
second-line
Removing note for object HEAD
first-line
second-line
Removing note for object HEAD
ok 26 - edit note by specifying "-c", "--stripspace" is the default behavior
expecting success of 3321.27 'edit note by specifying "-c" with "--no-stripspace"':
test_when_finished "git notes remove" &&
cat >expect <<-EOF &&
${LF}first-line${MULTI_LF}second-line${LF}
EOF
MSG="${LF}first-line${MULTI_LF}second-line${LF}" git notes add --no-stripspace &&
git notes show >actual &&
test_cmp expect actual
first-line
second-line
Removing note for object HEAD
ok 27 - edit note by specifying "-c" with "--no-stripspace"
# passed all 27 test(s)
1..27
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3303-notes-subtrees.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3303-notes-subtrees/.git/
expecting success of 3303.1 'setup: create 100 commits':
(
nr=0 &&
while [ $nr -lt $number_of_commits ]; do
nr=$(($nr+1)) &&
test_tick &&
cat <<INPUT_END || return 1
commit refs/heads/main
committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
data <<COMMIT
commit #$nr
COMMIT
M 644 inline file
data <<EOF
file in commit #$nr
EOF
INPUT_END
done &&
test_tick &&
cat <<INPUT_END
commit refs/notes/commits
committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
data <<COMMIT
no notes
COMMIT
deleteall
INPUT_END
) |
git fast-import --quiet &&
git config core.notesRef refs/notes/commits
ok 1 - setup: create 100 commits
expecting success of 3303.2 'test notes in 2/38-fanout': test_sha1_based "s|^..|&/|"
ok 2 - test notes in 2/38-fanout
expecting success of 3303.3 'verify notes in 2/38-fanout': verify_notes
ok 3 - verify notes in 2/38-fanout
expecting success of 3303.4 'test notes in 2/2/36-fanout': test_sha1_based "s|^\(..\)\(..\)|\1/\2/|"
ok 4 - test notes in 2/2/36-fanout
expecting success of 3303.5 'verify notes in 2/2/36-fanout': verify_notes
ok 5 - verify notes in 2/2/36-fanout
expecting success of 3303.6 'test notes in 2/2/2/34-fanout': test_sha1_based "s|^\(..\)\(..\)\(..\)|\1/\2/\3/|"
ok 6 - test notes in 2/2/2/34-fanout
expecting success of 3303.7 'verify notes in 2/2/2/34-fanout': verify_notes
ok 7 - verify notes in 2/2/2/34-fanout
expecting success of 3303.8 'test same notes in no fanout and 2/38-fanout': test_same_notes "s|^..|&/|" ""
ok 8 - test same notes in no fanout and 2/38-fanout
expecting success of 3303.9 'verify same notes in no fanout and 2/38-fanout': verify_notes
ok 9 - verify same notes in no fanout and 2/38-fanout
expecting success of 3303.10 'test same notes in no fanout and 2/2/36-fanout': test_same_notes "s|^\(..\)\(..\)|\1/\2/|" ""
ok 10 - test same notes in no fanout and 2/2/36-fanout
expecting success of 3303.11 'verify same notes in no fanout and 2/2/36-fanout': verify_notes
ok 11 - verify same notes in no fanout and 2/2/36-fanout
expecting success of 3303.12 'test same notes in 2/38-fanout and 2/2/36-fanout': test_same_notes "s|^\(..\)\(..\)|\1/\2/|" "s|^..|&/|"
ok 12 - test same notes in 2/38-fanout and 2/2/36-fanout
expecting success of 3303.13 'verify same notes in 2/38-fanout and 2/2/36-fanout': verify_notes
ok 13 - verify same notes in 2/38-fanout and 2/2/36-fanout
expecting success of 3303.14 'test same notes in 2/2/2/34-fanout and 2/2/36-fanout': test_same_notes "s|^\(..\)\(..\)|\1/\2/|" "s|^\(..\)\(..\)\(..\)|\1/\2/\3/|"
ok 14 - test same notes in 2/2/2/34-fanout and 2/2/36-fanout
expecting success of 3303.15 'verify same notes in 2/2/2/34-fanout and 2/2/36-fanout': verify_notes
ok 15 - verify same notes in 2/2/2/34-fanout and 2/2/36-fanout
expecting success of 3303.16 'test notes in no fanout concatenated with 2/38-fanout': test_concatenated_notes "s|^..|&/|" ""
ok 16 - test notes in no fanout concatenated with 2/38-fanout
expecting success of 3303.17 'verify notes in no fanout concatenated with 2/38-fanout': verify_concatenated_notes
ok 17 - verify notes in no fanout concatenated with 2/38-fanout
expecting success of 3303.18 'test notes in no fanout concatenated with 2/2/36-fanout': test_concatenated_notes "s|^\(..\)\(..\)|\1/\2/|" ""
ok 18 - test notes in no fanout concatenated with 2/2/36-fanout
expecting success of 3303.19 'verify notes in no fanout concatenated with 2/2/36-fanout': verify_concatenated_notes
ok 19 - verify notes in no fanout concatenated with 2/2/36-fanout
expecting success of 3303.20 'test notes in 2/38-fanout concatenated with 2/2/36-fanout': test_concatenated_notes "s|^\(..\)\(..\)|\1/\2/|" "s|^..|&/|"
ok 20 - test notes in 2/38-fanout concatenated with 2/2/36-fanout
expecting success of 3303.21 'verify notes in 2/38-fanout concatenated with 2/2/36-fanout': verify_concatenated_notes
ok 21 - verify notes in 2/38-fanout concatenated with 2/2/36-fanout
expecting success of 3303.22 'test notes in 2/2/36-fanout concatenated with 2/2/2/34-fanout': test_concatenated_notes "s|^\(..\)\(..\)\(..\)|\1/\2/\3/|" "s|^\(..\)\(..\)|\1/\2/|"
ok 22 - test notes in 2/2/36-fanout concatenated with 2/2/2/34-fanout
expecting success of 3303.23 'verify notes in 2/2/36-fanout concatenated with 2/2/2/34-fanout': verify_concatenated_notes
ok 23 - verify notes in 2/2/36-fanout concatenated with 2/2/2/34-fanout
# passed all 23 test(s)
1..23
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3401-rebase-and-am-rename.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3401-rebase-and-am-rename/.git/
expecting success of 3401.1 'setup testcase where directory rename should be detected':
test_create_repo dir-rename &&
(
cd dir-rename &&
mkdir x &&
test_seq 1 10 >x/a &&
test_seq 11 20 >x/b &&
test_seq 21 30 >x/c &&
test_write_lines a b c d e f g h i >l &&
git add x l &&
git commit -m "Initial" &&
git branch O &&
git branch A &&
git branch B &&
git checkout A &&
git mv x y &&
git mv l letters &&
git commit -m "Rename x to y, l to letters" &&
git checkout B &&
echo j >>l &&
test_seq 31 40 >x/d &&
git add l x/d &&
git commit -m "Modify l, add x/d"
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3401-rebase-and-am-rename/dir-rename/.git/
[master (root-commit) 79c153a] Initial
Author: A U Thor <author@example.com>
4 files changed, 39 insertions(+)
create mode 100644 l
create mode 100644 x/a
create mode 100644 x/b
create mode 100644 x/c
Switched to branch 'A'
[A cc01e42] Rename x to y, l to letters
Author: A U Thor <author@example.com>
4 files changed, 0 insertions(+), 0 deletions(-)
rename l => letters (100%)
rename {x => y}/a (100%)
rename {x => y}/b (100%)
rename {x => y}/c (100%)
Switched to branch 'B'
[B 6c5e67f] Modify l, add x/d
Author: A U Thor <author@example.com>
2 files changed, 11 insertions(+)
create mode 100644 x/d
ok 1 - setup testcase where directory rename should be detected
expecting success of 3401.2 'rebase --interactive: directory rename detected':
(
cd dir-rename &&
git checkout B^0 &&
set_fake_editor &&
FAKE_LINES="1" git -c merge.directoryRenames=true rebase --interactive A &&
git ls-files -s >out &&
test_line_count = 5 out &&
test_path_is_file y/d &&
test_path_is_missing x/d
)
Note: switching to 'B^0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 6c5e67f Modify l, add x/d
rebase -i script before editing:
pick 6c5e67f Modify l, add x/d
rebase -i script after editing:
pick 6c5e67f Modify l, add x/d
Rebasing (1/1)
Successfully rebased and updated detached HEAD.
ok 2 - rebase --interactive: directory rename detected
checking known breakage of 3401.3 'rebase --apply: directory rename detected':
(
cd dir-rename &&
git checkout B^0 &&
git -c merge.directoryRenames=true rebase --apply A &&
git ls-files -s >out &&
test_line_count = 5 out &&
test_path_is_file y/d &&
test_path_is_missing x/d
)
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
2e986bc Modify l, add x/d
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 2e986bc
HEAD is now at 6c5e67f Modify l, add x/d
First, rewinding head to replay your work on top of it...
Applying: Modify l, add x/d
Using index info to reconstruct a base tree...
A l
Falling back to patching base and 3-way merge...
Merging:
cc01e42 Rename x to y, l to letters
virtual Modify l, add x/d
found 1 common ancestor:
virtual 4f45812d96b9febe1d7595b91de345b0a05fb0d4
File y/d doesn't exist
not ok 3 - rebase --apply: directory rename detected # TODO known breakage
expecting success of 3401.4 'rebase --merge: directory rename detected':
(
cd dir-rename &&
git checkout B^0 &&
git -c merge.directoryRenames=true rebase --merge A &&
git ls-files -s >out &&
test_line_count = 5 out &&
test_path_is_file y/d &&
test_path_is_missing x/d
)
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
7f699cd Modify l, add x/d
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 7f699cd
HEAD is now at 6c5e67f Modify l, add x/d
Rebasing (1/1)
Successfully rebased and updated detached HEAD.
ok 4 - rebase --merge: directory rename detected
checking known breakage of 3401.5 'am: directory rename detected':
(
cd dir-rename &&
git checkout A^0 &&
git format-patch -1 B &&
git -c merge.directoryRenames=true am --3way 0001*.patch &&
git ls-files -s >out &&
test_line_count = 5 out &&
test_path_is_file y/d &&
test_path_is_missing x/d
)
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
2e986bc Modify l, add x/d
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 2e986bc
HEAD is now at cc01e42 Rename x to y, l to letters
0001-Modify-l-add-x-d.patch
Applying: Modify l, add x/d
Using index info to reconstruct a base tree...
A l
Falling back to patching base and 3-way merge...
Merging:
cc01e42 Rename x to y, l to letters
virtual Modify l, add x/d
found 1 common ancestor:
virtual 4f45812d96b9febe1d7595b91de345b0a05fb0d4
File y/d doesn't exist
not ok 5 - am: directory rename detected # TODO known breakage
expecting success of 3401.6 'setup testcase where directory rename should NOT be detected':
test_create_repo no-dir-rename &&
(
cd no-dir-rename &&
mkdir x &&
test_seq 1 10 >x/a &&
test_seq 11 20 >x/b &&
test_seq 21 30 >x/c &&
echo original >project_info &&
git add x project_info &&
git commit -m "Initial" &&
git branch O &&
git branch A &&
git branch B &&
git checkout A &&
echo v2 >project_info &&
git add project_info &&
git commit -m "Modify project_info" &&
git checkout B &&
mkdir y &&
git mv x/c y/c &&
echo v1 >project_info &&
git add project_info &&
git commit -m "Rename x/c to y/c, modify project_info"
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3401-rebase-and-am-rename/no-dir-rename/.git/
[master (root-commit) 229b7b2] Initial
Author: A U Thor <author@example.com>
4 files changed, 31 insertions(+)
create mode 100644 project_info
create mode 100644 x/a
create mode 100644 x/b
create mode 100644 x/c
Switched to branch 'A'
[A 5e95ce3] Modify project_info
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to branch 'B'
[B 1f2a3f5] Rename x/c to y/c, modify project_info
Author: A U Thor <author@example.com>
2 files changed, 1 insertion(+), 1 deletion(-)
rename {x => y}/c (100%)
ok 6 - setup testcase where directory rename should NOT be detected
expecting success of 3401.7 'rebase --interactive: NO directory rename':
test_when_finished "git -C no-dir-rename rebase --abort" &&
(
cd no-dir-rename &&
git checkout B^0 &&
set_fake_editor &&
test_must_fail env FAKE_LINES="1" git rebase --interactive A &&
git ls-files -s >out &&
test_line_count = 6 out &&
test_path_is_file x/a &&
test_path_is_file x/b &&
test_path_is_missing x/c
)
Note: switching to 'B^0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 1f2a3f5 Rename x/c to y/c, modify project_info
rebase -i script before editing:
pick 1f2a3f5 Rename x/c to y/c, modify project_info
rebase -i script after editing:
pick 1f2a3f5 Rename x/c to y/c, modify project_info
Rebasing (1/1)
Auto-merging project_info
CONFLICT (content): Merge conflict in project_info
error: could not apply 1f2a3f5... Rename x/c to y/c, modify project_info
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 1f2a3f5... Rename x/c to y/c, modify project_info
ok 7 - rebase --interactive: NO directory rename
expecting success of 3401.8 'rebase (am): NO directory rename':
test_when_finished "git -C no-dir-rename rebase --abort" &&
(
cd no-dir-rename &&
git checkout B^0 &&
set_fake_editor &&
test_must_fail git rebase A &&
git ls-files -s >out &&
test_line_count = 6 out &&
test_path_is_file x/a &&
test_path_is_file x/b &&
test_path_is_missing x/c
)
HEAD is now at 1f2a3f5 Rename x/c to y/c, modify project_info
Rebasing (1/1)
Auto-merging project_info
CONFLICT (content): Merge conflict in project_info
error: could not apply 1f2a3f5... Rename x/c to y/c, modify project_info
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 1f2a3f5... Rename x/c to y/c, modify project_info
ok 8 - rebase (am): NO directory rename
expecting success of 3401.9 'rebase --merge: NO directory rename':
test_when_finished "git -C no-dir-rename rebase --abort" &&
(
cd no-dir-rename &&
git checkout B^0 &&
set_fake_editor &&
test_must_fail git rebase --merge A &&
git ls-files -s >out &&
test_line_count = 6 out &&
test_path_is_file x/a &&
test_path_is_file x/b &&
test_path_is_missing x/c
)
HEAD is now at 1f2a3f5 Rename x/c to y/c, modify project_info
Rebasing (1/1)
Auto-merging project_info
CONFLICT (content): Merge conflict in project_info
error: could not apply 1f2a3f5... Rename x/c to y/c, modify project_info
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 1f2a3f5... Rename x/c to y/c, modify project_info
ok 9 - rebase --merge: NO directory rename
expecting success of 3401.10 'am: NO directory rename':
test_when_finished "git -C no-dir-rename am --abort" &&
(
cd no-dir-rename &&
git checkout A^0 &&
git format-patch -1 B &&
test_must_fail git am --3way 0001*.patch &&
git ls-files -s >out &&
test_line_count = 6 out &&
test_path_is_file x/a &&
test_path_is_file x/b &&
test_path_is_missing x/c
)
Previous HEAD position was 1f2a3f5 Rename x/c to y/c, modify project_info
HEAD is now at 5e95ce3 Modify project_info
0001-Rename-x-c-to-y-c-modify-project_info.patch
Applying: Rename x/c to y/c, modify project_info
Using index info to reconstruct a base tree...
M project_info
Falling back to patching base and 3-way merge...
Merging:
5e95ce3 Modify project_info
virtual Rename x/c to y/c, modify project_info
found 1 common ancestor:
virtual 70041a03917eeabc905137ab5853aed716a92bc6
Auto-merging project_info
CONFLICT (content): Merge conflict in project_info
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 Rename x/c to y/c, modify project_info
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
ok 10 - am: NO directory rename
# still have 2 known breakage(s)
# passed all remaining 8 test(s)
1..10
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3402-rebase-merge.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3402-rebase-merge/.git/
expecting success of 3402.1 'setup':
git add original &&
git commit -m"initial" &&
git branch side &&
echo "11 $T" >>original &&
git commit -a -m"main updates a bit." &&
echo "12 $T" >>original &&
git commit -a -m"main updates a bit more." &&
git checkout side &&
(echo "0 $T" && cat original) >renamed &&
git add renamed &&
git update-index --force-remove original &&
git commit -a -m"side renames and edits." &&
tr "[a-z]" "[A-Z]" <original >newfile &&
git add newfile &&
git commit -a -m"side edits further." &&
git branch second-side &&
tr "[a-m]" "[A-M]" <original >newfile &&
rm -f original &&
git commit -a -m"side edits once again." &&
git branch test-rebase side &&
git branch test-rebase-pick side &&
git branch test-reference-pick side &&
git branch test-conflicts side &&
git checkout -b test-merge side
[main (root-commit) ea140ad] initial
Author: A U Thor <author@example.com>
1 file changed, 20 insertions(+)
create mode 100644 original
[main 3fbedc5] main updates a bit.
Author: A U Thor <author@example.com>
1 file changed, 2 insertions(+)
[main 9d5d029] main updates a bit more.
Author: A U Thor <author@example.com>
1 file changed, 2 insertions(+)
Switched to branch 'side'
[side 2f3019a] side renames and edits.
Author: A U Thor <author@example.com>
1 file changed, 2 insertions(+)
rename original => renamed (90%)
[side e99fe16] side edits further.
Author: A U Thor <author@example.com>
1 file changed, 20 insertions(+)
create mode 100644 newfile
[side 5203c39] side edits once again.
Author: A U Thor <author@example.com>
1 file changed, 20 insertions(+), 20 deletions(-)
Switched to a new branch 'test-merge'
ok 1 - setup
expecting success of 3402.2 'reference merge':
git merge -s recursive -m "reference merge" main
Auto-merging renamed
Merge made by the 'ort' strategy.
renamed | 4 ++++
1 file changed, 4 insertions(+)
ok 2 - reference merge
expecting success of 3402.3 'rebase':
git checkout test-rebase &&
GIT_TRACE=1 git rebase --merge main
Switched to branch 'test-rebase'
trace: built-in: git rebase --merge main
Rebasing (1/3)
Rebasing (2/3)
Rebasing (3/3)
trace: run_command: git notes copy --for-rewrite=rebase
trace: built-in: git notes copy --for-rewrite=rebase
Successfully rebased and updated refs/heads/test-rebase.
ok 3 - rebase
expecting success of 3402.4 'test-rebase@{1} is pre rebase':
test $PRE_REBASE = $(git rev-parse test-rebase@{1})
ok 4 - test-rebase@{1} is pre rebase
expecting success of 3402.5 'merge and rebase should match':
git diff-tree -r test-rebase test-merge >difference &&
if test -s difference
then
cat difference
false
else
echo happy
fi
happy
ok 5 - merge and rebase should match
expecting success of 3402.6 'rebase the other way':
git reset --hard main &&
git rebase --merge side
HEAD is now at 9d5d029 main updates a bit more.
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/test-rebase.
ok 6 - rebase the other way
expecting success of 3402.7 'rebase -Xtheirs':
git checkout -b conflicting main~2 &&
echo "AB $T" >> original &&
git commit -mconflicting original &&
git rebase -Xtheirs main &&
grep AB original &&
! grep 11 original
Switched to a new branch 'conflicting'
[conflicting 0a8644e] conflicting
Author: A U Thor <author@example.com>
1 file changed, 2 insertions(+)
Rebasing (1/1)
Successfully rebased and updated refs/heads/conflicting.
AB A quick brown fox
ok 7 - rebase -Xtheirs
expecting success of 3402.8 'rebase -Xtheirs from orphan':
git checkout --orphan orphan-conflicting main~2 &&
echo "AB $T" >> original &&
git commit -morphan-conflicting original &&
git rebase -Xtheirs main &&
grep AB original &&
! grep 11 original
Switched to a new branch 'orphan-conflicting'
[orphan-conflicting (root-commit) 9b6ca42] orphan-conflicting
Author: A U Thor <author@example.com>
1 file changed, 22 insertions(+)
create mode 100644 original
Rebasing (1/1)
Successfully rebased and updated refs/heads/orphan-conflicting.
AB A quick brown fox
ok 8 - rebase -Xtheirs from orphan
expecting success of 3402.9 'merge and rebase should match':
git diff-tree -r test-rebase test-merge >difference &&
if test -s difference
then
cat difference
false
else
echo happy
fi
happy
ok 9 - merge and rebase should match
expecting success of 3402.10 'picking rebase':
git reset --hard side &&
git rebase --merge --onto main side^^ &&
mb=$(git merge-base main HEAD) &&
if test "$mb" = "$(git rev-parse main)"
then
echo happy
else
git show-branch
false
fi &&
f=$(git diff-tree --name-only HEAD^ HEAD) &&
g=$(git diff-tree --name-only HEAD^^ HEAD^) &&
case "$f,$g" in
newfile,newfile)
echo happy ;;
*)
echo "$f"
echo "$g"
false
esac
HEAD is now at 5203c39 side edits once again.
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/orphan-conflicting.
happy
happy
ok 10 - picking rebase
expecting success of 3402.11 'rebase --skip works with two conflicts in a row':
git checkout second-side &&
tr "[A-Z]" "[a-z]" <newfile >tmp &&
mv tmp newfile &&
git commit -a -m"edit conflicting with side" &&
tr "[d-f]" "[D-F]" <newfile >tmp &&
mv tmp newfile &&
git commit -a -m"another edit conflicting with side" &&
test_must_fail git rebase --merge test-conflicts &&
test_must_fail git rebase --skip &&
git rebase --skip
Switched to branch 'second-side'
[second-side 546296f] edit conflicting with side
Author: A U Thor <author@example.com>
1 file changed, 20 insertions(+), 20 deletions(-)
[second-side 896ca60] another edit conflicting with side
Author: A U Thor <author@example.com>
1 file changed, 20 insertions(+), 20 deletions(-)
Rebasing (1/2)
Auto-merging newfile
CONFLICT (content): Merge conflict in newfile
error: could not apply 546296f... edit conflicting with side
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 546296f... edit conflicting with side
Rebasing (2/2)
Auto-merging newfile
CONFLICT (content): Merge conflict in newfile
error: could not apply 896ca60... another edit conflicting with side
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 896ca60... another edit conflicting with side
Successfully rebased and updated refs/heads/second-side.
ok 11 - rebase --skip works with two conflicts in a row
expecting success of 3402.12 '--reapply-cherry-picks':
git init repo &&
# O(1-10) -- O(1-11) -- O(0-10) main
# \
# -- O(1-11) -- O(1-12) otherbranch
printf "Line %d\n" $(test_seq 1 10) >repo/file.txt &&
git -C repo add file.txt &&
git -C repo commit -m "base commit" &&
printf "Line %d\n" $(test_seq 1 11) >repo/file.txt &&
git -C repo commit -a -m "add 11" &&
printf "Line %d\n" $(test_seq 0 10) >repo/file.txt &&
git -C repo commit -a -m "add 0 delete 11" &&
git -C repo checkout -b otherbranch HEAD^^ &&
printf "Line %d\n" $(test_seq 1 11) >repo/file.txt &&
git -C repo commit -a -m "add 11 in another branch" &&
printf "Line %d\n" $(test_seq 1 12) >repo/file.txt &&
git -C repo commit -a -m "add 12 in another branch" &&
# Regular rebase fails, because the 1-11 commit is deduplicated
test_must_fail git -C repo rebase --merge main 2> err &&
test_i18ngrep "error: could not apply.*add 12 in another branch" err &&
git -C repo rebase --abort &&
# With --reapply-cherry-picks, it works
git -C repo rebase --merge --reapply-cherry-picks main
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3402-rebase-merge/repo/.git/
[main (root-commit) 501a156] base commit
Author: A U Thor <author@example.com>
1 file changed, 10 insertions(+)
create mode 100644 file.txt
[main c19c7b3] add 11
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[main 841ae2b] add 0 delete 11
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to a new branch 'otherbranch'
[otherbranch a7517c6] add 11 in another branch
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[otherbranch e4b3c77] add 12 in another branch
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
Auto-merging file.txt
CONFLICT (content): Merge conflict in file.txt
Rebasing (1/1)
error: could not apply e4b3c77... add 12 in another branch
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/otherbranch.
ok 12 - --reapply-cherry-picks
expecting success of 3402.13 '--reapply-cherry-picks refrains from reading unneeded blobs':
git init server &&
# O(1-10) -- O(1-11) -- O(1-12) main
# \
# -- O(0-10) otherbranch
printf "Line %d\n" $(test_seq 1 10) >server/file.txt &&
git -C server add file.txt &&
git -C server commit -m "merge base" &&
printf "Line %d\n" $(test_seq 1 11) >server/file.txt &&
git -C server commit -a -m "add 11" &&
printf "Line %d\n" $(test_seq 1 12) >server/file.txt &&
git -C server commit -a -m "add 12" &&
git -C server checkout -b otherbranch HEAD^^ &&
printf "Line %d\n" $(test_seq 0 10) >server/file.txt &&
git -C server commit -a -m "add 0" &&
test_config -C server uploadpack.allowfilter 1 &&
test_config -C server uploadpack.allowanysha1inwant 1 &&
git clone --filter=blob:none "file://$(pwd)/server" client &&
git -C client checkout origin/main &&
git -C client checkout origin/otherbranch &&
# Sanity check to ensure that the blobs from the merge base and "add
# 11" are missing
git -C client rev-list --objects --all --missing=print >missing_list &&
MERGE_BASE_BLOB=$(git -C server rev-parse main^^:file.txt) &&
ADD_11_BLOB=$(git -C server rev-parse main^:file.txt) &&
grep "[?]$MERGE_BASE_BLOB" missing_list &&
grep "[?]$ADD_11_BLOB" missing_list &&
git -C client rebase --merge --reapply-cherry-picks origin/main &&
# The blob from the merge base had to be fetched, but not "add 11"
git -C client rev-list --objects --all --missing=print >missing_list &&
! grep "[?]$MERGE_BASE_BLOB" missing_list &&
grep "[?]$ADD_11_BLOB" missing_list
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3402-rebase-merge/server/.git/
[main (root-commit) ded066b] merge base
Author: A U Thor <author@example.com>
1 file changed, 10 insertions(+)
create mode 100644 file.txt
[main c684029] add 11
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[main 161081c] add 12
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
Switched to a new branch 'otherbranch'
[otherbranch ffb36e9] add 0
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
Cloning into 'client'...
Note: switching to 'origin/main'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 161081c add 12
Previous HEAD position was 161081c add 12
HEAD is now at ffb36e9 add 0
?00935f183cbd9243998bd3f84ac67e18eff726a4
?8bf8891e216480d36945027a1d30bdbba5c96d90
Rebasing (1/1)
Successfully rebased and updated detached HEAD.
?8bf8891e216480d36945027a1d30bdbba5c96d90
ok 13 - --reapply-cherry-picks refrains from reading unneeded blobs
# passed all 13 test(s)
1..13
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3400-rebase.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3400-rebase/.git/
expecting success of 3400.1 'prepare repository with topic branches':
test_commit "Add A." A First First &&
git checkout -b force-3way &&
echo Dummy >Y &&
git update-index --add Y &&
git commit -m "Add Y." &&
git checkout -b filemove &&
git reset --soft main &&
mkdir D &&
git mv A D/A &&
git commit -m "Move A." &&
git checkout -b my-topic-branch main &&
test_commit "Add B." B Second Second &&
git checkout -f main &&
echo Third >>A &&
git update-index A &&
git commit -m "Modify A." &&
git checkout -b side my-topic-branch &&
echo Side >>C &&
git add C &&
git commit -m "Add C" &&
git checkout -f my-topic-branch &&
git tag topic
[main (root-commit) fefbb15] Add A.
Author: author@name <bogus@email@address>
1 file changed, 1 insertion(+)
create mode 100644 A
Switched to a new branch 'force-3way'
[force-3way 779feee] Add Y.
Author: author@name <bogus@email@address>
1 file changed, 1 insertion(+)
create mode 100644 Y
Switched to a new branch 'filemove'
[filemove 4b62ea1] Move A.
Author: author@name <bogus@email@address>
2 files changed, 1 insertion(+)
rename A => D/A (100%)
create mode 100644 Y
Switched to a new branch 'my-topic-branch'
[my-topic-branch 5d79b4b] Add B.
Author: author@name <bogus@email@address>
1 file changed, 1 insertion(+)
create mode 100644 B
Switched to branch 'main'
[main 79095e6] Modify A.
Author: author@name <bogus@email@address>
1 file changed, 1 insertion(+)
Switched to a new branch 'side'
[side af81839] Add C
Author: author@name <bogus@email@address>
1 file changed, 1 insertion(+)
create mode 100644 C
Switched to branch 'my-topic-branch'
ok 1 - prepare repository with topic branches
expecting success of 3400.2 'rebase on dirty worktree':
echo dirty >>A &&
test_must_fail git rebase main
error: cannot rebase: You have unstaged changes.
error: Please commit or stash them.
ok 2 - rebase on dirty worktree
expecting success of 3400.3 'rebase on dirty cache':
git add A &&
test_must_fail git rebase main
error: cannot rebase: Your index contains uncommitted changes.
error: Please commit or stash them.
ok 3 - rebase on dirty cache
expecting success of 3400.4 'rebase against main':
git reset --hard HEAD &&
git rebase main
HEAD is now at 5d79b4b Add B.
Rebasing (1/1)
Successfully rebased and updated refs/heads/my-topic-branch.
ok 4 - rebase against main
expecting success of 3400.5 'rebase sets ORIG_HEAD to pre-rebase state':
git checkout -b orig-head topic &&
pre="$(git rev-parse --verify HEAD)" &&
git rebase main &&
test_cmp_rev "$pre" ORIG_HEAD &&
test_cmp_rev ! "$pre" HEAD
Switched to a new branch 'orig-head'
Rebasing (1/1)
Successfully rebased and updated refs/heads/orig-head.
ok 5 - rebase sets ORIG_HEAD to pre-rebase state
expecting success of 3400.6 'rebase, with <onto> and <upstream> specified as :/quuxery':
test_when_finished "git branch -D torebase" &&
git checkout -b torebase my-topic-branch^ &&
upstream=$(git rev-parse ":/Add B") &&
onto=$(git rev-parse ":/Add A") &&
git rebase --onto $onto $upstream &&
git reset --hard my-topic-branch^ &&
git rebase --onto ":/Add A" ":/Add B" &&
git checkout my-topic-branch
Switched to a new branch 'torebase'
Current branch torebase is up to date.
HEAD is now at 79095e6 Modify A.
Current branch torebase is up to date.
Switched to branch 'my-topic-branch'
Deleted branch torebase (was 79095e6).
ok 6 - rebase, with <onto> and <upstream> specified as :/quuxery
expecting success of 3400.7 'the rebase operation should not have destroyed author information':
! (git log | grep "Author:" | grep "<>")
ok 7 - the rebase operation should not have destroyed author information
expecting success of 3400.8 'the rebase operation should not have destroyed author information (2)':
git log -1 |
grep 'Author: author@name <bogus@email@address>'
Author: author@name <bogus@email@address>
ok 8 - the rebase operation should not have destroyed author information (2)
expecting success of 3400.9 'HEAD was detached during rebase':
test $(git rev-parse HEAD@{1}) != $(git rev-parse my-topic-branch@{1})
ok 9 - HEAD was detached during rebase
expecting success of 3400.10 'rebase from ambiguous branch name':
git checkout -b topic side &&
git rebase main
Switched to a new branch 'topic'
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/topic.
ok 10 - rebase from ambiguous branch name
expecting success of 3400.11 'rebase off of the previous branch using "-"':
git checkout main &&
git checkout HEAD^ &&
git rebase @{-1} >expect.messages &&
git merge-base main HEAD >expect.forkpoint &&
git checkout main &&
git checkout HEAD^ &&
git rebase - >actual.messages &&
git merge-base main HEAD >actual.forkpoint &&
test_cmp expect.forkpoint actual.forkpoint &&
# the next one is dubious---we may want to say "-",
# instead of @{-1}, in the message
test_cmp expect.messages actual.messages
Switched to branch 'main'
Note: switching to 'HEAD^'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at fefbb15 Add A.
Successfully rebased and updated detached HEAD.
Switched to branch 'main'
Note: switching to 'HEAD^'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at fefbb15 Add A.
Successfully rebased and updated detached HEAD.
ok 11 - rebase off of the previous branch using "-"
expecting success of 3400.12 'rebase a single mode change':
git checkout main &&
git branch -D topic &&
echo 1 >X &&
git add X &&
test_tick &&
git commit -m prepare &&
git checkout -b modechange HEAD^ &&
echo 1 >X &&
git add X &&
test_chmod +x A &&
test_tick &&
git commit -m modechange &&
GIT_TRACE=1 git rebase main
Switched to branch 'main'
Deleted branch topic (was 93c5c54).
[main 1fb901f] prepare
Author: author@name <bogus@email@address>
1 file changed, 1 insertion(+)
create mode 100644 X
Switched to a new branch 'modechange'
[modechange 0e9b7fa] modechange
Author: author@name <bogus@email@address>
2 files changed, 1 insertion(+)
mode change 100644 => 100755 A
create mode 100644 X
trace: built-in: git rebase main
Rebasing (1/1)
trace: run_command: git notes copy --for-rewrite=rebase
trace: built-in: git notes copy --for-rewrite=rebase
Successfully rebased and updated refs/heads/modechange.
ok 12 - rebase a single mode change
expecting success of 3400.13 'rebase is not broken by diff.renames':
test_config diff.renames copies &&
git checkout filemove &&
GIT_TRACE=1 git rebase force-3way
Switched to branch 'filemove'
trace: built-in: git rebase force-3way
Rebasing (1/1)
trace: run_command: git notes copy --for-rewrite=rebase
trace: built-in: git notes copy --for-rewrite=rebase
Successfully rebased and updated refs/heads/filemove.
ok 13 - rebase is not broken by diff.renames
expecting success of 3400.14 'setup: recover':
test_might_fail git rebase --abort &&
git reset --hard &&
git checkout modechange
fatal: No rebase in progress?
HEAD is now at 6359119 Move A.
Switched to branch 'modechange'
ok 14 - setup: recover
expecting success of 3400.15 'Show verbose error when HEAD could not be detached':
>B &&
test_when_finished "rm -f B" &&
test_must_fail git rebase topic 2>output.err >output.out &&
test_i18ngrep "The following untracked working tree files would be overwritten by checkout:" output.err &&
test_i18ngrep B output.err
error: The following untracked working tree files would be overwritten by checkout:
B
ok 15 - Show verbose error when HEAD could not be detached
expecting success of 3400.16 'fail when upstream arg is missing and not on branch':
git checkout topic &&
test_must_fail git rebase
Note: switching to 'topic'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 5d79b4b Add B.
You are not currently on a branch.
Please specify which branch you want to rebase against.
See git-rebase(1) for details.
git rebase '<branch>'
ok 16 - fail when upstream arg is missing and not on branch
expecting success of 3400.17 'fail when upstream arg is missing and not configured':
git checkout -b no-config topic &&
test_must_fail git rebase
Switched to a new branch 'no-config'
There is no tracking information for the current branch.
Please specify which branch you want to rebase against.
See git-rebase(1) for details.
git rebase '<branch>'
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=<remote>/<branch> no-config
ok 17 - fail when upstream arg is missing and not configured
expecting success of 3400.18 'rebase works with format.useAutoBase':
test_config format.useAutoBase true &&
git checkout topic &&
git rebase main
Note: switching to 'topic'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 5d79b4b Add B.
Rebasing (1/1)
Successfully rebased and updated detached HEAD.
ok 18 - rebase works with format.useAutoBase
expecting success of 3400.19 'default to common base in @{upstream}s reflog if no upstream arg (--merge)':
git checkout -b default-base main &&
git checkout -b default topic &&
git config branch.default.remote . &&
git config branch.default.merge refs/heads/default-base &&
git rebase --merge &&
git rev-parse --verify default-base >expect &&
git rev-parse default~1 >actual &&
test_cmp expect actual &&
git checkout default-base &&
git reset --hard HEAD^ &&
git checkout default &&
git rebase --merge &&
git rev-parse --verify default-base >expect &&
git rev-parse default~1 >actual &&
test_cmp expect actual
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
b86b84f Add B.
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> b86b84f
Switched to a new branch 'default-base'
Switched to a new branch 'default'
Rebasing (1/1)
Successfully rebased and updated refs/heads/default.
Switched to branch 'default-base'
HEAD is now at 79095e6 Modify A.
Switched to branch 'default'
Your branch is ahead of 'default-base' by 2 commits.
(use "git push" to publish your local commits)
Rebasing (1/1)
Successfully rebased and updated refs/heads/default.
ok 19 - default to common base in @{upstream}s reflog if no upstream arg (--merge)
expecting success of 3400.20 'default to common base in @{upstream}s reflog if no upstream arg (--apply)':
git checkout -B default-base main &&
git checkout -B default topic &&
git config branch.default.remote . &&
git config branch.default.merge refs/heads/default-base &&
git rebase --apply &&
git rev-parse --verify default-base >expect &&
git rev-parse default~1 >actual &&
test_cmp expect actual &&
git checkout default-base &&
git reset --hard HEAD^ &&
git checkout default &&
git rebase --apply &&
git rev-parse --verify default-base >expect &&
git rev-parse default~1 >actual &&
test_cmp expect actual
Switched to and reset branch 'default-base'
Switched to and reset branch 'default'
Your branch and 'default-base' have diverged,
and have 1 and 2 different commits each, respectively.
(use "git pull" if you want to integrate the remote branch with yours)
First, rewinding head to replay your work on top of it...
Applying: Add B.
Switched to branch 'default-base'
HEAD is now at 79095e6 Modify A.
Switched to branch 'default'
Your branch is ahead of 'default-base' by 2 commits.
(use "git push" to publish your local commits)
First, rewinding head to replay your work on top of it...
Applying: Add B.
ok 20 - default to common base in @{upstream}s reflog if no upstream arg (--apply)
expecting success of 3400.21 'cherry-picked commits and fork-point work together':
git checkout default-base &&
echo Amended >A &&
git commit -a --no-edit --amend &&
test_commit B B &&
test_commit new_B B "New B" &&
test_commit C C &&
git checkout default &&
git reset --hard default-base@{4} &&
test_commit D D &&
git cherry-pick -2 default-base^ &&
test_commit final_B B "Final B" &&
git rebase &&
echo Amended >expect &&
test_cmp expect A &&
echo "Final B" >expect &&
test_cmp expect B &&
echo C >expect &&
test_cmp expect C &&
echo D >expect &&
test_cmp expect D
Switched to branch 'default-base'
[default-base 10c1269] Modify A.
Author: author@name <bogus@email@address>
Date: Thu Apr 7 15:14:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
[default-base 33daa44] B
Author: author@name <bogus@email@address>
1 file changed, 1 insertion(+)
create mode 100644 B
[default-base bb1e483] new_B
Author: author@name <bogus@email@address>
1 file changed, 1 insertion(+), 1 deletion(-)
[default-base 6fcaab7] C
Author: author@name <bogus@email@address>
1 file changed, 1 insertion(+)
create mode 100644 C
Switched to branch 'default'
Your branch and 'default-base' have diverged,
and have 2 and 4 different commits each, respectively.
(use "git pull" if you want to integrate the remote branch with yours)
HEAD is now at 79095e6 Modify A.
[default 25c877f] D
Author: author@name <bogus@email@address>
1 file changed, 1 insertion(+)
create mode 100644 D
[default c1600f1] B
Author: author@name <bogus@email@address>
Date: Thu Apr 7 15:17:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 B
[default a9d4b07] new_B
Author: author@name <bogus@email@address>
Date: Thu Apr 7 15:18:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
[default 26a2977] final_B
Author: author@name <bogus@email@address>
1 file changed, 1 insertion(+), 1 deletion(-)
warning: skipped previously applied commit c1600f1
warning: skipped previously applied commit a9d4b07
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/default.
ok 21 - cherry-picked commits and fork-point work together
expecting success of 3400.22 'rebase --apply -q is quiet':
git checkout -b quiet topic &&
git rebase --apply -q main >output.out 2>&1 &&
test_must_be_empty output.out
Switched to a new branch 'quiet'
ok 22 - rebase --apply -q is quiet
expecting success of 3400.23 'rebase --merge -q is quiet':
git checkout -B quiet topic &&
git rebase --merge -q main >output.out 2>&1 &&
test_must_be_empty output.out
Reset branch 'quiet'
ok 23 - rebase --merge -q is quiet
expecting success of 3400.24 'Rebase a commit that sprinkles CRs in':
(
echo "One" &&
echo "TwoQ" &&
echo "Three" &&
echo "FQur" &&
echo "Five"
) | q_to_cr >CR &&
git add CR &&
test_tick &&
git commit -a -m "A file with a line with CR" &&
git tag file-with-cr &&
git checkout HEAD^0 &&
git rebase --onto HEAD^^ HEAD^ &&
git diff --exit-code file-with-cr:CR HEAD:CR
[quiet bdc63e2] A file with a line with CR
Author: author@name <bogus@email@address>
1 file changed, 5 insertions(+)
create mode 100644 CR
Note: switching to 'HEAD^0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at bdc63e2 A file with a line with CR
Rebasing (1/1)
Successfully rebased and updated detached HEAD.
ok 24 - Rebase a commit that sprinkles CRs in
expecting success of 3400.25 'rebase can copy notes':
git config notes.rewrite.rebase true &&
git config notes.rewriteRef "refs/notes/*" &&
test_commit n1 &&
test_commit n2 &&
test_commit n3 &&
git notes add -m"a note" n3 &&
git rebase --onto n1 n2 &&
test "a note" = "$(git notes show HEAD)"
[detached HEAD 6c4c424] n1
Author: author@name <bogus@email@address>
1 file changed, 1 insertion(+)
create mode 100644 n1.t
[detached HEAD 2a7c249] n2
Author: author@name <bogus@email@address>
1 file changed, 1 insertion(+)
create mode 100644 n2.t
[detached HEAD a23b9cc] n3
Author: author@name <bogus@email@address>
1 file changed, 1 insertion(+)
create mode 100644 n3.t
Rebasing (1/1)
Successfully rebased and updated detached HEAD.
ok 25 - rebase can copy notes
expecting success of 3400.26 'rebase -m can copy notes':
git reset --hard n3 &&
git rebase -m --onto n1 n2 &&
test "a note" = "$(git notes show HEAD)"
HEAD is now at a23b9cc n3
Rebasing (1/1)
Successfully rebased and updated detached HEAD.
ok 26 - rebase -m can copy notes
expecting success of 3400.27 'rebase commit with an ancient timestamp':
git reset --hard &&
>old.one && git add old.one && test_tick &&
git commit --date="@12345 +0400" -m "Old one" &&
>old.two && git add old.two && test_tick &&
git commit --date="@23456 +0500" -m "Old two" &&
>old.three && git add old.three && test_tick &&
git commit --date="@34567 +0600" -m "Old three" &&
git cat-file commit HEAD^^ >actual &&
grep "author .* 12345 +0400$" actual &&
git cat-file commit HEAD^ >actual &&
grep "author .* 23456 +0500$" actual &&
git cat-file commit HEAD >actual &&
grep "author .* 34567 +0600$" actual &&
git rebase --onto HEAD^^ HEAD^ &&
git cat-file commit HEAD >actual &&
grep "author .* 34567 +0600$" actual
HEAD is now at 8512196 n3
[detached HEAD 672de63] Old one
Author: author@name <bogus@email@address>
Date: Thu Jan 1 07:25:45 1970 +0400
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 old.one
[detached HEAD bcd1a5d] Old two
Author: author@name <bogus@email@address>
Date: Thu Jan 1 11:30:56 1970 +0500
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 old.two
[detached HEAD e1aec6b] Old three
Author: author@name <bogus@email@address>
Date: Thu Jan 1 15:36:07 1970 +0600
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 old.three
author author@name <bogus@email@address> 12345 +0400
author author@name <bogus@email@address> 23456 +0500
author author@name <bogus@email@address> 34567 +0600
Rebasing (1/1)
Successfully rebased and updated detached HEAD.
author author@name <bogus@email@address> 34567 +0600
ok 27 - rebase commit with an ancient timestamp
expecting success of 3400.28 'rebase with "From " line in commit message':
git checkout -b preserve-from main~1 &&
cat >From_.msg <<EOF &&
Somebody embedded an mbox in a commit message
This is from so-and-so:
From a@b Mon Sep 17 00:00:00 2001
From: John Doe <nobody@example.com>
Date: Sat, 11 Nov 2017 00:00:00 +0000
Subject: not this message
something
EOF
>From_ &&
git add From_ &&
git commit -F From_.msg &&
git rebase main &&
git log -1 --pretty=format:%B >out &&
test_cmp From_.msg out
Warning: you are leaving 3 commits behind, not connected to
any of your branches:
2aa280f Old three
672de63 Old one
8512196 n3
If you want to keep them by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 2aa280f
Switched to a new branch 'preserve-from'
[preserve-from 6a4c2b7] Somebody embedded an mbox in a commit message
Author: author@name <bogus@email@address>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 From_
Rebasing (1/1)
Successfully rebased and updated refs/heads/preserve-from.
ok 28 - rebase with "From " line in commit message
expecting success of 3400.29 'rebase --apply and --show-current-patch':
test_create_repo conflict-apply &&
(
cd conflict-apply &&
test_commit init &&
echo one >>init.t &&
git commit -a -m one &&
echo two >>init.t &&
git commit -a -m two &&
git tag two &&
test_must_fail git rebase --apply -f --onto init HEAD^ &&
GIT_TRACE=1 git rebase --show-current-patch >/dev/null 2>stderr &&
grep "show.*$(git rev-parse two)" stderr
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3400-rebase/conflict-apply/.git/
[main (root-commit) 4ee1594] init
Author: author@name <bogus@email@address>
1 file changed, 1 insertion(+)
create mode 100644 init.t
[main 7f4d086] one
Author: author@name <bogus@email@address>
1 file changed, 1 insertion(+)
[main 4a30746] two
Author: author@name <bogus@email@address>
1 file changed, 1 insertion(+)
First, rewinding head to replay your work on top of it...
Applying: two
Using index info to reconstruct a base tree...
M init.t
Falling back to patching base and 3-way merge...
Merging:
4ee1594 init
virtual two
found 1 common ancestor:
virtual 24619c19508a6b9b476e2c46f4889f730a371ef0
Auto-merging init.t
CONFLICT (content): Merge conflict in init.t
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 two
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
trace: run_command: git show 4a30746df05d63c1ff544efc981f6dc849632f55 --
trace: built-in: git show 4a30746df05d63c1ff544efc981f6dc849632f55 --
ok 29 - rebase --apply and --show-current-patch
expecting success of 3400.30 'rebase --apply and .gitattributes':
test_create_repo attributes &&
(
cd attributes &&
test_commit init &&
git config filter.test.clean "sed -e 's/smudged/clean/g'" &&
git config filter.test.smudge "sed -e 's/clean/smudged/g'" &&
test_commit second &&
git checkout -b test HEAD^ &&
echo "*.txt filter=test" >.gitattributes &&
git add .gitattributes &&
test_commit third &&
echo "This text is smudged." >a.txt &&
git add a.txt &&
test_commit fourth &&
git checkout -b removal HEAD^ &&
git rm .gitattributes &&
git add -u &&
test_commit fifth &&
git cherry-pick test &&
git checkout test &&
git rebase main &&
grep "smudged" a.txt &&
git checkout removal &&
git reset --hard &&
git rebase main &&
grep "clean" a.txt
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3400-rebase/attributes/.git/
[main (root-commit) 4ee1594] init
Author: author@name <bogus@email@address>
1 file changed, 1 insertion(+)
create mode 100644 init.t
[main 68fd476] second
Author: author@name <bogus@email@address>
1 file changed, 1 insertion(+)
create mode 100644 second.t
Switched to a new branch 'test'
[test 3071d72] third
Author: author@name <bogus@email@address>
2 files changed, 2 insertions(+)
create mode 100644 .gitattributes
create mode 100644 third.t
[test 5339e6c] fourth
Author: author@name <bogus@email@address>
2 files changed, 2 insertions(+)
create mode 100644 a.txt
create mode 100644 fourth.t
Switched to a new branch 'removal'
rm '.gitattributes'
[removal f95b76e] fifth
Author: author@name <bogus@email@address>
2 files changed, 1 insertion(+), 1 deletion(-)
delete mode 100644 .gitattributes
create mode 100644 fifth.t
[removal 5932438] fourth
Author: author@name <bogus@email@address>
Date: Thu Apr 7 15:32:13 2005 -0700
2 files changed, 2 insertions(+)
create mode 100644 a.txt
create mode 100644 fourth.t
Switched to branch 'test'
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/test.
This text is smudged.
Switched to branch 'removal'
HEAD is now at 5932438 fourth
Rebasing (1/3)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated refs/heads/removal.
This text is clean.
ok 30 - rebase --apply and .gitattributes
expecting success of 3400.31 'rebase--merge.sh and --show-current-patch':
test_create_repo conflict-merge &&
(
cd conflict-merge &&
test_commit init &&
echo one >>init.t &&
git commit -a -m one &&
echo two >>init.t &&
git commit -a -m two &&
git tag two &&
test_must_fail git rebase --merge --onto init HEAD^ &&
git rebase --show-current-patch >actual.patch &&
GIT_TRACE=1 git rebase --show-current-patch >/dev/null 2>stderr &&
grep "show.*REBASE_HEAD" stderr &&
test "$(git rev-parse REBASE_HEAD)" = "$(git rev-parse two)"
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3400-rebase/conflict-merge/.git/
[main (root-commit) 4ee1594] init
Author: author@name <bogus@email@address>
1 file changed, 1 insertion(+)
create mode 100644 init.t
[main 7f4d086] one
Author: author@name <bogus@email@address>
1 file changed, 1 insertion(+)
[main 4a30746] two
Author: author@name <bogus@email@address>
1 file changed, 1 insertion(+)
Rebasing (1/1)
Auto-merging init.t
CONFLICT (content): Merge conflict in init.t
error: could not apply 4a30746... two
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 4a30746... two
trace: run_command: git show REBASE_HEAD --
trace: built-in: git show REBASE_HEAD --
ok 31 - rebase--merge.sh and --show-current-patch
expecting success of 3400.32 'switch to branch checked out here':
git checkout main &&
git rebase main main
Switched to branch 'main'
Current branch main is up to date.
ok 32 - switch to branch checked out here
expecting success of 3400.33 'switch to branch checked out elsewhere fails':
test_when_finished "
git worktree remove wt1 &&
git worktree remove wt2 &&
git branch -d shared
" &&
git worktree add wt1 -b shared &&
git worktree add wt2 -f shared &&
# we test in both worktrees to ensure that works
# as expected with "first" and "next" worktrees
test_must_fail git -C wt1 rebase shared shared &&
test_must_fail git -C wt2 rebase shared shared
Preparing worktree (new branch 'shared')
HEAD is now at 1fb901f prepare
Preparing worktree (checking out 'shared')
HEAD is now at 1fb901f prepare
fatal: 'shared' is already checked out at '/<<PKGBUILDDIR>>/t/trash directory.t3400-rebase/wt2'
fatal: 'shared' is already checked out at '/<<PKGBUILDDIR>>/t/trash directory.t3400-rebase/wt1'
Deleted branch shared (was 1fb901f).
ok 33 - switch to branch checked out elsewhere fails
expecting success of 3400.34 'switch to branch not checked out':
git checkout main &&
git branch other &&
git rebase main other
Already on 'main'
Current branch other is up to date.
ok 34 - switch to branch not checked out
expecting success of 3400.35 'switch to non-branch detaches HEAD':
git checkout main &&
old_main=$(git rev-parse HEAD) &&
git rebase First Second^0 &&
test_cmp_rev HEAD Second &&
test_cmp_rev main $old_main &&
test_must_fail git symbolic-ref HEAD
Switched to branch 'main'
Current branch Second^0 is up to date.
fatal: ref HEAD is not a symbolic ref
ok 35 - switch to non-branch detaches HEAD
expecting success of 3400.36 'refuse to switch to branch checked out elsewhere':
git checkout main &&
git worktree add wt &&
test_must_fail git -C wt rebase main main 2>err &&
test_i18ngrep "already checked out" err
Previous HEAD position was 5d79b4b Add B.
Switched to branch 'main'
Preparing worktree (new branch 'wt')
HEAD is now at 1fb901f prepare
fatal: 'main' is already checked out at '/<<PKGBUILDDIR>>/t/trash directory.t3400-rebase'
ok 36 - refuse to switch to branch checked out elsewhere
checking prerequisite: SYMLINKS_WINDOWS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS_WINDOWS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS_WINDOWS" &&
# test whether symbolic links are enabled on Windows
test_have_prereq MINGW &&
cmd //c "mklink y x" &> /dev/null && test -h y
)
prerequisite SYMLINKS_WINDOWS not satisfied
ok 37 # skip rebase when .git/logs is a symlink (missing SYMLINKS_WINDOWS,MINGW of MINGW,SYMLINKS_WINDOWS)
expecting success of 3400.38 'rebase when inside worktree subdirectory':
git init main-wt &&
(
cd main-wt &&
git commit --allow-empty -m "initial" &&
mkdir -p foo/bar &&
test_commit foo/bar/baz &&
mkdir -p a/b &&
test_commit a/b/c &&
# create another branch for our other worktree
git branch other &&
git worktree add ../other-wt other &&
cd ../other-wt &&
# create and cd into a subdirectory
mkdir -p random/dir &&
cd random/dir &&
# now do the rebase
git rebase --onto HEAD^^ HEAD^ # drops the HEAD^ commit
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3400-rebase/main-wt/.git/
[main (root-commit) 18c3868] initial
Author: author@name <bogus@email@address>
[main ab220b2] foo/bar/baz
Author: author@name <bogus@email@address>
1 file changed, 1 insertion(+)
create mode 100644 foo/bar/baz.t
[main c2b5a42] a/b/c
Author: author@name <bogus@email@address>
1 file changed, 1 insertion(+)
create mode 100644 a/b/c.t
Preparing worktree (checking out 'other')
HEAD is now at c2b5a42 a/b/c
Rebasing (1/1)
Successfully rebased and updated refs/heads/other.
ok 38 - rebase when inside worktree subdirectory
# passed all 38 test(s)
1..38
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3403-rebase-skip.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3403-rebase-skip/.git/
expecting success of 3403.1 'setup':
echo hello > hello &&
git add hello &&
git commit -m "hello" &&
git branch skip-reference &&
git tag hello &&
echo world >> hello &&
git commit -a -m "hello world" &&
echo goodbye >> hello &&
git commit -a -m "goodbye" &&
git tag goodbye &&
git checkout --detach &&
git checkout HEAD^ . &&
test_tick &&
git commit -m reverted-goodbye &&
git tag reverted-goodbye &&
git checkout goodbye &&
test_tick &&
GIT_AUTHOR_NAME="Another Author" \
GIT_AUTHOR_EMAIL="another.author@example.com" \
git commit --amend --no-edit -m amended-goodbye \
--reset-author &&
test_tick &&
git tag amended-goodbye &&
git checkout -f skip-reference &&
echo moo > hello &&
git commit -a -m "we should skip this" &&
echo moo > cow &&
git add cow &&
git commit -m "this should not be skipped" &&
git branch pre-rebase skip-reference &&
git branch skip-merge skip-reference
[main (root-commit) 7b3be24] hello
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 hello
[main 5a0b053] hello world
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[main 64bec18] goodbye
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
HEAD is now at 64bec18 goodbye
Updated 1 path from f7e12fd
[detached HEAD 1f15beb] reverted-goodbye
Author: A U Thor <author@example.com>
1 file changed, 1 deletion(-)
Previous HEAD position was 1f15beb reverted-goodbye
HEAD is now at 64bec18 goodbye
[detached HEAD d66ccab] amended-goodbye
Author: Another Author <another.author@example.com>
1 file changed, 1 insertion(+)
Previous HEAD position was d66ccab amended-goodbye
Switched to branch 'skip-reference'
[skip-reference 847c4cd] we should skip this
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[skip-reference c443746] this should not be skipped
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 cow
ok 1 - setup
expecting success of 3403.2 'rebase with git am -3 (default)':
test_must_fail git rebase --apply main
First, rewinding head to replay your work on top of it...
Applying: we should skip this
Using index info to reconstruct a base tree...
M hello
Falling back to patching base and 3-way merge...
Merging:
64bec18 goodbye
virtual we should skip this
found 1 common ancestor:
virtual b4d01e9b0c4a9356736dfddf8830ba9a54f5271c
Auto-merging hello
CONFLICT (content): Merge conflict in hello
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 we should skip this
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
ok 2 - rebase with git am -3 (default)
expecting success of 3403.3 'rebase --skip can not be used with other options':
test_must_fail git rebase -v --skip &&
test_must_fail git rebase --skip -v
usage: git rebase [-i] [options] [--exec <cmd>] [--onto <newbase> | --keep-base] [<upstream> [<branch>]]
or: git rebase [-i] [options] [--exec <cmd>] [--onto <newbase>] --root [<branch>]
or: git rebase --continue | --abort | --skip | --edit-todo
--onto <revision> rebase onto given branch instead of upstream
--keep-base use the merge-base of upstream and branch as the current base
--no-verify allow pre-rebase hook to run
-q, --quiet be quiet. implies --no-stat
-v, --verbose display a diffstat of what changed upstream
-n, --no-stat do not show diffstat of what changed upstream
--signoff add a Signed-off-by trailer to each commit
--committer-date-is-author-date
make committer date match author date
--reset-author-date ignore author date and use current date
-C <n> passed to 'git apply'
--ignore-whitespace ignore changes in whitespace
--whitespace <action> passed to 'git apply'
-f, --force-rebase cherry-pick all commits, even if unchanged
--no-ff cherry-pick all commits, even if unchanged
--continue continue
--skip skip current patch and continue
--abort abort and check out the original branch
--quit abort but keep HEAD where it is
--edit-todo edit the todo list during an interactive rebase
--show-current-patch show the patch file being applied or merged
--apply use apply strategies to rebase
-m, --merge use merging strategies to rebase
-i, --interactive let the user edit the list of commits to rebase
--rerere-autoupdate update the index with reused conflict resolution if possible
--empty <{drop,keep,ask}>
how to handle commits that become empty
--autosquash move commits that begin with squash!/fixup! under -i
--update-refs update branches that point to commits that are being rebased
-S, --gpg-sign[=<key-id>]
GPG-sign commits
--autostash automatically stash/stash pop before and after
-x, --exec <exec> add exec lines after each commit of the editable list
-r, --rebase-merges[=<mode>]
try to rebase merges instead of skipping them
--fork-point use 'merge-base --fork-point' to refine upstream
-s, --strategy <strategy>
use the given merge strategy
-X, --strategy-option <option>
pass the argument through to the merge strategy
--root rebase all reachable commits up to the root(s)
--reschedule-failed-exec
automatically re-schedule any `exec` that fails
--reapply-cherry-picks
apply all changes, even those already present upstream
usage: git rebase [-i] [options] [--exec <cmd>] [--onto <newbase> | --keep-base] [<upstream> [<branch>]]
or: git rebase [-i] [options] [--exec <cmd>] [--onto <newbase>] --root [<branch>]
or: git rebase --continue | --abort | --skip | --edit-todo
--onto <revision> rebase onto given branch instead of upstream
--keep-base use the merge-base of upstream and branch as the current base
--no-verify allow pre-rebase hook to run
-q, --quiet be quiet. implies --no-stat
-v, --verbose display a diffstat of what changed upstream
-n, --no-stat do not show diffstat of what changed upstream
--signoff add a Signed-off-by trailer to each commit
--committer-date-is-author-date
make committer date match author date
--reset-author-date ignore author date and use current date
-C <n> passed to 'git apply'
--ignore-whitespace ignore changes in whitespace
--whitespace <action> passed to 'git apply'
-f, --force-rebase cherry-pick all commits, even if unchanged
--no-ff cherry-pick all commits, even if unchanged
--continue continue
--skip skip current patch and continue
--abort abort and check out the original branch
--quit abort but keep HEAD where it is
--edit-todo edit the todo list during an interactive rebase
--show-current-patch show the patch file being applied or merged
--apply use apply strategies to rebase
-m, --merge use merging strategies to rebase
-i, --interactive let the user edit the list of commits to rebase
--rerere-autoupdate update the index with reused conflict resolution if possible
--empty <{drop,keep,ask}>
how to handle commits that become empty
--autosquash move commits that begin with squash!/fixup! under -i
--update-refs update branches that point to commits that are being rebased
-S, --gpg-sign[=<key-id>]
GPG-sign commits
--autostash automatically stash/stash pop before and after
-x, --exec <exec> add exec lines after each commit of the editable list
-r, --rebase-merges[=<mode>]
try to rebase merges instead of skipping them
--fork-point use 'merge-base --fork-point' to refine upstream
-s, --strategy <strategy>
use the given merge strategy
-X, --strategy-option <option>
pass the argument through to the merge strategy
--root rebase all reachable commits up to the root(s)
--reschedule-failed-exec
automatically re-schedule any `exec` that fails
--reapply-cherry-picks
apply all changes, even those already present upstream
ok 3 - rebase --skip can not be used with other options
expecting success of 3403.4 'rebase --skip with am -3':
git rebase --skip
Applying: this should not be skipped
ok 4 - rebase --skip with am -3
expecting success of 3403.5 'rebase moves back to skip-reference':
test refs/heads/skip-reference = $(git symbolic-ref HEAD) &&
git branch post-rebase &&
git reset --hard pre-rebase &&
test_must_fail git rebase main &&
echo "hello" > hello &&
git add hello &&
git rebase --continue &&
test refs/heads/skip-reference = $(git symbolic-ref HEAD) &&
git reset --hard post-rebase
HEAD is now at c443746 this should not be skipped
Rebasing (1/2)
Auto-merging hello
CONFLICT (content): Merge conflict in hello
error: could not apply 847c4cd... we should skip this
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 847c4cd... we should skip this
[detached HEAD 0283955] we should skip this
Author: A U Thor <author@example.com>
1 file changed, 2 deletions(-)
Rebasing (2/2)
Successfully rebased and updated refs/heads/skip-reference.
HEAD is now at 86a691d this should not be skipped
ok 5 - rebase moves back to skip-reference
expecting success of 3403.6 'checkout skip-merge': git checkout -f skip-merge
Switched to branch 'skip-merge'
ok 6 - checkout skip-merge
expecting success of 3403.7 'rebase with --merge':
test_must_fail git rebase --merge main
Rebasing (1/2)
Auto-merging hello
CONFLICT (content): Merge conflict in hello
error: could not apply 847c4cd... we should skip this
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 847c4cd... we should skip this
ok 7 - rebase with --merge
expecting success of 3403.8 'rebase --skip with --merge':
git rebase --skip
Rebasing (2/2)
Successfully rebased and updated refs/heads/skip-merge.
ok 8 - rebase --skip with --merge
expecting success of 3403.9 'merge and reference trees equal':
test -z "$(git diff-tree skip-merge skip-reference)"
ok 9 - merge and reference trees equal
expecting success of 3403.10 'moved back to branch correctly':
test refs/heads/skip-merge = $(git symbolic-ref HEAD)
ok 10 - moved back to branch correctly
expecting success of 3403.11 'skipping final pick removes .git/MERGE_MSG':
test_must_fail git rebase --onto hello reverted-goodbye^ \
reverted-goodbye &&
git rebase --skip &&
test_path_is_missing .git/MERGE_MSG
Rebasing (1/1)
Auto-merging hello
CONFLICT (content): Merge conflict in hello
error: could not apply 1f15beb... reverted-goodbye
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 1f15beb... reverted-goodbye
Successfully rebased and updated detached HEAD.
ok 11 - skipping final pick removes .git/MERGE_MSG
expecting success of 3403.12 'correct advice upon picking empty commit':
test_when_finished "git rebase --abort" &&
test_must_fail git rebase -i --onto goodbye \
amended-goodbye^ amended-goodbye 2>err &&
test_i18ngrep "previous cherry-pick is now empty" err &&
test_i18ngrep "git rebase --skip" err &&
test_must_fail git commit &&
test_i18ngrep "git rebase --skip" err
Rebasing (1/1)
The previous cherry-pick is now empty, possibly due to conflict resolution.
Otherwise, please use 'git rebase --skip'
The previous cherry-pick is now empty, possibly due to conflict resolution.
If you wish to commit it anyway, use:
git commit --allow-empty
Otherwise, please use 'git rebase --skip'
interactive rebase in progress; onto 64bec18
Last command done (1 command done):
pick d66ccab amended-goodbye
No commands remaining.
You are currently rebasing.
(all conflicts fixed: run "git rebase --continue")
Untracked files:
(use "git add <file>..." to include in what will be committed)
err
nothing added to commit but untracked files present (use "git add" to track)
Otherwise, please use 'git rebase --skip'
ok 12 - correct advice upon picking empty commit
expecting success of 3403.13 'correct authorship when committing empty pick':
test_when_finished "git rebase --abort" &&
test_must_fail git rebase -i --onto goodbye \
amended-goodbye^ amended-goodbye &&
git commit --allow-empty &&
git log --pretty=format:"%an <%ae>%n%ad%B" -1 amended-goodbye >expect &&
git log --pretty=format:"%an <%ae>%n%ad%B" -1 HEAD >actual &&
test_cmp expect actual
Rebasing (1/1)
The previous cherry-pick is now empty, possibly due to conflict resolution.
If you wish to commit it anyway, use:
git commit --allow-empty
Otherwise, please use 'git rebase --skip'
interactive rebase in progress; onto 64bec18
Last command done (1 command done):
pick d66ccab amended-goodbye
No commands remaining.
You are currently rebasing.
(all conflicts fixed: run "git rebase --continue")
Untracked files:
(use "git add <file>..." to include in what will be committed)
err
nothing added to commit but untracked files present (use "git add" to track)
Could not apply d66ccab... amended-goodbye
[detached HEAD 046fc51] amended-goodbye
Author: Another Author <another.author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
ok 13 - correct authorship when committing empty pick
expecting success of 3403.14 'correct advice upon rewording empty commit':
test_when_finished "git rebase --abort" &&
(
set_fake_editor &&
test_must_fail env FAKE_LINES="reword 1" git rebase -i \
--onto goodbye amended-goodbye^ amended-goodbye 2>err
) &&
test_i18ngrep "previous cherry-pick is now empty" err &&
test_i18ngrep "git rebase --skip" err &&
test_must_fail git commit &&
test_i18ngrep "git rebase --skip" err
rebase -i script before editing:
pick d66ccab amended-goodbye
rebase -i script after editing:
reword d66ccab amended-goodbye
Rebasing (1/1)
The previous cherry-pick is now empty, possibly due to conflict resolution.
Otherwise, please use 'git rebase --skip'
The previous cherry-pick is now empty, possibly due to conflict resolution.
If you wish to commit it anyway, use:
git commit --allow-empty
Otherwise, please use 'git rebase --skip'
interactive rebase in progress; onto 64bec18
Last command done (1 command done):
reword d66ccab amended-goodbye
No commands remaining.
You are currently rebasing.
(all conflicts fixed: run "git rebase --continue")
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
err
expect
fake-editor.sh
nothing added to commit but untracked files present (use "git add" to track)
Otherwise, please use 'git rebase --skip'
ok 14 - correct advice upon rewording empty commit
expecting success of 3403.15 'correct advice upon editing empty commit':
test_when_finished "git rebase --abort" &&
(
set_fake_editor &&
test_must_fail env FAKE_LINES="edit 1" git rebase -i \
--onto goodbye amended-goodbye^ amended-goodbye 2>err
) &&
test_i18ngrep "previous cherry-pick is now empty" err &&
test_i18ngrep "git rebase --skip" err &&
test_must_fail git commit &&
test_i18ngrep "git rebase --skip" err
rebase -i script before editing:
pick d66ccab amended-goodbye
rebase -i script after editing:
edit d66ccab amended-goodbye
Rebasing (1/1)
The previous cherry-pick is now empty, possibly due to conflict resolution.
Otherwise, please use 'git rebase --skip'
The previous cherry-pick is now empty, possibly due to conflict resolution.
If you wish to commit it anyway, use:
git commit --allow-empty
Otherwise, please use 'git rebase --skip'
interactive rebase in progress; onto 64bec18
Last command done (1 command done):
edit d66ccab amended-goodbye
No commands remaining.
You are currently rebasing.
(all conflicts fixed: run "git rebase --continue")
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
err
expect
fake-editor.sh
nothing added to commit but untracked files present (use "git add" to track)
Otherwise, please use 'git rebase --skip'
ok 15 - correct advice upon editing empty commit
expecting success of 3403.16 'correct advice upon cherry-picking an empty commit during a rebase':
test_when_finished "git rebase --abort" &&
(
set_fake_editor &&
test_must_fail env FAKE_LINES="1 exec_git_cherry-pick_amended-goodbye" \
git rebase -i goodbye^ goodbye 2>err
) &&
test_i18ngrep "previous cherry-pick is now empty" err &&
test_i18ngrep "git cherry-pick --skip" err &&
test_must_fail git commit 2>err &&
test_i18ngrep "git cherry-pick --skip" err
rebase -i script before editing:
pick 64bec18 goodbye
rebase -i script after editing:
pick 64bec18 goodbye
exec git cherry-pick amended-goodbye
interactive rebase in progress; onto 5a0b053
Last commands done (2 commands done):
pick 64bec18 goodbye
exec git cherry-pick amended-goodbye
No commands remaining.
You are currently rebasing.
(all conflicts fixed: run "git rebase --continue")
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
err
expect
fake-editor.sh
nothing added to commit but untracked files present (use "git add" to track)
The previous cherry-pick is now empty, possibly due to conflict resolution.
Otherwise, please use 'git cherry-pick --skip'
interactive rebase in progress; onto 5a0b053
Last commands done (2 commands done):
pick 64bec18 goodbye
exec git cherry-pick amended-goodbye
No commands remaining.
You are currently rebasing.
(all conflicts fixed: run "git rebase --continue")
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
err
expect
fake-editor.sh
nothing added to commit but untracked files present (use "git add" to track)
Otherwise, please use 'git cherry-pick --skip'
ok 16 - correct advice upon cherry-picking an empty commit during a rebase
expecting success of 3403.17 'correct advice upon multi cherry-pick picking an empty commit during a rebase':
test_when_finished "git rebase --abort" &&
(
set_fake_editor &&
test_must_fail env FAKE_LINES="1 exec_git_cherry-pick_goodbye_amended-goodbye" \
git rebase -i goodbye^^ goodbye 2>err
) &&
test_i18ngrep "previous cherry-pick is now empty" err &&
test_i18ngrep "git cherry-pick --skip" err &&
test_must_fail git commit 2>err &&
test_i18ngrep "git cherry-pick --skip" err
rebase -i script before editing:
pick 5a0b053 hello world
pick 64bec18 goodbye
rebase -i script after editing:
pick 5a0b053 hello world
exec git cherry-pick goodbye amended-goodbye
[detached HEAD 67e8618] goodbye
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 insertion(+)
interactive rebase in progress; onto 7b3be24
Last commands done (2 commands done):
pick 5a0b053 hello world
exec git cherry-pick goodbye amended-goodbye
No commands remaining.
You are currently rebasing.
(all conflicts fixed: run "git rebase --continue")
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
err
expect
fake-editor.sh
nothing added to commit but untracked files present (use "git add" to track)
The previous cherry-pick is now empty, possibly due to conflict resolution.
Otherwise, please use 'git cherry-pick --skip'
interactive rebase in progress; onto 7b3be24
Last commands done (2 commands done):
pick 5a0b053 hello world
exec git cherry-pick goodbye amended-goodbye
No commands remaining.
You are currently rebasing.
(all conflicts fixed: run "git rebase --continue")
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
err
expect
fake-editor.sh
nothing added to commit but untracked files present (use "git add" to track)
Otherwise, please use 'git cherry-pick --skip'
ok 17 - correct advice upon multi cherry-pick picking an empty commit during a rebase
expecting success of 3403.18 'fixup that empties commit fails':
test_when_finished "git rebase --abort" &&
(
set_fake_editor &&
test_must_fail env FAKE_LINES="1 fixup 2" git rebase -i \
goodbye^ reverted-goodbye
)
rebase -i script before editing:
pick 64bec18 goodbye
pick 1f15beb reverted-goodbye
rebase -i script after editing:
pick 64bec18 goodbye
fixup 1f15beb reverted-goodbye
Rebasing (2/2)
You asked to amend the most recent commit, but doing so would make
it empty. You can repeat your command with --allow-empty, or you can
remove the commit entirely with "git reset HEAD^".
interactive rebase in progress; onto 5a0b053
Last commands done (2 commands done):
pick 64bec18 goodbye
fixup 1f15beb reverted-goodbye
No commands remaining.
You are currently rebasing.
(all conflicts fixed: run "git rebase --continue")
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
err
expect
fake-editor.sh
No changes
Could not apply 1f15beb... reverted-goodbye
ok 18 - fixup that empties commit fails
expecting success of 3403.19 'squash that empties commit fails':
test_when_finished "git rebase --abort" &&
(
set_fake_editor &&
test_must_fail env FAKE_LINES="1 squash 2" git rebase -i \
goodbye^ reverted-goodbye
)
rebase -i script before editing:
pick 64bec18 goodbye
pick 1f15beb reverted-goodbye
rebase -i script after editing:
pick 64bec18 goodbye
squash 1f15beb reverted-goodbye
Rebasing (2/2)
You asked to amend the most recent commit, but doing so would make
it empty. You can repeat your command with --allow-empty, or you can
remove the commit entirely with "git reset HEAD^".
interactive rebase in progress; onto 5a0b053
Last commands done (2 commands done):
pick 64bec18 goodbye
squash 1f15beb reverted-goodbye
No commands remaining.
You are currently rebasing.
(all conflicts fixed: run "git rebase --continue")
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
err
expect
fake-editor.sh
No changes
Could not apply 1f15beb... reverted-goodbye
ok 19 - squash that empties commit fails
expecting success of 3403.20 '$EDITOR and friends are unchanged':
test_editor_unchanged
ok 20 - $EDITOR and friends are unchanged
# passed all 20 test(s)
1..20
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3405-rebase-malformed.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3405-rebase-malformed/.git/
expecting success of 3405.1 'setup':
>file1 &&
>file2 &&
git add file1 file2 &&
test_tick &&
git commit -m "Initial commit" &&
git branch diff-in-message &&
git branch empty-message-merge &&
git checkout -b multi-line-subject &&
cat F >file2 &&
git add file2 &&
test_tick &&
git commit -F F &&
git cat-file commit HEAD | sed -e "1,/^\$/d" >F0 &&
git checkout diff-in-message &&
echo "commit log message containing a diff" >G &&
echo "" >>G &&
cat G >file2 &&
git add file2 &&
git diff --cached >>G &&
test_tick &&
git commit -F G &&
git cat-file commit HEAD | sed -e "1,/^\$/d" >G0 &&
git checkout empty-message-merge &&
echo file3 >file3 &&
git add file3 &&
git commit --allow-empty-message -m "" &&
git checkout main &&
echo One >file1 &&
test_tick &&
git add file1 &&
git commit -m "Second commit"
[main (root-commit) a8d727e] Initial commit
Author: A U Thor <author@example.com>
2 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file1
create mode 100644 file2
Switched to a new branch 'multi-line-subject'
[multi-line-subject 5037af6] This is an example of a commit log message that does not conform to git commit convention.
Author: A U Thor <author@example.com>
1 file changed, 5 insertions(+)
Switched to branch 'diff-in-message'
[diff-in-message 132c17c] commit log message containing a diff
Author: A U Thor <author@example.com>
1 file changed, 2 insertions(+)
Switched to branch 'empty-message-merge'
[empty-message-merge 942c0ff]
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file3
Switched to branch 'main'
[main d5181bc] Second commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
ok 1 - setup
expecting success of 3405.2 'rebase commit with multi-line subject':
git rebase main multi-line-subject &&
git cat-file commit HEAD | sed -e "1,/^\$/d" >F1 &&
test_cmp F0 F1 &&
test_cmp F F0
Rebasing (1/1)
Successfully rebased and updated refs/heads/multi-line-subject.
ok 2 - rebase commit with multi-line subject
expecting success of 3405.3 'rebase commit with diff in message':
git rebase main diff-in-message &&
git cat-file commit HEAD | sed -e "1,/^$/d" >G1 &&
test_cmp G0 G1 &&
test_cmp G G0
Rebasing (1/1)
Successfully rebased and updated refs/heads/diff-in-message.
ok 3 - rebase commit with diff in message
expecting success of 3405.4 'rebase -m commit with empty message':
git rebase -m main empty-message-merge
Rebasing (1/1)
Successfully rebased and updated refs/heads/empty-message-merge.
ok 4 - rebase -m commit with empty message
expecting success of 3405.5 'rebase -i commit with empty message':
git checkout diff-in-message &&
set_fake_editor &&
test_must_fail env FAKE_COMMIT_MESSAGE=" " FAKE_LINES="reword 1" \
git rebase -i HEAD^
Switched to branch 'diff-in-message'
rebase -i script before editing:
pick 87b000b commit log message containing a diff
rebase -i script after editing:
reword 87b000b commit log message containing a diff
Rebasing (1/1)
Aborting commit due to empty commit message.
You can amend the commit now, with
git commit --amend
Once you are satisfied with your changes, run
git rebase --continue
ok 5 - rebase -i commit with empty message
# passed all 5 test(s)
1..5
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3406-rebase-message.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3406-rebase-message/.git/
expecting success of 3406.1 'setup':
test_commit O fileO &&
test_commit X fileX &&
git branch fast-forward &&
test_commit A fileA &&
test_commit B fileB &&
test_commit Y fileY &&
git checkout -b conflicts O &&
test_commit P &&
test_commit conflict-X fileX &&
test_commit Q &&
git checkout -b topic O &&
git cherry-pick A B &&
test_commit Z fileZ &&
git tag start
[main (root-commit) 3749684] O
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 fileO
[main a2df67f] X
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 fileX
[main 9491ce3] A
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 fileA
[main 83a6553] B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 fileB
[main 545b0d0] Y
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 fileY
Switched to a new branch 'conflicts'
[conflicts bd906e8] P
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 P.t
[conflicts f31fbd6] conflict-X
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 fileX
[conflicts f39a215] Q
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 Q.t
Switched to a new branch 'topic'
[topic 731bf4a] A
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 fileA
[topic bd8c9c9] B
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 fileB
[topic dd54835] Z
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 fileZ
ok 1 - setup
expecting success of 3406.2 'rebase -m':
git rebase -m main >actual &&
test_must_be_empty actual
warning: skipped previously applied commit 731bf4a
warning: skipped previously applied commit bd8c9c9
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Rebasing (1/1)
Successfully rebased and updated refs/heads/topic.
ok 2 - rebase -m
expecting success of 3406.3 'rebase against main twice':
git rebase --apply main >out &&
test_i18ngrep "Current branch topic is up to date" out
Current branch topic is up to date.
ok 3 - rebase against main twice
expecting success of 3406.4 'rebase against main twice with --force':
git rebase --force-rebase --apply main >out &&
test_i18ngrep "Current branch topic is up to date, rebase forced" out
Current branch topic is up to date, rebase forced.
ok 4 - rebase against main twice with --force
expecting success of 3406.5 'rebase against main twice from another branch':
git checkout topic^ &&
git rebase --apply main topic >out &&
test_i18ngrep "Current branch topic is up to date" out
Note: switching to 'topic^'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 545b0d0 Y
Current branch topic is up to date.
ok 5 - rebase against main twice from another branch
expecting success of 3406.6 'rebase fast-forward to main':
git checkout topic^ &&
git rebase --apply topic >out &&
test_i18ngrep "Fast-forwarded HEAD to topic" out
Note: switching to 'topic^'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 545b0d0 Y
Fast-forwarded HEAD to topic.
ok 6 - rebase fast-forward to main
expecting success of 3406.7 'rebase --stat':
git reset --hard start &&
git rebase --stat main >diffstat.txt &&
grep "^ fileX | *1 +$" diffstat.txt
HEAD is now at dd54835 Z
warning: skipped previously applied commit 731bf4a
warning: skipped previously applied commit bd8c9c9
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Rebasing (1/1)
Successfully rebased and updated detached HEAD.
fileX | 1 +
ok 7 - rebase --stat
expecting success of 3406.8 'rebase w/config rebase.stat':
git reset --hard start &&
git config rebase.stat true &&
git rebase main >diffstat.txt &&
grep "^ fileX | *1 +$" diffstat.txt
HEAD is now at dd54835 Z
warning: skipped previously applied commit 731bf4a
warning: skipped previously applied commit bd8c9c9
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Rebasing (1/1)
Successfully rebased and updated detached HEAD.
fileX | 1 +
ok 8 - rebase w/config rebase.stat
expecting success of 3406.9 'rebase -n overrides config rebase.stat config':
git reset --hard start &&
git config rebase.stat true &&
git rebase -n main >diffstat.txt &&
! grep "^ fileX | *1 +$" diffstat.txt
HEAD is now at dd54835 Z
warning: skipped previously applied commit 731bf4a
warning: skipped previously applied commit bd8c9c9
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Rebasing (1/1)
Successfully rebased and updated detached HEAD.
ok 9 - rebase -n overrides config rebase.stat config
expecting success of 3406.10 'rebase --onto outputs the invalid ref':
test_must_fail git rebase --onto invalid-ref HEAD HEAD 2>err &&
test_i18ngrep "invalid-ref" err
fatal: Does not point to a valid commit 'invalid-ref'
ok 10 - rebase --onto outputs the invalid ref
expecting success of 3406.11 'error out early upon -C<n> or --whitespace=<bad>':
test_must_fail git rebase -Cnot-a-number HEAD 2>err &&
test_i18ngrep "numerical value" err &&
test_must_fail git rebase --whitespace=bad HEAD 2>err &&
test_i18ngrep "Invalid whitespace option" err
fatal: switch `C' expects a numerical value
fatal: Invalid whitespace option: 'bad'
ok 11 - error out early upon -C<n> or --whitespace=<bad>
expecting success of 3406.12 'rebase --merge reflog':
git checkout conflicts &&
test_when_finished "git reset --hard Q" &&
(
if test -n "$reflog_action"
then
GIT_REFLOG_ACTION="$reflog_action" &&
export GIT_REFLOG_ACTION
fi &&
test_must_fail git rebase $mode main &&
echo resolved >fileX &&
git add fileX &&
git rebase --continue
) &&
git log -g --format=%gs -5 >actual &&
write_reflog_expect <<-EOF &&
${reflog_action:-rebase} (finish): returning to refs/heads/conflicts
${reflog_action:-rebase} (pick): Q
${reflog_action:-rebase} (continue): conflict-X
${reflog_action:-rebase} (pick): P
${reflog_action:-rebase} (start): checkout main
EOF
test_cmp expect actual &&
git log -g --format=%gs -1 conflicts >actual &&
write_reflog_expect <<-EOF &&
${reflog_action:-rebase} (finish): refs/heads/conflicts onto $(git rev-parse main)
EOF
test_cmp expect actual &&
# check there is only one new entry in the branch reflog
test_cmp_rev conflicts@{1} Q
Previous HEAD position was c4441bc Z
Switched to branch 'conflicts'
fileA | 1 +
fileB | 1 +
fileX | 1 +
fileY | 1 +
4 files changed, 4 insertions(+)
create mode 100644 fileA
create mode 100644 fileB
create mode 100644 fileX
create mode 100644 fileY
Rebasing (1/3)
Rebasing (2/3)
Auto-merging fileX
CONFLICT (add/add): Merge conflict in fileX
error: could not apply f31fbd6... conflict-X
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply f31fbd6... conflict-X
[detached HEAD 57e508d] conflict-X
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Rebasing (3/3)
Successfully rebased and updated refs/heads/conflicts.
HEAD is now at f39a215 Q
ok 12 - rebase --merge reflog
expecting success of 3406.13 'rebase --merge fast-forward reflog':
git checkout fast-forward &&
test_when_finished "git reset --hard X" &&
(
if test -n "$reflog_action"
then
GIT_REFLOG_ACTION="$reflog_action" &&
export GIT_REFLOG_ACTION
fi &&
git rebase $mode main
) &&
git log -g --format=%gs -2 >actual &&
write_reflog_expect <<-EOF &&
${reflog_action:-rebase} (finish): returning to refs/heads/fast-forward
${reflog_action:-rebase} (start): checkout main
EOF
test_cmp expect actual &&
git log -g --format=%gs -1 fast-forward >actual &&
write_reflog_expect <<-EOF &&
${reflog_action:-rebase} (finish): refs/heads/fast-forward onto $(git rev-parse main)
EOF
test_cmp expect actual &&
# check there is only one new entry in the branch reflog
test_cmp_rev fast-forward@{1} X
Switched to branch 'fast-forward'
fileA | 1 +
fileB | 1 +
fileY | 1 +
3 files changed, 3 insertions(+)
create mode 100644 fileA
create mode 100644 fileB
create mode 100644 fileY
Successfully rebased and updated refs/heads/fast-forward.
HEAD is now at a2df67f X
ok 13 - rebase --merge fast-forward reflog
expecting success of 3406.14 'rebase --merge --skip reflog':
git checkout conflicts &&
test_when_finished "git reset --hard Q" &&
(
if test -n "$reflog_action"
then
GIT_REFLOG_ACTION="$reflog_action" &&
export GIT_REFLOG_ACTION
fi &&
test_must_fail git rebase $mode main &&
git rebase --skip
) &&
git log -g --format=%gs -4 >actual &&
write_reflog_expect <<-EOF &&
${reflog_action:-rebase} (finish): returning to refs/heads/conflicts
${reflog_action:-rebase} (pick): Q
${reflog_action:-rebase} (pick): P
${reflog_action:-rebase} (start): checkout main
EOF
test_cmp expect actual
Switched to branch 'conflicts'
fileA | 1 +
fileB | 1 +
fileX | 1 +
fileY | 1 +
4 files changed, 4 insertions(+)
create mode 100644 fileA
create mode 100644 fileB
create mode 100644 fileX
create mode 100644 fileY
Rebasing (1/3)
Rebasing (2/3)
Auto-merging fileX
CONFLICT (add/add): Merge conflict in fileX
error: could not apply f31fbd6... conflict-X
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply f31fbd6... conflict-X
Rebasing (3/3)
Successfully rebased and updated refs/heads/conflicts.
HEAD is now at f39a215 Q
ok 14 - rebase --merge --skip reflog
expecting success of 3406.15 'rebase --merge --abort reflog':
git checkout conflicts &&
test_when_finished "git reset --hard Q" &&
git log -g -1 conflicts >branch-expect &&
(
if test -n "$reflog_action"
then
GIT_REFLOG_ACTION="$reflog_action" &&
export GIT_REFLOG_ACTION
fi &&
test_must_fail git rebase $mode main &&
git rebase --abort
) &&
git log -g --format=%gs -3 >actual &&
write_reflog_expect <<-EOF &&
${reflog_action:-rebase} (abort): returning to refs/heads/conflicts
${reflog_action:-rebase} (pick): P
${reflog_action:-rebase} (start): checkout main
EOF
test_cmp expect actual &&
# check branch reflog is unchanged
git log -g -1 conflicts >branch-actual &&
test_cmp branch-expect branch-actual
Already on 'conflicts'
fileA | 1 +
fileB | 1 +
fileX | 1 +
fileY | 1 +
4 files changed, 4 insertions(+)
create mode 100644 fileA
create mode 100644 fileB
create mode 100644 fileX
create mode 100644 fileY
Rebasing (1/3)
Rebasing (2/3)
Auto-merging fileX
CONFLICT (add/add): Merge conflict in fileX
error: could not apply f31fbd6... conflict-X
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply f31fbd6... conflict-X
HEAD is now at f39a215 Q
ok 15 - rebase --merge --abort reflog
expecting success of 3406.16 'rebase --merge --abort detached HEAD reflog':
git checkout Q &&
test_when_finished "git reset --hard Q" &&
(
if test -n "$reflog_action"
then
GIT_REFLOG_ACTION="$reflog_action" &&
export GIT_REFLOG_ACTION
fi &&
test_must_fail git rebase $mode main &&
git rebase --abort
) &&
git log -g --format=%gs -3 >actual &&
write_reflog_expect <<-EOF &&
${reflog_action:-rebase} (abort): returning to $(git rev-parse Q)
${reflog_action:-rebase} (pick): P
${reflog_action:-rebase} (start): checkout main
EOF
test_cmp expect actual
Note: switching to 'Q'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at f39a215 Q
fileA | 1 +
fileB | 1 +
fileX | 1 +
fileY | 1 +
4 files changed, 4 insertions(+)
create mode 100644 fileA
create mode 100644 fileB
create mode 100644 fileX
create mode 100644 fileY
Rebasing (1/3)
Rebasing (2/3)
Auto-merging fileX
CONFLICT (add/add): Merge conflict in fileX
error: could not apply f31fbd6... conflict-X
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply f31fbd6... conflict-X
HEAD is now at f39a215 Q
ok 16 - rebase --merge --abort detached HEAD reflog
expecting success of 3406.17 'rebase --merge reflog GIT_REFLOG_ACTION=my-reflog-action':
git checkout conflicts &&
test_when_finished "git reset --hard Q" &&
(
if test -n "$reflog_action"
then
GIT_REFLOG_ACTION="$reflog_action" &&
export GIT_REFLOG_ACTION
fi &&
test_must_fail git rebase $mode main &&
echo resolved >fileX &&
git add fileX &&
git rebase --continue
) &&
git log -g --format=%gs -5 >actual &&
write_reflog_expect <<-EOF &&
${reflog_action:-rebase} (finish): returning to refs/heads/conflicts
${reflog_action:-rebase} (pick): Q
${reflog_action:-rebase} (continue): conflict-X
${reflog_action:-rebase} (pick): P
${reflog_action:-rebase} (start): checkout main
EOF
test_cmp expect actual &&
git log -g --format=%gs -1 conflicts >actual &&
write_reflog_expect <<-EOF &&
${reflog_action:-rebase} (finish): refs/heads/conflicts onto $(git rev-parse main)
EOF
test_cmp expect actual &&
# check there is only one new entry in the branch reflog
test_cmp_rev conflicts@{1} Q
Switched to branch 'conflicts'
fileA | 1 +
fileB | 1 +
fileX | 1 +
fileY | 1 +
4 files changed, 4 insertions(+)
create mode 100644 fileA
create mode 100644 fileB
create mode 100644 fileX
create mode 100644 fileY
Rebasing (1/3)
Rebasing (2/3)
Auto-merging fileX
CONFLICT (add/add): Merge conflict in fileX
error: could not apply f31fbd6... conflict-X
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply f31fbd6... conflict-X
[detached HEAD 57e508d] conflict-X
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Rebasing (3/3)
Successfully rebased and updated refs/heads/conflicts.
HEAD is now at f39a215 Q
ok 17 - rebase --merge reflog GIT_REFLOG_ACTION=my-reflog-action
expecting success of 3406.18 'rebase --merge fast-forward reflog GIT_REFLOG_ACTION=my-reflog-action':
git checkout fast-forward &&
test_when_finished "git reset --hard X" &&
(
if test -n "$reflog_action"
then
GIT_REFLOG_ACTION="$reflog_action" &&
export GIT_REFLOG_ACTION
fi &&
git rebase $mode main
) &&
git log -g --format=%gs -2 >actual &&
write_reflog_expect <<-EOF &&
${reflog_action:-rebase} (finish): returning to refs/heads/fast-forward
${reflog_action:-rebase} (start): checkout main
EOF
test_cmp expect actual &&
git log -g --format=%gs -1 fast-forward >actual &&
write_reflog_expect <<-EOF &&
${reflog_action:-rebase} (finish): refs/heads/fast-forward onto $(git rev-parse main)
EOF
test_cmp expect actual &&
# check there is only one new entry in the branch reflog
test_cmp_rev fast-forward@{1} X
Switched to branch 'fast-forward'
fileA | 1 +
fileB | 1 +
fileY | 1 +
3 files changed, 3 insertions(+)
create mode 100644 fileA
create mode 100644 fileB
create mode 100644 fileY
Successfully rebased and updated refs/heads/fast-forward.
HEAD is now at a2df67f X
ok 18 - rebase --merge fast-forward reflog GIT_REFLOG_ACTION=my-reflog-action
expecting success of 3406.19 'rebase --merge --skip reflog GIT_REFLOG_ACTION=my-reflog-action':
git checkout conflicts &&
test_when_finished "git reset --hard Q" &&
(
if test -n "$reflog_action"
then
GIT_REFLOG_ACTION="$reflog_action" &&
export GIT_REFLOG_ACTION
fi &&
test_must_fail git rebase $mode main &&
git rebase --skip
) &&
git log -g --format=%gs -4 >actual &&
write_reflog_expect <<-EOF &&
${reflog_action:-rebase} (finish): returning to refs/heads/conflicts
${reflog_action:-rebase} (pick): Q
${reflog_action:-rebase} (pick): P
${reflog_action:-rebase} (start): checkout main
EOF
test_cmp expect actual
Switched to branch 'conflicts'
fileA | 1 +
fileB | 1 +
fileX | 1 +
fileY | 1 +
4 files changed, 4 insertions(+)
create mode 100644 fileA
create mode 100644 fileB
create mode 100644 fileX
create mode 100644 fileY
Rebasing (1/3)
Rebasing (2/3)
Auto-merging fileX
CONFLICT (add/add): Merge conflict in fileX
error: could not apply f31fbd6... conflict-X
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply f31fbd6... conflict-X
Rebasing (3/3)
Successfully rebased and updated refs/heads/conflicts.
HEAD is now at f39a215 Q
ok 19 - rebase --merge --skip reflog GIT_REFLOG_ACTION=my-reflog-action
expecting success of 3406.20 'rebase --merge --abort reflog GIT_REFLOG_ACTION=my-reflog-action':
git checkout conflicts &&
test_when_finished "git reset --hard Q" &&
git log -g -1 conflicts >branch-expect &&
(
if test -n "$reflog_action"
then
GIT_REFLOG_ACTION="$reflog_action" &&
export GIT_REFLOG_ACTION
fi &&
test_must_fail git rebase $mode main &&
git rebase --abort
) &&
git log -g --format=%gs -3 >actual &&
write_reflog_expect <<-EOF &&
${reflog_action:-rebase} (abort): returning to refs/heads/conflicts
${reflog_action:-rebase} (pick): P
${reflog_action:-rebase} (start): checkout main
EOF
test_cmp expect actual &&
# check branch reflog is unchanged
git log -g -1 conflicts >branch-actual &&
test_cmp branch-expect branch-actual
Already on 'conflicts'
fileA | 1 +
fileB | 1 +
fileX | 1 +
fileY | 1 +
4 files changed, 4 insertions(+)
create mode 100644 fileA
create mode 100644 fileB
create mode 100644 fileX
create mode 100644 fileY
Rebasing (1/3)
Rebasing (2/3)
Auto-merging fileX
CONFLICT (add/add): Merge conflict in fileX
error: could not apply f31fbd6... conflict-X
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply f31fbd6... conflict-X
HEAD is now at f39a215 Q
ok 20 - rebase --merge --abort reflog GIT_REFLOG_ACTION=my-reflog-action
expecting success of 3406.21 'rebase --merge --abort detached HEAD reflog GIT_REFLOG_ACTION=my-reflog-action':
git checkout Q &&
test_when_finished "git reset --hard Q" &&
(
if test -n "$reflog_action"
then
GIT_REFLOG_ACTION="$reflog_action" &&
export GIT_REFLOG_ACTION
fi &&
test_must_fail git rebase $mode main &&
git rebase --abort
) &&
git log -g --format=%gs -3 >actual &&
write_reflog_expect <<-EOF &&
${reflog_action:-rebase} (abort): returning to $(git rev-parse Q)
${reflog_action:-rebase} (pick): P
${reflog_action:-rebase} (start): checkout main
EOF
test_cmp expect actual
Note: switching to 'Q'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at f39a215 Q
fileA | 1 +
fileB | 1 +
fileX | 1 +
fileY | 1 +
4 files changed, 4 insertions(+)
create mode 100644 fileA
create mode 100644 fileB
create mode 100644 fileX
create mode 100644 fileY
Rebasing (1/3)
Rebasing (2/3)
Auto-merging fileX
CONFLICT (add/add): Merge conflict in fileX
error: could not apply f31fbd6... conflict-X
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply f31fbd6... conflict-X
HEAD is now at f39a215 Q
ok 21 - rebase --merge --abort detached HEAD reflog GIT_REFLOG_ACTION=my-reflog-action
expecting success of 3406.22 'rebase --apply reflog':
git checkout conflicts &&
test_when_finished "git reset --hard Q" &&
(
if test -n "$reflog_action"
then
GIT_REFLOG_ACTION="$reflog_action" &&
export GIT_REFLOG_ACTION
fi &&
test_must_fail git rebase $mode main &&
echo resolved >fileX &&
git add fileX &&
git rebase --continue
) &&
git log -g --format=%gs -5 >actual &&
write_reflog_expect <<-EOF &&
${reflog_action:-rebase} (finish): returning to refs/heads/conflicts
${reflog_action:-rebase} (pick): Q
${reflog_action:-rebase} (continue): conflict-X
${reflog_action:-rebase} (pick): P
${reflog_action:-rebase} (start): checkout main
EOF
test_cmp expect actual &&
git log -g --format=%gs -1 conflicts >actual &&
write_reflog_expect <<-EOF &&
${reflog_action:-rebase} (finish): refs/heads/conflicts onto $(git rev-parse main)
EOF
test_cmp expect actual &&
# check there is only one new entry in the branch reflog
test_cmp_rev conflicts@{1} Q
Switched to branch 'conflicts'
fileA | 1 +
fileB | 1 +
fileX | 1 +
fileY | 1 +
4 files changed, 4 insertions(+)
create mode 100644 fileA
create mode 100644 fileB
create mode 100644 fileX
create mode 100644 fileY
First, rewinding head to replay your work on top of it...
Applying: P
Applying: conflict-X
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Merging:
866f7e4 P
virtual conflict-X
found 1 common ancestor:
virtual 4b825dc642cb6eb9a060e54bf8d69288fbee4904
CONFLICT (add/add): Merge conflict in fileX
Auto-merging fileX
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0002 conflict-X
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
Applying: conflict-X
Applying: Q
HEAD is now at f39a215 Q
ok 22 - rebase --apply reflog
expecting success of 3406.23 'rebase --apply fast-forward reflog':
git checkout fast-forward &&
test_when_finished "git reset --hard X" &&
(
if test -n "$reflog_action"
then
GIT_REFLOG_ACTION="$reflog_action" &&
export GIT_REFLOG_ACTION
fi &&
git rebase $mode main
) &&
git log -g --format=%gs -2 >actual &&
write_reflog_expect <<-EOF &&
${reflog_action:-rebase} (finish): returning to refs/heads/fast-forward
${reflog_action:-rebase} (start): checkout main
EOF
test_cmp expect actual &&
git log -g --format=%gs -1 fast-forward >actual &&
write_reflog_expect <<-EOF &&
${reflog_action:-rebase} (finish): refs/heads/fast-forward onto $(git rev-parse main)
EOF
test_cmp expect actual &&
# check there is only one new entry in the branch reflog
test_cmp_rev fast-forward@{1} X
Switched to branch 'fast-forward'
fileA | 1 +
fileB | 1 +
fileY | 1 +
3 files changed, 3 insertions(+)
create mode 100644 fileA
create mode 100644 fileB
create mode 100644 fileY
First, rewinding head to replay your work on top of it...
Fast-forwarded fast-forward to main.
HEAD is now at a2df67f X
ok 23 - rebase --apply fast-forward reflog
expecting success of 3406.24 'rebase --apply --skip reflog':
git checkout conflicts &&
test_when_finished "git reset --hard Q" &&
(
if test -n "$reflog_action"
then
GIT_REFLOG_ACTION="$reflog_action" &&
export GIT_REFLOG_ACTION
fi &&
test_must_fail git rebase $mode main &&
git rebase --skip
) &&
git log -g --format=%gs -4 >actual &&
write_reflog_expect <<-EOF &&
${reflog_action:-rebase} (finish): returning to refs/heads/conflicts
${reflog_action:-rebase} (pick): Q
${reflog_action:-rebase} (pick): P
${reflog_action:-rebase} (start): checkout main
EOF
test_cmp expect actual
Switched to branch 'conflicts'
fileA | 1 +
fileB | 1 +
fileX | 1 +
fileY | 1 +
4 files changed, 4 insertions(+)
create mode 100644 fileA
create mode 100644 fileB
create mode 100644 fileX
create mode 100644 fileY
First, rewinding head to replay your work on top of it...
Applying: P
Applying: conflict-X
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Merging:
866f7e4 P
virtual conflict-X
found 1 common ancestor:
virtual 4b825dc642cb6eb9a060e54bf8d69288fbee4904
CONFLICT (add/add): Merge conflict in fileX
Auto-merging fileX
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0002 conflict-X
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
Applying: Q
HEAD is now at f39a215 Q
ok 24 - rebase --apply --skip reflog
expecting success of 3406.25 'rebase --apply --abort reflog':
git checkout conflicts &&
test_when_finished "git reset --hard Q" &&
git log -g -1 conflicts >branch-expect &&
(
if test -n "$reflog_action"
then
GIT_REFLOG_ACTION="$reflog_action" &&
export GIT_REFLOG_ACTION
fi &&
test_must_fail git rebase $mode main &&
git rebase --abort
) &&
git log -g --format=%gs -3 >actual &&
write_reflog_expect <<-EOF &&
${reflog_action:-rebase} (abort): returning to refs/heads/conflicts
${reflog_action:-rebase} (pick): P
${reflog_action:-rebase} (start): checkout main
EOF
test_cmp expect actual &&
# check branch reflog is unchanged
git log -g -1 conflicts >branch-actual &&
test_cmp branch-expect branch-actual
Already on 'conflicts'
fileA | 1 +
fileB | 1 +
fileX | 1 +
fileY | 1 +
4 files changed, 4 insertions(+)
create mode 100644 fileA
create mode 100644 fileB
create mode 100644 fileX
create mode 100644 fileY
First, rewinding head to replay your work on top of it...
Applying: P
Applying: conflict-X
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Merging:
866f7e4 P
virtual conflict-X
found 1 common ancestor:
virtual 4b825dc642cb6eb9a060e54bf8d69288fbee4904
CONFLICT (add/add): Merge conflict in fileX
Auto-merging fileX
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0002 conflict-X
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
HEAD is now at f39a215 Q
ok 25 - rebase --apply --abort reflog
expecting success of 3406.26 'rebase --apply --abort detached HEAD reflog':
git checkout Q &&
test_when_finished "git reset --hard Q" &&
(
if test -n "$reflog_action"
then
GIT_REFLOG_ACTION="$reflog_action" &&
export GIT_REFLOG_ACTION
fi &&
test_must_fail git rebase $mode main &&
git rebase --abort
) &&
git log -g --format=%gs -3 >actual &&
write_reflog_expect <<-EOF &&
${reflog_action:-rebase} (abort): returning to $(git rev-parse Q)
${reflog_action:-rebase} (pick): P
${reflog_action:-rebase} (start): checkout main
EOF
test_cmp expect actual
Note: switching to 'Q'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at f39a215 Q
fileA | 1 +
fileB | 1 +
fileX | 1 +
fileY | 1 +
4 files changed, 4 insertions(+)
create mode 100644 fileA
create mode 100644 fileB
create mode 100644 fileX
create mode 100644 fileY
First, rewinding head to replay your work on top of it...
Applying: P
Applying: conflict-X
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Merging:
866f7e4 P
virtual conflict-X
found 1 common ancestor:
virtual 4b825dc642cb6eb9a060e54bf8d69288fbee4904
CONFLICT (add/add): Merge conflict in fileX
Auto-merging fileX
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0002 conflict-X
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
HEAD is now at f39a215 Q
ok 26 - rebase --apply --abort detached HEAD reflog
expecting success of 3406.27 'rebase --apply reflog GIT_REFLOG_ACTION=my-reflog-action':
git checkout conflicts &&
test_when_finished "git reset --hard Q" &&
(
if test -n "$reflog_action"
then
GIT_REFLOG_ACTION="$reflog_action" &&
export GIT_REFLOG_ACTION
fi &&
test_must_fail git rebase $mode main &&
echo resolved >fileX &&
git add fileX &&
git rebase --continue
) &&
git log -g --format=%gs -5 >actual &&
write_reflog_expect <<-EOF &&
${reflog_action:-rebase} (finish): returning to refs/heads/conflicts
${reflog_action:-rebase} (pick): Q
${reflog_action:-rebase} (continue): conflict-X
${reflog_action:-rebase} (pick): P
${reflog_action:-rebase} (start): checkout main
EOF
test_cmp expect actual &&
git log -g --format=%gs -1 conflicts >actual &&
write_reflog_expect <<-EOF &&
${reflog_action:-rebase} (finish): refs/heads/conflicts onto $(git rev-parse main)
EOF
test_cmp expect actual &&
# check there is only one new entry in the branch reflog
test_cmp_rev conflicts@{1} Q
Switched to branch 'conflicts'
fileA | 1 +
fileB | 1 +
fileX | 1 +
fileY | 1 +
4 files changed, 4 insertions(+)
create mode 100644 fileA
create mode 100644 fileB
create mode 100644 fileX
create mode 100644 fileY
First, rewinding head to replay your work on top of it...
Applying: P
Applying: conflict-X
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Merging:
866f7e4 P
virtual conflict-X
found 1 common ancestor:
virtual 4b825dc642cb6eb9a060e54bf8d69288fbee4904
CONFLICT (add/add): Merge conflict in fileX
Auto-merging fileX
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0002 conflict-X
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
Applying: conflict-X
Applying: Q
HEAD is now at f39a215 Q
ok 27 - rebase --apply reflog GIT_REFLOG_ACTION=my-reflog-action
expecting success of 3406.28 'rebase --apply fast-forward reflog GIT_REFLOG_ACTION=my-reflog-action':
git checkout fast-forward &&
test_when_finished "git reset --hard X" &&
(
if test -n "$reflog_action"
then
GIT_REFLOG_ACTION="$reflog_action" &&
export GIT_REFLOG_ACTION
fi &&
git rebase $mode main
) &&
git log -g --format=%gs -2 >actual &&
write_reflog_expect <<-EOF &&
${reflog_action:-rebase} (finish): returning to refs/heads/fast-forward
${reflog_action:-rebase} (start): checkout main
EOF
test_cmp expect actual &&
git log -g --format=%gs -1 fast-forward >actual &&
write_reflog_expect <<-EOF &&
${reflog_action:-rebase} (finish): refs/heads/fast-forward onto $(git rev-parse main)
EOF
test_cmp expect actual &&
# check there is only one new entry in the branch reflog
test_cmp_rev fast-forward@{1} X
Switched to branch 'fast-forward'
fileA | 1 +
fileB | 1 +
fileY | 1 +
3 files changed, 3 insertions(+)
create mode 100644 fileA
create mode 100644 fileB
create mode 100644 fileY
First, rewinding head to replay your work on top of it...
Fast-forwarded fast-forward to main.
HEAD is now at a2df67f X
ok 28 - rebase --apply fast-forward reflog GIT_REFLOG_ACTION=my-reflog-action
expecting success of 3406.29 'rebase --apply --skip reflog GIT_REFLOG_ACTION=my-reflog-action':
git checkout conflicts &&
test_when_finished "git reset --hard Q" &&
(
if test -n "$reflog_action"
then
GIT_REFLOG_ACTION="$reflog_action" &&
export GIT_REFLOG_ACTION
fi &&
test_must_fail git rebase $mode main &&
git rebase --skip
) &&
git log -g --format=%gs -4 >actual &&
write_reflog_expect <<-EOF &&
${reflog_action:-rebase} (finish): returning to refs/heads/conflicts
${reflog_action:-rebase} (pick): Q
${reflog_action:-rebase} (pick): P
${reflog_action:-rebase} (start): checkout main
EOF
test_cmp expect actual
Switched to branch 'conflicts'
fileA | 1 +
fileB | 1 +
fileX | 1 +
fileY | 1 +
4 files changed, 4 insertions(+)
create mode 100644 fileA
create mode 100644 fileB
create mode 100644 fileX
create mode 100644 fileY
First, rewinding head to replay your work on top of it...
Applying: P
Applying: conflict-X
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Merging:
866f7e4 P
virtual conflict-X
found 1 common ancestor:
virtual 4b825dc642cb6eb9a060e54bf8d69288fbee4904
CONFLICT (add/add): Merge conflict in fileX
Auto-merging fileX
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0002 conflict-X
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
Applying: Q
HEAD is now at f39a215 Q
ok 29 - rebase --apply --skip reflog GIT_REFLOG_ACTION=my-reflog-action
expecting success of 3406.30 'rebase --apply --abort reflog GIT_REFLOG_ACTION=my-reflog-action':
git checkout conflicts &&
test_when_finished "git reset --hard Q" &&
git log -g -1 conflicts >branch-expect &&
(
if test -n "$reflog_action"
then
GIT_REFLOG_ACTION="$reflog_action" &&
export GIT_REFLOG_ACTION
fi &&
test_must_fail git rebase $mode main &&
git rebase --abort
) &&
git log -g --format=%gs -3 >actual &&
write_reflog_expect <<-EOF &&
${reflog_action:-rebase} (abort): returning to refs/heads/conflicts
${reflog_action:-rebase} (pick): P
${reflog_action:-rebase} (start): checkout main
EOF
test_cmp expect actual &&
# check branch reflog is unchanged
git log -g -1 conflicts >branch-actual &&
test_cmp branch-expect branch-actual
Already on 'conflicts'
fileA | 1 +
fileB | 1 +
fileX | 1 +
fileY | 1 +
4 files changed, 4 insertions(+)
create mode 100644 fileA
create mode 100644 fileB
create mode 100644 fileX
create mode 100644 fileY
First, rewinding head to replay your work on top of it...
Applying: P
Applying: conflict-X
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Merging:
866f7e4 P
virtual conflict-X
found 1 common ancestor:
virtual 4b825dc642cb6eb9a060e54bf8d69288fbee4904
CONFLICT (add/add): Merge conflict in fileX
Auto-merging fileX
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0002 conflict-X
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
HEAD is now at f39a215 Q
ok 30 - rebase --apply --abort reflog GIT_REFLOG_ACTION=my-reflog-action
expecting success of 3406.31 'rebase --apply --abort detached HEAD reflog GIT_REFLOG_ACTION=my-reflog-action':
git checkout Q &&
test_when_finished "git reset --hard Q" &&
(
if test -n "$reflog_action"
then
GIT_REFLOG_ACTION="$reflog_action" &&
export GIT_REFLOG_ACTION
fi &&
test_must_fail git rebase $mode main &&
git rebase --abort
) &&
git log -g --format=%gs -3 >actual &&
write_reflog_expect <<-EOF &&
${reflog_action:-rebase} (abort): returning to $(git rev-parse Q)
${reflog_action:-rebase} (pick): P
${reflog_action:-rebase} (start): checkout main
EOF
test_cmp expect actual
Note: switching to 'Q'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at f39a215 Q
fileA | 1 +
fileB | 1 +
fileX | 1 +
fileY | 1 +
4 files changed, 4 insertions(+)
create mode 100644 fileA
create mode 100644 fileB
create mode 100644 fileX
create mode 100644 fileY
First, rewinding head to replay your work on top of it...
Applying: P
Applying: conflict-X
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Merging:
866f7e4 P
virtual conflict-X
found 1 common ancestor:
virtual 4b825dc642cb6eb9a060e54bf8d69288fbee4904
CONFLICT (add/add): Merge conflict in fileX
Auto-merging fileX
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0002 conflict-X
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
HEAD is now at f39a215 Q
ok 31 - rebase --apply --abort detached HEAD reflog GIT_REFLOG_ACTION=my-reflog-action
expecting success of 3406.32 'rebase -i onto unrelated history':
git init unrelated &&
test_commit -C unrelated 1 &&
git -C unrelated remote add -f origin "$PWD" &&
git -C unrelated branch --set-upstream-to=origin/main &&
git -C unrelated -c core.editor=true rebase -i -v --stat >actual &&
test_i18ngrep "Changes to " actual &&
test_i18ngrep "5 files changed" actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3406-rebase-message/unrelated/.git/
[main (root-commit) 925a26a] 1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 1.t
Updating origin
From /<<PKGBUILDDIR>>/t/trash directory.t3406-rebase-message
* [new branch] conflicts -> origin/conflicts
* [new branch] fast-forward -> origin/fast-forward
* [new branch] main -> origin/main
* [new branch] topic -> origin/topic
* [new tag] Q -> Q
* [new tag] X -> X
* [new tag] Y -> Y
* [new tag] A -> A
* [new tag] B -> B
* [new tag] O -> O
* [new tag] P -> P
* [new tag] conflict-X -> conflict-X
branch 'main' set up to track 'origin/main'.
Rebasing (1/1)
Successfully rebased and updated refs/heads/main.
Changes to 545b0d0a5d2af9b721d265dc5293dbb3418ab768:
5 files changed, 5 insertions(+)
5 files changed, 5 insertions(+)
ok 32 - rebase -i onto unrelated history
# passed all 32 test(s)
1..32
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3407-rebase-abort.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3407-rebase-abort/.git/
expecting success of 3407.1 'setup':
test_commit a a a &&
git branch to-rebase &&
test_commit --annotate b a b &&
test_commit --annotate c a c &&
git checkout to-rebase &&
test_commit "merge should fail on this" a d d &&
test_commit --annotate "merge should fail on this, too" a e pre-rebase
[main (root-commit) cc33353] a
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 a
[main 9c12280] b
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[main deaaf55] c
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to branch 'to-rebase'
[to-rebase 3e1f4f7] merge should fail on this
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[to-rebase 1c3a3e2] merge should fail on this, too
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 1 - setup
expecting success of 3407.2 'rebase --apply --abort':
# Clean up the state from the previous one
git reset --hard pre-rebase &&
test_must_fail git rebase$type main &&
test_path_is_dir "$state_dir" &&
git rebase --abort &&
check_head &&
test_path_is_missing "$state_dir"
HEAD is now at 1c3a3e2 merge should fail on this, too
First, rewinding head to replay your work on top of it...
Applying: merge should fail on this
Using index info to reconstruct a base tree...
M a
Falling back to patching base and 3-way merge...
Merging:
deaaf55 c
virtual merge should fail on this
found 1 common ancestor:
virtual aaff74984cccd156a469afa7d9ab10e4777beb24
Auto-merging a
CONFLICT (content): Merge conflict in a
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 merge should fail on this
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
ok 2 - rebase --apply --abort
expecting success of 3407.3 'rebase --apply --abort after --skip':
# Clean up the state from the previous one
git reset --hard pre-rebase &&
test_must_fail git rebase$type main &&
test_path_is_dir "$state_dir" &&
test_must_fail git rebase --skip &&
test_cmp_rev HEAD main &&
git rebase --abort &&
check_head &&
test_path_is_missing "$state_dir"
HEAD is now at 1c3a3e2 merge should fail on this, too
First, rewinding head to replay your work on top of it...
Applying: merge should fail on this
Using index info to reconstruct a base tree...
M a
Falling back to patching base and 3-way merge...
Merging:
deaaf55 c
virtual merge should fail on this
found 1 common ancestor:
virtual aaff74984cccd156a469afa7d9ab10e4777beb24
Auto-merging a
CONFLICT (content): Merge conflict in a
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 merge should fail on this
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
Applying: merge should fail on this, too
Using index info to reconstruct a base tree...
M a
Falling back to patching base and 3-way merge...
Merging:
deaaf55 c
virtual merge should fail on this, too
found 1 common ancestor:
virtual f788de73cfc81f8d734fa7efc658cc63ca083f50
Auto-merging a
CONFLICT (content): Merge conflict in a
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0002 merge should fail on this, too
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
ok 3 - rebase --apply --abort after --skip
expecting success of 3407.4 'rebase --apply --abort after --continue':
# Clean up the state from the previous one
git reset --hard pre-rebase &&
test_must_fail git rebase$type main &&
test_path_is_dir "$state_dir" &&
echo c > a &&
echo d >> a &&
git add a &&
test_must_fail git rebase --continue &&
test_cmp_rev ! HEAD main &&
git rebase --abort &&
check_head &&
test_path_is_missing "$state_dir"
HEAD is now at 1c3a3e2 merge should fail on this, too
First, rewinding head to replay your work on top of it...
Applying: merge should fail on this
Using index info to reconstruct a base tree...
M a
Falling back to patching base and 3-way merge...
Merging:
deaaf55 c
virtual merge should fail on this
found 1 common ancestor:
virtual aaff74984cccd156a469afa7d9ab10e4777beb24
Auto-merging a
CONFLICT (content): Merge conflict in a
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 merge should fail on this
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
Applying: merge should fail on this
Applying: merge should fail on this, too
Using index info to reconstruct a base tree...
M a
Falling back to patching base and 3-way merge...
Merging:
670eb71 merge should fail on this
virtual merge should fail on this, too
found 1 common ancestor:
virtual f788de73cfc81f8d734fa7efc658cc63ca083f50
Auto-merging a
CONFLICT (content): Merge conflict in a
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0002 merge should fail on this, too
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
ok 4 - rebase --apply --abort after --continue
expecting success of 3407.5 'rebase --apply --abort when checking out a tag':
test_when_finished "git symbolic-ref HEAD refs/heads/to-rebase" &&
git reset --hard a -- &&
test_must_fail git rebase$type --onto b c pre-rebase &&
test_cmp_rev HEAD b^{commit} &&
git rebase --abort &&
test_cmp_rev HEAD pre-rebase^{commit} &&
! git symbolic-ref HEAD
HEAD is now at cc33353 a
First, rewinding head to replay your work on top of it...
Applying: merge should fail on this
Using index info to reconstruct a base tree...
M a
Falling back to patching base and 3-way merge...
Merging:
9c12280 b
virtual merge should fail on this
found 1 common ancestor:
virtual aaff74984cccd156a469afa7d9ab10e4777beb24
Auto-merging a
CONFLICT (content): Merge conflict in a
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 merge should fail on this
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
fatal: ref HEAD is not a symbolic ref
ok 5 - rebase --apply --abort when checking out a tag
expecting success of 3407.6 'rebase --apply --abort does not update reflog':
# Clean up the state from the previous one
git reset --hard pre-rebase &&
git reflog show to-rebase > reflog_before &&
test_must_fail git rebase$type main &&
git rebase --abort &&
git reflog show to-rebase > reflog_after &&
test_cmp reflog_before reflog_after &&
rm reflog_before reflog_after
HEAD is now at 1c3a3e2 merge should fail on this, too
First, rewinding head to replay your work on top of it...
Applying: merge should fail on this
Using index info to reconstruct a base tree...
M a
Falling back to patching base and 3-way merge...
Merging:
deaaf55 c
virtual merge should fail on this
found 1 common ancestor:
virtual aaff74984cccd156a469afa7d9ab10e4777beb24
Auto-merging a
CONFLICT (content): Merge conflict in a
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 merge should fail on this
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
ok 6 - rebase --apply --abort does not update reflog
expecting success of 3407.7 'rebase --abort can not be used with other options':
# Clean up the state from the previous one
git reset --hard pre-rebase &&
test_must_fail git rebase$type main &&
test_must_fail git rebase -v --abort &&
test_must_fail git rebase --abort -v &&
git rebase --abort
HEAD is now at 1c3a3e2 merge should fail on this, too
First, rewinding head to replay your work on top of it...
Applying: merge should fail on this
Using index info to reconstruct a base tree...
M a
Falling back to patching base and 3-way merge...
Merging:
deaaf55 c
virtual merge should fail on this
found 1 common ancestor:
virtual aaff74984cccd156a469afa7d9ab10e4777beb24
Auto-merging a
CONFLICT (content): Merge conflict in a
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 merge should fail on this
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
usage: git rebase [-i] [options] [--exec <cmd>] [--onto <newbase> | --keep-base] [<upstream> [<branch>]]
or: git rebase [-i] [options] [--exec <cmd>] [--onto <newbase>] --root [<branch>]
or: git rebase --continue | --abort | --skip | --edit-todo
--onto <revision> rebase onto given branch instead of upstream
--keep-base use the merge-base of upstream and branch as the current base
--no-verify allow pre-rebase hook to run
-q, --quiet be quiet. implies --no-stat
-v, --verbose display a diffstat of what changed upstream
-n, --no-stat do not show diffstat of what changed upstream
--signoff add a Signed-off-by trailer to each commit
--committer-date-is-author-date
make committer date match author date
--reset-author-date ignore author date and use current date
-C <n> passed to 'git apply'
--ignore-whitespace ignore changes in whitespace
--whitespace <action> passed to 'git apply'
-f, --force-rebase cherry-pick all commits, even if unchanged
--no-ff cherry-pick all commits, even if unchanged
--continue continue
--skip skip current patch and continue
--abort abort and check out the original branch
--quit abort but keep HEAD where it is
--edit-todo edit the todo list during an interactive rebase
--show-current-patch show the patch file being applied or merged
--apply use apply strategies to rebase
-m, --merge use merging strategies to rebase
-i, --interactive let the user edit the list of commits to rebase
--rerere-autoupdate update the index with reused conflict resolution if possible
--empty <{drop,keep,ask}>
how to handle commits that become empty
--autosquash move commits that begin with squash!/fixup! under -i
--update-refs update branches that point to commits that are being rebased
-S, --gpg-sign[=<key-id>]
GPG-sign commits
--autostash automatically stash/stash pop before and after
-x, --exec <exec> add exec lines after each commit of the editable list
-r, --rebase-merges[=<mode>]
try to rebase merges instead of skipping them
--fork-point use 'merge-base --fork-point' to refine upstream
-s, --strategy <strategy>
use the given merge strategy
-X, --strategy-option <option>
pass the argument through to the merge strategy
--root rebase all reachable commits up to the root(s)
--reschedule-failed-exec
automatically re-schedule any `exec` that fails
--reapply-cherry-picks
apply all changes, even those already present upstream
usage: git rebase [-i] [options] [--exec <cmd>] [--onto <newbase> | --keep-base] [<upstream> [<branch>]]
or: git rebase [-i] [options] [--exec <cmd>] [--onto <newbase>] --root [<branch>]
or: git rebase --continue | --abort | --skip | --edit-todo
--onto <revision> rebase onto given branch instead of upstream
--keep-base use the merge-base of upstream and branch as the current base
--no-verify allow pre-rebase hook to run
-q, --quiet be quiet. implies --no-stat
-v, --verbose display a diffstat of what changed upstream
-n, --no-stat do not show diffstat of what changed upstream
--signoff add a Signed-off-by trailer to each commit
--committer-date-is-author-date
make committer date match author date
--reset-author-date ignore author date and use current date
-C <n> passed to 'git apply'
--ignore-whitespace ignore changes in whitespace
--whitespace <action> passed to 'git apply'
-f, --force-rebase cherry-pick all commits, even if unchanged
--no-ff cherry-pick all commits, even if unchanged
--continue continue
--skip skip current patch and continue
--abort abort and check out the original branch
--quit abort but keep HEAD where it is
--edit-todo edit the todo list during an interactive rebase
--show-current-patch show the patch file being applied or merged
--apply use apply strategies to rebase
-m, --merge use merging strategies to rebase
-i, --interactive let the user edit the list of commits to rebase
--rerere-autoupdate update the index with reused conflict resolution if possible
--empty <{drop,keep,ask}>
how to handle commits that become empty
--autosquash move commits that begin with squash!/fixup! under -i
--update-refs update branches that point to commits that are being rebased
-S, --gpg-sign[=<key-id>]
GPG-sign commits
--autostash automatically stash/stash pop before and after
-x, --exec <exec> add exec lines after each commit of the editable list
-r, --rebase-merges[=<mode>]
try to rebase merges instead of skipping them
--fork-point use 'merge-base --fork-point' to refine upstream
-s, --strategy <strategy>
use the given merge strategy
-X, --strategy-option <option>
pass the argument through to the merge strategy
--root rebase all reachable commits up to the root(s)
--reschedule-failed-exec
automatically re-schedule any `exec` that fails
--reapply-cherry-picks
apply all changes, even those already present upstream
ok 7 - rebase --abort can not be used with other options
expecting success of 3407.8 'rebase --apply --quit':
test_when_finished "git symbolic-ref HEAD refs/heads/to-rebase" &&
# Clean up the state from the previous one
git reset --hard pre-rebase &&
test_must_fail git rebase$type main &&
test_path_is_dir $state_dir &&
head_before=$(git rev-parse HEAD) &&
git rebase --quit &&
test_cmp_rev HEAD $head_before &&
test_path_is_missing .git/rebase-apply
HEAD is now at 1c3a3e2 merge should fail on this, too
First, rewinding head to replay your work on top of it...
Applying: merge should fail on this
Using index info to reconstruct a base tree...
M a
Falling back to patching base and 3-way merge...
Merging:
deaaf55 c
virtual merge should fail on this
found 1 common ancestor:
virtual aaff74984cccd156a469afa7d9ab10e4777beb24
Auto-merging a
CONFLICT (content): Merge conflict in a
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 merge should fail on this
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
ok 8 - rebase --apply --quit
expecting success of 3407.9 'rebase --merge --abort':
# Clean up the state from the previous one
git reset --hard pre-rebase &&
test_must_fail git rebase$type main &&
test_path_is_dir "$state_dir" &&
git rebase --abort &&
check_head &&
test_path_is_missing "$state_dir"
HEAD is now at 1c3a3e2 merge should fail on this, too
Rebasing (1/2)
Auto-merging a
CONFLICT (content): Merge conflict in a
error: could not apply 3e1f4f7... merge should fail on this
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 3e1f4f7... merge should fail on this
ok 9 - rebase --merge --abort
expecting success of 3407.10 'rebase --merge --abort after --skip':
# Clean up the state from the previous one
git reset --hard pre-rebase &&
test_must_fail git rebase$type main &&
test_path_is_dir "$state_dir" &&
test_must_fail git rebase --skip &&
test_cmp_rev HEAD main &&
git rebase --abort &&
check_head &&
test_path_is_missing "$state_dir"
HEAD is now at 1c3a3e2 merge should fail on this, too
Rebasing (1/2)
Auto-merging a
CONFLICT (content): Merge conflict in a
error: could not apply 3e1f4f7... merge should fail on this
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 3e1f4f7... merge should fail on this
Rebasing (2/2)
Auto-merging a
CONFLICT (content): Merge conflict in a
error: could not apply 1c3a3e2... merge should fail on this, too
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 1c3a3e2... merge should fail on this, too
ok 10 - rebase --merge --abort after --skip
expecting success of 3407.11 'rebase --merge --abort after --continue':
# Clean up the state from the previous one
git reset --hard pre-rebase &&
test_must_fail git rebase$type main &&
test_path_is_dir "$state_dir" &&
echo c > a &&
echo d >> a &&
git add a &&
test_must_fail git rebase --continue &&
test_cmp_rev ! HEAD main &&
git rebase --abort &&
check_head &&
test_path_is_missing "$state_dir"
HEAD is now at 1c3a3e2 merge should fail on this, too
Rebasing (1/2)
Auto-merging a
CONFLICT (content): Merge conflict in a
error: could not apply 3e1f4f7... merge should fail on this
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 3e1f4f7... merge should fail on this
[detached HEAD 670eb71] merge should fail on this
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
Rebasing (2/2)
Auto-merging a
CONFLICT (content): Merge conflict in a
error: could not apply 1c3a3e2... merge should fail on this, too
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 1c3a3e2... merge should fail on this, too
ok 11 - rebase --merge --abort after --continue
expecting success of 3407.12 'rebase --merge --abort when checking out a tag':
test_when_finished "git symbolic-ref HEAD refs/heads/to-rebase" &&
git reset --hard a -- &&
test_must_fail git rebase$type --onto b c pre-rebase &&
test_cmp_rev HEAD b^{commit} &&
git rebase --abort &&
test_cmp_rev HEAD pre-rebase^{commit} &&
! git symbolic-ref HEAD
HEAD is now at cc33353 a
Rebasing (1/2)
Auto-merging a
CONFLICT (content): Merge conflict in a
error: could not apply 3e1f4f7... merge should fail on this
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 3e1f4f7... merge should fail on this
fatal: ref HEAD is not a symbolic ref
ok 12 - rebase --merge --abort when checking out a tag
expecting success of 3407.13 'rebase --merge --abort does not update reflog':
# Clean up the state from the previous one
git reset --hard pre-rebase &&
git reflog show to-rebase > reflog_before &&
test_must_fail git rebase$type main &&
git rebase --abort &&
git reflog show to-rebase > reflog_after &&
test_cmp reflog_before reflog_after &&
rm reflog_before reflog_after
HEAD is now at 1c3a3e2 merge should fail on this, too
Rebasing (1/2)
Auto-merging a
CONFLICT (content): Merge conflict in a
error: could not apply 3e1f4f7... merge should fail on this
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 3e1f4f7... merge should fail on this
ok 13 - rebase --merge --abort does not update reflog
expecting success of 3407.14 'rebase --abort can not be used with other options':
# Clean up the state from the previous one
git reset --hard pre-rebase &&
test_must_fail git rebase$type main &&
test_must_fail git rebase -v --abort &&
test_must_fail git rebase --abort -v &&
git rebase --abort
HEAD is now at 1c3a3e2 merge should fail on this, too
Rebasing (1/2)
Auto-merging a
CONFLICT (content): Merge conflict in a
error: could not apply 3e1f4f7... merge should fail on this
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 3e1f4f7... merge should fail on this
usage: git rebase [-i] [options] [--exec <cmd>] [--onto <newbase> | --keep-base] [<upstream> [<branch>]]
or: git rebase [-i] [options] [--exec <cmd>] [--onto <newbase>] --root [<branch>]
or: git rebase --continue | --abort | --skip | --edit-todo
--onto <revision> rebase onto given branch instead of upstream
--keep-base use the merge-base of upstream and branch as the current base
--no-verify allow pre-rebase hook to run
-q, --quiet be quiet. implies --no-stat
-v, --verbose display a diffstat of what changed upstream
-n, --no-stat do not show diffstat of what changed upstream
--signoff add a Signed-off-by trailer to each commit
--committer-date-is-author-date
make committer date match author date
--reset-author-date ignore author date and use current date
-C <n> passed to 'git apply'
--ignore-whitespace ignore changes in whitespace
--whitespace <action> passed to 'git apply'
-f, --force-rebase cherry-pick all commits, even if unchanged
--no-ff cherry-pick all commits, even if unchanged
--continue continue
--skip skip current patch and continue
--abort abort and check out the original branch
--quit abort but keep HEAD where it is
--edit-todo edit the todo list during an interactive rebase
--show-current-patch show the patch file being applied or merged
--apply use apply strategies to rebase
-m, --merge use merging strategies to rebase
-i, --interactive let the user edit the list of commits to rebase
--rerere-autoupdate update the index with reused conflict resolution if possible
--empty <{drop,keep,ask}>
how to handle commits that become empty
--autosquash move commits that begin with squash!/fixup! under -i
--update-refs update branches that point to commits that are being rebased
-S, --gpg-sign[=<key-id>]
GPG-sign commits
--autostash automatically stash/stash pop before and after
-x, --exec <exec> add exec lines after each commit of the editable list
-r, --rebase-merges[=<mode>]
try to rebase merges instead of skipping them
--fork-point use 'merge-base --fork-point' to refine upstream
-s, --strategy <strategy>
use the given merge strategy
-X, --strategy-option <option>
pass the argument through to the merge strategy
--root rebase all reachable commits up to the root(s)
--reschedule-failed-exec
automatically re-schedule any `exec` that fails
--reapply-cherry-picks
apply all changes, even those already present upstream
usage: git rebase [-i] [options] [--exec <cmd>] [--onto <newbase> | --keep-base] [<upstream> [<branch>]]
or: git rebase [-i] [options] [--exec <cmd>] [--onto <newbase>] --root [<branch>]
or: git rebase --continue | --abort | --skip | --edit-todo
--onto <revision> rebase onto given branch instead of upstream
--keep-base use the merge-base of upstream and branch as the current base
--no-verify allow pre-rebase hook to run
-q, --quiet be quiet. implies --no-stat
-v, --verbose display a diffstat of what changed upstream
-n, --no-stat do not show diffstat of what changed upstream
--signoff add a Signed-off-by trailer to each commit
--committer-date-is-author-date
make committer date match author date
--reset-author-date ignore author date and use current date
-C <n> passed to 'git apply'
--ignore-whitespace ignore changes in whitespace
--whitespace <action> passed to 'git apply'
-f, --force-rebase cherry-pick all commits, even if unchanged
--no-ff cherry-pick all commits, even if unchanged
--continue continue
--skip skip current patch and continue
--abort abort and check out the original branch
--quit abort but keep HEAD where it is
--edit-todo edit the todo list during an interactive rebase
--show-current-patch show the patch file being applied or merged
--apply use apply strategies to rebase
-m, --merge use merging strategies to rebase
-i, --interactive let the user edit the list of commits to rebase
--rerere-autoupdate update the index with reused conflict resolution if possible
--empty <{drop,keep,ask}>
how to handle commits that become empty
--autosquash move commits that begin with squash!/fixup! under -i
--update-refs update branches that point to commits that are being rebased
-S, --gpg-sign[=<key-id>]
GPG-sign commits
--autostash automatically stash/stash pop before and after
-x, --exec <exec> add exec lines after each commit of the editable list
-r, --rebase-merges[=<mode>]
try to rebase merges instead of skipping them
--fork-point use 'merge-base --fork-point' to refine upstream
-s, --strategy <strategy>
use the given merge strategy
-X, --strategy-option <option>
pass the argument through to the merge strategy
--root rebase all reachable commits up to the root(s)
--reschedule-failed-exec
automatically re-schedule any `exec` that fails
--reapply-cherry-picks
apply all changes, even those already present upstream
ok 14 - rebase --abort can not be used with other options
expecting success of 3407.15 'rebase --merge --quit':
test_when_finished "git symbolic-ref HEAD refs/heads/to-rebase" &&
# Clean up the state from the previous one
git reset --hard pre-rebase &&
test_must_fail git rebase$type main &&
test_path_is_dir $state_dir &&
head_before=$(git rev-parse HEAD) &&
git rebase --quit &&
test_cmp_rev HEAD $head_before &&
test_path_is_missing .git/rebase-apply
HEAD is now at 1c3a3e2 merge should fail on this, too
Rebasing (1/2)
Auto-merging a
CONFLICT (content): Merge conflict in a
error: could not apply 3e1f4f7... merge should fail on this
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 3e1f4f7... merge should fail on this
ok 15 - rebase --merge --quit
# passed all 15 test(s)
1..15
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3408-rebase-multi-line.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3408-rebase-multi-line/.git/
expecting success of 3408.1 'setup':
>file &&
git add file &&
test_tick &&
git commit -m initial &&
echo hello >file &&
test_tick &&
git commit -a -m "A sample commit log message that has a long
summary that spills over multiple lines.
But otherwise with a sane description." &&
git branch side &&
git reset --hard HEAD^ &&
>elif &&
git add elif &&
test_tick &&
git commit -m second &&
git checkout -b side2 &&
>afile &&
git add afile &&
test_tick &&
git commit -m third &&
echo hello >afile &&
test_tick &&
git commit -a -m fourth &&
git checkout -b side-merge &&
git reset --hard HEAD^^ &&
git merge --no-ff -m "A merge commit log message that has a long
summary that spills over multiple lines.
But otherwise with a sane description." side2 &&
git branch side-merge-original
[main (root-commit) 1bd44cb] initial
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file
[main 1708bf0] A sample commit log message that has a long summary that spills over multiple lines.
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
HEAD is now at 1bd44cb initial
[main e79e348] second
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 elif
Switched to a new branch 'side2'
[side2 0c9638e] third
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 afile
[side2 5efd714] fourth
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
Switched to a new branch 'side-merge'
HEAD is now at e79e348 second
Merge made by the 'ort' strategy.
afile | 1 +
1 file changed, 1 insertion(+)
create mode 100644 afile
ok 1 - setup
expecting success of 3408.2 'rebase':
git checkout side &&
git rebase main &&
git cat-file commit HEAD | sed -e "1,/^\$/d" >actual &&
git cat-file commit side@{1} | sed -e "1,/^\$/d" >expect &&
test_cmp expect actual
Switched to branch 'side'
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
ok 2 - rebase
# passed all 2 test(s)
1..2
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3409-rebase-environ.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3409-rebase-environ/.git/
expecting success of 3409.1 'setup':
test_commit one &&
test_commit two &&
test_commit three
[master (root-commit) d79ce16] one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 one.t
[master 139b20d] two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 two.t
[master 7c7cd71] three
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 three.t
ok 1 - setup
expecting success of 3409.2 'rebase --exec does not muck with GIT_DIR':
git rebase --exec "printf %s \$GIT_DIR >environ" HEAD~1 &&
test_must_be_empty environ
Rebasing (2/2)
Executing: printf %s $GIT_DIR >environ
Successfully rebased and updated refs/heads/master.
ok 2 - rebase --exec does not muck with GIT_DIR
expecting success of 3409.3 'rebase --exec does not muck with GIT_WORK_TREE':
git rebase --exec "printf %s \$GIT_WORK_TREE >environ" HEAD~1 &&
test_must_be_empty environ
Rebasing (2/2)
Executing: printf %s $GIT_WORK_TREE >environ
Successfully rebased and updated refs/heads/master.
ok 3 - rebase --exec does not muck with GIT_WORK_TREE
# passed all 3 test(s)
1..3
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3311-notes-merge-fanout.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3311-notes-merge-fanout/.git/
expecting success of 3311.1 'setup a few initial commits with notes (notes ref: x)':
git config core.notesRef refs/notes/x &&
for i in 1 2 3 4 5
do
test_commit "commit$i" >/dev/null &&
git notes add -m "notes for commit$i" || return 1
done &&
git log --format=oneline &&
test_oid_cache <<-EOF
hash05a sha1:aed91155c7a72c2188e781fdf40e0f3761b299db
hash04a sha1:99fab268f9d7ee7b011e091a436c78def8eeee69
hash03a sha1:953c20ae26c7aa0b428c20693fe38bc687f9d1a9
hash02a sha1:6358796131b8916eaa2dde6902642942a1cb37e1
hash01a sha1:b02d459c32f0e68f2fe0981033bb34f38776ba47
hash03b sha1:9f506ee70e20379d7f78204c77b334f43d77410d
hash02b sha1:23a47d6ea7d589895faf800752054818e1e7627b
hash05a sha256:3aae5d26619d96dba93795f66325716e4cbc486884f95a6adee8fb0615a76d12
hash04a sha256:07e43dd3d89fe634d3252e253b426aacc7285a995dcdbcf94ac284060a1122cf
hash03a sha256:26fb52eaa7f4866bf735254587be7b31209ec10e525912ffd8e8ba549ba892ff
hash02a sha256:b57ebdf23634e750dcbc4b9a37991d70f90830d568a0e4529ce9de0a3f8d605c
hash01a sha256:377903b1572bd5117087a5518fcb1011b5053cccbc59e3c7c823a8615204173b
hash03b sha256:04e7b392fda7c185bfa17c9179b56db732edc2dc2b3bf887308dcaabb717270d
hash02b sha256:66099aaaec49a485ed990acadd9a9b81232ea592079964113d8f581ff69ef50b
EOF
f6db73397fcc379ea00d1fc17a35abb42027a69a commit5
157e8cc0aeac5befb302d276f2e706112bf6e413 commit4
e0851358fb6b4703f23d74ef964bc4491bec7ab9 commit3
94955c5cd7e5662c6ab40c323ecdfac458c47435 commit2
ef004cfa88883bb87e030b6196934dd90e3548d2 commit1
ok 1 - setup a few initial commits with notes (notes ref: x)
expecting success of 3311.2 'sanity check (x)':
verify_notes x commit5 &&
verify_no_fanout x
157e8cc0aeac5befb302d276f2e706112bf6e413
94955c5cd7e5662c6ab40c323ecdfac458c47435
e0851358fb6b4703f23d74ef964bc4491bec7ab9
ef004cfa88883bb87e030b6196934dd90e3548d2
f6db73397fcc379ea00d1fc17a35abb42027a69a
ok 2 - sanity check (x)
expecting success of 3311.3 'Add a few hundred commits w/notes to trigger fanout (x -> y)':
git update-ref refs/notes/y refs/notes/x &&
git config core.notesRef refs/notes/y &&
test_commit_bulk --start=6 --id=commit $((num - 5)) &&
i=0 &&
while test $i -lt $((num - 5))
do
git notes add -m "notes for commit$i" HEAD~$i || return 1
i=$((i + 1))
done &&
test "$(git rev-parse refs/notes/y)" != "$(git rev-parse refs/notes/x)" &&
# Expected number of commits and notes
test $(git rev-list HEAD | wc -l) = $num &&
test $(git notes list | wc -l) = $num &&
# 5 first notes unchanged
verify_notes y commit5
f6db73397fcc379ea00d1fc17a35abb42027a69a
fast-import statistics:
---------------------------------------------------------------------
Alloc'd objects: 5000
Total objects: 885 ( 0 duplicates )
blobs : 295 ( 0 duplicates 0 deltas of 0 attempts)
trees : 295 ( 0 duplicates 289 deltas of 289 attempts)
commits: 295 ( 0 duplicates 0 deltas of 0 attempts)
tags : 0 ( 0 duplicates 0 deltas of 0 attempts)
Total branches: 1 ( 1 loads )
marks: 1024 ( 0 unique )
atoms: 300
Memory total: 2446 KiB
pools: 2133 KiB
objects: 312 KiB
---------------------------------------------------------------------
pack_report: getpagesize() = 4096
pack_report: core.packedGitWindowSize = 33554432
pack_report: core.packedGitLimit = 268435456
pack_report: pack_used_ctr = 296
pack_report: pack_mmap_calls = 1
pack_report: pack_open_windows = 1 / 1
pack_report: pack_mapped = 86456 / 86456
---------------------------------------------------------------------
ok 3 - Add a few hundred commits w/notes to trigger fanout (x -> y)
expecting success of 3311.4 'notes tree has fanout (y)': verify_fanout y
00/59a2ff8988844dd700659efccfd6743632f608
00/f8b74df8cda7203edb38223fe6e88ccf9e4867
02/96deddcaab6e784e59aa39dd1a8d20aefd16b7
02/e82a8dbc4055adb9de6a9659582c396e5a405c
03/0053ed24c57da4943b57df551d320cda39d301
04/fa40d6837978ceac40e98a0477254b79ff6109
05/a2ed5d9c61c6cf4ba308a0e07cac2a429aff65
06/a01ff41646bc048a05917f15e10fee340f767c
06/c14dad0e5fd835685f33ad970d094a43e1cedc
06/e1bb3951a38f7376405b778091cd7eadec203c
09/9a5404b8f2c60ab4b2a7cf1ebc9cdd69fd1fa9
0a/9e6cecb44350f1408a06cd59686b5cb1fa4d79
0c/9e3b6f605491b12a1cde5ec246115233f0f5fd
0e/77e9a284277632ab6590d1f9b0f86d399c461e
0e/7bc46a7af0b651a90cd01852eefac5d764dbc1
0f/63b6e81d3b18fb134161f627844e9e5a2d942a
0f/d39fd6ef715bb3a0b6c163199e572a7daa7af2
0f/dfaad743779a13fea86b5092855460a1d063fe
11/4fc5a9d7890b4a2d5ec8276dda69e37e5e616c
11/768aa383e7caa89f5a859593052eda5782f73c
11/906a39ecfe8796cae0e0853f06c2c335868843
12/5a36192dc2255282d7d1800dec2a340d236a9b
12/907a70732802196c1a0ca807a108eaa29adec5
13/42db3bf0da6aed591bc732c1746073ff06b0f3
15/7e8cc0aeac5befb302d276f2e706112bf6e413
15/b9d90d3c3c6f73deacc4d9c171752b6b0d581f
17/7c1b213fa7ebafc44c50a935e6c176b79360df
18/9334c4b88d99963170854583fc084397152338
19/8490da44fc075db7c29686ed3d75f9eced094a
19/eab2791c316642c620b2494c2dce003beee3d4
1a/50d1559b52e47799dce956a3ef59427b529e48
1a/98e69358bfe77335598c444880178786f250f3
1b/09302a3d79221b5923891bbdecdf6bf5c32dc4
1c/256bbec2954ce4bbd3aa1ec894b00619c87d59
1c/ec8d2b2103afe07295972d513c3f4abc898607
1d/22d9f08076b2a7fc11d1df4fbf5dbb1bc5f77f
1e/1532b6aee517f7d4fbfbc9635d18a10b12fde2
1f/4329544f45b3a5ed56c5a1aca07b22a4999fbb
1f/7c2e169ef55c9e168464bfe083076dbfb6690f
1f/80b24e9c4875cbd559fb8d9434de1850c52c7e
21/eb95433c63f657f4feb61b78b91ed2fe53574c
22/66ca4aaa709bb00bf269087d8e13a54042a93d
22/a8913746147a11a5828aa70482fa6fc1fff2a1
23/6aa09ca3248e4bcde6ed9780fe1e0e17f4e62c
23/c51031b7b5ff34b5cd75bdae5a21bb8dc387ae
23/e92f35ff959ee71439822b19c93027ce677bc8
24/f5d4d513327acad4f00462fe39bc96ed9aec9f
28/fca858f4bdf40159e4fa5a63846b0aceb7431a
29/38a35e6813c7205e7ad62ee37e2a6cc9d36a1f
2b/a7acefc08f3462eb12453a8bb5521544905334
2c/75f53ac534a324324b1ff15cefcd70e7afa646
2d/65622d1ffee087504b1cf59a6d6bdbb9552760
2d/9e37898a0e742a0163855935118ab9af5951a8
2d/c1daa14d2d350677e34ef5fe76509f6e55063d
2d/d18e98a3cc782944a568636289c160d81fd5a1
30/45340fd90419dd2f5690d1c4d8633c70248bd9
32/011ba8b26d0e39c354091b5d18b640bdaa9ec0
32/39026a8940b414239faf0d77e274112d68d96d
32/5dab4afdab3a8b7e7b3691f9e5623d72e6ba95
32/67715033f21dbf69f361ad1f2373e78065949d
34/40ffcbed4ba8626e99d1fd5de37486e336c4fa
35/56cd79d6de9c14ac5e790317e96b48cf28a6e5
35/e40ca1583f193dfb98af23e284a80de6fb7484
36/63d047011bfa8f85a3503c9f54deb1a09d5adf
37/e9a73943fb52b3af6afd3eaa0901992a63cfff
38/07896e9e661a2e84151e396d31fd34796d1f6f
39/65ddde0fd33b440db683e8802fe0ebcb64094c
39/916af9733548bdbf3c7899a97969fdc1ef2e99
39/afd70fce5e8eb6d92a041f1339d96655f2b0f6
39/c5f743e3dc9758a4ac40bfee0fa1d1dcfda822
3b/64761fbc713b657deb969b9855343c0d7eaa2f
3c/066e203e841ea3c7efc4be6d87b5f719704acb
3c/e86c1beb71106283a293ac353ce61ab3096736
3e/c22ce4f6c24d44b2a0a1410a39d1218c184b50
3f/28341a483b5f2d01ffdee0cc680f79f3f7e571
40/b1ffbbe7a0ddad705c9897a8548a62e1f4876a
41/a3870799c63de3688b300bdbaaaa6355ff24fb
42/a4892a296f36eadfceb9d264f6e600703bf688
43/15150561c443e54ab895a121e3c59ee39ff170
43/da7a31eba4b4d3108e782c779cdf94b6bec116
44/e3b4af0aa9e1af2f6db328754f45ac7726948c
46/4aeb5723c1062fc6ad55e3205f956e8a3ef3c5
46/59a8862a02c5227f122d894c2a001eca0d84f9
47/dd87a8e555bd925c86bc96989593e08968b7b1
48/14470a784d66e0318a74ab08ea7202fc3fd4cc
4a/39c901540457bb249c18a4f94a8a0e59f0e6d1
4b/6059c8f1c9b70b70cfcfb4614f49b3c922ca6e
4b/87d5e91601208385a412a90deedaf14279452f
4b/ba369e6095f2c452c4d09f1358acdeaafeae76
4c/236aea851217323502e86ecc922143018837b0
4d/f312eda5f4fe7f8f4a2d9d9ca7b8d0c1fa64f5
4d/f5539d13cfe269d6558fbe78b1329b361b9590
4f/9fd239f6237bbe9dc0cc0949bc09ba2e0a71de
51/7516b737a8c858f54b5ce20ccdf922a9376cfa
51/ce3b9fc8560b53c1e3881e94b2a0c876f18031
52/0400c47b7fe950cac0119f3e0f39f77ea91f48
52/24d3a5dee327bf2df46d0439e377af58e4e4b7
54/6ad61cfdb3824e53156bc95274f47c52009d87
54/95af5c04ccbe4967c06508a4a30fe6944c3178
57/701dee98362e6576ba16ebb0f05c9b9e6c5c41
58/61ff7dcb74969510aa40908555fdfd43e9a607
59/6cfc19975cea95d3f9af95d3ec3822394d17c3
5c/bad73a40be1ee94eebf156cf3f1945aa3dad8d
5d/9d49249a3f5e6f8a2667ab2ef98bd873ea033f
60/1e442f4370db50da9a9266fb36f1df1855da4b
60/e04cb7f2669b592f1197d087b348f6eca6ff2a
62/151fb4b555eb4c92c1942da6b0717af8ba787a
64/fd88beb2d2d9f73e1a90d63c5e5bac131a540f
65/86726dc4df291efa46b1e2587f52c80a3ddbf6
66/2e2425a4c465e97a7dae3a3b7fab0d654ae315
66/babe5b113fb7a4290b198c980240154b392203
67/f28897fa34cf457d8e880b8a60a19bdc771239
67/f6dbb066bdb6658a3ca6f582c9fca2cb8a4b7e
68/bd8cd66f30a076bd6e9f67e9ab51fcca2a4e1b
68/e1d1c671c6161d8e2c149e748ef92bb5cfa665
68/fc05bece2383b55c77ece5900b5f4e4c40ba62
69/d6c2a2fbd139aba6359a9ccbfc0fe6efcdd690
6b/d2133f11f05075526130cb2a97c810b11bcb5e
6b/d2e279447bd40bd32b1a438dfd52a6fe2cf14b
6c/131adc529e2d3a59b7034ced7f99f169598411
6c/616feca94f10bf561251a17c16b7db4b1dbdde
6c/7461a7db47fab144addf95b814379832f4230c
6d/6c8808dfa5be2487402591dded1ad67d908a85
70/3dc5647be0fa24abf8ac8d5e9faed118ea31e6
70/e91c0fd3c8a7c524c051b8e8531c8286523915
72/80e9c59bbfcf7288d0df9636df54527880ee79
73/939a765953cbb48cb8cb1df6ccd062919eded1
74/c28b460bc1f4fc488ae27c0c767c90088ddbcb
74/deae17ac1eecf64f405e05e8e14e0dd6b30543
75/331eaadf68c823f6bc36873b625be470fdb9da
75/337f6597d6a984ce72b370db7ac08b11115954
76/1dedb54cfa4a530d2a8b6f0108b3630536d51c
79/64a617c4a2d1bb45850b48f774fc57b28fea5b
7a/0703d54958925e09013e04bd35cd19a078a90b
7a/a80f07beae9a2f0b8ccd703c32de6744fd051e
7b/21836a584eb1ee8ffecafa2d2ba02109ea2273
7d/815ea015cd551ab5de80879760defb47acea6c
7e/41915dad67d1585d33b56abf2c129432fcf426
7f/78a61938b36a24fd4431a12b22e3dd26702757
81/1322f632d38d635a20a148bb4c5f98b8c31d8c
81/83a1e8450e209464100603f2a9a0b8e574ca43
82/6d4be181ec8e60d819f4ff350dee4e501a4efa
82/85ee71b3bd8ffe7402db5940ebc2da7234a1c4
84/94e16f2929306d0a205b4a9cf34789ec5b52fe
85/94f94aaed77d8365eef9f0ff37e7da9c05d50c
86/700c1d3f3a0a31f2f954bb4188d398af2181db
86/dcde95eebb062f0ccf716c0d3b70614cdb16a6
88/7ac411f4b1bcc710eb561c61d18e3960e817cf
8a/015ae1ae0dac611406357e7e2b7d3b29b51447
8a/2d13657445f6056804c992cd8b46d1f2d9e08e
8a/788640a312a8bbc5bbd1d35b4fedacbcc0c00a
8a/a7d423d5a3e120d4d8c80980791ec2f209f131
8b/36d47cabd9aa85b7a7673e43c603ce6ba76df6
8c/e581e0bef54e004db3bc40b2f1079d24efdb96
8d/7f0f041fa3cb769b4f5f7ab8dea329e031971d
8d/b5bd40cac5f2043a94733d67313e392b5d9dc6
8e/50afaa02fd9bd744f061730cb8eedef4997d5d
8e/c3d3b6b7ee56e23a709f47db60f8561a9698ed
8f/ef91e52599676addb79aba4224c2c0eb8601a3
8f/f04a0672b445210fcb364650d74111c2fd82f5
8f/f5663227734a920cf085f0e0b76d5db14172f4
90/a84eeab5e3ce60421da43a623db6540b688a62
93/28a88723298c70ca14eaaa241613c9574e8b44
93/5152afbc3b4f67bb8d9ccd01b601c89a48e69e
94/1e1bccbf627604ca6af86ad3541dee480aab0e
94/2d87c0b27dd02c55b0112dab49b9be254473d2
94/955c5cd7e5662c6ab40c323ecdfac458c47435
96/3df12cc741f3004f8870a52fc5877bf9ca6013
96/7dd7f09c2f55dfb393c021ab6000a283cf068e
96/939443f19f5d8926e78e906c965b418d4c46d5
96/d5867ce179d5146ed9163e8eba2acabab83122
97/4217f2644a6e6fe401523c4f459f7c3689f9dd
99/decb49e0f56074881831727b906117a326be85
99/f6460ce4758ef60eff7abf0366f7bbfc9a8206
9a/492e74e1d2afda3d4043b8b9968a29c3c13bcc
9b/f30d1676260b8fc8bf519a4af4bc628402e95a
9e/4729bfc0f6b9b5aee0d630bafc299a19fdedf7
9e/aacc50711e24a8d7fb5734444338752cc979a5
9e/ca7d34b36ad5bfcd80ff2ac0b0b9a8fae850c6
9e/f8c372f29f8131739dc8eeab08f4323c54c47a
a2/0d16b51cc9287469c4a2f246acb5f0c21fc098
a2/16dcf6b46f5260b6cfff5721847e010c681e40
a3/60d5a1639d70627543138385781dbee95812c8
a4/d7fcdbcbac2799f0e87a5654df1e4c12345282
a6/f7090037e529277612903dde135889721b8d24
a7/01072f88f0fec15902916cbce38f3549cac0e6
a7/94f10e293f1434fe75766203a47d7e3d4d8c1d
a7/b062b1589ea7e3385124521c2d4751b44b0a4b
a8/60edaf1326a590c32dd4ddf4ea754b8ef5be34
ab/2db5d6e0a134ba2693c7cb74d0f41a95dbf5f3
ac/11791a26f4a82c2d1e2b068c5d9be6564aa2d1
ad/788402e4b81bd4f0fc8d3beba876ac30f2e801
ad/b50ff206b638bb35775e4d8134314a4b669ee0
ae/6bddbb17144c925e1dd30b156fd014e4a5af5e
af/e58fc3dc97f83b97fc5cc4c0bcdc8a2923a536
b3/5c8895207c15e1d8d64ade08db059efd46d634
b3/a6e1262d902a183b6810d77969091aeaa8605c
b4/0c02d0c9d21ad75a00143d3eecb1aae1683c25
b4/a7e9c293e3b1160418b9c2652bdcd028e75742
b8/03a8226968f1f155ebabff1429026ba58ecf94
ba/000ce7dfaa53436a12fcb6f32cb730bc999c58
ba/c54e6b25f59ad97e0be4e6fcda6e53dca6607d
ba/e7d71c1c40d6670a1dfc290c7aba2deea204b6
bb/78195e8b2beb0c006980fb5c6e7e2641524167
bc/4c742dc1b8d1f09af2c510b3dfd730a99e6a8c
bf/a45c5b38c41145cb203209f5bc3dc16599a5e3
c1/06288c0595c7f2acb761e8fcdb39dd3fec3b6f
c1/a639c2cd71f92376aba8b0cdfb7eb42fff1f54
c1/c44c75783ebaad6ce903072e5b14af8f444bd8
c2/1b7a79d2b2746f946b0f5be42fd3e3b59d4544
c2/5b912bd08de3cefe1a673f2f2ca3016d1c1258
c2/9802df7ad706dff5dc666219b1b15e53db20fb
c3/348a7184dbff866f4c5f2f9a82deaa6f93763b
c3/bce4b541feff853989c57fd2dc42c9f99e5f21
c5/b7b50e501d98c810248b15cad01e4f8c3d00d8
c6/1ad84c67d08df0fd04c00b62de24091c9b7383
c7/2685d485e402e73f8cd1cae86797c8eecc8d20
c8/7dbe3c22f24fdf0e49cfaa43508cd524c494f0
c9/3aa29c5e69c1f8c67d2b33f0b5a330d1788526
ca/d27fba7ca666bbd050e21373ad07c0a71b10bc
cd/6aef36b96ac7dbbd94a30646d2cfe45ee8c620
ce/5e3a94a1b9a8e2bb3ea69bc6276ff80b753db3
cf/056ec152b13f4a4eafa61f1499b9beaec3f2c6
cf/b2d40d0416c7b0b60db8199e1b79f640093f72
cf/f68c1b7ed135ab19f2b95c318dc6357ddfdaa2
d0/a377c848e3a37146acd4a8a9b891a5152a9d48
d1/4356539993fb4c70ff4f4deb91eb9097740832
d1/46fd69423d2f3b505d145e67afe5aca02dfe09
d1/7af66ed98bd2bd2e18daa94c6689773993770c
d1/9a07455999d2ab16493ec101e0dbc825206007
d1/b856326cd5454fac386a758ed8c8918f66ba26
d2/5789d47eb4c16b85bf9e39d9d2369a0d855d92
d2/9e6b7e73240371022068cdec11d2d45cc0fc1a
d2/df6c6b7335d4a71baa92177cb78cb13a71bd6c
d3/07d48abf7d014f2adf792ab48e95dd77b3fd66
d4/a19a929357505d72d64fc595a543b2215c39d4
d5/6359cf0df8b4541ccbcad8e0c0a44f822eccf7
d6/1ac6b65471750febac7d69bca2475ad7f39617
d6/1f3c9d16964b53d020e8c21f9ecf7d791fd314
d6/88dc5b7b307160fe01c92bc80fd608bafa923f
d6/e2c3490a50f68c0599b1bfad824631648bfe57
d7/3e59672de81d623318c96702bafe79ca3b01b9
d7/5fa8b23e1610b8f3a1ab1d43e4e6bbe9848d99
d7/944f2f885b1e976e1fd1c0b30b6c172bb52466
d8/425743f77600e4165b653f22ae6fd38027d2b4
d8/5974bb6248f39e51abd6d00737edd6256ee103
da/865c12818c8ef15fc031f832d4399997476a64
db/c93987a2f41d29e7d9ce170c4a66f31ba21a2b
dd/336f1f082af04276827925fc2ad27560e584f4
dd/a5e2303dc0efb1ce21091ac9609ce05f95ca11
dd/f7332ecf611c9ea9b21b96c61b9508c8630258
e0/2dcc2a7fc0426363d2380175ca08cd564bfa1e
e0/59ccd2bf35dbc599e5ce5d39674d926445fc3e
e0/851358fb6b4703f23d74ef964bc4491bec7ab9
e0/9816883b166284284a2848821c7787a74b8170
e2/09a0d469e26a06ce87bb3bbc3429a911e94879
e2/7052bb2c8bb2fd16e0d235c24ca5aad3270e38
e3/640f4f8c0e046c3cd59acdd41e9fbbee959579
e5/4161d6eb21566f231627f845a14c312482ed8a
e5/ce71a5e89216984d0334e19f0b86ee734b2419
e6/405b88cddb9dfa524a7372b58e615bf4cdc730
e6/83dd479d771604c993c307404be2aa9ac45b7d
e7/f1a6cd9114a0ef87ba8fb5e0ff89d05796e059
e9/4fa527e4420309ff4e420897749f95cb552444
e9/cc8b7606e0f912773c1c6aa425319858643ae1
ea/c6e96d764b0c25841dcea3cf4f77b7f889f215
eb/11d8290f638dc8b3b4da8b4a56bb7f5192d80c
eb/91b96510d8485576da96507503e779dece1777
eb/ac41b793d2de79fc57bf0e2215785122c6fbfb
eb/f639d1f0d2f8350a8f8efe5fce50f9387d900e
ec/11fc9e3653f03f1c82ab32ceca3fe90c89a169
ec/55ada1019c2cd250bec8af82e999356d32c713
ee/79ede3b931d2796f1d48176d4859b4dde8add5
ee/e7846fd37a3b6a89d1248e46c9bbc770bfea28
ef/004cfa88883bb87e030b6196934dd90e3548d2
ef/3d66358c62d9f97f72b96ea6b9848414fa8101
ef/8596ac1ab699d85f0de0a3f9be55b2c9876078
ef/cec8d750faa2610959fc2fb4bfd8fc095031ef
ef/f8361a8dab5eb9b5532706575896f3953c3da8
f0/ad20627099424af1d5c762cc2e6975fedc4325
f1/d588e48db9e3d4239673d5030b47b08f849eea
f3/d4332f46fb8d6a96f6cace0fe55fd3a7062258
f3/e3510e3dc4a81d486bd077cb68e2dbb843553e
f4/8cff0f2465f3ea3ad67d6a477c9dafe09b971a
f4/b273648f727cd5f0f92bd3c5cdd67cfed10892
f4/f9a1dc653674c0f7c877dda961925b1515e053
f5/4ef3b60b96982e057642bfcff04ed29caf1207
f5/bf3719d5450931e3979d1b9b140618fe042e22
f6/db73397fcc379ea00d1fc17a35abb42027a69a
f7/1f7801a7ff5b40d6e346cd7ddeb492d1d83224
f8/18a85408d9343660a7403290cd483de65f28fe
f8/469687aceb346b06adb42f065dfd586013636d
f8/b4f860379fcc1e6256494d4931ff46ea5852de
f8/fea46bf5bb6034aa77d9c8c8c55953bd694594
fa/37685cddf33cbf37404cb5314ea362557da4c5
fa/e1e08aeadada773d1eb10851e985c808cdf655
fb/209c09b61273835f23b39ce0d07171ab872311
fb/480ccedc5dd98024c22a41e717fcb0ae7fca67
fe/4314bf42a6930ab23ad01b86ba887257ccb576
fe/9977c6f7294face7e7987f2c53bd016d035089
ok 4 - notes tree has fanout (y)
expecting success of 3311.5 'No-op merge (already included) (x => y)':
git update-ref refs/notes/m refs/notes/y &&
git config core.notesRef refs/notes/m &&
git notes merge x &&
test "$(git rev-parse refs/notes/m)" = "$(git rev-parse refs/notes/y)"
Already up to date.
ok 5 - No-op merge (already included) (x => y)
expecting success of 3311.6 'Fast-forward merge (y => x)':
git update-ref refs/notes/m refs/notes/x &&
git notes merge y &&
test "$(git rev-parse refs/notes/m)" = "$(git rev-parse refs/notes/y)"
Fast-forward
ok 6 - Fast-forward merge (y => x)
expecting success of 3311.7 'change some of the initial 5 notes (x -> z)':
git update-ref refs/notes/z refs/notes/x &&
git config core.notesRef refs/notes/z &&
git notes add -f -m "new notes for commit2" commit2 &&
git notes append -m "appended notes for commit3" commit3 &&
git notes remove commit4 &&
git notes remove commit5 &&
verify_notes z commit5
Overwriting existing notes for object 94955c5cd7e5662c6ab40c323ecdfac458c47435
Removing note for object commit4
Removing note for object commit5
ok 7 - change some of the initial 5 notes (x -> z)
expecting success of 3311.8 'notes tree has no fanout (z)': verify_no_fanout z
94955c5cd7e5662c6ab40c323ecdfac458c47435
e0851358fb6b4703f23d74ef964bc4491bec7ab9
ef004cfa88883bb87e030b6196934dd90e3548d2
ok 8 - notes tree has no fanout (z)
expecting success of 3311.9 'successful merge without conflicts (y => z)':
git update-ref refs/notes/m refs/notes/z &&
git config core.notesRef refs/notes/m &&
git notes merge y &&
verify_notes m commit5 &&
# x/y/z unchanged
verify_notes x commit5 &&
verify_notes y commit5 &&
verify_notes z commit5
ok 9 - successful merge without conflicts (y => z)
expecting success of 3311.10 'notes tree still has fanout after merge (m)': verify_fanout m
00/59a2ff8988844dd700659efccfd6743632f608
00/f8b74df8cda7203edb38223fe6e88ccf9e4867
02/96deddcaab6e784e59aa39dd1a8d20aefd16b7
02/e82a8dbc4055adb9de6a9659582c396e5a405c
03/0053ed24c57da4943b57df551d320cda39d301
04/fa40d6837978ceac40e98a0477254b79ff6109
05/a2ed5d9c61c6cf4ba308a0e07cac2a429aff65
06/a01ff41646bc048a05917f15e10fee340f767c
06/c14dad0e5fd835685f33ad970d094a43e1cedc
06/e1bb3951a38f7376405b778091cd7eadec203c
09/9a5404b8f2c60ab4b2a7cf1ebc9cdd69fd1fa9
0a/9e6cecb44350f1408a06cd59686b5cb1fa4d79
0c/9e3b6f605491b12a1cde5ec246115233f0f5fd
0e/77e9a284277632ab6590d1f9b0f86d399c461e
0e/7bc46a7af0b651a90cd01852eefac5d764dbc1
0f/63b6e81d3b18fb134161f627844e9e5a2d942a
0f/d39fd6ef715bb3a0b6c163199e572a7daa7af2
0f/dfaad743779a13fea86b5092855460a1d063fe
11/4fc5a9d7890b4a2d5ec8276dda69e37e5e616c
11/768aa383e7caa89f5a859593052eda5782f73c
11/906a39ecfe8796cae0e0853f06c2c335868843
12/5a36192dc2255282d7d1800dec2a340d236a9b
12/907a70732802196c1a0ca807a108eaa29adec5
13/42db3bf0da6aed591bc732c1746073ff06b0f3
15/b9d90d3c3c6f73deacc4d9c171752b6b0d581f
17/7c1b213fa7ebafc44c50a935e6c176b79360df
18/9334c4b88d99963170854583fc084397152338
19/8490da44fc075db7c29686ed3d75f9eced094a
19/eab2791c316642c620b2494c2dce003beee3d4
1a/50d1559b52e47799dce956a3ef59427b529e48
1a/98e69358bfe77335598c444880178786f250f3
1b/09302a3d79221b5923891bbdecdf6bf5c32dc4
1c/256bbec2954ce4bbd3aa1ec894b00619c87d59
1c/ec8d2b2103afe07295972d513c3f4abc898607
1d/22d9f08076b2a7fc11d1df4fbf5dbb1bc5f77f
1e/1532b6aee517f7d4fbfbc9635d18a10b12fde2
1f/4329544f45b3a5ed56c5a1aca07b22a4999fbb
1f/7c2e169ef55c9e168464bfe083076dbfb6690f
1f/80b24e9c4875cbd559fb8d9434de1850c52c7e
21/eb95433c63f657f4feb61b78b91ed2fe53574c
22/66ca4aaa709bb00bf269087d8e13a54042a93d
22/a8913746147a11a5828aa70482fa6fc1fff2a1
23/6aa09ca3248e4bcde6ed9780fe1e0e17f4e62c
23/c51031b7b5ff34b5cd75bdae5a21bb8dc387ae
23/e92f35ff959ee71439822b19c93027ce677bc8
24/f5d4d513327acad4f00462fe39bc96ed9aec9f
28/fca858f4bdf40159e4fa5a63846b0aceb7431a
29/38a35e6813c7205e7ad62ee37e2a6cc9d36a1f
2b/a7acefc08f3462eb12453a8bb5521544905334
2c/75f53ac534a324324b1ff15cefcd70e7afa646
2d/65622d1ffee087504b1cf59a6d6bdbb9552760
2d/9e37898a0e742a0163855935118ab9af5951a8
2d/c1daa14d2d350677e34ef5fe76509f6e55063d
2d/d18e98a3cc782944a568636289c160d81fd5a1
30/45340fd90419dd2f5690d1c4d8633c70248bd9
32/011ba8b26d0e39c354091b5d18b640bdaa9ec0
32/39026a8940b414239faf0d77e274112d68d96d
32/5dab4afdab3a8b7e7b3691f9e5623d72e6ba95
32/67715033f21dbf69f361ad1f2373e78065949d
34/40ffcbed4ba8626e99d1fd5de37486e336c4fa
35/56cd79d6de9c14ac5e790317e96b48cf28a6e5
35/e40ca1583f193dfb98af23e284a80de6fb7484
36/63d047011bfa8f85a3503c9f54deb1a09d5adf
37/e9a73943fb52b3af6afd3eaa0901992a63cfff
38/07896e9e661a2e84151e396d31fd34796d1f6f
39/65ddde0fd33b440db683e8802fe0ebcb64094c
39/916af9733548bdbf3c7899a97969fdc1ef2e99
39/afd70fce5e8eb6d92a041f1339d96655f2b0f6
39/c5f743e3dc9758a4ac40bfee0fa1d1dcfda822
3b/64761fbc713b657deb969b9855343c0d7eaa2f
3c/066e203e841ea3c7efc4be6d87b5f719704acb
3c/e86c1beb71106283a293ac353ce61ab3096736
3e/c22ce4f6c24d44b2a0a1410a39d1218c184b50
3f/28341a483b5f2d01ffdee0cc680f79f3f7e571
40/b1ffbbe7a0ddad705c9897a8548a62e1f4876a
41/a3870799c63de3688b300bdbaaaa6355ff24fb
42/a4892a296f36eadfceb9d264f6e600703bf688
43/15150561c443e54ab895a121e3c59ee39ff170
43/da7a31eba4b4d3108e782c779cdf94b6bec116
44/e3b4af0aa9e1af2f6db328754f45ac7726948c
46/4aeb5723c1062fc6ad55e3205f956e8a3ef3c5
46/59a8862a02c5227f122d894c2a001eca0d84f9
47/dd87a8e555bd925c86bc96989593e08968b7b1
48/14470a784d66e0318a74ab08ea7202fc3fd4cc
4a/39c901540457bb249c18a4f94a8a0e59f0e6d1
4b/6059c8f1c9b70b70cfcfb4614f49b3c922ca6e
4b/87d5e91601208385a412a90deedaf14279452f
4b/ba369e6095f2c452c4d09f1358acdeaafeae76
4c/236aea851217323502e86ecc922143018837b0
4d/f312eda5f4fe7f8f4a2d9d9ca7b8d0c1fa64f5
4d/f5539d13cfe269d6558fbe78b1329b361b9590
4f/9fd239f6237bbe9dc0cc0949bc09ba2e0a71de
51/7516b737a8c858f54b5ce20ccdf922a9376cfa
51/ce3b9fc8560b53c1e3881e94b2a0c876f18031
52/0400c47b7fe950cac0119f3e0f39f77ea91f48
52/24d3a5dee327bf2df46d0439e377af58e4e4b7
54/6ad61cfdb3824e53156bc95274f47c52009d87
54/95af5c04ccbe4967c06508a4a30fe6944c3178
57/701dee98362e6576ba16ebb0f05c9b9e6c5c41
58/61ff7dcb74969510aa40908555fdfd43e9a607
59/6cfc19975cea95d3f9af95d3ec3822394d17c3
5c/bad73a40be1ee94eebf156cf3f1945aa3dad8d
5d/9d49249a3f5e6f8a2667ab2ef98bd873ea033f
60/1e442f4370db50da9a9266fb36f1df1855da4b
60/e04cb7f2669b592f1197d087b348f6eca6ff2a
62/151fb4b555eb4c92c1942da6b0717af8ba787a
64/fd88beb2d2d9f73e1a90d63c5e5bac131a540f
65/86726dc4df291efa46b1e2587f52c80a3ddbf6
66/2e2425a4c465e97a7dae3a3b7fab0d654ae315
66/babe5b113fb7a4290b198c980240154b392203
67/f28897fa34cf457d8e880b8a60a19bdc771239
67/f6dbb066bdb6658a3ca6f582c9fca2cb8a4b7e
68/bd8cd66f30a076bd6e9f67e9ab51fcca2a4e1b
68/e1d1c671c6161d8e2c149e748ef92bb5cfa665
68/fc05bece2383b55c77ece5900b5f4e4c40ba62
69/d6c2a2fbd139aba6359a9ccbfc0fe6efcdd690
6b/d2133f11f05075526130cb2a97c810b11bcb5e
6b/d2e279447bd40bd32b1a438dfd52a6fe2cf14b
6c/131adc529e2d3a59b7034ced7f99f169598411
6c/616feca94f10bf561251a17c16b7db4b1dbdde
6c/7461a7db47fab144addf95b814379832f4230c
6d/6c8808dfa5be2487402591dded1ad67d908a85
70/3dc5647be0fa24abf8ac8d5e9faed118ea31e6
70/e91c0fd3c8a7c524c051b8e8531c8286523915
72/80e9c59bbfcf7288d0df9636df54527880ee79
73/939a765953cbb48cb8cb1df6ccd062919eded1
74/c28b460bc1f4fc488ae27c0c767c90088ddbcb
74/deae17ac1eecf64f405e05e8e14e0dd6b30543
75/331eaadf68c823f6bc36873b625be470fdb9da
75/337f6597d6a984ce72b370db7ac08b11115954
76/1dedb54cfa4a530d2a8b6f0108b3630536d51c
79/64a617c4a2d1bb45850b48f774fc57b28fea5b
7a/0703d54958925e09013e04bd35cd19a078a90b
7a/a80f07beae9a2f0b8ccd703c32de6744fd051e
7b/21836a584eb1ee8ffecafa2d2ba02109ea2273
7d/815ea015cd551ab5de80879760defb47acea6c
7e/41915dad67d1585d33b56abf2c129432fcf426
7f/78a61938b36a24fd4431a12b22e3dd26702757
81/1322f632d38d635a20a148bb4c5f98b8c31d8c
81/83a1e8450e209464100603f2a9a0b8e574ca43
82/6d4be181ec8e60d819f4ff350dee4e501a4efa
82/85ee71b3bd8ffe7402db5940ebc2da7234a1c4
84/94e16f2929306d0a205b4a9cf34789ec5b52fe
85/94f94aaed77d8365eef9f0ff37e7da9c05d50c
86/700c1d3f3a0a31f2f954bb4188d398af2181db
86/dcde95eebb062f0ccf716c0d3b70614cdb16a6
88/7ac411f4b1bcc710eb561c61d18e3960e817cf
8a/015ae1ae0dac611406357e7e2b7d3b29b51447
8a/2d13657445f6056804c992cd8b46d1f2d9e08e
8a/788640a312a8bbc5bbd1d35b4fedacbcc0c00a
8a/a7d423d5a3e120d4d8c80980791ec2f209f131
8b/36d47cabd9aa85b7a7673e43c603ce6ba76df6
8c/e581e0bef54e004db3bc40b2f1079d24efdb96
8d/7f0f041fa3cb769b4f5f7ab8dea329e031971d
8d/b5bd40cac5f2043a94733d67313e392b5d9dc6
8e/50afaa02fd9bd744f061730cb8eedef4997d5d
8e/c3d3b6b7ee56e23a709f47db60f8561a9698ed
8f/ef91e52599676addb79aba4224c2c0eb8601a3
8f/f04a0672b445210fcb364650d74111c2fd82f5
8f/f5663227734a920cf085f0e0b76d5db14172f4
90/a84eeab5e3ce60421da43a623db6540b688a62
93/28a88723298c70ca14eaaa241613c9574e8b44
93/5152afbc3b4f67bb8d9ccd01b601c89a48e69e
94/1e1bccbf627604ca6af86ad3541dee480aab0e
94/2d87c0b27dd02c55b0112dab49b9be254473d2
94/955c5cd7e5662c6ab40c323ecdfac458c47435
96/3df12cc741f3004f8870a52fc5877bf9ca6013
96/7dd7f09c2f55dfb393c021ab6000a283cf068e
96/939443f19f5d8926e78e906c965b418d4c46d5
96/d5867ce179d5146ed9163e8eba2acabab83122
97/4217f2644a6e6fe401523c4f459f7c3689f9dd
99/decb49e0f56074881831727b906117a326be85
99/f6460ce4758ef60eff7abf0366f7bbfc9a8206
9a/492e74e1d2afda3d4043b8b9968a29c3c13bcc
9b/f30d1676260b8fc8bf519a4af4bc628402e95a
9e/4729bfc0f6b9b5aee0d630bafc299a19fdedf7
9e/aacc50711e24a8d7fb5734444338752cc979a5
9e/ca7d34b36ad5bfcd80ff2ac0b0b9a8fae850c6
9e/f8c372f29f8131739dc8eeab08f4323c54c47a
a2/0d16b51cc9287469c4a2f246acb5f0c21fc098
a2/16dcf6b46f5260b6cfff5721847e010c681e40
a3/60d5a1639d70627543138385781dbee95812c8
a4/d7fcdbcbac2799f0e87a5654df1e4c12345282
a6/f7090037e529277612903dde135889721b8d24
a7/01072f88f0fec15902916cbce38f3549cac0e6
a7/94f10e293f1434fe75766203a47d7e3d4d8c1d
a7/b062b1589ea7e3385124521c2d4751b44b0a4b
a8/60edaf1326a590c32dd4ddf4ea754b8ef5be34
ab/2db5d6e0a134ba2693c7cb74d0f41a95dbf5f3
ac/11791a26f4a82c2d1e2b068c5d9be6564aa2d1
ad/788402e4b81bd4f0fc8d3beba876ac30f2e801
ad/b50ff206b638bb35775e4d8134314a4b669ee0
ae/6bddbb17144c925e1dd30b156fd014e4a5af5e
af/e58fc3dc97f83b97fc5cc4c0bcdc8a2923a536
b3/5c8895207c15e1d8d64ade08db059efd46d634
b3/a6e1262d902a183b6810d77969091aeaa8605c
b4/0c02d0c9d21ad75a00143d3eecb1aae1683c25
b4/a7e9c293e3b1160418b9c2652bdcd028e75742
b8/03a8226968f1f155ebabff1429026ba58ecf94
ba/000ce7dfaa53436a12fcb6f32cb730bc999c58
ba/c54e6b25f59ad97e0be4e6fcda6e53dca6607d
ba/e7d71c1c40d6670a1dfc290c7aba2deea204b6
bb/78195e8b2beb0c006980fb5c6e7e2641524167
bc/4c742dc1b8d1f09af2c510b3dfd730a99e6a8c
bf/a45c5b38c41145cb203209f5bc3dc16599a5e3
c1/06288c0595c7f2acb761e8fcdb39dd3fec3b6f
c1/a639c2cd71f92376aba8b0cdfb7eb42fff1f54
c1/c44c75783ebaad6ce903072e5b14af8f444bd8
c2/1b7a79d2b2746f946b0f5be42fd3e3b59d4544
c2/5b912bd08de3cefe1a673f2f2ca3016d1c1258
c2/9802df7ad706dff5dc666219b1b15e53db20fb
c3/348a7184dbff866f4c5f2f9a82deaa6f93763b
c3/bce4b541feff853989c57fd2dc42c9f99e5f21
c5/b7b50e501d98c810248b15cad01e4f8c3d00d8
c6/1ad84c67d08df0fd04c00b62de24091c9b7383
c7/2685d485e402e73f8cd1cae86797c8eecc8d20
c8/7dbe3c22f24fdf0e49cfaa43508cd524c494f0
c9/3aa29c5e69c1f8c67d2b33f0b5a330d1788526
ca/d27fba7ca666bbd050e21373ad07c0a71b10bc
cd/6aef36b96ac7dbbd94a30646d2cfe45ee8c620
ce/5e3a94a1b9a8e2bb3ea69bc6276ff80b753db3
cf/056ec152b13f4a4eafa61f1499b9beaec3f2c6
cf/b2d40d0416c7b0b60db8199e1b79f640093f72
cf/f68c1b7ed135ab19f2b95c318dc6357ddfdaa2
d0/a377c848e3a37146acd4a8a9b891a5152a9d48
d1/4356539993fb4c70ff4f4deb91eb9097740832
d1/46fd69423d2f3b505d145e67afe5aca02dfe09
d1/7af66ed98bd2bd2e18daa94c6689773993770c
d1/9a07455999d2ab16493ec101e0dbc825206007
d1/b856326cd5454fac386a758ed8c8918f66ba26
d2/5789d47eb4c16b85bf9e39d9d2369a0d855d92
d2/9e6b7e73240371022068cdec11d2d45cc0fc1a
d2/df6c6b7335d4a71baa92177cb78cb13a71bd6c
d3/07d48abf7d014f2adf792ab48e95dd77b3fd66
d4/a19a929357505d72d64fc595a543b2215c39d4
d5/6359cf0df8b4541ccbcad8e0c0a44f822eccf7
d6/1ac6b65471750febac7d69bca2475ad7f39617
d6/1f3c9d16964b53d020e8c21f9ecf7d791fd314
d6/88dc5b7b307160fe01c92bc80fd608bafa923f
d6/e2c3490a50f68c0599b1bfad824631648bfe57
d7/3e59672de81d623318c96702bafe79ca3b01b9
d7/5fa8b23e1610b8f3a1ab1d43e4e6bbe9848d99
d7/944f2f885b1e976e1fd1c0b30b6c172bb52466
d8/425743f77600e4165b653f22ae6fd38027d2b4
d8/5974bb6248f39e51abd6d00737edd6256ee103
da/865c12818c8ef15fc031f832d4399997476a64
db/c93987a2f41d29e7d9ce170c4a66f31ba21a2b
dd/336f1f082af04276827925fc2ad27560e584f4
dd/a5e2303dc0efb1ce21091ac9609ce05f95ca11
dd/f7332ecf611c9ea9b21b96c61b9508c8630258
e0/2dcc2a7fc0426363d2380175ca08cd564bfa1e
e0/59ccd2bf35dbc599e5ce5d39674d926445fc3e
e0/851358fb6b4703f23d74ef964bc4491bec7ab9
e0/9816883b166284284a2848821c7787a74b8170
e2/09a0d469e26a06ce87bb3bbc3429a911e94879
e2/7052bb2c8bb2fd16e0d235c24ca5aad3270e38
e3/640f4f8c0e046c3cd59acdd41e9fbbee959579
e5/4161d6eb21566f231627f845a14c312482ed8a
e5/ce71a5e89216984d0334e19f0b86ee734b2419
e6/405b88cddb9dfa524a7372b58e615bf4cdc730
e6/83dd479d771604c993c307404be2aa9ac45b7d
e7/f1a6cd9114a0ef87ba8fb5e0ff89d05796e059
e9/4fa527e4420309ff4e420897749f95cb552444
e9/cc8b7606e0f912773c1c6aa425319858643ae1
ea/c6e96d764b0c25841dcea3cf4f77b7f889f215
eb/11d8290f638dc8b3b4da8b4a56bb7f5192d80c
eb/91b96510d8485576da96507503e779dece1777
eb/ac41b793d2de79fc57bf0e2215785122c6fbfb
eb/f639d1f0d2f8350a8f8efe5fce50f9387d900e
ec/11fc9e3653f03f1c82ab32ceca3fe90c89a169
ec/55ada1019c2cd250bec8af82e999356d32c713
ee/79ede3b931d2796f1d48176d4859b4dde8add5
ee/e7846fd37a3b6a89d1248e46c9bbc770bfea28
ef/004cfa88883bb87e030b6196934dd90e3548d2
ef/3d66358c62d9f97f72b96ea6b9848414fa8101
ef/8596ac1ab699d85f0de0a3f9be55b2c9876078
ef/cec8d750faa2610959fc2fb4bfd8fc095031ef
ef/f8361a8dab5eb9b5532706575896f3953c3da8
f0/ad20627099424af1d5c762cc2e6975fedc4325
f1/d588e48db9e3d4239673d5030b47b08f849eea
f3/d4332f46fb8d6a96f6cace0fe55fd3a7062258
f3/e3510e3dc4a81d486bd077cb68e2dbb843553e
f4/8cff0f2465f3ea3ad67d6a477c9dafe09b971a
f4/b273648f727cd5f0f92bd3c5cdd67cfed10892
f4/f9a1dc653674c0f7c877dda961925b1515e053
f5/4ef3b60b96982e057642bfcff04ed29caf1207
f5/bf3719d5450931e3979d1b9b140618fe042e22
f7/1f7801a7ff5b40d6e346cd7ddeb492d1d83224
f8/18a85408d9343660a7403290cd483de65f28fe
f8/469687aceb346b06adb42f065dfd586013636d
f8/b4f860379fcc1e6256494d4931ff46ea5852de
f8/fea46bf5bb6034aa77d9c8c8c55953bd694594
fa/37685cddf33cbf37404cb5314ea362557da4c5
fa/e1e08aeadada773d1eb10851e985c808cdf655
fb/209c09b61273835f23b39ce0d07171ab872311
fb/480ccedc5dd98024c22a41e717fcb0ae7fca67
fe/4314bf42a6930ab23ad01b86ba887257ccb576
fe/9977c6f7294face7e7987f2c53bd016d035089
ok 10 - notes tree still has fanout after merge (m)
expecting success of 3311.11 'introduce conflicting changes (y -> w)':
git update-ref refs/notes/w refs/notes/y &&
git config core.notesRef refs/notes/w &&
git notes add -f -m "other notes for commit1" commit1 &&
git notes add -f -m "other notes for commit3" commit3 &&
git notes add -f -m "other notes for commit4" commit4 &&
git notes remove commit5 &&
verify_notes w commit5
Overwriting existing notes for object ef004cfa88883bb87e030b6196934dd90e3548d2
Overwriting existing notes for object e0851358fb6b4703f23d74ef964bc4491bec7ab9
Overwriting existing notes for object 157e8cc0aeac5befb302d276f2e706112bf6e413
Removing note for object commit5
ok 11 - introduce conflicting changes (y -> w)
expecting success of 3311.12 'successful merge using "ours" strategy (z => w)':
git update-ref refs/notes/m refs/notes/w &&
git config core.notesRef refs/notes/m &&
git notes merge -s ours z &&
verify_notes m commit5 &&
# w/x/y/z unchanged
verify_notes w commit5 &&
verify_notes x commit5 &&
verify_notes y commit5 &&
verify_notes z commit5
Using local notes for 157e8cc0aeac5befb302d276f2e706112bf6e413
Using local notes for e0851358fb6b4703f23d74ef964bc4491bec7ab9
ok 12 - successful merge using "ours" strategy (z => w)
expecting success of 3311.13 'notes tree still has fanout after merge (m)': verify_fanout m
00/59a2ff8988844dd700659efccfd6743632f608
00/f8b74df8cda7203edb38223fe6e88ccf9e4867
02/96deddcaab6e784e59aa39dd1a8d20aefd16b7
02/e82a8dbc4055adb9de6a9659582c396e5a405c
03/0053ed24c57da4943b57df551d320cda39d301
04/fa40d6837978ceac40e98a0477254b79ff6109
05/a2ed5d9c61c6cf4ba308a0e07cac2a429aff65
06/a01ff41646bc048a05917f15e10fee340f767c
06/c14dad0e5fd835685f33ad970d094a43e1cedc
06/e1bb3951a38f7376405b778091cd7eadec203c
09/9a5404b8f2c60ab4b2a7cf1ebc9cdd69fd1fa9
0a/9e6cecb44350f1408a06cd59686b5cb1fa4d79
0c/9e3b6f605491b12a1cde5ec246115233f0f5fd
0e/77e9a284277632ab6590d1f9b0f86d399c461e
0e/7bc46a7af0b651a90cd01852eefac5d764dbc1
0f/63b6e81d3b18fb134161f627844e9e5a2d942a
0f/d39fd6ef715bb3a0b6c163199e572a7daa7af2
0f/dfaad743779a13fea86b5092855460a1d063fe
11/4fc5a9d7890b4a2d5ec8276dda69e37e5e616c
11/768aa383e7caa89f5a859593052eda5782f73c
11/906a39ecfe8796cae0e0853f06c2c335868843
12/5a36192dc2255282d7d1800dec2a340d236a9b
12/907a70732802196c1a0ca807a108eaa29adec5
13/42db3bf0da6aed591bc732c1746073ff06b0f3
15/7e8cc0aeac5befb302d276f2e706112bf6e413
15/b9d90d3c3c6f73deacc4d9c171752b6b0d581f
17/7c1b213fa7ebafc44c50a935e6c176b79360df
18/9334c4b88d99963170854583fc084397152338
19/8490da44fc075db7c29686ed3d75f9eced094a
19/eab2791c316642c620b2494c2dce003beee3d4
1a/50d1559b52e47799dce956a3ef59427b529e48
1a/98e69358bfe77335598c444880178786f250f3
1b/09302a3d79221b5923891bbdecdf6bf5c32dc4
1c/256bbec2954ce4bbd3aa1ec894b00619c87d59
1c/ec8d2b2103afe07295972d513c3f4abc898607
1d/22d9f08076b2a7fc11d1df4fbf5dbb1bc5f77f
1e/1532b6aee517f7d4fbfbc9635d18a10b12fde2
1f/4329544f45b3a5ed56c5a1aca07b22a4999fbb
1f/7c2e169ef55c9e168464bfe083076dbfb6690f
1f/80b24e9c4875cbd559fb8d9434de1850c52c7e
21/eb95433c63f657f4feb61b78b91ed2fe53574c
22/66ca4aaa709bb00bf269087d8e13a54042a93d
22/a8913746147a11a5828aa70482fa6fc1fff2a1
23/6aa09ca3248e4bcde6ed9780fe1e0e17f4e62c
23/c51031b7b5ff34b5cd75bdae5a21bb8dc387ae
23/e92f35ff959ee71439822b19c93027ce677bc8
24/f5d4d513327acad4f00462fe39bc96ed9aec9f
28/fca858f4bdf40159e4fa5a63846b0aceb7431a
29/38a35e6813c7205e7ad62ee37e2a6cc9d36a1f
2b/a7acefc08f3462eb12453a8bb5521544905334
2c/75f53ac534a324324b1ff15cefcd70e7afa646
2d/65622d1ffee087504b1cf59a6d6bdbb9552760
2d/9e37898a0e742a0163855935118ab9af5951a8
2d/c1daa14d2d350677e34ef5fe76509f6e55063d
2d/d18e98a3cc782944a568636289c160d81fd5a1
30/45340fd90419dd2f5690d1c4d8633c70248bd9
32/011ba8b26d0e39c354091b5d18b640bdaa9ec0
32/39026a8940b414239faf0d77e274112d68d96d
32/5dab4afdab3a8b7e7b3691f9e5623d72e6ba95
32/67715033f21dbf69f361ad1f2373e78065949d
34/40ffcbed4ba8626e99d1fd5de37486e336c4fa
35/56cd79d6de9c14ac5e790317e96b48cf28a6e5
35/e40ca1583f193dfb98af23e284a80de6fb7484
36/63d047011bfa8f85a3503c9f54deb1a09d5adf
37/e9a73943fb52b3af6afd3eaa0901992a63cfff
38/07896e9e661a2e84151e396d31fd34796d1f6f
39/65ddde0fd33b440db683e8802fe0ebcb64094c
39/916af9733548bdbf3c7899a97969fdc1ef2e99
39/afd70fce5e8eb6d92a041f1339d96655f2b0f6
39/c5f743e3dc9758a4ac40bfee0fa1d1dcfda822
3b/64761fbc713b657deb969b9855343c0d7eaa2f
3c/066e203e841ea3c7efc4be6d87b5f719704acb
3c/e86c1beb71106283a293ac353ce61ab3096736
3e/c22ce4f6c24d44b2a0a1410a39d1218c184b50
3f/28341a483b5f2d01ffdee0cc680f79f3f7e571
40/b1ffbbe7a0ddad705c9897a8548a62e1f4876a
41/a3870799c63de3688b300bdbaaaa6355ff24fb
42/a4892a296f36eadfceb9d264f6e600703bf688
43/15150561c443e54ab895a121e3c59ee39ff170
43/da7a31eba4b4d3108e782c779cdf94b6bec116
44/e3b4af0aa9e1af2f6db328754f45ac7726948c
46/4aeb5723c1062fc6ad55e3205f956e8a3ef3c5
46/59a8862a02c5227f122d894c2a001eca0d84f9
47/dd87a8e555bd925c86bc96989593e08968b7b1
48/14470a784d66e0318a74ab08ea7202fc3fd4cc
4a/39c901540457bb249c18a4f94a8a0e59f0e6d1
4b/6059c8f1c9b70b70cfcfb4614f49b3c922ca6e
4b/87d5e91601208385a412a90deedaf14279452f
4b/ba369e6095f2c452c4d09f1358acdeaafeae76
4c/236aea851217323502e86ecc922143018837b0
4d/f312eda5f4fe7f8f4a2d9d9ca7b8d0c1fa64f5
4d/f5539d13cfe269d6558fbe78b1329b361b9590
4f/9fd239f6237bbe9dc0cc0949bc09ba2e0a71de
51/7516b737a8c858f54b5ce20ccdf922a9376cfa
51/ce3b9fc8560b53c1e3881e94b2a0c876f18031
52/0400c47b7fe950cac0119f3e0f39f77ea91f48
52/24d3a5dee327bf2df46d0439e377af58e4e4b7
54/6ad61cfdb3824e53156bc95274f47c52009d87
54/95af5c04ccbe4967c06508a4a30fe6944c3178
57/701dee98362e6576ba16ebb0f05c9b9e6c5c41
58/61ff7dcb74969510aa40908555fdfd43e9a607
59/6cfc19975cea95d3f9af95d3ec3822394d17c3
5c/bad73a40be1ee94eebf156cf3f1945aa3dad8d
5d/9d49249a3f5e6f8a2667ab2ef98bd873ea033f
60/1e442f4370db50da9a9266fb36f1df1855da4b
60/e04cb7f2669b592f1197d087b348f6eca6ff2a
62/151fb4b555eb4c92c1942da6b0717af8ba787a
64/fd88beb2d2d9f73e1a90d63c5e5bac131a540f
65/86726dc4df291efa46b1e2587f52c80a3ddbf6
66/2e2425a4c465e97a7dae3a3b7fab0d654ae315
66/babe5b113fb7a4290b198c980240154b392203
67/f28897fa34cf457d8e880b8a60a19bdc771239
67/f6dbb066bdb6658a3ca6f582c9fca2cb8a4b7e
68/bd8cd66f30a076bd6e9f67e9ab51fcca2a4e1b
68/e1d1c671c6161d8e2c149e748ef92bb5cfa665
68/fc05bece2383b55c77ece5900b5f4e4c40ba62
69/d6c2a2fbd139aba6359a9ccbfc0fe6efcdd690
6b/d2133f11f05075526130cb2a97c810b11bcb5e
6b/d2e279447bd40bd32b1a438dfd52a6fe2cf14b
6c/131adc529e2d3a59b7034ced7f99f169598411
6c/616feca94f10bf561251a17c16b7db4b1dbdde
6c/7461a7db47fab144addf95b814379832f4230c
6d/6c8808dfa5be2487402591dded1ad67d908a85
70/3dc5647be0fa24abf8ac8d5e9faed118ea31e6
70/e91c0fd3c8a7c524c051b8e8531c8286523915
72/80e9c59bbfcf7288d0df9636df54527880ee79
73/939a765953cbb48cb8cb1df6ccd062919eded1
74/c28b460bc1f4fc488ae27c0c767c90088ddbcb
74/deae17ac1eecf64f405e05e8e14e0dd6b30543
75/331eaadf68c823f6bc36873b625be470fdb9da
75/337f6597d6a984ce72b370db7ac08b11115954
76/1dedb54cfa4a530d2a8b6f0108b3630536d51c
79/64a617c4a2d1bb45850b48f774fc57b28fea5b
7a/0703d54958925e09013e04bd35cd19a078a90b
7a/a80f07beae9a2f0b8ccd703c32de6744fd051e
7b/21836a584eb1ee8ffecafa2d2ba02109ea2273
7d/815ea015cd551ab5de80879760defb47acea6c
7e/41915dad67d1585d33b56abf2c129432fcf426
7f/78a61938b36a24fd4431a12b22e3dd26702757
81/1322f632d38d635a20a148bb4c5f98b8c31d8c
81/83a1e8450e209464100603f2a9a0b8e574ca43
82/6d4be181ec8e60d819f4ff350dee4e501a4efa
82/85ee71b3bd8ffe7402db5940ebc2da7234a1c4
84/94e16f2929306d0a205b4a9cf34789ec5b52fe
85/94f94aaed77d8365eef9f0ff37e7da9c05d50c
86/700c1d3f3a0a31f2f954bb4188d398af2181db
86/dcde95eebb062f0ccf716c0d3b70614cdb16a6
88/7ac411f4b1bcc710eb561c61d18e3960e817cf
8a/015ae1ae0dac611406357e7e2b7d3b29b51447
8a/2d13657445f6056804c992cd8b46d1f2d9e08e
8a/788640a312a8bbc5bbd1d35b4fedacbcc0c00a
8a/a7d423d5a3e120d4d8c80980791ec2f209f131
8b/36d47cabd9aa85b7a7673e43c603ce6ba76df6
8c/e581e0bef54e004db3bc40b2f1079d24efdb96
8d/7f0f041fa3cb769b4f5f7ab8dea329e031971d
8d/b5bd40cac5f2043a94733d67313e392b5d9dc6
8e/50afaa02fd9bd744f061730cb8eedef4997d5d
8e/c3d3b6b7ee56e23a709f47db60f8561a9698ed
8f/ef91e52599676addb79aba4224c2c0eb8601a3
8f/f04a0672b445210fcb364650d74111c2fd82f5
8f/f5663227734a920cf085f0e0b76d5db14172f4
90/a84eeab5e3ce60421da43a623db6540b688a62
93/28a88723298c70ca14eaaa241613c9574e8b44
93/5152afbc3b4f67bb8d9ccd01b601c89a48e69e
94/1e1bccbf627604ca6af86ad3541dee480aab0e
94/2d87c0b27dd02c55b0112dab49b9be254473d2
94/955c5cd7e5662c6ab40c323ecdfac458c47435
96/3df12cc741f3004f8870a52fc5877bf9ca6013
96/7dd7f09c2f55dfb393c021ab6000a283cf068e
96/939443f19f5d8926e78e906c965b418d4c46d5
96/d5867ce179d5146ed9163e8eba2acabab83122
97/4217f2644a6e6fe401523c4f459f7c3689f9dd
99/decb49e0f56074881831727b906117a326be85
99/f6460ce4758ef60eff7abf0366f7bbfc9a8206
9a/492e74e1d2afda3d4043b8b9968a29c3c13bcc
9b/f30d1676260b8fc8bf519a4af4bc628402e95a
9e/4729bfc0f6b9b5aee0d630bafc299a19fdedf7
9e/aacc50711e24a8d7fb5734444338752cc979a5
9e/ca7d34b36ad5bfcd80ff2ac0b0b9a8fae850c6
9e/f8c372f29f8131739dc8eeab08f4323c54c47a
a2/0d16b51cc9287469c4a2f246acb5f0c21fc098
a2/16dcf6b46f5260b6cfff5721847e010c681e40
a3/60d5a1639d70627543138385781dbee95812c8
a4/d7fcdbcbac2799f0e87a5654df1e4c12345282
a6/f7090037e529277612903dde135889721b8d24
a7/01072f88f0fec15902916cbce38f3549cac0e6
a7/94f10e293f1434fe75766203a47d7e3d4d8c1d
a7/b062b1589ea7e3385124521c2d4751b44b0a4b
a8/60edaf1326a590c32dd4ddf4ea754b8ef5be34
ab/2db5d6e0a134ba2693c7cb74d0f41a95dbf5f3
ac/11791a26f4a82c2d1e2b068c5d9be6564aa2d1
ad/788402e4b81bd4f0fc8d3beba876ac30f2e801
ad/b50ff206b638bb35775e4d8134314a4b669ee0
ae/6bddbb17144c925e1dd30b156fd014e4a5af5e
af/e58fc3dc97f83b97fc5cc4c0bcdc8a2923a536
b3/5c8895207c15e1d8d64ade08db059efd46d634
b3/a6e1262d902a183b6810d77969091aeaa8605c
b4/0c02d0c9d21ad75a00143d3eecb1aae1683c25
b4/a7e9c293e3b1160418b9c2652bdcd028e75742
b8/03a8226968f1f155ebabff1429026ba58ecf94
ba/000ce7dfaa53436a12fcb6f32cb730bc999c58
ba/c54e6b25f59ad97e0be4e6fcda6e53dca6607d
ba/e7d71c1c40d6670a1dfc290c7aba2deea204b6
bb/78195e8b2beb0c006980fb5c6e7e2641524167
bc/4c742dc1b8d1f09af2c510b3dfd730a99e6a8c
bf/a45c5b38c41145cb203209f5bc3dc16599a5e3
c1/06288c0595c7f2acb761e8fcdb39dd3fec3b6f
c1/a639c2cd71f92376aba8b0cdfb7eb42fff1f54
c1/c44c75783ebaad6ce903072e5b14af8f444bd8
c2/1b7a79d2b2746f946b0f5be42fd3e3b59d4544
c2/5b912bd08de3cefe1a673f2f2ca3016d1c1258
c2/9802df7ad706dff5dc666219b1b15e53db20fb
c3/348a7184dbff866f4c5f2f9a82deaa6f93763b
c3/bce4b541feff853989c57fd2dc42c9f99e5f21
c5/b7b50e501d98c810248b15cad01e4f8c3d00d8
c6/1ad84c67d08df0fd04c00b62de24091c9b7383
c7/2685d485e402e73f8cd1cae86797c8eecc8d20
c8/7dbe3c22f24fdf0e49cfaa43508cd524c494f0
c9/3aa29c5e69c1f8c67d2b33f0b5a330d1788526
ca/d27fba7ca666bbd050e21373ad07c0a71b10bc
cd/6aef36b96ac7dbbd94a30646d2cfe45ee8c620
ce/5e3a94a1b9a8e2bb3ea69bc6276ff80b753db3
cf/056ec152b13f4a4eafa61f1499b9beaec3f2c6
cf/b2d40d0416c7b0b60db8199e1b79f640093f72
cf/f68c1b7ed135ab19f2b95c318dc6357ddfdaa2
d0/a377c848e3a37146acd4a8a9b891a5152a9d48
d1/4356539993fb4c70ff4f4deb91eb9097740832
d1/46fd69423d2f3b505d145e67afe5aca02dfe09
d1/7af66ed98bd2bd2e18daa94c6689773993770c
d1/9a07455999d2ab16493ec101e0dbc825206007
d1/b856326cd5454fac386a758ed8c8918f66ba26
d2/5789d47eb4c16b85bf9e39d9d2369a0d855d92
d2/9e6b7e73240371022068cdec11d2d45cc0fc1a
d2/df6c6b7335d4a71baa92177cb78cb13a71bd6c
d3/07d48abf7d014f2adf792ab48e95dd77b3fd66
d4/a19a929357505d72d64fc595a543b2215c39d4
d5/6359cf0df8b4541ccbcad8e0c0a44f822eccf7
d6/1ac6b65471750febac7d69bca2475ad7f39617
d6/1f3c9d16964b53d020e8c21f9ecf7d791fd314
d6/88dc5b7b307160fe01c92bc80fd608bafa923f
d6/e2c3490a50f68c0599b1bfad824631648bfe57
d7/3e59672de81d623318c96702bafe79ca3b01b9
d7/5fa8b23e1610b8f3a1ab1d43e4e6bbe9848d99
d7/944f2f885b1e976e1fd1c0b30b6c172bb52466
d8/425743f77600e4165b653f22ae6fd38027d2b4
d8/5974bb6248f39e51abd6d00737edd6256ee103
da/865c12818c8ef15fc031f832d4399997476a64
db/c93987a2f41d29e7d9ce170c4a66f31ba21a2b
dd/336f1f082af04276827925fc2ad27560e584f4
dd/a5e2303dc0efb1ce21091ac9609ce05f95ca11
dd/f7332ecf611c9ea9b21b96c61b9508c8630258
e0/2dcc2a7fc0426363d2380175ca08cd564bfa1e
e0/59ccd2bf35dbc599e5ce5d39674d926445fc3e
e0/851358fb6b4703f23d74ef964bc4491bec7ab9
e0/9816883b166284284a2848821c7787a74b8170
e2/09a0d469e26a06ce87bb3bbc3429a911e94879
e2/7052bb2c8bb2fd16e0d235c24ca5aad3270e38
e3/640f4f8c0e046c3cd59acdd41e9fbbee959579
e5/4161d6eb21566f231627f845a14c312482ed8a
e5/ce71a5e89216984d0334e19f0b86ee734b2419
e6/405b88cddb9dfa524a7372b58e615bf4cdc730
e6/83dd479d771604c993c307404be2aa9ac45b7d
e7/f1a6cd9114a0ef87ba8fb5e0ff89d05796e059
e9/4fa527e4420309ff4e420897749f95cb552444
e9/cc8b7606e0f912773c1c6aa425319858643ae1
ea/c6e96d764b0c25841dcea3cf4f77b7f889f215
eb/11d8290f638dc8b3b4da8b4a56bb7f5192d80c
eb/91b96510d8485576da96507503e779dece1777
eb/ac41b793d2de79fc57bf0e2215785122c6fbfb
eb/f639d1f0d2f8350a8f8efe5fce50f9387d900e
ec/11fc9e3653f03f1c82ab32ceca3fe90c89a169
ec/55ada1019c2cd250bec8af82e999356d32c713
ee/79ede3b931d2796f1d48176d4859b4dde8add5
ee/e7846fd37a3b6a89d1248e46c9bbc770bfea28
ef/004cfa88883bb87e030b6196934dd90e3548d2
ef/3d66358c62d9f97f72b96ea6b9848414fa8101
ef/8596ac1ab699d85f0de0a3f9be55b2c9876078
ef/cec8d750faa2610959fc2fb4bfd8fc095031ef
ef/f8361a8dab5eb9b5532706575896f3953c3da8
f0/ad20627099424af1d5c762cc2e6975fedc4325
f1/d588e48db9e3d4239673d5030b47b08f849eea
f3/d4332f46fb8d6a96f6cace0fe55fd3a7062258
f3/e3510e3dc4a81d486bd077cb68e2dbb843553e
f4/8cff0f2465f3ea3ad67d6a477c9dafe09b971a
f4/b273648f727cd5f0f92bd3c5cdd67cfed10892
f4/f9a1dc653674c0f7c877dda961925b1515e053
f5/4ef3b60b96982e057642bfcff04ed29caf1207
f5/bf3719d5450931e3979d1b9b140618fe042e22
f7/1f7801a7ff5b40d6e346cd7ddeb492d1d83224
f8/18a85408d9343660a7403290cd483de65f28fe
f8/469687aceb346b06adb42f065dfd586013636d
f8/b4f860379fcc1e6256494d4931ff46ea5852de
f8/fea46bf5bb6034aa77d9c8c8c55953bd694594
fa/37685cddf33cbf37404cb5314ea362557da4c5
fa/e1e08aeadada773d1eb10851e985c808cdf655
fb/209c09b61273835f23b39ce0d07171ab872311
fb/480ccedc5dd98024c22a41e717fcb0ae7fca67
fe/4314bf42a6930ab23ad01b86ba887257ccb576
fe/9977c6f7294face7e7987f2c53bd016d035089
ok 13 - notes tree still has fanout after merge (m)
expecting success of 3311.14 'successful merge using "theirs" strategy (z => w)':
git update-ref refs/notes/m refs/notes/w &&
git notes merge -s theirs z &&
verify_notes m commit5 &&
# w/x/y/z unchanged
verify_notes w commit5 &&
verify_notes x commit5 &&
verify_notes y commit5 &&
verify_notes z commit5
Using remote notes for 157e8cc0aeac5befb302d276f2e706112bf6e413
Using remote notes for e0851358fb6b4703f23d74ef964bc4491bec7ab9
ok 14 - successful merge using "theirs" strategy (z => w)
expecting success of 3311.15 'notes tree still has fanout after merge (m)': verify_fanout m
00/59a2ff8988844dd700659efccfd6743632f608
00/f8b74df8cda7203edb38223fe6e88ccf9e4867
02/96deddcaab6e784e59aa39dd1a8d20aefd16b7
02/e82a8dbc4055adb9de6a9659582c396e5a405c
03/0053ed24c57da4943b57df551d320cda39d301
04/fa40d6837978ceac40e98a0477254b79ff6109
05/a2ed5d9c61c6cf4ba308a0e07cac2a429aff65
06/a01ff41646bc048a05917f15e10fee340f767c
06/c14dad0e5fd835685f33ad970d094a43e1cedc
06/e1bb3951a38f7376405b778091cd7eadec203c
09/9a5404b8f2c60ab4b2a7cf1ebc9cdd69fd1fa9
0a/9e6cecb44350f1408a06cd59686b5cb1fa4d79
0c/9e3b6f605491b12a1cde5ec246115233f0f5fd
0e/77e9a284277632ab6590d1f9b0f86d399c461e
0e/7bc46a7af0b651a90cd01852eefac5d764dbc1
0f/63b6e81d3b18fb134161f627844e9e5a2d942a
0f/d39fd6ef715bb3a0b6c163199e572a7daa7af2
0f/dfaad743779a13fea86b5092855460a1d063fe
11/4fc5a9d7890b4a2d5ec8276dda69e37e5e616c
11/768aa383e7caa89f5a859593052eda5782f73c
11/906a39ecfe8796cae0e0853f06c2c335868843
12/5a36192dc2255282d7d1800dec2a340d236a9b
12/907a70732802196c1a0ca807a108eaa29adec5
13/42db3bf0da6aed591bc732c1746073ff06b0f3
15/b9d90d3c3c6f73deacc4d9c171752b6b0d581f
17/7c1b213fa7ebafc44c50a935e6c176b79360df
18/9334c4b88d99963170854583fc084397152338
19/8490da44fc075db7c29686ed3d75f9eced094a
19/eab2791c316642c620b2494c2dce003beee3d4
1a/50d1559b52e47799dce956a3ef59427b529e48
1a/98e69358bfe77335598c444880178786f250f3
1b/09302a3d79221b5923891bbdecdf6bf5c32dc4
1c/256bbec2954ce4bbd3aa1ec894b00619c87d59
1c/ec8d2b2103afe07295972d513c3f4abc898607
1d/22d9f08076b2a7fc11d1df4fbf5dbb1bc5f77f
1e/1532b6aee517f7d4fbfbc9635d18a10b12fde2
1f/4329544f45b3a5ed56c5a1aca07b22a4999fbb
1f/7c2e169ef55c9e168464bfe083076dbfb6690f
1f/80b24e9c4875cbd559fb8d9434de1850c52c7e
21/eb95433c63f657f4feb61b78b91ed2fe53574c
22/66ca4aaa709bb00bf269087d8e13a54042a93d
22/a8913746147a11a5828aa70482fa6fc1fff2a1
23/6aa09ca3248e4bcde6ed9780fe1e0e17f4e62c
23/c51031b7b5ff34b5cd75bdae5a21bb8dc387ae
23/e92f35ff959ee71439822b19c93027ce677bc8
24/f5d4d513327acad4f00462fe39bc96ed9aec9f
28/fca858f4bdf40159e4fa5a63846b0aceb7431a
29/38a35e6813c7205e7ad62ee37e2a6cc9d36a1f
2b/a7acefc08f3462eb12453a8bb5521544905334
2c/75f53ac534a324324b1ff15cefcd70e7afa646
2d/65622d1ffee087504b1cf59a6d6bdbb9552760
2d/9e37898a0e742a0163855935118ab9af5951a8
2d/c1daa14d2d350677e34ef5fe76509f6e55063d
2d/d18e98a3cc782944a568636289c160d81fd5a1
30/45340fd90419dd2f5690d1c4d8633c70248bd9
32/011ba8b26d0e39c354091b5d18b640bdaa9ec0
32/39026a8940b414239faf0d77e274112d68d96d
32/5dab4afdab3a8b7e7b3691f9e5623d72e6ba95
32/67715033f21dbf69f361ad1f2373e78065949d
34/40ffcbed4ba8626e99d1fd5de37486e336c4fa
35/56cd79d6de9c14ac5e790317e96b48cf28a6e5
35/e40ca1583f193dfb98af23e284a80de6fb7484
36/63d047011bfa8f85a3503c9f54deb1a09d5adf
37/e9a73943fb52b3af6afd3eaa0901992a63cfff
38/07896e9e661a2e84151e396d31fd34796d1f6f
39/65ddde0fd33b440db683e8802fe0ebcb64094c
39/916af9733548bdbf3c7899a97969fdc1ef2e99
39/afd70fce5e8eb6d92a041f1339d96655f2b0f6
39/c5f743e3dc9758a4ac40bfee0fa1d1dcfda822
3b/64761fbc713b657deb969b9855343c0d7eaa2f
3c/066e203e841ea3c7efc4be6d87b5f719704acb
3c/e86c1beb71106283a293ac353ce61ab3096736
3e/c22ce4f6c24d44b2a0a1410a39d1218c184b50
3f/28341a483b5f2d01ffdee0cc680f79f3f7e571
40/b1ffbbe7a0ddad705c9897a8548a62e1f4876a
41/a3870799c63de3688b300bdbaaaa6355ff24fb
42/a4892a296f36eadfceb9d264f6e600703bf688
43/15150561c443e54ab895a121e3c59ee39ff170
43/da7a31eba4b4d3108e782c779cdf94b6bec116
44/e3b4af0aa9e1af2f6db328754f45ac7726948c
46/4aeb5723c1062fc6ad55e3205f956e8a3ef3c5
46/59a8862a02c5227f122d894c2a001eca0d84f9
47/dd87a8e555bd925c86bc96989593e08968b7b1
48/14470a784d66e0318a74ab08ea7202fc3fd4cc
4a/39c901540457bb249c18a4f94a8a0e59f0e6d1
4b/6059c8f1c9b70b70cfcfb4614f49b3c922ca6e
4b/87d5e91601208385a412a90deedaf14279452f
4b/ba369e6095f2c452c4d09f1358acdeaafeae76
4c/236aea851217323502e86ecc922143018837b0
4d/f312eda5f4fe7f8f4a2d9d9ca7b8d0c1fa64f5
4d/f5539d13cfe269d6558fbe78b1329b361b9590
4f/9fd239f6237bbe9dc0cc0949bc09ba2e0a71de
51/7516b737a8c858f54b5ce20ccdf922a9376cfa
51/ce3b9fc8560b53c1e3881e94b2a0c876f18031
52/0400c47b7fe950cac0119f3e0f39f77ea91f48
52/24d3a5dee327bf2df46d0439e377af58e4e4b7
54/6ad61cfdb3824e53156bc95274f47c52009d87
54/95af5c04ccbe4967c06508a4a30fe6944c3178
57/701dee98362e6576ba16ebb0f05c9b9e6c5c41
58/61ff7dcb74969510aa40908555fdfd43e9a607
59/6cfc19975cea95d3f9af95d3ec3822394d17c3
5c/bad73a40be1ee94eebf156cf3f1945aa3dad8d
5d/9d49249a3f5e6f8a2667ab2ef98bd873ea033f
60/1e442f4370db50da9a9266fb36f1df1855da4b
60/e04cb7f2669b592f1197d087b348f6eca6ff2a
62/151fb4b555eb4c92c1942da6b0717af8ba787a
64/fd88beb2d2d9f73e1a90d63c5e5bac131a540f
65/86726dc4df291efa46b1e2587f52c80a3ddbf6
66/2e2425a4c465e97a7dae3a3b7fab0d654ae315
66/babe5b113fb7a4290b198c980240154b392203
67/f28897fa34cf457d8e880b8a60a19bdc771239
67/f6dbb066bdb6658a3ca6f582c9fca2cb8a4b7e
68/bd8cd66f30a076bd6e9f67e9ab51fcca2a4e1b
68/e1d1c671c6161d8e2c149e748ef92bb5cfa665
68/fc05bece2383b55c77ece5900b5f4e4c40ba62
69/d6c2a2fbd139aba6359a9ccbfc0fe6efcdd690
6b/d2133f11f05075526130cb2a97c810b11bcb5e
6b/d2e279447bd40bd32b1a438dfd52a6fe2cf14b
6c/131adc529e2d3a59b7034ced7f99f169598411
6c/616feca94f10bf561251a17c16b7db4b1dbdde
6c/7461a7db47fab144addf95b814379832f4230c
6d/6c8808dfa5be2487402591dded1ad67d908a85
70/3dc5647be0fa24abf8ac8d5e9faed118ea31e6
70/e91c0fd3c8a7c524c051b8e8531c8286523915
72/80e9c59bbfcf7288d0df9636df54527880ee79
73/939a765953cbb48cb8cb1df6ccd062919eded1
74/c28b460bc1f4fc488ae27c0c767c90088ddbcb
74/deae17ac1eecf64f405e05e8e14e0dd6b30543
75/331eaadf68c823f6bc36873b625be470fdb9da
75/337f6597d6a984ce72b370db7ac08b11115954
76/1dedb54cfa4a530d2a8b6f0108b3630536d51c
79/64a617c4a2d1bb45850b48f774fc57b28fea5b
7a/0703d54958925e09013e04bd35cd19a078a90b
7a/a80f07beae9a2f0b8ccd703c32de6744fd051e
7b/21836a584eb1ee8ffecafa2d2ba02109ea2273
7d/815ea015cd551ab5de80879760defb47acea6c
7e/41915dad67d1585d33b56abf2c129432fcf426
7f/78a61938b36a24fd4431a12b22e3dd26702757
81/1322f632d38d635a20a148bb4c5f98b8c31d8c
81/83a1e8450e209464100603f2a9a0b8e574ca43
82/6d4be181ec8e60d819f4ff350dee4e501a4efa
82/85ee71b3bd8ffe7402db5940ebc2da7234a1c4
84/94e16f2929306d0a205b4a9cf34789ec5b52fe
85/94f94aaed77d8365eef9f0ff37e7da9c05d50c
86/700c1d3f3a0a31f2f954bb4188d398af2181db
86/dcde95eebb062f0ccf716c0d3b70614cdb16a6
88/7ac411f4b1bcc710eb561c61d18e3960e817cf
8a/015ae1ae0dac611406357e7e2b7d3b29b51447
8a/2d13657445f6056804c992cd8b46d1f2d9e08e
8a/788640a312a8bbc5bbd1d35b4fedacbcc0c00a
8a/a7d423d5a3e120d4d8c80980791ec2f209f131
8b/36d47cabd9aa85b7a7673e43c603ce6ba76df6
8c/e581e0bef54e004db3bc40b2f1079d24efdb96
8d/7f0f041fa3cb769b4f5f7ab8dea329e031971d
8d/b5bd40cac5f2043a94733d67313e392b5d9dc6
8e/50afaa02fd9bd744f061730cb8eedef4997d5d
8e/c3d3b6b7ee56e23a709f47db60f8561a9698ed
8f/ef91e52599676addb79aba4224c2c0eb8601a3
8f/f04a0672b445210fcb364650d74111c2fd82f5
8f/f5663227734a920cf085f0e0b76d5db14172f4
90/a84eeab5e3ce60421da43a623db6540b688a62
93/28a88723298c70ca14eaaa241613c9574e8b44
93/5152afbc3b4f67bb8d9ccd01b601c89a48e69e
94/1e1bccbf627604ca6af86ad3541dee480aab0e
94/2d87c0b27dd02c55b0112dab49b9be254473d2
94/955c5cd7e5662c6ab40c323ecdfac458c47435
96/3df12cc741f3004f8870a52fc5877bf9ca6013
96/7dd7f09c2f55dfb393c021ab6000a283cf068e
96/939443f19f5d8926e78e906c965b418d4c46d5
96/d5867ce179d5146ed9163e8eba2acabab83122
97/4217f2644a6e6fe401523c4f459f7c3689f9dd
99/decb49e0f56074881831727b906117a326be85
99/f6460ce4758ef60eff7abf0366f7bbfc9a8206
9a/492e74e1d2afda3d4043b8b9968a29c3c13bcc
9b/f30d1676260b8fc8bf519a4af4bc628402e95a
9e/4729bfc0f6b9b5aee0d630bafc299a19fdedf7
9e/aacc50711e24a8d7fb5734444338752cc979a5
9e/ca7d34b36ad5bfcd80ff2ac0b0b9a8fae850c6
9e/f8c372f29f8131739dc8eeab08f4323c54c47a
a2/0d16b51cc9287469c4a2f246acb5f0c21fc098
a2/16dcf6b46f5260b6cfff5721847e010c681e40
a3/60d5a1639d70627543138385781dbee95812c8
a4/d7fcdbcbac2799f0e87a5654df1e4c12345282
a6/f7090037e529277612903dde135889721b8d24
a7/01072f88f0fec15902916cbce38f3549cac0e6
a7/94f10e293f1434fe75766203a47d7e3d4d8c1d
a7/b062b1589ea7e3385124521c2d4751b44b0a4b
a8/60edaf1326a590c32dd4ddf4ea754b8ef5be34
ab/2db5d6e0a134ba2693c7cb74d0f41a95dbf5f3
ac/11791a26f4a82c2d1e2b068c5d9be6564aa2d1
ad/788402e4b81bd4f0fc8d3beba876ac30f2e801
ad/b50ff206b638bb35775e4d8134314a4b669ee0
ae/6bddbb17144c925e1dd30b156fd014e4a5af5e
af/e58fc3dc97f83b97fc5cc4c0bcdc8a2923a536
b3/5c8895207c15e1d8d64ade08db059efd46d634
b3/a6e1262d902a183b6810d77969091aeaa8605c
b4/0c02d0c9d21ad75a00143d3eecb1aae1683c25
b4/a7e9c293e3b1160418b9c2652bdcd028e75742
b8/03a8226968f1f155ebabff1429026ba58ecf94
ba/000ce7dfaa53436a12fcb6f32cb730bc999c58
ba/c54e6b25f59ad97e0be4e6fcda6e53dca6607d
ba/e7d71c1c40d6670a1dfc290c7aba2deea204b6
bb/78195e8b2beb0c006980fb5c6e7e2641524167
bc/4c742dc1b8d1f09af2c510b3dfd730a99e6a8c
bf/a45c5b38c41145cb203209f5bc3dc16599a5e3
c1/06288c0595c7f2acb761e8fcdb39dd3fec3b6f
c1/a639c2cd71f92376aba8b0cdfb7eb42fff1f54
c1/c44c75783ebaad6ce903072e5b14af8f444bd8
c2/1b7a79d2b2746f946b0f5be42fd3e3b59d4544
c2/5b912bd08de3cefe1a673f2f2ca3016d1c1258
c2/9802df7ad706dff5dc666219b1b15e53db20fb
c3/348a7184dbff866f4c5f2f9a82deaa6f93763b
c3/bce4b541feff853989c57fd2dc42c9f99e5f21
c5/b7b50e501d98c810248b15cad01e4f8c3d00d8
c6/1ad84c67d08df0fd04c00b62de24091c9b7383
c7/2685d485e402e73f8cd1cae86797c8eecc8d20
c8/7dbe3c22f24fdf0e49cfaa43508cd524c494f0
c9/3aa29c5e69c1f8c67d2b33f0b5a330d1788526
ca/d27fba7ca666bbd050e21373ad07c0a71b10bc
cd/6aef36b96ac7dbbd94a30646d2cfe45ee8c620
ce/5e3a94a1b9a8e2bb3ea69bc6276ff80b753db3
cf/056ec152b13f4a4eafa61f1499b9beaec3f2c6
cf/b2d40d0416c7b0b60db8199e1b79f640093f72
cf/f68c1b7ed135ab19f2b95c318dc6357ddfdaa2
d0/a377c848e3a37146acd4a8a9b891a5152a9d48
d1/4356539993fb4c70ff4f4deb91eb9097740832
d1/46fd69423d2f3b505d145e67afe5aca02dfe09
d1/7af66ed98bd2bd2e18daa94c6689773993770c
d1/9a07455999d2ab16493ec101e0dbc825206007
d1/b856326cd5454fac386a758ed8c8918f66ba26
d2/5789d47eb4c16b85bf9e39d9d2369a0d855d92
d2/9e6b7e73240371022068cdec11d2d45cc0fc1a
d2/df6c6b7335d4a71baa92177cb78cb13a71bd6c
d3/07d48abf7d014f2adf792ab48e95dd77b3fd66
d4/a19a929357505d72d64fc595a543b2215c39d4
d5/6359cf0df8b4541ccbcad8e0c0a44f822eccf7
d6/1ac6b65471750febac7d69bca2475ad7f39617
d6/1f3c9d16964b53d020e8c21f9ecf7d791fd314
d6/88dc5b7b307160fe01c92bc80fd608bafa923f
d6/e2c3490a50f68c0599b1bfad824631648bfe57
d7/3e59672de81d623318c96702bafe79ca3b01b9
d7/5fa8b23e1610b8f3a1ab1d43e4e6bbe9848d99
d7/944f2f885b1e976e1fd1c0b30b6c172bb52466
d8/425743f77600e4165b653f22ae6fd38027d2b4
d8/5974bb6248f39e51abd6d00737edd6256ee103
da/865c12818c8ef15fc031f832d4399997476a64
db/c93987a2f41d29e7d9ce170c4a66f31ba21a2b
dd/336f1f082af04276827925fc2ad27560e584f4
dd/a5e2303dc0efb1ce21091ac9609ce05f95ca11
dd/f7332ecf611c9ea9b21b96c61b9508c8630258
e0/2dcc2a7fc0426363d2380175ca08cd564bfa1e
e0/59ccd2bf35dbc599e5ce5d39674d926445fc3e
e0/851358fb6b4703f23d74ef964bc4491bec7ab9
e0/9816883b166284284a2848821c7787a74b8170
e2/09a0d469e26a06ce87bb3bbc3429a911e94879
e2/7052bb2c8bb2fd16e0d235c24ca5aad3270e38
e3/640f4f8c0e046c3cd59acdd41e9fbbee959579
e5/4161d6eb21566f231627f845a14c312482ed8a
e5/ce71a5e89216984d0334e19f0b86ee734b2419
e6/405b88cddb9dfa524a7372b58e615bf4cdc730
e6/83dd479d771604c993c307404be2aa9ac45b7d
e7/f1a6cd9114a0ef87ba8fb5e0ff89d05796e059
e9/4fa527e4420309ff4e420897749f95cb552444
e9/cc8b7606e0f912773c1c6aa425319858643ae1
ea/c6e96d764b0c25841dcea3cf4f77b7f889f215
eb/11d8290f638dc8b3b4da8b4a56bb7f5192d80c
eb/91b96510d8485576da96507503e779dece1777
eb/ac41b793d2de79fc57bf0e2215785122c6fbfb
eb/f639d1f0d2f8350a8f8efe5fce50f9387d900e
ec/11fc9e3653f03f1c82ab32ceca3fe90c89a169
ec/55ada1019c2cd250bec8af82e999356d32c713
ee/79ede3b931d2796f1d48176d4859b4dde8add5
ee/e7846fd37a3b6a89d1248e46c9bbc770bfea28
ef/004cfa88883bb87e030b6196934dd90e3548d2
ef/3d66358c62d9f97f72b96ea6b9848414fa8101
ef/8596ac1ab699d85f0de0a3f9be55b2c9876078
ef/cec8d750faa2610959fc2fb4bfd8fc095031ef
ef/f8361a8dab5eb9b5532706575896f3953c3da8
f0/ad20627099424af1d5c762cc2e6975fedc4325
f1/d588e48db9e3d4239673d5030b47b08f849eea
f3/d4332f46fb8d6a96f6cace0fe55fd3a7062258
f3/e3510e3dc4a81d486bd077cb68e2dbb843553e
f4/8cff0f2465f3ea3ad67d6a477c9dafe09b971a
f4/b273648f727cd5f0f92bd3c5cdd67cfed10892
f4/f9a1dc653674c0f7c877dda961925b1515e053
f5/4ef3b60b96982e057642bfcff04ed29caf1207
f5/bf3719d5450931e3979d1b9b140618fe042e22
f7/1f7801a7ff5b40d6e346cd7ddeb492d1d83224
f8/18a85408d9343660a7403290cd483de65f28fe
f8/469687aceb346b06adb42f065dfd586013636d
f8/b4f860379fcc1e6256494d4931ff46ea5852de
f8/fea46bf5bb6034aa77d9c8c8c55953bd694594
fa/37685cddf33cbf37404cb5314ea362557da4c5
fa/e1e08aeadada773d1eb10851e985c808cdf655
fb/209c09b61273835f23b39ce0d07171ab872311
fb/480ccedc5dd98024c22a41e717fcb0ae7fca67
fe/4314bf42a6930ab23ad01b86ba887257ccb576
fe/9977c6f7294face7e7987f2c53bd016d035089
ok 15 - notes tree still has fanout after merge (m)
expecting success of 3311.16 'successful merge using "union" strategy (z => w)':
git update-ref refs/notes/m refs/notes/w &&
git notes merge -s union z &&
verify_notes m commit5 &&
# w/x/y/z unchanged
verify_notes w commit5 &&
verify_notes x commit5 &&
verify_notes y commit5 &&
verify_notes z commit5
Concatenating local and remote notes for 157e8cc0aeac5befb302d276f2e706112bf6e413
Concatenating local and remote notes for e0851358fb6b4703f23d74ef964bc4491bec7ab9
ok 16 - successful merge using "union" strategy (z => w)
expecting success of 3311.17 'notes tree still has fanout after merge (m)': verify_fanout m
00/59a2ff8988844dd700659efccfd6743632f608
00/f8b74df8cda7203edb38223fe6e88ccf9e4867
02/96deddcaab6e784e59aa39dd1a8d20aefd16b7
02/e82a8dbc4055adb9de6a9659582c396e5a405c
03/0053ed24c57da4943b57df551d320cda39d301
04/fa40d6837978ceac40e98a0477254b79ff6109
05/a2ed5d9c61c6cf4ba308a0e07cac2a429aff65
06/a01ff41646bc048a05917f15e10fee340f767c
06/c14dad0e5fd835685f33ad970d094a43e1cedc
06/e1bb3951a38f7376405b778091cd7eadec203c
09/9a5404b8f2c60ab4b2a7cf1ebc9cdd69fd1fa9
0a/9e6cecb44350f1408a06cd59686b5cb1fa4d79
0c/9e3b6f605491b12a1cde5ec246115233f0f5fd
0e/77e9a284277632ab6590d1f9b0f86d399c461e
0e/7bc46a7af0b651a90cd01852eefac5d764dbc1
0f/63b6e81d3b18fb134161f627844e9e5a2d942a
0f/d39fd6ef715bb3a0b6c163199e572a7daa7af2
0f/dfaad743779a13fea86b5092855460a1d063fe
11/4fc5a9d7890b4a2d5ec8276dda69e37e5e616c
11/768aa383e7caa89f5a859593052eda5782f73c
11/906a39ecfe8796cae0e0853f06c2c335868843
12/5a36192dc2255282d7d1800dec2a340d236a9b
12/907a70732802196c1a0ca807a108eaa29adec5
13/42db3bf0da6aed591bc732c1746073ff06b0f3
15/7e8cc0aeac5befb302d276f2e706112bf6e413
15/b9d90d3c3c6f73deacc4d9c171752b6b0d581f
17/7c1b213fa7ebafc44c50a935e6c176b79360df
18/9334c4b88d99963170854583fc084397152338
19/8490da44fc075db7c29686ed3d75f9eced094a
19/eab2791c316642c620b2494c2dce003beee3d4
1a/50d1559b52e47799dce956a3ef59427b529e48
1a/98e69358bfe77335598c444880178786f250f3
1b/09302a3d79221b5923891bbdecdf6bf5c32dc4
1c/256bbec2954ce4bbd3aa1ec894b00619c87d59
1c/ec8d2b2103afe07295972d513c3f4abc898607
1d/22d9f08076b2a7fc11d1df4fbf5dbb1bc5f77f
1e/1532b6aee517f7d4fbfbc9635d18a10b12fde2
1f/4329544f45b3a5ed56c5a1aca07b22a4999fbb
1f/7c2e169ef55c9e168464bfe083076dbfb6690f
1f/80b24e9c4875cbd559fb8d9434de1850c52c7e
21/eb95433c63f657f4feb61b78b91ed2fe53574c
22/66ca4aaa709bb00bf269087d8e13a54042a93d
22/a8913746147a11a5828aa70482fa6fc1fff2a1
23/6aa09ca3248e4bcde6ed9780fe1e0e17f4e62c
23/c51031b7b5ff34b5cd75bdae5a21bb8dc387ae
23/e92f35ff959ee71439822b19c93027ce677bc8
24/f5d4d513327acad4f00462fe39bc96ed9aec9f
28/fca858f4bdf40159e4fa5a63846b0aceb7431a
29/38a35e6813c7205e7ad62ee37e2a6cc9d36a1f
2b/a7acefc08f3462eb12453a8bb5521544905334
2c/75f53ac534a324324b1ff15cefcd70e7afa646
2d/65622d1ffee087504b1cf59a6d6bdbb9552760
2d/9e37898a0e742a0163855935118ab9af5951a8
2d/c1daa14d2d350677e34ef5fe76509f6e55063d
2d/d18e98a3cc782944a568636289c160d81fd5a1
30/45340fd90419dd2f5690d1c4d8633c70248bd9
32/011ba8b26d0e39c354091b5d18b640bdaa9ec0
32/39026a8940b414239faf0d77e274112d68d96d
32/5dab4afdab3a8b7e7b3691f9e5623d72e6ba95
32/67715033f21dbf69f361ad1f2373e78065949d
34/40ffcbed4ba8626e99d1fd5de37486e336c4fa
35/56cd79d6de9c14ac5e790317e96b48cf28a6e5
35/e40ca1583f193dfb98af23e284a80de6fb7484
36/63d047011bfa8f85a3503c9f54deb1a09d5adf
37/e9a73943fb52b3af6afd3eaa0901992a63cfff
38/07896e9e661a2e84151e396d31fd34796d1f6f
39/65ddde0fd33b440db683e8802fe0ebcb64094c
39/916af9733548bdbf3c7899a97969fdc1ef2e99
39/afd70fce5e8eb6d92a041f1339d96655f2b0f6
39/c5f743e3dc9758a4ac40bfee0fa1d1dcfda822
3b/64761fbc713b657deb969b9855343c0d7eaa2f
3c/066e203e841ea3c7efc4be6d87b5f719704acb
3c/e86c1beb71106283a293ac353ce61ab3096736
3e/c22ce4f6c24d44b2a0a1410a39d1218c184b50
3f/28341a483b5f2d01ffdee0cc680f79f3f7e571
40/b1ffbbe7a0ddad705c9897a8548a62e1f4876a
41/a3870799c63de3688b300bdbaaaa6355ff24fb
42/a4892a296f36eadfceb9d264f6e600703bf688
43/15150561c443e54ab895a121e3c59ee39ff170
43/da7a31eba4b4d3108e782c779cdf94b6bec116
44/e3b4af0aa9e1af2f6db328754f45ac7726948c
46/4aeb5723c1062fc6ad55e3205f956e8a3ef3c5
46/59a8862a02c5227f122d894c2a001eca0d84f9
47/dd87a8e555bd925c86bc96989593e08968b7b1
48/14470a784d66e0318a74ab08ea7202fc3fd4cc
4a/39c901540457bb249c18a4f94a8a0e59f0e6d1
4b/6059c8f1c9b70b70cfcfb4614f49b3c922ca6e
4b/87d5e91601208385a412a90deedaf14279452f
4b/ba369e6095f2c452c4d09f1358acdeaafeae76
4c/236aea851217323502e86ecc922143018837b0
4d/f312eda5f4fe7f8f4a2d9d9ca7b8d0c1fa64f5
4d/f5539d13cfe269d6558fbe78b1329b361b9590
4f/9fd239f6237bbe9dc0cc0949bc09ba2e0a71de
51/7516b737a8c858f54b5ce20ccdf922a9376cfa
51/ce3b9fc8560b53c1e3881e94b2a0c876f18031
52/0400c47b7fe950cac0119f3e0f39f77ea91f48
52/24d3a5dee327bf2df46d0439e377af58e4e4b7
54/6ad61cfdb3824e53156bc95274f47c52009d87
54/95af5c04ccbe4967c06508a4a30fe6944c3178
57/701dee98362e6576ba16ebb0f05c9b9e6c5c41
58/61ff7dcb74969510aa40908555fdfd43e9a607
59/6cfc19975cea95d3f9af95d3ec3822394d17c3
5c/bad73a40be1ee94eebf156cf3f1945aa3dad8d
5d/9d49249a3f5e6f8a2667ab2ef98bd873ea033f
60/1e442f4370db50da9a9266fb36f1df1855da4b
60/e04cb7f2669b592f1197d087b348f6eca6ff2a
62/151fb4b555eb4c92c1942da6b0717af8ba787a
64/fd88beb2d2d9f73e1a90d63c5e5bac131a540f
65/86726dc4df291efa46b1e2587f52c80a3ddbf6
66/2e2425a4c465e97a7dae3a3b7fab0d654ae315
66/babe5b113fb7a4290b198c980240154b392203
67/f28897fa34cf457d8e880b8a60a19bdc771239
67/f6dbb066bdb6658a3ca6f582c9fca2cb8a4b7e
68/bd8cd66f30a076bd6e9f67e9ab51fcca2a4e1b
68/e1d1c671c6161d8e2c149e748ef92bb5cfa665
68/fc05bece2383b55c77ece5900b5f4e4c40ba62
69/d6c2a2fbd139aba6359a9ccbfc0fe6efcdd690
6b/d2133f11f05075526130cb2a97c810b11bcb5e
6b/d2e279447bd40bd32b1a438dfd52a6fe2cf14b
6c/131adc529e2d3a59b7034ced7f99f169598411
6c/616feca94f10bf561251a17c16b7db4b1dbdde
6c/7461a7db47fab144addf95b814379832f4230c
6d/6c8808dfa5be2487402591dded1ad67d908a85
70/3dc5647be0fa24abf8ac8d5e9faed118ea31e6
70/e91c0fd3c8a7c524c051b8e8531c8286523915
72/80e9c59bbfcf7288d0df9636df54527880ee79
73/939a765953cbb48cb8cb1df6ccd062919eded1
74/c28b460bc1f4fc488ae27c0c767c90088ddbcb
74/deae17ac1eecf64f405e05e8e14e0dd6b30543
75/331eaadf68c823f6bc36873b625be470fdb9da
75/337f6597d6a984ce72b370db7ac08b11115954
76/1dedb54cfa4a530d2a8b6f0108b3630536d51c
79/64a617c4a2d1bb45850b48f774fc57b28fea5b
7a/0703d54958925e09013e04bd35cd19a078a90b
7a/a80f07beae9a2f0b8ccd703c32de6744fd051e
7b/21836a584eb1ee8ffecafa2d2ba02109ea2273
7d/815ea015cd551ab5de80879760defb47acea6c
7e/41915dad67d1585d33b56abf2c129432fcf426
7f/78a61938b36a24fd4431a12b22e3dd26702757
81/1322f632d38d635a20a148bb4c5f98b8c31d8c
81/83a1e8450e209464100603f2a9a0b8e574ca43
82/6d4be181ec8e60d819f4ff350dee4e501a4efa
82/85ee71b3bd8ffe7402db5940ebc2da7234a1c4
84/94e16f2929306d0a205b4a9cf34789ec5b52fe
85/94f94aaed77d8365eef9f0ff37e7da9c05d50c
86/700c1d3f3a0a31f2f954bb4188d398af2181db
86/dcde95eebb062f0ccf716c0d3b70614cdb16a6
88/7ac411f4b1bcc710eb561c61d18e3960e817cf
8a/015ae1ae0dac611406357e7e2b7d3b29b51447
8a/2d13657445f6056804c992cd8b46d1f2d9e08e
8a/788640a312a8bbc5bbd1d35b4fedacbcc0c00a
8a/a7d423d5a3e120d4d8c80980791ec2f209f131
8b/36d47cabd9aa85b7a7673e43c603ce6ba76df6
8c/e581e0bef54e004db3bc40b2f1079d24efdb96
8d/7f0f041fa3cb769b4f5f7ab8dea329e031971d
8d/b5bd40cac5f2043a94733d67313e392b5d9dc6
8e/50afaa02fd9bd744f061730cb8eedef4997d5d
8e/c3d3b6b7ee56e23a709f47db60f8561a9698ed
8f/ef91e52599676addb79aba4224c2c0eb8601a3
8f/f04a0672b445210fcb364650d74111c2fd82f5
8f/f5663227734a920cf085f0e0b76d5db14172f4
90/a84eeab5e3ce60421da43a623db6540b688a62
93/28a88723298c70ca14eaaa241613c9574e8b44
93/5152afbc3b4f67bb8d9ccd01b601c89a48e69e
94/1e1bccbf627604ca6af86ad3541dee480aab0e
94/2d87c0b27dd02c55b0112dab49b9be254473d2
94/955c5cd7e5662c6ab40c323ecdfac458c47435
96/3df12cc741f3004f8870a52fc5877bf9ca6013
96/7dd7f09c2f55dfb393c021ab6000a283cf068e
96/939443f19f5d8926e78e906c965b418d4c46d5
96/d5867ce179d5146ed9163e8eba2acabab83122
97/4217f2644a6e6fe401523c4f459f7c3689f9dd
99/decb49e0f56074881831727b906117a326be85
99/f6460ce4758ef60eff7abf0366f7bbfc9a8206
9a/492e74e1d2afda3d4043b8b9968a29c3c13bcc
9b/f30d1676260b8fc8bf519a4af4bc628402e95a
9e/4729bfc0f6b9b5aee0d630bafc299a19fdedf7
9e/aacc50711e24a8d7fb5734444338752cc979a5
9e/ca7d34b36ad5bfcd80ff2ac0b0b9a8fae850c6
9e/f8c372f29f8131739dc8eeab08f4323c54c47a
a2/0d16b51cc9287469c4a2f246acb5f0c21fc098
a2/16dcf6b46f5260b6cfff5721847e010c681e40
a3/60d5a1639d70627543138385781dbee95812c8
a4/d7fcdbcbac2799f0e87a5654df1e4c12345282
a6/f7090037e529277612903dde135889721b8d24
a7/01072f88f0fec15902916cbce38f3549cac0e6
a7/94f10e293f1434fe75766203a47d7e3d4d8c1d
a7/b062b1589ea7e3385124521c2d4751b44b0a4b
a8/60edaf1326a590c32dd4ddf4ea754b8ef5be34
ab/2db5d6e0a134ba2693c7cb74d0f41a95dbf5f3
ac/11791a26f4a82c2d1e2b068c5d9be6564aa2d1
ad/788402e4b81bd4f0fc8d3beba876ac30f2e801
ad/b50ff206b638bb35775e4d8134314a4b669ee0
ae/6bddbb17144c925e1dd30b156fd014e4a5af5e
af/e58fc3dc97f83b97fc5cc4c0bcdc8a2923a536
b3/5c8895207c15e1d8d64ade08db059efd46d634
b3/a6e1262d902a183b6810d77969091aeaa8605c
b4/0c02d0c9d21ad75a00143d3eecb1aae1683c25
b4/a7e9c293e3b1160418b9c2652bdcd028e75742
b8/03a8226968f1f155ebabff1429026ba58ecf94
ba/000ce7dfaa53436a12fcb6f32cb730bc999c58
ba/c54e6b25f59ad97e0be4e6fcda6e53dca6607d
ba/e7d71c1c40d6670a1dfc290c7aba2deea204b6
bb/78195e8b2beb0c006980fb5c6e7e2641524167
bc/4c742dc1b8d1f09af2c510b3dfd730a99e6a8c
bf/a45c5b38c41145cb203209f5bc3dc16599a5e3
c1/06288c0595c7f2acb761e8fcdb39dd3fec3b6f
c1/a639c2cd71f92376aba8b0cdfb7eb42fff1f54
c1/c44c75783ebaad6ce903072e5b14af8f444bd8
c2/1b7a79d2b2746f946b0f5be42fd3e3b59d4544
c2/5b912bd08de3cefe1a673f2f2ca3016d1c1258
c2/9802df7ad706dff5dc666219b1b15e53db20fb
c3/348a7184dbff866f4c5f2f9a82deaa6f93763b
c3/bce4b541feff853989c57fd2dc42c9f99e5f21
c5/b7b50e501d98c810248b15cad01e4f8c3d00d8
c6/1ad84c67d08df0fd04c00b62de24091c9b7383
c7/2685d485e402e73f8cd1cae86797c8eecc8d20
c8/7dbe3c22f24fdf0e49cfaa43508cd524c494f0
c9/3aa29c5e69c1f8c67d2b33f0b5a330d1788526
ca/d27fba7ca666bbd050e21373ad07c0a71b10bc
cd/6aef36b96ac7dbbd94a30646d2cfe45ee8c620
ce/5e3a94a1b9a8e2bb3ea69bc6276ff80b753db3
cf/056ec152b13f4a4eafa61f1499b9beaec3f2c6
cf/b2d40d0416c7b0b60db8199e1b79f640093f72
cf/f68c1b7ed135ab19f2b95c318dc6357ddfdaa2
d0/a377c848e3a37146acd4a8a9b891a5152a9d48
d1/4356539993fb4c70ff4f4deb91eb9097740832
d1/46fd69423d2f3b505d145e67afe5aca02dfe09
d1/7af66ed98bd2bd2e18daa94c6689773993770c
d1/9a07455999d2ab16493ec101e0dbc825206007
d1/b856326cd5454fac386a758ed8c8918f66ba26
d2/5789d47eb4c16b85bf9e39d9d2369a0d855d92
d2/9e6b7e73240371022068cdec11d2d45cc0fc1a
d2/df6c6b7335d4a71baa92177cb78cb13a71bd6c
d3/07d48abf7d014f2adf792ab48e95dd77b3fd66
d4/a19a929357505d72d64fc595a543b2215c39d4
d5/6359cf0df8b4541ccbcad8e0c0a44f822eccf7
d6/1ac6b65471750febac7d69bca2475ad7f39617
d6/1f3c9d16964b53d020e8c21f9ecf7d791fd314
d6/88dc5b7b307160fe01c92bc80fd608bafa923f
d6/e2c3490a50f68c0599b1bfad824631648bfe57
d7/3e59672de81d623318c96702bafe79ca3b01b9
d7/5fa8b23e1610b8f3a1ab1d43e4e6bbe9848d99
d7/944f2f885b1e976e1fd1c0b30b6c172bb52466
d8/425743f77600e4165b653f22ae6fd38027d2b4
d8/5974bb6248f39e51abd6d00737edd6256ee103
da/865c12818c8ef15fc031f832d4399997476a64
db/c93987a2f41d29e7d9ce170c4a66f31ba21a2b
dd/336f1f082af04276827925fc2ad27560e584f4
dd/a5e2303dc0efb1ce21091ac9609ce05f95ca11
dd/f7332ecf611c9ea9b21b96c61b9508c8630258
e0/2dcc2a7fc0426363d2380175ca08cd564bfa1e
e0/59ccd2bf35dbc599e5ce5d39674d926445fc3e
e0/851358fb6b4703f23d74ef964bc4491bec7ab9
e0/9816883b166284284a2848821c7787a74b8170
e2/09a0d469e26a06ce87bb3bbc3429a911e94879
e2/7052bb2c8bb2fd16e0d235c24ca5aad3270e38
e3/640f4f8c0e046c3cd59acdd41e9fbbee959579
e5/4161d6eb21566f231627f845a14c312482ed8a
e5/ce71a5e89216984d0334e19f0b86ee734b2419
e6/405b88cddb9dfa524a7372b58e615bf4cdc730
e6/83dd479d771604c993c307404be2aa9ac45b7d
e7/f1a6cd9114a0ef87ba8fb5e0ff89d05796e059
e9/4fa527e4420309ff4e420897749f95cb552444
e9/cc8b7606e0f912773c1c6aa425319858643ae1
ea/c6e96d764b0c25841dcea3cf4f77b7f889f215
eb/11d8290f638dc8b3b4da8b4a56bb7f5192d80c
eb/91b96510d8485576da96507503e779dece1777
eb/ac41b793d2de79fc57bf0e2215785122c6fbfb
eb/f639d1f0d2f8350a8f8efe5fce50f9387d900e
ec/11fc9e3653f03f1c82ab32ceca3fe90c89a169
ec/55ada1019c2cd250bec8af82e999356d32c713
ee/79ede3b931d2796f1d48176d4859b4dde8add5
ee/e7846fd37a3b6a89d1248e46c9bbc770bfea28
ef/004cfa88883bb87e030b6196934dd90e3548d2
ef/3d66358c62d9f97f72b96ea6b9848414fa8101
ef/8596ac1ab699d85f0de0a3f9be55b2c9876078
ef/cec8d750faa2610959fc2fb4bfd8fc095031ef
ef/f8361a8dab5eb9b5532706575896f3953c3da8
f0/ad20627099424af1d5c762cc2e6975fedc4325
f1/d588e48db9e3d4239673d5030b47b08f849eea
f3/d4332f46fb8d6a96f6cace0fe55fd3a7062258
f3/e3510e3dc4a81d486bd077cb68e2dbb843553e
f4/8cff0f2465f3ea3ad67d6a477c9dafe09b971a
f4/b273648f727cd5f0f92bd3c5cdd67cfed10892
f4/f9a1dc653674c0f7c877dda961925b1515e053
f5/4ef3b60b96982e057642bfcff04ed29caf1207
f5/bf3719d5450931e3979d1b9b140618fe042e22
f7/1f7801a7ff5b40d6e346cd7ddeb492d1d83224
f8/18a85408d9343660a7403290cd483de65f28fe
f8/469687aceb346b06adb42f065dfd586013636d
f8/b4f860379fcc1e6256494d4931ff46ea5852de
f8/fea46bf5bb6034aa77d9c8c8c55953bd694594
fa/37685cddf33cbf37404cb5314ea362557da4c5
fa/e1e08aeadada773d1eb10851e985c808cdf655
fb/209c09b61273835f23b39ce0d07171ab872311
fb/480ccedc5dd98024c22a41e717fcb0ae7fca67
fe/4314bf42a6930ab23ad01b86ba887257ccb576
fe/9977c6f7294face7e7987f2c53bd016d035089
ok 17 - notes tree still has fanout after merge (m)
expecting success of 3311.18 'successful merge using "cat_sort_uniq" strategy (z => w)':
git update-ref refs/notes/m refs/notes/w &&
git notes merge -s cat_sort_uniq z &&
verify_notes m commit5 &&
# w/x/y/z unchanged
verify_notes w commit5 &&
verify_notes x commit5 &&
verify_notes y commit5 &&
verify_notes z commit5
Concatenating unique lines in local and remote notes for 157e8cc0aeac5befb302d276f2e706112bf6e413
Concatenating unique lines in local and remote notes for e0851358fb6b4703f23d74ef964bc4491bec7ab9
ok 18 - successful merge using "cat_sort_uniq" strategy (z => w)
expecting success of 3311.19 'notes tree still has fanout after merge (m)': verify_fanout m
00/59a2ff8988844dd700659efccfd6743632f608
00/f8b74df8cda7203edb38223fe6e88ccf9e4867
02/96deddcaab6e784e59aa39dd1a8d20aefd16b7
02/e82a8dbc4055adb9de6a9659582c396e5a405c
03/0053ed24c57da4943b57df551d320cda39d301
04/fa40d6837978ceac40e98a0477254b79ff6109
05/a2ed5d9c61c6cf4ba308a0e07cac2a429aff65
06/a01ff41646bc048a05917f15e10fee340f767c
06/c14dad0e5fd835685f33ad970d094a43e1cedc
06/e1bb3951a38f7376405b778091cd7eadec203c
09/9a5404b8f2c60ab4b2a7cf1ebc9cdd69fd1fa9
0a/9e6cecb44350f1408a06cd59686b5cb1fa4d79
0c/9e3b6f605491b12a1cde5ec246115233f0f5fd
0e/77e9a284277632ab6590d1f9b0f86d399c461e
0e/7bc46a7af0b651a90cd01852eefac5d764dbc1
0f/63b6e81d3b18fb134161f627844e9e5a2d942a
0f/d39fd6ef715bb3a0b6c163199e572a7daa7af2
0f/dfaad743779a13fea86b5092855460a1d063fe
11/4fc5a9d7890b4a2d5ec8276dda69e37e5e616c
11/768aa383e7caa89f5a859593052eda5782f73c
11/906a39ecfe8796cae0e0853f06c2c335868843
12/5a36192dc2255282d7d1800dec2a340d236a9b
12/907a70732802196c1a0ca807a108eaa29adec5
13/42db3bf0da6aed591bc732c1746073ff06b0f3
15/7e8cc0aeac5befb302d276f2e706112bf6e413
15/b9d90d3c3c6f73deacc4d9c171752b6b0d581f
17/7c1b213fa7ebafc44c50a935e6c176b79360df
18/9334c4b88d99963170854583fc084397152338
19/8490da44fc075db7c29686ed3d75f9eced094a
19/eab2791c316642c620b2494c2dce003beee3d4
1a/50d1559b52e47799dce956a3ef59427b529e48
1a/98e69358bfe77335598c444880178786f250f3
1b/09302a3d79221b5923891bbdecdf6bf5c32dc4
1c/256bbec2954ce4bbd3aa1ec894b00619c87d59
1c/ec8d2b2103afe07295972d513c3f4abc898607
1d/22d9f08076b2a7fc11d1df4fbf5dbb1bc5f77f
1e/1532b6aee517f7d4fbfbc9635d18a10b12fde2
1f/4329544f45b3a5ed56c5a1aca07b22a4999fbb
1f/7c2e169ef55c9e168464bfe083076dbfb6690f
1f/80b24e9c4875cbd559fb8d9434de1850c52c7e
21/eb95433c63f657f4feb61b78b91ed2fe53574c
22/66ca4aaa709bb00bf269087d8e13a54042a93d
22/a8913746147a11a5828aa70482fa6fc1fff2a1
23/6aa09ca3248e4bcde6ed9780fe1e0e17f4e62c
23/c51031b7b5ff34b5cd75bdae5a21bb8dc387ae
23/e92f35ff959ee71439822b19c93027ce677bc8
24/f5d4d513327acad4f00462fe39bc96ed9aec9f
28/fca858f4bdf40159e4fa5a63846b0aceb7431a
29/38a35e6813c7205e7ad62ee37e2a6cc9d36a1f
2b/a7acefc08f3462eb12453a8bb5521544905334
2c/75f53ac534a324324b1ff15cefcd70e7afa646
2d/65622d1ffee087504b1cf59a6d6bdbb9552760
2d/9e37898a0e742a0163855935118ab9af5951a8
2d/c1daa14d2d350677e34ef5fe76509f6e55063d
2d/d18e98a3cc782944a568636289c160d81fd5a1
30/45340fd90419dd2f5690d1c4d8633c70248bd9
32/011ba8b26d0e39c354091b5d18b640bdaa9ec0
32/39026a8940b414239faf0d77e274112d68d96d
32/5dab4afdab3a8b7e7b3691f9e5623d72e6ba95
32/67715033f21dbf69f361ad1f2373e78065949d
34/40ffcbed4ba8626e99d1fd5de37486e336c4fa
35/56cd79d6de9c14ac5e790317e96b48cf28a6e5
35/e40ca1583f193dfb98af23e284a80de6fb7484
36/63d047011bfa8f85a3503c9f54deb1a09d5adf
37/e9a73943fb52b3af6afd3eaa0901992a63cfff
38/07896e9e661a2e84151e396d31fd34796d1f6f
39/65ddde0fd33b440db683e8802fe0ebcb64094c
39/916af9733548bdbf3c7899a97969fdc1ef2e99
39/afd70fce5e8eb6d92a041f1339d96655f2b0f6
39/c5f743e3dc9758a4ac40bfee0fa1d1dcfda822
3b/64761fbc713b657deb969b9855343c0d7eaa2f
3c/066e203e841ea3c7efc4be6d87b5f719704acb
3c/e86c1beb71106283a293ac353ce61ab3096736
3e/c22ce4f6c24d44b2a0a1410a39d1218c184b50
3f/28341a483b5f2d01ffdee0cc680f79f3f7e571
40/b1ffbbe7a0ddad705c9897a8548a62e1f4876a
41/a3870799c63de3688b300bdbaaaa6355ff24fb
42/a4892a296f36eadfceb9d264f6e600703bf688
43/15150561c443e54ab895a121e3c59ee39ff170
43/da7a31eba4b4d3108e782c779cdf94b6bec116
44/e3b4af0aa9e1af2f6db328754f45ac7726948c
46/4aeb5723c1062fc6ad55e3205f956e8a3ef3c5
46/59a8862a02c5227f122d894c2a001eca0d84f9
47/dd87a8e555bd925c86bc96989593e08968b7b1
48/14470a784d66e0318a74ab08ea7202fc3fd4cc
4a/39c901540457bb249c18a4f94a8a0e59f0e6d1
4b/6059c8f1c9b70b70cfcfb4614f49b3c922ca6e
4b/87d5e91601208385a412a90deedaf14279452f
4b/ba369e6095f2c452c4d09f1358acdeaafeae76
4c/236aea851217323502e86ecc922143018837b0
4d/f312eda5f4fe7f8f4a2d9d9ca7b8d0c1fa64f5
4d/f5539d13cfe269d6558fbe78b1329b361b9590
4f/9fd239f6237bbe9dc0cc0949bc09ba2e0a71de
51/7516b737a8c858f54b5ce20ccdf922a9376cfa
51/ce3b9fc8560b53c1e3881e94b2a0c876f18031
52/0400c47b7fe950cac0119f3e0f39f77ea91f48
52/24d3a5dee327bf2df46d0439e377af58e4e4b7
54/6ad61cfdb3824e53156bc95274f47c52009d87
54/95af5c04ccbe4967c06508a4a30fe6944c3178
57/701dee98362e6576ba16ebb0f05c9b9e6c5c41
58/61ff7dcb74969510aa40908555fdfd43e9a607
59/6cfc19975cea95d3f9af95d3ec3822394d17c3
5c/bad73a40be1ee94eebf156cf3f1945aa3dad8d
5d/9d49249a3f5e6f8a2667ab2ef98bd873ea033f
60/1e442f4370db50da9a9266fb36f1df1855da4b
60/e04cb7f2669b592f1197d087b348f6eca6ff2a
62/151fb4b555eb4c92c1942da6b0717af8ba787a
64/fd88beb2d2d9f73e1a90d63c5e5bac131a540f
65/86726dc4df291efa46b1e2587f52c80a3ddbf6
66/2e2425a4c465e97a7dae3a3b7fab0d654ae315
66/babe5b113fb7a4290b198c980240154b392203
67/f28897fa34cf457d8e880b8a60a19bdc771239
67/f6dbb066bdb6658a3ca6f582c9fca2cb8a4b7e
68/bd8cd66f30a076bd6e9f67e9ab51fcca2a4e1b
68/e1d1c671c6161d8e2c149e748ef92bb5cfa665
68/fc05bece2383b55c77ece5900b5f4e4c40ba62
69/d6c2a2fbd139aba6359a9ccbfc0fe6efcdd690
6b/d2133f11f05075526130cb2a97c810b11bcb5e
6b/d2e279447bd40bd32b1a438dfd52a6fe2cf14b
6c/131adc529e2d3a59b7034ced7f99f169598411
6c/616feca94f10bf561251a17c16b7db4b1dbdde
6c/7461a7db47fab144addf95b814379832f4230c
6d/6c8808dfa5be2487402591dded1ad67d908a85
70/3dc5647be0fa24abf8ac8d5e9faed118ea31e6
70/e91c0fd3c8a7c524c051b8e8531c8286523915
72/80e9c59bbfcf7288d0df9636df54527880ee79
73/939a765953cbb48cb8cb1df6ccd062919eded1
74/c28b460bc1f4fc488ae27c0c767c90088ddbcb
74/deae17ac1eecf64f405e05e8e14e0dd6b30543
75/331eaadf68c823f6bc36873b625be470fdb9da
75/337f6597d6a984ce72b370db7ac08b11115954
76/1dedb54cfa4a530d2a8b6f0108b3630536d51c
79/64a617c4a2d1bb45850b48f774fc57b28fea5b
7a/0703d54958925e09013e04bd35cd19a078a90b
7a/a80f07beae9a2f0b8ccd703c32de6744fd051e
7b/21836a584eb1ee8ffecafa2d2ba02109ea2273
7d/815ea015cd551ab5de80879760defb47acea6c
7e/41915dad67d1585d33b56abf2c129432fcf426
7f/78a61938b36a24fd4431a12b22e3dd26702757
81/1322f632d38d635a20a148bb4c5f98b8c31d8c
81/83a1e8450e209464100603f2a9a0b8e574ca43
82/6d4be181ec8e60d819f4ff350dee4e501a4efa
82/85ee71b3bd8ffe7402db5940ebc2da7234a1c4
84/94e16f2929306d0a205b4a9cf34789ec5b52fe
85/94f94aaed77d8365eef9f0ff37e7da9c05d50c
86/700c1d3f3a0a31f2f954bb4188d398af2181db
86/dcde95eebb062f0ccf716c0d3b70614cdb16a6
88/7ac411f4b1bcc710eb561c61d18e3960e817cf
8a/015ae1ae0dac611406357e7e2b7d3b29b51447
8a/2d13657445f6056804c992cd8b46d1f2d9e08e
8a/788640a312a8bbc5bbd1d35b4fedacbcc0c00a
8a/a7d423d5a3e120d4d8c80980791ec2f209f131
8b/36d47cabd9aa85b7a7673e43c603ce6ba76df6
8c/e581e0bef54e004db3bc40b2f1079d24efdb96
8d/7f0f041fa3cb769b4f5f7ab8dea329e031971d
8d/b5bd40cac5f2043a94733d67313e392b5d9dc6
8e/50afaa02fd9bd744f061730cb8eedef4997d5d
8e/c3d3b6b7ee56e23a709f47db60f8561a9698ed
8f/ef91e52599676addb79aba4224c2c0eb8601a3
8f/f04a0672b445210fcb364650d74111c2fd82f5
8f/f5663227734a920cf085f0e0b76d5db14172f4
90/a84eeab5e3ce60421da43a623db6540b688a62
93/28a88723298c70ca14eaaa241613c9574e8b44
93/5152afbc3b4f67bb8d9ccd01b601c89a48e69e
94/1e1bccbf627604ca6af86ad3541dee480aab0e
94/2d87c0b27dd02c55b0112dab49b9be254473d2
94/955c5cd7e5662c6ab40c323ecdfac458c47435
96/3df12cc741f3004f8870a52fc5877bf9ca6013
96/7dd7f09c2f55dfb393c021ab6000a283cf068e
96/939443f19f5d8926e78e906c965b418d4c46d5
96/d5867ce179d5146ed9163e8eba2acabab83122
97/4217f2644a6e6fe401523c4f459f7c3689f9dd
99/decb49e0f56074881831727b906117a326be85
99/f6460ce4758ef60eff7abf0366f7bbfc9a8206
9a/492e74e1d2afda3d4043b8b9968a29c3c13bcc
9b/f30d1676260b8fc8bf519a4af4bc628402e95a
9e/4729bfc0f6b9b5aee0d630bafc299a19fdedf7
9e/aacc50711e24a8d7fb5734444338752cc979a5
9e/ca7d34b36ad5bfcd80ff2ac0b0b9a8fae850c6
9e/f8c372f29f8131739dc8eeab08f4323c54c47a
a2/0d16b51cc9287469c4a2f246acb5f0c21fc098
a2/16dcf6b46f5260b6cfff5721847e010c681e40
a3/60d5a1639d70627543138385781dbee95812c8
a4/d7fcdbcbac2799f0e87a5654df1e4c12345282
a6/f7090037e529277612903dde135889721b8d24
a7/01072f88f0fec15902916cbce38f3549cac0e6
a7/94f10e293f1434fe75766203a47d7e3d4d8c1d
a7/b062b1589ea7e3385124521c2d4751b44b0a4b
a8/60edaf1326a590c32dd4ddf4ea754b8ef5be34
ab/2db5d6e0a134ba2693c7cb74d0f41a95dbf5f3
ac/11791a26f4a82c2d1e2b068c5d9be6564aa2d1
ad/788402e4b81bd4f0fc8d3beba876ac30f2e801
ad/b50ff206b638bb35775e4d8134314a4b669ee0
ae/6bddbb17144c925e1dd30b156fd014e4a5af5e
af/e58fc3dc97f83b97fc5cc4c0bcdc8a2923a536
b3/5c8895207c15e1d8d64ade08db059efd46d634
b3/a6e1262d902a183b6810d77969091aeaa8605c
b4/0c02d0c9d21ad75a00143d3eecb1aae1683c25
b4/a7e9c293e3b1160418b9c2652bdcd028e75742
b8/03a8226968f1f155ebabff1429026ba58ecf94
ba/000ce7dfaa53436a12fcb6f32cb730bc999c58
ba/c54e6b25f59ad97e0be4e6fcda6e53dca6607d
ba/e7d71c1c40d6670a1dfc290c7aba2deea204b6
bb/78195e8b2beb0c006980fb5c6e7e2641524167
bc/4c742dc1b8d1f09af2c510b3dfd730a99e6a8c
bf/a45c5b38c41145cb203209f5bc3dc16599a5e3
c1/06288c0595c7f2acb761e8fcdb39dd3fec3b6f
c1/a639c2cd71f92376aba8b0cdfb7eb42fff1f54
c1/c44c75783ebaad6ce903072e5b14af8f444bd8
c2/1b7a79d2b2746f946b0f5be42fd3e3b59d4544
c2/5b912bd08de3cefe1a673f2f2ca3016d1c1258
c2/9802df7ad706dff5dc666219b1b15e53db20fb
c3/348a7184dbff866f4c5f2f9a82deaa6f93763b
c3/bce4b541feff853989c57fd2dc42c9f99e5f21
c5/b7b50e501d98c810248b15cad01e4f8c3d00d8
c6/1ad84c67d08df0fd04c00b62de24091c9b7383
c7/2685d485e402e73f8cd1cae86797c8eecc8d20
c8/7dbe3c22f24fdf0e49cfaa43508cd524c494f0
c9/3aa29c5e69c1f8c67d2b33f0b5a330d1788526
ca/d27fba7ca666bbd050e21373ad07c0a71b10bc
cd/6aef36b96ac7dbbd94a30646d2cfe45ee8c620
ce/5e3a94a1b9a8e2bb3ea69bc6276ff80b753db3
cf/056ec152b13f4a4eafa61f1499b9beaec3f2c6
cf/b2d40d0416c7b0b60db8199e1b79f640093f72
cf/f68c1b7ed135ab19f2b95c318dc6357ddfdaa2
d0/a377c848e3a37146acd4a8a9b891a5152a9d48
d1/4356539993fb4c70ff4f4deb91eb9097740832
d1/46fd69423d2f3b505d145e67afe5aca02dfe09
d1/7af66ed98bd2bd2e18daa94c6689773993770c
d1/9a07455999d2ab16493ec101e0dbc825206007
d1/b856326cd5454fac386a758ed8c8918f66ba26
d2/5789d47eb4c16b85bf9e39d9d2369a0d855d92
d2/9e6b7e73240371022068cdec11d2d45cc0fc1a
d2/df6c6b7335d4a71baa92177cb78cb13a71bd6c
d3/07d48abf7d014f2adf792ab48e95dd77b3fd66
d4/a19a929357505d72d64fc595a543b2215c39d4
d5/6359cf0df8b4541ccbcad8e0c0a44f822eccf7
d6/1ac6b65471750febac7d69bca2475ad7f39617
d6/1f3c9d16964b53d020e8c21f9ecf7d791fd314
d6/88dc5b7b307160fe01c92bc80fd608bafa923f
d6/e2c3490a50f68c0599b1bfad824631648bfe57
d7/3e59672de81d623318c96702bafe79ca3b01b9
d7/5fa8b23e1610b8f3a1ab1d43e4e6bbe9848d99
d7/944f2f885b1e976e1fd1c0b30b6c172bb52466
d8/425743f77600e4165b653f22ae6fd38027d2b4
d8/5974bb6248f39e51abd6d00737edd6256ee103
da/865c12818c8ef15fc031f832d4399997476a64
db/c93987a2f41d29e7d9ce170c4a66f31ba21a2b
dd/336f1f082af04276827925fc2ad27560e584f4
dd/a5e2303dc0efb1ce21091ac9609ce05f95ca11
dd/f7332ecf611c9ea9b21b96c61b9508c8630258
e0/2dcc2a7fc0426363d2380175ca08cd564bfa1e
e0/59ccd2bf35dbc599e5ce5d39674d926445fc3e
e0/851358fb6b4703f23d74ef964bc4491bec7ab9
e0/9816883b166284284a2848821c7787a74b8170
e2/09a0d469e26a06ce87bb3bbc3429a911e94879
e2/7052bb2c8bb2fd16e0d235c24ca5aad3270e38
e3/640f4f8c0e046c3cd59acdd41e9fbbee959579
e5/4161d6eb21566f231627f845a14c312482ed8a
e5/ce71a5e89216984d0334e19f0b86ee734b2419
e6/405b88cddb9dfa524a7372b58e615bf4cdc730
e6/83dd479d771604c993c307404be2aa9ac45b7d
e7/f1a6cd9114a0ef87ba8fb5e0ff89d05796e059
e9/4fa527e4420309ff4e420897749f95cb552444
e9/cc8b7606e0f912773c1c6aa425319858643ae1
ea/c6e96d764b0c25841dcea3cf4f77b7f889f215
eb/11d8290f638dc8b3b4da8b4a56bb7f5192d80c
eb/91b96510d8485576da96507503e779dece1777
eb/ac41b793d2de79fc57bf0e2215785122c6fbfb
eb/f639d1f0d2f8350a8f8efe5fce50f9387d900e
ec/11fc9e3653f03f1c82ab32ceca3fe90c89a169
ec/55ada1019c2cd250bec8af82e999356d32c713
ee/79ede3b931d2796f1d48176d4859b4dde8add5
ee/e7846fd37a3b6a89d1248e46c9bbc770bfea28
ef/004cfa88883bb87e030b6196934dd90e3548d2
ef/3d66358c62d9f97f72b96ea6b9848414fa8101
ef/8596ac1ab699d85f0de0a3f9be55b2c9876078
ef/cec8d750faa2610959fc2fb4bfd8fc095031ef
ef/f8361a8dab5eb9b5532706575896f3953c3da8
f0/ad20627099424af1d5c762cc2e6975fedc4325
f1/d588e48db9e3d4239673d5030b47b08f849eea
f3/d4332f46fb8d6a96f6cace0fe55fd3a7062258
f3/e3510e3dc4a81d486bd077cb68e2dbb843553e
f4/8cff0f2465f3ea3ad67d6a477c9dafe09b971a
f4/b273648f727cd5f0f92bd3c5cdd67cfed10892
f4/f9a1dc653674c0f7c877dda961925b1515e053
f5/4ef3b60b96982e057642bfcff04ed29caf1207
f5/bf3719d5450931e3979d1b9b140618fe042e22
f7/1f7801a7ff5b40d6e346cd7ddeb492d1d83224
f8/18a85408d9343660a7403290cd483de65f28fe
f8/469687aceb346b06adb42f065dfd586013636d
f8/b4f860379fcc1e6256494d4931ff46ea5852de
f8/fea46bf5bb6034aa77d9c8c8c55953bd694594
fa/37685cddf33cbf37404cb5314ea362557da4c5
fa/e1e08aeadada773d1eb10851e985c808cdf655
fb/209c09b61273835f23b39ce0d07171ab872311
fb/480ccedc5dd98024c22a41e717fcb0ae7fca67
fe/4314bf42a6930ab23ad01b86ba887257ccb576
fe/9977c6f7294face7e7987f2c53bd016d035089
ok 19 - notes tree still has fanout after merge (m)
expecting success of 3311.20 'fails to merge using "manual" strategy (z => w)':
git update-ref refs/notes/m refs/notes/w &&
test_must_fail git notes merge z
Automatic notes merge failed. Fix conflicts in .git/NOTES_MERGE_WORKTREE and commit the result with 'git notes merge --commit', or abort the merge with 'git notes merge --abort'.
Auto-merging notes for 157e8cc0aeac5befb302d276f2e706112bf6e413
CONFLICT (delete/modify): Notes for object 157e8cc0aeac5befb302d276f2e706112bf6e413 deleted in refs/notes/z and modified in refs/notes/m. Version from refs/notes/m left in tree.
Auto-merging notes for e0851358fb6b4703f23d74ef964bc4491bec7ab9
CONFLICT (content): Merge conflict in notes for object e0851358fb6b4703f23d74ef964bc4491bec7ab9
ok 20 - fails to merge using "manual" strategy (z => w)
expecting success of 3311.21 'notes tree still has fanout after merge (m)': verify_fanout m
00/59a2ff8988844dd700659efccfd6743632f608
00/f8b74df8cda7203edb38223fe6e88ccf9e4867
02/96deddcaab6e784e59aa39dd1a8d20aefd16b7
02/e82a8dbc4055adb9de6a9659582c396e5a405c
03/0053ed24c57da4943b57df551d320cda39d301
04/fa40d6837978ceac40e98a0477254b79ff6109
05/a2ed5d9c61c6cf4ba308a0e07cac2a429aff65
06/a01ff41646bc048a05917f15e10fee340f767c
06/c14dad0e5fd835685f33ad970d094a43e1cedc
06/e1bb3951a38f7376405b778091cd7eadec203c
09/9a5404b8f2c60ab4b2a7cf1ebc9cdd69fd1fa9
0a/9e6cecb44350f1408a06cd59686b5cb1fa4d79
0c/9e3b6f605491b12a1cde5ec246115233f0f5fd
0e/77e9a284277632ab6590d1f9b0f86d399c461e
0e/7bc46a7af0b651a90cd01852eefac5d764dbc1
0f/63b6e81d3b18fb134161f627844e9e5a2d942a
0f/d39fd6ef715bb3a0b6c163199e572a7daa7af2
0f/dfaad743779a13fea86b5092855460a1d063fe
11/4fc5a9d7890b4a2d5ec8276dda69e37e5e616c
11/768aa383e7caa89f5a859593052eda5782f73c
11/906a39ecfe8796cae0e0853f06c2c335868843
12/5a36192dc2255282d7d1800dec2a340d236a9b
12/907a70732802196c1a0ca807a108eaa29adec5
13/42db3bf0da6aed591bc732c1746073ff06b0f3
15/7e8cc0aeac5befb302d276f2e706112bf6e413
15/b9d90d3c3c6f73deacc4d9c171752b6b0d581f
17/7c1b213fa7ebafc44c50a935e6c176b79360df
18/9334c4b88d99963170854583fc084397152338
19/8490da44fc075db7c29686ed3d75f9eced094a
19/eab2791c316642c620b2494c2dce003beee3d4
1a/50d1559b52e47799dce956a3ef59427b529e48
1a/98e69358bfe77335598c444880178786f250f3
1b/09302a3d79221b5923891bbdecdf6bf5c32dc4
1c/256bbec2954ce4bbd3aa1ec894b00619c87d59
1c/ec8d2b2103afe07295972d513c3f4abc898607
1d/22d9f08076b2a7fc11d1df4fbf5dbb1bc5f77f
1e/1532b6aee517f7d4fbfbc9635d18a10b12fde2
1f/4329544f45b3a5ed56c5a1aca07b22a4999fbb
1f/7c2e169ef55c9e168464bfe083076dbfb6690f
1f/80b24e9c4875cbd559fb8d9434de1850c52c7e
21/eb95433c63f657f4feb61b78b91ed2fe53574c
22/66ca4aaa709bb00bf269087d8e13a54042a93d
22/a8913746147a11a5828aa70482fa6fc1fff2a1
23/6aa09ca3248e4bcde6ed9780fe1e0e17f4e62c
23/c51031b7b5ff34b5cd75bdae5a21bb8dc387ae
23/e92f35ff959ee71439822b19c93027ce677bc8
24/f5d4d513327acad4f00462fe39bc96ed9aec9f
28/fca858f4bdf40159e4fa5a63846b0aceb7431a
29/38a35e6813c7205e7ad62ee37e2a6cc9d36a1f
2b/a7acefc08f3462eb12453a8bb5521544905334
2c/75f53ac534a324324b1ff15cefcd70e7afa646
2d/65622d1ffee087504b1cf59a6d6bdbb9552760
2d/9e37898a0e742a0163855935118ab9af5951a8
2d/c1daa14d2d350677e34ef5fe76509f6e55063d
2d/d18e98a3cc782944a568636289c160d81fd5a1
30/45340fd90419dd2f5690d1c4d8633c70248bd9
32/011ba8b26d0e39c354091b5d18b640bdaa9ec0
32/39026a8940b414239faf0d77e274112d68d96d
32/5dab4afdab3a8b7e7b3691f9e5623d72e6ba95
32/67715033f21dbf69f361ad1f2373e78065949d
34/40ffcbed4ba8626e99d1fd5de37486e336c4fa
35/56cd79d6de9c14ac5e790317e96b48cf28a6e5
35/e40ca1583f193dfb98af23e284a80de6fb7484
36/63d047011bfa8f85a3503c9f54deb1a09d5adf
37/e9a73943fb52b3af6afd3eaa0901992a63cfff
38/07896e9e661a2e84151e396d31fd34796d1f6f
39/65ddde0fd33b440db683e8802fe0ebcb64094c
39/916af9733548bdbf3c7899a97969fdc1ef2e99
39/afd70fce5e8eb6d92a041f1339d96655f2b0f6
39/c5f743e3dc9758a4ac40bfee0fa1d1dcfda822
3b/64761fbc713b657deb969b9855343c0d7eaa2f
3c/066e203e841ea3c7efc4be6d87b5f719704acb
3c/e86c1beb71106283a293ac353ce61ab3096736
3e/c22ce4f6c24d44b2a0a1410a39d1218c184b50
3f/28341a483b5f2d01ffdee0cc680f79f3f7e571
40/b1ffbbe7a0ddad705c9897a8548a62e1f4876a
41/a3870799c63de3688b300bdbaaaa6355ff24fb
42/a4892a296f36eadfceb9d264f6e600703bf688
43/15150561c443e54ab895a121e3c59ee39ff170
43/da7a31eba4b4d3108e782c779cdf94b6bec116
44/e3b4af0aa9e1af2f6db328754f45ac7726948c
46/4aeb5723c1062fc6ad55e3205f956e8a3ef3c5
46/59a8862a02c5227f122d894c2a001eca0d84f9
47/dd87a8e555bd925c86bc96989593e08968b7b1
48/14470a784d66e0318a74ab08ea7202fc3fd4cc
4a/39c901540457bb249c18a4f94a8a0e59f0e6d1
4b/6059c8f1c9b70b70cfcfb4614f49b3c922ca6e
4b/87d5e91601208385a412a90deedaf14279452f
4b/ba369e6095f2c452c4d09f1358acdeaafeae76
4c/236aea851217323502e86ecc922143018837b0
4d/f312eda5f4fe7f8f4a2d9d9ca7b8d0c1fa64f5
4d/f5539d13cfe269d6558fbe78b1329b361b9590
4f/9fd239f6237bbe9dc0cc0949bc09ba2e0a71de
51/7516b737a8c858f54b5ce20ccdf922a9376cfa
51/ce3b9fc8560b53c1e3881e94b2a0c876f18031
52/0400c47b7fe950cac0119f3e0f39f77ea91f48
52/24d3a5dee327bf2df46d0439e377af58e4e4b7
54/6ad61cfdb3824e53156bc95274f47c52009d87
54/95af5c04ccbe4967c06508a4a30fe6944c3178
57/701dee98362e6576ba16ebb0f05c9b9e6c5c41
58/61ff7dcb74969510aa40908555fdfd43e9a607
59/6cfc19975cea95d3f9af95d3ec3822394d17c3
5c/bad73a40be1ee94eebf156cf3f1945aa3dad8d
5d/9d49249a3f5e6f8a2667ab2ef98bd873ea033f
60/1e442f4370db50da9a9266fb36f1df1855da4b
60/e04cb7f2669b592f1197d087b348f6eca6ff2a
62/151fb4b555eb4c92c1942da6b0717af8ba787a
64/fd88beb2d2d9f73e1a90d63c5e5bac131a540f
65/86726dc4df291efa46b1e2587f52c80a3ddbf6
66/2e2425a4c465e97a7dae3a3b7fab0d654ae315
66/babe5b113fb7a4290b198c980240154b392203
67/f28897fa34cf457d8e880b8a60a19bdc771239
67/f6dbb066bdb6658a3ca6f582c9fca2cb8a4b7e
68/bd8cd66f30a076bd6e9f67e9ab51fcca2a4e1b
68/e1d1c671c6161d8e2c149e748ef92bb5cfa665
68/fc05bece2383b55c77ece5900b5f4e4c40ba62
69/d6c2a2fbd139aba6359a9ccbfc0fe6efcdd690
6b/d2133f11f05075526130cb2a97c810b11bcb5e
6b/d2e279447bd40bd32b1a438dfd52a6fe2cf14b
6c/131adc529e2d3a59b7034ced7f99f169598411
6c/616feca94f10bf561251a17c16b7db4b1dbdde
6c/7461a7db47fab144addf95b814379832f4230c
6d/6c8808dfa5be2487402591dded1ad67d908a85
70/3dc5647be0fa24abf8ac8d5e9faed118ea31e6
70/e91c0fd3c8a7c524c051b8e8531c8286523915
72/80e9c59bbfcf7288d0df9636df54527880ee79
73/939a765953cbb48cb8cb1df6ccd062919eded1
74/c28b460bc1f4fc488ae27c0c767c90088ddbcb
74/deae17ac1eecf64f405e05e8e14e0dd6b30543
75/331eaadf68c823f6bc36873b625be470fdb9da
75/337f6597d6a984ce72b370db7ac08b11115954
76/1dedb54cfa4a530d2a8b6f0108b3630536d51c
79/64a617c4a2d1bb45850b48f774fc57b28fea5b
7a/0703d54958925e09013e04bd35cd19a078a90b
7a/a80f07beae9a2f0b8ccd703c32de6744fd051e
7b/21836a584eb1ee8ffecafa2d2ba02109ea2273
7d/815ea015cd551ab5de80879760defb47acea6c
7e/41915dad67d1585d33b56abf2c129432fcf426
7f/78a61938b36a24fd4431a12b22e3dd26702757
81/1322f632d38d635a20a148bb4c5f98b8c31d8c
81/83a1e8450e209464100603f2a9a0b8e574ca43
82/6d4be181ec8e60d819f4ff350dee4e501a4efa
82/85ee71b3bd8ffe7402db5940ebc2da7234a1c4
84/94e16f2929306d0a205b4a9cf34789ec5b52fe
85/94f94aaed77d8365eef9f0ff37e7da9c05d50c
86/700c1d3f3a0a31f2f954bb4188d398af2181db
86/dcde95eebb062f0ccf716c0d3b70614cdb16a6
88/7ac411f4b1bcc710eb561c61d18e3960e817cf
8a/015ae1ae0dac611406357e7e2b7d3b29b51447
8a/2d13657445f6056804c992cd8b46d1f2d9e08e
8a/788640a312a8bbc5bbd1d35b4fedacbcc0c00a
8a/a7d423d5a3e120d4d8c80980791ec2f209f131
8b/36d47cabd9aa85b7a7673e43c603ce6ba76df6
8c/e581e0bef54e004db3bc40b2f1079d24efdb96
8d/7f0f041fa3cb769b4f5f7ab8dea329e031971d
8d/b5bd40cac5f2043a94733d67313e392b5d9dc6
8e/50afaa02fd9bd744f061730cb8eedef4997d5d
8e/c3d3b6b7ee56e23a709f47db60f8561a9698ed
8f/ef91e52599676addb79aba4224c2c0eb8601a3
8f/f04a0672b445210fcb364650d74111c2fd82f5
8f/f5663227734a920cf085f0e0b76d5db14172f4
90/a84eeab5e3ce60421da43a623db6540b688a62
93/28a88723298c70ca14eaaa241613c9574e8b44
93/5152afbc3b4f67bb8d9ccd01b601c89a48e69e
94/1e1bccbf627604ca6af86ad3541dee480aab0e
94/2d87c0b27dd02c55b0112dab49b9be254473d2
94/955c5cd7e5662c6ab40c323ecdfac458c47435
96/3df12cc741f3004f8870a52fc5877bf9ca6013
96/7dd7f09c2f55dfb393c021ab6000a283cf068e
96/939443f19f5d8926e78e906c965b418d4c46d5
96/d5867ce179d5146ed9163e8eba2acabab83122
97/4217f2644a6e6fe401523c4f459f7c3689f9dd
99/decb49e0f56074881831727b906117a326be85
99/f6460ce4758ef60eff7abf0366f7bbfc9a8206
9a/492e74e1d2afda3d4043b8b9968a29c3c13bcc
9b/f30d1676260b8fc8bf519a4af4bc628402e95a
9e/4729bfc0f6b9b5aee0d630bafc299a19fdedf7
9e/aacc50711e24a8d7fb5734444338752cc979a5
9e/ca7d34b36ad5bfcd80ff2ac0b0b9a8fae850c6
9e/f8c372f29f8131739dc8eeab08f4323c54c47a
a2/0d16b51cc9287469c4a2f246acb5f0c21fc098
a2/16dcf6b46f5260b6cfff5721847e010c681e40
a3/60d5a1639d70627543138385781dbee95812c8
a4/d7fcdbcbac2799f0e87a5654df1e4c12345282
a6/f7090037e529277612903dde135889721b8d24
a7/01072f88f0fec15902916cbce38f3549cac0e6
a7/94f10e293f1434fe75766203a47d7e3d4d8c1d
a7/b062b1589ea7e3385124521c2d4751b44b0a4b
a8/60edaf1326a590c32dd4ddf4ea754b8ef5be34
ab/2db5d6e0a134ba2693c7cb74d0f41a95dbf5f3
ac/11791a26f4a82c2d1e2b068c5d9be6564aa2d1
ad/788402e4b81bd4f0fc8d3beba876ac30f2e801
ad/b50ff206b638bb35775e4d8134314a4b669ee0
ae/6bddbb17144c925e1dd30b156fd014e4a5af5e
af/e58fc3dc97f83b97fc5cc4c0bcdc8a2923a536
b3/5c8895207c15e1d8d64ade08db059efd46d634
b3/a6e1262d902a183b6810d77969091aeaa8605c
b4/0c02d0c9d21ad75a00143d3eecb1aae1683c25
b4/a7e9c293e3b1160418b9c2652bdcd028e75742
b8/03a8226968f1f155ebabff1429026ba58ecf94
ba/000ce7dfaa53436a12fcb6f32cb730bc999c58
ba/c54e6b25f59ad97e0be4e6fcda6e53dca6607d
ba/e7d71c1c40d6670a1dfc290c7aba2deea204b6
bb/78195e8b2beb0c006980fb5c6e7e2641524167
bc/4c742dc1b8d1f09af2c510b3dfd730a99e6a8c
bf/a45c5b38c41145cb203209f5bc3dc16599a5e3
c1/06288c0595c7f2acb761e8fcdb39dd3fec3b6f
c1/a639c2cd71f92376aba8b0cdfb7eb42fff1f54
c1/c44c75783ebaad6ce903072e5b14af8f444bd8
c2/1b7a79d2b2746f946b0f5be42fd3e3b59d4544
c2/5b912bd08de3cefe1a673f2f2ca3016d1c1258
c2/9802df7ad706dff5dc666219b1b15e53db20fb
c3/348a7184dbff866f4c5f2f9a82deaa6f93763b
c3/bce4b541feff853989c57fd2dc42c9f99e5f21
c5/b7b50e501d98c810248b15cad01e4f8c3d00d8
c6/1ad84c67d08df0fd04c00b62de24091c9b7383
c7/2685d485e402e73f8cd1cae86797c8eecc8d20
c8/7dbe3c22f24fdf0e49cfaa43508cd524c494f0
c9/3aa29c5e69c1f8c67d2b33f0b5a330d1788526
ca/d27fba7ca666bbd050e21373ad07c0a71b10bc
cd/6aef36b96ac7dbbd94a30646d2cfe45ee8c620
ce/5e3a94a1b9a8e2bb3ea69bc6276ff80b753db3
cf/056ec152b13f4a4eafa61f1499b9beaec3f2c6
cf/b2d40d0416c7b0b60db8199e1b79f640093f72
cf/f68c1b7ed135ab19f2b95c318dc6357ddfdaa2
d0/a377c848e3a37146acd4a8a9b891a5152a9d48
d1/4356539993fb4c70ff4f4deb91eb9097740832
d1/46fd69423d2f3b505d145e67afe5aca02dfe09
d1/7af66ed98bd2bd2e18daa94c6689773993770c
d1/9a07455999d2ab16493ec101e0dbc825206007
d1/b856326cd5454fac386a758ed8c8918f66ba26
d2/5789d47eb4c16b85bf9e39d9d2369a0d855d92
d2/9e6b7e73240371022068cdec11d2d45cc0fc1a
d2/df6c6b7335d4a71baa92177cb78cb13a71bd6c
d3/07d48abf7d014f2adf792ab48e95dd77b3fd66
d4/a19a929357505d72d64fc595a543b2215c39d4
d5/6359cf0df8b4541ccbcad8e0c0a44f822eccf7
d6/1ac6b65471750febac7d69bca2475ad7f39617
d6/1f3c9d16964b53d020e8c21f9ecf7d791fd314
d6/88dc5b7b307160fe01c92bc80fd608bafa923f
d6/e2c3490a50f68c0599b1bfad824631648bfe57
d7/3e59672de81d623318c96702bafe79ca3b01b9
d7/5fa8b23e1610b8f3a1ab1d43e4e6bbe9848d99
d7/944f2f885b1e976e1fd1c0b30b6c172bb52466
d8/425743f77600e4165b653f22ae6fd38027d2b4
d8/5974bb6248f39e51abd6d00737edd6256ee103
da/865c12818c8ef15fc031f832d4399997476a64
db/c93987a2f41d29e7d9ce170c4a66f31ba21a2b
dd/336f1f082af04276827925fc2ad27560e584f4
dd/a5e2303dc0efb1ce21091ac9609ce05f95ca11
dd/f7332ecf611c9ea9b21b96c61b9508c8630258
e0/2dcc2a7fc0426363d2380175ca08cd564bfa1e
e0/59ccd2bf35dbc599e5ce5d39674d926445fc3e
e0/851358fb6b4703f23d74ef964bc4491bec7ab9
e0/9816883b166284284a2848821c7787a74b8170
e2/09a0d469e26a06ce87bb3bbc3429a911e94879
e2/7052bb2c8bb2fd16e0d235c24ca5aad3270e38
e3/640f4f8c0e046c3cd59acdd41e9fbbee959579
e5/4161d6eb21566f231627f845a14c312482ed8a
e5/ce71a5e89216984d0334e19f0b86ee734b2419
e6/405b88cddb9dfa524a7372b58e615bf4cdc730
e6/83dd479d771604c993c307404be2aa9ac45b7d
e7/f1a6cd9114a0ef87ba8fb5e0ff89d05796e059
e9/4fa527e4420309ff4e420897749f95cb552444
e9/cc8b7606e0f912773c1c6aa425319858643ae1
ea/c6e96d764b0c25841dcea3cf4f77b7f889f215
eb/11d8290f638dc8b3b4da8b4a56bb7f5192d80c
eb/91b96510d8485576da96507503e779dece1777
eb/ac41b793d2de79fc57bf0e2215785122c6fbfb
eb/f639d1f0d2f8350a8f8efe5fce50f9387d900e
ec/11fc9e3653f03f1c82ab32ceca3fe90c89a169
ec/55ada1019c2cd250bec8af82e999356d32c713
ee/79ede3b931d2796f1d48176d4859b4dde8add5
ee/e7846fd37a3b6a89d1248e46c9bbc770bfea28
ef/004cfa88883bb87e030b6196934dd90e3548d2
ef/3d66358c62d9f97f72b96ea6b9848414fa8101
ef/8596ac1ab699d85f0de0a3f9be55b2c9876078
ef/cec8d750faa2610959fc2fb4bfd8fc095031ef
ef/f8361a8dab5eb9b5532706575896f3953c3da8
f0/ad20627099424af1d5c762cc2e6975fedc4325
f1/d588e48db9e3d4239673d5030b47b08f849eea
f3/d4332f46fb8d6a96f6cace0fe55fd3a7062258
f3/e3510e3dc4a81d486bd077cb68e2dbb843553e
f4/8cff0f2465f3ea3ad67d6a477c9dafe09b971a
f4/b273648f727cd5f0f92bd3c5cdd67cfed10892
f4/f9a1dc653674c0f7c877dda961925b1515e053
f5/4ef3b60b96982e057642bfcff04ed29caf1207
f5/bf3719d5450931e3979d1b9b140618fe042e22
f7/1f7801a7ff5b40d6e346cd7ddeb492d1d83224
f8/18a85408d9343660a7403290cd483de65f28fe
f8/469687aceb346b06adb42f065dfd586013636d
f8/b4f860379fcc1e6256494d4931ff46ea5852de
f8/fea46bf5bb6034aa77d9c8c8c55953bd694594
fa/37685cddf33cbf37404cb5314ea362557da4c5
fa/e1e08aeadada773d1eb10851e985c808cdf655
fb/209c09b61273835f23b39ce0d07171ab872311
fb/480ccedc5dd98024c22a41e717fcb0ae7fca67
fe/4314bf42a6930ab23ad01b86ba887257ccb576
fe/9977c6f7294face7e7987f2c53bd016d035089
ok 21 - notes tree still has fanout after merge (m)
expecting success of 3311.22 'verify conflict entries (with no fanout)':
ls .git/NOTES_MERGE_WORKTREE >output_conflicts &&
test_cmp expect_conflicts output_conflicts &&
( for f in $(cat expect_conflicts); do
test_cmp "expect_conflict_$f" ".git/NOTES_MERGE_WORKTREE/$f" ||
exit 1
done ) &&
# Verify that current notes tree (pre-merge) has not changed (m == w)
test "$(git rev-parse refs/notes/m)" = "$(git rev-parse refs/notes/w)"
ok 22 - verify conflict entries (with no fanout)
expecting success of 3311.23 'resolve and finalize merge (z => w)':
cat >.git/NOTES_MERGE_WORKTREE/$commit_sha3 <<EOF &&
other notes for commit3
appended notes for commit3
EOF
git notes merge --commit &&
verify_notes m commit5 &&
# w/x/y/z unchanged
verify_notes w commit5 &&
verify_notes x commit5 &&
verify_notes y commit5 &&
verify_notes z commit5
ok 23 - resolve and finalize merge (z => w)
expecting success of 3311.24 'notes tree still has fanout after merge (m)': verify_fanout m
00/59a2ff8988844dd700659efccfd6743632f608
00/f8b74df8cda7203edb38223fe6e88ccf9e4867
02/96deddcaab6e784e59aa39dd1a8d20aefd16b7
02/e82a8dbc4055adb9de6a9659582c396e5a405c
03/0053ed24c57da4943b57df551d320cda39d301
04/fa40d6837978ceac40e98a0477254b79ff6109
05/a2ed5d9c61c6cf4ba308a0e07cac2a429aff65
06/a01ff41646bc048a05917f15e10fee340f767c
06/c14dad0e5fd835685f33ad970d094a43e1cedc
06/e1bb3951a38f7376405b778091cd7eadec203c
09/9a5404b8f2c60ab4b2a7cf1ebc9cdd69fd1fa9
0a/9e6cecb44350f1408a06cd59686b5cb1fa4d79
0c/9e3b6f605491b12a1cde5ec246115233f0f5fd
0e/77e9a284277632ab6590d1f9b0f86d399c461e
0e/7bc46a7af0b651a90cd01852eefac5d764dbc1
0f/63b6e81d3b18fb134161f627844e9e5a2d942a
0f/d39fd6ef715bb3a0b6c163199e572a7daa7af2
0f/dfaad743779a13fea86b5092855460a1d063fe
11/4fc5a9d7890b4a2d5ec8276dda69e37e5e616c
11/768aa383e7caa89f5a859593052eda5782f73c
11/906a39ecfe8796cae0e0853f06c2c335868843
12/5a36192dc2255282d7d1800dec2a340d236a9b
12/907a70732802196c1a0ca807a108eaa29adec5
13/42db3bf0da6aed591bc732c1746073ff06b0f3
15/7e8cc0aeac5befb302d276f2e706112bf6e413
15/b9d90d3c3c6f73deacc4d9c171752b6b0d581f
17/7c1b213fa7ebafc44c50a935e6c176b79360df
18/9334c4b88d99963170854583fc084397152338
19/8490da44fc075db7c29686ed3d75f9eced094a
19/eab2791c316642c620b2494c2dce003beee3d4
1a/50d1559b52e47799dce956a3ef59427b529e48
1a/98e69358bfe77335598c444880178786f250f3
1b/09302a3d79221b5923891bbdecdf6bf5c32dc4
1c/256bbec2954ce4bbd3aa1ec894b00619c87d59
1c/ec8d2b2103afe07295972d513c3f4abc898607
1d/22d9f08076b2a7fc11d1df4fbf5dbb1bc5f77f
1e/1532b6aee517f7d4fbfbc9635d18a10b12fde2
1f/4329544f45b3a5ed56c5a1aca07b22a4999fbb
1f/7c2e169ef55c9e168464bfe083076dbfb6690f
1f/80b24e9c4875cbd559fb8d9434de1850c52c7e
21/eb95433c63f657f4feb61b78b91ed2fe53574c
22/66ca4aaa709bb00bf269087d8e13a54042a93d
22/a8913746147a11a5828aa70482fa6fc1fff2a1
23/6aa09ca3248e4bcde6ed9780fe1e0e17f4e62c
23/c51031b7b5ff34b5cd75bdae5a21bb8dc387ae
23/e92f35ff959ee71439822b19c93027ce677bc8
24/f5d4d513327acad4f00462fe39bc96ed9aec9f
28/fca858f4bdf40159e4fa5a63846b0aceb7431a
29/38a35e6813c7205e7ad62ee37e2a6cc9d36a1f
2b/a7acefc08f3462eb12453a8bb5521544905334
2c/75f53ac534a324324b1ff15cefcd70e7afa646
2d/65622d1ffee087504b1cf59a6d6bdbb9552760
2d/9e37898a0e742a0163855935118ab9af5951a8
2d/c1daa14d2d350677e34ef5fe76509f6e55063d
2d/d18e98a3cc782944a568636289c160d81fd5a1
30/45340fd90419dd2f5690d1c4d8633c70248bd9
32/011ba8b26d0e39c354091b5d18b640bdaa9ec0
32/39026a8940b414239faf0d77e274112d68d96d
32/5dab4afdab3a8b7e7b3691f9e5623d72e6ba95
32/67715033f21dbf69f361ad1f2373e78065949d
34/40ffcbed4ba8626e99d1fd5de37486e336c4fa
35/56cd79d6de9c14ac5e790317e96b48cf28a6e5
35/e40ca1583f193dfb98af23e284a80de6fb7484
36/63d047011bfa8f85a3503c9f54deb1a09d5adf
37/e9a73943fb52b3af6afd3eaa0901992a63cfff
38/07896e9e661a2e84151e396d31fd34796d1f6f
39/65ddde0fd33b440db683e8802fe0ebcb64094c
39/916af9733548bdbf3c7899a97969fdc1ef2e99
39/afd70fce5e8eb6d92a041f1339d96655f2b0f6
39/c5f743e3dc9758a4ac40bfee0fa1d1dcfda822
3b/64761fbc713b657deb969b9855343c0d7eaa2f
3c/066e203e841ea3c7efc4be6d87b5f719704acb
3c/e86c1beb71106283a293ac353ce61ab3096736
3e/c22ce4f6c24d44b2a0a1410a39d1218c184b50
3f/28341a483b5f2d01ffdee0cc680f79f3f7e571
40/b1ffbbe7a0ddad705c9897a8548a62e1f4876a
41/a3870799c63de3688b300bdbaaaa6355ff24fb
42/a4892a296f36eadfceb9d264f6e600703bf688
43/15150561c443e54ab895a121e3c59ee39ff170
43/da7a31eba4b4d3108e782c779cdf94b6bec116
44/e3b4af0aa9e1af2f6db328754f45ac7726948c
46/4aeb5723c1062fc6ad55e3205f956e8a3ef3c5
46/59a8862a02c5227f122d894c2a001eca0d84f9
47/dd87a8e555bd925c86bc96989593e08968b7b1
48/14470a784d66e0318a74ab08ea7202fc3fd4cc
4a/39c901540457bb249c18a4f94a8a0e59f0e6d1
4b/6059c8f1c9b70b70cfcfb4614f49b3c922ca6e
4b/87d5e91601208385a412a90deedaf14279452f
4b/ba369e6095f2c452c4d09f1358acdeaafeae76
4c/236aea851217323502e86ecc922143018837b0
4d/f312eda5f4fe7f8f4a2d9d9ca7b8d0c1fa64f5
4d/f5539d13cfe269d6558fbe78b1329b361b9590
4f/9fd239f6237bbe9dc0cc0949bc09ba2e0a71de
51/7516b737a8c858f54b5ce20ccdf922a9376cfa
51/ce3b9fc8560b53c1e3881e94b2a0c876f18031
52/0400c47b7fe950cac0119f3e0f39f77ea91f48
52/24d3a5dee327bf2df46d0439e377af58e4e4b7
54/6ad61cfdb3824e53156bc95274f47c52009d87
54/95af5c04ccbe4967c06508a4a30fe6944c3178
57/701dee98362e6576ba16ebb0f05c9b9e6c5c41
58/61ff7dcb74969510aa40908555fdfd43e9a607
59/6cfc19975cea95d3f9af95d3ec3822394d17c3
5c/bad73a40be1ee94eebf156cf3f1945aa3dad8d
5d/9d49249a3f5e6f8a2667ab2ef98bd873ea033f
60/1e442f4370db50da9a9266fb36f1df1855da4b
60/e04cb7f2669b592f1197d087b348f6eca6ff2a
62/151fb4b555eb4c92c1942da6b0717af8ba787a
64/fd88beb2d2d9f73e1a90d63c5e5bac131a540f
65/86726dc4df291efa46b1e2587f52c80a3ddbf6
66/2e2425a4c465e97a7dae3a3b7fab0d654ae315
66/babe5b113fb7a4290b198c980240154b392203
67/f28897fa34cf457d8e880b8a60a19bdc771239
67/f6dbb066bdb6658a3ca6f582c9fca2cb8a4b7e
68/bd8cd66f30a076bd6e9f67e9ab51fcca2a4e1b
68/e1d1c671c6161d8e2c149e748ef92bb5cfa665
68/fc05bece2383b55c77ece5900b5f4e4c40ba62
69/d6c2a2fbd139aba6359a9ccbfc0fe6efcdd690
6b/d2133f11f05075526130cb2a97c810b11bcb5e
6b/d2e279447bd40bd32b1a438dfd52a6fe2cf14b
6c/131adc529e2d3a59b7034ced7f99f169598411
6c/616feca94f10bf561251a17c16b7db4b1dbdde
6c/7461a7db47fab144addf95b814379832f4230c
6d/6c8808dfa5be2487402591dded1ad67d908a85
70/3dc5647be0fa24abf8ac8d5e9faed118ea31e6
70/e91c0fd3c8a7c524c051b8e8531c8286523915
72/80e9c59bbfcf7288d0df9636df54527880ee79
73/939a765953cbb48cb8cb1df6ccd062919eded1
74/c28b460bc1f4fc488ae27c0c767c90088ddbcb
74/deae17ac1eecf64f405e05e8e14e0dd6b30543
75/331eaadf68c823f6bc36873b625be470fdb9da
75/337f6597d6a984ce72b370db7ac08b11115954
76/1dedb54cfa4a530d2a8b6f0108b3630536d51c
79/64a617c4a2d1bb45850b48f774fc57b28fea5b
7a/0703d54958925e09013e04bd35cd19a078a90b
7a/a80f07beae9a2f0b8ccd703c32de6744fd051e
7b/21836a584eb1ee8ffecafa2d2ba02109ea2273
7d/815ea015cd551ab5de80879760defb47acea6c
7e/41915dad67d1585d33b56abf2c129432fcf426
7f/78a61938b36a24fd4431a12b22e3dd26702757
81/1322f632d38d635a20a148bb4c5f98b8c31d8c
81/83a1e8450e209464100603f2a9a0b8e574ca43
82/6d4be181ec8e60d819f4ff350dee4e501a4efa
82/85ee71b3bd8ffe7402db5940ebc2da7234a1c4
84/94e16f2929306d0a205b4a9cf34789ec5b52fe
85/94f94aaed77d8365eef9f0ff37e7da9c05d50c
86/700c1d3f3a0a31f2f954bb4188d398af2181db
86/dcde95eebb062f0ccf716c0d3b70614cdb16a6
88/7ac411f4b1bcc710eb561c61d18e3960e817cf
8a/015ae1ae0dac611406357e7e2b7d3b29b51447
8a/2d13657445f6056804c992cd8b46d1f2d9e08e
8a/788640a312a8bbc5bbd1d35b4fedacbcc0c00a
8a/a7d423d5a3e120d4d8c80980791ec2f209f131
8b/36d47cabd9aa85b7a7673e43c603ce6ba76df6
8c/e581e0bef54e004db3bc40b2f1079d24efdb96
8d/7f0f041fa3cb769b4f5f7ab8dea329e031971d
8d/b5bd40cac5f2043a94733d67313e392b5d9dc6
8e/50afaa02fd9bd744f061730cb8eedef4997d5d
8e/c3d3b6b7ee56e23a709f47db60f8561a9698ed
8f/ef91e52599676addb79aba4224c2c0eb8601a3
8f/f04a0672b445210fcb364650d74111c2fd82f5
8f/f5663227734a920cf085f0e0b76d5db14172f4
90/a84eeab5e3ce60421da43a623db6540b688a62
93/28a88723298c70ca14eaaa241613c9574e8b44
93/5152afbc3b4f67bb8d9ccd01b601c89a48e69e
94/1e1bccbf627604ca6af86ad3541dee480aab0e
94/2d87c0b27dd02c55b0112dab49b9be254473d2
94/955c5cd7e5662c6ab40c323ecdfac458c47435
96/3df12cc741f3004f8870a52fc5877bf9ca6013
96/7dd7f09c2f55dfb393c021ab6000a283cf068e
96/939443f19f5d8926e78e906c965b418d4c46d5
96/d5867ce179d5146ed9163e8eba2acabab83122
97/4217f2644a6e6fe401523c4f459f7c3689f9dd
99/decb49e0f56074881831727b906117a326be85
99/f6460ce4758ef60eff7abf0366f7bbfc9a8206
9a/492e74e1d2afda3d4043b8b9968a29c3c13bcc
9b/f30d1676260b8fc8bf519a4af4bc628402e95a
9e/4729bfc0f6b9b5aee0d630bafc299a19fdedf7
9e/aacc50711e24a8d7fb5734444338752cc979a5
9e/ca7d34b36ad5bfcd80ff2ac0b0b9a8fae850c6
9e/f8c372f29f8131739dc8eeab08f4323c54c47a
a2/0d16b51cc9287469c4a2f246acb5f0c21fc098
a2/16dcf6b46f5260b6cfff5721847e010c681e40
a3/60d5a1639d70627543138385781dbee95812c8
a4/d7fcdbcbac2799f0e87a5654df1e4c12345282
a6/f7090037e529277612903dde135889721b8d24
a7/01072f88f0fec15902916cbce38f3549cac0e6
a7/94f10e293f1434fe75766203a47d7e3d4d8c1d
a7/b062b1589ea7e3385124521c2d4751b44b0a4b
a8/60edaf1326a590c32dd4ddf4ea754b8ef5be34
ab/2db5d6e0a134ba2693c7cb74d0f41a95dbf5f3
ac/11791a26f4a82c2d1e2b068c5d9be6564aa2d1
ad/788402e4b81bd4f0fc8d3beba876ac30f2e801
ad/b50ff206b638bb35775e4d8134314a4b669ee0
ae/6bddbb17144c925e1dd30b156fd014e4a5af5e
af/e58fc3dc97f83b97fc5cc4c0bcdc8a2923a536
b3/5c8895207c15e1d8d64ade08db059efd46d634
b3/a6e1262d902a183b6810d77969091aeaa8605c
b4/0c02d0c9d21ad75a00143d3eecb1aae1683c25
b4/a7e9c293e3b1160418b9c2652bdcd028e75742
b8/03a8226968f1f155ebabff1429026ba58ecf94
ba/000ce7dfaa53436a12fcb6f32cb730bc999c58
ba/c54e6b25f59ad97e0be4e6fcda6e53dca6607d
ba/e7d71c1c40d6670a1dfc290c7aba2deea204b6
bb/78195e8b2beb0c006980fb5c6e7e2641524167
bc/4c742dc1b8d1f09af2c510b3dfd730a99e6a8c
bf/a45c5b38c41145cb203209f5bc3dc16599a5e3
c1/06288c0595c7f2acb761e8fcdb39dd3fec3b6f
c1/a639c2cd71f92376aba8b0cdfb7eb42fff1f54
c1/c44c75783ebaad6ce903072e5b14af8f444bd8
c2/1b7a79d2b2746f946b0f5be42fd3e3b59d4544
c2/5b912bd08de3cefe1a673f2f2ca3016d1c1258
c2/9802df7ad706dff5dc666219b1b15e53db20fb
c3/348a7184dbff866f4c5f2f9a82deaa6f93763b
c3/bce4b541feff853989c57fd2dc42c9f99e5f21
c5/b7b50e501d98c810248b15cad01e4f8c3d00d8
c6/1ad84c67d08df0fd04c00b62de24091c9b7383
c7/2685d485e402e73f8cd1cae86797c8eecc8d20
c8/7dbe3c22f24fdf0e49cfaa43508cd524c494f0
c9/3aa29c5e69c1f8c67d2b33f0b5a330d1788526
ca/d27fba7ca666bbd050e21373ad07c0a71b10bc
cd/6aef36b96ac7dbbd94a30646d2cfe45ee8c620
ce/5e3a94a1b9a8e2bb3ea69bc6276ff80b753db3
cf/056ec152b13f4a4eafa61f1499b9beaec3f2c6
cf/b2d40d0416c7b0b60db8199e1b79f640093f72
cf/f68c1b7ed135ab19f2b95c318dc6357ddfdaa2
d0/a377c848e3a37146acd4a8a9b891a5152a9d48
d1/4356539993fb4c70ff4f4deb91eb9097740832
d1/46fd69423d2f3b505d145e67afe5aca02dfe09
d1/7af66ed98bd2bd2e18daa94c6689773993770c
d1/9a07455999d2ab16493ec101e0dbc825206007
d1/b856326cd5454fac386a758ed8c8918f66ba26
d2/5789d47eb4c16b85bf9e39d9d2369a0d855d92
d2/9e6b7e73240371022068cdec11d2d45cc0fc1a
d2/df6c6b7335d4a71baa92177cb78cb13a71bd6c
d3/07d48abf7d014f2adf792ab48e95dd77b3fd66
d4/a19a929357505d72d64fc595a543b2215c39d4
d5/6359cf0df8b4541ccbcad8e0c0a44f822eccf7
d6/1ac6b65471750febac7d69bca2475ad7f39617
d6/1f3c9d16964b53d020e8c21f9ecf7d791fd314
d6/88dc5b7b307160fe01c92bc80fd608bafa923f
d6/e2c3490a50f68c0599b1bfad824631648bfe57
d7/3e59672de81d623318c96702bafe79ca3b01b9
d7/5fa8b23e1610b8f3a1ab1d43e4e6bbe9848d99
d7/944f2f885b1e976e1fd1c0b30b6c172bb52466
d8/425743f77600e4165b653f22ae6fd38027d2b4
d8/5974bb6248f39e51abd6d00737edd6256ee103
da/865c12818c8ef15fc031f832d4399997476a64
db/c93987a2f41d29e7d9ce170c4a66f31ba21a2b
dd/336f1f082af04276827925fc2ad27560e584f4
dd/a5e2303dc0efb1ce21091ac9609ce05f95ca11
dd/f7332ecf611c9ea9b21b96c61b9508c8630258
e0/2dcc2a7fc0426363d2380175ca08cd564bfa1e
e0/59ccd2bf35dbc599e5ce5d39674d926445fc3e
e0/851358fb6b4703f23d74ef964bc4491bec7ab9
e0/9816883b166284284a2848821c7787a74b8170
e2/09a0d469e26a06ce87bb3bbc3429a911e94879
e2/7052bb2c8bb2fd16e0d235c24ca5aad3270e38
e3/640f4f8c0e046c3cd59acdd41e9fbbee959579
e5/4161d6eb21566f231627f845a14c312482ed8a
e5/ce71a5e89216984d0334e19f0b86ee734b2419
e6/405b88cddb9dfa524a7372b58e615bf4cdc730
e6/83dd479d771604c993c307404be2aa9ac45b7d
e7/f1a6cd9114a0ef87ba8fb5e0ff89d05796e059
e9/4fa527e4420309ff4e420897749f95cb552444
e9/cc8b7606e0f912773c1c6aa425319858643ae1
ea/c6e96d764b0c25841dcea3cf4f77b7f889f215
eb/11d8290f638dc8b3b4da8b4a56bb7f5192d80c
eb/91b96510d8485576da96507503e779dece1777
eb/ac41b793d2de79fc57bf0e2215785122c6fbfb
eb/f639d1f0d2f8350a8f8efe5fce50f9387d900e
ec/11fc9e3653f03f1c82ab32ceca3fe90c89a169
ec/55ada1019c2cd250bec8af82e999356d32c713
ee/79ede3b931d2796f1d48176d4859b4dde8add5
ee/e7846fd37a3b6a89d1248e46c9bbc770bfea28
ef/004cfa88883bb87e030b6196934dd90e3548d2
ef/3d66358c62d9f97f72b96ea6b9848414fa8101
ef/8596ac1ab699d85f0de0a3f9be55b2c9876078
ef/cec8d750faa2610959fc2fb4bfd8fc095031ef
ef/f8361a8dab5eb9b5532706575896f3953c3da8
f0/ad20627099424af1d5c762cc2e6975fedc4325
f1/d588e48db9e3d4239673d5030b47b08f849eea
f3/d4332f46fb8d6a96f6cace0fe55fd3a7062258
f3/e3510e3dc4a81d486bd077cb68e2dbb843553e
f4/8cff0f2465f3ea3ad67d6a477c9dafe09b971a
f4/b273648f727cd5f0f92bd3c5cdd67cfed10892
f4/f9a1dc653674c0f7c877dda961925b1515e053
f5/4ef3b60b96982e057642bfcff04ed29caf1207
f5/bf3719d5450931e3979d1b9b140618fe042e22
f7/1f7801a7ff5b40d6e346cd7ddeb492d1d83224
f8/18a85408d9343660a7403290cd483de65f28fe
f8/469687aceb346b06adb42f065dfd586013636d
f8/b4f860379fcc1e6256494d4931ff46ea5852de
f8/fea46bf5bb6034aa77d9c8c8c55953bd694594
fa/37685cddf33cbf37404cb5314ea362557da4c5
fa/e1e08aeadada773d1eb10851e985c808cdf655
fb/209c09b61273835f23b39ce0d07171ab872311
fb/480ccedc5dd98024c22a41e717fcb0ae7fca67
fe/4314bf42a6930ab23ad01b86ba887257ccb576
fe/9977c6f7294face7e7987f2c53bd016d035089
ok 24 - notes tree still has fanout after merge (m)
# passed all 24 test(s)
1..24
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3412-rebase-root.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3412-rebase-root/.git/
expecting success of 3412.1 'prepare repository':
test_commit 1 A &&
test_commit 2 A &&
git symbolic-ref HEAD refs/heads/other &&
rm .git/index &&
test_commit 3 B &&
test_commit 1b A 1 &&
test_commit 4 B
[main (root-commit) c746ea0] 1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 A
[main 46611ad] 2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[other (root-commit) 2c64091] 3
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 B
[other 1c4476a] 1b
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 A
[other 41e7797] 4
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 1 - prepare repository
expecting success of 3412.2 'rebase --root fails with too many args':
git checkout -B fail other &&
test_must_fail git rebase --onto main --root fail fail
Switched to a new branch 'fail'
usage: git rebase [-i] [options] [--exec <cmd>] [--onto <newbase> | --keep-base] [<upstream> [<branch>]]
or: git rebase [-i] [options] [--exec <cmd>] [--onto <newbase>] --root [<branch>]
or: git rebase --continue | --abort | --skip | --edit-todo
--onto <revision> rebase onto given branch instead of upstream
--keep-base use the merge-base of upstream and branch as the current base
--no-verify allow pre-rebase hook to run
-q, --quiet be quiet. implies --no-stat
-v, --verbose display a diffstat of what changed upstream
-n, --no-stat do not show diffstat of what changed upstream
--signoff add a Signed-off-by trailer to each commit
--committer-date-is-author-date
make committer date match author date
--reset-author-date ignore author date and use current date
-C <n> passed to 'git apply'
--ignore-whitespace ignore changes in whitespace
--whitespace <action> passed to 'git apply'
-f, --force-rebase cherry-pick all commits, even if unchanged
--no-ff cherry-pick all commits, even if unchanged
--continue continue
--skip skip current patch and continue
--abort abort and check out the original branch
--quit abort but keep HEAD where it is
--edit-todo edit the todo list during an interactive rebase
--show-current-patch show the patch file being applied or merged
--apply use apply strategies to rebase
-m, --merge use merging strategies to rebase
-i, --interactive let the user edit the list of commits to rebase
--rerere-autoupdate update the index with reused conflict resolution if possible
--empty <{drop,keep,ask}>
how to handle commits that become empty
--autosquash move commits that begin with squash!/fixup! under -i
--update-refs update branches that point to commits that are being rebased
-S, --gpg-sign[=<key-id>]
GPG-sign commits
--autostash automatically stash/stash pop before and after
-x, --exec <exec> add exec lines after each commit of the editable list
-r, --rebase-merges[=<mode>]
try to rebase merges instead of skipping them
--fork-point use 'merge-base --fork-point' to refine upstream
-s, --strategy <strategy>
use the given merge strategy
-X, --strategy-option <option>
pass the argument through to the merge strategy
--root rebase all reachable commits up to the root(s)
--reschedule-failed-exec
automatically re-schedule any `exec` that fails
--reapply-cherry-picks
apply all changes, even those already present upstream
ok 2 - rebase --root fails with too many args
expecting success of 3412.3 'setup pre-rebase hook':
test_hook --setup pre-rebase <<-\EOF
echo "$1,$2" >.git/PRE-REBASE-INPUT
EOF
ok 3 - setup pre-rebase hook
expecting success of 3412.4 'rebase --root --onto <newbase>':
git checkout -b work other &&
git rebase --root --onto main &&
git log --pretty=tformat:"%s" > rebased &&
test_cmp expect rebased
Switched to a new branch 'work'
warning: skipped previously applied commit 1c4476a
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/work.
ok 4 - rebase --root --onto <newbase>
expecting success of 3412.5 'pre-rebase got correct input (1)':
test "z$(cat .git/PRE-REBASE-INPUT)" = z--root,
ok 5 - pre-rebase got correct input (1)
expecting success of 3412.6 'rebase --root --onto <newbase> <branch>':
git branch work2 other &&
git rebase --root --onto main work2 &&
git log --pretty=tformat:"%s" > rebased2 &&
test_cmp expect rebased2
warning: skipped previously applied commit 1c4476a
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/work2.
ok 6 - rebase --root --onto <newbase> <branch>
expecting success of 3412.7 'pre-rebase got correct input (2)':
test "z$(cat .git/PRE-REBASE-INPUT)" = z--root,work2
ok 7 - pre-rebase got correct input (2)
expecting success of 3412.8 'rebase -i --root --onto <newbase>':
git checkout -b work3 other &&
git rebase -i --root --onto main &&
git log --pretty=tformat:"%s" > rebased3 &&
test_cmp expect rebased3
Switched to a new branch 'work3'
warning: skipped previously applied commit 1c4476a
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/work3.
ok 8 - rebase -i --root --onto <newbase>
expecting success of 3412.9 'pre-rebase got correct input (3)':
test "z$(cat .git/PRE-REBASE-INPUT)" = z--root,
ok 9 - pre-rebase got correct input (3)
expecting success of 3412.10 'rebase -i --root --onto <newbase> <branch>':
git branch work4 other &&
git rebase -i --root --onto main work4 &&
git log --pretty=tformat:"%s" > rebased4 &&
test_cmp expect rebased4
warning: skipped previously applied commit 1c4476a
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/work4.
ok 10 - rebase -i --root --onto <newbase> <branch>
expecting success of 3412.11 'pre-rebase got correct input (4)':
test "z$(cat .git/PRE-REBASE-INPUT)" = z--root,work4
ok 11 - pre-rebase got correct input (4)
expecting success of 3412.12 'set up merge history':
git checkout other^ &&
git checkout -b side &&
test_commit 5 C &&
git checkout other &&
git merge side
Note: switching to 'other^'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 1c4476a 1b
Switched to a new branch 'side'
[side 0c9a4e9] 5
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 C
Switched to branch 'other'
Merge made by the 'ort' strategy.
C | 1 +
1 file changed, 1 insertion(+)
create mode 100644 C
ok 12 - set up merge history
expecting success of 3412.13 'set up second root and merge':
git symbolic-ref HEAD refs/heads/third &&
rm .git/index &&
rm A B C &&
test_commit 6 D &&
git checkout other &&
git merge --allow-unrelated-histories third
[third (root-commit) 00ac2af] 6
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 D
Switched to branch 'other'
Merge made by the 'ort' strategy.
D | 1 +
1 file changed, 1 insertion(+)
create mode 100644 D
ok 13 - set up second root and merge
expecting success of 3412.14 'setup pre-rebase hook that fails':
test_hook --setup --clobber pre-rebase <<-\EOF
false
EOF
ok 14 - setup pre-rebase hook that fails
expecting success of 3412.15 'pre-rebase hook stops rebase':
git checkout -b stops1 other &&
test_must_fail git rebase --root --onto main &&
test "z$(git symbolic-ref HEAD)" = zrefs/heads/stops1 &&
test 0 = $(git rev-list other...stops1 | wc -l)
Switched to a new branch 'stops1'
fatal: The pre-rebase hook refused to rebase.
ok 15 - pre-rebase hook stops rebase
expecting success of 3412.16 'pre-rebase hook stops rebase -i':
git checkout -b stops2 other &&
test_must_fail git rebase --root --onto main &&
test "z$(git symbolic-ref HEAD)" = zrefs/heads/stops2 &&
test 0 = $(git rev-list other...stops2 | wc -l)
Switched to a new branch 'stops2'
fatal: The pre-rebase hook refused to rebase.
ok 16 - pre-rebase hook stops rebase -i
expecting success of 3412.17 'remove pre-rebase hook':
rm -f .git/hooks/pre-rebase
ok 17 - remove pre-rebase hook
expecting success of 3412.18 'set up a conflict':
git checkout main &&
echo conflict > B &&
git add B &&
git commit -m conflict
Switched to branch 'main'
[main f80eebe] conflict
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 B
ok 18 - set up a conflict
expecting success of 3412.19 'rebase --root with conflict (first part)':
git checkout -b conflict1 other &&
test_must_fail git rebase --root --onto main &&
git ls-files -u | grep "B$"
Switched to a new branch 'conflict1'
warning: skipped previously applied commit 1c4476a
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Rebasing (1/4)
Auto-merging B
CONFLICT (add/add): Merge conflict in B
error: could not apply 2c64091... 3
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 2c64091... 3
100644 9b1719f5cf069568785080a0bbabbe7c377e22ae 2 B
100644 00750edc07d6415dcc07ae0351e9397b0222b7ba 3 B
ok 19 - rebase --root with conflict (first part)
expecting success of 3412.20 'fix the conflict':
echo 3 > B &&
git add B
ok 20 - fix the conflict
expecting success of 3412.21 'rebase --root with conflict (second part)':
git rebase --continue &&
git log --pretty=tformat:"%s" > conflict1 &&
test_cmp expect-conflict conflict1
[detached HEAD 308ae33] 3
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Rebasing (2/4)
Rebasing (3/4)
Rebasing (4/4)
Successfully rebased and updated refs/heads/conflict1.
ok 21 - rebase --root with conflict (second part)
expecting success of 3412.22 'rebase -i --root with conflict (first part)':
git checkout -b conflict2 other &&
test_must_fail git rebase -i --root --onto main &&
git ls-files -u | grep "B$"
Switched to a new branch 'conflict2'
warning: skipped previously applied commit 1c4476a
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Rebasing (1/4)
Auto-merging B
CONFLICT (add/add): Merge conflict in B
error: could not apply 2c64091... 3
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 2c64091... 3
100644 9b1719f5cf069568785080a0bbabbe7c377e22ae 2 B
100644 00750edc07d6415dcc07ae0351e9397b0222b7ba 3 B
ok 22 - rebase -i --root with conflict (first part)
expecting success of 3412.23 'fix the conflict':
echo 3 > B &&
git add B
ok 23 - fix the conflict
expecting success of 3412.24 'rebase -i --root with conflict (second part)':
git rebase --continue &&
git log --pretty=tformat:"%s" > conflict2 &&
test_cmp expect-conflict conflict2
[detached HEAD 308ae33] 3
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Rebasing (2/4)
Rebasing (3/4)
Rebasing (4/4)
Successfully rebased and updated refs/heads/conflict2.
ok 24 - rebase -i --root with conflict (second part)
expecting success of 3412.25 'fix the conflict':
echo 3 > B &&
git add B
ok 25 - fix the conflict
# passed all 25 test(s)
1..25
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3413-rebase-hook.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3413-rebase-hook/.git/
expecting success of 3413.1 'setup':
echo hello >file &&
git add file &&
test_tick &&
git commit -m initial &&
echo goodbye >file &&
git add file &&
test_tick &&
git commit -m second &&
git checkout -b side HEAD^ &&
echo world >git &&
git add git &&
test_tick &&
git commit -m side &&
git checkout main &&
git log --pretty=oneline --abbrev-commit --graph --all &&
git branch test side
[main (root-commit) 6637599] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
[main 20a11a4] second
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to a new branch 'side'
[side c847452] side
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 git
Switched to branch 'main'
* c847452 side
| * 20a11a4 second
|/
* 6637599 initial
ok 1 - setup
expecting success of 3413.2 'rebase':
git checkout test &&
git reset --hard side &&
git rebase main &&
test "z$(cat git)" = zworld
Switched to branch 'test'
HEAD is now at c847452 side
Rebasing (1/1)
Successfully rebased and updated refs/heads/test.
ok 2 - rebase
expecting success of 3413.3 'rebase -i':
git checkout test &&
git reset --hard side &&
EDITOR=true git rebase -i main &&
test "z$(cat git)" = zworld
Already on 'test'
HEAD is now at c847452 side
Rebasing (1/1)
Successfully rebased and updated refs/heads/test.
ok 3 - rebase -i
expecting success of 3413.4 'setup pre-rebase hook':
test_hook --setup pre-rebase <<-\EOF
echo "$1,$2" >.git/PRE-REBASE-INPUT
EOF
ok 4 - setup pre-rebase hook
expecting success of 3413.5 'pre-rebase hook gets correct input (1)':
git checkout test &&
git reset --hard side &&
git rebase main &&
test "z$(cat git)" = zworld &&
test "z$(cat .git/PRE-REBASE-INPUT)" = zmain,
Already on 'test'
HEAD is now at c847452 side
Rebasing (1/1)
Successfully rebased and updated refs/heads/test.
ok 5 - pre-rebase hook gets correct input (1)
expecting success of 3413.6 'pre-rebase hook gets correct input (2)':
git checkout test &&
git reset --hard side &&
git rebase main test &&
test "z$(cat git)" = zworld &&
test "z$(cat .git/PRE-REBASE-INPUT)" = zmain,test
Already on 'test'
HEAD is now at c847452 side
Rebasing (1/1)
Successfully rebased and updated refs/heads/test.
ok 6 - pre-rebase hook gets correct input (2)
expecting success of 3413.7 'pre-rebase hook gets correct input (3)':
git checkout test &&
git reset --hard side &&
git checkout main &&
git rebase main test &&
test "z$(cat git)" = zworld &&
test "z$(cat .git/PRE-REBASE-INPUT)" = zmain,test
Already on 'test'
HEAD is now at c847452 side
Switched to branch 'main'
Rebasing (1/1)
Successfully rebased and updated refs/heads/test.
ok 7 - pre-rebase hook gets correct input (3)
expecting success of 3413.8 'pre-rebase hook gets correct input (4)':
git checkout test &&
git reset --hard side &&
EDITOR=true git rebase -i main &&
test "z$(cat git)" = zworld &&
test "z$(cat .git/PRE-REBASE-INPUT)" = zmain,
Already on 'test'
HEAD is now at c847452 side
Rebasing (1/1)
Successfully rebased and updated refs/heads/test.
ok 8 - pre-rebase hook gets correct input (4)
expecting success of 3413.9 'pre-rebase hook gets correct input (5)':
git checkout test &&
git reset --hard side &&
EDITOR=true git rebase -i main test &&
test "z$(cat git)" = zworld &&
test "z$(cat .git/PRE-REBASE-INPUT)" = zmain,test
Already on 'test'
HEAD is now at c847452 side
Rebasing (1/1)
Successfully rebased and updated refs/heads/test.
ok 9 - pre-rebase hook gets correct input (5)
expecting success of 3413.10 'pre-rebase hook gets correct input (6)':
git checkout test &&
git reset --hard side &&
git checkout main &&
EDITOR=true git rebase -i main test &&
test "z$(cat git)" = zworld &&
test "z$(cat .git/PRE-REBASE-INPUT)" = zmain,test
Already on 'test'
HEAD is now at c847452 side
Switched to branch 'main'
Rebasing (1/1)
Successfully rebased and updated refs/heads/test.
ok 10 - pre-rebase hook gets correct input (6)
expecting success of 3413.11 'setup pre-rebase hook that fails':
test_hook --setup --clobber pre-rebase <<-\EOF
false
EOF
ok 11 - setup pre-rebase hook that fails
expecting success of 3413.12 'pre-rebase hook stops rebase (1)':
git checkout test &&
git reset --hard side &&
test_must_fail git rebase main &&
test "z$(git symbolic-ref HEAD)" = zrefs/heads/test &&
test 0 = $(git rev-list HEAD...side | wc -l)
Already on 'test'
HEAD is now at c847452 side
fatal: The pre-rebase hook refused to rebase.
ok 12 - pre-rebase hook stops rebase (1)
expecting success of 3413.13 'pre-rebase hook stops rebase (2)':
git checkout test &&
git reset --hard side &&
test_must_fail env EDITOR=: git rebase -i main &&
test "z$(git symbolic-ref HEAD)" = zrefs/heads/test &&
test 0 = $(git rev-list HEAD...side | wc -l)
Already on 'test'
HEAD is now at c847452 side
fatal: The pre-rebase hook refused to rebase.
ok 13 - pre-rebase hook stops rebase (2)
expecting success of 3413.14 'rebase --no-verify overrides pre-rebase (1)':
git checkout test &&
git reset --hard side &&
git rebase --no-verify main &&
test "z$(git symbolic-ref HEAD)" = zrefs/heads/test &&
test "z$(cat git)" = zworld
Already on 'test'
HEAD is now at c847452 side
Rebasing (1/1)
Successfully rebased and updated refs/heads/test.
ok 14 - rebase --no-verify overrides pre-rebase (1)
expecting success of 3413.15 'rebase --no-verify overrides pre-rebase (2)':
git checkout test &&
git reset --hard side &&
EDITOR=true git rebase --no-verify -i main &&
test "z$(git symbolic-ref HEAD)" = zrefs/heads/test &&
test "z$(cat git)" = zworld
Already on 'test'
HEAD is now at c847452 side
Rebasing (1/1)
Successfully rebased and updated refs/heads/test.
ok 15 - rebase --no-verify overrides pre-rebase (2)
# passed all 15 test(s)
1..15
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3416-rebase-onto-threedots.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3416-rebase-onto-threedots/.git/
expecting success of 3416.1 'setup':
test_commit A &&
test_commit B &&
git branch side &&
test_commit C &&
git branch topic &&
git checkout side &&
test_commit H &&
git checkout main &&
test_tick &&
git merge H &&
git tag D &&
test_commit E &&
git checkout topic &&
test_commit F &&
test_commit G &&
git checkout side &&
test_tick &&
git merge C &&
git tag I &&
test_commit J &&
test_commit K
[main (root-commit) 0ddfaf1] A
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 A.t
[main d9df450] B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 B.t
[main 35a8500] C
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 C.t
Switched to branch 'side'
[side e9f30f6] H
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 H.t
Switched to branch 'main'
Merge made by the 'ort' strategy.
H.t | 1 +
1 file changed, 1 insertion(+)
create mode 100644 H.t
[main 0cd72fb] E
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 E.t
Switched to branch 'topic'
[topic 0fb828b] F
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 F.t
[topic a08c965] G
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 G.t
Switched to branch 'side'
Merge made by the 'ort' strategy.
C.t | 1 +
1 file changed, 1 insertion(+)
create mode 100644 C.t
[side 9eed7bf] J
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 J.t
[side 4d3c411] K
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 K.t
ok 1 - setup
expecting success of 3416.2 'rebase --onto main...topic':
git reset --hard &&
git checkout topic &&
git reset --hard G &&
git rebase --onto main...topic F &&
git rev-parse HEAD^1 >actual &&
git rev-parse C^0 >expect &&
test_cmp expect actual
HEAD is now at 4d3c411 K
Switched to branch 'topic'
HEAD is now at a08c965 G
Rebasing (1/1)
Successfully rebased and updated refs/heads/topic.
ok 2 - rebase --onto main...topic
expecting success of 3416.3 'rebase --onto main...':
git reset --hard &&
git checkout topic &&
git reset --hard G &&
git rebase --onto main... F &&
git rev-parse HEAD^1 >actual &&
git rev-parse C^0 >expect &&
test_cmp expect actual
HEAD is now at f576ef2 G
Already on 'topic'
HEAD is now at a08c965 G
Rebasing (1/1)
Successfully rebased and updated refs/heads/topic.
ok 3 - rebase --onto main...
expecting success of 3416.4 'rebase --onto main...side':
git reset --hard &&
git checkout side &&
git reset --hard K &&
test_must_fail git rebase --onto main...side J
HEAD is now at f576ef2 G
Switched to branch 'side'
HEAD is now at 4d3c411 K
fatal: 'main...side': need exactly one merge base
ok 4 - rebase --onto main...side
expecting success of 3416.5 'rebase -i --onto main...topic':
git reset --hard &&
git checkout topic &&
git reset --hard G &&
(
set_fake_editor &&
EXPECT_COUNT=1 git rebase -i --onto main...topic F
) &&
git rev-parse HEAD^1 >actual &&
git rev-parse C^0 >expect &&
test_cmp expect actual
HEAD is now at 4d3c411 K
Switched to branch 'topic'
HEAD is now at a08c965 G
Rebasing (1/1)
Successfully rebased and updated refs/heads/topic.
ok 5 - rebase -i --onto main...topic
expecting success of 3416.6 'rebase -i --onto main...':
git reset --hard &&
git checkout topic &&
git reset --hard G &&
(
set_fake_editor &&
EXPECT_COUNT=1 git rebase -i --onto main... F
) &&
git rev-parse HEAD^1 >actual &&
git rev-parse C^0 >expect &&
test_cmp expect actual
HEAD is now at f576ef2 G
Already on 'topic'
HEAD is now at a08c965 G
Rebasing (1/1)
Successfully rebased and updated refs/heads/topic.
ok 6 - rebase -i --onto main...
expecting success of 3416.7 'rebase --onto main...side requires a single merge-base':
git reset --hard &&
git checkout side &&
git reset --hard K &&
test_must_fail git rebase -i --onto main...side J 2>err &&
grep "need exactly one merge base" err
HEAD is now at f576ef2 G
Switched to branch 'side'
HEAD is now at 4d3c411 K
fatal: 'main...side': need exactly one merge base
ok 7 - rebase --onto main...side requires a single merge-base
expecting success of 3416.8 'rebase --keep-base --onto incompatible':
test_must_fail git rebase --keep-base --onto main...
fatal: options '--keep-base' and '--onto' cannot be used together
ok 8 - rebase --keep-base --onto incompatible
expecting success of 3416.9 'rebase --keep-base --root incompatible':
test_must_fail git rebase --keep-base --root
fatal: options '--keep-base' and '--root' cannot be used together
ok 9 - rebase --keep-base --root incompatible
expecting success of 3416.10 'rebase --keep-base main from topic':
git reset --hard &&
git checkout topic &&
git reset --hard G &&
git rebase --keep-base main &&
git rev-parse C >base.expect &&
git merge-base main HEAD >base.actual &&
test_cmp base.expect base.actual &&
git rev-parse HEAD~2 >actual &&
git rev-parse C^0 >expect &&
test_cmp expect actual
HEAD is now at 4d3c411 K
Switched to branch 'topic'
HEAD is now at a08c965 G
Current branch topic is up to date.
ok 10 - rebase --keep-base main from topic
expecting success of 3416.11 'rebase --keep-base main topic from main':
git checkout main &&
git branch -f topic G &&
git rebase --keep-base main topic &&
git rev-parse C >base.expect &&
git merge-base main HEAD >base.actual &&
test_cmp base.expect base.actual &&
git rev-parse HEAD~2 >actual &&
git rev-parse C^0 >expect &&
test_cmp expect actual
Switched to branch 'main'
Current branch topic is up to date.
ok 11 - rebase --keep-base main topic from main
expecting success of 3416.12 'rebase --keep-base main from side':
git reset --hard &&
git checkout side &&
git reset --hard K &&
test_must_fail git rebase --keep-base main
HEAD is now at a08c965 G
Switched to branch 'side'
HEAD is now at 4d3c411 K
fatal: 'main': need exactly one merge base with branch
ok 12 - rebase --keep-base main from side
expecting success of 3416.13 'rebase -i --keep-base main from topic':
git reset --hard &&
git checkout topic &&
git reset --hard G &&
(
set_fake_editor &&
EXPECT_COUNT=2 git rebase -i --keep-base main
) &&
git rev-parse C >base.expect &&
git merge-base main HEAD >base.actual &&
test_cmp base.expect base.actual &&
git rev-parse HEAD~2 >actual &&
git rev-parse C^0 >expect &&
test_cmp expect actual
HEAD is now at 4d3c411 K
Switched to branch 'topic'
HEAD is now at a08c965 G
Successfully rebased and updated refs/heads/topic.
ok 13 - rebase -i --keep-base main from topic
expecting success of 3416.14 'rebase -i --keep-base main topic from main':
git checkout main &&
git branch -f topic G &&
(
set_fake_editor &&
EXPECT_COUNT=2 git rebase -i --keep-base main topic
) &&
git rev-parse C >base.expect &&
git merge-base main HEAD >base.actual &&
test_cmp base.expect base.actual &&
git rev-parse HEAD~2 >actual &&
git rev-parse C^0 >expect &&
test_cmp expect actual
Switched to branch 'main'
Successfully rebased and updated refs/heads/topic.
ok 14 - rebase -i --keep-base main topic from main
expecting success of 3416.15 'rebase --keep-base requires a single merge base':
git reset --hard &&
git checkout side &&
git reset --hard K &&
test_must_fail git rebase -i --keep-base main 2>err &&
grep "need exactly one merge base with branch" err
HEAD is now at a08c965 G
Switched to branch 'side'
HEAD is now at 4d3c411 K
fatal: 'main': need exactly one merge base with branch
ok 15 - rebase --keep-base requires a single merge base
expecting success of 3416.16 'rebase --keep-base keeps cherry picks':
git checkout -f -B main E &&
git cherry-pick F &&
(
set_fake_editor &&
EXPECT_COUNT=2 git rebase -i --keep-base HEAD G
) &&
test_cmp_rev HEAD G
Switched to and reset branch 'main'
[main 3dacdd2] F
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:19:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 F.t
Successfully rebased and updated detached HEAD.
ok 16 - rebase --keep-base keeps cherry picks
expecting success of 3416.17 'rebase --keep-base --no-reapply-cherry-picks':
git checkout -f -B main E &&
git cherry-pick F &&
(
set_fake_editor &&
EXPECT_COUNT=1 git rebase -i --keep-base \
--no-reapply-cherry-picks HEAD G
) &&
test_cmp_rev HEAD^ C
Previous HEAD position was a08c965 G
Switched to and reset branch 'main'
[main 3dacdd2] F
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:19:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 F.t
warning: skipped previously applied commit 0fb828b
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Rebasing (1/1)
Successfully rebased and updated detached HEAD.
ok 17 - rebase --keep-base --no-reapply-cherry-picks
expecting success of 3416.18 '$EDITOR and friends are unchanged':
test_editor_unchanged
ok 18 - $EDITOR and friends are unchanged
# passed all 18 test(s)
1..18
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3417-rebase-whitespace-fix.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3417-rebase-whitespace-fix/.git/
expecting success of 3417.1 'blank line at end of file; extend at end of file':
git commit --allow-empty -m "Initial empty commit" &&
git add file && git commit -m first &&
mv second file &&
git add file && git commit -m second &&
git rebase --whitespace=fix HEAD^^ &&
git diff --exit-code HEAD^:file expect-first &&
test_cmp expect-second file
[master (root-commit) 6c54391] Initial empty commit
Author: A U Thor <author@example.com>
[master e2d0a8f] first
Author: A U Thor <author@example.com>
1 file changed, 4 insertions(+)
create mode 100644 file
[master 14cb724] second
Author: A U Thor <author@example.com>
1 file changed, 7 insertions(+)
First, rewinding head to replay your work on top of it...
Applying: first
Applying: second
ok 1 - blank line at end of file; extend at end of file
expecting success of 3417.2 'two blanks line at end of file; extend at end of file':
cp third file && git add file && git commit -m third &&
git rebase --whitespace=fix HEAD^^ &&
git diff --exit-code HEAD^:file expect-second &&
test_cmp expect-third file
[master c2f1416] third
Author: A U Thor <author@example.com>
1 file changed, 7 insertions(+)
First, rewinding head to replay your work on top of it...
Applying: second
Applying: third
ok 2 - two blanks line at end of file; extend at end of file
expecting success of 3417.3 'same, but do not remove trailing spaces':
git config core.whitespace "-blank-at-eol" &&
git reset --hard HEAD^ &&
cp third file && git add file && git commit -m third &&
git rebase --whitespace=fix HEAD^^ &&
git diff --exit-code HEAD^:file expect-second &&
test_cmp file third
HEAD is now at 0c4819a second
[master c2f1416] third
Author: A U Thor <author@example.com>
1 file changed, 7 insertions(+)
First, rewinding head to replay your work on top of it...
Applying: second
Applying: third
ok 3 - same, but do not remove trailing spaces
expecting success of 3417.4 'at beginning of file':
git config core.whitespace "blank-at-eol" &&
cp beginning file &&
git commit -m beginning file &&
test_write_lines 1 2 3 4 5 >>file &&
git commit -m more file &&
git rebase --whitespace=fix HEAD^^ &&
test_cmp expect-beginning file
[master 5eeec3e] beginning
Author: A U Thor <author@example.com>
1 file changed, 2 insertions(+), 13 deletions(-)
[master b2ce110] more
Author: A U Thor <author@example.com>
1 file changed, 5 insertions(+)
First, rewinding head to replay your work on top of it...
Applying: beginning
Applying: more
ok 4 - at beginning of file
# passed all 4 test(s)
1..4
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3415-rebase-autosquash.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3415-rebase-autosquash/.git/
expecting success of 3415.1 'setup':
echo 0 >file0 &&
git add . &&
test_tick &&
git commit -m "initial commit" &&
echo 0 >file1 &&
echo 2 >file2 &&
git add . &&
test_tick &&
git commit -m "first commit" &&
git tag first-commit &&
echo 3 >file3 &&
git add . &&
test_tick &&
git commit -m "second commit" &&
git tag base
[main (root-commit) d78c915] initial commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file0
[main 244a0fe] first commit
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 file1
create mode 100644 file2
[main f0c2a7e] second commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file3
ok 1 - setup
expecting success of 3415.2 'auto fixup (option)':
test_auto_fixup final-fixup-option --autosquash
HEAD is now at f0c2a7e second commit
[main e17f730] fixup! first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated refs/heads/main.
ok 2 - auto fixup (option)
expecting success of 3415.3 'auto fixup (config)':
git config rebase.autosquash true &&
test_auto_fixup final-fixup-config-true &&
test_auto_fixup ! fixup-config-true-no --no-autosquash &&
git config rebase.autosquash false &&
test_auto_fixup ! final-fixup-config-false
HEAD is now at f0c2a7e second commit
[main f84b6d6] fixup! first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated refs/heads/main.
HEAD is now at f0c2a7e second commit
[main 03041cb] fixup! first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Successfully rebased and updated refs/heads/main.
HEAD is now at f0c2a7e second commit
[main bee11d3] fixup! first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Successfully rebased and updated refs/heads/main.
ok 3 - auto fixup (config)
expecting success of 3415.4 'auto squash (option)':
test_auto_squash final-squash --autosquash
HEAD is now at f0c2a7e second commit
[main 4ca9b0d] squash! first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Rebasing (2/3)
[detached HEAD a9dc0c0] first commit
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
2 files changed, 2 insertions(+)
create mode 100644 file1
create mode 100644 file2
Rebasing (3/3)
Successfully rebased and updated refs/heads/main.
ok 4 - auto squash (option)
expecting success of 3415.5 'auto squash (config)':
git config rebase.autosquash true &&
test_auto_squash final-squash-config-true &&
test_auto_squash ! squash-config-true-no --no-autosquash &&
git config rebase.autosquash false &&
test_auto_squash ! final-squash-config-false
HEAD is now at f0c2a7e second commit
[main 8624afd] squash! first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Rebasing (2/3)
[detached HEAD fdaaec7] first commit
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
2 files changed, 2 insertions(+)
create mode 100644 file1
create mode 100644 file2
Rebasing (3/3)
Successfully rebased and updated refs/heads/main.
HEAD is now at f0c2a7e second commit
[main 8332ea0] squash! first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Successfully rebased and updated refs/heads/main.
HEAD is now at f0c2a7e second commit
[main 6c41d27] squash! first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Successfully rebased and updated refs/heads/main.
ok 5 - auto squash (config)
expecting success of 3415.6 'misspelled auto squash':
git reset --hard base &&
echo 1 >file1 &&
git add -u &&
test_tick &&
git commit -m "squash! forst" &&
git tag final-missquash &&
test_tick &&
git rebase --autosquash -i HEAD^^^ &&
git log --oneline >actual &&
test_line_count = 4 actual &&
git diff --exit-code final-missquash &&
git rev-list final-missquash...HEAD >list &&
test_must_be_empty list
HEAD is now at f0c2a7e second commit
[main bdc406a] squash! forst
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Successfully rebased and updated refs/heads/main.
ok 6 - misspelled auto squash
expecting success of 3415.7 'auto squash that matches 2 commits':
git reset --hard base &&
echo 4 >file4 &&
git add file4 &&
test_tick &&
git commit -m "first new commit" &&
echo 1 >file1 &&
git add -u &&
test_tick &&
git commit -m "squash! first" -m "extra para for first" &&
git tag final-multisquash &&
test_tick &&
git rebase --autosquash -i HEAD~4 &&
git log --oneline >actual &&
test_line_count = 4 actual &&
git diff --exit-code final-multisquash &&
echo 1 >expect &&
git cat-file blob HEAD^^:file1 >actual &&
test_cmp expect actual &&
git cat-file commit HEAD^^ >commit &&
grep first commit >actual &&
test_line_count = 2 actual &&
git cat-file commit HEAD >commit &&
grep first commit >actual &&
test_line_count = 1 actual
HEAD is now at f0c2a7e second commit
[main 671d0de] first new commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file4
[main b63d836] squash! first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Rebasing (2/4)
[detached HEAD 8957d3c] first commit
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
2 files changed, 2 insertions(+)
create mode 100644 file1
create mode 100644 file2
Rebasing (3/4)
Rebasing (4/4)
Successfully rebased and updated refs/heads/main.
ok 7 - auto squash that matches 2 commits
expecting success of 3415.8 'auto squash that matches a commit after the squash':
git reset --hard base &&
echo 1 >file1 &&
git add -u &&
test_tick &&
git commit -m "squash! third" &&
echo 4 >file4 &&
git add file4 &&
test_tick &&
git commit -m "third commit" &&
git tag final-presquash &&
test_tick &&
git rebase --autosquash -i HEAD~4 &&
git log --oneline >actual &&
test_line_count = 5 actual &&
git diff --exit-code final-presquash &&
echo 0 >expect &&
git cat-file blob HEAD^^:file1 >actual &&
test_cmp expect actual &&
echo 1 >expect &&
git cat-file blob HEAD^:file1 >actual &&
test_cmp expect actual &&
git cat-file commit HEAD >commit &&
grep third commit >actual &&
test_line_count = 1 actual &&
git cat-file commit HEAD^ >commit &&
grep third commit >actual &&
test_line_count = 1 actual
HEAD is now at f0c2a7e second commit
[main 3a205cd] squash! third
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[main 76ae28b] third commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file4
Successfully rebased and updated refs/heads/main.
ok 8 - auto squash that matches a commit after the squash
expecting success of 3415.9 'auto squash that matches a sha1':
git reset --hard base &&
echo 1 >file1 &&
git add -u &&
test_tick &&
oid=$(git rev-parse --short HEAD^) &&
git commit -m "squash! $oid" -m "extra para" &&
git tag final-shasquash &&
test_tick &&
git rebase --autosquash -i HEAD^^^ &&
git log --oneline >actual &&
test_line_count = 3 actual &&
git diff --exit-code final-shasquash &&
echo 1 >expect &&
git cat-file blob HEAD^:file1 >actual &&
test_cmp expect actual &&
git cat-file commit HEAD^ >commit &&
! grep "squash" commit &&
grep "^extra para" commit >actual &&
test_line_count = 1 actual
HEAD is now at f0c2a7e second commit
[main ac978ca] squash! 244a0fe
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Rebasing (2/3)
[detached HEAD 8384e84] first commit
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
2 files changed, 2 insertions(+)
create mode 100644 file1
create mode 100644 file2
Rebasing (3/3)
Successfully rebased and updated refs/heads/main.
ok 9 - auto squash that matches a sha1
expecting success of 3415.10 'auto squash that matches longer sha1':
git reset --hard base &&
echo 1 >file1 &&
git add -u &&
test_tick &&
oid=$(git rev-parse --short=11 HEAD^) &&
git commit -m "squash! $oid" -m "extra para" &&
git tag final-longshasquash &&
test_tick &&
git rebase --autosquash -i HEAD^^^ &&
git log --oneline >actual &&
test_line_count = 3 actual &&
git diff --exit-code final-longshasquash &&
echo 1 >expect &&
git cat-file blob HEAD^:file1 >actual &&
test_cmp expect actual &&
git cat-file commit HEAD^ >commit &&
! grep "squash" commit &&
grep "^extra para" commit >actual &&
test_line_count = 1 actual
HEAD is now at f0c2a7e second commit
[main c752805] squash! 244a0fe611d
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Rebasing (2/3)
[detached HEAD 41eda95] first commit
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
2 files changed, 2 insertions(+)
create mode 100644 file1
create mode 100644 file2
Rebasing (3/3)
Successfully rebased and updated refs/heads/main.
ok 10 - auto squash that matches longer sha1
expecting success of 3415.11 'auto squash of fixup commit that matches branch name which points back to fixup commit':
git reset --hard base &&
git commit --allow-empty -m "fixup! self-cycle" &&
git branch self-cycle &&
GIT_SEQUENCE_EDITOR="cat >tmp" git rebase --autosquash -i HEAD^^ &&
sed -ne "/^[^#]/{s/[0-9a-f]\{7,\}/HASH/g;p;}" tmp >actual &&
cat <<-EOF >expect &&
pick HASH second commit
pick HASH fixup! self-cycle # empty
EOF
test_cmp expect actual
HEAD is now at f0c2a7e second commit
[main ddf01ec] fixup! self-cycle
Author: A U Thor <author@example.com>
Successfully rebased and updated refs/heads/main.
ok 11 - auto squash of fixup commit that matches branch name which points back to fixup commit
expecting success of 3415.12 'use commit --fixup':
test_auto_commit_flags fixup 1
HEAD is now at f0c2a7e second commit
[main ea6eb03] fixup! first commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated refs/heads/main.
ok 12 - use commit --fixup
expecting success of 3415.13 'use commit --squash':
test_auto_commit_flags squash 2
HEAD is now at f0c2a7e second commit
[main f47aded] squash! first commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Rebasing (2/3)
[detached HEAD 37ab917] first commit
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
2 files changed, 2 insertions(+)
create mode 100644 file1
create mode 100644 file2
Rebasing (3/3)
Successfully rebased and updated refs/heads/main.
ok 13 - use commit --squash
expecting success of 3415.14 'fixup! fixup!':
test_auto_fixup_fixup fixup fixup
HEAD is now at f0c2a7e second commit
[main 29e8c7e] fixup! first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[main 5ead991] fixup! fixup! first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
error: There was a problem with the editor '"$FAKE_EDITOR"'.
Rebasing (2/4)
Rebasing (3/4)
Rebasing (4/4)
Successfully rebased and updated refs/heads/main.
ok 14 - fixup! fixup!
expecting success of 3415.15 'fixup! squash!':
test_auto_fixup_fixup fixup squash
HEAD is now at f0c2a7e second commit
[main 4e87fff] fixup! first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[main 80022e7] fixup! squash! first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
error: There was a problem with the editor '"$FAKE_EDITOR"'.
Rebasing (2/4)
Rebasing (3/4)
Rebasing (4/4)
Successfully rebased and updated refs/heads/main.
ok 15 - fixup! squash!
expecting success of 3415.16 'squash! squash!':
test_auto_fixup_fixup squash squash
HEAD is now at f0c2a7e second commit
[main f78136a] squash! first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[main 6cda8a5] squash! squash! first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
error: There was a problem with the editor '"$FAKE_EDITOR"'.
Rebasing (2/4)
Rebasing (3/4)
[detached HEAD c2bc347] first commit
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
2 files changed, 2 insertions(+)
create mode 100644 file1
create mode 100644 file2
Rebasing (4/4)
Successfully rebased and updated refs/heads/main.
ok 16 - squash! squash!
expecting success of 3415.17 'squash! fixup!':
test_auto_fixup_fixup squash fixup
HEAD is now at f0c2a7e second commit
[main 1a59862] squash! first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[main 133d461] squash! fixup! first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
error: There was a problem with the editor '"$FAKE_EDITOR"'.
Rebasing (2/4)
Rebasing (3/4)
[detached HEAD 54cdfab] first commit
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
2 files changed, 2 insertions(+)
create mode 100644 file1
create mode 100644 file2
Rebasing (4/4)
Successfully rebased and updated refs/heads/main.
ok 17 - squash! fixup!
expecting success of 3415.18 'autosquash with custom inst format':
git reset --hard base &&
git config --add rebase.instructionFormat "[%an @ %ar] %s" &&
echo 2 >file1 &&
git add -u &&
test_tick &&
oid=$(git rev-parse --short HEAD^) &&
git commit -m "squash! $oid" -m "extra para for first" &&
echo 1 >file1 &&
git add -u &&
test_tick &&
subject=$(git log -n 1 --format=%s HEAD~2) &&
git commit -m "squash! $subject" -m "second extra para for first" &&
git tag final-squash-instFmt &&
test_tick &&
git rebase --autosquash -i HEAD~4 &&
git log --oneline >actual &&
test_line_count = 3 actual &&
git diff --exit-code final-squash-instFmt &&
echo 1 >expect &&
git cat-file blob HEAD^:file1 >actual &&
test_cmp expect actual &&
git cat-file commit HEAD^ >commit &&
! grep "squash" commit &&
grep first commit >actual &&
test_line_count = 3 actual
HEAD is now at f0c2a7e second commit
[main 971af5d] squash! 244a0fe
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[main 362ab58] squash! first commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Rebasing (2/4)
Rebasing (3/4)
[detached HEAD 7af53d8] first commit
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
2 files changed, 2 insertions(+)
create mode 100644 file1
create mode 100644 file2
Rebasing (4/4)
Successfully rebased and updated refs/heads/main.
ok 18 - autosquash with custom inst format
expecting success of 3415.19 'autosquash with empty custom instructionFormat':
git reset --hard base &&
test_commit empty-instructionFormat-test &&
(
set_cat_todo_editor &&
test_must_fail git -c rebase.instructionFormat= \
rebase --autosquash --force-rebase -i HEAD^ >actual &&
git log -1 --format="pick %h %s" >expect &&
test_cmp expect actual
)
HEAD is now at f0c2a7e second commit
[main c73d304] empty-instructionFormat-test
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 empty-instructionFormat-test.t
error: There was a problem with the editor '"$FAKE_EDITOR"'.
ok 19 - autosquash with empty custom instructionFormat
expecting success of 3415.20 'autosquash with multiple empty patches':
test_tick &&
git commit --allow-empty -m "empty" &&
test_tick &&
git commit --allow-empty -m "empty2" &&
test_tick &&
>fixup &&
git add fixup &&
git commit --fixup HEAD^^ &&
(
set_backup_editor &&
GIT_USE_REBASE_HELPER=false \
git rebase -i --force-rebase --autosquash HEAD~4 &&
grep empty2 .git/backup-git-rebase-todo
)
[main f0b00cc] empty
Author: A U Thor <author@example.com>
[main 57d336e] empty2
Author: A U Thor <author@example.com>
[main 214c1c2] fixup! empty-instructionFormat-test
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 fixup
Rebasing (1/4)
Rebasing (2/4)
Rebasing (3/4)
Rebasing (4/4)
Successfully rebased and updated refs/heads/main.
pick 57d336e [A U Thor @ 19 years ago] empty2 # empty
ok 20 - autosquash with multiple empty patches
expecting success of 3415.21 'extra spaces after fixup!':
base=$(git rev-parse HEAD) &&
test_commit to-fixup &&
git commit --allow-empty -m "fixup! to-fixup" &&
git rebase -i --autosquash --keep-empty HEAD~2 &&
parent=$(git rev-parse HEAD^) &&
test $base = $parent
[main 0584c83] to-fixup
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 to-fixup.t
[main 25cc60b] fixup! to-fixup
Author: A U Thor <author@example.com>
Rebasing (2/2)
Successfully rebased and updated refs/heads/main.
ok 21 - extra spaces after fixup!
expecting success of 3415.22 'wrapped original subject':
if test -d .git/rebase-merge; then git rebase --abort; fi &&
base=$(git rev-parse HEAD) &&
echo "wrapped subject" >wrapped &&
git add wrapped &&
test_tick &&
git commit --allow-empty -m "$(printf "To\nfixup")" &&
test_tick &&
git commit --allow-empty -m "fixup! To fixup" &&
git rebase -i --autosquash --keep-empty HEAD~2 &&
parent=$(git rev-parse HEAD^) &&
test $base = $parent
[main 0e6e19d] To fixup
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 wrapped
[main 8874732] fixup! To fixup
Author: A U Thor <author@example.com>
Rebasing (2/2)
Successfully rebased and updated refs/heads/main.
ok 22 - wrapped original subject
expecting success of 3415.23 'abort last squash':
test_when_finished "test_might_fail git rebase --abort" &&
test_when_finished "git checkout main" &&
git checkout -b some-squashes &&
git commit --allow-empty -m first &&
git commit --allow-empty --squash HEAD &&
git commit --allow-empty -m second &&
git commit --allow-empty --squash HEAD &&
test_must_fail git -c core.editor="grep -q ^pick" \
rebase -ki --autosquash HEAD~4 &&
: do not finish the squash, but resolve it manually &&
git commit --allow-empty --amend -m edited-first &&
git rebase --skip &&
git show >actual &&
! grep first actual
Switched to a new branch 'some-squashes'
[some-squashes f124f9c] first
Author: A U Thor <author@example.com>
[some-squashes 1adce10] squash! first
Author: A U Thor <author@example.com>
[some-squashes dbd878b] second
Author: A U Thor <author@example.com>
[some-squashes 57e67c3] squash! second
Author: A U Thor <author@example.com>
Rebasing (2/4)
error: There was a problem with the editor 'grep -q ^pick'.
Please supply the message using either -m or -F option.
Could not apply 1adce10... [A U Thor @ 19 years ago] squash! first # empty
[detached HEAD 7723319] edited-first
Author: A U Thor <author@example.com>
Date: Thu Apr 7 16:09:13 2005 -0700
Rebasing (3/4)
Rebasing (4/4)
[detached HEAD d77d711] second
Author: A U Thor <author@example.com>
Date: Thu Apr 7 16:09:13 2005 -0700
Successfully rebased and updated refs/heads/some-squashes.
Switched to branch 'main'
fatal: No rebase in progress?
ok 23 - abort last squash
expecting success of 3415.24 'fixup a fixup':
echo 0to-fixup >file0 &&
test_tick &&
git commit -m "to-fixup" file0 &&
test_tick &&
git commit --squash HEAD -m X --allow-empty &&
test_tick &&
git commit --squash HEAD^ -m Y --allow-empty &&
test_tick &&
git commit -m "squash! $(git rev-parse HEAD^)" -m Z --allow-empty &&
test_tick &&
git commit -m "squash! $(git rev-parse HEAD^^)" -m W --allow-empty &&
git rebase -ki --autosquash HEAD~5 &&
test XZWY = $(git show | tr -cd W-Z)
[main 8b8914f] to-fixup
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[main d639a09] squash! to-fixup
Author: A U Thor <author@example.com>
[main d15a015] squash! to-fixup
Author: A U Thor <author@example.com>
[main 46ee2c5] squash! d639a0930479ded42c578b382731e0c4be6ca4c3
Author: A U Thor <author@example.com>
[main 2d365fb] squash! d639a0930479ded42c578b382731e0c4be6ca4c3
Author: A U Thor <author@example.com>
Rebasing (2/5)
Rebasing (3/5)
Rebasing (4/5)
Rebasing (5/5)
[detached HEAD fe38ed4] to-fixup
Author: A U Thor <author@example.com>
Date: Thu Apr 7 16:10:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
Successfully rebased and updated refs/heads/main.
ok 24 - fixup a fixup
expecting success of 3415.25 'fixup does not clean up commit message':
oneline="#818" &&
git commit --allow-empty -m "$oneline" &&
git commit --fixup HEAD --allow-empty &&
git -c commit.cleanup=strip rebase -ki --autosquash HEAD~2 &&
test "$oneline" = "$(git show -s --format=%s)"
[main c250b58] #818
Author: A U Thor <author@example.com>
[main b6ca56d] fixup! #818
Author: A U Thor <author@example.com>
Rebasing (2/2)
Successfully rebased and updated refs/heads/main.
ok 25 - fixup does not clean up commit message
# passed all 25 test(s)
1..25
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3419-rebase-patch-id.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3419-rebase-patch-id/.git/
expecting success of 3419.1 'setup':
git commit --allow-empty -m initial &&
git tag root
[main (root-commit) 8b2b4f6] initial
Author: A U Thor <author@example.com>
ok 1 - setup
expecting success of 3419.2 'setup: 500 lines':
rm -f .gitattributes &&
git checkout -q -f main &&
git reset --hard root &&
test_seq 500 >file &&
git add file &&
git commit -q -m initial &&
git branch -f other &&
scramble file &&
git add file &&
git commit -q -m "change big file" &&
git checkout -q other &&
: >newfile &&
git add newfile &&
git commit -q -m "add small file" &&
git cherry-pick main >/dev/null 2>&1 &&
git branch -f squashed main &&
git checkout -q -f squashed &&
git reset -q --soft HEAD~2 &&
git commit -q -m squashed &&
git branch -f mode main &&
git checkout -q -f mode &&
test_chmod +x file &&
git commit -q -a --amend &&
git branch -f modeother other &&
git checkout -q -f modeother &&
test_chmod +x file &&
git commit -q -a --amend
HEAD is now at 8b2b4f6 initial
ok 2 - setup: 500 lines
expecting success of 3419.3 'detect upstream patch':
git checkout -q main^{} &&
scramble file &&
git add file &&
git commit -q -m "change big file again" &&
git checkout -q other^{} &&
git rebase main &&
git rev-list main...HEAD~ >revs &&
test_must_be_empty revs
warning: skipped previously applied commit 463cec6
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Rebasing (1/1)
Successfully rebased and updated detached HEAD.
ok 3 - detect upstream patch
expecting success of 3419.4 'detect upstream patch binary':
echo "file binary" >.gitattributes &&
git checkout -q other^{} &&
git rebase main &&
git rev-list main...HEAD~ >revs &&
test_must_be_empty revs &&
test_when_finished "rm .gitattributes"
warning: skipped previously applied commit 463cec6
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Rebasing (1/1)
Successfully rebased and updated detached HEAD.
ok 4 - detect upstream patch binary
expecting success of 3419.5 'detect upstream patch modechange':
git checkout -q modeother^{} &&
git rebase mode &&
git rev-list mode...HEAD~ >revs &&
test_must_be_empty revs
warning: skipped previously applied commit 471e427
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Rebasing (1/1)
Successfully rebased and updated detached HEAD.
ok 5 - detect upstream patch modechange
expecting success of 3419.6 'do not drop patch':
git checkout -q other^{} &&
test_must_fail git rebase squashed &&
test_when_finished "git rebase --abort"
Rebasing (1/3)
Auto-merging file
CONFLICT (add/add): Merge conflict in file
error: could not apply bb8cb29... initial
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply bb8cb29... initial
ok 6 - do not drop patch
expecting success of 3419.7 'do not drop patch binary':
echo "file binary" >.gitattributes &&
git checkout -q other^{} &&
test_must_fail git rebase squashed &&
test_when_finished "git rebase --abort" &&
test_when_finished "rm .gitattributes"
Rebasing (1/3)
warning: Cannot merge binary files: file (HEAD vs. bb8cb29 (initial))
Auto-merging file
CONFLICT (add/add): Merge conflict in file
error: could not apply bb8cb29... initial
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply bb8cb29... initial
ok 7 - do not drop patch binary
expecting success of 3419.8 'do not drop patch modechange':
git checkout -q modeother^{} &&
git rebase other &&
cat >expected <<-\EOF &&
diff --git a/file b/file
old mode 100644
new mode 100755
EOF
git diff HEAD~ >modediff &&
test_cmp expected modediff
Rebasing (1/1)
Successfully rebased and updated detached HEAD.
ok 8 - do not drop patch modechange
# passed all 8 test(s)
1..8
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3418-rebase-continue.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3418-rebase-continue/.git/
expecting success of 3418.1 'setup':
test_commit "commit-new-file-F1" F1 1 &&
test_commit "commit-new-file-F2" F2 2 &&
git checkout -b topic HEAD^ &&
test_commit "commit-new-file-F2-on-topic-branch" F2 22 &&
git checkout main
[main (root-commit) dac1376] commit-new-file-F1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 F1
[main 953b3db] commit-new-file-F2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 F2
Switched to a new branch 'topic'
[topic 24c5d85] commit-new-file-F2-on-topic-branch
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 F2
Switched to branch 'main'
ok 1 - setup
expecting success of 3418.2 'merge based rebase --continue with works with touched file':
rm -fr .git/rebase-* &&
git reset --hard &&
git checkout main &&
FAKE_LINES="edit 1" git rebase -i HEAD^ &&
test-tool chmtime =-60 F1 &&
git rebase --continue
HEAD is now at 953b3db commit-new-file-F2
Already on 'main'
rebase -i script before editing:
pick 953b3db commit-new-file-F2
rebase -i script after editing:
edit 953b3db commit-new-file-F2
Rebasing (1/1)
Stopped at 953b3db... commit-new-file-F2
You can amend the commit now, with
git commit --amend
Once you are satisfied with your changes, run
git rebase --continue
Successfully rebased and updated refs/heads/main.
ok 2 - merge based rebase --continue with works with touched file
expecting success of 3418.3 'merge based rebase --continue removes .git/MERGE_MSG':
git checkout -f --detach topic &&
test_must_fail git rebase --onto main HEAD^ &&
git read-tree --reset -u HEAD &&
test_path_is_file .git/MERGE_MSG &&
git rebase --continue &&
test_path_is_missing .git/MERGE_MSG
HEAD is now at 24c5d85 commit-new-file-F2-on-topic-branch
Rebasing (1/1)
Auto-merging F2
CONFLICT (add/add): Merge conflict in F2
error: could not apply 24c5d85... commit-new-file-F2-on-topic-branch
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 24c5d85... commit-new-file-F2-on-topic-branch
Successfully rebased and updated detached HEAD.
ok 3 - merge based rebase --continue removes .git/MERGE_MSG
expecting success of 3418.4 'apply based rebase --continue works with touched file':
rm -fr .git/rebase-* &&
git reset --hard &&
git checkout main &&
test_must_fail git rebase --apply --onto main main topic &&
echo "Resolved" >F2 &&
git add F2 &&
test-tool chmtime =-60 F1 &&
git rebase --continue
HEAD is now at 953b3db commit-new-file-F2
Switched to branch 'main'
First, rewinding head to replay your work on top of it...
Applying: commit-new-file-F2-on-topic-branch
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Merging:
953b3db commit-new-file-F2
virtual commit-new-file-F2-on-topic-branch
found 1 common ancestor:
virtual 4b825dc642cb6eb9a060e54bf8d69288fbee4904
CONFLICT (add/add): Merge conflict in F2
Auto-merging F2
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 commit-new-file-F2-on-topic-branch
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
Applying: commit-new-file-F2-on-topic-branch
ok 4 - apply based rebase --continue works with touched file
expecting success of 3418.5 'rebase --continue can not be used with other options':
test_must_fail git rebase -v --continue &&
test_must_fail git rebase --continue -v
usage: git rebase [-i] [options] [--exec <cmd>] [--onto <newbase> | --keep-base] [<upstream> [<branch>]]
or: git rebase [-i] [options] [--exec <cmd>] [--onto <newbase>] --root [<branch>]
or: git rebase --continue | --abort | --skip | --edit-todo
--onto <revision> rebase onto given branch instead of upstream
--keep-base use the merge-base of upstream and branch as the current base
--no-verify allow pre-rebase hook to run
-q, --quiet be quiet. implies --no-stat
-v, --verbose display a diffstat of what changed upstream
-n, --no-stat do not show diffstat of what changed upstream
--signoff add a Signed-off-by trailer to each commit
--committer-date-is-author-date
make committer date match author date
--reset-author-date ignore author date and use current date
-C <n> passed to 'git apply'
--ignore-whitespace ignore changes in whitespace
--whitespace <action> passed to 'git apply'
-f, --force-rebase cherry-pick all commits, even if unchanged
--no-ff cherry-pick all commits, even if unchanged
--continue continue
--skip skip current patch and continue
--abort abort and check out the original branch
--quit abort but keep HEAD where it is
--edit-todo edit the todo list during an interactive rebase
--show-current-patch show the patch file being applied or merged
--apply use apply strategies to rebase
-m, --merge use merging strategies to rebase
-i, --interactive let the user edit the list of commits to rebase
--rerere-autoupdate update the index with reused conflict resolution if possible
--empty <{drop,keep,ask}>
how to handle commits that become empty
--autosquash move commits that begin with squash!/fixup! under -i
--update-refs update branches that point to commits that are being rebased
-S, --gpg-sign[=<key-id>]
GPG-sign commits
--autostash automatically stash/stash pop before and after
-x, --exec <exec> add exec lines after each commit of the editable list
-r, --rebase-merges[=<mode>]
try to rebase merges instead of skipping them
--fork-point use 'merge-base --fork-point' to refine upstream
-s, --strategy <strategy>
use the given merge strategy
-X, --strategy-option <option>
pass the argument through to the merge strategy
--root rebase all reachable commits up to the root(s)
--reschedule-failed-exec
automatically re-schedule any `exec` that fails
--reapply-cherry-picks
apply all changes, even those already present upstream
usage: git rebase [-i] [options] [--exec <cmd>] [--onto <newbase> | --keep-base] [<upstream> [<branch>]]
or: git rebase [-i] [options] [--exec <cmd>] [--onto <newbase>] --root [<branch>]
or: git rebase --continue | --abort | --skip | --edit-todo
--onto <revision> rebase onto given branch instead of upstream
--keep-base use the merge-base of upstream and branch as the current base
--no-verify allow pre-rebase hook to run
-q, --quiet be quiet. implies --no-stat
-v, --verbose display a diffstat of what changed upstream
-n, --no-stat do not show diffstat of what changed upstream
--signoff add a Signed-off-by trailer to each commit
--committer-date-is-author-date
make committer date match author date
--reset-author-date ignore author date and use current date
-C <n> passed to 'git apply'
--ignore-whitespace ignore changes in whitespace
--whitespace <action> passed to 'git apply'
-f, --force-rebase cherry-pick all commits, even if unchanged
--no-ff cherry-pick all commits, even if unchanged
--continue continue
--skip skip current patch and continue
--abort abort and check out the original branch
--quit abort but keep HEAD where it is
--edit-todo edit the todo list during an interactive rebase
--show-current-patch show the patch file being applied or merged
--apply use apply strategies to rebase
-m, --merge use merging strategies to rebase
-i, --interactive let the user edit the list of commits to rebase
--rerere-autoupdate update the index with reused conflict resolution if possible
--empty <{drop,keep,ask}>
how to handle commits that become empty
--autosquash move commits that begin with squash!/fixup! under -i
--update-refs update branches that point to commits that are being rebased
-S, --gpg-sign[=<key-id>]
GPG-sign commits
--autostash automatically stash/stash pop before and after
-x, --exec <exec> add exec lines after each commit of the editable list
-r, --rebase-merges[=<mode>]
try to rebase merges instead of skipping them
--fork-point use 'merge-base --fork-point' to refine upstream
-s, --strategy <strategy>
use the given merge strategy
-X, --strategy-option <option>
pass the argument through to the merge strategy
--root rebase all reachable commits up to the root(s)
--reschedule-failed-exec
automatically re-schedule any `exec` that fails
--reapply-cherry-picks
apply all changes, even those already present upstream
ok 5 - rebase --continue can not be used with other options
expecting success of 3418.6 'rebase --continue remembers merge strategy and options':
rm -fr .git/rebase-* &&
git reset --hard commit-new-file-F2-on-topic-branch &&
test_commit "commit-new-file-F3-on-topic-branch" F3 32 &&
test_when_finished "rm -fr test-bin" &&
mkdir test-bin &&
write_script test-bin/git-merge-funny <<-\EOF &&
printf "[%s]\n" $# "$1" "$2" "$3" "$5" >actual
shift 3 &&
exec git merge-recursive "$@"
EOF
cat >expect <<-\EOF &&
[7]
[--option=arg with space]
[--op"tion\]
[--new
line ]
[--]
EOF
rm -f actual &&
(
PATH=./test-bin:$PATH &&
test_must_fail git rebase -s funny -X"option=arg with space" \
-Xop\"tion\\ -X"new${LF}line " main topic
) &&
test_cmp expect actual &&
rm actual &&
echo "Resolved" >F2 &&
git add F2 &&
(
PATH=./test-bin:$PATH &&
git rebase --continue
) &&
test_cmp expect actual
HEAD is now at 24c5d85 commit-new-file-F2-on-topic-branch
[topic 39de9a1] commit-new-file-F3-on-topic-branch
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 F3
Rebasing (1/2)
Merging 953b3db31f61f8fc41bbcb85a1c76eadc748cf75 with 24c5d85f362d6c25d316c040586afc3e0548165a
Merging:
953b3db commit-new-file-F2
24c5d85 commit-new-file-F2-on-topic-branch
found 1 common ancestor:
dac1376 commit-new-file-F1
CONFLICT (add/add): Merge conflict in F2
Auto-merging F2
error: could not apply 24c5d85... commit-new-file-F2-on-topic-branch
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 24c5d85... commit-new-file-F2-on-topic-branch
[detached HEAD 6396a51] commit-new-file-F2-on-topic-branch
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Rebasing (2/2)
Merging 6396a513d945e21e13de4128c5f8af13443529d5 with 39de9a17650c52c96f2d6848fba0d846df88a78f
Merging:
6396a51 commit-new-file-F2-on-topic-branch
39de9a1 commit-new-file-F3-on-topic-branch
found 1 common ancestor:
24c5d85 commit-new-file-F2-on-topic-branch
Successfully rebased and updated refs/heads/topic.
ok 6 - rebase --continue remembers merge strategy and options
expecting success of 3418.7 'rebase -r passes merge strategy options correctly':
rm -fr .git/rebase-* &&
git reset --hard commit-new-file-F3-on-topic-branch &&
test_commit merge-theirs &&
git reset --hard HEAD^ &&
test_commit some-other-commit &&
test_tick &&
git merge --no-ff merge-theirs &&
FAKE_LINES="1 3 edit 4 5 7 8 9" git rebase -i -f -r -m \
-s recursive --strategy-option=theirs HEAD~2 &&
test_commit force-change-ours &&
git rebase --continue
HEAD is now at 39de9a1 commit-new-file-F3-on-topic-branch
[topic b1d70bd] merge-theirs
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 merge-theirs.t
HEAD is now at 39de9a1 commit-new-file-F3-on-topic-branch
[topic ffb1279] some-other-commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 some-other-commit.t
Merge made by the 'ort' strategy.
merge-theirs.t | 1 +
1 file changed, 1 insertion(+)
create mode 100644 merge-theirs.t
rebase -i script before editing:
label onto
reset onto
pick b1d70bd merge-theirs
label merge-theirs
reset onto
pick ffb1279 some-other-commit
merge -C bb27065 merge-theirs # Merge tag 'merge-theirs' into topic
rebase -i script after editing:
label onto
reset onto
edit b1d70bd merge-theirs
label merge-theirs
reset onto
pick ffb1279 some-other-commit
merge -C bb27065 merge-theirs # Merge tag 'merge-theirs' into topic
Rebasing (1/7)
Rebasing (2/7)
Rebasing (3/7)
Stopped at b1d70bd... merge-theirs
You can amend the commit now, with
git commit --amend
Once you are satisfied with your changes, run
git rebase --continue
[detached HEAD 6393337] force-change-ours
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 force-change-ours.t
Rebasing (4/7)
Rebasing (5/7)
Rebasing (6/7)
Rebasing (7/7)
Merge made by the 'ort' strategy.
Successfully rebased and updated refs/heads/topic.
ok 7 - rebase -r passes merge strategy options correctly
expecting success of 3418.8 '--skip after failed fixup cleans commit message':
test_when_finished "test_might_fail git rebase --abort" &&
git checkout -b with-conflicting-fixup &&
test_commit wants-fixup &&
test_commit "fixup 1" wants-fixup.t 1 wants-fixup-1 &&
test_commit "fixup 2" wants-fixup.t 2 wants-fixup-2 &&
test_commit "fixup 3" wants-fixup.t 3 wants-fixup-3 &&
test_must_fail env FAKE_LINES="1 fixup 2 squash 4" \
git rebase -i HEAD~4 &&
: now there is a conflict, and comments in the commit message &&
test_commit_message HEAD <<-\EOF &&
# This is a combination of 2 commits.
# This is the 1st commit message:
wants-fixup
# The commit message #2 will be skipped:
# fixup 1
EOF
: skip and continue &&
echo "cp \"\$1\" .git/copy.txt" | write_script copy-editor.sh &&
(test_set_editor "$PWD/copy-editor.sh" && git rebase --skip) &&
: the user should not have had to edit the commit message &&
test_path_is_missing .git/copy.txt &&
: now the comments in the commit message should have been cleaned up &&
test_commit_message HEAD -m wants-fixup &&
: now, let us ensure that "squash" is handled correctly &&
git reset --hard wants-fixup-3 &&
test_must_fail env FAKE_LINES="1 squash 2 squash 1 squash 3 squash 1" \
git rebase -i HEAD~4 &&
: the second squash failed, but there are two more in the chain &&
(test_set_editor "$PWD/copy-editor.sh" &&
test_must_fail git rebase --skip) &&
: not the final squash, no need to edit the commit message &&
test_path_is_missing .git/copy.txt &&
: The first and third squashes succeeded, therefore: &&
test_commit_message HEAD <<-\EOF &&
# This is a combination of 3 commits.
# This is the 1st commit message:
wants-fixup
# This is the commit message #2:
fixup 1
# This is the commit message #3:
fixup 2
EOF
(test_set_editor "$PWD/copy-editor.sh" && git rebase --skip) &&
test_commit_message HEAD <<-\EOF &&
wants-fixup
fixup 1
fixup 2
EOF
: Final squash failed, but there was still a squash &&
head -n1 .git/copy.txt >first-line &&
test_i18ngrep "# This is a combination of 3 commits" first-line &&
test_i18ngrep "# This is the commit message #3:" .git/copy.txt
Switched to a new branch 'with-conflicting-fixup'
[with-conflicting-fixup c5541cc] wants-fixup
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 wants-fixup.t
[with-conflicting-fixup 1453cf1] fixup 1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[with-conflicting-fixup f2bd94a] fixup 2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[with-conflicting-fixup 265fcdc] fixup 3
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
rebase -i script before editing:
pick c5541cc wants-fixup
pick 1453cf1 fixup 1
pick f2bd94a fixup 2
pick 265fcdc fixup 3
rebase -i script after editing:
pick c5541cc wants-fixup
fixup 1453cf1 fixup 1
squash 265fcdc fixup 3
Rebasing (2/3)
Rebasing (3/3)
Auto-merging wants-fixup.t
CONFLICT (content): Merge conflict in wants-fixup.t
error: could not apply 265fcdc... fixup 3
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 265fcdc... fixup 3
Successfully rebased and updated refs/heads/with-conflicting-fixup.
HEAD is now at 265fcdc fixup 3
rebase -i script before editing:
pick c5541cc wants-fixup
pick 1453cf1 fixup 1
pick f2bd94a fixup 2
pick 265fcdc fixup 3
rebase -i script after editing:
pick c5541cc wants-fixup
squash 1453cf1 fixup 1
squash c5541cc wants-fixup
squash f2bd94a fixup 2
squash c5541cc wants-fixup
Rebasing (2/5)
Rebasing (3/5)
Auto-merging wants-fixup.t
CONFLICT (add/add): Merge conflict in wants-fixup.t
error: could not apply c5541cc... wants-fixup
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply c5541cc... wants-fixup
Rebasing (4/5)
Rebasing (5/5)
Auto-merging wants-fixup.t
CONFLICT (add/add): Merge conflict in wants-fixup.t
error: could not apply c5541cc... wants-fixup
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply c5541cc... wants-fixup
[detached HEAD c5ae848] wants-fixup
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:21:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 wants-fixup.t
Successfully rebased and updated refs/heads/with-conflicting-fixup.
# This is a combination of 3 commits.
# This is the commit message #3:
fatal: No rebase in progress?
ok 8 - --skip after failed fixup cleans commit message
expecting success of 3418.9 'setup rerere database':
rm -fr .git/rebase-* &&
git reset --hard commit-new-file-F3-on-topic-branch &&
git checkout main &&
test_commit "commit-new-file-F3" F3 3 &&
test_config rerere.enabled true &&
git update-ref refs/heads/topic commit-new-file-F3-on-topic-branch &&
test_must_fail git rebase -m main topic &&
echo "Resolved" >F2 &&
cp F2 expected-F2 &&
git add F2 &&
test_must_fail git rebase --continue &&
echo "Resolved" >F3 &&
cp F3 expected-F3 &&
git add F3 &&
git rebase --continue &&
git reset --hard topic@{1}
HEAD is now at 39de9a1 commit-new-file-F3-on-topic-branch
Switched to branch 'main'
[main 544942a] commit-new-file-F3
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 F3
Rebasing (1/2)
Auto-merging F2
CONFLICT (add/add): Merge conflict in F2
error: could not apply 24c5d85... commit-new-file-F2-on-topic-branch
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Recorded preimage for 'F2'
Could not apply 24c5d85... commit-new-file-F2-on-topic-branch
Recorded resolution for 'F2'.
[detached HEAD eea28ba] commit-new-file-F2-on-topic-branch
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Rebasing (2/2)
Auto-merging F3
CONFLICT (add/add): Merge conflict in F3
error: could not apply 39de9a1... commit-new-file-F3-on-topic-branch
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Recorded preimage for 'F3'
Could not apply 39de9a1... commit-new-file-F3-on-topic-branch
Recorded resolution for 'F3'.
[detached HEAD 6cb54c7] commit-new-file-F3-on-topic-branch
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Successfully rebased and updated refs/heads/topic.
HEAD is now at 39de9a1 commit-new-file-F3-on-topic-branch
ok 9 - setup rerere database
expecting success of 3418.10 'rebase --apply --continue remembers --rerere-autoupdate':
prepare &&
test_must_fail git rebase $action --rerere-autoupdate main topic &&
test_cmp expected-F2 F2 &&
git diff-files --quiet &&
test_must_fail git rebase --continue &&
test_cmp expected-F3 F3 &&
git diff-files --quiet &&
git rebase --continue
HEAD is now at 39de9a1 commit-new-file-F3-on-topic-branch
Switched to branch 'main'
First, rewinding head to replay your work on top of it...
Applying: commit-new-file-F2-on-topic-branch
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Merging:
544942a commit-new-file-F3
virtual commit-new-file-F2-on-topic-branch
found 1 common ancestor:
virtual 4b825dc642cb6eb9a060e54bf8d69288fbee4904
CONFLICT (add/add): Merge conflict in F2
Auto-merging F2
Staged 'F2' using previous resolution.
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 commit-new-file-F2-on-topic-branch
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
Applying: commit-new-file-F2-on-topic-branch
Applying: commit-new-file-F3-on-topic-branch
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Merging:
eea28ba commit-new-file-F2-on-topic-branch
virtual commit-new-file-F3-on-topic-branch
found 1 common ancestor:
virtual 4b825dc642cb6eb9a060e54bf8d69288fbee4904
CONFLICT (add/add): Merge conflict in F3
Auto-merging F3
Staged 'F3' using previous resolution.
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0002 commit-new-file-F3-on-topic-branch
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
Applying: commit-new-file-F3-on-topic-branch
ok 10 - rebase --apply --continue remembers --rerere-autoupdate
expecting success of 3418.11 'rebase --apply --continue honors rerere.autoUpdate':
prepare &&
test_config rerere.autoupdate true &&
test_must_fail git rebase $action main topic &&
test_cmp expected-F2 F2 &&
git diff-files --quiet &&
test_must_fail git rebase --continue &&
test_cmp expected-F3 F3 &&
git diff-files --quiet &&
git rebase --continue
HEAD is now at 39de9a1 commit-new-file-F3-on-topic-branch
Switched to branch 'main'
First, rewinding head to replay your work on top of it...
Applying: commit-new-file-F2-on-topic-branch
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Merging:
544942a commit-new-file-F3
virtual commit-new-file-F2-on-topic-branch
found 1 common ancestor:
virtual 4b825dc642cb6eb9a060e54bf8d69288fbee4904
CONFLICT (add/add): Merge conflict in F2
Auto-merging F2
Staged 'F2' using previous resolution.
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 commit-new-file-F2-on-topic-branch
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
Applying: commit-new-file-F2-on-topic-branch
Applying: commit-new-file-F3-on-topic-branch
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Merging:
eea28ba commit-new-file-F2-on-topic-branch
virtual commit-new-file-F3-on-topic-branch
found 1 common ancestor:
virtual 4b825dc642cb6eb9a060e54bf8d69288fbee4904
CONFLICT (add/add): Merge conflict in F3
Auto-merging F3
Staged 'F3' using previous resolution.
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0002 commit-new-file-F3-on-topic-branch
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
Applying: commit-new-file-F3-on-topic-branch
ok 11 - rebase --apply --continue honors rerere.autoUpdate
expecting success of 3418.12 'rebase --apply --continue remembers --no-rerere-autoupdate':
prepare &&
test_config rerere.autoupdate true &&
test_must_fail git rebase $action --no-rerere-autoupdate main topic &&
test_cmp expected-F2 F2 &&
test_must_fail git diff-files --quiet &&
git add F2 &&
test_must_fail git rebase --continue &&
test_cmp expected-F3 F3 &&
test_must_fail git diff-files --quiet &&
git add F3 &&
git rebase --continue
HEAD is now at 39de9a1 commit-new-file-F3-on-topic-branch
Switched to branch 'main'
First, rewinding head to replay your work on top of it...
Applying: commit-new-file-F2-on-topic-branch
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Merging:
544942a commit-new-file-F3
virtual commit-new-file-F2-on-topic-branch
found 1 common ancestor:
virtual 4b825dc642cb6eb9a060e54bf8d69288fbee4904
CONFLICT (add/add): Merge conflict in F2
Auto-merging F2
Resolved 'F2' using previous resolution.
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 commit-new-file-F2-on-topic-branch
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
Applying: commit-new-file-F2-on-topic-branch
Applying: commit-new-file-F3-on-topic-branch
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Merging:
eea28ba commit-new-file-F2-on-topic-branch
virtual commit-new-file-F3-on-topic-branch
found 1 common ancestor:
virtual 4b825dc642cb6eb9a060e54bf8d69288fbee4904
CONFLICT (add/add): Merge conflict in F3
Auto-merging F3
Resolved 'F3' using previous resolution.
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0002 commit-new-file-F3-on-topic-branch
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
Applying: commit-new-file-F3-on-topic-branch
ok 12 - rebase --apply --continue remembers --no-rerere-autoupdate
expecting success of 3418.13 'rebase -m --continue remembers --rerere-autoupdate':
prepare &&
test_must_fail git rebase $action --rerere-autoupdate main topic &&
test_cmp expected-F2 F2 &&
git diff-files --quiet &&
test_must_fail git rebase --continue &&
test_cmp expected-F3 F3 &&
git diff-files --quiet &&
git rebase --continue
HEAD is now at 39de9a1 commit-new-file-F3-on-topic-branch
Switched to branch 'main'
Rebasing (1/2)
Auto-merging F2
CONFLICT (add/add): Merge conflict in F2
error: could not apply 24c5d85... commit-new-file-F2-on-topic-branch
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Staged 'F2' using previous resolution.
Could not apply 24c5d85... commit-new-file-F2-on-topic-branch
[detached HEAD eea28ba] commit-new-file-F2-on-topic-branch
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Rebasing (2/2)
Auto-merging F3
CONFLICT (add/add): Merge conflict in F3
error: could not apply 39de9a1... commit-new-file-F3-on-topic-branch
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Staged 'F3' using previous resolution.
Could not apply 39de9a1... commit-new-file-F3-on-topic-branch
[detached HEAD 6cb54c7] commit-new-file-F3-on-topic-branch
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Successfully rebased and updated refs/heads/topic.
ok 13 - rebase -m --continue remembers --rerere-autoupdate
expecting success of 3418.14 'rebase -m --continue honors rerere.autoUpdate':
prepare &&
test_config rerere.autoupdate true &&
test_must_fail git rebase $action main topic &&
test_cmp expected-F2 F2 &&
git diff-files --quiet &&
test_must_fail git rebase --continue &&
test_cmp expected-F3 F3 &&
git diff-files --quiet &&
git rebase --continue
HEAD is now at 39de9a1 commit-new-file-F3-on-topic-branch
Switched to branch 'main'
Rebasing (1/2)
Auto-merging F2
CONFLICT (add/add): Merge conflict in F2
error: could not apply 24c5d85... commit-new-file-F2-on-topic-branch
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Staged 'F2' using previous resolution.
Could not apply 24c5d85... commit-new-file-F2-on-topic-branch
[detached HEAD eea28ba] commit-new-file-F2-on-topic-branch
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Rebasing (2/2)
Auto-merging F3
CONFLICT (add/add): Merge conflict in F3
error: could not apply 39de9a1... commit-new-file-F3-on-topic-branch
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Staged 'F3' using previous resolution.
Could not apply 39de9a1... commit-new-file-F3-on-topic-branch
[detached HEAD 6cb54c7] commit-new-file-F3-on-topic-branch
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Successfully rebased and updated refs/heads/topic.
ok 14 - rebase -m --continue honors rerere.autoUpdate
expecting success of 3418.15 'rebase -m --continue remembers --no-rerere-autoupdate':
prepare &&
test_config rerere.autoupdate true &&
test_must_fail git rebase $action --no-rerere-autoupdate main topic &&
test_cmp expected-F2 F2 &&
test_must_fail git diff-files --quiet &&
git add F2 &&
test_must_fail git rebase --continue &&
test_cmp expected-F3 F3 &&
test_must_fail git diff-files --quiet &&
git add F3 &&
git rebase --continue
HEAD is now at 39de9a1 commit-new-file-F3-on-topic-branch
Switched to branch 'main'
Rebasing (1/2)
Auto-merging F2
CONFLICT (add/add): Merge conflict in F2
error: could not apply 24c5d85... commit-new-file-F2-on-topic-branch
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Resolved 'F2' using previous resolution.
Could not apply 24c5d85... commit-new-file-F2-on-topic-branch
[detached HEAD eea28ba] commit-new-file-F2-on-topic-branch
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Rebasing (2/2)
Auto-merging F3
CONFLICT (add/add): Merge conflict in F3
error: could not apply 39de9a1... commit-new-file-F3-on-topic-branch
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Resolved 'F3' using previous resolution.
Could not apply 39de9a1... commit-new-file-F3-on-topic-branch
[detached HEAD 6cb54c7] commit-new-file-F3-on-topic-branch
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Successfully rebased and updated refs/heads/topic.
ok 15 - rebase -m --continue remembers --no-rerere-autoupdate
expecting success of 3418.16 'rebase -i --continue remembers --rerere-autoupdate':
prepare &&
test_must_fail git rebase $action --rerere-autoupdate main topic &&
test_cmp expected-F2 F2 &&
git diff-files --quiet &&
test_must_fail git rebase --continue &&
test_cmp expected-F3 F3 &&
git diff-files --quiet &&
git rebase --continue
HEAD is now at 39de9a1 commit-new-file-F3-on-topic-branch
Switched to branch 'main'
Rebasing (1/2)
Auto-merging F2
CONFLICT (add/add): Merge conflict in F2
error: could not apply 24c5d85... commit-new-file-F2-on-topic-branch
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Staged 'F2' using previous resolution.
Could not apply 24c5d85... commit-new-file-F2-on-topic-branch
[detached HEAD eea28ba] commit-new-file-F2-on-topic-branch
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Rebasing (2/2)
Auto-merging F3
CONFLICT (add/add): Merge conflict in F3
error: could not apply 39de9a1... commit-new-file-F3-on-topic-branch
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Staged 'F3' using previous resolution.
Could not apply 39de9a1... commit-new-file-F3-on-topic-branch
[detached HEAD 6cb54c7] commit-new-file-F3-on-topic-branch
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Successfully rebased and updated refs/heads/topic.
ok 16 - rebase -i --continue remembers --rerere-autoupdate
expecting success of 3418.17 'rebase -i --continue honors rerere.autoUpdate':
prepare &&
test_config rerere.autoupdate true &&
test_must_fail git rebase $action main topic &&
test_cmp expected-F2 F2 &&
git diff-files --quiet &&
test_must_fail git rebase --continue &&
test_cmp expected-F3 F3 &&
git diff-files --quiet &&
git rebase --continue
HEAD is now at 39de9a1 commit-new-file-F3-on-topic-branch
Switched to branch 'main'
Rebasing (1/2)
Auto-merging F2
CONFLICT (add/add): Merge conflict in F2
error: could not apply 24c5d85... commit-new-file-F2-on-topic-branch
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Staged 'F2' using previous resolution.
Could not apply 24c5d85... commit-new-file-F2-on-topic-branch
[detached HEAD eea28ba] commit-new-file-F2-on-topic-branch
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Rebasing (2/2)
Auto-merging F3
CONFLICT (add/add): Merge conflict in F3
error: could not apply 39de9a1... commit-new-file-F3-on-topic-branch
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Staged 'F3' using previous resolution.
Could not apply 39de9a1... commit-new-file-F3-on-topic-branch
[detached HEAD 6cb54c7] commit-new-file-F3-on-topic-branch
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Successfully rebased and updated refs/heads/topic.
ok 17 - rebase -i --continue honors rerere.autoUpdate
expecting success of 3418.18 'rebase -i --continue remembers --no-rerere-autoupdate':
prepare &&
test_config rerere.autoupdate true &&
test_must_fail git rebase $action --no-rerere-autoupdate main topic &&
test_cmp expected-F2 F2 &&
test_must_fail git diff-files --quiet &&
git add F2 &&
test_must_fail git rebase --continue &&
test_cmp expected-F3 F3 &&
test_must_fail git diff-files --quiet &&
git add F3 &&
git rebase --continue
HEAD is now at 39de9a1 commit-new-file-F3-on-topic-branch
Switched to branch 'main'
Rebasing (1/2)
Auto-merging F2
CONFLICT (add/add): Merge conflict in F2
error: could not apply 24c5d85... commit-new-file-F2-on-topic-branch
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Resolved 'F2' using previous resolution.
Could not apply 24c5d85... commit-new-file-F2-on-topic-branch
[detached HEAD eea28ba] commit-new-file-F2-on-topic-branch
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Rebasing (2/2)
Auto-merging F3
CONFLICT (add/add): Merge conflict in F3
error: could not apply 39de9a1... commit-new-file-F3-on-topic-branch
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Resolved 'F3' using previous resolution.
Could not apply 39de9a1... commit-new-file-F3-on-topic-branch
[detached HEAD 6cb54c7] commit-new-file-F3-on-topic-branch
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Successfully rebased and updated refs/heads/topic.
ok 18 - rebase -i --continue remembers --no-rerere-autoupdate
expecting success of 3418.19 'the todo command "break" works':
rm -f execed &&
FAKE_LINES="break b exec_>execed" git rebase -i HEAD &&
test_path_is_missing execed &&
git rebase --continue &&
test_path_is_missing execed &&
git rebase --continue &&
test_path_is_file execed
rebase -i script before editing:
noop
rebase -i script after editing:
break
b
exec >execed
Rebasing (1/3)
Stopped at 6cb54c7 (commit-new-file-F3-on-topic-branch)
Rebasing (2/3)
Stopped at 6cb54c7 (commit-new-file-F3-on-topic-branch)
Rebasing (3/3)
Executing: >execed
Successfully rebased and updated refs/heads/topic.
ok 19 - the todo command "break" works
expecting success of 3418.20 '--reschedule-failed-exec':
test_when_finished "git rebase --abort" &&
test_must_fail git rebase -x false --reschedule-failed-exec HEAD^ &&
grep "^exec false" .git/rebase-merge/git-rebase-todo &&
git rebase --abort &&
test_must_fail git -c rebase.rescheduleFailedExec=true \
rebase -x false HEAD^ 2>err &&
grep "^exec false" .git/rebase-merge/git-rebase-todo &&
test_i18ngrep "has been rescheduled" err
Rebasing (2/2)
Executing: false
warning: execution failed: false
You can fix the problem, and then run
git rebase --continue
hint: Could not execute the todo command
hint:
hint: exec false
hint:
hint: It has been rescheduled; To edit the command before continuing, please
hint: edit the todo list first:
hint:
hint: git rebase --edit-todo
hint: git rebase --continue
exec false
exec false
hint: It has been rescheduled; To edit the command before continuing, please
ok 20 - --reschedule-failed-exec
expecting success of 3418.21 'rebase.rescheduleFailedExec only affects `rebase -i`':
test_config rebase.rescheduleFailedExec true &&
test_must_fail git rebase -x false HEAD^ &&
grep "^exec false" .git/rebase-merge/git-rebase-todo &&
git rebase --abort &&
git rebase HEAD^
Rebasing (2/2)
Executing: false
warning: execution failed: false
You can fix the problem, and then run
git rebase --continue
hint: Could not execute the todo command
hint:
hint: exec false
hint:
hint: It has been rescheduled; To edit the command before continuing, please
hint: edit the todo list first:
hint:
hint: git rebase --edit-todo
hint: git rebase --continue
exec false
Current branch topic is up to date.
ok 21 - rebase.rescheduleFailedExec only affects `rebase -i`
expecting success of 3418.22 'rebase.rescheduleFailedExec=true & --no-reschedule-failed-exec':
test_when_finished "git rebase --abort" &&
test_config rebase.rescheduleFailedExec true &&
test_must_fail git rebase -x false --no-reschedule-failed-exec HEAD~2 &&
test_must_fail git rebase --continue 2>err &&
! grep "has been rescheduled" err
Rebasing (2/4)
Executing: false
warning: execution failed: false
You can fix the problem, and then run
git rebase --continue
ok 22 - rebase.rescheduleFailedExec=true & --no-reschedule-failed-exec
expecting success of 3418.23 'new rebase.rescheduleFailedExec=true setting in an ongoing rebase is ignored':
test_when_finished "git rebase --abort" &&
test_must_fail git rebase -x false HEAD~2 &&
test_config rebase.rescheduleFailedExec true &&
test_must_fail git rebase --continue 2>err &&
! grep "has been rescheduled" err
Rebasing (2/4)
Executing: false
warning: execution failed: false
You can fix the problem, and then run
git rebase --continue
ok 23 - new rebase.rescheduleFailedExec=true setting in an ongoing rebase is ignored
expecting success of 3418.24 'there is no --no-reschedule-failed-exec in an ongoing rebase':
test_when_finished "git rebase --abort" &&
test_must_fail git rebase -x false HEAD~2 &&
test_expect_code 129 git rebase --continue --no-reschedule-failed-exec &&
test_expect_code 129 git rebase --edit-todo --no-reschedule-failed-exec
Rebasing (2/4)
Executing: false
warning: execution failed: false
You can fix the problem, and then run
git rebase --continue
usage: git rebase [-i] [options] [--exec <cmd>] [--onto <newbase> | --keep-base] [<upstream> [<branch>]]
or: git rebase [-i] [options] [--exec <cmd>] [--onto <newbase>] --root [<branch>]
or: git rebase --continue | --abort | --skip | --edit-todo
--onto <revision> rebase onto given branch instead of upstream
--keep-base use the merge-base of upstream and branch as the current base
--no-verify allow pre-rebase hook to run
-q, --quiet be quiet. implies --no-stat
-v, --verbose display a diffstat of what changed upstream
-n, --no-stat do not show diffstat of what changed upstream
--signoff add a Signed-off-by trailer to each commit
--committer-date-is-author-date
make committer date match author date
--reset-author-date ignore author date and use current date
-C <n> passed to 'git apply'
--ignore-whitespace ignore changes in whitespace
--whitespace <action> passed to 'git apply'
-f, --force-rebase cherry-pick all commits, even if unchanged
--no-ff cherry-pick all commits, even if unchanged
--continue continue
--skip skip current patch and continue
--abort abort and check out the original branch
--quit abort but keep HEAD where it is
--edit-todo edit the todo list during an interactive rebase
--show-current-patch show the patch file being applied or merged
--apply use apply strategies to rebase
-m, --merge use merging strategies to rebase
-i, --interactive let the user edit the list of commits to rebase
--rerere-autoupdate update the index with reused conflict resolution if possible
--empty <{drop,keep,ask}>
how to handle commits that become empty
--autosquash move commits that begin with squash!/fixup! under -i
--update-refs update branches that point to commits that are being rebased
-S, --gpg-sign[=<key-id>]
GPG-sign commits
--autostash automatically stash/stash pop before and after
-x, --exec <exec> add exec lines after each commit of the editable list
-r, --rebase-merges[=<mode>]
try to rebase merges instead of skipping them
--fork-point use 'merge-base --fork-point' to refine upstream
-s, --strategy <strategy>
use the given merge strategy
-X, --strategy-option <option>
pass the argument through to the merge strategy
--root rebase all reachable commits up to the root(s)
--reschedule-failed-exec
automatically re-schedule any `exec` that fails
--reapply-cherry-picks
apply all changes, even those already present upstream
usage: git rebase [-i] [options] [--exec <cmd>] [--onto <newbase> | --keep-base] [<upstream> [<branch>]]
or: git rebase [-i] [options] [--exec <cmd>] [--onto <newbase>] --root [<branch>]
or: git rebase --continue | --abort | --skip | --edit-todo
--onto <revision> rebase onto given branch instead of upstream
--keep-base use the merge-base of upstream and branch as the current base
--no-verify allow pre-rebase hook to run
-q, --quiet be quiet. implies --no-stat
-v, --verbose display a diffstat of what changed upstream
-n, --no-stat do not show diffstat of what changed upstream
--signoff add a Signed-off-by trailer to each commit
--committer-date-is-author-date
make committer date match author date
--reset-author-date ignore author date and use current date
-C <n> passed to 'git apply'
--ignore-whitespace ignore changes in whitespace
--whitespace <action> passed to 'git apply'
-f, --force-rebase cherry-pick all commits, even if unchanged
--no-ff cherry-pick all commits, even if unchanged
--continue continue
--skip skip current patch and continue
--abort abort and check out the original branch
--quit abort but keep HEAD where it is
--edit-todo edit the todo list during an interactive rebase
--show-current-patch show the patch file being applied or merged
--apply use apply strategies to rebase
-m, --merge use merging strategies to rebase
-i, --interactive let the user edit the list of commits to rebase
--rerere-autoupdate update the index with reused conflict resolution if possible
--empty <{drop,keep,ask}>
how to handle commits that become empty
--autosquash move commits that begin with squash!/fixup! under -i
--update-refs update branches that point to commits that are being rebased
-S, --gpg-sign[=<key-id>]
GPG-sign commits
--autostash automatically stash/stash pop before and after
-x, --exec <exec> add exec lines after each commit of the editable list
-r, --rebase-merges[=<mode>]
try to rebase merges instead of skipping them
--fork-point use 'merge-base --fork-point' to refine upstream
-s, --strategy <strategy>
use the given merge strategy
-X, --strategy-option <option>
pass the argument through to the merge strategy
--root rebase all reachable commits up to the root(s)
--reschedule-failed-exec
automatically re-schedule any `exec` that fails
--reapply-cherry-picks
apply all changes, even those already present upstream
ok 24 - there is no --no-reschedule-failed-exec in an ongoing rebase
expecting success of 3418.25 'rebase --apply sets ORIG_HEAD correctly':
git checkout topic &&
git reset --hard commit-new-file-F2-on-topic-branch &&
test_orig_head_helper $type main
Already on 'topic'
HEAD is now at 24c5d85 commit-new-file-F2-on-topic-branch
First, rewinding head to replay your work on top of it...
Applying: commit-new-file-F2-on-topic-branch
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Merging:
544942a commit-new-file-F3
virtual commit-new-file-F2-on-topic-branch
found 1 common ancestor:
virtual 4b825dc642cb6eb9a060e54bf8d69288fbee4904
CONFLICT (add/add): Merge conflict in F2
Auto-merging F2
Resolved 'F2' using previous resolution.
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 commit-new-file-F2-on-topic-branch
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
Already on 'topic'
HEAD is now at 24c5d85 commit-new-file-F2-on-topic-branch
ok 25 - rebase --apply sets ORIG_HEAD correctly
expecting success of 3418.26 'rebase --apply <upstream> <branch> sets ORIG_HEAD correctly':
git checkout main &&
test_orig_head_helper $type main topic
Switched to branch 'main'
First, rewinding head to replay your work on top of it...
Applying: commit-new-file-F2-on-topic-branch
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Merging:
544942a commit-new-file-F3
virtual commit-new-file-F2-on-topic-branch
found 1 common ancestor:
virtual 4b825dc642cb6eb9a060e54bf8d69288fbee4904
CONFLICT (add/add): Merge conflict in F2
Auto-merging F2
Resolved 'F2' using previous resolution.
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 commit-new-file-F2-on-topic-branch
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
Already on 'topic'
HEAD is now at 24c5d85 commit-new-file-F2-on-topic-branch
ok 26 - rebase --apply <upstream> <branch> sets ORIG_HEAD correctly
expecting success of 3418.27 'rebase --merge sets ORIG_HEAD correctly':
git checkout topic &&
git reset --hard commit-new-file-F2-on-topic-branch &&
test_orig_head_helper $type main
Already on 'topic'
HEAD is now at 24c5d85 commit-new-file-F2-on-topic-branch
Rebasing (1/1)
Auto-merging F2
CONFLICT (add/add): Merge conflict in F2
error: could not apply 24c5d85... commit-new-file-F2-on-topic-branch
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Resolved 'F2' using previous resolution.
Could not apply 24c5d85... commit-new-file-F2-on-topic-branch
Already on 'topic'
HEAD is now at 24c5d85 commit-new-file-F2-on-topic-branch
ok 27 - rebase --merge sets ORIG_HEAD correctly
expecting success of 3418.28 'rebase --merge <upstream> <branch> sets ORIG_HEAD correctly':
git checkout main &&
test_orig_head_helper $type main topic
Switched to branch 'main'
Rebasing (1/1)
Auto-merging F2
CONFLICT (add/add): Merge conflict in F2
error: could not apply 24c5d85... commit-new-file-F2-on-topic-branch
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Resolved 'F2' using previous resolution.
Could not apply 24c5d85... commit-new-file-F2-on-topic-branch
Already on 'topic'
HEAD is now at 24c5d85 commit-new-file-F2-on-topic-branch
ok 28 - rebase --merge <upstream> <branch> sets ORIG_HEAD correctly
# passed all 28 test(s)
1..28
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3305-notes-fanout.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3305-notes-fanout/.git/
expecting success of 3305.1 'tweak test environment':
git checkout -b nondeterminism &&
test_commit A &&
git checkout --orphan with_notes;
Switched to a new branch 'nondeterminism'
[nondeterminism (root-commit) 0ddfaf1] A
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 A.t
Switched to a new branch 'with_notes'
ok 1 - tweak test environment
expecting success of 3305.2 'creating many notes with git-notes':
num_notes=300 &&
i=0 &&
while test $i -lt $num_notes
do
i=$(($i + 1)) &&
test_tick &&
echo "file for commit #$i" > file &&
git add file &&
git commit -q -m "commit #$i" &&
git notes add -m "note #$i" || return 1
done
ok 2 - creating many notes with git-notes
expecting success of 3305.3 'many notes created correctly with git-notes':
git log >output.raw &&
grep "^ " output.raw >output &&
i=$num_notes &&
while test $i -gt 0
do
echo " commit #$i" &&
echo " note #$i" &&
i=$(($i - 1)) || return 1
done > expect &&
test_cmp expect output
ok 3 - many notes created correctly with git-notes
expecting success of 3305.4 'stable fanout 0 is followed by stable fanout 1':
i=$num_notes &&
fanout=0 &&
while test $i -gt 0
do
i=$(($i - 1)) &&
if touched_one_note_with_fanout refs/notes/commits~$i A $fanout
then
continue
elif test $fanout -eq 0
then
fanout=1 &&
if all_notes_have_fanout refs/notes/commits~$i $fanout
then
echo "Fanout 0 -> 1 at refs/notes/commits~$i" &&
continue
fi
fi &&
echo "Failed fanout=$fanout check at refs/notes/commits~$i" &&
git ls-tree -r --name-only refs/notes/commits~$i &&
return 1
done &&
all_notes_have_fanout refs/notes/commits 1
Fanout 0 -> 1 at refs/notes/commits~202
ok 4 - stable fanout 0 is followed by stable fanout 1
expecting success of 3305.5 'deleting most notes with git-notes':
remove_notes=285 &&
i=0 &&
git rev-list HEAD >revs &&
while test $i -lt $remove_notes && read sha1
do
i=$(($i + 1)) &&
test_tick &&
git notes remove "$sha1" || return 1
done <revs
Removing note for object 294487610d9e2f1885f32c5aa8c40e1feae544e6
Removing note for object 264d6d5a375b9b4a748e868f8887139e144dd9ac
Removing note for object f4791ca4424bf830c9c4c2fae376f8c17584ecfc
Removing note for object 04413ee0c628c2149ce195709e68ba9739cecaeb
Removing note for object 2cba5326a57bff88235ffe0d680843c3a875fdc6
Removing note for object 98c3a61e7f6474b9edadcd9fd0e2c580fbff9f8c
Removing note for object 69dd6f05596ba7dd52aece2e66312d72193f2404
Removing note for object 06faaf7ec015a9d97368c2529bdc8cf31baf70bf
Removing note for object 95a7e3e972db58539e6ef3cc361cd61e31b17db7
Removing note for object 136b29822535a2e998f2926ee16b1f3802c88b3f
Removing note for object a9d5012931c30040ee5e7b0b8ab8eaa87dd2df9e
Removing note for object 34b0e5146919d1b0b079f4685de49d08d602c765
Removing note for object ba8e5e2e75a66e54fa2a999671e3d602548b0fad
Removing note for object 84773486b2f3c371913c2745322c02efe920976c
Removing note for object 30f4912988cb9df51d6bbec5796642f1b1a9a2fc
Removing note for object 18b7dd8f1690e8cb8399edd2d469cebf6051c8fb
Removing note for object 80a8f06bff8197866fb6c2b10e529a67b1d0ed57
Removing note for object 88d59face24312f906679c56c1c00f41a57aed81
Removing note for object e591b6658f32d09dc92aaab7f518076d7219baa1
Removing note for object 7194f853be5be737ab89c55ed8ef76999c694cfb
Removing note for object 785a3db61beba59185813dd72a4f49cb960ba939
Removing note for object 3dbbb4bfb12466f2662430857727af32dc37b30b
Removing note for object a7e4d6ced9493bec81fa7a326a50a053b7dd8e47
Removing note for object 17d18cf173f34f0c977c7d7410432c4c052e9a35
Removing note for object 0efe5818f127e837f8c49e7ee292f2e3827b5d8c
Removing note for object 1329c14017e18f7f75c56c6132d5070386191590
Removing note for object 4fad07113f4b21f3d3aba2033c13576d74ed0159
Removing note for object fd7060211fed315790db481cca508f2a59cd33fa
Removing note for object 24bcc65e72949c7aad1e00a0ae648eb27b94a801
Removing note for object 74017d116189d350e027f6a2fa197d76a98cb90c
Removing note for object 829520f74568ec4a7daa4344d4e53612e8e449c6
Removing note for object fc9c45687e413c9199ed2e2dc13732b0eee1417e
Removing note for object 68f9d6e536ae8b39e2be3687534f96fb0cedd413
Removing note for object 85492e5692be8052265ab35b1fb32bd632d7a034
Removing note for object ed3b17f5fea5faec967aea73fab660c3caa4ec11
Removing note for object c0038d5ca05de0848b621fe56fa32a95f56ac8bb
Removing note for object 5805c46d394e6f09d122e29bfc8bc4677227c959
Removing note for object 82a44ee370b37d4fcd2955c7dd4f59f66bb85055
Removing note for object bebeed1d6e5df5f8e4519c02be6e36baef2a2b9f
Removing note for object 84489b9c59967356c347b503e7be812344bec157
Removing note for object de6bce36f8dbcebae05182254f9839ae88a89519
Removing note for object 028084dc54b6b3a96adb0db4447c0befbfaf0f77
Removing note for object b8f0c408564c037d30c51346cc54e5bf9b39a223
Removing note for object 2ca369ce379b96c92fd48802bf5ca62c31495871
Removing note for object 6c623624f0cfa64dcf5e0670626a9af249ce8fce
Removing note for object d07926d68d5ea629bdfca003fd6dd71f4efdde8a
Removing note for object 6160cde4d6c969e42f949a8d975e72f82ec65ff9
Removing note for object 73b405a748dba3b757b1c4cfbca475d1a66a1396
Removing note for object 8bfca76ecc8ffdd1c73e247e20dfc380deec169b
Removing note for object 49d5b21b59db4b0d7e92d8d58b548c7c7f3ceab3
Removing note for object 092fdff4f714d2ade8c2a5e0b7230b96e58fa202
Removing note for object 8e716f1f338b7cde850738a7bcb8fc08458f6da8
Removing note for object cbbd557f18677bca5328466c4649d42ca38ecd0b
Removing note for object 3b5f892711e112d1ffe60cc652782db8f5436172
Removing note for object d00c7dd01101c3f61fa408d9609bd0f34189ca0e
Removing note for object 2d5dfff9582df22365e988c1dbf26f310ac11018
Removing note for object b081e0909ddc4f0cd0f880a4151b7a0f93ff7c02
Removing note for object 72db531cec33db2b935aeefaf533d7cdc8e1e498
Removing note for object 863bdd410c7d0f81d93dadbb5129004563987cdd
Removing note for object 53c002754b07b01a6c7b0f25e55ce49452e78998
Removing note for object 37d37991e387d94d7470e8e1f6d2554e027eb040
Removing note for object c2a4ca4a2728846813f90dd0f36f5dd413572e53
Removing note for object c4b7e09bd15665daf91c5a420a56dd3721ca8c09
Removing note for object a14371c8166385886904c730e0a531b5ac0dc1d4
Removing note for object 3595eeb0316642224135dda2d7f4e2571d13f960
Removing note for object b7d693fa9562fb10a24385800b92e21d77158cab
Removing note for object 0b55bd97fdaa73e8998658138997750f9204f709
Removing note for object 7581409289445aac9cad5685242225b69438bdb5
Removing note for object 63e0354a05c6f2bd3ee0454b7c8a1b6ad55bbb39
Removing note for object e122ffa8e4b75eca6c0a6138dbbbbd8fd90db924
Removing note for object 12b5dbefaa4c85ef26c42c14bb3a48493fd79aed
Removing note for object 6187ce5edf2f7d4d97721c6a195e9085ee0b75e0
Removing note for object 0b29c48dd6f47ab350c0268424c5912ca68eec05
Removing note for object 00225fa0566873e04cf85786bfcdfc8d5a1fb68b
Removing note for object e46b064f913b6c0ec92bdb2e3cdc956a9ad929d8
Removing note for object da6a0c7b416f1929e37ad4ab7aa9a43e40bba3a4
Removing note for object 0e7679756bda78bcb761a92425082d33ae2eabd6
Removing note for object 3d884933f1ff6c4b8d3ffffb2c1985295ffc7578
Removing note for object eb5fad11a1860cbc711e7aae5f815d49739027f9
Removing note for object 6c5b7cca48d408e6597aae06ac190bf435eea0af
Removing note for object 9ae6abb2dd899f3453bd4a42c6083d29e5ee2c25
Removing note for object 1c2be6e6b8a1512b49e2d0ce4f320ac62663bd7c
Removing note for object 91ba16e88693278bac6ea5b6652be27d519c6284
Removing note for object 04891a4865ab739593d7f5d934906d805027dcbd
Removing note for object b727600ac1fd560a92140c46077ce7f8a20f8db2
Removing note for object 29b24dcd761b95b975c46ffa137d98f74d956875
Removing note for object b1a3d0c9ddc40d03b3d59b6c7930df4012a61d0a
Removing note for object 3698be91e4a9197cfefba28d171e52fc0fb571fa
Removing note for object 85388b2ffc9342b1a9237c75f3f7cb79cc410e64
Removing note for object 0aed77a3e97c3854fcd751b1f94ecb6756725974
Removing note for object 011539f0b7e8e95c22436d224695aae6c48bb3db
Removing note for object 43aa9d033a8bbfa9f3e8b0d7c9a715d1d0096c05
Removing note for object c35ea1a727952227b88357433be4bdfb30e55856
Removing note for object 46f4a82d64902ab63e4d7de6c78da677c3b20f8e
Removing note for object 695cbdb56848e3e0e403da2ea9ef18d665481c3c
Removing note for object 7c7ef41170927a3a7999968540534c70f68ce2c9
Removing note for object e48a2c3b1b9c23598053a0416d31f9935be4ce83
Removing note for object 6c66c6ef6b7c907f347fca51f1dc779eee27f35e
Removing note for object 1e436c8a45959f2f4dfda6256f00caab47c79e7b
Removing note for object 28a86738bc402f34c2b895820e4710f9b7517ce1
Removing note for object a4075445b64d0bfb6d601a08598d4c346391ba6e
Removing note for object 5136d8fd93d2016a0d59ea94013508fc771d7412
Removing note for object 581964916f22d8ed9e54c42a5f02ebeeff208a54
Removing note for object 408b845562d9579cac992b13dcf78c7bc351b83c
Removing note for object f6606205b38996de225eb0d20a4436613226c5b4
Removing note for object 69ad0c3f89c0348adaeb2b245f24678ff8fc73ef
Removing note for object 16d4da4076e02831d14264341b46adc23de10d31
Removing note for object 61245559e67f9f9ed73efe2bc7ba05c3b0dc61a3
Removing note for object f5fc94c753f4fd9f47311e9a96823508fdf12867
Removing note for object 4bf49ef5b8de8cf570854c1c5249b17dbac4da6d
Removing note for object 2b5e34f8ec5a967a8c118b504cb7c9f82425d307
Removing note for object 71feadd9546a386bba0956643a7618130275ca2d
Removing note for object c435f7d2da121e6ca478542d81a09b4cfb1e6d40
Removing note for object 83b6710b31fe03be8147f88d5679dc1e7d6b93e7
Removing note for object a5cec4217c4c9459acd08946a5936109f92b234a
Removing note for object 3466f2562096ec7fee77cfcaf975e045d5ba8bd8
Removing note for object 0356dbfd30b5c8109865b192297b202b8d4b93b5
Removing note for object ef04490e0dd39166aa62f7be4cbb8a42c9e9b876
Removing note for object c6251d973d7136acf8b2817e8275fba9e0bb102d
Removing note for object a18e024b9c635d261c2f54612b342a67928b8068
Removing note for object 9d03e90800a10023bd868e1e7fee6a0d54bdb972
Removing note for object 41d89def92a9052d7cc2ae1c673e807f7ee2bc15
Removing note for object c1c691f1ee137258e216986125ad7169bbc9944b
Removing note for object 5536984fddffdfdad3a5007221f3b08dc46e32eb
Removing note for object cd905ab02b0fbdec5407cc7c454d959645e4fabb
Removing note for object 8b33d27218a7e8cab8a6d2ff5eddd348c36029ba
Removing note for object 81491394bf0249b2639a9f4f6bfc43c0e38370d4
Removing note for object 76bff28d5965aaff4f7ba16e4b7a4bfb05bdc334
Removing note for object e3504135096a7ca00095a761fcf71ecdd2794043
Removing note for object 74125e7e86a34c7385ea36bff5c5e8f481b423c5
Removing note for object 5fed9794bc006a7326587300052cb7e44639412a
Removing note for object 3510fb1bd504c9221f9679da3fdc2845cf21e140
Removing note for object bf473ccfa7fdc1e61f62f9c874238a0de5fc513d
Removing note for object fc327306de924737f321c9baeefdcca0df16d2bc
Removing note for object 2c10f7b0afac72972ec95cb4d308ba7421755512
Removing note for object 297d6cb08dee5d25ce9ba83eecdeaf449da865bb
Removing note for object 545c4c1b43dcc4d0a99cd98fcda0bae1005a78b2
Removing note for object 4a996de24e1ffe26f732c854882697c1ad516386
Removing note for object 844420c079e48a5166c01a85a790ce6bdeb873bd
Removing note for object 023515e4ad959899e29b27f5c5f83c8a1a2de28c
Removing note for object 7585ebad749b486c7ebf9f8e0855ac3099d09a38
Removing note for object 413376f50b0489aaecbce66bf7b54b98e6550e03
Removing note for object 2873e3beec9c3d56bad8f485e61d6a2cf9a16c8c
Removing note for object 61f865b2efc1072fdb8ed9fe06118feae86e84f7
Removing note for object 1ea06f1458f13efee0b785253f989b694f938edb
Removing note for object ce8b86ae2c160f88e1c799aa6837f6c773956227
Removing note for object e3306eaa12a31c691d43bbca19f98a2d9dab4ba9
Removing note for object c2fb991d7ec9543b161f4f98c624929675ff4c5d
Removing note for object d11385ba15c9c5e331981f68dd6bd7164ccf3f85
Removing note for object 6f891e8ffe677a4c89d16dd2c665ee0e14c7a299
Removing note for object ed339d1d371f85637989f68d0eb557f351577a21
Removing note for object 4750ac4f1a2e220c1e8f6640294532c98d99f200
Removing note for object f292c7df6101b6388f4d124dd0e359f53665aeb9
Removing note for object 6457f18ae180c94ff5f7e0ea32f5d33194813bd5
Removing note for object 80dca81cb5b833d22335d913b49a273d34062db9
Removing note for object c4a04fb500fde0e2ec185ceef5e830841ef81190
Removing note for object 37f7f6d33ccea935fd3052dcf56f0702a5688a56
Removing note for object b174abe99a10da71c24f307c4be43b8fd13ddd81
Removing note for object 521324fde746e0ed1d52d3da451c3d5ce0a51853
Removing note for object 22145dda21dc965767c9837a456e045b0b905d72
Removing note for object 65cd0782f778269cac585ca0cfceb3b65b4b0136
Removing note for object 9f0e002cb37dba666555cb19d9825d53bc1efc7e
Removing note for object ff7230819570fd6ca726ec2870c7acdbc33475eb
Removing note for object fdf030fde5370388b806af92806e62e2bfb1bb11
Removing note for object 5bbfd9a6221cce07357876e6702a17e7a96faae5
Removing note for object 5863cde659f7dda95d24a43459f482038bbe8eba
Removing note for object dcbb95084ba98cb6a950efc8a6f340b84dee87c7
Removing note for object 2f60ea03c053734f2cde5a7f31ace9bac1ee19da
Removing note for object 7dea3506366b9b27f57bafeb6e5bd508b00c5923
Removing note for object 589a50a5e7daf7983baf43177e3fab221b3f0781
Removing note for object 9a87326a7e4fec8672ce330e076fc6dba7c23366
Removing note for object 177838d572b4628311ae9ba649a598c0627c2088
Removing note for object b00c6f3383767d26b6b6af4057c6c9e56ec72803
Removing note for object d856441fdb792888b635d1f62bfba9e64b772960
Removing note for object 3f023909b06329744f931861ebb9c9bd12da1b84
Removing note for object b161b8a0267657e40c21ea0a7637c9da05cb6234
Removing note for object c3f42ce00ec78e8c5653eee37687d86870c1d2c5
Removing note for object fc070b682384d45f45798cb8883f6f779a8d105f
Removing note for object 794e608cc670532a53e521b37080ac4fb39e5775
Removing note for object ce4d96ea40482e50d733d943d3aa1326c5f27f20
Removing note for object 93d93d194fd2c9309ad75ba0ac36eed962540471
Removing note for object f5ddfa52c42f3fe5bc24b1d7436d269718fb4ec6
Removing note for object 84e47a901d70a1b913359a59b0eb4128921d6764
Removing note for object 54a943437a41a035ae36187788f7863a14677754
Removing note for object 6a28e6066c6213cc0535eb58ea15cc26cc0cb17d
Removing note for object 7d8ba8659bb15e61daf37be731562cafc8701af4
Removing note for object c2a06db27f237154cdf5ae99e9336ad7ac101c75
Removing note for object ebcbe749543cb23055bfad287b08edd5dd506e49
Removing note for object 22e47c76aa2449f554aa282f61ce8005a9da279e
Removing note for object 81090cc10824f5f6a229195d061d5a062241f64e
Removing note for object 27437784483a95ad6a86161d4e6082efa3fc4b99
Removing note for object 1becd0970add28104ec7023fa8660f59c8dc85e5
Removing note for object 975edfc698cb84099be9cd6f54b94c6b0bdfbf3e
Removing note for object 698172dcc506d88c5d745f6b441ce316e908ac25
Removing note for object 6c5035c5f925f25c4081fe33bea2e87bd4344eeb
Removing note for object 7a1b8459367f67da01cbd0852e27aafa063eae5b
Removing note for object 34a270c65107179578d5cf71f88997941cfceb68
Removing note for object e1ca3debff6d7f8751a0c43f8e649c37c39ddcff
Removing note for object f2cd69f72028b7f0334dc46c677dbf6e34c64ff9
Removing note for object b5b96cb5f658ff89cad9d65d3fe90935741d4280
Removing note for object 3d231f1ae4643fde656b5195e8a44598a524346c
Removing note for object 92aff6e6403899d4467dca0759a5f9ca9f6083e8
Removing note for object d7d8923b4e4c23a1f6a66f072403269416d7bdc5
Removing note for object f5dbbac5c21c898c8673760bc67123f9ca551f62
Removing note for object 671b9a1a077aafd0194137ce810e99e8e17aabf7
Removing note for object cf858fab0fd223f87642d61c2dec71777d597370
Removing note for object 404b958c22b0eec12dd009d4e6bc043a995096ad
Removing note for object 30e25d85636fbb5a3962893e97204525d507fe5b
Removing note for object 68fdee2a017d2b19536a79794a90ac13ad3c9120
Removing note for object 2beb65e939af69464e8ed5dcdd4c10f8ab65110e
Removing note for object ae862168e1774f973a69502c447480f81c035c00
Removing note for object 422f97df0f1f254299575475841c717032a6ca32
Removing note for object f7b9f4caf310f040a99a8117be5928e95be0b97e
Removing note for object 7bb335e0bde4008652eb5f427a4a7390ae288309
Removing note for object f17072c2db1767d4e1c41e0411294506f014c2af
Removing note for object 99c50e745458fd2faf1c0f55273b7512348d2ddc
Removing note for object 9aa56e0371ac9a4a4f10b34878d53d83ca8190ca
Removing note for object 8738fb580d364e7645f0f7e0206dd1f000f03c84
Removing note for object 2db58456e56e9ee9f425944d1c7743519a24784d
Removing note for object a33d485949f214abc9fbb192ff36632eaa4cf0b3
Removing note for object 8e59f0f4fc11cc909b24f15a6ef1b6e1a3fa7bc8
Removing note for object cd604ed04d960a2e7fead48dd5d1e3fd9ca7886d
Removing note for object 0c320249ca0ddd30c6fc90374656f6331633280a
Removing note for object f15d09c23da1e142fd85798fbd4ac0b29cb858f3
Removing note for object 0a256346bb1c2687845aca1e06c2dcb5d1ac9cf3
Removing note for object 03a07cdc62a571762b99320c43428698b2d3d91b
Removing note for object 86b4ee723d450722f69493786dc1a1b3c85f456b
Removing note for object 5ef6c6a2209bc341ee9300945ee24397668600e9
Removing note for object eee7b5e88db8d2f4eeff2bfd4ced42dc2b77576c
Removing note for object 331c2d29861aa09a00a73056e70f156650ef1b4a
Removing note for object bb32de951ad1f794e77afa53a31aa9433bfdb121
Removing note for object fe8c44ed3546c964bd8398f5fc0c8d5ee01c08dd
Removing note for object ac00acde313fa0157a4805bdbce2f22d7e57750a
Removing note for object 1adc2b3c4610b4da4b2c00cbf153395bb5f72ed0
Removing note for object 59238cad6edee95b454423e535876306852f6b93
Removing note for object 4f5bde2686729dfaa60e10051820409fc7102027
Removing note for object 07db9a697feba6bacfc603c13c8c184c376c1fde
Removing note for object acd7eec9dcc24a3fda4a46d9cf11056f9fb51592
Removing note for object 198c967016d1d00e0fc01d66d500fec19cb672e2
Removing note for object 6d7b633c45a92a296093e657ced14d46d8e86970
Removing note for object 8f6653f2c207619ceba3794249d8bac152454b16
Removing note for object c04389fb08740d6a3df7158a5e4843bdc07d2539
Removing note for object 77cd9bf11d2a4b1577dbcb65eafef24ca5f8d64c
Removing note for object 4d2fca6077788dcdecd4ef82eb45155d3d3c6ae9
Removing note for object 7f5b0d2394f7a4410784788eb55a86357795e0ee
Removing note for object 77c91abace28d046f8f08482515dd4d0ee20e771
Removing note for object 407c31999146268ab83d71891c905685839800c9
Removing note for object eb3c3aede523d729990ac25c62a93eb47c21e2e3
Removing note for object 7d116c2f10b15fa50a8e9f229b3b81c5be8980fa
Removing note for object 8b658fffa694c94a228bd277048256f1ede590d1
Removing note for object 0cb7eabc69f7cd5f3859906e5aa190bf6a0080dc
Removing note for object 1270dedbb9873b651b7661f6fd7f20eca25dcce9
Removing note for object b944dbe8ce8fa4df89750bdf3a6cd8828ff2f1b9
Removing note for object a8b0b847225e38e28d972bb583db100457dbf2c0
Removing note for object 46dcf25ab1fb7b08d57dfef57c2d4ef9cdea0368
Removing note for object 1ef946fbe3fce53728ce0f4e3f3b686f29783ea9
Removing note for object 9fb987e1900004b51a70d9945feb70d1a26c5db9
Removing note for object 697e0a1102060a6a7f0e78c614e6e088e22a746d
Removing note for object 5c65b7962b5bb7291f385885ae0fe5dc5dd1f9f9
Removing note for object bdeafb301e44b0e4db0f738a2d2a7beefdb70b70
Removing note for object 51b4081b24cd2ae32dda79a6bf89c6ca47cd0e19
Removing note for object 6699f4279478278b1b456670806c5114e5b94cd3
Removing note for object 24a6294035c71abc89705f20573835a048058e48
Removing note for object 68e303067eaade6915640259529f90f06a3d723f
Removing note for object 47797ab742998acf558ec5ecd8f73a170767322d
Removing note for object a68559cad834c4bf10f897cacff96708fd4c9a06
Removing note for object 257cfeaa5d3091ff76387dc6129e83307e8ec0c5
Removing note for object f133b89cb79d15f0d85a19317b2dbc5a871c2039
Removing note for object bff2d39b4f7122bd4c5caee3de353a774d1e632a
Removing note for object b2f9acae37b0cff7904de95d05e6077d318696c2
Removing note for object 46f7cc54c0193d02dc4dff1c8f998cfebb8c17b8
Removing note for object d38ec8f851adf470131178085bfbaab4b12ad2a7
Removing note for object 597947c97e89280e1eddffc4c30e36c1cb5e8882
Removing note for object f297f34cfbd904559c0d202b578b112ef5ae50c2
Removing note for object edd7609018ee7927fd1f8604ea3223e98a44a245
Removing note for object 03f8530d6eb3617ab8c874b47651509115d54b5e
Removing note for object ae3ed93531b892b72e7ae1125b3c0e266df4ab70
Removing note for object ac647561477b7eddb3807defcb481b30af7db978
Removing note for object 3f096680dbfb873aa9008e9e22559cc94c4a634e
Removing note for object 7d50e571ffcb9d83478504d8fdd403aecd8df6a3
Removing note for object 19eb0d4282bc5d4e46ec80864a71cd2e48bcf18c
Removing note for object 5a50ba526cb7a741e3736b33e111cd5a35e68d3f
Removing note for object 90911a48f69e3d23142660e2e658bb72d6bb30d2
Removing note for object 382d7647311957adb8d7feccfbfddfd6d092d875
Removing note for object ab5f23d01513db15925fbc0d19e07dc67bb7695d
ok 5 - deleting most notes with git-notes
expecting success of 3305.6 'most notes deleted correctly with git-notes':
git log HEAD~$remove_notes | grep "^ " > output &&
i=$(($num_notes - $remove_notes)) &&
while test $i -gt 0
do
echo " commit #$i" &&
echo " note #$i" &&
i=$(($i - 1)) || return 1
done > expect &&
test_cmp expect output
ok 6 - most notes deleted correctly with git-notes
expecting success of 3305.7 'stable fanout 1 is followed by stable fanout 0':
i=$remove_notes &&
fanout=1 &&
while test $i -gt 0
do
i=$(($i - 1)) &&
if touched_one_note_with_fanout refs/notes/commits~$i D $fanout
then
continue
elif test $fanout -eq 1
then
fanout=0 &&
if all_notes_have_fanout refs/notes/commits~$i $fanout
then
echo "Fanout 1 -> 0 at refs/notes/commits~$i" &&
continue
fi
fi &&
echo "Failed fanout=$fanout check at refs/notes/commits~$i" &&
git ls-tree -r --name-only refs/notes/commits~$i &&
return 1
done &&
all_notes_have_fanout refs/notes/commits 0
Fanout 1 -> 0 at refs/notes/commits~43
ok 7 - stable fanout 1 is followed by stable fanout 0
# passed all 7 test(s)
1..7
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3404-rebase-interactive.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3404-rebase-interactive/.git/
expecting success of 3404.1 'setup':
git switch -C primary &&
test_commit A file1 &&
test_commit B file1 &&
test_commit C file2 &&
test_commit D file1 &&
test_commit E file3 &&
git checkout -b branch1 A &&
test_commit F file4 &&
test_commit G file1 &&
test_commit H file5 &&
git checkout -b branch2 F &&
test_commit I file6 &&
git checkout -b conflict-branch A &&
test_commit one conflict &&
test_commit two conflict &&
test_commit three conflict &&
test_commit four conflict &&
git checkout -b no-conflict-branch A &&
test_commit J fileJ &&
test_commit K fileK &&
test_commit L fileL &&
test_commit M fileM &&
git checkout -b no-ff-branch A &&
test_commit N fileN &&
test_commit O fileO &&
test_commit P fileP
Switched to a new branch 'primary'
[primary (root-commit) 6e62bf8] A
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file1
[primary 313fe96] B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[primary d0f65f2] C
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file2
[primary 0547e3f] D
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[primary 8f99a4f] E
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file3
Switched to a new branch 'branch1'
[branch1 cfefd94] F
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file4
[branch1 83751a6] G
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[branch1 4373208] H
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file5
Switched to a new branch 'branch2'
[branch2 615be62] I
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file6
Switched to a new branch 'conflict-branch'
[conflict-branch b895952] one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 conflict
[conflict-branch 766a798] two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[conflict-branch 1eadf03] three
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[conflict-branch f91a2b3] four
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to a new branch 'no-conflict-branch'
[no-conflict-branch 808874f] J
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 fileJ
[no-conflict-branch 265b89e] K
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 fileK
[no-conflict-branch 6b0f5e6] L
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 fileL
[no-conflict-branch 3389558] M
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 fileM
Switched to a new branch 'no-ff-branch'
[no-ff-branch 53b4423] N
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 fileN
[no-ff-branch cc47714] O
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 fileO
[no-ff-branch faef1a5] P
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 fileP
ok 1 - setup
expecting success of 3404.2 'rebase --keep-empty':
git checkout -b emptybranch primary &&
git commit --allow-empty -m "empty" &&
git rebase --keep-empty -i HEAD~2 &&
git log --oneline >actual &&
test_line_count = 6 actual
Switched to a new branch 'emptybranch'
[emptybranch da33401] empty
Author: A U Thor <author@example.com>
Successfully rebased and updated refs/heads/emptybranch.
ok 2 - rebase --keep-empty
expecting success of 3404.3 'rebase -i with empty todo list':
cat >expect <<-\EOF &&
error: nothing to do
EOF
(
set_fake_editor &&
test_must_fail env FAKE_LINES="#" \
git rebase -i HEAD^ >output 2>&1
) &&
tail -n 1 output >actual && # Ignore output about changing todo list
test_cmp expect actual
ok 3 - rebase -i with empty todo list
expecting success of 3404.4 'rebase -i with the exec command':
git checkout primary &&
(
set_fake_editor &&
FAKE_LINES="1 exec_>touch-one
2 exec_>touch-two exec_false exec_>touch-three
3 4 exec_>\"touch-file__name_with_spaces\";_>touch-after-semicolon 5" &&
export FAKE_LINES &&
test_must_fail git rebase -i A
) &&
test_path_is_file touch-one &&
test_path_is_file touch-two &&
# Missing because we should have stopped by now.
test_path_is_missing touch-three &&
test_cmp_rev C HEAD &&
git rebase --continue &&
test_path_is_file touch-three &&
test_path_is_file "touch-file name with spaces" &&
test_path_is_file touch-after-semicolon &&
test_cmp_rev primary HEAD &&
rm -f touch-*
Switched to branch 'primary'
rebase -i script before editing:
pick 313fe96 B
pick d0f65f2 C
pick 0547e3f D
pick 8f99a4f E
rebase -i script after editing:
pick 313fe96 B
exec >touch-one
pick d0f65f2 C
exec >touch-two
exec false
exec >touch-three
pick 0547e3f D
pick 8f99a4f E
exec >"touch-file name with spaces"; >touch-after-semicolon
Rebasing (2/9)
Executing: >touch-one
Rebasing (3/9)
Rebasing (4/9)
Executing: >touch-two
Rebasing (5/9)
Executing: false
warning: execution failed: false
You can fix the problem, and then run
git rebase --continue
Rebasing (6/9)
Executing: >touch-three
Rebasing (7/9)
Rebasing (8/9)
Rebasing (9/9)
Executing: >"touch-file name with spaces"; >touch-after-semicolon
Successfully rebased and updated refs/heads/primary.
ok 4 - rebase -i with the exec command
expecting success of 3404.5 'rebase -i with the exec command runs from tree root':
git checkout primary &&
mkdir subdir && (cd subdir &&
set_fake_editor &&
FAKE_LINES="1 exec_>touch-subdir" \
git rebase -i HEAD^
) &&
test_path_is_file touch-subdir &&
rm -fr subdir
Already on 'primary'
rebase -i script before editing:
pick 8f99a4f E
rebase -i script after editing:
pick 8f99a4f E
exec >touch-subdir
Rebasing (2/2)
Executing: >touch-subdir
Successfully rebased and updated refs/heads/primary.
ok 5 - rebase -i with the exec command runs from tree root
expecting success of 3404.6 'rebase -i with exec allows git commands in subdirs':
test_when_finished "rm -rf subdir" &&
test_when_finished "git rebase --abort ||:" &&
git checkout primary &&
mkdir subdir && (cd subdir &&
set_fake_editor &&
FAKE_LINES="1 x_cd_subdir_&&_git_rev-parse_--is-inside-work-tree" \
git rebase -i HEAD^
)
Already on 'primary'
rebase -i script before editing:
pick 8f99a4f E
rebase -i script after editing:
pick 8f99a4f E
x cd subdir && git rev-parse --is-inside-work-tree
Rebasing (2/2)
Executing: cd subdir && git rev-parse --is-inside-work-tree
true
Successfully rebased and updated refs/heads/primary.
fatal: No rebase in progress?
ok 6 - rebase -i with exec allows git commands in subdirs
expecting success of 3404.7 'rebase -i sets work tree properly':
test_when_finished "rm -rf subdir" &&
test_when_finished "test_might_fail git rebase --abort" &&
mkdir subdir &&
git rebase -x "(cd subdir && git rev-parse --show-toplevel)" HEAD^ \
>actual &&
! grep "/subdir$" actual
Rebasing (2/2)
Executing: (cd subdir && git rev-parse --show-toplevel)
Successfully rebased and updated refs/heads/primary.
fatal: No rebase in progress?
ok 7 - rebase -i sets work tree properly
expecting success of 3404.8 'rebase -i with the exec command checks tree cleanness':
git checkout primary &&
(
set_fake_editor &&
test_must_fail env FAKE_LINES="exec_echo_foo_>file1 1" \
git rebase -i HEAD^
) &&
test_cmp_rev primary^ HEAD &&
git reset --hard &&
git rebase --continue
Already on 'primary'
rebase -i script before editing:
pick 8f99a4f E
rebase -i script after editing:
exec echo foo >file1
pick 8f99a4f E
Rebasing (1/2)
Executing: echo foo >file1
error: cannot rebase: You have unstaged changes.
warning: execution succeeded: echo foo >file1
but left changes to the index and/or the working tree.
Commit or stash your changes, and then run
git rebase --continue
HEAD is now at 0547e3f D
Rebasing (2/2)
Successfully rebased and updated refs/heads/primary.
ok 8 - rebase -i with the exec command checks tree cleanness
expecting success of 3404.9 'rebase -x with empty command fails':
test_when_finished "git rebase --abort ||:" &&
test_must_fail env git rebase -x "" @ 2>actual &&
test_write_lines "error: empty exec command" >expected &&
test_cmp expected actual &&
test_must_fail env git rebase -x " " @ 2>actual &&
test_cmp expected actual
fatal: No rebase in progress?
ok 9 - rebase -x with empty command fails
expecting success of 3404.10 'rebase -x with newline in command fails':
test_when_finished "git rebase --abort ||:" &&
test_must_fail env git rebase -x "a${LF}b" @ 2>actual &&
test_write_lines "error: exec commands cannot contain newlines" \
>expected &&
test_cmp expected actual
fatal: No rebase in progress?
ok 10 - rebase -x with newline in command fails
expecting success of 3404.11 'rebase -i with exec of inexistent command':
git checkout primary &&
test_when_finished "git rebase --abort" &&
(
set_fake_editor &&
test_must_fail env FAKE_LINES="exec_this-command-does-not-exist 1" \
git rebase -i HEAD^ >actual 2>&1
) &&
! grep "Maybe git-rebase is broken" actual
Already on 'primary'
ok 11 - rebase -i with exec of inexistent command
expecting success of 3404.12 'implicit interactive rebase does not invoke sequence editor':
test_when_finished "git rebase --abort ||:" &&
GIT_SEQUENCE_EDITOR="echo bad >" git rebase -x"echo one" @^
Rebasing (2/2)
Executing: echo one
one
Successfully rebased and updated refs/heads/primary.
fatal: No rebase in progress?
ok 12 - implicit interactive rebase does not invoke sequence editor
expecting success of 3404.13 'no changes are a nop':
git checkout branch2 &&
git rebase -i F &&
test "$(git symbolic-ref -q HEAD)" = "refs/heads/branch2" &&
test_cmp_rev I HEAD
Switched to branch 'branch2'
Successfully rebased and updated refs/heads/branch2.
ok 13 - no changes are a nop
expecting success of 3404.14 'test the [branch] option':
git checkout -b dead-end &&
git rm file6 &&
git commit -m "stop here" &&
git rebase -i F branch2 &&
test "$(git symbolic-ref -q HEAD)" = "refs/heads/branch2" &&
test_cmp_rev I branch2 &&
test_cmp_rev I HEAD
Switched to a new branch 'dead-end'
rm 'file6'
[dead-end f814f58] stop here
Author: A U Thor <author@example.com>
1 file changed, 1 deletion(-)
delete mode 100644 file6
Successfully rebased and updated refs/heads/branch2.
ok 14 - test the [branch] option
expecting success of 3404.15 'test --onto <branch>':
git checkout -b test-onto branch2 &&
git rebase -i --onto branch1 F &&
test "$(git symbolic-ref -q HEAD)" = "refs/heads/test-onto" &&
test_cmp_rev HEAD^ branch1 &&
test_cmp_rev I branch2
Switched to a new branch 'test-onto'
Rebasing (1/1)
Successfully rebased and updated refs/heads/test-onto.
ok 15 - test --onto <branch>
expecting success of 3404.16 'rebase on top of a non-conflicting commit':
git checkout branch1 &&
git tag original-branch1 &&
git rebase -i branch2 &&
test file6 = $(git diff --name-only original-branch1) &&
test "$(git symbolic-ref -q HEAD)" = "refs/heads/branch1" &&
test_cmp_rev I branch2 &&
test_cmp_rev I HEAD~2
Switched to branch 'branch1'
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/branch1.
ok 16 - rebase on top of a non-conflicting commit
expecting success of 3404.17 'reflog for the branch shows state before rebase':
test_cmp_rev branch1@{1} original-branch1
ok 17 - reflog for the branch shows state before rebase
expecting success of 3404.18 'reflog for the branch shows correct finish message':
printf "rebase (finish): refs/heads/branch1 onto %s\n" \
"$(git rev-parse branch2)" >expected &&
git log -g --pretty=%gs -1 refs/heads/branch1 >actual &&
test_cmp expected actual
ok 18 - reflog for the branch shows correct finish message
expecting success of 3404.19 'exchange two commits':
(
set_fake_editor &&
FAKE_LINES="2 1" git rebase -i HEAD~2
) &&
test H = $(git cat-file commit HEAD^ | sed -ne \$p) &&
test G = $(git cat-file commit HEAD | sed -ne \$p) &&
blob1=$(git rev-parse --short HEAD^:file1) &&
blob2=$(git rev-parse --short HEAD:file1) &&
commit=$(git rev-parse --short HEAD)
rebase -i script before editing:
pick ae8f65e G
pick f5f5249 H
rebase -i script after editing:
pick f5f5249 H
pick ae8f65e G
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/branch1.
ok 19 - exchange two commits
expecting success of 3404.20 'stop on conflicting pick':
cat >expect <<-EOF &&
diff --git a/file1 b/file1
index $blob1..$blob2 100644
--- a/file1
+++ b/file1
@@ -1 +1 @@
-A
+G
EOF
cat >expect2 <<-EOF &&
<<<<<<< HEAD
D
=======
G
>>>>>>> $commit (G)
EOF
git tag new-branch1 &&
test_must_fail git rebase -i primary &&
test "$(git rev-parse HEAD~3)" = "$(git rev-parse primary)" &&
test_cmp expect .git/rebase-merge/patch &&
test_cmp expect2 file1 &&
test "$(git diff --name-status |
sed -n -e "/^U/s/^U[^a-z]*//p")" = file1 &&
test 4 = $(grep -v "^#" < .git/rebase-merge/done | wc -l) &&
test 0 = $(grep -c "^[^#]" < .git/rebase-merge/git-rebase-todo)
Rebasing (1/4)
Rebasing (2/4)
Rebasing (3/4)
Rebasing (4/4)
Auto-merging file1
CONFLICT (content): Merge conflict in file1
error: could not apply 5d18e54... G
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 5d18e54... G
ok 20 - stop on conflicting pick
expecting success of 3404.21 'show conflicted patch':
GIT_TRACE=1 git rebase --show-current-patch >/dev/null 2>stderr &&
grep "show.*REBASE_HEAD" stderr &&
# the original stopped-sha1 is abbreviated
stopped_sha1="$(git rev-parse $(cat ".git/rebase-merge/stopped-sha"))" &&
test "$(git rev-parse REBASE_HEAD)" = "$stopped_sha1"
trace: run_command: git show REBASE_HEAD --
trace: built-in: git show REBASE_HEAD --
ok 21 - show conflicted patch
expecting success of 3404.22 'abort':
git rebase --abort &&
test_cmp_rev new-branch1 HEAD &&
test "$(git symbolic-ref -q HEAD)" = "refs/heads/branch1" &&
test_path_is_missing .git/rebase-merge
ok 22 - abort
expecting success of 3404.23 'abort with error when new base cannot be checked out':
git rm --cached file1 &&
git commit -m "remove file in base" &&
test_must_fail git rebase -i primary > output 2>&1 &&
test_i18ngrep "The following untracked working tree files would be overwritten by checkout:" \
output &&
test_i18ngrep "file1" output &&
test_path_is_missing .git/rebase-merge &&
rm file1 &&
git reset --hard HEAD^
rm 'file1'
[branch1 2dd5570] remove file in base
Author: A U Thor <author@example.com>
1 file changed, 1 deletion(-)
delete mode 100644 file1
error: The following untracked working tree files would be overwritten by checkout:
file1
HEAD is now at 5d18e54 G
ok 23 - abort with error when new base cannot be checked out
expecting success of 3404.24 'retain authorship':
echo A > file7 &&
git add file7 &&
test_tick &&
GIT_AUTHOR_NAME="Twerp Snog" git commit -m "different author" &&
git tag twerp &&
git rebase -i --onto primary HEAD^ &&
git show HEAD | grep "^Author: Twerp Snog"
[branch1 2596307] different author
Author: Twerp Snog <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file7
Rebasing (1/1)
Successfully rebased and updated refs/heads/branch1.
Author: Twerp Snog <author@example.com>
ok 24 - retain authorship
expecting success of 3404.25 'retain authorship w/ conflicts':
oGIT_AUTHOR_NAME=$GIT_AUTHOR_NAME &&
test_when_finished "GIT_AUTHOR_NAME=\$oGIT_AUTHOR_NAME" &&
git reset --hard twerp &&
test_commit a conflict a conflict-a &&
git reset --hard twerp &&
GIT_AUTHOR_NAME=AttributeMe &&
export GIT_AUTHOR_NAME &&
test_commit b conflict b conflict-b &&
GIT_AUTHOR_NAME=$oGIT_AUTHOR_NAME &&
test_must_fail git rebase -i conflict-a &&
echo resolved >conflict &&
git add conflict &&
git rebase --continue &&
test_cmp_rev conflict-a^0 HEAD^ &&
git show >out &&
grep AttributeMe out
HEAD is now at 2596307 different author
[branch1 748a43d] a
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 conflict
HEAD is now at 2596307 different author
[branch1 34d1a6c] b
Author: AttributeMe <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 conflict
Rebasing (1/1)
Auto-merging conflict
CONFLICT (add/add): Merge conflict in conflict
error: could not apply 34d1a6c... b
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 34d1a6c... b
[detached HEAD 7866b12] b
Author: AttributeMe <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Successfully rebased and updated refs/heads/branch1.
Author: AttributeMe <author@example.com>
ok 25 - retain authorship w/ conflicts
expecting success of 3404.26 'squash':
git reset --hard twerp &&
echo B > file7 &&
test_tick &&
GIT_AUTHOR_NAME="Nitfol" git commit -m "nitfol" file7 &&
echo "******************************" &&
(
set_fake_editor &&
FAKE_LINES="1 squash 2" EXPECT_HEADER_COUNT=2 \
git rebase -i --onto primary HEAD~2
) &&
test B = $(cat file7) &&
test_cmp_rev HEAD^ primary
HEAD is now at 2596307 different author
[branch1 cdf577a] nitfol
Author: Nitfol <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
******************************
rebase -i script before editing:
pick 2596307 different author
pick cdf577a nitfol
rebase -i script after editing:
pick 2596307 different author
squash cdf577a nitfol
Rebasing (1/2)
Rebasing (2/2)
[detached HEAD d2d5ba7] different author
Author: Twerp Snog <author@example.com>
Date: Thu Apr 7 15:33:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 file7
Successfully rebased and updated refs/heads/branch1.
ok 26 - squash
expecting success of 3404.27 'retain authorship when squashing':
git show HEAD | grep "^Author: Twerp Snog"
Author: Twerp Snog <author@example.com>
ok 27 - retain authorship when squashing
expecting success of 3404.28 '--continue tries to commit':
git reset --hard D &&
test_tick &&
(
set_fake_editor &&
test_must_fail git rebase -i --onto new-branch1 HEAD^ &&
echo resolved > file1 &&
git add file1 &&
FAKE_COMMIT_MESSAGE="chouette!" git rebase --continue
) &&
test_cmp_rev HEAD^ new-branch1 &&
git show HEAD | grep chouette
HEAD is now at 0547e3f D
Rebasing (1/1)
Auto-merging file1
CONFLICT (content): Merge conflict in file1
error: could not apply 0547e3f... D
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 0547e3f... D
[detached HEAD e986ac9] chouette!
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Successfully rebased and updated refs/heads/branch1.
chouette!
ok 28 - --continue tries to commit
expecting success of 3404.29 'verbose flag is heeded, even after --continue':
git reset --hard primary@{1} &&
test_tick &&
test_must_fail git rebase -v -i --onto new-branch1 HEAD^ &&
echo resolved > file1 &&
git add file1 &&
git rebase --continue > output &&
grep "^ file1 | 2 +-$" output
HEAD is now at 0547e3f D
Changes from 6e62bf890e21973b771e4e6fc28f5ade62edb4bc to 5d18e5414f663da21d1363c271f2d684aeda7b5b:
file1 | 2 +-
file4 | 1 +
file5 | 1 +
file6 | 1 +
4 files changed, 4 insertions(+), 1 deletion(-)
create mode 100644 file4
create mode 100644 file5
create mode 100644 file6
Rebasing (1/1)
Auto-merging file1
CONFLICT (content): Merge conflict in file1
error: could not apply 0547e3f... D
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 0547e3f... D
Successfully rebased and updated refs/heads/branch1.
file1 | 2 +-
ok 29 - verbose flag is heeded, even after --continue
expecting success of 3404.30 'multi-squash only fires up editor once':
base=$(git rev-parse HEAD~4) &&
(
set_fake_editor &&
FAKE_COMMIT_AMEND="ONCE" \
FAKE_LINES="1 squash 2 squash 3 squash 4" \
EXPECT_HEADER_COUNT=4 \
git rebase -i $base
) &&
test $base = $(git rev-parse HEAD^) &&
test 1 = $(git show | grep ONCE | wc -l)
rebase -i script before editing:
pick 615be62 I
pick 0626e8d H
pick 5d18e54 G
pick 7384ee8 D
rebase -i script after editing:
pick 615be62 I
squash 0626e8d H
squash 5d18e54 G
squash 7384ee8 D
Rebasing (2/4)
Rebasing (3/4)
Rebasing (4/4)
[detached HEAD 450e393] I
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:21:13 2005 -0700
3 files changed, 3 insertions(+), 1 deletion(-)
create mode 100644 file5
create mode 100644 file6
Successfully rebased and updated refs/heads/branch1.
ok 30 - multi-squash only fires up editor once
expecting success of 3404.31 'multi-fixup does not fire up editor':
git checkout -b multi-fixup E &&
base=$(git rev-parse HEAD~4) &&
(
set_fake_editor &&
FAKE_COMMIT_AMEND="NEVER" \
FAKE_LINES="1 fixup 2 fixup 3 fixup 4" \
git rebase -i $base
) &&
test $base = $(git rev-parse HEAD^) &&
test 0 = $(git show | grep NEVER | wc -l) &&
git checkout @{-1} &&
git branch -D multi-fixup
Switched to a new branch 'multi-fixup'
rebase -i script before editing:
pick 313fe96 B
pick d0f65f2 C
pick 0547e3f D
pick 8f99a4f E
rebase -i script after editing:
pick 313fe96 B
fixup d0f65f2 C
fixup 0547e3f D
fixup 8f99a4f E
Rebasing (2/4)
Rebasing (3/4)
Rebasing (4/4)
Successfully rebased and updated refs/heads/multi-fixup.
Switched to branch 'branch1'
Deleted branch multi-fixup (was b72b875).
ok 31 - multi-fixup does not fire up editor
expecting success of 3404.32 'commit message used after conflict':
git checkout -b conflict-fixup conflict-branch &&
base=$(git rev-parse HEAD~4) &&
(
set_fake_editor &&
test_must_fail env FAKE_LINES="1 fixup 3 fixup 4" \
git rebase -i $base &&
echo three > conflict &&
git add conflict &&
FAKE_COMMIT_AMEND="ONCE" EXPECT_HEADER_COUNT=2 \
git rebase --continue
) &&
test $base = $(git rev-parse HEAD^) &&
test 1 = $(git show | grep ONCE | wc -l) &&
git checkout @{-1} &&
git branch -D conflict-fixup
Switched to a new branch 'conflict-fixup'
rebase -i script before editing:
pick b895952 one
pick 766a798 two
pick 1eadf03 three
pick f91a2b3 four
rebase -i script after editing:
pick b895952 one
fixup 1eadf03 three
fixup f91a2b3 four
Rebasing (2/3)
Auto-merging conflict
CONFLICT (content): Merge conflict in conflict
error: could not apply 1eadf03... three
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 1eadf03... three
[detached HEAD 0894a89] one
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:22:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 conflict
Rebasing (3/3)
Successfully rebased and updated refs/heads/conflict-fixup.
Switched to branch 'branch1'
Deleted branch conflict-fixup (was 72b9a95).
ok 32 - commit message used after conflict
expecting success of 3404.33 'commit message retained after conflict':
git checkout -b conflict-squash conflict-branch &&
base=$(git rev-parse HEAD~4) &&
(
set_fake_editor &&
test_must_fail env FAKE_LINES="1 fixup 3 squash 4" \
git rebase -i $base &&
echo three > conflict &&
git add conflict &&
FAKE_COMMIT_AMEND="TWICE" EXPECT_HEADER_COUNT=2 \
git rebase --continue
) &&
test $base = $(git rev-parse HEAD^) &&
test 2 = $(git show | grep TWICE | wc -l) &&
git checkout @{-1} &&
git branch -D conflict-squash
Switched to a new branch 'conflict-squash'
rebase -i script before editing:
pick b895952 one
pick 766a798 two
pick 1eadf03 three
pick f91a2b3 four
rebase -i script after editing:
pick b895952 one
fixup 1eadf03 three
squash f91a2b3 four
Rebasing (2/3)
Auto-merging conflict
CONFLICT (content): Merge conflict in conflict
error: could not apply 1eadf03... three
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 1eadf03... three
[detached HEAD f044f69] one
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:22:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 conflict
Rebasing (3/3)
[detached HEAD e98a2cf] one
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:22:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 conflict
Successfully rebased and updated refs/heads/conflict-squash.
Switched to branch 'branch1'
Deleted branch conflict-squash (was e98a2cf).
ok 33 - commit message retained after conflict
expecting success of 3404.34 'squash and fixup generate correct log messages':
cat >expect-squash-fixup <<-\EOF &&
B
D
ONCE
EOF
git checkout -b squash-fixup E &&
base=$(git rev-parse HEAD~4) &&
(
set_fake_editor &&
FAKE_COMMIT_AMEND="ONCE" \
FAKE_LINES="1 fixup 2 squash 3 fixup 4" \
EXPECT_HEADER_COUNT=4 \
git rebase -i $base
) &&
git cat-file commit HEAD | sed -e 1,/^\$/d > actual-squash-fixup &&
test_cmp expect-squash-fixup actual-squash-fixup &&
git cat-file commit HEAD@{2} |
grep "^# This is a combination of 3 commits\." &&
git cat-file commit HEAD@{3} |
grep "^# This is a combination of 2 commits\." &&
git checkout @{-1} &&
git branch -D squash-fixup
Switched to a new branch 'squash-fixup'
rebase -i script before editing:
pick 313fe96 B
pick d0f65f2 C
pick 0547e3f D
pick 8f99a4f E
rebase -i script after editing:
pick 313fe96 B
fixup d0f65f2 C
squash 0547e3f D
fixup 8f99a4f E
Rebasing (2/4)
Rebasing (3/4)
Rebasing (4/4)
[detached HEAD 2e14af9] B
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
3 files changed, 3 insertions(+), 1 deletion(-)
create mode 100644 file2
create mode 100644 file3
Successfully rebased and updated refs/heads/squash-fixup.
# This is a combination of 3 commits.
# This is a combination of 2 commits.
Switched to branch 'branch1'
Deleted branch squash-fixup (was 2e14af9).
ok 34 - squash and fixup generate correct log messages
expecting success of 3404.35 'squash ignores comments':
git checkout -b skip-comments E &&
base=$(git rev-parse HEAD~4) &&
(
set_fake_editor &&
FAKE_COMMIT_AMEND="ONCE" \
FAKE_LINES="# 1 # squash 2 # squash 3 # squash 4 #" \
EXPECT_HEADER_COUNT=4 \
git rebase -i $base
) &&
test $base = $(git rev-parse HEAD^) &&
test 1 = $(git show | grep ONCE | wc -l) &&
git checkout @{-1} &&
git branch -D skip-comments
Switched to a new branch 'skip-comments'
rebase -i script before editing:
pick 313fe96 B
pick d0f65f2 C
pick 0547e3f D
pick 8f99a4f E
rebase -i script after editing:
# comment
pick 313fe96 B
# comment
squash d0f65f2 C
# comment
squash 0547e3f D
# comment
squash 8f99a4f E
# comment
Rebasing (2/4)
Rebasing (3/4)
Rebasing (4/4)
[detached HEAD c7441e9] B
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
3 files changed, 3 insertions(+), 1 deletion(-)
create mode 100644 file2
create mode 100644 file3
Successfully rebased and updated refs/heads/skip-comments.
Switched to branch 'branch1'
Deleted branch skip-comments (was c7441e9).
ok 35 - squash ignores comments
expecting success of 3404.36 'squash ignores blank lines':
git checkout -b skip-blank-lines E &&
base=$(git rev-parse HEAD~4) &&
(
set_fake_editor &&
FAKE_COMMIT_AMEND="ONCE" \
FAKE_LINES="> 1 > squash 2 > squash 3 > squash 4 >" \
EXPECT_HEADER_COUNT=4 \
git rebase -i $base
) &&
test $base = $(git rev-parse HEAD^) &&
test 1 = $(git show | grep ONCE | wc -l) &&
git checkout @{-1} &&
git branch -D skip-blank-lines
Switched to a new branch 'skip-blank-lines'
rebase -i script before editing:
pick 313fe96 B
pick d0f65f2 C
pick 0547e3f D
pick 8f99a4f E
rebase -i script after editing:
pick 313fe96 B
squash d0f65f2 C
squash 0547e3f D
squash 8f99a4f E
Rebasing (3/4)
Rebasing (4/4)
Rebasing (5/4)
[detached HEAD c7441e9] B
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
3 files changed, 3 insertions(+), 1 deletion(-)
create mode 100644 file2
create mode 100644 file3
Successfully rebased and updated refs/heads/skip-blank-lines.
Switched to branch 'branch1'
Deleted branch skip-blank-lines (was c7441e9).
ok 36 - squash ignores blank lines
expecting success of 3404.37 'squash works as expected':
git checkout -b squash-works no-conflict-branch &&
one=$(git rev-parse HEAD~3) &&
(
set_fake_editor &&
FAKE_LINES="1 s 3 2" EXPECT_HEADER_COUNT=2 git rebase -i HEAD~3
) &&
test $one = $(git rev-parse HEAD~2)
Switched to a new branch 'squash-works'
rebase -i script before editing:
pick 265b89e K
pick 6b0f5e6 L
pick 3389558 M
rebase -i script after editing:
pick 265b89e K
s 3389558 M
pick 6b0f5e6 L
Rebasing (2/3)
[detached HEAD b352334] K
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:27:13 2005 -0700
2 files changed, 2 insertions(+)
create mode 100644 fileK
create mode 100644 fileM
Rebasing (3/3)
Successfully rebased and updated refs/heads/squash-works.
ok 37 - squash works as expected
expecting success of 3404.38 'interrupted squash works as expected':
git checkout -b interrupted-squash conflict-branch &&
one=$(git rev-parse HEAD~3) &&
(
set_fake_editor &&
test_must_fail env FAKE_LINES="1 squash 3 2" \
git rebase -i HEAD~3
) &&
test_write_lines one two four > conflict &&
git add conflict &&
test_must_fail git rebase --continue &&
echo resolved > conflict &&
git add conflict &&
git rebase --continue &&
test $one = $(git rev-parse HEAD~2)
Switched to a new branch 'interrupted-squash'
rebase -i script before editing:
pick 766a798 two
pick 1eadf03 three
pick f91a2b3 four
rebase -i script after editing:
pick 766a798 two
squash f91a2b3 four
pick 1eadf03 three
Rebasing (2/3)
Auto-merging conflict
CONFLICT (content): Merge conflict in conflict
error: could not apply f91a2b3... four
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply f91a2b3... four
[detached HEAD a2f4578] two
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:23:13 2005 -0700
1 file changed, 2 insertions(+)
Rebasing (3/3)
Auto-merging conflict
CONFLICT (content): Merge conflict in conflict
error: could not apply 1eadf03... three
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 1eadf03... three
[detached HEAD 6b76c65] three
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 3 deletions(-)
Successfully rebased and updated refs/heads/interrupted-squash.
ok 38 - interrupted squash works as expected
expecting success of 3404.39 'interrupted squash works as expected (case 2)':
git checkout -b interrupted-squash2 conflict-branch &&
one=$(git rev-parse HEAD~3) &&
(
set_fake_editor &&
test_must_fail env FAKE_LINES="3 squash 1 2" \
git rebase -i HEAD~3
) &&
test_write_lines one four > conflict &&
git add conflict &&
test_must_fail git rebase --continue &&
test_write_lines one two four > conflict &&
git add conflict &&
test_must_fail git rebase --continue &&
echo resolved > conflict &&
git add conflict &&
git rebase --continue &&
test $one = $(git rev-parse HEAD~2)
Switched to a new branch 'interrupted-squash2'
rebase -i script before editing:
pick 766a798 two
pick 1eadf03 three
pick f91a2b3 four
rebase -i script after editing:
pick f91a2b3 four
squash 766a798 two
pick 1eadf03 three
Rebasing (1/3)
Auto-merging conflict
CONFLICT (content): Merge conflict in conflict
error: could not apply f91a2b3... four
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply f91a2b3... four
[detached HEAD d1badcc] four
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
Rebasing (2/3)
Auto-merging conflict
CONFLICT (content): Merge conflict in conflict
error: could not apply 766a798... two
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 766a798... two
[detached HEAD 13f7405] four
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:25:13 2005 -0700
1 file changed, 2 insertions(+)
Rebasing (3/3)
Auto-merging conflict
CONFLICT (content): Merge conflict in conflict
error: could not apply 1eadf03... three
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 1eadf03... three
[detached HEAD 6785ad5] three
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 3 deletions(-)
Successfully rebased and updated refs/heads/interrupted-squash2.
ok 39 - interrupted squash works as expected (case 2)
expecting success of 3404.40 '--continue tries to commit, even for "edit"':
echo unrelated > file7 &&
git add file7 &&
test_tick &&
git commit -m "unrelated change" &&
parent=$(git rev-parse HEAD^) &&
test_tick &&
(
set_fake_editor &&
FAKE_LINES="edit 1" git rebase -i HEAD^ &&
echo edited > file7 &&
git add file7 &&
FAKE_COMMIT_MESSAGE="chouette!" git rebase --continue
) &&
test edited = $(git show HEAD:file7) &&
git show HEAD | grep chouette &&
test $parent = $(git rev-parse HEAD^)
[interrupted-squash2 98947cc] unrelated change
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file7
rebase -i script before editing:
pick 98947cc unrelated change
rebase -i script after editing:
edit 98947cc unrelated change
Rebasing (1/1)
Stopped at 98947cc... unrelated change
You can amend the commit now, with
git commit --amend
Once you are satisfied with your changes, run
git rebase --continue
[detached HEAD 9483ccd] chouette!
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:39:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 file7
Successfully rebased and updated refs/heads/interrupted-squash2.
chouette!
ok 40 - --continue tries to commit, even for "edit"
expecting success of 3404.41 'aborted --continue does not squash commits after "edit"':
old=$(git rev-parse HEAD) &&
test_tick &&
(
set_fake_editor &&
FAKE_LINES="edit 1" git rebase -i HEAD^ &&
echo "edited again" > file7 &&
git add file7 &&
test_must_fail env FAKE_COMMIT_MESSAGE=" " git rebase --continue
) &&
test $old = $(git rev-parse HEAD) &&
git rebase --abort
rebase -i script before editing:
pick 9483ccd chouette!
rebase -i script after editing:
edit 9483ccd chouette!
Rebasing (1/1)
Stopped at 9483ccd... chouette!
You can amend the commit now, with
git commit --amend
Once you are satisfied with your changes, run
git rebase --continue
Aborting commit due to empty commit message.
error: could not commit staged changes.
ok 41 - aborted --continue does not squash commits after "edit"
expecting success of 3404.42 'auto-amend only edited commits after "edit"':
test_tick &&
(
set_fake_editor &&
FAKE_LINES="edit 1" git rebase -i HEAD^ &&
echo "edited again" > file7 &&
git add file7 &&
FAKE_COMMIT_MESSAGE="edited file7 again" git commit &&
echo "and again" > file7 &&
git add file7 &&
test_tick &&
test_must_fail env FAKE_COMMIT_MESSAGE="and again" \
git rebase --continue
) &&
git rebase --abort
rebase -i script before editing:
pick 9483ccd chouette!
rebase -i script after editing:
edit 9483ccd chouette!
Rebasing (1/1)
Stopped at 9483ccd... chouette!
You can amend the commit now, with
git commit --amend
Once you are satisfied with your changes, run
git rebase --continue
[detached HEAD 9b7064d] edited file7 again
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
error:
You have uncommitted changes in your working tree. Please, commit them
first and then run 'git rebase --continue' again.
ok 42 - auto-amend only edited commits after "edit"
expecting success of 3404.43 'clean error after failed "exec"':
test_tick &&
test_when_finished "git rebase --abort || :" &&
(
set_fake_editor &&
test_must_fail env FAKE_LINES="1 exec_false" git rebase -i HEAD^
) &&
echo "edited again" > file7 &&
git add file7 &&
test_must_fail git rebase --continue 2>error &&
test_i18ngrep "you have staged changes in your working tree" error
rebase -i script before editing:
pick 9483ccd chouette!
rebase -i script after editing:
pick 9483ccd chouette!
exec false
Rebasing (2/2)
Executing: false
warning: execution failed: false
You can fix the problem, and then run
git rebase --continue
error: you have staged changes in your working tree
ok 43 - clean error after failed "exec"
expecting success of 3404.44 'rebase a detached HEAD':
grandparent=$(git rev-parse HEAD~2) &&
git checkout $(git rev-parse HEAD) &&
test_tick &&
(
set_fake_editor &&
FAKE_LINES="2 1" git rebase -i HEAD~2
) &&
test $grandparent = $(git rev-parse HEAD~2)
Note: switching to '9483ccdd3462028242a62a4b10b5300681f344d7'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 9483ccd chouette!
rebase -i script before editing:
pick 6785ad5 three
pick 9483ccd chouette!
rebase -i script after editing:
pick 9483ccd chouette!
pick 6785ad5 three
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated detached HEAD.
ok 44 - rebase a detached HEAD
expecting success of 3404.45 'rebase a commit violating pre-commit':
test_hook pre-commit <<-\EOF &&
test -z "$(git diff --cached --check)"
EOF
echo "monde! " >> file1 &&
test_tick &&
test_must_fail git commit -m doesnt-verify file1 &&
git commit -m doesnt-verify --no-verify file1 &&
test_tick &&
(
set_fake_editor &&
FAKE_LINES=2 git rebase -i HEAD~2
)
[detached HEAD c2de550] doesnt-verify
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
rebase -i script before editing:
pick 2a5c937 three
pick c2de550 doesnt-verify
rebase -i script after editing:
pick c2de550 doesnt-verify
Rebasing (1/1)
Successfully rebased and updated detached HEAD.
ok 45 - rebase a commit violating pre-commit
expecting success of 3404.46 'rebase with a file named HEAD in worktree':
git reset --hard &&
git checkout -b branch3 A &&
(
GIT_AUTHOR_NAME="Squashed Away" &&
export GIT_AUTHOR_NAME &&
>HEAD &&
git add HEAD &&
git commit -m "Add head" &&
>BODY &&
git add BODY &&
git commit -m "Add body"
) &&
(
set_fake_editor &&
FAKE_LINES="1 squash 2" git rebase -i @{-1}
) &&
test "$(git show -s --pretty=format:%an)" = "Squashed Away"
HEAD is now at 772e3c6 doesnt-verify
Warning: you are leaving 2 commits behind, not connected to
any of your branches:
772e3c6 doesnt-verify
82d2839 chouette!
If you want to keep them by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 772e3c6
Switched to a new branch 'branch3'
[branch3 838aee5] Add head
Author: Squashed Away <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 HEAD
[branch3 271c26d] Add body
Author: Squashed Away <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 BODY
rebase -i script before editing:
pick 838aee5 Add head
pick 271c26d Add body
rebase -i script after editing:
pick 838aee5 Add head
squash 271c26d Add body
Rebasing (1/2)
Rebasing (2/2)
[detached HEAD b224944] Add head
Author: Squashed Away <author@example.com>
Date: Thu Apr 7 15:46:13 2005 -0700
2 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 BODY
create mode 100644 HEAD
Successfully rebased and updated refs/heads/branch3.
ok 46 - rebase with a file named HEAD in worktree
expecting success of 3404.47 'do "noop" when there is nothing to cherry-pick':
git checkout -b branch4 HEAD &&
GIT_EDITOR=: git commit --amend \
--author="Somebody else <somebody@else.com>" &&
test $(git rev-parse branch3) != $(git rev-parse branch4) &&
git rebase -i branch3 &&
test_cmp_rev branch3 branch4
Switched to a new branch 'branch4'
[branch4 beb8dd6] Add head
Author: Somebody else <somebody@else.com>
Date: Thu Apr 7 15:46:13 2005 -0700
2 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 BODY
create mode 100644 HEAD
warning: skipped previously applied commit beb8dd6
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Successfully rebased and updated refs/heads/branch4.
ok 47 - do "noop" when there is nothing to cherry-pick
expecting success of 3404.48 'submodule rebase setup':
git checkout A &&
mkdir sub &&
(
cd sub && git init && >elif &&
git add elif && git commit -m "submodule initial"
) &&
echo 1 >file1 &&
git add file1 sub &&
test_tick &&
git commit -m "One" &&
echo 2 >file1 &&
test_tick &&
git commit -a -m "Two" &&
(
cd sub && echo 3 >elif &&
git commit -a -m "submodule second"
) &&
test_tick &&
git commit -a -m "Three changes submodule"
Note: switching to 'A'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 6e62bf8 A
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3404-rebase-interactive/sub/.git/
[master (root-commit) 6795896] submodule initial
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 elif
warning: adding embedded git repository: sub
hint: You've added another git repository inside your current repository.
hint: Clones of the outer repository will not contain the contents of
hint: the embedded repository and will not know how to obtain it.
hint: If you meant to add a submodule, use:
hint:
hint: git submodule add <url> sub
hint:
hint: If you added this path by mistake, you can remove it from the
hint: index with:
hint:
hint: git rm --cached sub
hint:
hint: See "git help submodule" for more information.
[detached HEAD 068ccfe] One
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+), 1 deletion(-)
create mode 160000 sub
[detached HEAD 8cd1639] Two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[master 628e79e] submodule second
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[detached HEAD d80ae32] Three changes submodule
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 48 - submodule rebase setup
expecting success of 3404.49 'submodule rebase -i':
(
set_fake_editor &&
FAKE_LINES="1 squash 2 3" git rebase -i A
)
rebase -i script before editing:
pick 068ccfe One
pick 8cd1639 Two
pick d80ae32 Three changes submodule
rebase -i script after editing:
pick 068ccfe One
squash 8cd1639 Two
pick d80ae32 Three changes submodule
Rebasing (2/3)
[detached HEAD 1dab715] One
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:47:13 2005 -0700
2 files changed, 2 insertions(+), 1 deletion(-)
create mode 160000 sub
Rebasing (3/3)
Successfully rebased and updated detached HEAD.
ok 49 - submodule rebase -i
expecting success of 3404.50 'submodule conflict setup':
git tag submodule-base &&
git checkout HEAD^ &&
(
cd sub && git checkout HEAD^ && echo 4 >elif &&
git add elif && git commit -m "submodule conflict"
) &&
git add sub &&
test_tick &&
git commit -m "Conflict in submodule" &&
git tag submodule-topic
Previous HEAD position was b1c1bea Three changes submodule
HEAD is now at 1dab715 One
M sub
Note: switching to 'HEAD^'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 6795896 submodule initial
[detached HEAD c3aa4c8] submodule conflict
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[detached HEAD 2f8239b] Conflict in submodule
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 50 - submodule conflict setup
expecting success of 3404.51 'rebase -i continue with only submodule staged':
test_must_fail git rebase -i submodule-base &&
git add sub &&
git rebase --continue &&
test $(git rev-parse submodule-base) != $(git rev-parse HEAD)
Rebasing (1/1)
Failed to merge submodule sub
CONFLICT (submodule): Merge conflict in sub
Recursive merging with submodules currently only supports trivial cases.
Please manually handle the merging of each conflicted submodule.
This can be accomplished with the following steps:
- go to submodule (sub), and either merge commit c3aa4c8
or update to an existing commit which has merged those changes
- come back to superproject and run:
git add sub
to record the above merge or update
- resolve any other conflicts in the superproject
- commit the resulting index in the superproject
error: could not apply 2f8239b... Conflict in submodule
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 2f8239b... Conflict in submodule
[detached HEAD e05ea42] Conflict in submodule
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Successfully rebased and updated detached HEAD.
ok 51 - rebase -i continue with only submodule staged
expecting success of 3404.52 'rebase -i continue with unstaged submodule':
git checkout submodule-topic &&
git reset --hard &&
test_must_fail git rebase -i submodule-base &&
git reset &&
git rebase --continue &&
test_cmp_rev submodule-base HEAD
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
e05ea42 Conflict in submodule
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> e05ea42
HEAD is now at 2f8239b Conflict in submodule
HEAD is now at 2f8239b Conflict in submodule
Rebasing (1/1)
Failed to merge submodule sub
CONFLICT (submodule): Merge conflict in sub
Recursive merging with submodules currently only supports trivial cases.
Please manually handle the merging of each conflicted submodule.
This can be accomplished with the following steps:
- go to submodule (sub), and either merge commit c3aa4c8
or update to an existing commit which has merged those changes
- come back to superproject and run:
git add sub
to record the above merge or update
- resolve any other conflicts in the superproject
- commit the resulting index in the superproject
error: could not apply 2f8239b... Conflict in submodule
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 2f8239b... Conflict in submodule
Unstaged changes after reset:
M sub
Successfully rebased and updated detached HEAD.
ok 52 - rebase -i continue with unstaged submodule
expecting success of 3404.53 'avoid unnecessary reset':
git checkout primary &&
git reset --hard &&
test-tool chmtime =123456789 file3 &&
git update-index --refresh &&
HEAD=$(git rev-parse HEAD) &&
git rebase -i HEAD~4 &&
test $HEAD = $(git rev-parse HEAD) &&
MTIME=$(test-tool chmtime --get file3) &&
test 123456789 = $MTIME
warning: unable to rmdir 'sub': Directory not empty
Previous HEAD position was b1c1bea Three changes submodule
Switched to branch 'primary'
HEAD is now at 8f99a4f E
Successfully rebased and updated refs/heads/primary.
ok 53 - avoid unnecessary reset
expecting success of 3404.54 'reword':
git checkout -b reword-branch primary &&
(
set_fake_editor &&
FAKE_LINES="1 2 3 reword 4" FAKE_COMMIT_MESSAGE="E changed" \
git rebase -i A &&
git show HEAD | grep "E changed" &&
test $(git rev-parse primary) != $(git rev-parse HEAD) &&
test_cmp_rev primary^ HEAD^ &&
FAKE_LINES="1 2 reword 3 4" FAKE_COMMIT_MESSAGE="D changed" \
git rebase -i A &&
git show HEAD^ | grep "D changed" &&
FAKE_LINES="reword 1 2 3 4" FAKE_COMMIT_MESSAGE="B changed" \
git rebase -i A &&
git show HEAD~3 | grep "B changed" &&
FAKE_LINES="1 r 2 pick 3 p 4" FAKE_COMMIT_MESSAGE="C changed" \
git rebase -i A
) &&
git show HEAD~2 | grep "C changed"
Switched to a new branch 'reword-branch'
rebase -i script before editing:
pick 313fe96 B
pick d0f65f2 C
pick 0547e3f D
pick 8f99a4f E
rebase -i script after editing:
pick 313fe96 B
pick d0f65f2 C
pick 0547e3f D
reword 8f99a4f E
Rebasing (4/4)
[detached HEAD 7045bc0] E changed
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:17:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 file3
Successfully rebased and updated refs/heads/reword-branch.
E changed
rebase -i script before editing:
pick 313fe96 B
pick d0f65f2 C
pick 0547e3f D
pick 7045bc0 E changed
rebase -i script after editing:
pick 313fe96 B
pick d0f65f2 C
reword 0547e3f D
pick 7045bc0 E changed
Rebasing (3/4)
[detached HEAD ffc34d0] D changed
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
Rebasing (4/4)
Successfully rebased and updated refs/heads/reword-branch.
D changed
rebase -i script before editing:
pick 313fe96 B
pick d0f65f2 C
pick ffc34d0 D changed
pick 4804c05 E changed
rebase -i script after editing:
reword 313fe96 B
pick d0f65f2 C
pick ffc34d0 D changed
pick 4804c05 E changed
Rebasing (1/4)
[detached HEAD ff0628d] B changed
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
Rebasing (2/4)
Rebasing (3/4)
Rebasing (4/4)
Successfully rebased and updated refs/heads/reword-branch.
B changed
rebase -i script before editing:
pick ff0628d B changed
pick e73c68c C
pick fb271b0 D changed
pick a55d41c E changed
rebase -i script after editing:
pick ff0628d B changed
r e73c68c C
pick fb271b0 D changed
p a55d41c E changed
Rebasing (2/4)
[detached HEAD 234d360] C changed
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 file2
Rebasing (3/4)
Rebasing (4/4)
Successfully rebased and updated refs/heads/reword-branch.
C changed
ok 54 - reword
expecting success of 3404.55 'no uncommited changes when rewording the todo list is reloaded':
git checkout E &&
test_when_finished "git checkout @{-1}" &&
(
set_fake_editor &&
GIT_SEQUENCE_EDITOR="\"$PWD/fake-editor.sh\"" &&
export GIT_SEQUENCE_EDITOR &&
set_reword_editor &&
FAKE_LINES="reword 1 reword 2" git rebase -i C
) &&
check_reworded_commits D E
Note: switching to 'E'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 8f99a4f E
rebase -i script before editing:
pick 0547e3f D
pick 8f99a4f E
rebase -i script after editing:
reword 0547e3f D
reword 8f99a4f E
Rebasing (1/2)
[detached HEAD af7a1e6] D
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
Rebasing (2/3)
Executing: git log -1 --pretty=format:'%an <%ae> %at%n%B%n' >>reword-actual
Rebasing (3/3)
[detached HEAD d9fff5f] E
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:17:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 file3
Rebasing (4/4)
Executing: git log -1 --pretty=format:'%an <%ae> %at%n%B%n' >>reword-actual
Successfully rebased and updated detached HEAD.
Warning: you are leaving 2 commits behind, not connected to
any of your branches:
d9fff5f E
af7a1e6 D
If you want to keep them by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> d9fff5f
Switched to branch 'reword-branch'
ok 55 - no uncommited changes when rewording the todo list is reloaded
expecting success of 3404.56 'rebase -i can copy notes':
git config notes.rewrite.rebase true &&
git config notes.rewriteRef "refs/notes/*" &&
test_commit n1 &&
test_commit n2 &&
test_commit n3 &&
git notes add -m"a note" n3 &&
git rebase -i --onto n1 n2 &&
test "a note" = "$(git notes show HEAD)"
[reword-branch aa5df09] n1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 n1.t
[reword-branch 20afda8] n2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 n2.t
[reword-branch 9a71079] n3
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 n3.t
Rebasing (1/1)
Successfully rebased and updated refs/heads/reword-branch.
ok 56 - rebase -i can copy notes
expecting success of 3404.57 'rebase -i can copy notes over a fixup':
cat >expect <<-\EOF &&
an earlier note
a note
EOF
git reset --hard n3 &&
git notes add -m"an earlier note" n2 &&
(
set_fake_editor &&
GIT_NOTES_REWRITE_MODE=concatenate FAKE_LINES="1 f 2" \
git rebase -i n1
) &&
git notes show > output &&
test_cmp expect output
HEAD is now at 9a71079 n3
rebase -i script before editing:
pick 20afda8 n2
pick 9a71079 n3
rebase -i script after editing:
pick 20afda8 n2
f 9a71079 n3
Rebasing (2/2)
Successfully rebased and updated refs/heads/reword-branch.
ok 57 - rebase -i can copy notes over a fixup
expecting success of 3404.58 'rebase while detaching HEAD':
git symbolic-ref HEAD &&
grandparent=$(git rev-parse HEAD~2) &&
test_tick &&
(
set_fake_editor &&
FAKE_LINES="2 1" git rebase -i HEAD~2 HEAD^0
) &&
test $grandparent = $(git rev-parse HEAD~2) &&
test_must_fail git symbolic-ref HEAD
refs/heads/reword-branch
rebase -i script before editing:
pick aa5df09 n1
pick 5b2df83 n2
rebase -i script after editing:
pick 5b2df83 n2
pick aa5df09 n1
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated detached HEAD.
fatal: ref HEAD is not a symbolic ref
ok 58 - rebase while detaching HEAD
expecting success of 3404.59 'always cherry-pick with --no-ff':
git checkout no-ff-branch &&
git tag original-no-ff-branch &&
git rebase -i --no-ff A &&
for p in 0 1 2
do
test ! $(git rev-parse HEAD~$p) = $(git rev-parse original-no-ff-branch~$p) &&
git diff HEAD~$p original-no-ff-branch~$p > out &&
test_must_be_empty out || return 1
done &&
test_cmp_rev HEAD~3 original-no-ff-branch~3 &&
git diff HEAD~3 original-no-ff-branch~3 > out &&
test_must_be_empty out
Warning: you are leaving 2 commits behind, not connected to
any of your branches:
9689317 n1
a0bd0ac n2
If you want to keep them by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 9689317
Switched to branch 'no-ff-branch'
Rebasing (1/3)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated refs/heads/no-ff-branch.
ok 59 - always cherry-pick with --no-ff
expecting success of 3404.60 'set up commits with funny messages':
git checkout -b funny A &&
echo >>file1 &&
test_tick &&
git commit -a -m "end with slash\\" &&
echo >>file1 &&
test_tick &&
git commit -a -m "something (\000) that looks like octal" &&
echo >>file1 &&
test_tick &&
git commit -a -m "something (\n) that looks like a newline" &&
echo >>file1 &&
test_tick &&
git commit -a -m "another commit"
Switched to a new branch 'funny'
[funny f317e30] end with slash\
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[funny d68f8aa] something (\000) that looks like octal
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[funny 495c640] something (\n) that looks like a newline
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[funny 3a6cc5d] another commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
ok 60 - set up commits with funny messages
expecting success of 3404.61 'rebase-i history with funny messages':
git rev-list A..funny >expect &&
test_tick &&
(
set_fake_editor &&
FAKE_LINES="1 2 3 4" git rebase -i A
) &&
git rev-list A.. >actual &&
test_cmp expect actual
rebase -i script before editing:
pick f317e30 end with slash\
pick d68f8aa something (\000) that looks like octal
pick 495c640 something (\n) that looks like a newline
pick 3a6cc5d another commit
rebase -i script after editing:
pick f317e30 end with slash\
pick d68f8aa something (\000) that looks like octal
pick 495c640 something (\n) that looks like a newline
pick 3a6cc5d another commit
Successfully rebased and updated refs/heads/funny.
ok 61 - rebase-i history with funny messages
expecting success of 3404.62 'prepare for rebase -i --exec':
git checkout primary &&
git checkout -b execute &&
test_commit one_exec main.txt one_exec &&
test_commit two_exec main.txt two_exec &&
test_commit three_exec main.txt three_exec
Switched to branch 'primary'
Switched to a new branch 'execute'
[execute 1983bb3] one_exec
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 main.txt
[execute 2efd8a2] two_exec
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[execute 66ac40d] three_exec
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 62 - prepare for rebase -i --exec
expecting success of 3404.63 'running "git rebase -i --exec git show HEAD"':
(
set_fake_editor &&
git rebase -i --exec "git show HEAD" HEAD~2 >actual &&
FAKE_LINES="1 exec_git_show_HEAD 2 exec_git_show_HEAD" &&
export FAKE_LINES &&
git rebase -i HEAD~2 >expect
) &&
sed -e "1,9d" expect >expected &&
test_cmp expected actual
Rebasing (2/4)
Executing: git show HEAD
Rebasing (3/4)
Rebasing (4/4)
Executing: git show HEAD
Successfully rebased and updated refs/heads/execute.
Rebasing (2/4)
Executing: git show HEAD
Rebasing (3/4)
Rebasing (4/4)
Executing: git show HEAD
Successfully rebased and updated refs/heads/execute.
ok 63 - running "git rebase -i --exec git show HEAD"
expecting success of 3404.64 'running "git rebase --exec git show HEAD -i"':
git reset --hard execute &&
(
set_fake_editor &&
git rebase --exec "git show HEAD" -i HEAD~2 >actual &&
FAKE_LINES="1 exec_git_show_HEAD 2 exec_git_show_HEAD" &&
export FAKE_LINES &&
git rebase -i HEAD~2 >expect
) &&
sed -e "1,9d" expect >expected &&
test_cmp expected actual
HEAD is now at 66ac40d three_exec
Rebasing (2/4)
Executing: git show HEAD
Rebasing (3/4)
Rebasing (4/4)
Executing: git show HEAD
Successfully rebased and updated refs/heads/execute.
Rebasing (2/4)
Executing: git show HEAD
Rebasing (3/4)
Rebasing (4/4)
Executing: git show HEAD
Successfully rebased and updated refs/heads/execute.
ok 64 - running "git rebase --exec git show HEAD -i"
expecting success of 3404.65 'running "git rebase -ix git show HEAD"':
git reset --hard execute &&
(
set_fake_editor &&
git rebase -ix "git show HEAD" HEAD~2 >actual &&
FAKE_LINES="1 exec_git_show_HEAD 2 exec_git_show_HEAD" &&
export FAKE_LINES &&
git rebase -i HEAD~2 >expect
) &&
sed -e "1,9d" expect >expected &&
test_cmp expected actual
HEAD is now at 66ac40d three_exec
Rebasing (2/4)
Executing: git show HEAD
Rebasing (3/4)
Rebasing (4/4)
Executing: git show HEAD
Successfully rebased and updated refs/heads/execute.
Rebasing (2/4)
Executing: git show HEAD
Rebasing (3/4)
Rebasing (4/4)
Executing: git show HEAD
Successfully rebased and updated refs/heads/execute.
ok 65 - running "git rebase -ix git show HEAD"
expecting success of 3404.66 'rebase -ix with several <CMD>':
git reset --hard execute &&
(
set_fake_editor &&
git rebase -ix "git show HEAD; pwd" HEAD~2 >actual &&
FAKE_LINES="1 exec_git_show_HEAD;_pwd 2 exec_git_show_HEAD;_pwd" &&
export FAKE_LINES &&
git rebase -i HEAD~2 >expect
) &&
sed -e "1,9d" expect >expected &&
test_cmp expected actual
HEAD is now at 66ac40d three_exec
Rebasing (2/4)
Executing: git show HEAD; pwd
Rebasing (3/4)
Rebasing (4/4)
Executing: git show HEAD; pwd
Successfully rebased and updated refs/heads/execute.
Rebasing (2/4)
Executing: git show HEAD; pwd
Rebasing (3/4)
Rebasing (4/4)
Executing: git show HEAD; pwd
Successfully rebased and updated refs/heads/execute.
ok 66 - rebase -ix with several <CMD>
expecting success of 3404.67 'rebase -ix with several instances of --exec':
git reset --hard execute &&
(
set_fake_editor &&
git rebase -i --exec "git show HEAD" --exec "pwd" HEAD~2 >actual &&
FAKE_LINES="1 exec_git_show_HEAD exec_pwd 2
exec_git_show_HEAD exec_pwd" &&
export FAKE_LINES &&
git rebase -i HEAD~2 >expect
) &&
sed -e "1,11d" expect >expected &&
test_cmp expected actual
HEAD is now at 66ac40d three_exec
Rebasing (2/6)
Executing: git show HEAD
Rebasing (3/6)
Executing: pwd
Rebasing (4/6)
Rebasing (5/6)
Executing: git show HEAD
Rebasing (6/6)
Executing: pwd
Successfully rebased and updated refs/heads/execute.
Rebasing (2/6)
Executing: git show HEAD
Rebasing (3/6)
Executing: pwd
Rebasing (4/6)
Rebasing (5/6)
Executing: git show HEAD
Rebasing (6/6)
Executing: pwd
Successfully rebased and updated refs/heads/execute.
ok 67 - rebase -ix with several instances of --exec
expecting success of 3404.68 'rebase -ix with --autosquash':
git reset --hard execute &&
git checkout -b autosquash &&
echo second >second.txt &&
git add second.txt &&
git commit -m "fixup! two_exec" &&
echo bis >bis.txt &&
git add bis.txt &&
git commit -m "fixup! two_exec" &&
git checkout -b autosquash_actual &&
git rebase -i --exec "git show HEAD" --autosquash HEAD~4 >actual &&
git checkout autosquash &&
(
set_fake_editor &&
git checkout -b autosquash_expected &&
FAKE_LINES="1 fixup 3 fixup 4 exec_git_show_HEAD 2 exec_git_show_HEAD" &&
export FAKE_LINES &&
git rebase -i HEAD~4 >expect
) &&
sed -e "1,13d" expect >expected &&
test_cmp expected actual
HEAD is now at 66ac40d three_exec
Switched to a new branch 'autosquash'
[autosquash 1da6bea] fixup! two_exec
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 second.txt
[autosquash 280ba53] fixup! two_exec
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 bis.txt
Switched to a new branch 'autosquash_actual'
Rebasing (2/6)
Rebasing (3/6)
Rebasing (4/6)
Executing: git show HEAD
Rebasing (5/6)
Rebasing (6/6)
Executing: git show HEAD
Successfully rebased and updated refs/heads/autosquash_actual.
Switched to branch 'autosquash'
Switched to a new branch 'autosquash_expected'
Rebasing (2/6)
Rebasing (3/6)
Rebasing (4/6)
Executing: git show HEAD
Rebasing (5/6)
Rebasing (6/6)
Executing: git show HEAD
Successfully rebased and updated refs/heads/autosquash_expected.
ok 68 - rebase -ix with --autosquash
expecting success of 3404.69 'rebase --exec works without -i ':
git reset --hard execute &&
rm -rf exec_output &&
EDITOR="echo >invoked_editor" git rebase --exec "echo a line >>exec_output" HEAD~2 2>actual &&
test_i18ngrep "Successfully rebased and updated" actual &&
test_line_count = 2 exec_output &&
test_path_is_missing invoked_editor
HEAD is now at 66ac40d three_exec
Successfully rebased and updated refs/heads/autosquash_expected.
ok 69 - rebase --exec works without -i
expecting success of 3404.70 'rebase -i --exec without <CMD>':
git reset --hard execute &&
test_must_fail git rebase -i --exec 2>actual &&
test_i18ngrep "requires a value" actual &&
git checkout primary
HEAD is now at 66ac40d three_exec
error: option `exec' requires a value
Switched to branch 'primary'
ok 70 - rebase -i --exec without <CMD>
expecting success of 3404.71 'rebase -i --root re-order and drop commits':
git checkout E &&
(
set_fake_editor &&
FAKE_LINES="3 1 2 5" git rebase -i --root
) &&
test E = $(git cat-file commit HEAD | sed -ne \$p) &&
test B = $(git cat-file commit HEAD^ | sed -ne \$p) &&
test A = $(git cat-file commit HEAD^^ | sed -ne \$p) &&
test C = $(git cat-file commit HEAD^^^ | sed -ne \$p) &&
test 0 = $(git cat-file commit HEAD^^^ | grep -c ^parent\ )
Note: switching to 'E'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 8f99a4f E
rebase -i script before editing:
pick 6e62bf8 A
pick 313fe96 B
pick d0f65f2 C
pick 0547e3f D
pick 8f99a4f E
rebase -i script after editing:
pick d0f65f2 C
pick 6e62bf8 A
pick 313fe96 B
pick 8f99a4f E
Rebasing (1/4)
Rebasing (2/4)
Rebasing (3/4)
Rebasing (4/4)
Successfully rebased and updated detached HEAD.
ok 71 - rebase -i --root re-order and drop commits
expecting success of 3404.72 'rebase -i --root retain root commit author and message':
git checkout A &&
echo B >file7 &&
git add file7 &&
GIT_AUTHOR_NAME="Twerp Snog" git commit -m "different author" &&
(
set_fake_editor &&
FAKE_LINES="2" git rebase -i --root
) &&
git cat-file commit HEAD | grep -q "^author Twerp Snog" &&
git cat-file commit HEAD | grep -q "^different author$"
Warning: you are leaving 4 commits behind, not connected to
any of your branches:
8ec5b24 E
0680f3e B
2e95b98 A
8676e2e C
If you want to keep them by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 8ec5b24
HEAD is now at 6e62bf8 A
[detached HEAD 419a8fd] different author
Author: Twerp Snog <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file7
rebase -i script before editing:
pick 6e62bf8 A
pick 419a8fd different author
rebase -i script after editing:
pick 419a8fd different author
Rebasing (1/1)
Successfully rebased and updated detached HEAD.
ok 72 - rebase -i --root retain root commit author and message
expecting success of 3404.73 'rebase -i --root temporary sentinel commit':
git checkout B &&
(
set_fake_editor &&
test_must_fail env FAKE_LINES="2" git rebase -i --root
) &&
git cat-file commit HEAD | grep "^tree $EMPTY_TREE" &&
git rebase --abort
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
2b113fb different author
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 2b113fb
HEAD is now at 313fe96 B
rebase -i script before editing:
pick 6e62bf8 A
pick 313fe96 B
rebase -i script after editing:
pick 313fe96 B
Rebasing (1/1)
CONFLICT (modify/delete): file1 deleted in HEAD and modified in 313fe96 (B). Version 313fe96 (B) of file1 left in tree.
error: could not apply 313fe96... B
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 313fe96... B
tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904
ok 73 - rebase -i --root temporary sentinel commit
expecting success of 3404.74 'rebase -i --root fixup root commit':
git checkout B &&
(
set_fake_editor &&
FAKE_LINES="1 fixup 2" git rebase -i --root
) &&
test A = $(git cat-file commit HEAD | sed -ne \$p) &&
test B = $(git show HEAD:file1) &&
test 0 = $(git cat-file commit HEAD | grep -c ^parent\ )
HEAD is now at 313fe96 B
rebase -i script before editing:
pick 6e62bf8 A
pick 313fe96 B
rebase -i script after editing:
pick 6e62bf8 A
fixup 313fe96 B
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated detached HEAD.
ok 74 - rebase -i --root fixup root commit
expecting success of 3404.75 'rebase -i --root reword original root commit':
test_when_finished "test_might_fail git rebase --abort" &&
git checkout -b reword-original-root-branch primary &&
(
set_fake_editor &&
FAKE_LINES="reword 1 2" FAKE_COMMIT_MESSAGE="A changed" \
git rebase -i --root
) &&
git show HEAD^ | grep "A changed" &&
test -z "$(git show -s --format=%p HEAD^)"
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
558b876 A
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 558b876
Switched to a new branch 'reword-original-root-branch'
rebase -i script before editing:
pick 6e62bf8 A
pick 313fe96 B
pick d0f65f2 C
pick 0547e3f D
pick 8f99a4f E
rebase -i script after editing:
reword 6e62bf8 A
pick 313fe96 B
Rebasing (1/2)
[detached HEAD 903b38e] A changed
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:13:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 file1
Rebasing (2/2)
Successfully rebased and updated refs/heads/reword-original-root-branch.
A changed
fatal: No rebase in progress?
ok 75 - rebase -i --root reword original root commit
expecting success of 3404.76 'rebase -i --root reword new root commit':
test_when_finished "test_might_fail git rebase --abort" &&
git checkout -b reword-now-root-branch primary &&
(
set_fake_editor &&
FAKE_LINES="reword 3 1" FAKE_COMMIT_MESSAGE="C changed" \
git rebase -i --root
) &&
git show HEAD^ | grep "C changed" &&
test -z "$(git show -s --format=%p HEAD^)"
Switched to a new branch 'reword-now-root-branch'
rebase -i script before editing:
pick 6e62bf8 A
pick 313fe96 B
pick d0f65f2 C
pick 0547e3f D
pick 8f99a4f E
rebase -i script after editing:
reword d0f65f2 C
pick 6e62bf8 A
Rebasing (1/2)
[detached HEAD a808654] C changed
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 file2
Rebasing (2/2)
Successfully rebased and updated refs/heads/reword-now-root-branch.
C changed
fatal: No rebase in progress?
ok 76 - rebase -i --root reword new root commit
expecting success of 3404.77 'rebase -i --root when root has untracked file conflict':
test_when_finished "reset_rebase" &&
git checkout -b failing-root-pick A &&
echo x >file2 &&
git rm file1 &&
git commit -m "remove file 1 add file 2" &&
echo z >file1 &&
(
set_fake_editor &&
test_must_fail env FAKE_LINES="1 2" git rebase -i --root
) &&
rm file1 &&
git rebase --continue &&
test "$(git log -1 --format=%B)" = "remove file 1 add file 2" &&
test "$(git rev-list --count HEAD)" = 2
Switched to a new branch 'failing-root-pick'
rm 'file1'
[failing-root-pick 71adfbc] remove file 1 add file 2
Author: A U Thor <author@example.com>
1 file changed, 1 deletion(-)
delete mode 100644 file1
rebase -i script before editing:
pick 6e62bf8 A
pick 71adfbc remove file 1 add file 2
rebase -i script after editing:
pick 6e62bf8 A
pick 71adfbc remove file 1 add file 2
Rebasing (1/2)
error: The following untracked working tree files would be overwritten by merge:
file1
Please move or remove them before you merge.
Aborting
hint: Could not execute the todo command
hint:
hint: pick 6e62bf890e21973b771e4e6fc28f5ade62edb4bc A
hint:
hint: It has been rescheduled; To edit the command before continuing, please
hint: edit the todo list first:
hint:
hint: git rebase --edit-todo
hint: git rebase --continue
Could not apply 6e62bf8... A
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated refs/heads/failing-root-pick.
fatal: No rebase in progress?
HEAD is now at 71adfbc remove file 1 add file 2
Removing actual
Removing actual-squash-fixup
Removing error
Removing exec_output
Removing expect
Removing expect-squash-fixup
Removing expect2
Removing expected
Removing fake-editor.sh
Removing file2
Removing out
Removing output
Removing reword-actual
Removing reword-editor.sh
Removing reword-expected
Removing reword-log
Removing reword-oid
Removing reword-sequence-editor.sh
Removing stderr
Removing touch-subdir
ok 77 - rebase -i --root when root has untracked file conflict
expecting success of 3404.78 'rebase -i --root reword root when root has untracked file conflict':
test_when_finished "reset_rebase" &&
echo z>file1 &&
(
set_fake_editor &&
test_must_fail env FAKE_LINES="reword 1 2" \
FAKE_COMMIT_MESSAGE="Modified A" git rebase -i --root &&
rm file1 &&
FAKE_COMMIT_MESSAGE="Reworded A" git rebase --continue
) &&
test "$(git log -1 --format=%B HEAD^)" = "Reworded A" &&
test "$(git rev-list --count HEAD)" = 2
rebase -i script before editing:
pick 6e62bf8 A
pick 71adfbc remove file 1 add file 2
rebase -i script after editing:
reword 6e62bf8 A
pick 71adfbc remove file 1 add file 2
Rebasing (1/2)
error: The following untracked working tree files would be overwritten by merge:
file1
Please move or remove them before you merge.
Aborting
hint: Could not execute the todo command
hint:
hint: reword 6e62bf890e21973b771e4e6fc28f5ade62edb4bc A
hint:
hint: It has been rescheduled; To edit the command before continuing, please
hint: edit the todo list first:
hint:
hint: git rebase --edit-todo
hint: git rebase --continue
You can amend the commit now, with
git commit --amend
Once you are satisfied with your changes, run
git rebase --continue
Rebasing (2/3)
[detached HEAD 1b0ccef] Reworded A
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:13:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 file1
Rebasing (3/3)
Successfully rebased and updated refs/heads/failing-root-pick.
fatal: No rebase in progress?
HEAD is now at 847f077 remove file 1 add file 2
Removing fake-editor.sh
ok 78 - rebase -i --root reword root when root has untracked file conflict
expecting success of 3404.79 'rebase --edit-todo does not work on non-interactive rebase':
git checkout reword-original-root-branch &&
git reset --hard &&
git checkout conflict-branch &&
(
set_fake_editor &&
test_must_fail git rebase -f --apply --onto HEAD~2 HEAD~ &&
test_must_fail git rebase --edit-todo
) &&
git rebase --abort
Switched to branch 'reword-original-root-branch'
HEAD is now at c9dc22b B
Switched to branch 'conflict-branch'
First, rewinding head to replay your work on top of it...
Applying: four
Using index info to reconstruct a base tree...
M conflict
Falling back to patching base and 3-way merge...
Merging:
766a798 two
virtual four
found 1 common ancestor:
virtual 3d3da6c4fe4fab218d150e2af365b8b07d465a22
Auto-merging conflict
CONFLICT (content): Merge conflict in conflict
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 four
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
fatal: The --edit-todo action can only be used during interactive rebase.
ok 79 - rebase --edit-todo does not work on non-interactive rebase
expecting success of 3404.80 'rebase --edit-todo can be used to modify todo':
git reset --hard &&
git checkout no-conflict-branch^0 &&
(
set_fake_editor &&
FAKE_LINES="edit 1 2 3" git rebase -i HEAD~3 &&
FAKE_LINES="2 1" git rebase --edit-todo &&
git rebase --continue
) &&
test M = $(git cat-file commit HEAD^ | sed -ne \$p) &&
test L = $(git cat-file commit HEAD | sed -ne \$p)
HEAD is now at f91a2b3 four
Note: switching to 'no-conflict-branch^0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 3389558 M
rebase -i script before editing:
pick 265b89e K
pick 6b0f5e6 L
pick 3389558 M
rebase -i script after editing:
edit 265b89e K
pick 6b0f5e6 L
pick 3389558 M
Rebasing (1/3)
Stopped at 265b89e... K
You can amend the commit now, with
git commit --amend
Once you are satisfied with your changes, run
git rebase --continue
rebase -i script before editing:
pick 6b0f5e6 L
pick 3389558 M
rebase -i script after editing:
pick 3389558 M
pick 6b0f5e6 L
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated detached HEAD.
ok 80 - rebase --edit-todo can be used to modify todo
expecting success of 3404.81 'rebase -i produces readable reflog':
git reset --hard &&
git branch -f branch-reflog-test H &&
git rebase -i --onto I F branch-reflog-test &&
cat >expect <<-\EOF &&
rebase (finish): returning to refs/heads/branch-reflog-test
rebase (pick): H
rebase (pick): G
rebase (start): checkout I
EOF
git reflog -n4 HEAD |
sed "s/[^:]*: //" >actual &&
test_cmp expect actual
HEAD is now at e7ab20b L
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/branch-reflog-test.
ok 81 - rebase -i produces readable reflog
expecting success of 3404.82 'rebase -i respects core.commentchar':
git reset --hard &&
git checkout E^0 &&
test_config core.commentchar "\\" &&
write_script remove-all-but-first.sh <<-\EOF &&
sed -e "2,\$s/^/\\\\/" "$1" >"$1.tmp" &&
mv "$1.tmp" "$1"
EOF
(
test_set_editor "$(pwd)/remove-all-but-first.sh" &&
git rebase -i B
) &&
test B = $(git cat-file commit HEAD^ | sed -ne \$p)
HEAD is now at d98957c H
Note: switching to 'E^0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 8f99a4f E
Successfully rebased and updated detached HEAD.
ok 82 - rebase -i respects core.commentchar
expecting success of 3404.83 'rebase -i respects core.commentchar=auto':
test_config core.commentchar auto &&
write_script copy-edit-script.sh <<-\EOF &&
cp "$1" edit-script
EOF
test_when_finished "git rebase --abort || :" &&
(
test_set_editor "$(pwd)/copy-edit-script.sh" &&
git rebase -i HEAD^
) &&
test -z "$(grep -ve "^#" -e "^\$" -e "^pick" edit-script)"
Successfully rebased and updated detached HEAD.
fatal: No rebase in progress?
ok 83 - rebase -i respects core.commentchar=auto
expecting success of 3404.84 'rebase -i, with <onto> and <upstream> specified as :/quuxery':
test_when_finished "git branch -D torebase" &&
git checkout -b torebase branch1 &&
upstream=$(git rev-parse ":/J") &&
onto=$(git rev-parse ":/A") &&
git rebase --onto $onto $upstream &&
git reset --hard branch1 &&
git rebase --onto ":/A" ":/J" &&
git checkout branch1
Previous HEAD position was d0f65f2 C
Switched to a new branch 'torebase'
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/torebase.
HEAD is now at 450e393 I
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/torebase.
Switched to branch 'branch1'
Deleted branch torebase (was 08e872c).
ok 84 - rebase -i, with <onto> and <upstream> specified as :/quuxery
expecting success of 3404.85 'rebase -i with --strategy and -X':
git checkout -b conflict-merge-use-theirs conflict-branch &&
git reset --hard HEAD^ &&
echo five >conflict &&
echo Z >file1 &&
git commit -a -m "one file conflict" &&
EDITOR=true git rebase -i --strategy=recursive -Xours conflict-branch &&
test $(git show conflict-branch:conflict) = $(cat conflict) &&
test $(cat file1) = Z
Switched to a new branch 'conflict-merge-use-theirs'
HEAD is now at 1eadf03 three
[conflict-merge-use-theirs 1808efd] one file conflict
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+), 2 deletions(-)
Rebasing (1/1)
Successfully rebased and updated refs/heads/conflict-merge-use-theirs.
ok 85 - rebase -i with --strategy and -X
expecting success of 3404.86 'interrupted rebase -i with --strategy and -X':
git checkout -b conflict-merge-use-theirs-interrupted conflict-branch &&
git reset --hard HEAD^ &&
>breakpoint &&
git add breakpoint &&
git commit -m "breakpoint for interactive mode" &&
echo five >conflict &&
echo Z >file1 &&
git commit -a -m "one file conflict" &&
(
set_fake_editor &&
FAKE_LINES="edit 1 2" git rebase -i --strategy=recursive \
-Xours conflict-branch
) &&
git rebase --continue &&
test $(git show conflict-branch:conflict) = $(cat conflict) &&
test $(cat file1) = Z
Switched to a new branch 'conflict-merge-use-theirs-interrupted'
HEAD is now at 1eadf03 three
[conflict-merge-use-theirs-interrupted 661680f] breakpoint for interactive mode
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 breakpoint
[conflict-merge-use-theirs-interrupted 14f789b] one file conflict
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+), 2 deletions(-)
rebase -i script before editing:
pick 661680f breakpoint for interactive mode
pick 14f789b one file conflict
rebase -i script after editing:
edit 661680f breakpoint for interactive mode
pick 14f789b one file conflict
Rebasing (1/2)
Stopped at 661680f... breakpoint for interactive mode
You can amend the commit now, with
git commit --amend
Once you are satisfied with your changes, run
git rebase --continue
Rebasing (2/2)
Successfully rebased and updated refs/heads/conflict-merge-use-theirs-interrupted.
ok 86 - interrupted rebase -i with --strategy and -X
expecting success of 3404.87 'rebase -i error on commits with \ in message':
current_head=$(git rev-parse HEAD) &&
test_when_finished "git rebase --abort; git reset --hard $current_head; rm -f error" &&
test_commit TO-REMOVE will-conflict old-content &&
test_commit "\temp" will-conflict new-content dummy &&
test_must_fail env EDITOR=true git rebase -i HEAD^ --onto HEAD^^ 2>error &&
test_expect_code 1 grep " emp" error
[conflict-merge-use-theirs-interrupted 77c3fb4] TO-REMOVE
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 will-conflict
[conflict-merge-use-theirs-interrupted 34a4968] \temp
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
CONFLICT (modify/delete): will-conflict deleted in HEAD and modified in 34a4968 (\temp). Version 34a4968 (\temp) of will-conflict left in tree.
HEAD is now at f36c680 one file conflict
ok 87 - rebase -i error on commits with \ in message
expecting success of 3404.88 'short commit ID setup':
test_when_finished "git checkout primary" &&
git checkout --orphan collide &&
git rm -rf . &&
(
unset test_tick &&
test_commit collide1 collide &&
test_commit --notick collide2 collide &&
test_commit --notick collide3 collide
)
Switched to a new branch 'collide'
rm 'breakpoint'
rm 'conflict'
rm 'file1'
[collide (root-commit) 674fc94] collide1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 collide
[collide 0b53f45] collide2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[collide 6bcda37] collide3
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to branch 'primary'
ok 88 - short commit ID setup
expecting success of 3404.89 'short commit ID collide':
test_oid_cache <<-EOF &&
# collision-related constants
t3404_collision sha1:6bcd
t3404_collision sha256:0161
t3404_collider sha1:ac4f2ee
t3404_collider sha256:16697
EOF
test_when_finished "reset_rebase && git checkout primary" &&
git checkout collide &&
colliding_id=$(test_oid t3404_collision) &&
hexsz=$(test_oid hexsz) &&
test $colliding_id = "$(git rev-parse HEAD | cut -c 1-4)" &&
test_config core.abbrev 4 &&
(
unset test_tick &&
test_tick &&
set_fake_editor &&
FAKE_COMMIT_MESSAGE="collide2 $(test_oid t3404_collider)" \
FAKE_LINES="reword 1 break 2" git rebase -i HEAD~2 &&
test $colliding_id = "$(git rev-parse HEAD | cut -c 1-4)" &&
grep "^pick $colliding_id " \
.git/rebase-merge/git-rebase-todo.tmp &&
grep -E "^pick [0-9a-f]{$hexsz}" \
.git/rebase-merge/git-rebase-todo &&
grep -E "^pick [0-9a-f]{$hexsz}" \
.git/rebase-merge/git-rebase-todo.backup &&
git rebase --continue
) &&
collide2="$(git rev-parse HEAD~1 | cut -c 1-4)" &&
collide3="$(git rev-parse collide3 | cut -c 1-4)" &&
test "$collide2" = "$collide3"
Switched to branch 'collide'
rebase -i script before editing:
pick 0b53 collide2
pick 6bcd collide3
rebase -i script after editing:
reword 0b53 collide2
break
pick 6bcd collide3
Rebasing (1/3)
[detached HEAD 6bcda37f] collide2 ac4f2ee
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:13:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
Rebasing (2/3)
Stopped at 6bcda37f (collide2 ac4f2ee)
pick 6bcd collide3
pick 6bcda372b23d641debbf943e0b709349f72dcd92 collide3
pick 0b53f4541f74116336854697b0278cb818c448e2 collide2
pick 6bcda372b23d641debbf943e0b709349f72dcd92 collide3
Rebasing (3/3)
Successfully rebased and updated refs/heads/collide.
fatal: No rebase in progress?
HEAD is now at fbe3cf5 collide3
Removing actual
Removing copy-edit-script.sh
Removing edit-script
Removing expect
Removing fake-editor.sh
Removing remove-all-but-first.sh
Switched to branch 'primary'
ok 89 - short commit ID collide
expecting success of 3404.90 'respect core.abbrev':
git config core.abbrev 12 &&
(
set_cat_todo_editor &&
test_must_fail git rebase -i HEAD~4 >todo-list
) &&
test 4 = $(grep -c -E "pick [0-9a-f]{12,}" todo-list)
error: There was a problem with the editor '"$FAKE_EDITOR"'.
ok 90 - respect core.abbrev
expecting success of 3404.91 'todo count':
write_script dump-raw.sh <<-\EOF &&
cat "$1"
EOF
(
test_set_editor "$(pwd)/dump-raw.sh" &&
git rebase -i HEAD~4 >actual
) &&
test_i18ngrep "^# Rebase ..* onto ..* ([0-9]" actual
Successfully rebased and updated refs/heads/primary.
# Rebase 6e62bf890e21..8f99a4f1fbbd onto 6e62bf890e21 (4 commands)
ok 91 - todo count
expecting success of 3404.92 'rebase -i commits that overwrite untracked files (pick)':
git checkout --force branch2 &&
git clean -f &&
(
set_fake_editor &&
FAKE_LINES="edit 1 2" git rebase -i A
) &&
test_cmp_rev HEAD F &&
test_path_is_missing file6 &&
>file6 &&
test_must_fail git rebase --continue &&
test_cmp_rev HEAD F &&
rm file6 &&
git rebase --continue &&
test_cmp_rev HEAD I
Switched to branch 'branch2'
Removing actual
Removing dump-raw.sh
Removing fake-editor.sh
Removing todo-list
rebase -i script before editing:
pick cfefd94ba3b7 F
pick 615be62cadc1 I
rebase -i script after editing:
edit cfefd94ba3b7 F
pick 615be62cadc1 I
Rebasing (1/2)
Stopped at cfefd94ba3b7... F
You can amend the commit now, with
git commit --amend
Once you are satisfied with your changes, run
git rebase --continue
Rebasing (2/2)
error: The following untracked working tree files would be overwritten by merge:
file6
Please move or remove them before you merge.
Aborting
hint: Could not execute the todo command
hint:
hint: pick 615be62cadc1c85c6ac7d6974210b1aa1721c98f I
hint:
hint: It has been rescheduled; To edit the command before continuing, please
hint: edit the todo list first:
hint:
hint: git rebase --edit-todo
hint: git rebase --continue
Could not apply 615be62cadc1... I
Rebasing (3/3)
Successfully rebased and updated refs/heads/branch2.
ok 92 - rebase -i commits that overwrite untracked files (pick)
expecting success of 3404.93 'rebase -i commits that overwrite untracked files (squash)':
git checkout --force branch2 &&
git clean -f &&
git tag original-branch2 &&
(
set_fake_editor &&
FAKE_LINES="edit 1 squash 2" git rebase -i A
) &&
test_cmp_rev HEAD F &&
test_path_is_missing file6 &&
>file6 &&
test_must_fail git rebase --continue &&
test_cmp_rev HEAD F &&
rm file6 &&
git rebase --continue &&
test $(git cat-file commit HEAD | sed -ne \$p) = I &&
git reset --hard original-branch2
Already on 'branch2'
Removing fake-editor.sh
rebase -i script before editing:
pick cfefd94ba3b7 F
pick 615be62cadc1 I
rebase -i script after editing:
edit cfefd94ba3b7 F
squash 615be62cadc1 I
Rebasing (1/2)
Stopped at cfefd94ba3b7... F
You can amend the commit now, with
git commit --amend
Once you are satisfied with your changes, run
git rebase --continue
Rebasing (2/2)
error: The following untracked working tree files would be overwritten by merge:
file6
Please move or remove them before you merge.
Aborting
hint: Could not execute the todo command
hint:
hint: squash 615be62cadc1c85c6ac7d6974210b1aa1721c98f I
hint:
hint: It has been rescheduled; To edit the command before continuing, please
hint: edit the todo list first:
hint:
hint: git rebase --edit-todo
hint: git rebase --continue
Could not apply 615be62cadc1... I
Rebasing (3/3)
[detached HEAD 393f3ba68ddf] F
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:18:13 2005 -0700
2 files changed, 2 insertions(+)
create mode 100644 file4
create mode 100644 file6
Successfully rebased and updated refs/heads/branch2.
HEAD is now at 615be62cadc1 I
ok 93 - rebase -i commits that overwrite untracked files (squash)
expecting success of 3404.94 'rebase -i commits that overwrite untracked files (no ff)':
git checkout --force branch2 &&
git clean -f &&
(
set_fake_editor &&
FAKE_LINES="edit 1 2" git rebase -i --no-ff A
) &&
test $(git cat-file commit HEAD | sed -ne \$p) = F &&
test_path_is_missing file6 &&
>file6 &&
test_must_fail git rebase --continue &&
test $(git cat-file commit HEAD | sed -ne \$p) = F &&
rm file6 &&
git rebase --continue &&
test $(git cat-file commit HEAD | sed -ne \$p) = I
Already on 'branch2'
Removing fake-editor.sh
rebase -i script before editing:
pick cfefd94ba3b7 F
pick 615be62cadc1 I
rebase -i script after editing:
edit cfefd94ba3b7 F
pick 615be62cadc1 I
Rebasing (1/2)
Stopped at cfefd94ba3b7... F
You can amend the commit now, with
git commit --amend
Once you are satisfied with your changes, run
git rebase --continue
Rebasing (2/2)
error: The following untracked working tree files would be overwritten by merge:
file6
Please move or remove them before you merge.
Aborting
hint: Could not execute the todo command
hint:
hint: pick 615be62cadc1c85c6ac7d6974210b1aa1721c98f I
hint:
hint: It has been rescheduled; To edit the command before continuing, please
hint: edit the todo list first:
hint:
hint: git rebase --edit-todo
hint: git rebase --continue
Could not apply 615be62cadc1... I
Rebasing (3/3)
Successfully rebased and updated refs/heads/branch2.
ok 94 - rebase -i commits that overwrite untracked files (no ff)
expecting success of 3404.95 'rebase --continue removes CHERRY_PICK_HEAD':
git checkout -b commit-to-skip &&
for double in X 3 1
do
test_seq 5 | sed "s/$double/&&/" >seq &&
git add seq &&
test_tick &&
git commit -m seq-$double || return 1
done &&
git tag seq-onto &&
git reset --hard HEAD~2 &&
git cherry-pick seq-onto &&
(
set_fake_editor &&
test_must_fail env FAKE_LINES= git rebase -i seq-onto
) &&
test -d .git/rebase-merge &&
git rebase --continue &&
git diff --exit-code seq-onto &&
test ! -d .git/rebase-merge &&
test ! -f .git/CHERRY_PICK_HEAD
Switched to a new branch 'commit-to-skip'
[commit-to-skip 91baae341a52] seq-X
Author: A U Thor <author@example.com>
1 file changed, 5 insertions(+)
create mode 100644 seq
[commit-to-skip c6f9618a0f9b] seq-3
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[commit-to-skip 76d13d56f0bb] seq-1
Author: A U Thor <author@example.com>
1 file changed, 2 insertions(+), 2 deletions(-)
HEAD is now at 91baae341a52 seq-X
Auto-merging seq
[commit-to-skip 43bbefaabe73] seq-1
Author: A U Thor <author@example.com>
Date: Thu Apr 7 16:08:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
Rebasing (1/1)
The previous cherry-pick is now empty, possibly due to conflict resolution.
If you wish to commit it anyway, use:
git commit --allow-empty
Otherwise, please use 'git rebase --skip'
interactive rebase in progress; onto 76d13d56f0bb
Last command done (1 command done):
pick 43bbefaabe73 seq-1
No commands remaining.
You are currently rebasing branch 'commit-to-skip' on '76d13d56f0bb'.
(all conflicts fixed: run "git rebase --continue")
Untracked files:
(use "git add <file>..." to include in what will be committed)
fake-editor.sh
sub/
nothing added to commit but untracked files present (use "git add" to track)
Could not apply 43bbefaabe73... seq-1
Successfully rebased and updated refs/heads/commit-to-skip.
ok 95 - rebase --continue removes CHERRY_PICK_HEAD
expecting success of 3404.96 'drop':
rebase_setup_and_clean drop-test &&
(
set_fake_editor &&
FAKE_LINES="1 drop 2 3 d 4 5" git rebase -i --root
) &&
test E = $(git cat-file commit HEAD | sed -ne \$p) &&
test C = $(git cat-file commit HEAD^ | sed -ne \$p) &&
test A = $(git cat-file commit HEAD^^ | sed -ne \$p)
Switched to a new branch 'drop-test'
rebase -i script before editing:
pick 6e62bf890e21 A
pick 313fe965c048 B
pick d0f65f2f81ee C
pick 0547e3f1350d D
pick 8f99a4f1fbbd E
rebase -i script after editing:
pick 6e62bf890e21 A
drop 313fe965c048 B
pick d0f65f2f81ee C
d 0547e3f1350d D
pick 8f99a4f1fbbd E
Rebasing (1/5)
Rebasing (2/5)
Rebasing (3/5)
Rebasing (4/5)
Rebasing (5/5)
Successfully rebased and updated refs/heads/drop-test.
Switched to branch 'primary'
Deleted branch drop-test (was 51a089e089a8).
fatal: No rebase in progress?
ok 96 - drop
expecting success of 3404.97 'rebase -i respects rebase.missingCommitsCheck = ignore':
test_config rebase.missingCommitsCheck ignore &&
rebase_setup_and_clean missing-commit &&
(
set_fake_editor &&
FAKE_LINES="1 2 3 4" git rebase -i --root 2>actual
) &&
test D = $(git cat-file commit HEAD | sed -ne \$p) &&
test_i18ngrep \
"Successfully rebased and updated refs/heads/missing-commit" \
actual
Switched to a new branch 'missing-commit'
rebase -i script before editing:
pick 6e62bf890e21 A
pick 313fe965c048 B
pick d0f65f2f81ee C
pick 0547e3f1350d D
pick 8f99a4f1fbbd E
rebase -i script after editing:
pick 6e62bf890e21 A
pick 313fe965c048 B
pick d0f65f2f81ee C
pick 0547e3f1350d D
Rebasing (1/4)
Rebasing (2/4)
Rebasing (3/4)
Rebasing (4/4)
Successfully rebased and updated refs/heads/missing-commit.
Switched to branch 'primary'
Deleted branch missing-commit (was 0547e3f1350d).
fatal: No rebase in progress?
ok 97 - rebase -i respects rebase.missingCommitsCheck = ignore
expecting success of 3404.98 'rebase -i respects rebase.missingCommitsCheck = warn':
cat >expect <<-EOF &&
Warning: some commits may have been dropped accidentally.
Dropped commits (newer to older):
- $(git rev-list --pretty=oneline --abbrev-commit -1 primary)
To avoid this message, use "drop" to explicitly remove a commit.
EOF
test_config rebase.missingCommitsCheck warn &&
rebase_setup_and_clean missing-commit &&
(
set_fake_editor &&
FAKE_LINES="1 2 3 4" git rebase -i --root 2>actual.2
) &&
head -n4 actual.2 >actual &&
test_cmp expect actual &&
test D = $(git cat-file commit HEAD | sed -ne \$p)
Switched to a new branch 'missing-commit'
rebase -i script before editing:
pick 6e62bf890e21 A
pick 313fe965c048 B
pick d0f65f2f81ee C
pick 0547e3f1350d D
pick 8f99a4f1fbbd E
rebase -i script after editing:
pick 6e62bf890e21 A
pick 313fe965c048 B
pick d0f65f2f81ee C
pick 0547e3f1350d D
Switched to branch 'primary'
Deleted branch missing-commit (was 0547e3f1350d).
fatal: No rebase in progress?
ok 98 - rebase -i respects rebase.missingCommitsCheck = warn
expecting success of 3404.99 'rebase -i respects rebase.missingCommitsCheck = error':
cat >expect <<-EOF &&
Warning: some commits may have been dropped accidentally.
Dropped commits (newer to older):
- $(git rev-list --pretty=oneline --abbrev-commit -1 primary)
- $(git rev-list --pretty=oneline --abbrev-commit -1 primary~2)
To avoid this message, use "drop" to explicitly remove a commit.
Use 'git config rebase.missingCommitsCheck' to change the level of warnings.
The possible behaviours are: ignore, warn, error.
You can fix this with 'git rebase --edit-todo' and then run 'git rebase --continue'.
Or you can abort the rebase with 'git rebase --abort'.
EOF
test_config rebase.missingCommitsCheck error &&
rebase_setup_and_clean missing-commit &&
(
set_fake_editor &&
test_must_fail env FAKE_LINES="1 2 4" \
git rebase -i --root 2>actual &&
test_cmp expect actual &&
cp .git/rebase-merge/git-rebase-todo.backup \
.git/rebase-merge/git-rebase-todo &&
FAKE_LINES="1 2 drop 3 4 drop 5" git rebase --edit-todo
) &&
git rebase --continue &&
test D = $(git cat-file commit HEAD | sed -ne \$p) &&
test B = $(git cat-file commit HEAD^ | sed -ne \$p)
Switched to a new branch 'missing-commit'
rebase -i script before editing:
pick 6e62bf890e21 A
pick 313fe965c048 B
pick d0f65f2f81ee C
pick 0547e3f1350d D
pick 8f99a4f1fbbd E
rebase -i script after editing:
pick 6e62bf890e21 A
pick 313fe965c048 B
pick 0547e3f1350d D
rebase -i script before editing:
pick 6e62bf890e21 A
pick 313fe965c048 B
pick d0f65f2f81ee C
pick 0547e3f1350d D
pick 8f99a4f1fbbd E
rebase -i script after editing:
pick 6e62bf890e21 A
pick 313fe965c048 B
drop d0f65f2f81ee C
pick 0547e3f1350d D
drop 8f99a4f1fbbd E
Rebasing (1/5)
Rebasing (2/5)
Rebasing (3/5)
Rebasing (4/5)
Rebasing (5/5)
Successfully rebased and updated refs/heads/missing-commit.
Switched to branch 'primary'
Deleted branch missing-commit (was 1c17f6d7b75f).
fatal: No rebase in progress?
ok 99 - rebase -i respects rebase.missingCommitsCheck = error
expecting success of 3404.100 'rebase --edit-todo respects rebase.missingCommitsCheck = ignore':
test_config rebase.missingCommitsCheck ignore &&
rebase_setup_and_clean missing-commit &&
(
set_fake_editor &&
FAKE_LINES="break 1 2 3 4 5" git rebase -i --root &&
FAKE_LINES="1 2 3 4" git rebase --edit-todo &&
git rebase --continue 2>actual
) &&
test D = $(git cat-file commit HEAD | sed -ne \$p) &&
test_i18ngrep \
"Successfully rebased and updated refs/heads/missing-commit" \
actual
Switched to a new branch 'missing-commit'
rebase -i script before editing:
pick 6e62bf890e21 A
pick 313fe965c048 B
pick d0f65f2f81ee C
pick 0547e3f1350d D
pick 8f99a4f1fbbd E
rebase -i script after editing:
break
pick 6e62bf890e21 A
pick 313fe965c048 B
pick d0f65f2f81ee C
pick 0547e3f1350d D
pick 8f99a4f1fbbd E
Rebasing (1/6)
Stopped at e64c99ec4da8 ()
rebase -i script before editing:
pick 6e62bf890e21 A
pick 313fe965c048 B
pick d0f65f2f81ee C
pick 0547e3f1350d D
pick 8f99a4f1fbbd E
rebase -i script after editing:
pick 6e62bf890e21 A
pick 313fe965c048 B
pick d0f65f2f81ee C
pick 0547e3f1350d D
Rebasing (2/5)
Rebasing (3/5)
Rebasing (4/5)
Rebasing (5/5)
Successfully rebased and updated refs/heads/missing-commit.
Switched to branch 'primary'
Deleted branch missing-commit (was 0547e3f1350d).
fatal: No rebase in progress?
ok 100 - rebase --edit-todo respects rebase.missingCommitsCheck = ignore
expecting success of 3404.101 'rebase --edit-todo respects rebase.missingCommitsCheck = warn':
cat >expect <<-EOF &&
error: invalid command 'pickled'
error: invalid line 1: pickled $(git rev-list --pretty=oneline --abbrev-commit -1 primary~4)
Warning: some commits may have been dropped accidentally.
Dropped commits (newer to older):
- $(git rev-list --pretty=oneline --abbrev-commit -1 primary)
- $(git rev-list --pretty=oneline --abbrev-commit -1 primary~4)
To avoid this message, use "drop" to explicitly remove a commit.
EOF
head -n5 expect >expect.2 &&
tail -n1 expect >>expect.2 &&
tail -n4 expect.2 >expect.3 &&
test_config rebase.missingCommitsCheck warn &&
rebase_setup_and_clean missing-commit &&
(
set_fake_editor &&
test_must_fail env FAKE_LINES="bad 1 2 3 4 5" \
git rebase -i --root &&
cp .git/rebase-merge/git-rebase-todo.backup orig &&
FAKE_LINES="2 3 4" git rebase --edit-todo 2>actual.2 &&
head -n7 actual.2 >actual &&
test_cmp expect actual &&
cp orig .git/rebase-merge/git-rebase-todo &&
FAKE_LINES="1 2 3 4" git rebase --edit-todo 2>actual.2 &&
head -n4 actual.2 >actual &&
test_cmp expect.3 actual &&
git rebase --continue 2>actual
) &&
test D = $(git cat-file commit HEAD | sed -ne \$p) &&
test_i18ngrep \
"Successfully rebased and updated refs/heads/missing-commit" \
actual
Switched to a new branch 'missing-commit'
rebase -i script before editing:
pick 6e62bf890e21 A
pick 313fe965c048 B
pick d0f65f2f81ee C
pick 0547e3f1350d D
pick 8f99a4f1fbbd E
rebase -i script after editing:
pickled 6e62bf890e21 A
pick 313fe965c048 B
pick d0f65f2f81ee C
pick 0547e3f1350d D
pick 8f99a4f1fbbd E
error: invalid command 'pickled'
error: invalid line 1: pickled 6e62bf890e21 A
You can fix this with 'git rebase --edit-todo' and then run 'git rebase --continue'.
Or you can abort the rebase with 'git rebase --abort'.
rebase -i script before editing:
pickled 6e62bf890e21 A
pick 313fe965c048 B
pick d0f65f2f81ee C
pick 0547e3f1350d D
pick 8f99a4f1fbbd E
rebase -i script after editing:
pick 313fe965c048 B
pick d0f65f2f81ee C
pick 0547e3f1350d D
rebase -i script before editing:
pick 6e62bf890e21 A
pick 313fe965c048 B
pick d0f65f2f81ee C
pick 0547e3f1350d D
pick 8f99a4f1fbbd E
rebase -i script after editing:
pick 6e62bf890e21 A
pick 313fe965c048 B
pick d0f65f2f81ee C
pick 0547e3f1350d D
Rebasing (1/4)
Rebasing (2/4)
Rebasing (3/4)
Rebasing (4/4)
Successfully rebased and updated refs/heads/missing-commit.
Switched to branch 'primary'
Deleted branch missing-commit (was 0547e3f1350d).
fatal: No rebase in progress?
ok 101 - rebase --edit-todo respects rebase.missingCommitsCheck = warn
expecting success of 3404.102 'rebase --edit-todo respects rebase.missingCommitsCheck = error':
cat >expect <<-EOF &&
error: invalid command 'pickled'
error: invalid line 1: pickled $(git rev-list --pretty=oneline --abbrev-commit -1 primary~4)
Warning: some commits may have been dropped accidentally.
Dropped commits (newer to older):
- $(git rev-list --pretty=oneline --abbrev-commit -1 primary)
- $(git rev-list --pretty=oneline --abbrev-commit -1 primary~4)
To avoid this message, use "drop" to explicitly remove a commit.
Use 'git config rebase.missingCommitsCheck' to change the level of warnings.
The possible behaviours are: ignore, warn, error.
You can fix this with 'git rebase --edit-todo' and then run 'git rebase --continue'.
Or you can abort the rebase with 'git rebase --abort'.
EOF
tail -n11 expect >expect.2 &&
head -n3 expect.2 >expect.3 &&
tail -n7 expect.2 >>expect.3 &&
test_config rebase.missingCommitsCheck error &&
rebase_setup_and_clean missing-commit &&
(
set_fake_editor &&
test_must_fail env FAKE_LINES="bad 1 2 3 4 5" \
git rebase -i --root &&
cp .git/rebase-merge/git-rebase-todo.backup orig &&
test_must_fail env FAKE_LINES="2 3 4" \
git rebase --edit-todo 2>actual &&
test_cmp expect actual &&
test_must_fail git rebase --continue 2>actual &&
test_cmp expect.2 actual &&
test_must_fail git rebase --edit-todo &&
cp orig .git/rebase-merge/git-rebase-todo &&
test_must_fail env FAKE_LINES="1 2 3 4" \
git rebase --edit-todo 2>actual &&
test_cmp expect.3 actual &&
test_must_fail git rebase --continue 2>actual &&
test_cmp expect.3 actual &&
cp orig .git/rebase-merge/git-rebase-todo &&
FAKE_LINES="1 2 3 4 drop 5" git rebase --edit-todo &&
git rebase --continue 2>actual
) &&
test D = $(git cat-file commit HEAD | sed -ne \$p) &&
test_i18ngrep \
"Successfully rebased and updated refs/heads/missing-commit" \
actual
Switched to a new branch 'missing-commit'
rebase -i script before editing:
pick 6e62bf890e21 A
pick 313fe965c048 B
pick d0f65f2f81ee C
pick 0547e3f1350d D
pick 8f99a4f1fbbd E
rebase -i script after editing:
pickled 6e62bf890e21 A
pick 313fe965c048 B
pick d0f65f2f81ee C
pick 0547e3f1350d D
pick 8f99a4f1fbbd E
error: invalid command 'pickled'
error: invalid line 1: pickled 6e62bf890e21 A
You can fix this with 'git rebase --edit-todo' and then run 'git rebase --continue'.
Or you can abort the rebase with 'git rebase --abort'.
rebase -i script before editing:
pickled 6e62bf890e21 A
pick 313fe965c048 B
pick d0f65f2f81ee C
pick 0547e3f1350d D
pick 8f99a4f1fbbd E
rebase -i script after editing:
pick 313fe965c048 B
pick d0f65f2f81ee C
pick 0547e3f1350d D
Warning: some commits may have been dropped accidentally.
Dropped commits (newer to older):
- 8f99a4f1fbbd E
- 6e62bf890e21 A
To avoid this message, use "drop" to explicitly remove a commit.
Use 'git config rebase.missingCommitsCheck' to change the level of warnings.
The possible behaviours are: ignore, warn, error.
You can fix this with 'git rebase --edit-todo' and then run 'git rebase --continue'.
Or you can abort the rebase with 'git rebase --abort'.
rebase -i script before editing:
pick 6e62bf890e21 A
pick 313fe965c048 B
pick d0f65f2f81ee C
pick 0547e3f1350d D
pick 8f99a4f1fbbd E
rebase -i script after editing:
pick 6e62bf890e21 A
pick 313fe965c048 B
pick d0f65f2f81ee C
pick 0547e3f1350d D
rebase -i script before editing:
pick 6e62bf890e21 A
pick 313fe965c048 B
pick d0f65f2f81ee C
pick 0547e3f1350d D
pick 8f99a4f1fbbd E
rebase -i script after editing:
pick 6e62bf890e21 A
pick 313fe965c048 B
pick d0f65f2f81ee C
pick 0547e3f1350d D
drop 8f99a4f1fbbd E
Rebasing (1/5)
Rebasing (2/5)
Rebasing (3/5)
Rebasing (4/5)
Rebasing (5/5)
Successfully rebased and updated refs/heads/missing-commit.
Switched to branch 'primary'
Deleted branch missing-commit (was 0547e3f1350d).
fatal: No rebase in progress?
ok 102 - rebase --edit-todo respects rebase.missingCommitsCheck = error
expecting success of 3404.103 'rebase.missingCommitsCheck = error after resolving conflicts':
test_config rebase.missingCommitsCheck error &&
(
set_fake_editor &&
FAKE_LINES="drop 1 break 2 3 4" git rebase -i A E
) &&
git rebase --edit-todo &&
test_must_fail git rebase --continue &&
echo x >file1 &&
git add file1 &&
git rebase --continue
rebase -i script before editing:
pick 313fe965c048 B
pick d0f65f2f81ee C
pick 0547e3f1350d D
pick 8f99a4f1fbbd E
rebase -i script after editing:
drop 313fe965c048 B
break
pick d0f65f2f81ee C
pick 0547e3f1350d D
pick 8f99a4f1fbbd E
Rebasing (2/5)
Stopped at 6e62bf890e21 (A)
Rebasing (3/5)
Rebasing (4/5)
Auto-merging file1
CONFLICT (content): Merge conflict in file1
error: could not apply 0547e3f1350d... D
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 0547e3f1350d... D
[detached HEAD c2dad584937b] D
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Rebasing (5/5)
Successfully rebased and updated detached HEAD.
ok 103 - rebase.missingCommitsCheck = error after resolving conflicts
expecting success of 3404.104 'rebase.missingCommitsCheck = error when editing for a second time':
test_config rebase.missingCommitsCheck error &&
(
set_fake_editor &&
FAKE_LINES="1 break 2 3" git rebase -i A D &&
cp .git/rebase-merge/git-rebase-todo todo &&
test_must_fail env FAKE_LINES=2 git rebase --edit-todo &&
GIT_SEQUENCE_EDITOR="cp todo" git rebase --edit-todo &&
git rebase --continue
)
rebase -i script before editing:
pick 313fe965c048 B
pick d0f65f2f81ee C
pick 0547e3f1350d D
rebase -i script after editing:
pick 313fe965c048 B
break
pick d0f65f2f81ee C
pick 0547e3f1350d D
Rebasing (2/4)
Stopped at 313fe965c048 (B)
rebase -i script before editing:
pick d0f65f2f81ee C
pick 0547e3f1350d D
rebase -i script after editing:
pick 0547e3f1350d D
Warning: some commits may have been dropped accidentally.
Dropped commits (newer to older):
- d0f65f2f81ee C
To avoid this message, use "drop" to explicitly remove a commit.
Use 'git config rebase.missingCommitsCheck' to change the level of warnings.
The possible behaviours are: ignore, warn, error.
You can fix this with 'git rebase --edit-todo' and then run 'git rebase --continue'.
Or you can abort the rebase with 'git rebase --abort'.
Rebasing (3/4)
Rebasing (4/4)
Successfully rebased and updated detached HEAD.
ok 104 - rebase.missingCommitsCheck = error when editing for a second time
expecting success of 3404.105 'respects rebase.abbreviateCommands with fixup, squash and exec':
rebase_setup_and_clean abbrevcmd &&
test_commit "first" file1.txt "first line" first &&
test_commit "second" file1.txt "another line" second &&
test_commit "fixup! first" file2.txt "first line again" first_fixup &&
test_commit "squash! second" file1.txt "another line here" second_squash &&
cat >expected <<-EOF &&
p $(git rev-list --abbrev-commit -1 first) first
f $(git rev-list --abbrev-commit -1 first_fixup) fixup! first
x git show HEAD
p $(git rev-list --abbrev-commit -1 second) second
s $(git rev-list --abbrev-commit -1 second_squash) squash! second
x git show HEAD
EOF
git checkout abbrevcmd &&
test_config rebase.abbreviateCommands true &&
(
set_cat_todo_editor &&
test_must_fail git rebase -i --exec "git show HEAD" \
--autosquash primary >actual
) &&
test_cmp expected actual
Previous HEAD position was 0547e3f1350d D
Switched to a new branch 'abbrevcmd'
[abbrevcmd 42b8f159a432] first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file1.txt
[abbrevcmd 4d77de6c05df] second
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[abbrevcmd ecff34393bc3] fixup! first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file2.txt
[abbrevcmd f772e337e29f] squash! second
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Already on 'abbrevcmd'
error: There was a problem with the editor '"$FAKE_EDITOR"'.
Switched to branch 'primary'
Deleted branch abbrevcmd (was f772e337e29f).
fatal: No rebase in progress?
ok 105 - respects rebase.abbreviateCommands with fixup, squash and exec
expecting success of 3404.106 'static check of bad command':
rebase_setup_and_clean bad-cmd &&
(
set_fake_editor &&
test_must_fail env FAKE_LINES="1 2 3 bad 4 5" \
git rebase -i --root 2>actual &&
test_i18ngrep "pickled $(git rev-list --oneline -1 primary~1)" \
actual &&
test_i18ngrep "You can fix this with .git rebase --edit-todo.." \
actual &&
FAKE_LINES="1 2 3 drop 4 5" git rebase --edit-todo
) &&
git rebase --continue &&
test E = $(git cat-file commit HEAD | sed -ne \$p) &&
test C = $(git cat-file commit HEAD^ | sed -ne \$p)
Switched to a new branch 'bad-cmd'
rebase -i script before editing:
pick 6e62bf890e21 A
pick 313fe965c048 B
pick d0f65f2f81ee C
pick 0547e3f1350d D
pick 8f99a4f1fbbd E
rebase -i script after editing:
pick 6e62bf890e21 A
pick 313fe965c048 B
pick d0f65f2f81ee C
pickled 0547e3f1350d D
pick 8f99a4f1fbbd E
error: invalid line 4: pickled 0547e3f1350d D
You can fix this with 'git rebase --edit-todo' and then run 'git rebase --continue'.
error: invalid command 'pickled'
error: invalid line 4: pickled 0547e3f1350d D
rebase -i script before editing:
pick 6e62bf890e21 A
pick 313fe965c048 B
pick d0f65f2f81ee C
pickled 0547e3f1350d D
pick 8f99a4f1fbbd E
rebase -i script after editing:
pick 6e62bf890e21 A
pick 313fe965c048 B
pick d0f65f2f81ee C
drop 0547e3f1350d D
pick 8f99a4f1fbbd E
Rebasing (1/5)
Rebasing (2/5)
Rebasing (3/5)
Rebasing (4/5)
Rebasing (5/5)
Successfully rebased and updated refs/heads/bad-cmd.
Switched to branch 'primary'
Deleted branch bad-cmd (was 1c8ce10ab787).
fatal: No rebase in progress?
ok 106 - static check of bad command
expecting success of 3404.107 'the first command cannot be a fixup':
rebase_setup_and_clean fixup-first &&
cat >orig <<-EOF &&
fixup $(git log -1 --format="%h %s" B)
pick $(git log -1 --format="%h %s" C)
EOF
(
set_replace_editor orig &&
test_must_fail git rebase -i A 2>actual
) &&
grep "cannot .fixup. without a previous commit" actual &&
grep "You can fix this with .git rebase --edit-todo.." actual &&
# verify that the todo list has not been truncated
grep -v "^#" .git/rebase-merge/git-rebase-todo >actual &&
test_cmp orig actual &&
test_must_fail git rebase --edit-todo 2>actual &&
grep "cannot .fixup. without a previous commit" actual &&
grep "You can fix this with .git rebase --edit-todo.." actual &&
# verify that the todo list has not been truncated
grep -v "^#" .git/rebase-merge/git-rebase-todo >actual &&
test_cmp orig actual
Switched to a new branch 'fixup-first'
rebase -i script after editing:
fixup 313fe965c048 B
pick d0f65f2f81ee C
error: cannot 'fixup' without a previous commit
You can fix this with 'git rebase --edit-todo' and then run 'git rebase --continue'.
error: cannot 'fixup' without a previous commit
error: cannot 'fixup' without a previous commit
You can fix this with 'git rebase --edit-todo' and then run 'git rebase --continue'.
Previous HEAD position was 6e62bf890e21 A
Switched to branch 'primary'
error: Cannot delete branch 'fixup-first' checked out at '/<<PKGBUILDDIR>>/t/trash directory.t3404-rebase-interactive'
ok 107 - the first command cannot be a fixup
expecting success of 3404.108 'tabs and spaces are accepted in the todolist':
rebase_setup_and_clean indented-comment &&
write_script add-indent.sh <<-\EOF &&
(
# Turn single spaces into space/tab mix
sed "1s/ / /g; 2s/ / /g; 3s/ / /g" "$1"
printf "\n\t# comment\n #more\n\t # comment\n"
) >"$1.new"
mv "$1.new" "$1"
EOF
(
test_set_editor "$(pwd)/add-indent.sh" &&
git rebase -i HEAD^^^
) &&
test E = $(git cat-file commit HEAD | sed -ne \$p)
Switched to a new branch 'indented-comment'
Successfully rebased and updated refs/heads/indented-comment.
Switched to branch 'primary'
Deleted branch indented-comment (was 8f99a4f1fbbd).
fatal: No rebase in progress?
ok 108 - tabs and spaces are accepted in the todolist
expecting success of 3404.109 'static check of bad SHA-1':
rebase_setup_and_clean bad-sha &&
(
set_fake_editor &&
test_must_fail env FAKE_LINES="1 2 edit fakesha 3 4 5 #" \
git rebase -i --root 2>actual &&
test_i18ngrep "edit XXXXXXX False commit" actual &&
test_i18ngrep "You can fix this with .git rebase --edit-todo.." \
actual &&
FAKE_LINES="1 2 4 5 6" git rebase --edit-todo
) &&
git rebase --continue &&
test E = $(git cat-file commit HEAD | sed -ne \$p)
Switched to a new branch 'bad-sha'
rebase -i script before editing:
pick 6e62bf890e21 A
pick 313fe965c048 B
pick d0f65f2f81ee C
pick 0547e3f1350d D
pick 8f99a4f1fbbd E
rebase -i script after editing:
pick 6e62bf890e21 A
pick 313fe965c048 B
edit XXXXXXX False commit
pick d0f65f2f81ee C
pick 0547e3f1350d D
pick 8f99a4f1fbbd E
# comment
error: invalid line 3: edit XXXXXXX False commit
You can fix this with 'git rebase --edit-todo' and then run 'git rebase --continue'.
error: could not parse 'XXXXXXX'
error: invalid line 3: edit XXXXXXX False commit
rebase -i script before editing:
pick 6e62bf890e21 A
pick 313fe965c048 B
edit XXXXXXX False commit
pick d0f65f2f81ee C
pick 0547e3f1350d D
pick 8f99a4f1fbbd E
rebase -i script after editing:
pick 6e62bf890e21 A
pick 313fe965c048 B
pick d0f65f2f81ee C
pick 0547e3f1350d D
pick 8f99a4f1fbbd E
Rebasing (1/5)
Rebasing (2/5)
Rebasing (3/5)
Rebasing (4/5)
Rebasing (5/5)
Successfully rebased and updated refs/heads/bad-sha.
Switched to branch 'primary'
Deleted branch bad-sha (was 8f99a4f1fbbd).
fatal: No rebase in progress?
ok 109 - static check of bad SHA-1
expecting success of 3404.110 'editor saves as CR/LF':
git checkout -b with-crlf &&
write_script add-crs.sh <<-\EOF &&
sed -e "s/\$/Q/" <"$1" | tr Q "\\015" >"$1".new &&
mv -f "$1".new "$1"
EOF
(
test_set_editor "$(pwd)/add-crs.sh" &&
git rebase -i HEAD^
)
Switched to a new branch 'with-crlf'
Successfully rebased and updated refs/heads/with-crlf.
ok 110 - editor saves as CR/LF
expecting success of 3404.111 'rebase -i --gpg-sign=<key-id>':
test_when_finished "test_might_fail git rebase --abort" &&
(
set_fake_editor &&
FAKE_LINES="edit 1" git rebase -i --gpg-sign="\"S I Gner\"" \
HEAD^ >out 2>err
) &&
test_i18ngrep "$SQ-S\"S I Gner\"$SQ" err
git commit --amend '-S"S I Gner"'
ok 111 - rebase -i --gpg-sign=<key-id>
expecting success of 3404.112 'rebase -i --gpg-sign=<key-id> overrides commit.gpgSign':
test_when_finished "test_might_fail git rebase --abort" &&
test_config commit.gpgsign true &&
(
set_fake_editor &&
FAKE_LINES="edit 1" git rebase -i --gpg-sign="\"S I Gner\"" \
HEAD^ >out 2>err
) &&
test_i18ngrep "$SQ-S\"S I Gner\"$SQ" err
git commit --amend '-S"S I Gner"'
ok 112 - rebase -i --gpg-sign=<key-id> overrides commit.gpgSign
expecting success of 3404.113 'valid author header after --root swap':
rebase_setup_and_clean author-header no-conflict-branch &&
git commit --amend --author="Au ${SQ}thor <author@example.com>" --no-edit &&
git cat-file commit HEAD | grep ^author >expected &&
(
set_fake_editor &&
FAKE_LINES="5 1" git rebase -i --root
) &&
git cat-file commit HEAD^ | grep ^author >actual &&
test_cmp expected actual
Switched to a new branch 'author-header'
[author-header d4dcc6d22bff] M
Author: Au 'thor <author@example.com>
Date: Thu Apr 7 15:29:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 fileM
rebase -i script before editing:
pick 6e62bf890e21 A
pick 808874f7b187 J
pick 265b89e813d4 K
pick 6b0f5e6c3e83 L
pick d4dcc6d22bff M
rebase -i script after editing:
pick d4dcc6d22bff M
pick 6e62bf890e21 A
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/author-header.
Switched to branch 'primary'
Deleted branch author-header (was 141d57bb9b25).
fatal: No rebase in progress?
ok 113 - valid author header after --root swap
expecting success of 3404.114 'valid author header when author contains single quote':
rebase_setup_and_clean author-header no-conflict-branch &&
git commit --amend --author="Au ${SQ}thor <author@example.com>" --no-edit &&
git cat-file commit HEAD | grep ^author >expected &&
(
set_fake_editor &&
FAKE_LINES="2" git rebase -i HEAD~2
) &&
git cat-file commit HEAD | grep ^author >actual &&
test_cmp expected actual
Switched to a new branch 'author-header'
[author-header d4dcc6d22bff] M
Author: Au 'thor <author@example.com>
Date: Thu Apr 7 15:29:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 fileM
rebase -i script before editing:
pick 6b0f5e6c3e83 L
pick d4dcc6d22bff M
rebase -i script after editing:
pick d4dcc6d22bff M
Rebasing (1/1)
Successfully rebased and updated refs/heads/author-header.
Switched to branch 'primary'
Deleted branch author-header (was b929a6a72971).
fatal: No rebase in progress?
ok 114 - valid author header when author contains single quote
expecting success of 3404.115 'post-commit hook is called':
>actual &&
test_hook post-commit <<-\EOS &&
git rev-parse HEAD >>actual
EOS
(
set_fake_editor &&
FAKE_LINES="edit 4 1 reword 2 fixup 3" git rebase -i A E &&
echo x>file3 &&
git add file3 &&
FAKE_COMMIT_MESSAGE=edited git rebase --continue
) &&
git rev-parse HEAD@{5} HEAD@{4} HEAD@{3} HEAD@{2} HEAD@{1} HEAD \
>expect &&
test_cmp expect actual
rebase -i script before editing:
pick 313fe965c048 B
pick d0f65f2f81ee C
pick 0547e3f1350d D
pick 8f99a4f1fbbd E
rebase -i script after editing:
edit 8f99a4f1fbbd E
pick 313fe965c048 B
reword d0f65f2f81ee C
fixup 0547e3f1350d D
Rebasing (1/4)
Stopped at 8f99a4f1fbbd... E
You can amend the commit now, with
git commit --amend
Once you are satisfied with your changes, run
git rebase --continue
[detached HEAD bc867d3a07fd] edited
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:17:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 file3
Rebasing (2/4)
Rebasing (3/4)
[detached HEAD d54e5ab0b586] edited
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 file2
Rebasing (4/4)
Successfully rebased and updated detached HEAD.
ok 115 - post-commit hook is called
expecting success of 3404.116 'correct error message for partial commit after empty pick':
test_when_finished "git rebase --abort" &&
(
set_fake_editor &&
FAKE_LINES="2 1 1" &&
export FAKE_LINES &&
test_must_fail git rebase -i A D
) &&
echo x >file1 &&
test_must_fail git commit file1 2>err &&
test_i18ngrep "cannot do a partial commit during a rebase." err
rebase -i script before editing:
pick 313fe965c048 B
pick d0f65f2f81ee C
pick 0547e3f1350d D
rebase -i script after editing:
pick d0f65f2f81ee C
pick 313fe965c048 B
pick 313fe965c048 B
Rebasing (1/3)
Rebasing (2/3)
Rebasing (3/3)
The previous cherry-pick is now empty, possibly due to conflict resolution.
If you wish to commit it anyway, use:
git commit --allow-empty
Otherwise, please use 'git rebase --skip'
interactive rebase in progress; onto 6e62bf890e21
Last commands done (3 commands done):
pick 313fe965c048 B
pick 313fe965c048 B
(see more in file .git/rebase-merge/done)
No commands remaining.
You are currently rebasing.
(all conflicts fixed: run "git rebase --continue")
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
actual.2
add-crs.sh
add-indent.sh
err
expect
expect.2
expect.3
expected
fake-editor.sh
fake-sequence-editor.sh
orig
out
script
sub/
todo
nothing added to commit but untracked files present (use "git add" to track)
Could not apply 313fe965c048... B
fatal: cannot do a partial commit during a rebase.
ok 116 - correct error message for partial commit after empty pick
expecting success of 3404.117 'correct error message for commit --amend after empty pick':
test_when_finished "git rebase --abort" &&
(
set_fake_editor &&
FAKE_LINES="1 1" &&
export FAKE_LINES &&
test_must_fail git rebase -i A D
) &&
echo x>file1 &&
test_must_fail git commit -a --amend 2>err &&
test_i18ngrep "middle of a rebase -- cannot amend." err
rebase -i script before editing:
pick 313fe965c048 B
pick d0f65f2f81ee C
pick 0547e3f1350d D
rebase -i script after editing:
pick 313fe965c048 B
pick 313fe965c048 B
Rebasing (2/2)
The previous cherry-pick is now empty, possibly due to conflict resolution.
If you wish to commit it anyway, use:
git commit --allow-empty
Otherwise, please use 'git rebase --skip'
interactive rebase in progress; onto 6e62bf890e21
Last commands done (2 commands done):
pick 313fe965c048 B
pick 313fe965c048 B
No commands remaining.
You are currently rebasing.
(all conflicts fixed: run "git rebase --continue")
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
actual.2
add-crs.sh
add-indent.sh
err
expect
expect.2
expect.3
expected
fake-editor.sh
fake-sequence-editor.sh
orig
out
script
sub/
todo
nothing added to commit but untracked files present (use "git add" to track)
Could not apply 313fe965c048... B
fatal: You are in the middle of a rebase -- cannot amend.
ok 117 - correct error message for commit --amend after empty pick
expecting success of 3404.118 'todo has correct onto hash':
GIT_SEQUENCE_EDITOR=cat git rebase -i no-conflict-branch~4 no-conflict-branch >actual &&
onto=$(git rev-parse --short HEAD~4) &&
test_i18ngrep "^# Rebase ..* onto $onto" actual
Successfully rebased and updated refs/heads/no-conflict-branch.
# Rebase 6e62bf890e21..33895580a3f9 onto 6e62bf890e21 (4 commands)
ok 118 - todo has correct onto hash
expecting success of 3404.119 'ORIG_HEAD is updated correctly':
test_when_finished "git checkout primary && git branch -D test-orig-head" &&
git checkout -b test-orig-head A &&
git commit --allow-empty -m A1 &&
git commit --allow-empty -m A2 &&
git commit --allow-empty -m A3 &&
git commit --allow-empty -m A4 &&
git rebase primary &&
test_cmp_rev ORIG_HEAD test-orig-head@{1}
Switched to a new branch 'test-orig-head'
[test-orig-head 988a45cf7c4d] A1
Author: A U Thor <author@example.com>
[test-orig-head 001994977a57] A2
Author: A U Thor <author@example.com>
[test-orig-head f8b037fdfd3c] A3
Author: A U Thor <author@example.com>
[test-orig-head dee0c985c630] A4
Author: A U Thor <author@example.com>
Rebasing (1/4)
Rebasing (2/4)
Rebasing (3/4)
Rebasing (4/4)
Successfully rebased and updated refs/heads/test-orig-head.
Switched to branch 'primary'
Deleted branch test-orig-head (was 25c72c815b0c).
ok 119 - ORIG_HEAD is updated correctly
expecting success of 3404.120 '--update-refs adds label and update-ref commands':
git checkout -b update-refs no-conflict-branch &&
git branch -f base HEAD~4 &&
git branch -f first HEAD~3 &&
git branch -f second HEAD~3 &&
git branch -f third HEAD~1 &&
git commit --allow-empty --fixup=third &&
git branch -f is-not-reordered &&
git commit --allow-empty --fixup=HEAD~4 &&
git branch -f shared-tip &&
(
set_cat_todo_editor &&
cat >expect <<-EOF &&
pick $(git log -1 --format=%h J) J
fixup $(git log -1 --format=%h update-refs) fixup! J # empty
update-ref refs/heads/second
update-ref refs/heads/first
pick $(git log -1 --format=%h K) K
pick $(git log -1 --format=%h L) L
fixup $(git log -1 --format=%h is-not-reordered) fixup! L # empty
update-ref refs/heads/third
pick $(git log -1 --format=%h M) M
update-ref refs/heads/no-conflict-branch
update-ref refs/heads/is-not-reordered
update-ref refs/heads/shared-tip
EOF
test_must_fail git rebase -i --autosquash --update-refs primary >todo &&
test_cmp expect todo &&
test_must_fail git -c rebase.autosquash=true \
-c rebase.updaterefs=true \
rebase -i primary >todo &&
test_cmp expect todo
)
Switched to a new branch 'update-refs'
[update-refs d580aa243c5a] fixup! L
Author: A U Thor <author@example.com>
[update-refs 5921e09cdb84] fixup! J
Author: A U Thor <author@example.com>
error: There was a problem with the editor '"$FAKE_EDITOR"'.
error: There was a problem with the editor '"$FAKE_EDITOR"'.
ok 120 - --update-refs adds label and update-ref commands
expecting success of 3404.121 '--update-refs adds commands with --rebase-merges':
git checkout -b update-refs-with-merge no-conflict-branch &&
git branch -f base HEAD~4 &&
git branch -f first HEAD~3 &&
git branch -f second HEAD~3 &&
git branch -f third HEAD~1 &&
git merge -m merge branch2 &&
git branch -f merge-branch &&
git commit --fixup=third --allow-empty &&
(
set_cat_todo_editor &&
cat >expect <<-EOF &&
label onto
reset onto
pick $(git log -1 --format=%h branch2~1) F
pick $(git log -1 --format=%h branch2) I
update-ref refs/heads/branch2
label merge
reset onto
pick $(git log -1 --format=%h refs/heads/second) J
update-ref refs/heads/second
update-ref refs/heads/first
pick $(git log -1 --format=%h refs/heads/third~1) K
pick $(git log -1 --format=%h refs/heads/third) L
fixup $(git log -1 --format=%h update-refs-with-merge) fixup! L # empty
update-ref refs/heads/third
pick $(git log -1 --format=%h HEAD~2) M
update-ref refs/heads/no-conflict-branch
merge -C $(git log -1 --format=%h HEAD~1) merge # merge
update-ref refs/heads/merge-branch
EOF
test_must_fail git rebase -i --autosquash \
--rebase-merges=rebase-cousins \
--update-refs primary >todo &&
test_cmp expect todo &&
test_must_fail git -c rebase.autosquash=true \
-c rebase.updaterefs=true \
rebase -i \
--rebase-merges=rebase-cousins \
primary >todo &&
test_cmp expect todo
)
Switched to a new branch 'update-refs-with-merge'
Merge made by the 'ort' strategy.
file4 | 1 +
file6 | 1 +
2 files changed, 2 insertions(+)
create mode 100644 file4
create mode 100644 file6
[update-refs-with-merge 29fba79037a4] fixup! L
Author: A U Thor <author@example.com>
error: There was a problem with the editor '"$FAKE_EDITOR"'.
error: There was a problem with the editor '"$FAKE_EDITOR"'.
ok 121 - --update-refs adds commands with --rebase-merges
expecting success of 3404.122 '--update-refs updates refs correctly':
git checkout -B update-refs no-conflict-branch &&
git branch -f base HEAD~4 &&
git branch -f first HEAD~3 &&
git branch -f second HEAD~3 &&
git branch -f third HEAD~1 &&
test_commit extra2 fileX &&
git commit --amend --fixup=L &&
git rebase -i --autosquash --update-refs primary 2>err &&
test_cmp_rev HEAD~3 refs/heads/first &&
test_cmp_rev HEAD~3 refs/heads/second &&
test_cmp_rev HEAD~1 refs/heads/third &&
test_cmp_rev HEAD refs/heads/no-conflict-branch &&
cat >expect <<-\EOF &&
Successfully rebased and updated refs/heads/update-refs.
Updated the following refs with --update-refs:
refs/heads/first
refs/heads/no-conflict-branch
refs/heads/second
refs/heads/third
EOF
# Clear "Rebasing (X/Y)" progress lines and drop leading tabs.
sed -e "s/Rebasing.*Successfully/Successfully/g" -e "s/^\t//g" \
<err >err.trimmed &&
test_cmp expect err.trimmed
Switched to and reset branch 'update-refs'
[update-refs 9da56b161557] extra2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 fileX
[update-refs c4f48e9a00f5] fixup! L
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 fileX
ok 122 - --update-refs updates refs correctly
expecting success of 3404.123 'respect user edits to update-ref steps':
git checkout -B update-refs-break no-conflict-branch &&
git branch -f base HEAD~4 &&
git branch -f first HEAD~3 &&
git branch -f second HEAD~3 &&
git branch -f third HEAD~1 &&
git branch -f unseen base &&
# First, we will add breaks to the expected todo file
cat >fake-todo-1 <<-EOF &&
pick $(git rev-parse HEAD~3)
break
update-ref refs/heads/second
update-ref refs/heads/first
pick $(git rev-parse HEAD~2)
pick $(git rev-parse HEAD~1)
update-ref refs/heads/third
pick $(git rev-parse HEAD)
update-ref refs/heads/no-conflict-branch
EOF
# Second, we will drop some update-refs commands (and move one)
cat >fake-todo-2 <<-EOF &&
update-ref refs/heads/second
pick $(git rev-parse HEAD~2)
update-ref refs/heads/third
pick $(git rev-parse HEAD~1)
break
pick $(git rev-parse HEAD)
EOF
# Third, we will:
# * insert a new one (new-branch),
# * re-add an old one (first), and
# * add a second instance of a previously-stored one (second)
cat >fake-todo-3 <<-EOF &&
update-ref refs/heads/unseen
update-ref refs/heads/new-branch
pick $(git rev-parse HEAD)
update-ref refs/heads/first
update-ref refs/heads/second
EOF
(
set_replace_editor fake-todo-1 &&
git rebase -i --update-refs primary &&
# These branches are currently locked.
for b in first second third no-conflict-branch
do
test_must_fail git branch -f $b base || return 1
done &&
set_replace_editor fake-todo-2 &&
git rebase --edit-todo &&
# These branches are currently locked.
for b in second third
do
test_must_fail git branch -f $b base || return 1
done &&
# These branches are currently unlocked for checkout.
for b in first no-conflict-branch
do
git worktree add wt-$b $b &&
git worktree remove wt-$b || return 1
done &&
git rebase --continue &&
set_replace_editor fake-todo-3 &&
git rebase --edit-todo &&
# These branches are currently locked.
for b in second third first unseen
do
test_must_fail git branch -f $b base || return 1
done &&
# These branches are currently unlocked for checkout.
for b in no-conflict-branch
do
git worktree add wt-$b $b &&
git worktree remove wt-$b || return 1
done &&
git rebase --continue
) &&
test_cmp_rev HEAD~2 refs/heads/third &&
test_cmp_rev HEAD~1 refs/heads/unseen &&
test_cmp_rev HEAD~1 refs/heads/new-branch &&
test_cmp_rev HEAD refs/heads/first &&
test_cmp_rev HEAD refs/heads/second &&
test_cmp_rev HEAD refs/heads/no-conflict-branch
Switched to a new branch 'update-refs-break'
rebase -i script after editing:
pick c49b6574f4e9659c4aef3cc10be848348dc1a0ee
break
update-ref refs/heads/second
update-ref refs/heads/first
pick e31be72ab52d740527956c171d40a832b63e68ca
pick 34033109e5a0def540b16172943d8a7e2a8a712e
update-ref refs/heads/third
pick fb069ba3d9b13031500b5a75939ff4162b7cb13a
update-ref refs/heads/no-conflict-branch
Rebasing (2/9)
Stopped at c49b6574f4e9 (J)
fatal: cannot force update the branch 'first' used by worktree at '/<<PKGBUILDDIR>>/t/trash directory.t3404-rebase-interactive'
fatal: cannot force update the branch 'second' used by worktree at '/<<PKGBUILDDIR>>/t/trash directory.t3404-rebase-interactive'
fatal: cannot force update the branch 'third' used by worktree at '/<<PKGBUILDDIR>>/t/trash directory.t3404-rebase-interactive'
fatal: cannot force update the branch 'no-conflict-branch' used by worktree at '/<<PKGBUILDDIR>>/t/trash directory.t3404-rebase-interactive'
rebase -i script after editing:
update-ref refs/heads/second
pick e31be72ab52d740527956c171d40a832b63e68ca
update-ref refs/heads/third
pick 34033109e5a0def540b16172943d8a7e2a8a712e
break
pick fb069ba3d9b13031500b5a75939ff4162b7cb13a
fatal: cannot force update the branch 'second' used by worktree at '/<<PKGBUILDDIR>>/t/trash directory.t3404-rebase-interactive'
fatal: cannot force update the branch 'third' used by worktree at '/<<PKGBUILDDIR>>/t/trash directory.t3404-rebase-interactive'
warning: refname 'first' is ambiguous.
warning: refname 'first' is ambiguous.
Preparing worktree (checking out 'first')
warning: refname 'first' is ambiguous.
HEAD is now at c49b6574f4e9 J
Preparing worktree (checking out 'no-conflict-branch')
HEAD is now at fb069ba3d9b1 M
Rebasing (3/8)
Rebasing (4/8)
Rebasing (5/8)
Rebasing (6/8)
Rebasing (7/8)
Stopped at 34033109e5a0 (L)
rebase -i script after editing:
update-ref refs/heads/unseen
update-ref refs/heads/new-branch
pick fb069ba3d9b13031500b5a75939ff4162b7cb13a
update-ref refs/heads/first
update-ref refs/heads/second
fatal: cannot force update the branch 'second' used by worktree at '/<<PKGBUILDDIR>>/t/trash directory.t3404-rebase-interactive'
fatal: cannot force update the branch 'third' used by worktree at '/<<PKGBUILDDIR>>/t/trash directory.t3404-rebase-interactive'
fatal: cannot force update the branch 'first' used by worktree at '/<<PKGBUILDDIR>>/t/trash directory.t3404-rebase-interactive'
fatal: cannot force update the branch 'unseen' used by worktree at '/<<PKGBUILDDIR>>/t/trash directory.t3404-rebase-interactive'
Preparing worktree (checking out 'no-conflict-branch')
HEAD is now at fb069ba3d9b1 M
Rebasing (8/12)
Rebasing (9/12)
Rebasing (10/12)
Rebasing (11/12)
Rebasing (12/12)
Successfully rebased and updated refs/heads/update-refs-break.
Updated the following refs with --update-refs:
refs/heads/first
refs/heads/new-branch
refs/heads/second
refs/heads/third
refs/heads/unseen
ok 123 - respect user edits to update-ref steps
expecting success of 3404.124 '--update-refs: all update-ref lines removed':
git checkout -b test-refs-not-removed no-conflict-branch &&
git branch -f base HEAD~4 &&
git branch -f first HEAD~3 &&
git branch -f second HEAD~3 &&
git branch -f third HEAD~1 &&
git branch -f tip &&
test_commit test-refs-not-removed &&
git commit --amend --fixup first &&
git rev-parse first second third tip no-conflict-branch >expect-oids &&
(
set_cat_todo_editor &&
test_must_fail git rebase -i --update-refs base >todo.raw &&
sed -e "/^update-ref/d" <todo.raw >todo
) &&
(
set_replace_editor todo &&
git rebase -i --update-refs base
) &&
# Ensure refs are not deleted and their OIDs have not changed
git rev-parse first second third tip no-conflict-branch >actual-oids &&
test_cmp expect-oids actual-oids
Switched to a new branch 'test-refs-not-removed'
[test-refs-not-removed adbf713ec8f3] test-refs-not-removed
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 test-refs-not-removed.t
warning: refname 'first' is ambiguous.
[test-refs-not-removed 5ca2ca8d583e] fixup! first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 test-refs-not-removed.t
warning: refname 'first' is ambiguous.
warning: refname 'second' is ambiguous.
error: There was a problem with the editor '"$FAKE_EDITOR"'.
rebase -i script after editing:
pick c49b6574f4e9 J
pick e31be72ab52d K
pick 34033109e5a0 L
pick fb069ba3d9b1 M
pick 5ca2ca8d583e fixup! first
Successfully rebased and updated refs/heads/test-refs-not-removed.
warning: refname 'first' is ambiguous.
warning: refname 'second' is ambiguous.
ok 124 - --update-refs: all update-ref lines removed
expecting success of 3404.125 '--update-refs: all update-ref lines removed, then some re-added':
git checkout -b test-refs-not-removed2 no-conflict-branch &&
git branch -f base HEAD~4 &&
git branch -f first HEAD~3 &&
git branch -f second HEAD~3 &&
git branch -f third HEAD~1 &&
git branch -f tip &&
test_commit test-refs-not-removed2 &&
git commit --amend --fixup first &&
git rev-parse first second third >expect-oids &&
(
set_cat_todo_editor &&
test_must_fail git rebase -i \
--autosquash --update-refs \
base >todo.raw &&
sed -e "/^update-ref/d" <todo.raw >todo
) &&
# Add a break to the end of the todo so we can edit later
echo "break" >>todo &&
(
set_replace_editor todo &&
git rebase -i --autosquash --update-refs base &&
echo "update-ref refs/heads/tip" >todo &&
git rebase --edit-todo &&
git rebase --continue
) &&
# Ensure first/second/third are unchanged, but tip is updated
git rev-parse first second third >actual-oids &&
test_cmp expect-oids actual-oids &&
test_cmp_rev HEAD tip
Switched to a new branch 'test-refs-not-removed2'
[test-refs-not-removed2 67d47c6fa009] test-refs-not-removed2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 test-refs-not-removed2.t
warning: refname 'first' is ambiguous.
[test-refs-not-removed2 04193a2c3f06] fixup! first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 test-refs-not-removed2.t
warning: refname 'first' is ambiguous.
warning: refname 'second' is ambiguous.
warning: refname 'first' is ambiguous.
error: There was a problem with the editor '"$FAKE_EDITOR"'.
warning: refname 'first' is ambiguous.
rebase -i script after editing:
pick c49b6574f4e9 J
pick e31be72ab52d K
pick 34033109e5a0 L
pick fb069ba3d9b1 M
pick 04193a2c3f06 fixup! first
break
Rebasing (6/6)
Stopped at 04193a2c3f06 (fixup! first)
rebase -i script after editing:
update-ref refs/heads/tip
Rebasing (7/7)
Successfully rebased and updated refs/heads/test-refs-not-removed2.
Updated the following refs with --update-refs:
refs/heads/tip
warning: refname 'first' is ambiguous.
warning: refname 'second' is ambiguous.
ok 125 - --update-refs: all update-ref lines removed, then some re-added
expecting success of 3404.126 '--update-refs: --edit-todo with no update-ref lines':
git checkout -b test-refs-not-removed3 no-conflict-branch &&
git branch -f base HEAD~4 &&
git branch -f first HEAD~3 &&
git branch -f second HEAD~3 &&
git branch -f third HEAD~1 &&
git branch -f tip &&
test_commit test-refs-not-removed3 &&
git commit --amend --fixup first &&
git rev-parse first second third tip no-conflict-branch >expect-oids &&
(
set_cat_todo_editor &&
test_must_fail git rebase -i \
--autosquash --update-refs \
base >todo.raw &&
sed -e "/^update-ref/d" <todo.raw >todo
) &&
# Add a break to the beginning of the todo so we can resume with no
# update-ref lines
echo "break" >todo.new &&
cat todo >>todo.new &&
(
set_replace_editor todo.new &&
git rebase -i --autosquash --update-refs base &&
# Make no changes when editing so update-refs is still empty
cat todo >todo.new &&
git rebase --edit-todo &&
git rebase --continue
) &&
# Ensure refs are not deleted and their OIDs have not changed
git rev-parse first second third tip no-conflict-branch >actual-oids &&
test_cmp expect-oids actual-oids
Switched to a new branch 'test-refs-not-removed3'
[test-refs-not-removed3 0495d4feaa2b] test-refs-not-removed3
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 test-refs-not-removed3.t
warning: refname 'first' is ambiguous.
[test-refs-not-removed3 6fcb3c6ba86d] fixup! first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 test-refs-not-removed3.t
warning: refname 'first' is ambiguous.
warning: refname 'second' is ambiguous.
warning: refname 'first' is ambiguous.
error: There was a problem with the editor '"$FAKE_EDITOR"'.
warning: refname 'first' is ambiguous.
rebase -i script after editing:
break
pick c49b6574f4e9 J
pick e31be72ab52d K
pick 34033109e5a0 L
pick fb069ba3d9b1 M
pick 6fcb3c6ba86d fixup! first
Rebasing (1/6)
Stopped at 8f99a4f1fbbd (E)
rebase -i script after editing:
pick c49b6574f4e9 J
pick e31be72ab52d K
pick 34033109e5a0 L
pick fb069ba3d9b1 M
pick 6fcb3c6ba86d fixup! first
Rebasing (2/6)
Rebasing (3/6)
Rebasing (4/6)
Rebasing (5/6)
Rebasing (6/6)
Successfully rebased and updated refs/heads/test-refs-not-removed3.
warning: refname 'first' is ambiguous.
warning: refname 'second' is ambiguous.
ok 126 - --update-refs: --edit-todo with no update-ref lines
expecting success of 3404.127 '--update-refs: check failed ref update':
test_when_finished "test_might_fail git rebase --abort" &&
git checkout -B update-refs-error no-conflict-branch &&
git branch -f base HEAD~4 &&
git branch -f first HEAD~3 &&
git branch -f second HEAD~2 &&
git branch -f third HEAD~1 &&
cat >fake-todo <<-EOF &&
pick $(git rev-parse HEAD~3)
break
update-ref refs/heads/first
pick $(git rev-parse HEAD~2)
update-ref refs/heads/second
pick $(git rev-parse HEAD~1)
update-ref refs/heads/third
pick $(git rev-parse HEAD)
update-ref refs/heads/no-conflict-branch
EOF
(
set_replace_editor fake-todo &&
git rebase -i --update-refs base
) &&
# At this point, the values of first, second, and third are
# recorded in the update-refs file. We will force-update the
# "second" ref, but "git branch -f" will not work because of
# the lock in the update-refs file.
git rev-parse third >.git/refs/heads/second &&
test_must_fail git rebase --continue 2>err &&
grep "update_ref failed for ref 'refs/heads/second'" err &&
cat >expect <<-\EOF &&
Updated the following refs with --update-refs:
refs/heads/first
refs/heads/no-conflict-branch
refs/heads/third
Failed to update the following refs with --update-refs:
refs/heads/second
EOF
# Clear "Rebasing (X/Y)" progress lines and drop leading tabs.
tail -n 6 err >err.last &&
sed -e "s/Rebasing.*Successfully/Successfully/g" -e "s/^\t//g" \
<err.last >err.trimmed &&
test_cmp expect err.trimmed
Switched to a new branch 'update-refs-error'
rebase -i script after editing:
pick c49b6574f4e9659c4aef3cc10be848348dc1a0ee
break
update-ref refs/heads/first
pick e31be72ab52d740527956c171d40a832b63e68ca
update-ref refs/heads/second
pick 34033109e5a0def540b16172943d8a7e2a8a712e
update-ref refs/heads/third
pick fb069ba3d9b13031500b5a75939ff4162b7cb13a
update-ref refs/heads/no-conflict-branch
Rebasing (2/9)
Stopped at c49b6574f4e9 (J)
error: update_ref failed for ref 'refs/heads/second': cannot lock ref 'refs/heads/second': is at 34033109e5a0def540b16172943d8a7e2a8a712e but expected e31be72ab52d740527956c171d40a832b63e68ca
ok 127 - --update-refs: check failed ref update
expecting success of 3404.128 'bad labels and refs rejected when parsing todo list':
test_when_finished "test_might_fail git rebase --abort" &&
cat >todo <<-\EOF &&
exec >execed
label #
label :invalid
update-ref :bad
update-ref topic
EOF
rm -f execed &&
(
set_replace_editor todo &&
test_must_fail git rebase -i HEAD 2>err
) &&
grep "'#' is not a valid label" err &&
grep "':invalid' is not a valid label" err &&
grep "':bad' is not a valid refname" err &&
grep "update-ref requires a fully qualified refname e.g. refs/heads/topic" \
err &&
test_path_is_missing execed
rebase -i script after editing:
exec >execed
label #
label :invalid
update-ref :bad
update-ref topic
error: '#' is not a valid label
error: ':invalid' is not a valid label
error: ':bad' is not a valid refname
error: update-ref requires a fully qualified refname e.g. refs/heads/topic
ok 128 - bad labels and refs rejected when parsing todo list
expecting success of 3404.129 '$EDITOR and friends are unchanged':
test_editor_unchanged
ok 129 - $EDITOR and friends are unchanged
# passed all 129 test(s)
1..129
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3423-rebase-reword.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3423-rebase-reword/.git/
expecting success of 3423.1 'setup':
test_commit main file-1 test &&
git checkout -b stuff &&
test_commit feature_a file-2 aaa &&
test_commit feature_b file-2 ddd
[master (root-commit) 2fc88f2] main
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file-1
Switched to a new branch 'stuff'
[stuff bfc518c] feature_a
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file-2
[stuff 6975fa1] feature_b
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 1 - setup
expecting success of 3423.2 'reword without issues functions as intended':
test_when_finished "reset_rebase" &&
git checkout stuff^0 &&
set_fake_editor &&
FAKE_LINES="pick 1 reword 2" FAKE_COMMIT_MESSAGE="feature_b_reworded" \
git rebase -i -v main &&
test "$(git log -1 --format=%B)" = "feature_b_reworded" &&
test $(git rev-list --count HEAD) = 3
Note: switching to 'stuff^0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 6975fa1 feature_b
Changes from 2fc88f2741a214c6daa29c1ac97d0376c9cd858d to 2fc88f2741a214c6daa29c1ac97d0376c9cd858d:
rebase -i script before editing:
pick bfc518c feature_a
pick 6975fa1 feature_b
rebase -i script after editing:
pick bfc518c feature_a
reword 6975fa1 feature_b
Rebasing (2/2)
[detached HEAD 7179cda] feature_b_reworded
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
Successfully rebased and updated detached HEAD.
fatal: No rebase in progress?
HEAD is now at 7179cda feature_b_reworded
Removing fake-editor.sh
ok 2 - reword without issues functions as intended
expecting success of 3423.3 'reword after a conflict preserves commit':
test_when_finished "reset_rebase" &&
git checkout stuff^0 &&
set_fake_editor &&
test_must_fail env FAKE_LINES="reword 2" \
git rebase -i -v main &&
git checkout --theirs file-2 &&
git add file-2 &&
FAKE_COMMIT_MESSAGE="feature_b_reworded" git rebase --continue &&
test "$(git log -1 --format=%B)" = "feature_b_reworded" &&
test $(git rev-list --count HEAD) = 2
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
7179cda feature_b_reworded
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 7179cda
HEAD is now at 6975fa1 feature_b
Changes from 2fc88f2741a214c6daa29c1ac97d0376c9cd858d to 2fc88f2741a214c6daa29c1ac97d0376c9cd858d:
rebase -i script before editing:
pick bfc518c feature_a
pick 6975fa1 feature_b
rebase -i script after editing:
reword 6975fa1 feature_b
Rebasing (1/1)
CONFLICT (modify/delete): file-2 deleted in HEAD and modified in 6975fa1 (feature_b). Version 6975fa1 (feature_b) of file-2 left in tree.
error: could not apply 6975fa1... feature_b
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 6975fa1... feature_b
Updated 1 path from the index
[detached HEAD 2e9e381] feature_b_reworded
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file-2
Successfully rebased and updated detached HEAD.
fatal: No rebase in progress?
HEAD is now at 2e9e381 feature_b_reworded
Removing fake-editor.sh
ok 3 - reword after a conflict preserves commit
# passed all 3 test(s)
1..3
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3422-rebase-incompatible-options.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3422-rebase-incompatible-options/.git/
expecting success of 3422.1 'setup':
test_seq 2 9 >foo &&
git add foo &&
git commit -m orig &&
git branch A &&
git branch B &&
git checkout A &&
test_seq 1 9 >foo &&
git add foo &&
git commit -m A &&
git checkout B &&
echo "q qfoo();" | q_to_tab >>foo &&
git add foo &&
git commit -m B
[master (root-commit) 3639f03] orig
Author: A U Thor <author@example.com>
1 file changed, 8 insertions(+)
create mode 100644 foo
Switched to branch 'A'
[A ef5b704] A
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
Switched to branch 'B'
[B 079b709] B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
ok 1 - setup
expecting success of 3422.2 '--whitespace=fix incompatible with --merge':
git checkout B^0 &&
test_must_fail git rebase --whitespace=fix --merge A
Note: switching to 'B^0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 079b709 B
fatal: apply options and merge options cannot be used together
ok 2 - --whitespace=fix incompatible with --merge
expecting success of 3422.3 '--whitespace=fix incompatible with --strategy=ours':
git checkout B^0 &&
test_must_fail git rebase --whitespace=fix --strategy=ours A
HEAD is now at 079b709 B
fatal: apply options and merge options cannot be used together
ok 3 - --whitespace=fix incompatible with --strategy=ours
expecting success of 3422.4 '--whitespace=fix incompatible with --strategy-option=ours':
git checkout B^0 &&
test_must_fail git rebase --whitespace=fix --strategy-option=ours A
HEAD is now at 079b709 B
fatal: apply options and merge options cannot be used together
ok 4 - --whitespace=fix incompatible with --strategy-option=ours
expecting success of 3422.5 '--whitespace=fix incompatible with --autosquash':
git checkout B^0 &&
test_must_fail git rebase --whitespace=fix --autosquash A
HEAD is now at 079b709 B
fatal: --autosquash requires the merge backend
ok 5 - --whitespace=fix incompatible with --autosquash
expecting success of 3422.6 '--whitespace=fix incompatible with --interactive':
git checkout B^0 &&
test_must_fail git rebase --whitespace=fix --interactive A
HEAD is now at 079b709 B
fatal: apply options and merge options cannot be used together
ok 6 - --whitespace=fix incompatible with --interactive
expecting success of 3422.7 '--whitespace=fix incompatible with --exec':
git checkout B^0 &&
test_must_fail git rebase --whitespace=fix --exec 'true' A
HEAD is now at 079b709 B
fatal: apply options and merge options cannot be used together
ok 7 - --whitespace=fix incompatible with --exec
expecting success of 3422.8 '--whitespace=fix incompatible with --keep-empty':
git checkout B^0 &&
test_must_fail git rebase --whitespace=fix --keep-empty A
HEAD is now at 079b709 B
fatal: apply options and merge options cannot be used together
ok 8 - --whitespace=fix incompatible with --keep-empty
expecting success of 3422.9 '--whitespace=fix incompatible with --empty=...':
git checkout B^0 &&
test_must_fail git rebase --whitespace=fix --empty=ask A
HEAD is now at 079b709 B
fatal: apply options and merge options cannot be used together
ok 9 - --whitespace=fix incompatible with --empty=...
expecting success of 3422.10 '--whitespace=fix incompatible with --no-reapply-cherry-picks':
git checkout B^0 &&
test_must_fail git rebase --whitespace=fix --no-reapply-cherry-picks A
HEAD is now at 079b709 B
fatal: apply options and merge options cannot be used together
ok 10 - --whitespace=fix incompatible with --no-reapply-cherry-picks
expecting success of 3422.11 '--whitespace=fix incompatible with --reapply-cherry-picks':
git checkout B^0 &&
test_must_fail git rebase --whitespace=fix --reapply-cherry-picks A
HEAD is now at 079b709 B
fatal: apply options and merge options cannot be used together
ok 11 - --whitespace=fix incompatible with --reapply-cherry-picks
expecting success of 3422.12 '--whitespace=fix incompatible with --rebase-merges':
git checkout B^0 &&
test_must_fail git rebase --whitespace=fix --rebase-merges A
HEAD is now at 079b709 B
fatal: --rebase-merges requires the merge backend
ok 12 - --whitespace=fix incompatible with --rebase-merges
expecting success of 3422.13 '--whitespace=fix incompatible with --update-refs':
git checkout B^0 &&
test_must_fail git rebase --whitespace=fix --update-refs A
HEAD is now at 079b709 B
fatal: --update-refs requires the merge backend
ok 13 - --whitespace=fix incompatible with --update-refs
expecting success of 3422.14 '--whitespace=fix incompatible with --root without --onto':
git checkout B^0 &&
test_must_fail git rebase --whitespace=fix --root A
HEAD is now at 079b709 B
fatal: apply options and merge options cannot be used together
ok 14 - --whitespace=fix incompatible with --root without --onto
expecting success of 3422.15 '--whitespace=fix incompatible with rebase.autosquash':
git checkout B^0 &&
test_must_fail git -c rebase.autosquash=true rebase --whitespace=fix A 2>err &&
grep -e --no-autosquash err
HEAD is now at 079b709 B
fatal: apply options are incompatible with rebase.autoSquash. Consider adding --no-autosquash
ok 15 - --whitespace=fix incompatible with rebase.autosquash
expecting success of 3422.16 '--whitespace=fix incompatible with rebase.rebaseMerges':
git checkout B^0 &&
test_must_fail git -c rebase.rebaseMerges=true rebase --whitespace=fix A 2>err &&
grep -e --no-rebase-merges err
HEAD is now at 079b709 B
fatal: apply options are incompatible with rebase.rebaseMerges. Consider adding --no-rebase-merges
ok 16 - --whitespace=fix incompatible with rebase.rebaseMerges
expecting success of 3422.17 '--whitespace=fix incompatible with rebase.updateRefs':
git checkout B^0 &&
test_must_fail git -c rebase.updateRefs=true rebase --whitespace=fix A 2>err &&
grep -e --no-update-refs err
HEAD is now at 079b709 B
fatal: apply options are incompatible with rebase.updateRefs. Consider adding --no-update-refs
ok 17 - --whitespace=fix incompatible with rebase.updateRefs
expecting success of 3422.18 '--whitespace=fix okay with overridden rebase.autosquash':
test_when_finished "git reset --hard B^0" &&
git checkout B^0 &&
git -c rebase.autosquash=true rebase --no-autosquash --whitespace=fix A
HEAD is now at 079b709 B
First, rewinding head to replay your work on top of it...
Applying: B
HEAD is now at 079b709 B
ok 18 - --whitespace=fix okay with overridden rebase.autosquash
expecting success of 3422.19 '--whitespace=fix okay with overridden rebase.rebaseMerges':
test_when_finished "git reset --hard B^0" &&
git checkout B^0 &&
git -c rebase.rebaseMerges=true rebase --no-rebase-merges --whitespace=fix A
HEAD is now at 079b709 B
First, rewinding head to replay your work on top of it...
Applying: B
HEAD is now at 079b709 B
ok 19 - --whitespace=fix okay with overridden rebase.rebaseMerges
expecting success of 3422.20 '--whitespace=fix okay with overridden rebase.updateRefs':
test_when_finished "git reset --hard B^0" &&
git checkout B^0 &&
git -c rebase.updateRefs=true rebase --no-update-refs --whitespace=fix A
HEAD is now at 079b709 B
First, rewinding head to replay your work on top of it...
Applying: B
HEAD is now at 079b709 B
ok 20 - --whitespace=fix okay with overridden rebase.updateRefs
expecting success of 3422.21 '-C4 incompatible with --merge':
git checkout B^0 &&
test_must_fail git rebase -C4 --merge A
HEAD is now at 079b709 B
fatal: apply options and merge options cannot be used together
ok 21 - -C4 incompatible with --merge
expecting success of 3422.22 '-C4 incompatible with --strategy=ours':
git checkout B^0 &&
test_must_fail git rebase -C4 --strategy=ours A
HEAD is now at 079b709 B
fatal: apply options and merge options cannot be used together
ok 22 - -C4 incompatible with --strategy=ours
expecting success of 3422.23 '-C4 incompatible with --strategy-option=ours':
git checkout B^0 &&
test_must_fail git rebase -C4 --strategy-option=ours A
HEAD is now at 079b709 B
fatal: apply options and merge options cannot be used together
ok 23 - -C4 incompatible with --strategy-option=ours
expecting success of 3422.24 '-C4 incompatible with --autosquash':
git checkout B^0 &&
test_must_fail git rebase -C4 --autosquash A
HEAD is now at 079b709 B
fatal: --autosquash requires the merge backend
ok 24 - -C4 incompatible with --autosquash
expecting success of 3422.25 '-C4 incompatible with --interactive':
git checkout B^0 &&
test_must_fail git rebase -C4 --interactive A
HEAD is now at 079b709 B
fatal: apply options and merge options cannot be used together
ok 25 - -C4 incompatible with --interactive
expecting success of 3422.26 '-C4 incompatible with --exec':
git checkout B^0 &&
test_must_fail git rebase -C4 --exec 'true' A
HEAD is now at 079b709 B
fatal: apply options and merge options cannot be used together
ok 26 - -C4 incompatible with --exec
expecting success of 3422.27 '-C4 incompatible with --keep-empty':
git checkout B^0 &&
test_must_fail git rebase -C4 --keep-empty A
HEAD is now at 079b709 B
fatal: apply options and merge options cannot be used together
ok 27 - -C4 incompatible with --keep-empty
expecting success of 3422.28 '-C4 incompatible with --empty=...':
git checkout B^0 &&
test_must_fail git rebase -C4 --empty=ask A
HEAD is now at 079b709 B
fatal: apply options and merge options cannot be used together
ok 28 - -C4 incompatible with --empty=...
expecting success of 3422.29 '-C4 incompatible with --no-reapply-cherry-picks':
git checkout B^0 &&
test_must_fail git rebase -C4 --no-reapply-cherry-picks A
HEAD is now at 079b709 B
fatal: apply options and merge options cannot be used together
ok 29 - -C4 incompatible with --no-reapply-cherry-picks
expecting success of 3422.30 '-C4 incompatible with --reapply-cherry-picks':
git checkout B^0 &&
test_must_fail git rebase -C4 --reapply-cherry-picks A
HEAD is now at 079b709 B
fatal: apply options and merge options cannot be used together
ok 30 - -C4 incompatible with --reapply-cherry-picks
expecting success of 3422.31 '-C4 incompatible with --rebase-merges':
git checkout B^0 &&
test_must_fail git rebase -C4 --rebase-merges A
HEAD is now at 079b709 B
fatal: --rebase-merges requires the merge backend
ok 31 - -C4 incompatible with --rebase-merges
expecting success of 3422.32 '-C4 incompatible with --update-refs':
git checkout B^0 &&
test_must_fail git rebase -C4 --update-refs A
HEAD is now at 079b709 B
fatal: --update-refs requires the merge backend
ok 32 - -C4 incompatible with --update-refs
expecting success of 3422.33 '-C4 incompatible with --root without --onto':
git checkout B^0 &&
test_must_fail git rebase -C4 --root A
HEAD is now at 079b709 B
fatal: apply options and merge options cannot be used together
ok 33 - -C4 incompatible with --root without --onto
expecting success of 3422.34 '-C4 incompatible with rebase.autosquash':
git checkout B^0 &&
test_must_fail git -c rebase.autosquash=true rebase -C4 A 2>err &&
grep -e --no-autosquash err
HEAD is now at 079b709 B
fatal: apply options are incompatible with rebase.autoSquash. Consider adding --no-autosquash
ok 34 - -C4 incompatible with rebase.autosquash
expecting success of 3422.35 '-C4 incompatible with rebase.rebaseMerges':
git checkout B^0 &&
test_must_fail git -c rebase.rebaseMerges=true rebase -C4 A 2>err &&
grep -e --no-rebase-merges err
HEAD is now at 079b709 B
fatal: apply options are incompatible with rebase.rebaseMerges. Consider adding --no-rebase-merges
ok 35 - -C4 incompatible with rebase.rebaseMerges
expecting success of 3422.36 '-C4 incompatible with rebase.updateRefs':
git checkout B^0 &&
test_must_fail git -c rebase.updateRefs=true rebase -C4 A 2>err &&
grep -e --no-update-refs err
HEAD is now at 079b709 B
fatal: apply options are incompatible with rebase.updateRefs. Consider adding --no-update-refs
ok 36 - -C4 incompatible with rebase.updateRefs
expecting success of 3422.37 '-C4 okay with overridden rebase.autosquash':
test_when_finished "git reset --hard B^0" &&
git checkout B^0 &&
git -c rebase.autosquash=true rebase --no-autosquash -C4 A
HEAD is now at 079b709 B
First, rewinding head to replay your work on top of it...
Applying: B
HEAD is now at 079b709 B
ok 37 - -C4 okay with overridden rebase.autosquash
expecting success of 3422.38 '-C4 okay with overridden rebase.rebaseMerges':
test_when_finished "git reset --hard B^0" &&
git checkout B^0 &&
git -c rebase.rebaseMerges=true rebase --no-rebase-merges -C4 A
HEAD is now at 079b709 B
First, rewinding head to replay your work on top of it...
Applying: B
HEAD is now at 079b709 B
ok 38 - -C4 okay with overridden rebase.rebaseMerges
expecting success of 3422.39 '-C4 okay with overridden rebase.updateRefs':
test_when_finished "git reset --hard B^0" &&
git checkout B^0 &&
git -c rebase.updateRefs=true rebase --no-update-refs -C4 A
HEAD is now at 079b709 B
First, rewinding head to replay your work on top of it...
Applying: B
HEAD is now at 079b709 B
ok 39 - -C4 okay with overridden rebase.updateRefs
expecting success of 3422.40 '--apply incompatible with --merge':
git checkout B^0 &&
test_must_fail git rebase --apply --merge A
HEAD is now at 079b709 B
fatal: apply options and merge options cannot be used together
ok 40 - --apply incompatible with --merge
expecting success of 3422.41 '--apply incompatible with --strategy=ours':
git checkout B^0 &&
test_must_fail git rebase --apply --strategy=ours A
HEAD is now at 079b709 B
fatal: --strategy requires --merge or --interactive
ok 41 - --apply incompatible with --strategy=ours
expecting success of 3422.42 '--apply incompatible with --strategy-option=ours':
git checkout B^0 &&
test_must_fail git rebase --apply --strategy-option=ours A
HEAD is now at 079b709 B
fatal: --strategy requires --merge or --interactive
ok 42 - --apply incompatible with --strategy-option=ours
expecting success of 3422.43 '--apply incompatible with --autosquash':
git checkout B^0 &&
test_must_fail git rebase --apply --autosquash A
HEAD is now at 079b709 B
fatal: --autosquash requires the merge backend
ok 43 - --apply incompatible with --autosquash
expecting success of 3422.44 '--apply incompatible with --interactive':
git checkout B^0 &&
test_must_fail git rebase --apply --interactive A
HEAD is now at 079b709 B
fatal: apply options and merge options cannot be used together
ok 44 - --apply incompatible with --interactive
expecting success of 3422.45 '--apply incompatible with --exec':
git checkout B^0 &&
test_must_fail git rebase --apply --exec 'true' A
HEAD is now at 079b709 B
fatal: --exec requires the merge backend
ok 45 - --apply incompatible with --exec
expecting success of 3422.46 '--apply incompatible with --keep-empty':
git checkout B^0 &&
test_must_fail git rebase --apply --keep-empty A
HEAD is now at 079b709 B
fatal: --keep-empty requires the merge backend
ok 46 - --apply incompatible with --keep-empty
expecting success of 3422.47 '--apply incompatible with --empty=...':
git checkout B^0 &&
test_must_fail git rebase --apply --empty=ask A
HEAD is now at 079b709 B
fatal: --empty requires the merge backend
ok 47 - --apply incompatible with --empty=...
expecting success of 3422.48 '--apply incompatible with --no-reapply-cherry-picks':
git checkout B^0 &&
test_must_fail git rebase --apply --no-reapply-cherry-picks A
HEAD is now at 079b709 B
fatal: --no-reapply-cherry-picks requires the merge backend
ok 48 - --apply incompatible with --no-reapply-cherry-picks
expecting success of 3422.49 '--apply incompatible with --reapply-cherry-picks':
git checkout B^0 &&
test_must_fail git rebase --apply --reapply-cherry-picks A
HEAD is now at 079b709 B
fatal: --reapply-cherry-picks requires the merge backend
ok 49 - --apply incompatible with --reapply-cherry-picks
expecting success of 3422.50 '--apply incompatible with --rebase-merges':
git checkout B^0 &&
test_must_fail git rebase --apply --rebase-merges A
HEAD is now at 079b709 B
fatal: --rebase-merges requires the merge backend
ok 50 - --apply incompatible with --rebase-merges
expecting success of 3422.51 '--apply incompatible with --update-refs':
git checkout B^0 &&
test_must_fail git rebase --apply --update-refs A
HEAD is now at 079b709 B
fatal: --update-refs requires the merge backend
ok 51 - --apply incompatible with --update-refs
expecting success of 3422.52 '--apply incompatible with --root without --onto':
git checkout B^0 &&
test_must_fail git rebase --apply --root A
HEAD is now at 079b709 B
fatal: --root without --onto requires the merge backend
ok 52 - --apply incompatible with --root without --onto
expecting success of 3422.53 '--apply incompatible with rebase.autosquash':
git checkout B^0 &&
test_must_fail git -c rebase.autosquash=true rebase --apply A 2>err &&
grep -e --no-autosquash err
HEAD is now at 079b709 B
fatal: apply options are incompatible with rebase.autoSquash. Consider adding --no-autosquash
ok 53 - --apply incompatible with rebase.autosquash
expecting success of 3422.54 '--apply incompatible with rebase.rebaseMerges':
git checkout B^0 &&
test_must_fail git -c rebase.rebaseMerges=true rebase --apply A 2>err &&
grep -e --no-rebase-merges err
HEAD is now at 079b709 B
fatal: apply options are incompatible with rebase.rebaseMerges. Consider adding --no-rebase-merges
ok 54 - --apply incompatible with rebase.rebaseMerges
expecting success of 3422.55 '--apply incompatible with rebase.updateRefs':
git checkout B^0 &&
test_must_fail git -c rebase.updateRefs=true rebase --apply A 2>err &&
grep -e --no-update-refs err
HEAD is now at 079b709 B
fatal: apply options are incompatible with rebase.updateRefs. Consider adding --no-update-refs
ok 55 - --apply incompatible with rebase.updateRefs
expecting success of 3422.56 '--apply okay with overridden rebase.autosquash':
test_when_finished "git reset --hard B^0" &&
git checkout B^0 &&
git -c rebase.autosquash=true rebase --no-autosquash --apply A
HEAD is now at 079b709 B
First, rewinding head to replay your work on top of it...
Applying: B
HEAD is now at 079b709 B
ok 56 - --apply okay with overridden rebase.autosquash
expecting success of 3422.57 '--apply okay with overridden rebase.rebaseMerges':
test_when_finished "git reset --hard B^0" &&
git checkout B^0 &&
git -c rebase.rebaseMerges=true rebase --no-rebase-merges --apply A
HEAD is now at 079b709 B
First, rewinding head to replay your work on top of it...
Applying: B
HEAD is now at 079b709 B
ok 57 - --apply okay with overridden rebase.rebaseMerges
expecting success of 3422.58 '--apply okay with overridden rebase.updateRefs':
test_when_finished "git reset --hard B^0" &&
git checkout B^0 &&
git -c rebase.updateRefs=true rebase --no-update-refs --apply A
HEAD is now at 079b709 B
First, rewinding head to replay your work on top of it...
Applying: B
HEAD is now at 079b709 B
ok 58 - --apply okay with overridden rebase.updateRefs
# passed all 58 test(s)
1..58
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3420-rebase-autostash.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3420-rebase-autostash/.git/
expecting success of 3420.1 'setup':
echo hello-world >file0 &&
git add . &&
test_tick &&
git commit -m "initial commit" &&
git checkout -b feature-branch &&
echo another-hello >file1 &&
echo goodbye >file2 &&
git add . &&
test_tick &&
git commit -m "second commit" &&
echo final-goodbye >file3 &&
git add . &&
test_tick &&
git commit -m "third commit" &&
git checkout -b unrelated-onto-branch main &&
echo unrelated >file4 &&
git add . &&
test_tick &&
git commit -m "unrelated commit" &&
git checkout -b related-onto-branch main &&
echo conflicting-change >file2 &&
git add . &&
test_tick &&
git commit -m "related commit" &&
remove_progress_re="$(printf "s/.*\\r//")"
[main (root-commit) bfa4f02] initial commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file0
Switched to a new branch 'feature-branch'
[feature-branch 6fe95e2] second commit
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 file1
create mode 100644 file2
[feature-branch 0c4d2f1] third commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file3
Switched to a new branch 'unrelated-onto-branch'
[unrelated-onto-branch 4aede2f] unrelated commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file4
Switched to a new branch 'related-onto-branch'
[related-onto-branch c57d250] related commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file2
ok 1 - setup
expecting success of 3420.2 'rebase: fast-forward rebase':
test_config rebase.autostash true &&
git reset --hard &&
git checkout -b behind-feature-branch feature-branch~1 &&
test_when_finished git branch -D behind-feature-branch &&
echo dirty >>file1 &&
git rebase feature-branch &&
grep dirty file1 &&
git checkout feature-branch
HEAD is now at c57d250 related commit
Switched to a new branch 'behind-feature-branch'
Created autostash: b346341
Applied autostash.
Successfully rebased and updated refs/heads/behind-feature-branch.
dirty
Switched to branch 'feature-branch'
M file1
Deleted branch behind-feature-branch (was 0c4d2f1).
ok 2 - rebase: fast-forward rebase
expecting success of 3420.3 'rebase: noop rebase':
test_config rebase.autostash true &&
git reset --hard &&
git checkout -b same-feature-branch feature-branch &&
test_when_finished git branch -D same-feature-branch &&
echo dirty >>file1 &&
git rebase feature-branch &&
grep dirty file1 &&
git checkout feature-branch
HEAD is now at 0c4d2f1 third commit
Switched to a new branch 'same-feature-branch'
Created autostash: 925afbd
Current branch same-feature-branch is up to date.
Applied autostash.
dirty
Switched to branch 'feature-branch'
M file1
Deleted branch same-feature-branch (was 0c4d2f1).
ok 3 - rebase: noop rebase
expecting success of 3420.4 'rebase --apply: dirty worktree, --no-autostash':
test_config rebase.autostash true &&
git reset --hard &&
git checkout -b rebased-feature-branch feature-branch &&
test_when_finished git branch -D rebased-feature-branch &&
test_when_finished git checkout feature-branch &&
echo dirty >>file3 &&
test_must_fail git rebase$type --no-autostash unrelated-onto-branch
HEAD is now at 0c4d2f1 third commit
Switched to a new branch 'rebased-feature-branch'
error: cannot rebase: You have unstaged changes.
error: Please commit or stash them.
Switched to branch 'feature-branch'
M file3
Deleted branch rebased-feature-branch (was 0c4d2f1).
ok 4 - rebase --apply: dirty worktree, --no-autostash
expecting success of 3420.5 'rebase --apply: dirty worktree, non-conflicting rebase':
test_config rebase.autostash true &&
git reset --hard &&
git checkout -b rebased-feature-branch feature-branch &&
echo dirty >>file3 &&
git rebase$type unrelated-onto-branch >actual 2>&1 &&
grep unrelated file4 &&
grep dirty file3 &&
git checkout feature-branch
HEAD is now at 0c4d2f1 third commit
Switched to a new branch 'rebased-feature-branch'
unrelated
dirty
Switched to branch 'feature-branch'
M file3
ok 5 - rebase --apply: dirty worktree, non-conflicting rebase
expecting success of 3420.6 'rebase --apply --autostash: check output':
test_when_finished git branch -D rebased-feature-branch &&
suffix=${type#\ --} && suffix=${suffix:-apply} &&
if test ${suffix} = "interactive"; then
suffix=merge
fi &&
create_expected_success_$suffix &&
sed "$remove_progress_re" <actual >actual2 &&
test_cmp expected actual2
Deleted branch rebased-feature-branch (was b607b14).
ok 6 - rebase --apply --autostash: check output
expecting success of 3420.7 'rebase --apply: dirty index, non-conflicting rebase':
test_config rebase.autostash true &&
git reset --hard &&
git checkout -b rebased-feature-branch feature-branch &&
test_when_finished git branch -D rebased-feature-branch &&
echo dirty >>file3 &&
git add file3 &&
git rebase$type unrelated-onto-branch &&
grep unrelated file4 &&
grep dirty file3 &&
git checkout feature-branch
HEAD is now at 0c4d2f1 third commit
Switched to a new branch 'rebased-feature-branch'
Created autostash: 7305f55
First, rewinding head to replay your work on top of it...
Applying: second commit
Applying: third commit
Applied autostash.
unrelated
dirty
Switched to branch 'feature-branch'
M file3
Deleted branch rebased-feature-branch (was b607b14).
ok 7 - rebase --apply: dirty index, non-conflicting rebase
expecting success of 3420.8 'rebase --apply: conflicting rebase':
test_config rebase.autostash true &&
git reset --hard &&
git checkout -b rebased-feature-branch feature-branch &&
test_when_finished git branch -D rebased-feature-branch &&
echo dirty >>file3 &&
test_must_fail git rebase$type related-onto-branch &&
test_path_is_file $dotest/autostash &&
test_path_is_missing file3 &&
rm -rf $dotest &&
git reset --hard &&
git checkout feature-branch
HEAD is now at 0c4d2f1 third commit
Switched to a new branch 'rebased-feature-branch'
Created autostash: ce96636
First, rewinding head to replay your work on top of it...
Applying: second commit
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Merging:
c57d250 related commit
virtual second commit
found 1 common ancestor:
virtual 4b825dc642cb6eb9a060e54bf8d69288fbee4904
CONFLICT (add/add): Merge conflict in file2
Auto-merging file2
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 second commit
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
HEAD is now at c57d250 related commit
Previous HEAD position was c57d250 related commit
Switched to branch 'feature-branch'
Deleted branch rebased-feature-branch (was 0c4d2f1).
ok 8 - rebase --apply: conflicting rebase
expecting success of 3420.9 'rebase --apply: --continue':
test_config rebase.autostash true &&
git reset --hard &&
git checkout -b rebased-feature-branch feature-branch &&
test_when_finished git branch -D rebased-feature-branch &&
echo dirty >>file3 &&
test_must_fail git rebase$type related-onto-branch &&
test_path_is_file $dotest/autostash &&
test_path_is_missing file3 &&
echo "conflicting-plus-goodbye" >file2 &&
git add file2 &&
git rebase --continue &&
test_path_is_missing $dotest/autostash &&
grep dirty file3 &&
git checkout feature-branch
HEAD is now at 0c4d2f1 third commit
Switched to a new branch 'rebased-feature-branch'
Created autostash: ce96636
First, rewinding head to replay your work on top of it...
Applying: second commit
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Merging:
c57d250 related commit
virtual second commit
found 1 common ancestor:
virtual 4b825dc642cb6eb9a060e54bf8d69288fbee4904
CONFLICT (add/add): Merge conflict in file2
Auto-merging file2
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 second commit
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
Applying: second commit
Applying: third commit
Applied autostash.
dirty
Switched to branch 'feature-branch'
M file3
Deleted branch rebased-feature-branch (was 51f2c81).
ok 9 - rebase --apply: --continue
expecting success of 3420.10 'rebase --apply: --skip':
test_config rebase.autostash true &&
git reset --hard &&
git checkout -b rebased-feature-branch feature-branch &&
test_when_finished git branch -D rebased-feature-branch &&
echo dirty >>file3 &&
test_must_fail git rebase$type related-onto-branch &&
test_path_is_file $dotest/autostash &&
test_path_is_missing file3 &&
git rebase --skip &&
test_path_is_missing $dotest/autostash &&
grep dirty file3 &&
git checkout feature-branch
HEAD is now at 0c4d2f1 third commit
Switched to a new branch 'rebased-feature-branch'
Created autostash: ce96636
First, rewinding head to replay your work on top of it...
Applying: second commit
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Merging:
c57d250 related commit
virtual second commit
found 1 common ancestor:
virtual 4b825dc642cb6eb9a060e54bf8d69288fbee4904
CONFLICT (add/add): Merge conflict in file2
Auto-merging file2
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 second commit
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
Applying: third commit
Applied autostash.
dirty
Switched to branch 'feature-branch'
M file3
Deleted branch rebased-feature-branch (was fa02356).
ok 10 - rebase --apply: --skip
expecting success of 3420.11 'rebase --apply: --abort':
test_config rebase.autostash true &&
git reset --hard &&
git checkout -b rebased-feature-branch feature-branch &&
test_when_finished git branch -D rebased-feature-branch &&
echo dirty >>file3 &&
test_must_fail git rebase$type related-onto-branch &&
test_path_is_file $dotest/autostash &&
test_path_is_missing file3 &&
git rebase --abort &&
test_path_is_missing $dotest/autostash &&
grep dirty file3 &&
git checkout feature-branch
HEAD is now at 0c4d2f1 third commit
Switched to a new branch 'rebased-feature-branch'
Created autostash: ce96636
First, rewinding head to replay your work on top of it...
Applying: second commit
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Merging:
c57d250 related commit
virtual second commit
found 1 common ancestor:
virtual 4b825dc642cb6eb9a060e54bf8d69288fbee4904
CONFLICT (add/add): Merge conflict in file2
Auto-merging file2
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 second commit
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
Applied autostash.
dirty
Switched to branch 'feature-branch'
M file3
Deleted branch rebased-feature-branch (was 0c4d2f1).
ok 11 - rebase --apply: --abort
expecting success of 3420.12 'rebase --apply: --quit':
test_config rebase.autostash true &&
git reset --hard &&
git checkout -b rebased-feature-branch feature-branch &&
test_when_finished git branch -D rebased-feature-branch &&
echo dirty >>file3 &&
git diff >expect &&
test_must_fail git rebase$type related-onto-branch &&
test_path_is_file $dotest/autostash &&
test_path_is_missing file3 &&
git rebase --quit &&
test_when_finished git stash drop &&
test_path_is_missing $dotest/autostash &&
! grep dirty file3 &&
git stash show -p >actual &&
test_cmp expect actual &&
git reset --hard &&
git checkout feature-branch
HEAD is now at 0c4d2f1 third commit
Switched to a new branch 'rebased-feature-branch'
Created autostash: ce96636
First, rewinding head to replay your work on top of it...
Applying: second commit
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Merging:
c57d250 related commit
virtual second commit
found 1 common ancestor:
virtual 4b825dc642cb6eb9a060e54bf8d69288fbee4904
CONFLICT (add/add): Merge conflict in file2
Auto-merging file2
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 second commit
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
Autostash exists; creating a new stash entry.
Your changes are safe in the stash.
You can run "git stash pop" or "git stash drop" at any time.
grep: file3: No such file or directory
HEAD is now at c57d250 related commit
Previous HEAD position was c57d250 related commit
Switched to branch 'feature-branch'
Dropped refs/stash@{0} (ce96636712fc38300c1f0f777cc2fac6dee041c0)
Deleted branch rebased-feature-branch (was 0c4d2f1).
ok 12 - rebase --apply: --quit
expecting success of 3420.13 'rebase --apply: non-conflicting rebase, conflicting stash':
test_config rebase.autostash true &&
git reset --hard &&
git checkout -b rebased-feature-branch feature-branch &&
echo dirty >file4 &&
git add file4 &&
git rebase$type unrelated-onto-branch >actual 2>&1 &&
test_path_is_missing $dotest &&
git reset --hard &&
grep unrelated file4 &&
! grep dirty file4 &&
git checkout feature-branch &&
git stash pop &&
grep dirty file4
HEAD is now at 0c4d2f1 third commit
Switched to a new branch 'rebased-feature-branch'
HEAD is now at b607b14 third commit
unrelated
Switched to branch 'feature-branch'
Merging Version stash was based on with Stashed changes
On branch feature-branch
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: file4
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
actual2
expect
expected
Dropped refs/stash@{0} (1b6501f85530697b9c800b37ca0a8c6ef37e954c)
dirty
ok 13 - rebase --apply: non-conflicting rebase, conflicting stash
expecting success of 3420.14 'rebase --apply: check output with conflicting stash':
test_when_finished git branch -D rebased-feature-branch &&
suffix=${type#\ --} && suffix=${suffix:-apply} &&
if test ${suffix} = "interactive"; then
suffix=merge
fi &&
create_expected_failure_$suffix &&
sed "$remove_progress_re" <actual >actual2 &&
test_cmp expected actual2
Deleted branch rebased-feature-branch (was b607b14).
ok 14 - rebase --apply: check output with conflicting stash
expecting success of 3420.15 'rebase --merge: dirty worktree, --no-autostash':
test_config rebase.autostash true &&
git reset --hard &&
git checkout -b rebased-feature-branch feature-branch &&
test_when_finished git branch -D rebased-feature-branch &&
test_when_finished git checkout feature-branch &&
echo dirty >>file3 &&
test_must_fail git rebase$type --no-autostash unrelated-onto-branch
HEAD is now at 0c4d2f1 third commit
Switched to a new branch 'rebased-feature-branch'
error: cannot rebase: You have unstaged changes.
error: Please commit or stash them.
Switched to branch 'feature-branch'
M file3
Deleted branch rebased-feature-branch (was 0c4d2f1).
ok 15 - rebase --merge: dirty worktree, --no-autostash
expecting success of 3420.16 'rebase --merge: dirty worktree, non-conflicting rebase':
test_config rebase.autostash true &&
git reset --hard &&
git checkout -b rebased-feature-branch feature-branch &&
echo dirty >>file3 &&
git rebase$type unrelated-onto-branch >actual 2>&1 &&
grep unrelated file4 &&
grep dirty file3 &&
git checkout feature-branch
HEAD is now at 0c4d2f1 third commit
Switched to a new branch 'rebased-feature-branch'
unrelated
dirty
Switched to branch 'feature-branch'
M file3
ok 16 - rebase --merge: dirty worktree, non-conflicting rebase
expecting success of 3420.17 'rebase --merge --autostash: check output':
test_when_finished git branch -D rebased-feature-branch &&
suffix=${type#\ --} && suffix=${suffix:-apply} &&
if test ${suffix} = "interactive"; then
suffix=merge
fi &&
create_expected_success_$suffix &&
sed "$remove_progress_re" <actual >actual2 &&
test_cmp expected actual2
Deleted branch rebased-feature-branch (was b607b14).
ok 17 - rebase --merge --autostash: check output
expecting success of 3420.18 'rebase --merge: dirty index, non-conflicting rebase':
test_config rebase.autostash true &&
git reset --hard &&
git checkout -b rebased-feature-branch feature-branch &&
test_when_finished git branch -D rebased-feature-branch &&
echo dirty >>file3 &&
git add file3 &&
git rebase$type unrelated-onto-branch &&
grep unrelated file4 &&
grep dirty file3 &&
git checkout feature-branch
HEAD is now at 0c4d2f1 third commit
Switched to a new branch 'rebased-feature-branch'
Created autostash: 7305f55
Rebasing (1/2)
Rebasing (2/2)
Applied autostash.
Successfully rebased and updated refs/heads/rebased-feature-branch.
unrelated
dirty
Switched to branch 'feature-branch'
M file3
Deleted branch rebased-feature-branch (was b607b14).
ok 18 - rebase --merge: dirty index, non-conflicting rebase
expecting success of 3420.19 'rebase --merge: conflicting rebase':
test_config rebase.autostash true &&
git reset --hard &&
git checkout -b rebased-feature-branch feature-branch &&
test_when_finished git branch -D rebased-feature-branch &&
echo dirty >>file3 &&
test_must_fail git rebase$type related-onto-branch &&
test_path_is_file $dotest/autostash &&
test_path_is_missing file3 &&
rm -rf $dotest &&
git reset --hard &&
git checkout feature-branch
HEAD is now at 0c4d2f1 third commit
Switched to a new branch 'rebased-feature-branch'
Created autostash: ce96636
Rebasing (1/2)
Auto-merging file2
CONFLICT (add/add): Merge conflict in file2
error: could not apply 6fe95e2... second commit
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 6fe95e2... second commit
HEAD is now at c57d250 related commit
Previous HEAD position was c57d250 related commit
Switched to branch 'feature-branch'
Deleted branch rebased-feature-branch (was 0c4d2f1).
ok 19 - rebase --merge: conflicting rebase
expecting success of 3420.20 'rebase --merge: --continue':
test_config rebase.autostash true &&
git reset --hard &&
git checkout -b rebased-feature-branch feature-branch &&
test_when_finished git branch -D rebased-feature-branch &&
echo dirty >>file3 &&
test_must_fail git rebase$type related-onto-branch &&
test_path_is_file $dotest/autostash &&
test_path_is_missing file3 &&
echo "conflicting-plus-goodbye" >file2 &&
git add file2 &&
git rebase --continue &&
test_path_is_missing $dotest/autostash &&
grep dirty file3 &&
git checkout feature-branch
HEAD is now at 0c4d2f1 third commit
Switched to a new branch 'rebased-feature-branch'
Created autostash: ce96636
Rebasing (1/2)
Auto-merging file2
CONFLICT (add/add): Merge conflict in file2
error: could not apply 6fe95e2... second commit
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 6fe95e2... second commit
[detached HEAD 62edf38] second commit
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+), 1 deletion(-)
create mode 100644 file1
Rebasing (2/2)
Applied autostash.
Successfully rebased and updated refs/heads/rebased-feature-branch.
dirty
Switched to branch 'feature-branch'
M file3
Deleted branch rebased-feature-branch (was 51f2c81).
ok 20 - rebase --merge: --continue
expecting success of 3420.21 'rebase --merge: --skip':
test_config rebase.autostash true &&
git reset --hard &&
git checkout -b rebased-feature-branch feature-branch &&
test_when_finished git branch -D rebased-feature-branch &&
echo dirty >>file3 &&
test_must_fail git rebase$type related-onto-branch &&
test_path_is_file $dotest/autostash &&
test_path_is_missing file3 &&
git rebase --skip &&
test_path_is_missing $dotest/autostash &&
grep dirty file3 &&
git checkout feature-branch
HEAD is now at 0c4d2f1 third commit
Switched to a new branch 'rebased-feature-branch'
Created autostash: ce96636
Rebasing (1/2)
Auto-merging file2
CONFLICT (add/add): Merge conflict in file2
error: could not apply 6fe95e2... second commit
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 6fe95e2... second commit
Rebasing (2/2)
Applied autostash.
Successfully rebased and updated refs/heads/rebased-feature-branch.
dirty
Switched to branch 'feature-branch'
M file3
Deleted branch rebased-feature-branch (was fa02356).
ok 21 - rebase --merge: --skip
expecting success of 3420.22 'rebase --merge: --abort':
test_config rebase.autostash true &&
git reset --hard &&
git checkout -b rebased-feature-branch feature-branch &&
test_when_finished git branch -D rebased-feature-branch &&
echo dirty >>file3 &&
test_must_fail git rebase$type related-onto-branch &&
test_path_is_file $dotest/autostash &&
test_path_is_missing file3 &&
git rebase --abort &&
test_path_is_missing $dotest/autostash &&
grep dirty file3 &&
git checkout feature-branch
HEAD is now at 0c4d2f1 third commit
Switched to a new branch 'rebased-feature-branch'
Created autostash: ce96636
Rebasing (1/2)
Auto-merging file2
CONFLICT (add/add): Merge conflict in file2
error: could not apply 6fe95e2... second commit
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 6fe95e2... second commit
Applied autostash.
dirty
Switched to branch 'feature-branch'
M file3
Deleted branch rebased-feature-branch (was 0c4d2f1).
ok 22 - rebase --merge: --abort
expecting success of 3420.23 'rebase --merge: --quit':
test_config rebase.autostash true &&
git reset --hard &&
git checkout -b rebased-feature-branch feature-branch &&
test_when_finished git branch -D rebased-feature-branch &&
echo dirty >>file3 &&
git diff >expect &&
test_must_fail git rebase$type related-onto-branch &&
test_path_is_file $dotest/autostash &&
test_path_is_missing file3 &&
git rebase --quit &&
test_when_finished git stash drop &&
test_path_is_missing $dotest/autostash &&
! grep dirty file3 &&
git stash show -p >actual &&
test_cmp expect actual &&
git reset --hard &&
git checkout feature-branch
HEAD is now at 0c4d2f1 third commit
Switched to a new branch 'rebased-feature-branch'
Created autostash: ce96636
Rebasing (1/2)
Auto-merging file2
CONFLICT (add/add): Merge conflict in file2
error: could not apply 6fe95e2... second commit
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 6fe95e2... second commit
Autostash exists; creating a new stash entry.
Your changes are safe in the stash.
You can run "git stash pop" or "git stash drop" at any time.
grep: file3: No such file or directory
HEAD is now at c57d250 related commit
Previous HEAD position was c57d250 related commit
Switched to branch 'feature-branch'
Dropped refs/stash@{0} (ce96636712fc38300c1f0f777cc2fac6dee041c0)
Deleted branch rebased-feature-branch (was 0c4d2f1).
ok 23 - rebase --merge: --quit
expecting success of 3420.24 'rebase --merge: non-conflicting rebase, conflicting stash':
test_config rebase.autostash true &&
git reset --hard &&
git checkout -b rebased-feature-branch feature-branch &&
echo dirty >file4 &&
git add file4 &&
git rebase$type unrelated-onto-branch >actual 2>&1 &&
test_path_is_missing $dotest &&
git reset --hard &&
grep unrelated file4 &&
! grep dirty file4 &&
git checkout feature-branch &&
git stash pop &&
grep dirty file4
HEAD is now at 0c4d2f1 third commit
Switched to a new branch 'rebased-feature-branch'
HEAD is now at b607b14 third commit
unrelated
Switched to branch 'feature-branch'
Merging Version stash was based on with Stashed changes
On branch feature-branch
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: file4
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
actual2
expect
expected
Dropped refs/stash@{0} (1b6501f85530697b9c800b37ca0a8c6ef37e954c)
dirty
ok 24 - rebase --merge: non-conflicting rebase, conflicting stash
expecting success of 3420.25 'rebase --merge: check output with conflicting stash':
test_when_finished git branch -D rebased-feature-branch &&
suffix=${type#\ --} && suffix=${suffix:-apply} &&
if test ${suffix} = "interactive"; then
suffix=merge
fi &&
create_expected_failure_$suffix &&
sed "$remove_progress_re" <actual >actual2 &&
test_cmp expected actual2
Deleted branch rebased-feature-branch (was b607b14).
ok 25 - rebase --merge: check output with conflicting stash
expecting success of 3420.26 'rebase --interactive: dirty worktree, --no-autostash':
test_config rebase.autostash true &&
git reset --hard &&
git checkout -b rebased-feature-branch feature-branch &&
test_when_finished git branch -D rebased-feature-branch &&
test_when_finished git checkout feature-branch &&
echo dirty >>file3 &&
test_must_fail git rebase$type --no-autostash unrelated-onto-branch
HEAD is now at 0c4d2f1 third commit
Switched to a new branch 'rebased-feature-branch'
error: cannot rebase: You have unstaged changes.
error: Please commit or stash them.
Switched to branch 'feature-branch'
M file3
Deleted branch rebased-feature-branch (was 0c4d2f1).
ok 26 - rebase --interactive: dirty worktree, --no-autostash
expecting success of 3420.27 'rebase --interactive: dirty worktree, non-conflicting rebase':
test_config rebase.autostash true &&
git reset --hard &&
git checkout -b rebased-feature-branch feature-branch &&
echo dirty >>file3 &&
git rebase$type unrelated-onto-branch >actual 2>&1 &&
grep unrelated file4 &&
grep dirty file3 &&
git checkout feature-branch
HEAD is now at 0c4d2f1 third commit
Switched to a new branch 'rebased-feature-branch'
unrelated
dirty
Switched to branch 'feature-branch'
M file3
ok 27 - rebase --interactive: dirty worktree, non-conflicting rebase
expecting success of 3420.28 'rebase --interactive --autostash: check output':
test_when_finished git branch -D rebased-feature-branch &&
suffix=${type#\ --} && suffix=${suffix:-apply} &&
if test ${suffix} = "interactive"; then
suffix=merge
fi &&
create_expected_success_$suffix &&
sed "$remove_progress_re" <actual >actual2 &&
test_cmp expected actual2
Deleted branch rebased-feature-branch (was b607b14).
ok 28 - rebase --interactive --autostash: check output
expecting success of 3420.29 'rebase --interactive: dirty index, non-conflicting rebase':
test_config rebase.autostash true &&
git reset --hard &&
git checkout -b rebased-feature-branch feature-branch &&
test_when_finished git branch -D rebased-feature-branch &&
echo dirty >>file3 &&
git add file3 &&
git rebase$type unrelated-onto-branch &&
grep unrelated file4 &&
grep dirty file3 &&
git checkout feature-branch
HEAD is now at 0c4d2f1 third commit
Switched to a new branch 'rebased-feature-branch'
Created autostash: 7305f55
Rebasing (1/2)
Rebasing (2/2)
Applied autostash.
Successfully rebased and updated refs/heads/rebased-feature-branch.
unrelated
dirty
Switched to branch 'feature-branch'
M file3
Deleted branch rebased-feature-branch (was b607b14).
ok 29 - rebase --interactive: dirty index, non-conflicting rebase
expecting success of 3420.30 'rebase --interactive: conflicting rebase':
test_config rebase.autostash true &&
git reset --hard &&
git checkout -b rebased-feature-branch feature-branch &&
test_when_finished git branch -D rebased-feature-branch &&
echo dirty >>file3 &&
test_must_fail git rebase$type related-onto-branch &&
test_path_is_file $dotest/autostash &&
test_path_is_missing file3 &&
rm -rf $dotest &&
git reset --hard &&
git checkout feature-branch
HEAD is now at 0c4d2f1 third commit
Switched to a new branch 'rebased-feature-branch'
Created autostash: ce96636
Rebasing (1/2)
Auto-merging file2
CONFLICT (add/add): Merge conflict in file2
error: could not apply 6fe95e2... second commit
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 6fe95e2... second commit
HEAD is now at c57d250 related commit
Previous HEAD position was c57d250 related commit
Switched to branch 'feature-branch'
Deleted branch rebased-feature-branch (was 0c4d2f1).
ok 30 - rebase --interactive: conflicting rebase
expecting success of 3420.31 'rebase --interactive: --continue':
test_config rebase.autostash true &&
git reset --hard &&
git checkout -b rebased-feature-branch feature-branch &&
test_when_finished git branch -D rebased-feature-branch &&
echo dirty >>file3 &&
test_must_fail git rebase$type related-onto-branch &&
test_path_is_file $dotest/autostash &&
test_path_is_missing file3 &&
echo "conflicting-plus-goodbye" >file2 &&
git add file2 &&
git rebase --continue &&
test_path_is_missing $dotest/autostash &&
grep dirty file3 &&
git checkout feature-branch
HEAD is now at 0c4d2f1 third commit
Switched to a new branch 'rebased-feature-branch'
Created autostash: ce96636
Rebasing (1/2)
Auto-merging file2
CONFLICT (add/add): Merge conflict in file2
error: could not apply 6fe95e2... second commit
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 6fe95e2... second commit
[detached HEAD 62edf38] second commit
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+), 1 deletion(-)
create mode 100644 file1
Rebasing (2/2)
Applied autostash.
Successfully rebased and updated refs/heads/rebased-feature-branch.
dirty
Switched to branch 'feature-branch'
M file3
Deleted branch rebased-feature-branch (was 51f2c81).
ok 31 - rebase --interactive: --continue
expecting success of 3420.32 'rebase --interactive: --skip':
test_config rebase.autostash true &&
git reset --hard &&
git checkout -b rebased-feature-branch feature-branch &&
test_when_finished git branch -D rebased-feature-branch &&
echo dirty >>file3 &&
test_must_fail git rebase$type related-onto-branch &&
test_path_is_file $dotest/autostash &&
test_path_is_missing file3 &&
git rebase --skip &&
test_path_is_missing $dotest/autostash &&
grep dirty file3 &&
git checkout feature-branch
HEAD is now at 0c4d2f1 third commit
Switched to a new branch 'rebased-feature-branch'
Created autostash: ce96636
Rebasing (1/2)
Auto-merging file2
CONFLICT (add/add): Merge conflict in file2
error: could not apply 6fe95e2... second commit
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 6fe95e2... second commit
Rebasing (2/2)
Applied autostash.
Successfully rebased and updated refs/heads/rebased-feature-branch.
dirty
Switched to branch 'feature-branch'
M file3
Deleted branch rebased-feature-branch (was fa02356).
ok 32 - rebase --interactive: --skip
expecting success of 3420.33 'rebase --interactive: --abort':
test_config rebase.autostash true &&
git reset --hard &&
git checkout -b rebased-feature-branch feature-branch &&
test_when_finished git branch -D rebased-feature-branch &&
echo dirty >>file3 &&
test_must_fail git rebase$type related-onto-branch &&
test_path_is_file $dotest/autostash &&
test_path_is_missing file3 &&
git rebase --abort &&
test_path_is_missing $dotest/autostash &&
grep dirty file3 &&
git checkout feature-branch
HEAD is now at 0c4d2f1 third commit
Switched to a new branch 'rebased-feature-branch'
Created autostash: ce96636
Rebasing (1/2)
Auto-merging file2
CONFLICT (add/add): Merge conflict in file2
error: could not apply 6fe95e2... second commit
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 6fe95e2... second commit
Applied autostash.
dirty
Switched to branch 'feature-branch'
M file3
Deleted branch rebased-feature-branch (was 0c4d2f1).
ok 33 - rebase --interactive: --abort
expecting success of 3420.34 'rebase --interactive: --quit':
test_config rebase.autostash true &&
git reset --hard &&
git checkout -b rebased-feature-branch feature-branch &&
test_when_finished git branch -D rebased-feature-branch &&
echo dirty >>file3 &&
git diff >expect &&
test_must_fail git rebase$type related-onto-branch &&
test_path_is_file $dotest/autostash &&
test_path_is_missing file3 &&
git rebase --quit &&
test_when_finished git stash drop &&
test_path_is_missing $dotest/autostash &&
! grep dirty file3 &&
git stash show -p >actual &&
test_cmp expect actual &&
git reset --hard &&
git checkout feature-branch
HEAD is now at 0c4d2f1 third commit
Switched to a new branch 'rebased-feature-branch'
Created autostash: ce96636
Rebasing (1/2)
Auto-merging file2
CONFLICT (add/add): Merge conflict in file2
error: could not apply 6fe95e2... second commit
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 6fe95e2... second commit
Autostash exists; creating a new stash entry.
Your changes are safe in the stash.
You can run "git stash pop" or "git stash drop" at any time.
grep: file3: No such file or directory
HEAD is now at c57d250 related commit
Previous HEAD position was c57d250 related commit
Switched to branch 'feature-branch'
Dropped refs/stash@{0} (ce96636712fc38300c1f0f777cc2fac6dee041c0)
Deleted branch rebased-feature-branch (was 0c4d2f1).
ok 34 - rebase --interactive: --quit
expecting success of 3420.35 'rebase --interactive: non-conflicting rebase, conflicting stash':
test_config rebase.autostash true &&
git reset --hard &&
git checkout -b rebased-feature-branch feature-branch &&
echo dirty >file4 &&
git add file4 &&
git rebase$type unrelated-onto-branch >actual 2>&1 &&
test_path_is_missing $dotest &&
git reset --hard &&
grep unrelated file4 &&
! grep dirty file4 &&
git checkout feature-branch &&
git stash pop &&
grep dirty file4
HEAD is now at 0c4d2f1 third commit
Switched to a new branch 'rebased-feature-branch'
HEAD is now at b607b14 third commit
unrelated
Switched to branch 'feature-branch'
Merging Version stash was based on with Stashed changes
On branch feature-branch
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: file4
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
actual2
expect
expected
Dropped refs/stash@{0} (1b6501f85530697b9c800b37ca0a8c6ef37e954c)
dirty
ok 35 - rebase --interactive: non-conflicting rebase, conflicting stash
expecting success of 3420.36 'rebase --interactive: check output with conflicting stash':
test_when_finished git branch -D rebased-feature-branch &&
suffix=${type#\ --} && suffix=${suffix:-apply} &&
if test ${suffix} = "interactive"; then
suffix=merge
fi &&
create_expected_failure_$suffix &&
sed "$remove_progress_re" <actual >actual2 &&
test_cmp expected actual2
Deleted branch rebased-feature-branch (was b607b14).
ok 36 - rebase --interactive: check output with conflicting stash
expecting success of 3420.37 'abort rebase -i with --autostash':
test_when_finished "git reset --hard" &&
echo uncommitted-content >file0 &&
(
write_script abort-editor.sh <<-\EOF &&
echo >"$1"
EOF
test_set_editor "$(pwd)/abort-editor.sh" &&
test_must_fail git rebase -i --autostash HEAD^ &&
rm -f abort-editor.sh
) &&
echo uncommitted-content >expected &&
test_cmp expected file0
Created autostash: d9b9f3e
Applied autostash.
error: nothing to do
HEAD is now at 0c4d2f1 third commit
ok 37 - abort rebase -i with --autostash
expecting success of 3420.38 'restore autostash on editor failure':
test_when_finished "git reset --hard" &&
echo uncommitted-content >file0 &&
(
test_set_editor "false" &&
test_must_fail git rebase -i --autostash HEAD^
) &&
echo uncommitted-content >expected &&
test_cmp expected file0
Created autostash: 083685b
error: There was a problem with the editor '"$FAKE_EDITOR"'.
Applied autostash.
HEAD is now at 0c4d2f1 third commit
ok 38 - restore autostash on editor failure
expecting success of 3420.39 'autostash is saved on editor failure with conflict':
test_when_finished "git reset --hard" &&
echo uncommitted-content >file0 &&
(
write_script abort-editor.sh <<-\EOF &&
echo conflicting-content >file0
exit 1
EOF
test_set_editor "$(pwd)/abort-editor.sh" &&
test_must_fail git rebase -i --autostash HEAD^ &&
rm -f abort-editor.sh
) &&
echo conflicting-content >expected &&
test_cmp expected file0 &&
git checkout file0 &&
git stash pop &&
echo uncommitted-content >expected &&
test_cmp expected file0
Created autostash: 083685b
error: There was a problem with the editor '"$FAKE_EDITOR"'.
Applying autostash resulted in conflicts.
Your changes are safe in the stash.
You can run "git stash pop" or "git stash drop" at any time.
Updated 1 path from the index
Merging Version stash was based on with Stashed changes
On branch feature-branch
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: file0
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
actual2
expect
expected
no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (083685bba8c747d8dec51b2a5ffc97733bf5a961)
HEAD is now at 0c4d2f1 third commit
ok 39 - autostash is saved on editor failure with conflict
expecting success of 3420.40 'autostash with dirty submodules':
test_when_finished "git reset --hard && git checkout main" &&
git checkout -b with-submodule &&
git -c protocol.file.allow=always submodule add ./ sub &&
test_tick &&
git commit -m add-submodule &&
echo changed >sub/file0 &&
git rebase -i --autostash HEAD
Switched to a new branch 'with-submodule'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3420-rebase-autostash/sub'...
done.
[with-submodule 42dcd38] add-submodule
Author: A U Thor <author@example.com>
2 files changed, 4 insertions(+)
create mode 100644 .gitmodules
create mode 160000 sub
Successfully rebased and updated refs/heads/with-submodule.
HEAD is now at 42dcd38 add-submodule
warning: unable to rmdir 'sub': Directory not empty
Switched to branch 'main'
ok 40 - autostash with dirty submodules
expecting success of 3420.41 'branch is left alone when possible':
git checkout -b unchanged-branch &&
echo changed >file0 &&
git rebase --autostash unchanged-branch &&
test changed = "$(cat file0)" &&
test unchanged-branch = "$(git rev-parse --abbrev-ref HEAD)"
Switched to a new branch 'unchanged-branch'
Created autostash: 84b1204
Current branch unchanged-branch is up to date.
Applied autostash.
ok 41 - branch is left alone when possible
expecting success of 3420.42 'never change active branch':
git checkout -b not-the-feature-branch unrelated-onto-branch &&
test_when_finished "git reset --hard && git checkout main" &&
echo changed >file0 &&
git rebase --autostash not-the-feature-branch feature-branch &&
test_cmp_rev not-the-feature-branch unrelated-onto-branch
Switched to a new branch 'not-the-feature-branch'
M file0
Created autostash: 37b7cba
Rebasing (1/2)
Rebasing (2/2)
Applied autostash.
Successfully rebased and updated refs/heads/feature-branch.
HEAD is now at 543b47f third commit
Switched to branch 'main'
ok 42 - never change active branch
# passed all 42 test(s)
1..42
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3424-rebase-empty.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3424-rebase-empty/.git/
expecting success of 3424.1 'setup test repository':
test_write_lines 1 2 3 4 5 6 7 8 9 10 >numbers &&
test_write_lines A B C D E F G H I J >letters &&
git add numbers letters &&
git commit -m A &&
git branch upstream &&
git branch localmods &&
git checkout upstream &&
test_write_lines A B C D E >letters &&
git add letters &&
git commit -m B &&
test_write_lines 1 2 3 4 five 6 7 8 9 ten >numbers &&
git add numbers &&
git commit -m C &&
git checkout localmods &&
test_write_lines 1 2 3 4 five 6 7 8 9 10 >numbers &&
git add numbers &&
git commit -m C2 &&
git commit --allow-empty -m D &&
test_write_lines A B C D E >letters &&
git add letters &&
git commit -m "Five letters ought to be enough for anybody"
[master (root-commit) 5bccb87] A
Author: A U Thor <author@example.com>
2 files changed, 20 insertions(+)
create mode 100644 letters
create mode 100644 numbers
Switched to branch 'upstream'
[upstream 830e295] B
Author: A U Thor <author@example.com>
1 file changed, 5 deletions(-)
[upstream 028eb0a] C
Author: A U Thor <author@example.com>
1 file changed, 2 insertions(+), 2 deletions(-)
Switched to branch 'localmods'
[localmods 48a48e4] C2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[localmods 7a36fb1] D
Author: A U Thor <author@example.com>
[localmods 4a67a39] Five letters ought to be enough for anybody
Author: A U Thor <author@example.com>
1 file changed, 5 deletions(-)
ok 1 - setup test repository
checking known breakage of 3424.2 'rebase (apply-backend)':
test_when_finished "git rebase --abort" &&
git checkout -B testing localmods &&
# rebase (--apply) should not drop commits that start empty
git rebase --apply upstream &&
test_write_lines D C B A >expect &&
git log --format=%s >actual &&
test_cmp expect actual
Switched to a new branch 'testing'
First, rewinding head to replay your work on top of it...
Applying: C2
Using index info to reconstruct a base tree...
M numbers
Falling back to patching base and 3-way merge...
Merging:
028eb0a C
virtual C2
found 1 common ancestor:
virtual 75a3e2be4ba4a7062d21fba0206758f5518d6ead
Auto-merging numbers
Skipped numbers (merged same as existing)
No changes -- Patch already applied.
Patch is empty.
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
not ok 2 - rebase (apply-backend) # TODO known breakage
expecting success of 3424.3 'rebase --merge --empty=drop':
git checkout -B testing localmods &&
git rebase --merge --empty=drop upstream &&
test_write_lines D C B A >expect &&
git log --format=%s >actual &&
test_cmp expect actual
Reset branch 'testing'
warning: skipped previously applied commit 4a67a39
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Rebasing (1/2)
dropping 48a48e47ff77cc6b4e5b3599268e1a217b1955dc C2 -- patch contents already upstream
Rebasing (2/2)
Successfully rebased and updated refs/heads/testing.
ok 3 - rebase --merge --empty=drop
expecting success of 3424.4 'rebase --merge uses default of --empty=drop':
git checkout -B testing localmods &&
git rebase --merge upstream &&
test_write_lines D C B A >expect &&
git log --format=%s >actual &&
test_cmp expect actual
Reset branch 'testing'
warning: skipped previously applied commit 4a67a39
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Rebasing (1/2)
dropping 48a48e47ff77cc6b4e5b3599268e1a217b1955dc C2 -- patch contents already upstream
Rebasing (2/2)
Successfully rebased and updated refs/heads/testing.
ok 4 - rebase --merge uses default of --empty=drop
expecting success of 3424.5 'rebase --merge --empty=keep':
git checkout -B testing localmods &&
git rebase --merge --empty=keep upstream &&
test_write_lines D C2 C B A >expect &&
git log --format=%s >actual &&
test_cmp expect actual
Reset branch 'testing'
warning: skipped previously applied commit 4a67a39
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/testing.
ok 5 - rebase --merge --empty=keep
expecting success of 3424.6 'rebase --merge --empty=ask':
git checkout -B testing localmods &&
test_must_fail git rebase --merge --empty=ask upstream &&
git rebase --skip &&
test_write_lines D C B A >expect &&
git log --format=%s >actual &&
test_cmp expect actual
Reset branch 'testing'
warning: skipped previously applied commit 4a67a39
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Rebasing (1/2)
The previous cherry-pick is now empty, possibly due to conflict resolution.
If you wish to commit it anyway, use:
git commit --allow-empty
Otherwise, please use 'git rebase --skip'
interactive rebase in progress; onto 028eb0a
Last command done (1 command done):
pick 48a48e4 C2
Next command to do (1 remaining command):
pick 7a36fb1 D # empty
(use "git rebase --edit-todo" to view and edit)
You are currently rebasing branch 'testing' on '028eb0a'.
(all conflicts fixed: run "git rebase --continue")
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
expect
nothing added to commit but untracked files present (use "git add" to track)
Could not apply 48a48e4... C2
Rebasing (2/2)
Successfully rebased and updated refs/heads/testing.
ok 6 - rebase --merge --empty=ask
expecting success of 3424.7 'rebase --interactive --empty=drop':
git checkout -B testing localmods &&
git rebase --interactive --empty=drop upstream &&
test_write_lines D C B A >expect &&
git log --format=%s >actual &&
test_cmp expect actual
Reset branch 'testing'
warning: skipped previously applied commit 4a67a39
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Rebasing (1/2)
dropping 48a48e47ff77cc6b4e5b3599268e1a217b1955dc C2 -- patch contents already upstream
Rebasing (2/2)
Successfully rebased and updated refs/heads/testing.
ok 7 - rebase --interactive --empty=drop
expecting success of 3424.8 'rebase --interactive --empty=keep':
git checkout -B testing localmods &&
git rebase --interactive --empty=keep upstream &&
test_write_lines D C2 C B A >expect &&
git log --format=%s >actual &&
test_cmp expect actual
Reset branch 'testing'
warning: skipped previously applied commit 4a67a39
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/testing.
ok 8 - rebase --interactive --empty=keep
expecting success of 3424.9 'rebase --interactive --empty=ask':
git checkout -B testing localmods &&
test_must_fail git rebase --interactive --empty=ask upstream &&
git rebase --skip &&
test_write_lines D C B A >expect &&
git log --format=%s >actual &&
test_cmp expect actual
Reset branch 'testing'
warning: skipped previously applied commit 4a67a39
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Rebasing (1/2)
The previous cherry-pick is now empty, possibly due to conflict resolution.
If you wish to commit it anyway, use:
git commit --allow-empty
Otherwise, please use 'git rebase --skip'
interactive rebase in progress; onto 028eb0a
Last command done (1 command done):
pick 48a48e4 C2
Next command to do (1 remaining command):
pick 7a36fb1 D # empty
(use "git rebase --edit-todo" to view and edit)
You are currently rebasing branch 'testing' on '028eb0a'.
(all conflicts fixed: run "git rebase --continue")
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
expect
nothing added to commit but untracked files present (use "git add" to track)
Could not apply 48a48e4... C2
Rebasing (2/2)
Successfully rebased and updated refs/heads/testing.
ok 9 - rebase --interactive --empty=ask
expecting success of 3424.10 'rebase --interactive uses default of --empty=ask':
git checkout -B testing localmods &&
test_must_fail git rebase --interactive upstream &&
git rebase --skip &&
test_write_lines D C B A >expect &&
git log --format=%s >actual &&
test_cmp expect actual
Reset branch 'testing'
warning: skipped previously applied commit 4a67a39
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Rebasing (1/2)
The previous cherry-pick is now empty, possibly due to conflict resolution.
If you wish to commit it anyway, use:
git commit --allow-empty
Otherwise, please use 'git rebase --skip'
interactive rebase in progress; onto 028eb0a
Last command done (1 command done):
pick 48a48e4 C2
Next command to do (1 remaining command):
pick 7a36fb1 D # empty
(use "git rebase --edit-todo" to view and edit)
You are currently rebasing branch 'testing' on '028eb0a'.
(all conflicts fixed: run "git rebase --continue")
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
expect
nothing added to commit but untracked files present (use "git add" to track)
Could not apply 48a48e4... C2
Rebasing (2/2)
Successfully rebased and updated refs/heads/testing.
ok 10 - rebase --interactive uses default of --empty=ask
expecting success of 3424.11 'rebase --merge --empty=drop --keep-empty':
git checkout -B testing localmods &&
git rebase --merge --empty=drop --keep-empty upstream &&
test_write_lines D C B A >expect &&
git log --format=%s >actual &&
test_cmp expect actual
Reset branch 'testing'
warning: skipped previously applied commit 4a67a39
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Rebasing (1/2)
dropping 48a48e47ff77cc6b4e5b3599268e1a217b1955dc C2 -- patch contents already upstream
Rebasing (2/2)
Successfully rebased and updated refs/heads/testing.
ok 11 - rebase --merge --empty=drop --keep-empty
expecting success of 3424.12 'rebase --merge --empty=drop --no-keep-empty':
git checkout -B testing localmods &&
git rebase --merge --empty=drop --no-keep-empty upstream &&
test_write_lines C B A >expect &&
git log --format=%s >actual &&
test_cmp expect actual
Reset branch 'testing'
warning: skipped previously applied commit 4a67a39
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Rebasing (1/1)
dropping 48a48e47ff77cc6b4e5b3599268e1a217b1955dc C2 -- patch contents already upstream
Successfully rebased and updated refs/heads/testing.
ok 12 - rebase --merge --empty=drop --no-keep-empty
expecting success of 3424.13 'rebase --merge --empty=keep --keep-empty':
git checkout -B testing localmods &&
git rebase --merge --empty=keep --keep-empty upstream &&
test_write_lines D C2 C B A >expect &&
git log --format=%s >actual &&
test_cmp expect actual
Reset branch 'testing'
warning: skipped previously applied commit 4a67a39
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/testing.
ok 13 - rebase --merge --empty=keep --keep-empty
expecting success of 3424.14 'rebase --merge --empty=keep --no-keep-empty':
git checkout -B testing localmods &&
git rebase --merge --empty=keep --no-keep-empty upstream &&
test_write_lines C2 C B A >expect &&
git log --format=%s >actual &&
test_cmp expect actual
Reset branch 'testing'
warning: skipped previously applied commit 4a67a39
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Rebasing (1/1)
Successfully rebased and updated refs/heads/testing.
ok 14 - rebase --merge --empty=keep --no-keep-empty
expecting success of 3424.15 'rebase --merge does not leave state laying around':
git checkout -B testing localmods~2 &&
git rebase --merge upstream &&
test_path_is_missing .git/CHERRY_PICK_HEAD &&
test_path_is_missing .git/MERGE_MSG
Reset branch 'testing'
Rebasing (1/1)
dropping 48a48e47ff77cc6b4e5b3599268e1a217b1955dc C2 -- patch contents already upstream
Successfully rebased and updated refs/heads/testing.
ok 15 - rebase --merge does not leave state laying around
# still have 1 known breakage(s)
# passed all remaining 14 test(s)
1..15
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3425-rebase-topology-merges.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3425-rebase-topology-merges/.git/
expecting success of 3425.1 'setup of non-linear-history':
test_commit a &&
test_commit b &&
test_commit c &&
git checkout b &&
test_commit d &&
test_commit e &&
git checkout c &&
test_commit g &&
revert h g &&
git checkout d &&
cherry_pick gp g &&
test_commit i &&
git checkout b &&
test_commit f &&
git checkout d &&
test_commit n &&
test_commit o &&
test_merge w e &&
test_merge v c &&
git checkout o &&
test_commit z
[master (root-commit) ce450c7] a
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 a.t
[master 020ea9b] b
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 b.t
[master d9ea348] c
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 c.t
Note: switching to 'b'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 020ea9b b
[detached HEAD 1bd0260] d
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 d.t
[detached HEAD 67a7211] e
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 e.t
Previous HEAD position was 67a7211 e
HEAD is now at d9ea348 c
[detached HEAD 5573dba] g
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 g.t
[detached HEAD 09e6546] h
Author: A U Thor <author@example.com>
1 file changed, 1 deletion(-)
delete mode 100644 g.t
Previous HEAD position was 09e6546 h
HEAD is now at 1bd0260 d
[detached HEAD 00eccdb] gp
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 g.t
[detached HEAD 3317c29] i
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 i.t
Previous HEAD position was 3317c29 i
HEAD is now at 020ea9b b
[detached HEAD 09e072f] f
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 f.t
Previous HEAD position was 09e072f f
HEAD is now at 1bd0260 d
[detached HEAD 35a5a4f] n
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 n.t
[detached HEAD a60ff6b] o
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 o.t
Merge made by the 'ort' strategy.
e.t | 1 +
1 file changed, 1 insertion(+)
create mode 100644 e.t
Merge made by the 'ort' strategy.
c.t | 1 +
1 file changed, 1 insertion(+)
create mode 100644 c.t
Previous HEAD position was 253142b v
HEAD is now at a60ff6b o
[detached HEAD 6fadda8] z
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 z.t
ok 1 - setup of non-linear-history
expecting success of 3425.2 'rebase --apply after merge from upstream':
reset_rebase &&
git rebase --apply e w &&
test_cmp_rev e HEAD~2 &&
test_linear_range 'n o' e..
fatal: No rebase in progress?
HEAD is now at 6fadda8 z
First, rewinding head to replay your work on top of it...
Applying: n
Applying: o
ok 2 - rebase --apply after merge from upstream
expecting success of 3425.3 'rebase -m after merge from upstream':
reset_rebase &&
git rebase -m e w &&
test_cmp_rev e HEAD~2 &&
test_linear_range 'n o' e..
fatal: No rebase in progress?
HEAD is now at 4cd4d2a o
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated detached HEAD.
ok 3 - rebase -m after merge from upstream
expecting success of 3425.4 'rebase -i after merge from upstream':
reset_rebase &&
git rebase -i e w &&
test_cmp_rev e HEAD~2 &&
test_linear_range 'n o' e..
fatal: No rebase in progress?
HEAD is now at 4cd4d2a o
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated detached HEAD.
ok 4 - rebase -i after merge from upstream
expecting success of 3425.5 'rebase --apply of non-linear history is linearized in place':
reset_rebase &&
git rebase --apply d w &&
test_cmp_rev d HEAD~3 &&
test_linear_range 'n o e' d..
fatal: No rebase in progress?
HEAD is now at 4cd4d2a o
First, rewinding head to replay your work on top of it...
Applying: n
Applying: o
Applying: e
ok 5 - rebase --apply of non-linear history is linearized in place
expecting success of 3425.6 'rebase -m of non-linear history is linearized in place':
reset_rebase &&
git rebase -m d w &&
test_cmp_rev d HEAD~3 &&
test_linear_range 'n o e' d..
fatal: No rebase in progress?
HEAD is now at 9e9424c e
Rebasing (3/3)
Successfully rebased and updated detached HEAD.
ok 6 - rebase -m of non-linear history is linearized in place
expecting success of 3425.7 'rebase -i of non-linear history is linearized in place':
reset_rebase &&
git rebase -i d w &&
test_cmp_rev d HEAD~3 &&
test_linear_range 'n o e' d..
fatal: No rebase in progress?
HEAD is now at ef67882 e
Rebasing (3/3)
Successfully rebased and updated detached HEAD.
ok 7 - rebase -i of non-linear history is linearized in place
expecting success of 3425.8 'rebase --apply of non-linear history is linearized upstream':
reset_rebase &&
git rebase --apply c w &&
test_cmp_rev c HEAD~4 &&
test_linear_range 'd n o e' c..
fatal: No rebase in progress?
HEAD is now at ef67882 e
First, rewinding head to replay your work on top of it...
Applying: d
Applying: n
Applying: o
Applying: e
ok 8 - rebase --apply of non-linear history is linearized upstream
expecting success of 3425.9 'rebase -m of non-linear history is linearized upstream':
reset_rebase &&
git rebase -m c w &&
test_cmp_rev c HEAD~4 &&
test_linear_range 'd n o e' c..
fatal: No rebase in progress?
HEAD is now at 7946025 e
Rebasing (1/4)
Rebasing (2/4)
Rebasing (3/4)
Rebasing (4/4)
Successfully rebased and updated detached HEAD.
ok 9 - rebase -m of non-linear history is linearized upstream
expecting success of 3425.10 'rebase -i of non-linear history is linearized upstream':
reset_rebase &&
git rebase -i c w &&
test_cmp_rev c HEAD~4 &&
test_linear_range 'd n o e' c..
fatal: No rebase in progress?
HEAD is now at 7946025 e
Rebasing (1/4)
Rebasing (2/4)
Rebasing (3/4)
Rebasing (4/4)
Successfully rebased and updated detached HEAD.
ok 10 - rebase -i of non-linear history is linearized upstream
expecting success of 3425.11 'rebase --apply of non-linear history with merges after upstream merge is linearized':
reset_rebase &&
git rebase --apply c v &&
test_cmp_rev c HEAD~4 &&
test_linear_range 'd n o e' c..
fatal: No rebase in progress?
HEAD is now at 7946025 e
First, rewinding head to replay your work on top of it...
Applying: d
Applying: n
Applying: o
Applying: e
ok 11 - rebase --apply of non-linear history with merges after upstream merge is linearized
expecting success of 3425.12 'rebase -m of non-linear history with merges after upstream merge is linearized':
reset_rebase &&
git rebase -m c v &&
test_cmp_rev c HEAD~4 &&
test_linear_range 'd n o e' c..
fatal: No rebase in progress?
HEAD is now at 7946025 e
Rebasing (1/4)
Rebasing (2/4)
Rebasing (3/4)
Rebasing (4/4)
Successfully rebased and updated detached HEAD.
ok 12 - rebase -m of non-linear history with merges after upstream merge is linearized
expecting success of 3425.13 'rebase -i of non-linear history with merges after upstream merge is linearized':
reset_rebase &&
git rebase -i c v &&
test_cmp_rev c HEAD~4 &&
test_linear_range 'd n o e' c..
fatal: No rebase in progress?
HEAD is now at 7946025 e
Rebasing (1/4)
Rebasing (2/4)
Rebasing (3/4)
Rebasing (4/4)
Successfully rebased and updated detached HEAD.
ok 13 - rebase -i of non-linear history with merges after upstream merge is linearized
# passed all 13 test(s)
1..13
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3427-rebase-subtree.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3427-rebase-subtree/.git/
expecting success of 3427.1 'setup':
test_commit README &&
git init files &&
test_commit -C files topic_1 &&
test_commit -C files topic_2 &&
test_commit -C files topic_3 &&
: perform subtree merge into files_subtree/ &&
git fetch files refs/heads/main:refs/heads/files-main &&
git merge -s ours --no-commit --allow-unrelated-histories \
files-main &&
git read-tree --prefix=files_subtree -u files-main &&
git commit -m "Add subproject main" &&
: add two extra commits to rebase &&
test_commit -C files_subtree topic_4 &&
test_commit files_subtree/topic_5 &&
git checkout -b to-rebase &&
git fast-export --no-data HEAD -- files_subtree/ |
sed -e "s%\([0-9a-f]\{40\} \)files_subtree/%\1%" |
git fast-import --force --quiet &&
git reset --hard &&
git commit -m "Empty commit" --allow-empty
[main (root-commit) 9b47b78] README
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 README.t
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3427-rebase-subtree/files/.git/
[main (root-commit) 8d5ac37] topic_1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 topic_1.t
[main e30c5d3] topic_2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 topic_2.t
[main 152af92] topic_3
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 topic_3.t
From files
* [new branch] main -> files-main
* [new tag] topic_3 -> topic_3
* [new tag] topic_1 -> topic_1
* [new tag] topic_2 -> topic_2
Automatic merge went well; stopped before committing as requested
[main 90609d1] Add subproject main
Author: A U Thor <author@example.com>
[main 9e13d1d] topic_4
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 files_subtree/topic_4.t
[main 76d9147] files_subtree/topic_5
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 files_subtree/topic_5.t
Switched to a new branch 'to-rebase'
HEAD is now at e6c9414 files_subtree/topic_5
[to-rebase f09580c] Empty commit
Author: A U Thor <author@example.com>
ok 1 - setup
expecting success of 3427.2 'Rebase -Xsubtree --empty=ask --onto commit':
reset_rebase &&
git checkout -b rebase-onto to-rebase &&
test_must_fail git rebase -Xsubtree=files_subtree --empty=ask --onto files-main main &&
: first pick results in no changes &&
git rebase --skip &&
test "$(commit_message HEAD~2)" = "topic_4" &&
test "$(commit_message HEAD~)" = "files_subtree/topic_5" &&
test "$(commit_message HEAD)" = "Empty commit"
fatal: No rebase in progress?
HEAD is now at f09580c Empty commit
Switched to a new branch 'rebase-onto'
Rebasing (1/4)
The previous cherry-pick is now empty, possibly due to conflict resolution.
If you wish to commit it anyway, use:
git commit --allow-empty
Otherwise, please use 'git rebase --skip'
interactive rebase in progress; onto 152af92
Last command done (1 command done):
pick 4b9884c Add subproject main
Next commands to do (3 remaining commands):
pick a622443 topic_4
pick e6c9414 files_subtree/topic_5
(use "git rebase --edit-todo" to view and edit)
You are currently rebasing branch 'rebase-onto' on '152af92'.
(all conflicts fixed: run "git rebase --continue")
Untracked files:
(use "git add <file>..." to include in what will be committed)
files/
nothing added to commit but untracked files present (use "git add" to track)
Could not apply 4b9884c... Add subproject main
Rebasing (2/4)
Rebasing (3/4)
Rebasing (4/4)
Successfully rebased and updated refs/heads/rebase-onto.
ok 2 - Rebase -Xsubtree --empty=ask --onto commit
expecting success of 3427.3 'Rebase -Xsubtree --empty=ask --rebase-merges --onto commit':
reset_rebase &&
git checkout -b rebase-merges-onto to-rebase &&
test_must_fail git rebase -Xsubtree=files_subtree --empty=ask --rebase-merges --onto files-main --root &&
: first pick results in no changes &&
git rebase --skip &&
test "$(commit_message HEAD~2)" = "topic_4" &&
test "$(commit_message HEAD~)" = "files_subtree/topic_5" &&
test "$(commit_message HEAD)" = "Empty commit"
fatal: No rebase in progress?
HEAD is now at d6e246a Empty commit
Switched to a new branch 'rebase-merges-onto'
Rebasing (1/6)
Rebasing (2/6)
Rebasing (3/6)
The previous cherry-pick is now empty, possibly due to conflict resolution.
If you wish to commit it anyway, use:
git commit --allow-empty
Otherwise, please use 'git rebase --skip'
interactive rebase in progress; onto 152af92
Last commands done (3 commands done):
reset onto
pick 4b9884c Add subproject main
(see more in file .git/rebase-merge/done)
Next commands to do (3 remaining commands):
pick a622443 topic_4
pick e6c9414 files_subtree/topic_5
(use "git rebase --edit-todo" to view and edit)
You are currently rebasing branch 'rebase-merges-onto' on '152af92'.
(all conflicts fixed: run "git rebase --continue")
Untracked files:
(use "git add <file>..." to include in what will be committed)
files/
nothing added to commit but untracked files present (use "git add" to track)
Could not apply 4b9884c... Add subproject main
Rebasing (4/6)
Rebasing (5/6)
Rebasing (6/6)
Successfully rebased and updated refs/heads/rebase-merges-onto.
ok 3 - Rebase -Xsubtree --empty=ask --rebase-merges --onto commit
# passed all 3 test(s)
1..3
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3428-rebase-signoff.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3428-rebase-signoff/.git/
expecting success of 3428.1 'rebase --signoff adds a sign-off line':
git commit --allow-empty -m "Initial empty commit" &&
git add file && git commit -m first &&
git config alias.rbs "rebase --signoff" &&
git rbs HEAD^ &&
git cat-file commit HEAD | sed -e "1,/^\$/d" > actual &&
test_cmp expected-signed actual
[master (root-commit) 6c54391] Initial empty commit
Author: A U Thor <author@example.com>
[master e748c15] first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
Current branch master is up to date, rebase forced.
Rebasing (1/1)
Successfully rebased and updated refs/heads/master.
ok 1 - rebase --signoff adds a sign-off line
expecting success of 3428.2 'rebase --no-signoff does not add a sign-off line':
git commit --amend -m "first" &&
git rbs --no-signoff HEAD^ &&
git cat-file commit HEAD | sed -e "1,/^\$/d" > actual &&
test_cmp expected-unsigned actual
[master e748c15] first
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 insertion(+)
create mode 100644 file
Current branch master is up to date.
ok 2 - rebase --no-signoff does not add a sign-off line
expecting success of 3428.3 'rebase --exec --signoff adds a sign-off line':
test_when_finished "rm exec" &&
git commit --amend -m "first" &&
git rebase --exec "touch exec" --signoff HEAD^ &&
test_path_is_file exec &&
git cat-file commit HEAD | sed -e "1,/^\$/d" >actual &&
test_cmp expected-signed actual
[master e748c15] first
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 insertion(+)
create mode 100644 file
Rebasing (1/2)
Rebasing (2/2)
Executing: touch exec
Successfully rebased and updated refs/heads/master.
ok 3 - rebase --exec --signoff adds a sign-off line
expecting success of 3428.4 'rebase --root --signoff adds a sign-off line':
git commit --amend -m "first" &&
git rebase --root --keep-empty --signoff &&
git cat-file commit HEAD^ | sed -e "1,/^\$/d" >actual &&
test_cmp expected-initial-signed actual &&
git cat-file commit HEAD | sed -e "1,/^\$/d" >actual &&
test_cmp expected-signed actual
[master e748c15] first
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 insertion(+)
create mode 100644 file
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/master.
ok 4 - rebase --root --signoff adds a sign-off line
expecting success of 3428.5 'rebase -i --signoff fails':
git commit --amend -m "first" &&
git rebase -i --signoff HEAD^ &&
git cat-file commit HEAD | sed -e "1,/^\$/d" >actual &&
test_cmp expected-signed actual
[master f83e174] first
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 insertion(+)
create mode 100644 file
Rebasing (1/1)
Successfully rebased and updated refs/heads/master.
ok 5 - rebase -i --signoff fails
expecting success of 3428.6 'rebase -m --signoff fails':
git commit --amend -m "first" &&
git rebase -m --signoff HEAD^ &&
git cat-file commit HEAD | sed -e "1,/^\$/d" >actual &&
test_cmp expected-signed actual
[master f83e174] first
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 insertion(+)
create mode 100644 file
Current branch master is up to date, rebase forced.
Rebasing (1/1)
Successfully rebased and updated refs/heads/master.
ok 6 - rebase -m --signoff fails
# passed all 6 test(s)
1..6
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3429-rebase-edit-todo.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3429-rebase-edit-todo/.git/
expecting success of 3429.1 'setup':
test_commit first file &&
test_commit second file &&
test_commit third file
[master (root-commit) 07e65e0] first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
[master fa10d42] second
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[master ba0a06e] third
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 1 - setup
expecting success of 3429.2 'rebase exec modifies rebase-todo':
todo=.git/rebase-merge/git-rebase-todo &&
git rebase HEAD~1 -x "echo exec touch F >>$todo" &&
test -e F
Rebasing (2/2)
Executing: echo exec touch F >>.git/rebase-merge/git-rebase-todo
Rebasing (3/3)
Executing: touch F
Successfully rebased and updated refs/heads/master.
ok 2 - rebase exec modifies rebase-todo
expecting success of 3429.3 'rebase exec with an empty list does not exec anything':
git rebase HEAD -x "true" 2>output &&
! grep "Executing: true" output
ok 3 - rebase exec with an empty list does not exec anything
expecting success of 3429.4 'loose object cache vs re-reading todo list':
GIT_REBASE_TODO=.git/rebase-merge/git-rebase-todo &&
export GIT_REBASE_TODO &&
write_script append-todo.sh <<-\EOS &&
# For values 5 and 6, this yields SHA-1s with the same first two digits
echo "pick $(git rev-parse --short \
$(printf "%s\\n" \
"tree $EMPTY_TREE" \
"author A U Thor <author@example.org> $1 +0000" \
"committer A U Thor <author@example.org> $1 +0000" \
"" \
"$1" |
git hash-object -t commit -w --stdin))" >>$GIT_REBASE_TODO
shift
test -z "$*" ||
echo "exec $0 $*" >>$GIT_REBASE_TODO
EOS
git rebase HEAD -x "./append-todo.sh 5 6"
Successfully rebased and updated refs/heads/master.
ok 4 - loose object cache vs re-reading todo list
expecting success of 3429.5 'todo is re-read after reword and squash':
write_script reword-editor.sh <<-\EOS &&
GIT_SEQUENCE_EDITOR="echo \"exec echo $(cat file) >>actual\" >>" \
git rebase --edit-todo
EOS
test_write_lines first third >expected &&
set_fake_editor &&
GIT_SEQUENCE_EDITOR="$EDITOR" FAKE_LINES="reword 1 squash 2 fixup 3" \
GIT_EDITOR=./reword-editor.sh git rebase -i --root third &&
test_cmp expected actual
rebase -i script before editing:
pick 07e65e0 first
pick fa10d42 second
pick ba0a06e third
rebase -i script after editing:
reword 07e65e0 first
squash fa10d42 second
fixup ba0a06e third
Rebasing (1/3)
[detached HEAD 67746ec] first
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:13:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 file
Rebasing (2/4)
Rebasing (3/4)
[detached HEAD 15dd5e0] first
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:13:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 file
Rebasing (4/5)
Executing: echo first >>actual
Rebasing (5/5)
Executing: echo third >>actual
Successfully rebased and updated detached HEAD.
ok 5 - todo is re-read after reword and squash
expecting success of 3429.6 're-reading todo doesnt interfere with revert --edit':
git reset --hard third &&
git revert --edit third second &&
cat >expect <<-\EOF &&
Revert "second"
Revert "third"
third
second
first
EOF
git log --format="%s" >actual &&
test_cmp expect actual
HEAD is now at ba0a06e third
[detached HEAD 2d8e437] Revert "third"
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[detached HEAD 60853ee] Revert "second"
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 6 - re-reading todo doesnt interfere with revert --edit
expecting success of 3429.7 're-reading todo doesnt interfere with cherry-pick --edit':
git reset --hard first &&
git cherry-pick --edit second third &&
cat >expect <<-\EOF &&
third
second
first
EOF
git log --format="%s" >actual &&
test_cmp expect actual
HEAD is now at 07e65e0 first
[detached HEAD e619899] second
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
[detached HEAD c9a7b60] third
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
ok 7 - re-reading todo doesnt interfere with cherry-pick --edit
# passed all 7 test(s)
1..7
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3421-rebase-topology-linear.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3421-rebase-topology-linear/.git/
expecting success of 3421.1 'setup':
test_commit a &&
test_commit b &&
test_commit c &&
git checkout b &&
test_commit d &&
test_commit e
[master (root-commit) ce450c7] a
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 a.t
[master 020ea9b] b
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 b.t
[master d9ea348] c
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 c.t
Note: switching to 'b'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 020ea9b b
[detached HEAD 1bd0260] d
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 d.t
[detached HEAD 67a7211] e
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 e.t
ok 1 - setup
expecting success of 3421.2 'simple rebase --apply':
reset_rebase &&
git rebase --apply c e &&
test_cmp_rev c HEAD~2 &&
test_linear_range 'd e' c..
fatal: No rebase in progress?
HEAD is now at 67a7211 e
First, rewinding head to replay your work on top of it...
Applying: d
Applying: e
ok 2 - simple rebase --apply
expecting success of 3421.3 'simple rebase -m':
reset_rebase &&
git rebase -m c e &&
test_cmp_rev c HEAD~2 &&
test_linear_range 'd e' c..
fatal: No rebase in progress?
HEAD is now at 7d728d6 e
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated detached HEAD.
ok 3 - simple rebase -m
expecting success of 3421.4 'simple rebase -i':
reset_rebase &&
git rebase -i c e &&
test_cmp_rev c HEAD~2 &&
test_linear_range 'd e' c..
fatal: No rebase in progress?
HEAD is now at 7d728d6 e
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated detached HEAD.
ok 4 - simple rebase -i
expecting success of 3421.5 'setup branches and remote tracking':
git tag -l >tags &&
for tag in $(cat tags)
do
git branch branch-$tag $tag || return 1
done &&
git remote add origin "file://$PWD" &&
git fetch origin
From file:///<<PKGBUILDDIR>>/t/trash directory.t3421-rebase-topology-linear
* [new branch] branch-a -> origin/branch-a
* [new branch] branch-b -> origin/branch-b
* [new branch] branch-c -> origin/branch-c
* [new branch] branch-d -> origin/branch-d
* [new branch] branch-e -> origin/branch-e
* [new branch] master -> origin/master
ok 5 - setup branches and remote tracking
expecting success of 3421.6 'rebase --apply is no-op if upstream is an ancestor':
reset_rebase &&
git rebase --apply b e &&
test_cmp_rev e HEAD
fatal: No rebase in progress?
HEAD is now at 7d728d6 e
Removing tags
Current branch e is up to date.
ok 6 - rebase --apply is no-op if upstream is an ancestor
expecting success of 3421.7 'rebase -m is no-op if upstream is an ancestor':
reset_rebase &&
git rebase -m b e &&
test_cmp_rev e HEAD
fatal: No rebase in progress?
HEAD is now at 67a7211 e
Current branch e is up to date.
ok 7 - rebase -m is no-op if upstream is an ancestor
expecting success of 3421.8 'rebase -i is no-op if upstream is an ancestor':
reset_rebase &&
git rebase -i b e &&
test_cmp_rev e HEAD
fatal: No rebase in progress?
HEAD is now at 67a7211 e
Successfully rebased and updated detached HEAD.
ok 8 - rebase -i is no-op if upstream is an ancestor
expecting success of 3421.9 'rebase --apply -f rewrites even if upstream is an ancestor':
reset_rebase &&
git rebase --apply -f b e &&
test_cmp_rev ! e HEAD &&
test_cmp_rev b HEAD~2 &&
test_linear_range 'd e' b..
fatal: No rebase in progress?
HEAD is now at 67a7211 e
Current branch e is up to date, rebase forced.
First, rewinding head to replay your work on top of it...
Applying: d
Applying: e
ok 9 - rebase --apply -f rewrites even if upstream is an ancestor
expecting success of 3421.10 'rebase --fork-point -f rewrites even if upstream is an ancestor':
reset_rebase &&
git rebase --fork-point -f b e &&
test_cmp_rev ! e HEAD &&
test_cmp_rev b HEAD~2 &&
test_linear_range 'd e' b..
fatal: No rebase in progress?
HEAD is now at 354afb0 e
Current branch e is up to date, rebase forced.
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated detached HEAD.
ok 10 - rebase --fork-point -f rewrites even if upstream is an ancestor
expecting success of 3421.11 'rebase -m -f rewrites even if upstream is an ancestor':
reset_rebase &&
git rebase -m -f b e &&
test_cmp_rev ! e HEAD &&
test_cmp_rev b HEAD~2 &&
test_linear_range 'd e' b..
fatal: No rebase in progress?
HEAD is now at 354afb0 e
Current branch e is up to date, rebase forced.
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated detached HEAD.
ok 11 - rebase -m -f rewrites even if upstream is an ancestor
expecting success of 3421.12 'rebase -i -f rewrites even if upstream is an ancestor':
reset_rebase &&
git rebase -i -f b e &&
test_cmp_rev ! e HEAD &&
test_cmp_rev b HEAD~2 &&
test_linear_range 'd e' b..
fatal: No rebase in progress?
HEAD is now at 354afb0 e
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated detached HEAD.
ok 12 - rebase -i -f rewrites even if upstream is an ancestor
expecting success of 3421.13 'rebase --apply -f rewrites even if remote upstream is an ancestor':
reset_rebase &&
git rebase --apply -f branch-b branch-e &&
test_cmp_rev ! branch-e origin/branch-e &&
test_cmp_rev branch-b HEAD~2 &&
test_linear_range 'd e' branch-b..
fatal: No rebase in progress?
HEAD is now at 354afb0 e
Current branch branch-e is up to date, rebase forced.
First, rewinding head to replay your work on top of it...
Applying: d
Applying: e
ok 13 - rebase --apply -f rewrites even if remote upstream is an ancestor
expecting success of 3421.14 'rebase --fork-point -f rewrites even if remote upstream is an ancestor':
reset_rebase &&
git rebase --fork-point -f branch-b branch-e &&
test_cmp_rev ! branch-e origin/branch-e &&
test_cmp_rev branch-b HEAD~2 &&
test_linear_range 'd e' branch-b..
fatal: No rebase in progress?
HEAD is now at 354afb0 e
Current branch branch-e is up to date, rebase forced.
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/branch-e.
ok 14 - rebase --fork-point -f rewrites even if remote upstream is an ancestor
expecting success of 3421.15 'rebase -m -f rewrites even if remote upstream is an ancestor':
reset_rebase &&
git rebase -m -f branch-b branch-e &&
test_cmp_rev ! branch-e origin/branch-e &&
test_cmp_rev branch-b HEAD~2 &&
test_linear_range 'd e' branch-b..
fatal: No rebase in progress?
HEAD is now at 354afb0 e
Current branch branch-e is up to date, rebase forced.
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/branch-e.
ok 15 - rebase -m -f rewrites even if remote upstream is an ancestor
expecting success of 3421.16 'rebase -i -f rewrites even if remote upstream is an ancestor':
reset_rebase &&
git rebase -i -f branch-b branch-e &&
test_cmp_rev ! branch-e origin/branch-e &&
test_cmp_rev branch-b HEAD~2 &&
test_linear_range 'd e' branch-b..
fatal: No rebase in progress?
HEAD is now at 354afb0 e
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/branch-e.
ok 16 - rebase -i -f rewrites even if remote upstream is an ancestor
expecting success of 3421.17 'rebase --apply fast-forwards from ancestor of upstream':
reset_rebase &&
git rebase --apply e b &&
test_cmp_rev e HEAD
fatal: No rebase in progress?
HEAD is now at 354afb0 e
First, rewinding head to replay your work on top of it...
Fast-forwarded b to e.
ok 17 - rebase --apply fast-forwards from ancestor of upstream
expecting success of 3421.18 'rebase --fork-point fast-forwards from ancestor of upstream':
reset_rebase &&
git rebase --fork-point e b &&
test_cmp_rev e HEAD
fatal: No rebase in progress?
HEAD is now at 67a7211 e
Successfully rebased and updated detached HEAD.
ok 18 - rebase --fork-point fast-forwards from ancestor of upstream
expecting success of 3421.19 'rebase -m fast-forwards from ancestor of upstream':
reset_rebase &&
git rebase -m e b &&
test_cmp_rev e HEAD
fatal: No rebase in progress?
HEAD is now at 67a7211 e
Successfully rebased and updated detached HEAD.
ok 19 - rebase -m fast-forwards from ancestor of upstream
expecting success of 3421.20 'rebase -i fast-forwards from ancestor of upstream':
reset_rebase &&
git rebase -i e b &&
test_cmp_rev e HEAD
fatal: No rebase in progress?
HEAD is now at 67a7211 e
Successfully rebased and updated detached HEAD.
ok 20 - rebase -i fast-forwards from ancestor of upstream
expecting success of 3421.21 'setup of linear history for range selection tests':
git checkout c &&
test_commit g &&
revert h g &&
git checkout d &&
cherry_pick gp g &&
test_commit i &&
git checkout b &&
test_commit f
Previous HEAD position was 67a7211 e
HEAD is now at d9ea348 c
[detached HEAD 5573dba] g
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 g.t
[detached HEAD 09e6546] h
Author: A U Thor <author@example.com>
1 file changed, 1 deletion(-)
delete mode 100644 g.t
Previous HEAD position was 09e6546 h
HEAD is now at 1bd0260 d
[detached HEAD 00eccdb] gp
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 g.t
[detached HEAD 3317c29] i
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 i.t
Previous HEAD position was 3317c29 i
HEAD is now at 020ea9b b
[detached HEAD 09e072f] f
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 f.t
ok 21 - setup of linear history for range selection tests
expecting success of 3421.22 'rebase --apply drops patches in upstream':
reset_rebase &&
git rebase --apply h i &&
test_cmp_rev h HEAD~2 &&
test_linear_range 'd i' h..
fatal: No rebase in progress?
HEAD is now at 09e072f f
First, rewinding head to replay your work on top of it...
Applying: d
Applying: i
ok 22 - rebase --apply drops patches in upstream
expecting success of 3421.23 'rebase -m drops patches in upstream':
reset_rebase &&
git rebase -m h i &&
test_cmp_rev h HEAD~2 &&
test_linear_range 'd i' h..
fatal: No rebase in progress?
HEAD is now at 5c158e9 i
warning: skipped previously applied commit 00eccdb
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated detached HEAD.
ok 23 - rebase -m drops patches in upstream
expecting success of 3421.24 'rebase -i drops patches in upstream':
reset_rebase &&
git rebase -i h i &&
test_cmp_rev h HEAD~2 &&
test_linear_range 'd i' h..
fatal: No rebase in progress?
HEAD is now at 5c158e9 i
warning: skipped previously applied commit 00eccdb
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated detached HEAD.
ok 24 - rebase -i drops patches in upstream
expecting success of 3421.25 'rebase --apply can drop last patch if in upstream':
reset_rebase &&
git rebase --apply h gp &&
test_cmp_rev h HEAD^ &&
test_linear_range 'd' h..
fatal: No rebase in progress?
HEAD is now at 5c158e9 i
First, rewinding head to replay your work on top of it...
Applying: d
ok 25 - rebase --apply can drop last patch if in upstream
expecting success of 3421.26 'rebase -m can drop last patch if in upstream':
reset_rebase &&
git rebase -m h gp &&
test_cmp_rev h HEAD^ &&
test_linear_range 'd' h..
fatal: No rebase in progress?
HEAD is now at e937a8e d
warning: skipped previously applied commit 00eccdb
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Rebasing (1/1)
Successfully rebased and updated detached HEAD.
ok 26 - rebase -m can drop last patch if in upstream
expecting success of 3421.27 'rebase -i can drop last patch if in upstream':
reset_rebase &&
git rebase -i h gp &&
test_cmp_rev h HEAD^ &&
test_linear_range 'd' h..
fatal: No rebase in progress?
HEAD is now at e937a8e d
warning: skipped previously applied commit 00eccdb
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Rebasing (1/1)
Successfully rebased and updated detached HEAD.
ok 27 - rebase -i can drop last patch if in upstream
expecting success of 3421.28 'rebase --apply --onto drops patches in upstream':
reset_rebase &&
git rebase --apply --onto f h i &&
test_cmp_rev f HEAD~2 &&
test_linear_range 'd i' f..
fatal: No rebase in progress?
HEAD is now at e937a8e d
First, rewinding head to replay your work on top of it...
Applying: d
Applying: i
ok 28 - rebase --apply --onto drops patches in upstream
expecting success of 3421.29 'rebase -m --onto drops patches in upstream':
reset_rebase &&
git rebase -m --onto f h i &&
test_cmp_rev f HEAD~2 &&
test_linear_range 'd i' f..
fatal: No rebase in progress?
HEAD is now at bcc98eb i
warning: skipped previously applied commit 00eccdb
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated detached HEAD.
ok 29 - rebase -m --onto drops patches in upstream
expecting success of 3421.30 'rebase -i --onto drops patches in upstream':
reset_rebase &&
git rebase -i --onto f h i &&
test_cmp_rev f HEAD~2 &&
test_linear_range 'd i' f..
fatal: No rebase in progress?
HEAD is now at bcc98eb i
warning: skipped previously applied commit 00eccdb
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated detached HEAD.
ok 30 - rebase -i --onto drops patches in upstream
expecting success of 3421.31 'rebase --apply --onto does not drop patches in onto':
reset_rebase &&
git rebase --apply --onto h f i &&
test_cmp_rev h HEAD~3 &&
test_linear_range 'd gp i' h..
fatal: No rebase in progress?
HEAD is now at bcc98eb i
First, rewinding head to replay your work on top of it...
Applying: d
Applying: gp
Applying: i
ok 31 - rebase --apply --onto does not drop patches in onto
expecting success of 3421.32 'rebase -m --onto does not drop patches in onto':
reset_rebase &&
git rebase -m --onto h f i &&
test_cmp_rev h HEAD~3 &&
test_linear_range 'd gp i' h..
fatal: No rebase in progress?
HEAD is now at bbe8f41 i
Rebasing (1/3)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated detached HEAD.
ok 32 - rebase -m --onto does not drop patches in onto
expecting success of 3421.33 'rebase -i --onto does not drop patches in onto':
reset_rebase &&
git rebase -i --onto h f i &&
test_cmp_rev h HEAD~3 &&
test_linear_range 'd gp i' h..
fatal: No rebase in progress?
HEAD is now at bbe8f41 i
Rebasing (1/3)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated detached HEAD.
ok 33 - rebase -i --onto does not drop patches in onto
expecting success of 3421.34 'setup of linear history for empty commit tests':
git checkout c &&
make_empty j &&
git checkout d &&
make_empty k &&
test_commit l
Warning: you are leaving 3 commits behind, not connected to
any of your branches:
bbe8f41 i
4a12efe gp
e937a8e d
If you want to keep them by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> bbe8f41
HEAD is now at d9ea348 c
[detached HEAD 5b67321] j
Author: A U Thor <author@example.com>
Previous HEAD position was 5b67321 j
HEAD is now at 1bd0260 d
[detached HEAD 753370d] k
Author: A U Thor <author@example.com>
[detached HEAD 49cf309] l
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 l.t
ok 34 - setup of linear history for empty commit tests
checking known breakage of 3421.35 'rebase --apply keeps begin-empty commits':
reset_rebase &&
git rebase --apply j l &&
test_cmp_rev c HEAD~4 &&
test_linear_range 'j d k l' c..
fatal: No rebase in progress?
HEAD is now at 49cf309 l
First, rewinding head to replay your work on top of it...
Applying: d
Applying: l
error: two revisions point to different objects:
'c': d9ea348e0fe8827f205c231ed0a5b8258841fd37
'HEAD~4': 020ea9b5b2051d958f4737afacdc8821a33ac9a9
not ok 35 - rebase --apply keeps begin-empty commits # TODO known breakage
expecting success of 3421.36 'rebase -m keeps begin-empty commits':
reset_rebase &&
git rebase -m j l &&
test_cmp_rev c HEAD~4 &&
test_linear_range 'j d k l' c..
fatal: No rebase in progress?
HEAD is now at 1612308 l
Rebasing (1/3)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated detached HEAD.
ok 36 - rebase -m keeps begin-empty commits
expecting success of 3421.37 'rebase -i keeps begin-empty commits':
reset_rebase &&
git rebase -i j l &&
test_cmp_rev c HEAD~4 &&
test_linear_range 'j d k l' c..
fatal: No rebase in progress?
HEAD is now at 5395ede l
Rebasing (1/3)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated detached HEAD.
ok 37 - rebase -i keeps begin-empty commits
expecting success of 3421.38 'rebase -m --no-keep-empty drops begin-empty commits':
reset_rebase &&
git rebase -m --no-keep-empty c l &&
test_cmp_rev c HEAD~2 &&
test_linear_range 'd l' c..
fatal: No rebase in progress?
HEAD is now at 5395ede l
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated detached HEAD.
ok 38 - rebase -m --no-keep-empty drops begin-empty commits
expecting success of 3421.39 'rebase -i --no-keep-empty drops begin-empty commits':
reset_rebase &&
git rebase -i --no-keep-empty c l &&
test_cmp_rev c HEAD~2 &&
test_linear_range 'd l' c..
fatal: No rebase in progress?
HEAD is now at ef60b8d l
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated detached HEAD.
ok 39 - rebase -i --no-keep-empty drops begin-empty commits
expecting success of 3421.40 'rebase -m --keep-empty keeps empty even if already in upstream':
reset_rebase &&
git rebase -m --keep-empty j l &&
test_cmp_rev j HEAD~3 &&
test_linear_range 'd k l' j..
fatal: No rebase in progress?
HEAD is now at ef60b8d l
Rebasing (1/3)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated detached HEAD.
ok 40 - rebase -m --keep-empty keeps empty even if already in upstream
expecting success of 3421.41 'rebase -i --keep-empty keeps empty even if already in upstream':
reset_rebase &&
git rebase -i --keep-empty j l &&
test_cmp_rev j HEAD~3 &&
test_linear_range 'd k l' j..
fatal: No rebase in progress?
HEAD is now at 5395ede l
Rebasing (1/3)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated detached HEAD.
ok 41 - rebase -i --keep-empty keeps empty even if already in upstream
expecting success of 3421.42 'rebase --rebase-merges --keep-empty keeps empty even if already in upstream':
reset_rebase &&
git rebase --rebase-merges --keep-empty j l &&
test_cmp_rev j HEAD~3 &&
test_linear_range 'd k l' j..
fatal: No rebase in progress?
HEAD is now at 5395ede l
Rebasing (1/5)
Rebasing (2/5)
Rebasing (3/5)
Rebasing (4/5)
Rebasing (5/5)
Successfully rebased and updated detached HEAD.
ok 42 - rebase --rebase-merges --keep-empty keeps empty even if already in upstream
expecting success of 3421.43 'setup of linear history for test involving root':
git checkout b &&
revert m b &&
git checkout --orphan disjoint &&
git rm -rf . &&
test_commit x &&
test_commit y &&
cherry_pick bp b
Warning: you are leaving 3 commits behind, not connected to
any of your branches:
5395ede l
9a731c2 k
60768b3 d
If you want to keep them by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 5395ede
HEAD is now at 020ea9b b
[detached HEAD 6db5543] m
Author: A U Thor <author@example.com>
1 file changed, 1 deletion(-)
delete mode 100644 b.t
Switched to a new branch 'disjoint'
rm 'a.t'
[disjoint (root-commit) 059091f] x
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 x.t
[disjoint be1e399] y
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 y.t
[disjoint b7cb922] bp
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 b.t
ok 43 - setup of linear history for test involving root
expecting success of 3421.44 'rebase --apply --onto --root':
reset_rebase &&
git rebase --apply --onto c --root y &&
test_cmp_rev c HEAD~2 &&
test_linear_range 'x y' c..
fatal: No rebase in progress?
HEAD is now at b7cb922 bp
First, rewinding head to replay your work on top of it...
Applying: x
Applying: y
ok 44 - rebase --apply --onto --root
expecting success of 3421.45 'rebase -m --onto --root':
reset_rebase &&
git rebase -m --onto c --root y &&
test_cmp_rev c HEAD~2 &&
test_linear_range 'x y' c..
fatal: No rebase in progress?
HEAD is now at 7e2f0ad y
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated detached HEAD.
ok 45 - rebase -m --onto --root
expecting success of 3421.46 'rebase -i --onto --root':
reset_rebase &&
git rebase -i --onto c --root y &&
test_cmp_rev c HEAD~2 &&
test_linear_range 'x y' c..
fatal: No rebase in progress?
HEAD is now at 7e2f0ad y
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated detached HEAD.
ok 46 - rebase -i --onto --root
expecting success of 3421.47 'rebase --apply without --onto --root with disjoint history':
reset_rebase &&
git rebase --apply c y &&
test_cmp_rev c HEAD~2 &&
test_linear_range 'x y' c..
fatal: No rebase in progress?
HEAD is now at 7e2f0ad y
First, rewinding head to replay your work on top of it...
Applying: x
Applying: y
ok 47 - rebase --apply without --onto --root with disjoint history
expecting success of 3421.48 'rebase -m without --onto --root with disjoint history':
reset_rebase &&
git rebase -m c y &&
test_cmp_rev c HEAD~2 &&
test_linear_range 'x y' c..
fatal: No rebase in progress?
HEAD is now at 7e2f0ad y
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated detached HEAD.
ok 48 - rebase -m without --onto --root with disjoint history
expecting success of 3421.49 'rebase -i without --onto --root with disjoint history':
reset_rebase &&
git rebase -i c y &&
test_cmp_rev c HEAD~2 &&
test_linear_range 'x y' c..
fatal: No rebase in progress?
HEAD is now at 7e2f0ad y
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated detached HEAD.
ok 49 - rebase -i without --onto --root with disjoint history
expecting success of 3421.50 'rebase --apply --onto --root drops patch in onto':
reset_rebase &&
git rebase --apply --onto m --root bp &&
test_cmp_rev m HEAD~2 &&
test_linear_range 'x y' m..
fatal: No rebase in progress?
HEAD is now at 7e2f0ad y
First, rewinding head to replay your work on top of it...
Applying: x
Applying: y
ok 50 - rebase --apply --onto --root drops patch in onto
expecting success of 3421.51 'rebase -m --onto --root drops patch in onto':
reset_rebase &&
git rebase -m --onto m --root bp &&
test_cmp_rev m HEAD~2 &&
test_linear_range 'x y' m..
fatal: No rebase in progress?
HEAD is now at 1daea3a y
warning: skipped previously applied commit b7cb922
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated detached HEAD.
ok 51 - rebase -m --onto --root drops patch in onto
expecting success of 3421.52 'rebase -i --onto --root drops patch in onto':
reset_rebase &&
git rebase -i --onto m --root bp &&
test_cmp_rev m HEAD~2 &&
test_linear_range 'x y' m..
fatal: No rebase in progress?
HEAD is now at 1daea3a y
warning: skipped previously applied commit b7cb922
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated detached HEAD.
ok 52 - rebase -i --onto --root drops patch in onto
expecting success of 3421.53 'rebase --apply --onto --root with merge-base does not go to root':
reset_rebase &&
git rebase --apply --onto m --root g &&
test_cmp_rev m HEAD~2 &&
test_linear_range 'c g' m..
fatal: No rebase in progress?
HEAD is now at 1daea3a y
First, rewinding head to replay your work on top of it...
Applying: c
Applying: g
ok 53 - rebase --apply --onto --root with merge-base does not go to root
expecting success of 3421.54 'rebase -m --onto --root with merge-base does not go to root':
reset_rebase &&
git rebase -m --onto m --root g &&
test_cmp_rev m HEAD~2 &&
test_linear_range 'c g' m..
fatal: No rebase in progress?
HEAD is now at 9921398 g
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated detached HEAD.
ok 54 - rebase -m --onto --root with merge-base does not go to root
expecting success of 3421.55 'rebase -i --onto --root with merge-base does not go to root':
reset_rebase &&
git rebase -i --onto m --root g &&
test_cmp_rev m HEAD~2 &&
test_linear_range 'c g' m..
fatal: No rebase in progress?
HEAD is now at 9921398 g
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated detached HEAD.
ok 55 - rebase -i --onto --root with merge-base does not go to root
expecting success of 3421.56 'rebase --apply without --onto --root with disjoint history drops patch in onto':
reset_rebase &&
git rebase --apply m bp &&
test_cmp_rev m HEAD~2 &&
test_linear_range 'x y' m..
fatal: No rebase in progress?
HEAD is now at 9921398 g
First, rewinding head to replay your work on top of it...
Applying: x
Applying: y
ok 56 - rebase --apply without --onto --root with disjoint history drops patch in onto
expecting success of 3421.57 'rebase -m without --onto --root with disjoint history drops patch in onto':
reset_rebase &&
git rebase -m m bp &&
test_cmp_rev m HEAD~2 &&
test_linear_range 'x y' m..
fatal: No rebase in progress?
HEAD is now at 1daea3a y
warning: skipped previously applied commit b7cb922
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated detached HEAD.
ok 57 - rebase -m without --onto --root with disjoint history drops patch in onto
expecting success of 3421.58 'rebase -i without --onto --root with disjoint history drops patch in onto':
reset_rebase &&
git rebase -i m bp &&
test_cmp_rev m HEAD~2 &&
test_linear_range 'x y' m..
fatal: No rebase in progress?
HEAD is now at 1daea3a y
warning: skipped previously applied commit b7cb922
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated detached HEAD.
ok 58 - rebase -i without --onto --root with disjoint history drops patch in onto
expecting success of 3421.59 'rebase --root on linear history is a no-op':
reset_rebase &&
git rebase --root c &&
test_cmp_rev c HEAD
fatal: No rebase in progress?
HEAD is now at 1daea3a y
Rebasing (1/3)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated detached HEAD.
ok 59 - rebase --root on linear history is a no-op
expecting success of 3421.60 'rebase -m --root on linear history is a no-op':
reset_rebase &&
git rebase -m --root c &&
test_cmp_rev c HEAD
fatal: No rebase in progress?
HEAD is now at d9ea348 c
Rebasing (1/3)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated detached HEAD.
ok 60 - rebase -m --root on linear history is a no-op
expecting success of 3421.61 'rebase -i --root on linear history is a no-op':
reset_rebase &&
git rebase -i --root c &&
test_cmp_rev c HEAD
fatal: No rebase in progress?
HEAD is now at d9ea348 c
Rebasing (1/3)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated detached HEAD.
ok 61 - rebase -i --root on linear history is a no-op
expecting success of 3421.62 'rebase -f --root on linear history causes re-write':
reset_rebase &&
git rebase -f --root c &&
test_cmp_rev ! a HEAD~2 &&
test_linear_range 'a b c' HEAD
fatal: No rebase in progress?
HEAD is now at d9ea348 c
Rebasing (1/3)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated detached HEAD.
ok 62 - rebase -f --root on linear history causes re-write
expecting success of 3421.63 'rebase -m -f --root on linear history causes re-write':
reset_rebase &&
git rebase -m -f --root c &&
test_cmp_rev ! a HEAD~2 &&
test_linear_range 'a b c' HEAD
fatal: No rebase in progress?
HEAD is now at 8b0b08f c
Rebasing (1/3)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated detached HEAD.
ok 63 - rebase -m -f --root on linear history causes re-write
expecting success of 3421.64 'rebase -i -f --root on linear history causes re-write':
reset_rebase &&
git rebase -i -f --root c &&
test_cmp_rev ! a HEAD~2 &&
test_linear_range 'a b c' HEAD
fatal: No rebase in progress?
HEAD is now at 8b0b08f c
Rebasing (1/3)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated detached HEAD.
ok 64 - rebase -i -f --root on linear history causes re-write
# still have 1 known breakage(s)
# passed all remaining 63 test(s)
1..64
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3431-rebase-fork-point.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3431-rebase-fork-point/.git/
expecting success of 3431.1 'setup':
test_commit A &&
test_commit B &&
test_commit C &&
git branch -t side &&
git reset --hard HEAD^ &&
test_commit D &&
test_commit E &&
git checkout side &&
test_commit F &&
test_commit G
[main (root-commit) 0ddfaf1] A
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 A.t
[main d9df450] B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 B.t
[main 35a8500] C
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 C.t
branch 'side' set up to track 'main'.
HEAD is now at d9df450 B
[main 3e6e33e] D
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 D.t
[main dc25130] E
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 E.t
Switched to branch 'side'
Your branch and 'main' have diverged,
and have 1 and 2 different commits each, respectively.
(use "git pull" if you want to integrate the remote branch with yours)
[side f231f7a] F
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 F.t
[side d8775ba] G
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 G.t
ok 1 - setup
expecting success of 3431.2 'git rebase ': do_test_rebase 'G F E D B A'
Switched to branch 'main'
HEAD is now at dc25130 E
Switched to branch 'side'
Your branch and 'main' have diverged,
and have 3 and 2 different commits each, respectively.
(use "git pull" if you want to integrate the remote branch with yours)
HEAD is now at d8775ba G
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/side.
ok 2 - git rebase
expecting success of 3431.3 'git rebase --onto D': do_test_rebase 'G F D B A' --onto D
Switched to branch 'main'
HEAD is now at dc25130 E
Switched to branch 'side'
Your branch is ahead of 'main' by 2 commits.
(use "git push" to publish your local commits)
HEAD is now at d8775ba G
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/side.
ok 3 - git rebase --onto D
expecting success of 3431.4 'git rebase --keep-base': do_test_rebase 'G F C B A' --keep-base
Switched to branch 'main'
HEAD is now at dc25130 E
Switched to branch 'side'
Your branch and 'main' have diverged,
and have 2 and 1 different commits each, respectively.
(use "git pull" if you want to integrate the remote branch with yours)
HEAD is now at d8775ba G
Current branch side is up to date.
ok 4 - git rebase --keep-base
expecting success of 3431.5 'git rebase --no-fork-point': do_test_rebase 'G F C E D B A' --no-fork-point
Switched to branch 'main'
HEAD is now at dc25130 E
Switched to branch 'side'
Your branch and 'main' have diverged,
and have 3 and 2 different commits each, respectively.
(use "git pull" if you want to integrate the remote branch with yours)
HEAD is now at d8775ba G
Rebasing (1/3)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated refs/heads/side.
ok 5 - git rebase --no-fork-point
expecting success of 3431.6 'git rebase --no-fork-point --onto D': do_test_rebase 'G F C D B A' --no-fork-point --onto D
Switched to branch 'main'
HEAD is now at dc25130 E
Switched to branch 'side'
Your branch is ahead of 'main' by 3 commits.
(use "git push" to publish your local commits)
HEAD is now at d8775ba G
Rebasing (1/3)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated refs/heads/side.
ok 6 - git rebase --no-fork-point --onto D
expecting success of 3431.7 'git rebase --no-fork-point --keep-base': do_test_rebase 'G F C B A' --no-fork-point --keep-base
Switched to branch 'main'
HEAD is now at dc25130 E
Switched to branch 'side'
Your branch and 'main' have diverged,
and have 3 and 1 different commits each, respectively.
(use "git pull" if you want to integrate the remote branch with yours)
HEAD is now at d8775ba G
Current branch side is up to date.
ok 7 - git rebase --no-fork-point --keep-base
expecting success of 3431.8 'git rebase --fork-point refs/heads/main': do_test_rebase 'G F E D B A' --fork-point refs/heads/main
Switched to branch 'main'
HEAD is now at dc25130 E
Switched to branch 'side'
Your branch and 'main' have diverged,
and have 3 and 2 different commits each, respectively.
(use "git pull" if you want to integrate the remote branch with yours)
HEAD is now at d8775ba G
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/side.
ok 8 - git rebase --fork-point refs/heads/main
expecting success of 3431.9 'git rebase --fork-point main': do_test_rebase 'G F E D B A' --fork-point main
Switched to branch 'main'
HEAD is now at dc25130 E
Switched to branch 'side'
Your branch is ahead of 'main' by 2 commits.
(use "git push" to publish your local commits)
HEAD is now at d8775ba G
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/side.
ok 9 - git rebase --fork-point main
expecting success of 3431.10 'git rebase --fork-point --onto D refs/heads/main': do_test_rebase 'G F D B A' --fork-point --onto D refs/heads/main
Switched to branch 'main'
HEAD is now at dc25130 E
Switched to branch 'side'
Your branch is ahead of 'main' by 2 commits.
(use "git push" to publish your local commits)
HEAD is now at d8775ba G
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/side.
ok 10 - git rebase --fork-point --onto D refs/heads/main
expecting success of 3431.11 'git rebase --fork-point --onto D main': do_test_rebase 'G F D B A' --fork-point --onto D main
Switched to branch 'main'
HEAD is now at dc25130 E
Switched to branch 'side'
Your branch and 'main' have diverged,
and have 2 and 1 different commits each, respectively.
(use "git pull" if you want to integrate the remote branch with yours)
HEAD is now at d8775ba G
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/side.
ok 11 - git rebase --fork-point --onto D main
expecting success of 3431.12 'git rebase --fork-point --keep-base refs/heads/main': do_test_rebase 'G F B A' --fork-point --keep-base refs/heads/main
Switched to branch 'main'
HEAD is now at dc25130 E
Switched to branch 'side'
Your branch and 'main' have diverged,
and have 2 and 1 different commits each, respectively.
(use "git pull" if you want to integrate the remote branch with yours)
HEAD is now at d8775ba G
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/side.
ok 12 - git rebase --fork-point --keep-base refs/heads/main
expecting success of 3431.13 'git rebase --fork-point --keep-base main': do_test_rebase 'G F B A' --fork-point --keep-base main
Switched to branch 'main'
HEAD is now at dc25130 E
Switched to branch 'side'
Your branch and 'main' have diverged,
and have 2 and 2 different commits each, respectively.
(use "git pull" if you want to integrate the remote branch with yours)
HEAD is now at d8775ba G
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/side.
ok 13 - git rebase --fork-point --keep-base main
expecting success of 3431.14 'git rebase refs/heads/main': do_test_rebase 'G F C E D B A' refs/heads/main
Switched to branch 'main'
HEAD is now at dc25130 E
Switched to branch 'side'
Your branch and 'main' have diverged,
and have 2 and 2 different commits each, respectively.
(use "git pull" if you want to integrate the remote branch with yours)
HEAD is now at d8775ba G
Rebasing (1/3)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated refs/heads/side.
ok 14 - git rebase refs/heads/main
expecting success of 3431.15 'git rebase main': do_test_rebase 'G F C E D B A' main
Switched to branch 'main'
HEAD is now at dc25130 E
Switched to branch 'side'
Your branch is ahead of 'main' by 3 commits.
(use "git push" to publish your local commits)
HEAD is now at d8775ba G
Rebasing (1/3)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated refs/heads/side.
ok 15 - git rebase main
expecting success of 3431.16 'git rebase --onto D refs/heads/main': do_test_rebase 'G F C D B A' --onto D refs/heads/main
Switched to branch 'main'
HEAD is now at dc25130 E
Switched to branch 'side'
Your branch is ahead of 'main' by 3 commits.
(use "git push" to publish your local commits)
HEAD is now at d8775ba G
Rebasing (1/3)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated refs/heads/side.
ok 16 - git rebase --onto D refs/heads/main
expecting success of 3431.17 'git rebase --onto D main': do_test_rebase 'G F C D B A' --onto D main
Switched to branch 'main'
HEAD is now at dc25130 E
Switched to branch 'side'
Your branch and 'main' have diverged,
and have 3 and 1 different commits each, respectively.
(use "git pull" if you want to integrate the remote branch with yours)
HEAD is now at d8775ba G
Rebasing (1/3)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated refs/heads/side.
ok 17 - git rebase --onto D main
expecting success of 3431.18 'git rebase --keep-base refs/heads/main': do_test_rebase 'G F C B A' --keep-base refs/heads/main
Switched to branch 'main'
HEAD is now at dc25130 E
Switched to branch 'side'
Your branch and 'main' have diverged,
and have 3 and 1 different commits each, respectively.
(use "git pull" if you want to integrate the remote branch with yours)
HEAD is now at d8775ba G
Current branch side is up to date.
ok 18 - git rebase --keep-base refs/heads/main
expecting success of 3431.19 'git rebase --keep-base main': do_test_rebase 'G F C B A' --keep-base main
Switched to branch 'main'
HEAD is now at dc25130 E
Switched to branch 'side'
Your branch and 'main' have diverged,
and have 3 and 2 different commits each, respectively.
(use "git pull" if you want to integrate the remote branch with yours)
HEAD is now at d8775ba G
Current branch side is up to date.
ok 19 - git rebase --keep-base main
expecting success of 3431.20 'git rebase --fork-point with ambigous refname':
git checkout main &&
git checkout -b one &&
git checkout side &&
git tag one &&
test_must_fail git rebase --fork-point --onto D one
Switched to branch 'main'
Switched to a new branch 'one'
Switched to branch 'side'
Your branch and 'main' have diverged,
and have 3 and 2 different commits each, respectively.
(use "git pull" if you want to integrate the remote branch with yours)
warning: refname 'one' is ambiguous.
fatal: Ambiguous refname: 'one'
ok 20 - git rebase --fork-point with ambigous refname
expecting success of 3431.21 '--fork-point and --root both given':
test_must_fail git rebase --fork-point --root 2>err &&
test_i18ngrep "cannot be used together" err
fatal: options '--root' and '--fork-point' cannot be used together
ok 21 - --fork-point and --root both given
expecting success of 3431.22 'rebase.forkPoint set to false':
test_config rebase.forkPoint false &&
do_test_rebase "G F C E D B A"
Switched to branch 'main'
HEAD is now at dc25130 E
Switched to branch 'side'
Your branch and 'main' have diverged,
and have 3 and 2 different commits each, respectively.
(use "git pull" if you want to integrate the remote branch with yours)
HEAD is now at d8775ba G
Rebasing (1/3)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated refs/heads/side.
ok 22 - rebase.forkPoint set to false
expecting success of 3431.23 'rebase.forkPoint set to false and then to true':
test_config_global rebase.forkPoint false &&
test_config rebase.forkPoint true &&
do_test_rebase "G F E D B A"
Switched to branch 'main'
HEAD is now at dc25130 E
Switched to branch 'side'
Your branch is ahead of 'main' by 3 commits.
(use "git push" to publish your local commits)
HEAD is now at d8775ba G
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/side.
ok 23 - rebase.forkPoint set to false and then to true
expecting success of 3431.24 'rebase.forkPoint set to false and command line says --fork-point':
test_config rebase.forkPoint false &&
do_test_rebase "G F E D B A" --fork-point
Switched to branch 'main'
HEAD is now at dc25130 E
Switched to branch 'side'
Your branch is ahead of 'main' by 2 commits.
(use "git push" to publish your local commits)
HEAD is now at d8775ba G
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/side.
ok 24 - rebase.forkPoint set to false and command line says --fork-point
expecting success of 3431.25 'rebase.forkPoint set to true and command line says --no-fork-point':
test_config rebase.forkPoint true &&
do_test_rebase "G F C E D B A" --no-fork-point
Switched to branch 'main'
HEAD is now at dc25130 E
Switched to branch 'side'
Your branch is ahead of 'main' by 2 commits.
(use "git push" to publish your local commits)
HEAD is now at d8775ba G
Rebasing (1/3)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated refs/heads/side.
ok 25 - rebase.forkPoint set to true and command line says --no-fork-point
expecting success of 3431.26 'rebase.forkPoint set to true and --root given':
test_config rebase.forkPoint true &&
git rebase --root
Rebasing (1/7)
Rebasing (2/7)
Rebasing (3/7)
Rebasing (4/7)
Rebasing (5/7)
Rebasing (6/7)
Rebasing (7/7)
Successfully rebased and updated refs/heads/side.
ok 26 - rebase.forkPoint set to true and --root given
# passed all 26 test(s)
1..26
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3430-rebase-merges.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3430-rebase-merges/.git/
expecting success of 3430.1 'setup':
write_script replace-editor.sh <<-\EOF &&
mv "$1" "$(git rev-parse --git-path ORIGINAL-TODO)"
cp script-from-scratch "$1"
EOF
test_commit A &&
git checkout -b first &&
test_commit B &&
b=$(git rev-parse --short HEAD) &&
git checkout main &&
test_commit C &&
c=$(git rev-parse --short HEAD) &&
test_commit D &&
d=$(git rev-parse --short HEAD) &&
git merge --no-commit B &&
test_tick &&
git commit -m E &&
git tag -m E E &&
e=$(git rev-parse --short HEAD) &&
git checkout -b second C &&
test_commit F &&
f=$(git rev-parse --short HEAD) &&
test_commit G &&
g=$(git rev-parse --short HEAD) &&
git checkout main &&
git merge --no-commit G &&
test_tick &&
git commit -m H &&
h=$(git rev-parse --short HEAD) &&
git tag -m H H &&
git checkout A &&
test_commit conflicting-G G.t
[main (root-commit) 0ddfaf1] A
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 A.t
Switched to a new branch 'first'
[first d9df450] B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 B.t
Switched to branch 'main'
[main 5dee784] C
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 C.t
[main 12bd07b] D
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 D.t
Automatic merge went well; stopped before committing as requested
[main 2051b56] E
Author: A U Thor <author@example.com>
Switched to a new branch 'second'
[second ca2c861] F
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 F.t
[second 088b00a] G
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 G.t
Switched to branch 'main'
Automatic merge went well; stopped before committing as requested
[main 233d48a] H
Author: A U Thor <author@example.com>
Note: switching to 'A'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 0ddfaf1 A
[detached HEAD 82776a5] conflicting-G
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 G.t
ok 1 - setup
expecting success of 3430.2 'create completely different structure':
cat >script-from-scratch <<-\EOF &&
label onto
# onebranch
pick G
pick D
label onebranch
# second
reset onto
pick B
label second
reset onto
merge -C H second
merge onebranch # Merge the topic branch 'onebranch'
EOF
test_config sequence.editor \""$PWD"/replace-editor.sh\" &&
test_tick &&
git rebase -i -r A main &&
test_cmp_graph <<-\EOF
* Merge the topic branch 'onebranch'
|\
| * D
| * G
* | H
|\ \
| |/
|/|
| * B
|/
* A
EOF
Rebasing (1/10)
Rebasing (2/10)
Rebasing (3/10)
Rebasing (4/10)
Rebasing (5/10)
Rebasing (6/10)
Rebasing (7/10)
Rebasing (8/10)
Rebasing (9/10)
Rebasing (10/10)
[detached HEAD c2c3fe3] Merge the topic branch 'onebranch'
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:22:13 2005 -0700
Successfully rebased and updated refs/heads/main.
ok 2 - create completely different structure
expecting success of 3430.3 'generate correct todo list':
cat >expect <<-EOF &&
label onto
reset onto
pick $b B
label E
reset onto
pick $c C
label branch-point
pick $f F
pick $g G
label H
reset branch-point # C
pick $d D
merge -C $e E # E
merge -C $h H # H
EOF
grep -v "^#" <.git/ORIGINAL-TODO >output &&
test_cmp expect output
ok 3 - generate correct todo list
expecting success of 3430.4 '`reset` refuses to overwrite untracked files':
git checkout -b refuse-to-reset &&
test_commit dont-overwrite-untracked &&
git checkout @{-1} &&
: >dont-overwrite-untracked.t &&
echo "reset refs/tags/dont-overwrite-untracked" >script-from-scratch &&
test_config sequence.editor \""$PWD"/replace-editor.sh\" &&
test_must_fail git rebase -ir HEAD &&
git rebase --abort
Switched to a new branch 'refuse-to-reset'
[refuse-to-reset 5f910bb] dont-overwrite-untracked
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 dont-overwrite-untracked.t
Switched to branch 'main'
Rebasing (1/1)
error: The following untracked working tree files would be overwritten by reset:
dont-overwrite-untracked.t
Please move or remove them before you reset.
Aborting
hint: Could not execute the todo command
hint:
hint: reset refs/tags/dont-overwrite-untracked
hint:
hint: It has been rescheduled; To edit the command before continuing, please
hint: edit the todo list first:
hint:
hint: git rebase --edit-todo
hint: git rebase --continue
ok 4 - `reset` refuses to overwrite untracked files
expecting success of 3430.5 '`reset` rejects trees':
test_when_finished "test_might_fail git rebase --abort" &&
test_must_fail env GIT_SEQUENCE_EDITOR="echo reset A^{tree} >" \
git rebase -i B C >out 2>err &&
grep "object .* is a tree" err &&
test_must_be_empty out
Rebasing (1/1)
error: object da5497437fd67ca928333aab79c4b4b55036ea66 is a tree, not a commit
ok 5 - `reset` rejects trees
expecting success of 3430.6 '`reset` only looks for labels under refs/rewritten/':
test_when_finished "test_might_fail git rebase --abort" &&
git branch refs/rewritten/my-label A &&
test_must_fail env GIT_SEQUENCE_EDITOR="echo reset my-label >" \
git rebase -i B C >out 2>err &&
grep "could not resolve ${SQ}my-label${SQ}" err &&
test_must_be_empty out
Rebasing (1/1)
error: could not resolve 'my-label'
ok 6 - `reset` only looks for labels under refs/rewritten/
expecting success of 3430.7 'failed `merge -C` writes patch (may be rescheduled, too)':
test_when_finished "test_might_fail git rebase --abort" &&
git checkout -b conflicting-merge A &&
: fail because of conflicting untracked file &&
>G.t &&
echo "merge -C H G" >script-from-scratch &&
test_config sequence.editor \""$PWD"/replace-editor.sh\" &&
test_tick &&
test_must_fail git rebase -ir HEAD &&
grep "^merge -C .* G$" .git/rebase-merge/done &&
grep "^merge -C .* G$" .git/rebase-merge/git-rebase-todo &&
test_path_is_file .git/rebase-merge/patch &&
: fail because of merge conflict &&
rm G.t .git/rebase-merge/patch &&
git reset --hard conflicting-G &&
test_must_fail git rebase --continue &&
! grep "^merge -C .* G$" .git/rebase-merge/git-rebase-todo &&
test_path_is_file .git/rebase-merge/patch
Previous HEAD position was 5dee784 C
Switched to a new branch 'conflicting-merge'
Rebasing (1/1)
error: The following untracked working tree files would be overwritten by merge:
G.t
Please move or remove them before you merge.
Aborting
error: could not even attempt to merge 'G'
hint: Could not execute the todo command
hint:
hint: merge -C 233d48a5caa0e14494fac2553a0b1179ff65b118 G
hint:
hint: It has been rescheduled; To edit the command before continuing, please
hint: edit the todo list first:
hint:
hint: git rebase --edit-todo
hint: git rebase --continue
Could not apply 233d48a... G
merge -C 233d48a5caa0e14494fac2553a0b1179ff65b118 G
merge -C 233d48a5caa0e14494fac2553a0b1179ff65b118 G
HEAD is now at 82776a5 conflicting-G
Rebasing (2/2)
Auto-merging G.t
CONFLICT (add/add): Merge conflict in G.t
Could not apply 233d48a... G
ok 7 - failed `merge -C` writes patch (may be rescheduled, too)
expecting success of 3430.8 'failed `merge <branch>` does not crash':
test_when_finished "test_might_fail git rebase --abort" &&
git checkout conflicting-G &&
echo "merge G" >script-from-scratch &&
test_config sequence.editor \""$PWD"/replace-editor.sh\" &&
test_tick &&
test_must_fail git rebase -ir HEAD &&
! grep "^merge G$" .git/rebase-merge/git-rebase-todo &&
grep "^Merge branch ${SQ}G${SQ}$" .git/rebase-merge/message
Note: switching to 'conflicting-G'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 82776a5 conflicting-G
Rebasing (1/1)
Auto-merging G.t
CONFLICT (add/add): Merge conflict in G.t
Could not merge G
Merge branch 'G'
ok 8 - failed `merge <branch>` does not crash
expecting success of 3430.9 'merge -c commits before rewording and reloads todo-list':
cat >script-from-scratch <<-\EOF &&
merge -c E B
merge -c H G
EOF
git checkout -b merge-c H &&
(
set_reword_editor &&
GIT_SEQUENCE_EDITOR="\"$PWD/replace-editor.sh\"" \
git rebase -i -r D
) &&
check_reworded_commits E H
Previous HEAD position was 82776a5 conflicting-G
Switched to a new branch 'merge-c'
Rebasing (1/2)
[detached HEAD 3d66115] E
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:17:13 2005 -0700
Rebasing (2/3)
Executing: git log -1 --pretty=format:'%an <%ae> %at%n%B%n' >>reword-actual
Rebasing (3/3)
[detached HEAD 790085d] H
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:20:13 2005 -0700
Rebasing (4/4)
Executing: git log -1 --pretty=format:'%an <%ae> %at%n%B%n' >>reword-actual
Successfully rebased and updated refs/heads/merge-c.
ok 9 - merge -c commits before rewording and reloads todo-list
expecting success of 3430.10 'merge -c rewords when a strategy is given':
git checkout -b merge-c-with-strategy H &&
write_script git-merge-override <<-\EOF &&
echo overridden$1 >G.t
git add G.t
EOF
PATH="$PWD:$PATH" \
GIT_SEQUENCE_EDITOR="echo merge -c H G >" \
GIT_EDITOR="echo edited >>" \
git rebase --no-ff -ir -s override -Xxopt E &&
test_write_lines overridden--xopt >expect &&
test_cmp expect G.t &&
test_write_lines H "" edited "" >expect &&
git log --format=%B -1 >actual &&
test_cmp expect actual
Switched to a new branch 'merge-c-with-strategy'
Rebasing (1/1)
Merge made by the 'override' strategy.
Successfully rebased and updated refs/heads/merge-c-with-strategy.
ok 10 - merge -c rewords when a strategy is given
expecting success of 3430.11 'with a branch tip that was cherry-picked already':
git checkout -b already-upstream main &&
base="$(git rev-parse --verify HEAD)" &&
test_commit A1 &&
test_commit A2 &&
git reset --hard $base &&
test_commit B1 &&
test_tick &&
git merge -m "Merge branch A" A2 &&
git checkout -b upstream-with-a2 $base &&
test_tick &&
git cherry-pick A2 &&
git checkout already-upstream &&
test_tick &&
git rebase -i -r upstream-with-a2 &&
test_cmp_graph upstream-with-a2.. <<-\EOF
* Merge branch A
|\
| * A1
* | B1
|/
o A2
EOF
Switched to a new branch 'already-upstream'
[already-upstream cac3b13] A1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 A1.t
[already-upstream 0466126] A2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 A2.t
HEAD is now at c2c3fe3 Merge the topic branch 'onebranch'
[already-upstream fa07690] B1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 B1.t
Merge made by the 'ort' strategy.
A1.t | 1 +
A2.t | 1 +
2 files changed, 2 insertions(+)
create mode 100644 A1.t
create mode 100644 A2.t
Switched to a new branch 'upstream-with-a2'
[upstream-with-a2 071ab27] A2
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:27:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 A2.t
Switched to branch 'already-upstream'
warning: skipped previously applied commit 0466126
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Rebasing (1/7)
Rebasing (2/7)
Rebasing (3/7)
Rebasing (4/7)
Rebasing (5/7)
Rebasing (6/7)
Rebasing (7/7)
Successfully rebased and updated refs/heads/already-upstream.
ok 11 - with a branch tip that was cherry-picked already
expecting success of 3430.12 '--no-rebase-merges countermands --rebase-merges':
git checkout -b no-rebase-merges E &&
git rebase --rebase-merges --no-rebase-merges C &&
test_cmp_graph C.. <<-\EOF
* B
* D
o C
EOF
Switched to a new branch 'no-rebase-merges'
Rebasing (2/2)
Successfully rebased and updated refs/heads/no-rebase-merges.
ok 12 - --no-rebase-merges countermands --rebase-merges
expecting success of 3430.13 'do not rebase cousins unless asked for':
git checkout -b cousins main &&
before="$(git rev-parse --verify HEAD)" &&
test_tick &&
git rebase -r HEAD^ &&
test_cmp_rev HEAD $before &&
test_tick &&
git rebase --rebase-merges=rebase-cousins HEAD^ &&
test_cmp_graph HEAD^.. <<-\EOF
* Merge the topic branch 'onebranch'
|\
| * D
| * G
|/
o H
EOF
Switched to a new branch 'cousins'
Rebasing (1/7)
Rebasing (2/7)
Rebasing (3/7)
Rebasing (4/7)
Rebasing (5/7)
Rebasing (6/7)
Rebasing (7/7)
Successfully rebased and updated refs/heads/cousins.
Rebasing (1/7)
Rebasing (2/7)
Rebasing (3/7)
Rebasing (4/7)
Rebasing (5/7)
Rebasing (6/7)
Rebasing (7/7)
Successfully rebased and updated refs/heads/cousins.
ok 13 - do not rebase cousins unless asked for
expecting success of 3430.14 'rebase.rebaseMerges=rebase-cousins is equivalent to --rebase-merges=rebase-cousins':
test_config rebase.rebaseMerges rebase-cousins &&
git checkout -b config-rebase-cousins main &&
git rebase HEAD^ &&
test_cmp_graph HEAD^.. <<-\EOF
* Merge the topic branch 'onebranch'
|\
| * D
| * G
|/
o H
EOF
Switched to a new branch 'config-rebase-cousins'
Rebasing (1/7)
Rebasing (2/7)
Rebasing (3/7)
Rebasing (4/7)
Rebasing (5/7)
Rebasing (6/7)
Rebasing (7/7)
Successfully rebased and updated refs/heads/config-rebase-cousins.
ok 14 - rebase.rebaseMerges=rebase-cousins is equivalent to --rebase-merges=rebase-cousins
expecting success of 3430.15 '--no-rebase-merges overrides rebase.rebaseMerges=no-rebase-cousins':
test_config rebase.rebaseMerges no-rebase-cousins &&
git checkout -b override-config-no-rebase-cousins E &&
git rebase --no-rebase-merges C &&
test_cmp_graph C.. <<-\EOF
* B
* D
o C
EOF
Switched to a new branch 'override-config-no-rebase-cousins'
Rebasing (2/2)
Successfully rebased and updated refs/heads/override-config-no-rebase-cousins.
ok 15 - --no-rebase-merges overrides rebase.rebaseMerges=no-rebase-cousins
expecting success of 3430.16 '--rebase-merges overrides rebase.rebaseMerges=rebase-cousins':
test_config rebase.rebaseMerges rebase-cousins &&
git checkout -b override-config-rebase-cousins E &&
before="$(git rev-parse --verify HEAD)" &&
test_tick &&
git rebase --rebase-merges C &&
test_cmp_rev HEAD $before
Switched to a new branch 'override-config-rebase-cousins'
Rebasing (1/7)
Rebasing (2/7)
Rebasing (3/7)
Rebasing (4/7)
Rebasing (5/7)
Rebasing (6/7)
Rebasing (7/7)
Successfully rebased and updated refs/heads/override-config-rebase-cousins.
ok 16 - --rebase-merges overrides rebase.rebaseMerges=rebase-cousins
expecting success of 3430.17 'refs/rewritten/* is worktree-local':
git worktree add wt &&
cat >wt/script-from-scratch <<-\EOF &&
label xyz
exec GIT_DIR=../.git git rev-parse --verify refs/rewritten/xyz >a || :
exec git rev-parse --verify refs/rewritten/xyz >b
EOF
test_config -C wt sequence.editor \""$PWD"/replace-editor.sh\" &&
git -C wt rebase -i HEAD &&
test_must_be_empty wt/a &&
test_cmp_rev HEAD "$(cat wt/b)"
Preparing worktree (new branch 'wt')
HEAD is now at 2051b56 E
Rebasing (1/3)
Rebasing (2/3)
Executing: GIT_DIR=../.git git rev-parse --verify refs/rewritten/xyz >a || :
fatal: Needed a single revision
Rebasing (3/3)
Executing: git rev-parse --verify refs/rewritten/xyz >b
Successfully rebased and updated refs/heads/wt.
ok 17 - refs/rewritten/* is worktree-local
expecting success of 3430.18 '--abort cleans up refs/rewritten':
git checkout -b abort-cleans-refs-rewritten H &&
GIT_SEQUENCE_EDITOR="echo break >>" git rebase -ir @^ &&
git rev-parse --verify refs/rewritten/onto &&
git rebase --abort &&
test_must_fail git rev-parse --verify refs/rewritten/onto
Switched to a new branch 'abort-cleans-refs-rewritten'
Rebasing (1/8)
Rebasing (2/8)
Rebasing (3/8)
Rebasing (4/8)
Rebasing (5/8)
Rebasing (6/8)
Rebasing (7/8)
Rebasing (8/8)
Stopped at 233d48a (H)
2051b561a3f30f5455d33a5269d3851790a86f42
fatal: Needed a single revision
ok 18 - --abort cleans up refs/rewritten
expecting success of 3430.19 '--quit cleans up refs/rewritten':
git checkout -b quit-cleans-refs-rewritten H &&
GIT_SEQUENCE_EDITOR="echo break >>" git rebase -ir @^ &&
git rev-parse --verify refs/rewritten/onto &&
git rebase --quit &&
test_must_fail git rev-parse --verify refs/rewritten/onto
Switched to a new branch 'quit-cleans-refs-rewritten'
Rebasing (1/8)
Rebasing (2/8)
Rebasing (3/8)
Rebasing (4/8)
Rebasing (5/8)
Rebasing (6/8)
Rebasing (7/8)
Rebasing (8/8)
Stopped at 233d48a (H)
2051b561a3f30f5455d33a5269d3851790a86f42
fatal: Needed a single revision
ok 19 - --quit cleans up refs/rewritten
expecting success of 3430.20 'post-rewrite hook and fixups work for merges':
git checkout -b post-rewrite H &&
test_commit same1 &&
git reset --hard HEAD^ &&
test_commit same2 &&
git merge -m "to fix up" same1 &&
echo same old same old >same2.t &&
test_tick &&
git commit --fixup HEAD same2.t &&
fixup="$(git rev-parse HEAD)" &&
test_hook post-rewrite <<-\EOF &&
cat >actual
EOF
test_tick &&
git rebase -i --autosquash -r HEAD^^^ &&
printf "%s %s\n%s %s\n%s %s\n%s %s\n" >expect $(git rev-parse \
$fixup^^2 HEAD^2 \
$fixup^^ HEAD^ \
$fixup^ HEAD \
$fixup HEAD) &&
test_cmp expect actual
Switched to a new branch 'post-rewrite'
[post-rewrite 7b22597] same1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 same1.t
HEAD is now at 233d48a H
[post-rewrite 60bad05] same2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 same2.t
Merge made by the 'ort' strategy.
same1.t | 1 +
1 file changed, 1 insertion(+)
create mode 100644 same1.t
[post-rewrite 621ea5d] fixup! to fix up
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Rebasing (1/8)
Rebasing (2/8)
Rebasing (3/8)
Rebasing (4/8)
Rebasing (5/8)
Rebasing (6/8)
Rebasing (7/8)
Rebasing (8/8)
Successfully rebased and updated refs/heads/post-rewrite.
ok 20 - post-rewrite hook and fixups work for merges
expecting success of 3430.21 'refuse to merge ancestors of HEAD':
echo "merge HEAD^" >script-from-scratch &&
test_config -C wt sequence.editor \""$PWD"/replace-editor.sh\" &&
before="$(git rev-parse HEAD)" &&
git rebase -i HEAD &&
test_cmp_rev HEAD $before
Rebasing (1/1)
Successfully rebased and updated refs/heads/post-rewrite.
ok 21 - refuse to merge ancestors of HEAD
expecting success of 3430.22 'root commits':
git checkout --orphan unrelated &&
(GIT_AUTHOR_NAME="Parsnip" GIT_AUTHOR_EMAIL="root@example.com" \
test_commit second-root) &&
test_commit third-root &&
cat >script-from-scratch <<-\EOF &&
pick third-root
label first-branch
reset [new root]
pick second-root
merge first-branch # Merge the 3rd root
EOF
test_config sequence.editor \""$PWD"/replace-editor.sh\" &&
test_tick &&
git rebase -i --force-rebase --root -r &&
test "Parsnip" = "$(git show -s --format=%an HEAD^)" &&
test $(git rev-parse second-root^0) != $(git rev-parse HEAD^) &&
test $(git rev-parse second-root:second-root.t) = \
$(git rev-parse HEAD^:second-root.t) &&
test_cmp_graph HEAD <<-\EOF &&
* Merge the 3rd root
|\
| * third-root
* second-root
EOF
: fast forward if possible &&
before="$(git rev-parse --verify HEAD)" &&
test_might_fail git config --unset sequence.editor &&
test_tick &&
git rebase -i --root -r &&
test_cmp_rev HEAD $before
Switched to a new branch 'unrelated'
[unrelated (root-commit) b54e30e] second-root
Author: Parsnip <root@example.com>
9 files changed, 9 insertions(+)
create mode 100644 A.t
create mode 100644 B.t
create mode 100644 C.t
create mode 100644 D.t
create mode 100644 F.t
create mode 100644 G.t
create mode 100644 same1.t
create mode 100644 same2.t
create mode 100644 second-root.t
[unrelated f19511e] third-root
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 third-root.t
Rebasing (1/5)
Rebasing (2/5)
Rebasing (3/5)
Rebasing (4/5)
Rebasing (5/5)
[detached HEAD a2629fa] Merge the 3rd root
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:40:13 2005 -0700
Successfully rebased and updated refs/heads/unrelated.
Rebasing (1/7)
Rebasing (2/7)
Rebasing (3/7)
Rebasing (4/7)
Rebasing (5/7)
Rebasing (6/7)
Rebasing (7/7)
Successfully rebased and updated refs/heads/unrelated.
ok 22 - root commits
expecting success of 3430.23 'a "merge" into a root commit is a fast-forward':
head=$(git rev-parse HEAD) &&
cat >script-from-scratch <<-EOF &&
reset [new root]
merge $head
EOF
test_config sequence.editor \""$PWD"/replace-editor.sh\" &&
test_tick &&
git rebase -i -r HEAD^ &&
test_cmp_rev HEAD $head
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/unrelated.
ok 23 - a "merge" into a root commit is a fast-forward
expecting success of 3430.24 'A root commit can be a cousin, treat it that way':
git checkout --orphan khnum &&
test_commit yama &&
git checkout -b asherah main &&
test_commit shamkat &&
git merge --allow-unrelated-histories khnum &&
test_tick &&
git rebase -f -r HEAD^ &&
test_cmp_rev ! HEAD^2 khnum &&
test_cmp_graph HEAD^.. <<-\EOF &&
* Merge branch 'khnum' into asherah
|\
| * yama
o shamkat
EOF
test_tick &&
git rebase --rebase-merges=rebase-cousins HEAD^ &&
test_cmp_graph HEAD^.. <<-\EOF
* Merge branch 'khnum' into asherah
|\
| * yama
|/
o shamkat
EOF
Switched to a new branch 'khnum'
[khnum (root-commit) e607b56] yama
Author: A U Thor <author@example.com>
11 files changed, 11 insertions(+)
create mode 100644 A.t
create mode 100644 B.t
create mode 100644 C.t
create mode 100644 D.t
create mode 100644 F.t
create mode 100644 G.t
create mode 100644 same1.t
create mode 100644 same2.t
create mode 100644 second-root.t
create mode 100644 third-root.t
create mode 100644 yama.t
Switched to a new branch 'asherah'
[asherah 373c75d] shamkat
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 shamkat.t
Merge made by the 'ort' strategy.
C.t | 1 +
F.t | 1 +
same1.t | 1 +
same2.t | 1 +
second-root.t | 1 +
third-root.t | 1 +
yama.t | 1 +
7 files changed, 7 insertions(+)
create mode 100644 C.t
create mode 100644 F.t
create mode 100644 same1.t
create mode 100644 same2.t
create mode 100644 second-root.t
create mode 100644 third-root.t
create mode 100644 yama.t
Rebasing (1/6)
Rebasing (2/6)
Rebasing (3/6)
Rebasing (4/6)
Rebasing (5/6)
Rebasing (6/6)
Successfully rebased and updated refs/heads/asherah.
Rebasing (1/6)
Rebasing (2/6)
Rebasing (3/6)
Rebasing (4/6)
Rebasing (5/6)
Rebasing (6/6)
Successfully rebased and updated refs/heads/asherah.
ok 24 - A root commit can be a cousin, treat it that way
expecting success of 3430.25 'labels that are object IDs are rewritten':
git checkout -b third B &&
test_commit I &&
third=$(git rev-parse HEAD) &&
git checkout -b labels main &&
git merge --no-commit third &&
test_tick &&
git commit -m "Merge commit '$third' into labels" &&
echo noop >script-from-scratch &&
test_config sequence.editor \""$PWD"/replace-editor.sh\" &&
test_tick &&
git rebase -i -r A &&
grep "^label $third-" .git/ORIGINAL-TODO &&
! grep "^label $third$" .git/ORIGINAL-TODO
Switched to a new branch 'third'
[third 7c47b26] I
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 I.t
Switched to a new branch 'labels'
Automatic merge went well; stopped before committing as requested
[labels 417d0e6] Merge commit '7c47b267dedd9167bf6f82b866cdb3c0c616cf63' into labels
Author: A U Thor <author@example.com>
Successfully rebased and updated refs/heads/labels.
label 7c47b267dedd9167bf6f82b866cdb3c0c616cf63-2
ok 25 - labels that are object IDs are rewritten
expecting success of 3430.26 'octopus merges':
git checkout -b three &&
test_commit before-octopus &&
test_commit three &&
git checkout -b two HEAD^ &&
test_commit two &&
git checkout -b one HEAD^ &&
test_commit one &&
test_tick &&
(GIT_AUTHOR_NAME="Hank" GIT_AUTHOR_EMAIL="hank@sea.world" \
git merge -m "Tüntenfüsch" two three) &&
: fast forward if possible &&
before="$(git rev-parse --verify HEAD)" &&
test_tick &&
git rebase -i -r HEAD^^ &&
test_cmp_rev HEAD $before &&
test_tick &&
git rebase -i --force-rebase -r HEAD^^ &&
test "Hank" = "$(git show -s --format=%an HEAD)" &&
test "$before" != $(git rev-parse HEAD) &&
test_cmp_graph HEAD^^.. <<-\EOF
*-. Tüntenfüsch
|\ \
| | * three
| * | two
| |/
* / one
|/
o before-octopus
EOF
Switched to a new branch 'three'
[three 1ad7714] before-octopus
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 before-octopus.t
[three 71d08b6] three
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 three.t
Switched to a new branch 'two'
[two 71be617] two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 two.t
Switched to a new branch 'one'
[one feed705] one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 one.t
warning: refname 'two' is ambiguous.
warning: refname 'three' is ambiguous.
Trying simple merge with two
Trying simple merge with three
Merge made by the 'octopus' strategy.
three.t | 1 +
two.t | 1 +
2 files changed, 2 insertions(+)
create mode 100644 three.t
create mode 100644 two.t
Rebasing (1/10)
Rebasing (2/10)
Rebasing (3/10)
Rebasing (4/10)
Rebasing (5/10)
Rebasing (6/10)
Rebasing (7/10)
Rebasing (8/10)
Rebasing (9/10)
Rebasing (10/10)
Successfully rebased and updated refs/heads/one.
Rebasing (1/10)
Rebasing (2/10)
Rebasing (3/10)
Rebasing (4/10)
Rebasing (5/10)
Rebasing (6/10)
Rebasing (7/10)
Rebasing (8/10)
Rebasing (9/10)
Rebasing (10/10)
Trying simple merge with c2f662c506dd68b3c6d1768bf722453638ad16a9
Trying simple merge with b41d3cf4ea54b48a1166ddf99a8bbca32f1faa00
Merge made by the 'octopus' strategy.
Successfully rebased and updated refs/heads/one.
ok 26 - octopus merges
expecting success of 3430.27 'with --autosquash and --exec':
git checkout -b with-exec H &&
echo Booh >B.t &&
test_tick &&
git commit --fixup B B.t &&
write_script show.sh <<-\EOF &&
subject="$(git show -s --format=%s HEAD)"
content="$(git diff HEAD^ HEAD | tail -n 1)"
echo "$subject: $content"
EOF
test_tick &&
git rebase -ir --autosquash --exec ./show.sh A >actual &&
grep "B: +Booh" actual &&
grep "E: +Booh" actual &&
grep "G: +G" actual
Switched to a new branch 'with-exec'
[with-exec 6889979] fixup! B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Rebasing (1/22)
Rebasing (2/22)
Rebasing (3/22)
Rebasing (4/22)
Rebasing (5/22)
Executing: ./show.sh
Rebasing (6/22)
Rebasing (7/22)
Rebasing (8/22)
Rebasing (9/22)
Executing: ./show.sh
Rebasing (10/22)
Rebasing (11/22)
Rebasing (12/22)
Executing: ./show.sh
Rebasing (13/22)
Rebasing (14/22)
Executing: ./show.sh
Rebasing (15/22)
Rebasing (16/22)
Rebasing (17/22)
Rebasing (18/22)
Executing: ./show.sh
Rebasing (19/22)
Rebasing (20/22)
Executing: ./show.sh
Rebasing (21/22)
Rebasing (22/22)
Executing: ./show.sh
Successfully rebased and updated refs/heads/with-exec.
B: +Booh
E: +Booh
G: +G
ok 27 - with --autosquash and --exec
expecting success of 3430.28 '--continue after resolving conflicts after a merge':
git checkout -b already-has-g E &&
git cherry-pick E..G &&
test_commit H2 &&
git checkout -b conflicts-in-merge H &&
test_commit H2 H2.t conflicts H2-conflict &&
test_must_fail git rebase -r already-has-g &&
grep conflicts H2.t &&
echo resolved >H2.t &&
git add -u &&
git rebase --continue &&
test_must_fail git rev-parse --verify HEAD^2 &&
test_path_is_missing .git/MERGE_HEAD
Switched to a new branch 'already-has-g'
[already-has-g aaabeae] F
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:18:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 F.t
[already-has-g b3ecfaf] G
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:19:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 G.t
[already-has-g e6b3e17] H2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 H2.t
Switched to a new branch 'conflicts-in-merge'
[conflicts-in-merge 7a5ff2f] H2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 H2.t
warning: skipped previously applied commit ca2c861
warning: skipped previously applied commit 088b00a
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Rebasing (1/6)
Rebasing (2/6)
Rebasing (3/6)
Rebasing (4/6)
Rebasing (5/6)
Rebasing (6/6)
Auto-merging H2.t
CONFLICT (add/add): Merge conflict in H2.t
error: could not apply 7a5ff2f... H2
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 7a5ff2f... H2
conflicts
[detached HEAD 05e3a9c] H2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Successfully rebased and updated refs/heads/conflicts-in-merge.
fatal: Needed a single revision
ok 28 - --continue after resolving conflicts after a merge
expecting success of 3430.29 '--rebase-merges with strategies':
git checkout -b with-a-strategy F &&
test_tick &&
git merge -m "Merge conflicting-G" conflicting-G &&
: first, test with a merge strategy option &&
git rebase -ir -Xtheirs G &&
echo conflicting-G >expect &&
test_cmp expect G.t &&
: now, try with a merge strategy other than recursive &&
git reset --hard @{1} &&
write_script git-merge-override <<-\EOF &&
echo overridden$1 >>G.t
git add G.t
EOF
PATH="$PWD:$PATH" git rebase -ir -s override -Xxopt G &&
test_write_lines G overridden--xopt >expect &&
test_cmp expect G.t
Switched to a new branch 'with-a-strategy'
Merge made by the 'ort' strategy.
G.t | 1 +
1 file changed, 1 insertion(+)
create mode 100644 G.t
Rebasing (1/6)
Rebasing (2/6)
Rebasing (3/6)
Rebasing (4/6)
Rebasing (5/6)
Rebasing (6/6)
Auto-merging G.t
Merge made by the 'ort' strategy.
Successfully rebased and updated refs/heads/with-a-strategy.
HEAD is now at 006864c Merge conflicting-G
Rebasing (1/6)
Rebasing (2/6)
Rebasing (3/6)
Rebasing (4/6)
Rebasing (5/6)
Rebasing (6/6)
Merge made by the 'override' strategy.
Successfully rebased and updated refs/heads/with-a-strategy.
ok 29 - --rebase-merges with strategies
expecting success of 3430.30 '--rebase-merges with commit that can generate bad characters for filename':
git checkout -b colon-in-label E &&
git merge -m "colon: this should work" G &&
git rebase --rebase-merges --force-rebase E
Switched to a new branch 'colon-in-label'
Merge made by the 'ort' strategy.
F.t | 1 +
G.t | 1 +
2 files changed, 2 insertions(+)
create mode 100644 F.t
create mode 100644 G.t
Rebasing (1/7)
Rebasing (2/7)
Rebasing (3/7)
Rebasing (4/7)
Rebasing (5/7)
Rebasing (6/7)
Rebasing (7/7)
Successfully rebased and updated refs/heads/colon-in-label.
ok 30 - --rebase-merges with commit that can generate bad characters for filename
expecting success of 3430.31 '--rebase-merges with message matched with onto label':
git checkout -b onto-label E &&
git merge -m onto G &&
git rebase --rebase-merges --force-rebase E &&
test_cmp_graph <<-\EOF
* onto
|\
| * G
| * F
* | E
|\ \
| * | B
* | | D
| |/
|/|
* | C
|/
* A
EOF
Switched to a new branch 'onto-label'
Merge made by the 'ort' strategy.
F.t | 1 +
G.t | 1 +
2 files changed, 2 insertions(+)
create mode 100644 F.t
create mode 100644 G.t
Rebasing (1/7)
Rebasing (2/7)
Rebasing (3/7)
Rebasing (4/7)
Rebasing (5/7)
Rebasing (6/7)
Rebasing (7/7)
Successfully rebased and updated refs/heads/onto-label.
ok 31 - --rebase-merges with message matched with onto label
expecting success of 3430.32 'progress shows the correct total':
git checkout -b progress H &&
git rebase --rebase-merges --force-rebase --verbose A 2> err &&
# Expecting "Rebasing (N/14)" here, no bogus total number
grep "^Rebasing.*/14.$" err >progress &&
test_line_count = 14 progress
Switched to a new branch 'progress'
Changes from 0ddfaf193ff13d6ab39b7cbd9eed645e3ee2f050 to 0ddfaf193ff13d6ab39b7cbd9eed645e3ee2f050:
ok 32 - progress shows the correct total
# passed all 32 test(s)
1..32
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3433-rebase-across-mode-change.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3433-rebase-across-mode-change/.git/
expecting success of 3433.1 'setup':
mkdir DS &&
>DS/whatever &&
git add DS &&
git commit -m base &&
git branch side1 &&
git branch side2 &&
git checkout side1 &&
git rm -rf DS &&
test_ln_s_add unrelated DS &&
git commit -m side1 &&
git checkout side2 &&
>unrelated &&
git add unrelated &&
git commit -m commit1 &&
echo >>unrelated &&
git commit -am commit2
[master (root-commit) ba9279b] base
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 DS/whatever
Switched to branch 'side1'
rm 'DS/whatever'
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
[side1 0a05486] side1
Author: A U Thor <author@example.com>
2 files changed, 1 insertion(+)
create mode 120000 DS
delete mode 100644 DS/whatever
Switched to branch 'side2'
[side2 e75512e] commit1
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 unrelated
[side2 e22f82a] commit2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
ok 1 - setup
expecting success of 3433.2 'rebase changes with the apply backend':
test_when_finished "git rebase --abort || true" &&
git checkout -b apply-backend side2 &&
git rebase side1
Switched to a new branch 'apply-backend'
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/apply-backend.
fatal: No rebase in progress?
ok 2 - rebase changes with the apply backend
expecting success of 3433.3 'rebase changes with the merge backend':
test_when_finished "git rebase --abort || true" &&
git checkout -b merge-backend side2 &&
git rebase -m side1
Switched to a new branch 'merge-backend'
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/merge-backend.
fatal: No rebase in progress?
ok 3 - rebase changes with the merge backend
expecting success of 3433.4 'rebase changes with the merge backend with a delay':
test_when_finished "git rebase --abort || true" &&
git checkout -b merge-delay-backend side2 &&
git rebase -m --exec "sleep 1" side1
Switched to a new branch 'merge-delay-backend'
Rebasing (1/4)
Rebasing (2/4)
Executing: sleep 1
Rebasing (3/4)
Rebasing (4/4)
Executing: sleep 1
Successfully rebased and updated refs/heads/merge-delay-backend.
fatal: No rebase in progress?
ok 4 - rebase changes with the merge backend with a delay
# passed all 4 test(s)
1..4
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3434-rebase-i18n.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3434-rebase-i18n/.git/
expecting success of 3434.1 'setup':
test_commit one &&
git branch first &&
test_commit two &&
git switch first &&
test_commit three &&
git branch second &&
test_commit four &&
git switch second &&
test_commit five &&
test_commit six
[main (root-commit) d79ce16] one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 one.t
[main 139b20d] two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 two.t
Switched to branch 'first'
[first 897c206] three
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 three.t
[first 6f2ec4d] four
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 four.t
Switched to branch 'second'
[second e2eded9] five
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 five.t
[second 666e62f] six
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 six.t
ok 1 - setup
expecting success of 3434.2 'rebase --rebase-merges update encoding eucJP to UTF-8':
git switch -c merge-eucJP-UTF-8 first &&
git config i18n.commitencoding eucJP &&
git merge -F "$TEST_DIRECTORY/t3434/eucJP.txt" second &&
git config i18n.commitencoding UTF-8 &&
git rebase --rebase-merges main &&
compare_msg eucJP.txt eucJP UTF-8
Switched to a new branch 'merge-eucJP-UTF-8'
Merge made by the 'ort' strategy.
five.t | 1 +
six.t | 1 +
2 files changed, 2 insertions(+)
create mode 100644 five.t
create mode 100644 six.t
Rebasing (1/10)
Rebasing (2/10)
Rebasing (3/10)
Rebasing (4/10)
Rebasing (5/10)
Rebasing (6/10)
Rebasing (7/10)
Rebasing (8/10)
Rebasing (9/10)
Rebasing (10/10)
Successfully rebased and updated refs/heads/merge-eucJP-UTF-8.
ok 2 - rebase --rebase-merges update encoding eucJP to UTF-8
expecting success of 3434.3 'rebase --rebase-merges update encoding eucJP to ISO-2022-JP':
git switch -c merge-eucJP-ISO-2022-JP first &&
git config i18n.commitencoding eucJP &&
git merge -F "$TEST_DIRECTORY/t3434/eucJP.txt" second &&
git config i18n.commitencoding ISO-2022-JP &&
git rebase --rebase-merges main &&
compare_msg eucJP.txt eucJP ISO-2022-JP
Switched to a new branch 'merge-eucJP-ISO-2022-JP'
Merge made by the 'ort' strategy.
five.t | 1 +
six.t | 1 +
2 files changed, 2 insertions(+)
create mode 100644 five.t
create mode 100644 six.t
Rebasing (1/10)
Rebasing (2/10)
Rebasing (3/10)
Rebasing (4/10)
Rebasing (5/10)
Rebasing (6/10)
Rebasing (7/10)
Rebasing (8/10)
Rebasing (9/10)
Rebasing (10/10)
Successfully rebased and updated refs/heads/merge-eucJP-ISO-2022-JP.
ok 3 - rebase --rebase-merges update encoding eucJP to ISO-2022-JP
expecting success of 3434.4 'rebase --continue update from ISO-8859-1 to UTF-8':
(git rebase --abort || : abort current git-rebase failure) &&
git switch -c conflict-$old-$new one &&
echo for-conflict >two.t &&
git add two.t &&
git config i18n.commitencoding $old &&
git commit -F "$TEST_DIRECTORY/t3434/$msgfile" &&
git config i18n.commitencoding $new &&
test_must_fail git rebase -m main &&
test -f .git/rebase-merge/message &&
git stripspace <.git/rebase-merge/message >two.t &&
git add two.t &&
git rebase --continue &&
compare_msg $msgfile $old $new &&
: git-commit assume invalid utf-8 is latin1 &&
test_cmp expect two.t
fatal: No rebase in progress?
Switched to a new branch 'conflict-ISO-8859-1-UTF-8'
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 two.t
Rebasing (1/1)
Auto-merging two.t
CONFLICT (add/add): Merge conflict in two.t
error: could not apply 7f6df7e... ÄËÑÏÖ
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 7f6df7e... ÄËÑÏÖ
[detached HEAD 2d1ef83] ÄËÑÏÖ
Author: A U Thor <author@example.com>
1 file changed, 3 insertions(+), 1 deletion(-)
Successfully rebased and updated refs/heads/conflict-ISO-8859-1-UTF-8.
ok 4 - rebase --continue update from ISO-8859-1 to UTF-8
expecting success of 3434.5 'rebase --continue update from eucJP to UTF-8':
(git rebase --abort || : abort current git-rebase failure) &&
git switch -c conflict-$old-$new one &&
echo for-conflict >two.t &&
git add two.t &&
git config i18n.commitencoding $old &&
git commit -F "$TEST_DIRECTORY/t3434/$msgfile" &&
git config i18n.commitencoding $new &&
test_must_fail git rebase -m main &&
test -f .git/rebase-merge/message &&
git stripspace <.git/rebase-merge/message >two.t &&
git add two.t &&
git rebase --continue &&
compare_msg $msgfile $old $new &&
: git-commit assume invalid utf-8 is latin1 &&
test_cmp expect two.t
fatal: No rebase in progress?
Switched to a new branch 'conflict-eucJP-UTF-8'
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 two.t
Rebasing (1/1)
Auto-merging two.t
CONFLICT (add/add): Merge conflict in two.t
error: could not apply 4850d3a... はれひほふ
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 4850d3a... はれひほふ
[detached HEAD 52bcbd9] はれひほふ
Author: A U Thor <author@example.com>
1 file changed, 4 insertions(+), 1 deletion(-)
Successfully rebased and updated refs/heads/conflict-eucJP-UTF-8.
ok 5 - rebase --continue update from eucJP to UTF-8
expecting success of 3434.6 'rebase --continue update from eucJP to ISO-2022-JP':
(git rebase --abort || : abort current git-rebase failure) &&
git switch -c conflict-$old-$new one &&
echo for-conflict >two.t &&
git add two.t &&
git config i18n.commitencoding $old &&
git commit -F "$TEST_DIRECTORY/t3434/$msgfile" &&
git config i18n.commitencoding $new &&
test_must_fail git rebase -m main &&
test -f .git/rebase-merge/message &&
git stripspace <.git/rebase-merge/message >two.t &&
git add two.t &&
git rebase --continue &&
compare_msg $msgfile $old $new &&
: git-commit assume invalid utf-8 is latin1 &&
test_cmp expect two.t
fatal: No rebase in progress?
Switched to a new branch 'conflict-eucJP-ISO-2022-JP'
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 two.t
Rebasing (1/1)
Auto-merging two.t
CONFLICT (add/add): Merge conflict in two.t
error: could not apply 4850d3a... ?$B$O$l$R$[$U?(B
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 4850d3a... $B$O$l$R$[$U
[detached HEAD d0ef7c0] $B$O$l$R$[$U(B
Author: A U Thor <author@example.com>
1 file changed, 4 insertions(+), 1 deletion(-)
Successfully rebased and updated refs/heads/conflict-eucJP-ISO-2022-JP.
ok 6 - rebase --continue update from eucJP to ISO-2022-JP
# passed all 6 test(s)
1..6
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3436-rebase-more-options.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3436-rebase-more-options/.git/
expecting success of 3436.1 'setup':
git checkout -b topic &&
test_write_lines "line 1" " line 2" "line 3" >file &&
git add file &&
git commit -m "add file" &&
test_write_lines "line 1" "new line 2" "line 3" >file &&
git commit -am "update file" &&
git tag side &&
test_commit commit1 foo foo1 &&
test_commit commit2 foo foo2 &&
test_commit commit3 foo foo3 &&
git checkout --orphan main &&
rm foo &&
test_write_lines "line 1" " line 2" "line 3" >file &&
git commit -am "add file" &&
git tag main &&
mkdir test-bin &&
write_script test-bin/git-merge-test <<-\EOF
exec git merge-recursive "$@"
EOF
Switched to a new branch 'topic'
[topic (root-commit) c24e627] add file
Author: A U Thor <author@example.com>
1 file changed, 3 insertions(+)
create mode 100644 file
[topic 139b464] update file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[topic 7c57c40] commit1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo
[topic bd08fd4] commit2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[topic eda6f49] commit3
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to a new branch 'main'
[main (root-commit) 3ada4af] add file
Author: A U Thor <author@example.com>
1 file changed, 3 insertions(+)
create mode 100644 file
ok 1 - setup
expecting success of 3436.2 '--ignore-whitespace works with apply backend':
test_must_fail git rebase --apply main side &&
git rebase --abort &&
git rebase --apply --ignore-whitespace main side &&
git diff --exit-code side
warning: refname 'main' is ambiguous.
warning: refname 'main' is ambiguous.
First, rewinding head to replay your work on top of it...
Applying: update file
Using index info to reconstruct a base tree...
M file
Falling back to patching base and 3-way merge...
Merging:
3ada4af add file
virtual update file
found 1 common ancestor:
virtual cea075e2ce716201e60e4bbadc9a40706c56c362
Auto-merging file
CONFLICT (content): Merge conflict in file
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 update file
Resolve all conflicts manually, mark them as resolved with
"git add/rm <conflicted_files>", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort".
warning: refname 'main' is ambiguous.
warning: refname 'main' is ambiguous.
First, rewinding head to replay your work on top of it...
Applying: update file
ok 2 - --ignore-whitespace works with apply backend
expecting success of 3436.3 '--ignore-whitespace works with merge backend':
test_must_fail git rebase --merge main side &&
git rebase --abort &&
git rebase --merge --ignore-whitespace main side &&
git diff --exit-code side
warning: refname 'main' is ambiguous.
warning: refname 'main' is ambiguous.
warning: skipped previously applied commit c24e627
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Rebasing (1/1)
Auto-merging file
CONFLICT (content): Merge conflict in file
error: could not apply 139b464... update file
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 139b464... update file
warning: refname 'main' is ambiguous.
warning: refname 'main' is ambiguous.
warning: skipped previously applied commit c24e627
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
Rebasing (1/1)
Successfully rebased and updated detached HEAD.
ok 3 - --ignore-whitespace works with merge backend
expecting success of 3436.4 '--ignore-whitespace is remembered when continuing':
(
set_fake_editor &&
FAKE_LINES="break 1" git rebase -i --ignore-whitespace \
main side &&
git rebase --continue
) &&
git diff --exit-code side
warning: refname 'main' is ambiguous.
warning: refname 'main' is ambiguous.
warning: skipped previously applied commit c24e627
hint: use --reapply-cherry-picks to include skipped commits
hint: Disable this message with "git config advice.skippedCherryPicks false"
rebase -i script before editing:
pick 139b464 update file
rebase -i script after editing:
break
pick 139b464 update file
Rebasing (1/2)
Stopped at 3ada4af (add file)
Rebasing (2/2)
Successfully rebased and updated detached HEAD.
ok 4 - --ignore-whitespace is remembered when continuing
expecting success of 3436.5 '--committer-date-is-author-date works with apply backend':
GIT_AUTHOR_DATE="@1234 +0300" git commit --amend --reset-author &&
git rebase --apply --committer-date-is-author-date HEAD^ &&
test_ctime_is_atime -1
[detached HEAD 6184e8b] update file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
HEAD is up to date, rebase forced.
First, rewinding head to replay your work on top of it...
Applying: update file
ok 5 - --committer-date-is-author-date works with apply backend
expecting success of 3436.6 '--committer-date-is-author-date works with merge backend':
GIT_AUTHOR_DATE="@1234 +0300" git commit --amend --reset-author &&
git rebase -m --committer-date-is-author-date HEAD^ &&
test_ctime_is_atime -1
[detached HEAD 6184e8b] update file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
HEAD is up to date, rebase forced.
Rebasing (1/1)
Successfully rebased and updated detached HEAD.
ok 6 - --committer-date-is-author-date works with merge backend
expecting success of 3436.7 '--committer-date-is-author-date works when rewording':
GIT_AUTHOR_DATE="@1234 +0300" git commit --amend --reset-author &&
(
set_fake_editor &&
FAKE_COMMIT_MESSAGE=edited \
FAKE_LINES="reword 1" \
git rebase -i --committer-date-is-author-date HEAD^
) &&
test_write_lines edited "" >expect &&
git log --format="%B" -1 >actual &&
test_cmp expect actual &&
test_ctime_is_atime -1
[detached HEAD 6184e8b] update file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
rebase -i script before editing:
pick 6184e8b update file
rebase -i script after editing:
reword 6184e8b update file
Rebasing (1/1)
[detached HEAD 5c38296] edited
Author: A U Thor <author@example.com>
Date: Thu Jan 1 03:20:34 1970 +0300
1 file changed, 1 insertion(+), 1 deletion(-)
Successfully rebased and updated detached HEAD.
ok 7 - --committer-date-is-author-date works when rewording
expecting success of 3436.8 '--committer-date-is-author-date works with rebase -r':
git checkout side &&
GIT_AUTHOR_DATE="@1234 +0300" git merge --no-ff commit3 &&
git rebase -r --root --committer-date-is-author-date &&
test_ctime_is_atime
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
5c38296 edited
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 5c38296
HEAD is now at 139b464 update file
Merge made by the 'ort' strategy.
foo | 1 +
1 file changed, 1 insertion(+)
create mode 100644 foo
Rebasing (1/11)
Rebasing (2/11)
Rebasing (3/11)
Rebasing (4/11)
Rebasing (5/11)
Rebasing (6/11)
Rebasing (7/11)
Rebasing (8/11)
Rebasing (9/11)
Rebasing (10/11)
Rebasing (11/11)
Successfully rebased and updated detached HEAD.
ok 8 - --committer-date-is-author-date works with rebase -r
expecting success of 3436.9 '--committer-date-is-author-date works when forking merge':
git checkout side &&
GIT_AUTHOR_DATE="@1234 +0300" git merge --no-ff commit3 &&
PATH="./test-bin:$PATH" git rebase -r --root --strategy=test \
--committer-date-is-author-date &&
test_ctime_is_atime
Warning: you are leaving 6 commits behind, not connected to
any of your branches:
aa07736 Merge tag 'commit3' into HEAD
54193eb commit3
a2d9c2e commit2
8251e18 commit1
... and 2 more.
If you want to keep them by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> aa07736
HEAD is now at 139b464 update file
Merge made by the 'ort' strategy.
foo | 1 +
1 file changed, 1 insertion(+)
create mode 100644 foo
Rebasing (1/11)
Rebasing (2/11)
Rebasing (3/11)
Merging 2a85097a58eecaad11df374857a87fbc0e47e389 with c24e62700f83d7b12297f45d1ce1e9689ebb2b1f
Merging:
2a85097 c24e627 add file
found 1 common ancestor:
virtual 4b825dc642cb6eb9a060e54bf8d69288fbee4904
Rebasing (4/11)
Merging eaa553d7eb7c0d13b95960e348a77332601bbc3e with 139b46443e355afd5f438ac2849d41f3a53b8c77
Merging:
eaa553d add file
139b464 update file
found 1 common ancestor:
c24e627 add file
Rebasing (5/11)
Rebasing (6/11)
Merging 34dfd6c233143884ddd9180be88112657b590d86 with 7c57c40ccd2483ccea76831595c0e232d40560c7
Merging:
34dfd6c update file
7c57c40 commit1
found 1 common ancestor:
139b464 update file
Rebasing (7/11)
Merging 8251e18d67ff84cb7aa93676b4cb93be15ef6810 with bd08fd48eeadc218177587a9f467f39ac4b51d49
Merging:
8251e18 commit1
bd08fd4 commit2
found 1 common ancestor:
7c57c40 commit1
Rebasing (8/11)
Merging a2d9c2ebb6808fff81a49a500b865fbf8f4fcbf5 with eda6f49c7ee63a956ad612b98a03b92c19face55
Merging:
a2d9c2e commit2
eda6f49 commit3
found 1 common ancestor:
bd08fd4 commit2
Rebasing (9/11)
Rebasing (10/11)
Rebasing (11/11)
Merging HEAD with 54193ebc0e463528ab8c3f723f89752960c98304
Merging:
34dfd6c update file
54193eb commit3
found 1 common ancestor:
34dfd6c update file
Merge made by the 'test' strategy.
Successfully rebased and updated detached HEAD.
ok 9 - --committer-date-is-author-date works when forking merge
expecting success of 3436.10 '--committer-date-is-author-date works when committing conflict resolution':
git checkout commit2 &&
GIT_AUTHOR_DATE="@1980 +0000" git commit --amend --only --reset-author &&
test_must_fail git rebase -m --committer-date-is-author-date \
--onto HEAD^^ HEAD^ &&
echo resolved > foo &&
git add foo &&
git rebase --continue &&
test_ctime_is_atime -1
Warning: you are leaving 6 commits behind, not connected to
any of your branches:
aa07736 Merge tag 'commit3' into HEAD
54193eb commit3
a2d9c2e commit2
8251e18 commit1
... and 2 more.
If you want to keep them by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> aa07736
HEAD is now at bd08fd4 commit2
[detached HEAD 832d950] commit2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Rebasing (1/1)
CONFLICT (modify/delete): foo deleted in HEAD and modified in 832d950 (commit2). Version 832d950 (commit2) of foo left in tree.
error: could not apply 832d950... commit2
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 832d950... commit2
[detached HEAD 3bf7cf9] commit2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo
Successfully rebased and updated detached HEAD.
ok 10 - --committer-date-is-author-date works when committing conflict resolution
expecting success of 3436.11 '--reset-author-date works with apply backend':
git commit --amend --date="$GIT_AUTHOR_DATE" &&
git rebase --apply --reset-author-date HEAD^ &&
test_atime_is_ignored -1
[detached HEAD 70e7180] commit2
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 foo
HEAD is up to date, rebase forced.
First, rewinding head to replay your work on top of it...
Applying: commit2
ok 11 - --reset-author-date works with apply backend
expecting success of 3436.12 '--reset-author-date works with merge backend':
git commit --amend --date="$GIT_AUTHOR_DATE" &&
git rebase --reset-author-date -m HEAD^ &&
test_atime_is_ignored -1
[detached HEAD 70e7180] commit2
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 foo
HEAD is up to date, rebase forced.
Rebasing (1/1)
Successfully rebased and updated detached HEAD.
ok 12 - --reset-author-date works with merge backend
expecting success of 3436.13 '--reset-author-date works after conflict resolution':
test_must_fail git rebase --reset-author-date -m \
--onto commit2^^ commit2^ commit2 &&
echo resolved >foo &&
git add foo &&
git rebase --continue &&
test_atime_is_ignored -1
Rebasing (1/1)
CONFLICT (modify/delete): foo deleted in HEAD and modified in bd08fd4 (commit2). Version bd08fd4 (commit2) of foo left in tree.
error: could not apply bd08fd4... commit2
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply bd08fd4... commit2
[detached HEAD 331cdf4] commit2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo
Successfully rebased and updated detached HEAD.
ok 13 - --reset-author-date works after conflict resolution
expecting success of 3436.14 '--reset-author-date works with rebase -r':
git checkout side &&
git merge --no-ff commit3 &&
git rebase -r --root --reset-author-date &&
test_atime_is_ignored
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
331cdf4 commit2
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 331cdf4
HEAD is now at 139b464 update file
Merge made by the 'ort' strategy.
foo | 1 +
1 file changed, 1 insertion(+)
create mode 100644 foo
Rebasing (1/11)
Rebasing (2/11)
Rebasing (3/11)
Rebasing (4/11)
Rebasing (5/11)
Rebasing (6/11)
Rebasing (7/11)
Rebasing (8/11)
Rebasing (9/11)
Rebasing (10/11)
Rebasing (11/11)
Successfully rebased and updated detached HEAD.
ok 14 - --reset-author-date works with rebase -r
expecting success of 3436.15 '--reset-author-date with --committer-date-is-author-date works':
test_must_fail git rebase -m --committer-date-is-author-date \
--reset-author-date --onto commit2^^ commit2^ commit3 &&
git checkout --theirs foo &&
git add foo &&
git rebase --continue &&
test_ctime_is_atime -2 &&
test_atime_is_ignored -2
Rebasing (1/2)
CONFLICT (modify/delete): foo deleted in HEAD and modified in bd08fd4 (commit2). Version bd08fd4 (commit2) of foo left in tree.
error: could not apply bd08fd4... commit2
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply bd08fd4... commit2
Updated 1 path from the index
[detached HEAD 802c4e0] commit2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo
Rebasing (2/2)
Successfully rebased and updated detached HEAD.
ok 15 - --reset-author-date with --committer-date-is-author-date works
expecting success of 3436.16 'reset-author-date with --committer-date-is-author-date works when rewording':
GIT_AUTHOR_DATE="@1234 +0300" git commit --amend --reset-author &&
(
set_fake_editor &&
FAKE_COMMIT_MESSAGE=edited \
FAKE_LINES="reword 1" \
git rebase -i --committer-date-is-author-date \
--reset-author-date HEAD^
) &&
test_write_lines edited "" >expect &&
git log --format="%B" -1 >actual &&
test_cmp expect actual &&
test_atime_is_ignored -1
[detached HEAD 69dfc09] commit3
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
rebase -i script before editing:
pick 69dfc09 commit3
rebase -i script after editing:
reword 69dfc09 commit3
Rebasing (1/1)
[detached HEAD 9bb9a7a] edited
Author: A U Thor <author@example.com>
Date: Mon Oct 9 02:19:17 2023 +0000
1 file changed, 1 insertion(+), 1 deletion(-)
Successfully rebased and updated detached HEAD.
ok 16 - reset-author-date with --committer-date-is-author-date works when rewording
expecting success of 3436.17 '--reset-author-date --committer-date-is-author-date works when forking merge':
GIT_SEQUENCE_EDITOR="echo \"merge -C $(git rev-parse HEAD) commit3\">" \
PATH="./test-bin:$PATH" git rebase -i --strategy=test \
--reset-author-date \
--committer-date-is-author-date side side &&
test_ctime_is_atime -1 &&
test_atime_is_ignored -1
Rebasing (1/1)
Merging HEAD with eda6f49c7ee63a956ad612b98a03b92c19face55
Merging:
139b464 update file
eda6f49 commit3
found 1 common ancestor:
139b464 update file
Merge made by the 'test' strategy.
Successfully rebased and updated detached HEAD.
ok 17 - --reset-author-date --committer-date-is-author-date works when forking merge
expecting success of 3436.18 '--ignore-date is an alias for --reset-author-date':
git commit --amend --date="$GIT_AUTHOR_DATE" &&
git rebase --apply --ignore-date HEAD^ &&
git commit --allow-empty -m empty --date="$GIT_AUTHOR_DATE" &&
git rebase -m --ignore-date HEAD^ &&
test_atime_is_ignored -2
[detached HEAD 09e9cd3] edited
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
First, rewinding head to replay your work on top of it...
Applying: commit1
Applying: commit2
Applying: commit3
[detached HEAD ed7bea5] empty
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
HEAD is up to date, rebase forced.
Rebasing (1/1)
Successfully rebased and updated detached HEAD.
ok 18 - --ignore-date is an alias for --reset-author-date
expecting success of 3436.19 '$EDITOR and friends are unchanged':
test_editor_unchanged
ok 19 - $EDITOR and friends are unchanged
# passed all 19 test(s)
1..19
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3435-rebase-gpg-sign.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3435-rebase-gpg-sign/.git/
checking prerequisite: GPG
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-GPG" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-GPG" &&
gpg_version=$(gpg --version 2>&1)
test $? != 127 || exit 1
# As said here: http://www.gnupg.org/documentation/faqs.html#q6.19
# the gpg version 1.0.6 did not parse trust packets correctly, so for
# that version, creation of signed tags using the generated key fails.
case "$gpg_version" in
"gpg (GnuPG) 1.0.6"*)
say "Your version of gpg (1.0.6) is too buggy for testing"
exit 1
;;
*)
# Available key info:
# * Type DSA and Elgamal, size 2048 bits, no expiration date,
# name and email: C O Mitter <committer@example.com>
# * Type RSA, size 2048 bits, no expiration date,
# name and email: Eris Discordia <discord@example.net>
# No password given, to enable non-interactive operation.
# To generate new key:
# gpg --homedir /tmp/gpghome --gen-key
# To write armored exported key to keyring:
# gpg --homedir /tmp/gpghome --export-secret-keys \
# --armor 0xDEADBEEF >> lib-gpg/keyring.gpg
# gpg --homedir /tmp/gpghome --export \
# --armor 0xDEADBEEF >> lib-gpg/keyring.gpg
# To export ownertrust:
# gpg --homedir /tmp/gpghome --export-ownertrust \
# > lib-gpg/ownertrust
mkdir "$GNUPGHOME" &&
chmod 0700 "$GNUPGHOME" &&
(gpgconf --kill all || : ) &&
gpg --homedir "${GNUPGHOME}" --import \
"$TEST_DIRECTORY"/lib-gpg/keyring.gpg &&
gpg --homedir "${GNUPGHOME}" --import-ownertrust \
"$TEST_DIRECTORY"/lib-gpg/ownertrust &&
gpg --homedir "${GNUPGHOME}" </dev/null >/dev/null \
--sign -u committer@example.com
;;
esac
)
gpg: keybox '/<<PKGBUILDDIR>>/t/trash directory.t3435-rebase-gpg-sign/gpghome/pubring.kbx' created
gpg: /<<PKGBUILDDIR>>/t/trash directory.t3435-rebase-gpg-sign/gpghome/trustdb.gpg: trustdb created
gpg: key 13B6F51ECDDE430D: public key "C O Mitter <committer@example.com>" imported
gpg: key 13B6F51ECDDE430D: secret key imported
gpg: key 61092E85B7227189: public key "Eris Discordia <discord@example.net>" imported
gpg: key 61092E85B7227189: secret key imported
gpg: key 13B6F51ECDDE430D: "C O Mitter <committer@example.com>" not changed
gpg: key 61092E85B7227189: "Eris Discordia <discord@example.net>" not changed
gpg: Total number processed: 4
gpg: imported: 2
gpg: unchanged: 2
gpg: secret keys read: 2
gpg: secret keys imported: 2
gpg: inserting ownertrust of 6
gpg: inserting ownertrust of 3
prerequisite GPG ok
expecting success of 3435.1 'setup':
test_commit one &&
test_commit two &&
test_must_fail git verify-commit HEAD &&
test_must_fail git verify-commit HEAD^
[main (root-commit) d79ce16] one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 one.t
[main 139b20d] two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 two.t
ok 1 - setup
expecting success of 3435.2 'setup: merge commit':
test_commit fork-point &&
git switch -c side &&
test_commit three &&
git switch main &&
git merge --no-ff side &&
git tag merged
[main c5321ad] fork-point
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 fork-point.t
Switched to a new branch 'side'
[side cb830c0] three
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 three.t
Switched to branch 'main'
Merge made by the 'ort' strategy.
three.t | 1 +
1 file changed, 1 insertion(+)
create mode 100644 three.t
ok 2 - setup: merge commit
expecting success of 3435.3 'rebase with commit.gpgsign=false won't sign commit':
git reset two &&
git config commit.gpgsign false &&
set_fake_editor &&
FAKE_LINES='r 1 p 2' git rebase --force-rebase --root &&
test_must_fail git verify-commit HEAD^ &&
test_must_fail git verify-commit HEAD
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/main.
ok 3 - rebase with commit.gpgsign=false won't sign commit
expecting success of 3435.4 'rebase with commit.gpgsign=true will sign commit':
git reset two &&
git config commit.gpgsign true &&
set_fake_editor &&
FAKE_LINES='r 1 p 2' git rebase --force-rebase --root &&
git verify-commit HEAD^ &&
git verify-commit HEAD
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/main.
gpg: Signature made Mon Oct 9 02:19:16 2023 UTC
gpg: using DSA key 73D758744BE721698EC54E8713B6F51ECDDE430D
gpg: issuer "committer@example.com"
gpg: checking the trustdb
gpg: marginals needed: 3 completes needed: 1 trust model: pgp
gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: Good signature from "C O Mitter <committer@example.com>" [ultimate]
gpg: Signature made Mon Oct 9 02:19:16 2023 UTC
gpg: using DSA key 73D758744BE721698EC54E8713B6F51ECDDE430D
gpg: issuer "committer@example.com"
gpg: Good signature from "C O Mitter <committer@example.com>" [ultimate]
ok 4 - rebase with commit.gpgsign=true will sign commit
expecting success of 3435.5 'rebase --no-gpg-sign with commit.gpgsign=true won't sign commit':
git reset two &&
git config commit.gpgsign true &&
set_fake_editor &&
FAKE_LINES='r 1 p 2' git rebase --force-rebase --root --no-gpg-sign &&
test_must_fail git verify-commit HEAD^ &&
test_must_fail git verify-commit HEAD
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/main.
ok 5 - rebase --no-gpg-sign with commit.gpgsign=true won't sign commit
expecting success of 3435.6 'rebase --gpg-sign --no-gpg-sign with commit.gpgsign=true won't sign commit':
git reset two &&
git config commit.gpgsign true &&
set_fake_editor &&
FAKE_LINES='r 1 p 2' git rebase --force-rebase --root --gpg-sign --no-gpg-sign &&
test_must_fail git verify-commit HEAD^ &&
test_must_fail git verify-commit HEAD
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/main.
ok 6 - rebase --gpg-sign --no-gpg-sign with commit.gpgsign=true won't sign commit
expecting success of 3435.7 'rebase --no-gpg-sign --gpg-sign with commit.gpgsign=false will sign commit':
git reset two &&
git config commit.gpgsign false &&
set_fake_editor &&
FAKE_LINES='r 1 p 2' git rebase --force-rebase --root --no-gpg-sign --gpg-sign &&
git verify-commit HEAD^ &&
git verify-commit HEAD
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/main.
gpg: Signature made Mon Oct 9 02:19:16 2023 UTC
gpg: using DSA key 73D758744BE721698EC54E8713B6F51ECDDE430D
gpg: issuer "committer@example.com"
gpg: Good signature from "C O Mitter <committer@example.com>" [ultimate]
gpg: Signature made Mon Oct 9 02:19:16 2023 UTC
gpg: using DSA key 73D758744BE721698EC54E8713B6F51ECDDE430D
gpg: issuer "committer@example.com"
gpg: Good signature from "C O Mitter <committer@example.com>" [ultimate]
ok 7 - rebase --no-gpg-sign --gpg-sign with commit.gpgsign=false will sign commit
expecting success of 3435.8 'rebase -i with commit.gpgsign=true will sign commit':
git reset two &&
git config commit.gpgsign true &&
set_fake_editor &&
FAKE_LINES='r 1 p 2' git rebase --force-rebase --root -i &&
git verify-commit HEAD^ &&
git verify-commit HEAD
rebase -i script before editing:
pick d79ce16 one
pick 139b20d two
rebase -i script after editing:
r d79ce16 one
p 139b20d two
Rebasing (1/2)
[detached HEAD 7d4f537] one
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:13:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 one.t
Rebasing (2/2)
Successfully rebased and updated refs/heads/main.
gpg: Signature made Mon Oct 9 02:19:16 2023 UTC
gpg: using DSA key 73D758744BE721698EC54E8713B6F51ECDDE430D
gpg: issuer "committer@example.com"
gpg: Good signature from "C O Mitter <committer@example.com>" [ultimate]
gpg: Signature made Mon Oct 9 02:19:16 2023 UTC
gpg: using DSA key 73D758744BE721698EC54E8713B6F51ECDDE430D
gpg: issuer "committer@example.com"
gpg: Good signature from "C O Mitter <committer@example.com>" [ultimate]
ok 8 - rebase -i with commit.gpgsign=true will sign commit
expecting success of 3435.9 'rebase -i --no-gpg-sign with commit.gpgsign=true won't sign commit':
git reset two &&
git config commit.gpgsign true &&
set_fake_editor &&
FAKE_LINES='r 1 p 2' git rebase --force-rebase --root -i --no-gpg-sign &&
test_must_fail git verify-commit HEAD^ &&
test_must_fail git verify-commit HEAD
rebase -i script before editing:
pick d79ce16 one
pick 139b20d two
rebase -i script after editing:
r d79ce16 one
p 139b20d two
Rebasing (1/2)
[detached HEAD 94ecfb8] one
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:13:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 one.t
Rebasing (2/2)
Successfully rebased and updated refs/heads/main.
ok 9 - rebase -i --no-gpg-sign with commit.gpgsign=true won't sign commit
expecting success of 3435.10 'rebase -i --gpg-sign --no-gpg-sign with commit.gpgsign=true won't sign commit':
git reset two &&
git config commit.gpgsign true &&
set_fake_editor &&
FAKE_LINES='r 1 p 2' git rebase --force-rebase --root -i --gpg-sign --no-gpg-sign &&
test_must_fail git verify-commit HEAD^ &&
test_must_fail git verify-commit HEAD
rebase -i script before editing:
pick d79ce16 one
pick 139b20d two
rebase -i script after editing:
r d79ce16 one
p 139b20d two
Rebasing (1/2)
[detached HEAD 94ecfb8] one
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:13:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 one.t
Rebasing (2/2)
Successfully rebased and updated refs/heads/main.
ok 10 - rebase -i --gpg-sign --no-gpg-sign with commit.gpgsign=true won't sign commit
expecting success of 3435.11 'rebase -i --no-gpg-sign --gpg-sign with commit.gpgsign=false will sign commit':
git reset two &&
git config commit.gpgsign false &&
set_fake_editor &&
FAKE_LINES='r 1 p 2' git rebase --force-rebase --root -i --no-gpg-sign --gpg-sign &&
git verify-commit HEAD^ &&
git verify-commit HEAD
rebase -i script before editing:
pick d79ce16 one
pick 139b20d two
rebase -i script after editing:
r d79ce16 one
p 139b20d two
Rebasing (1/2)
[detached HEAD 6d042b3] one
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:13:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 one.t
Rebasing (2/2)
Successfully rebased and updated refs/heads/main.
gpg: Signature made Mon Oct 9 02:19:17 2023 UTC
gpg: using DSA key 73D758744BE721698EC54E8713B6F51ECDDE430D
gpg: issuer "committer@example.com"
gpg: Good signature from "C O Mitter <committer@example.com>" [ultimate]
gpg: Signature made Mon Oct 9 02:19:17 2023 UTC
gpg: using DSA key 73D758744BE721698EC54E8713B6F51ECDDE430D
gpg: issuer "committer@example.com"
gpg: Good signature from "C O Mitter <committer@example.com>" [ultimate]
ok 11 - rebase -i --no-gpg-sign --gpg-sign with commit.gpgsign=false will sign commit
expecting success of 3435.12 'rebase -r, merge strategy, --gpg-sign will sign commit':
git reset --hard merged &&
test_unconfig commit.gpgsign &&
git rebase -fr --gpg-sign -s resolve --root &&
git verify-commit HEAD
HEAD is now at 6a9f02a Merge branch 'side'
Rebasing (1/10)
Rebasing (2/10)
Rebasing (3/10)
Trying simple merge.
Rebasing (4/10)
Trying simple merge.
Rebasing (5/10)
Trying simple merge.
Rebasing (6/10)
Rebasing (7/10)
Trying simple merge.
Rebasing (8/10)
Rebasing (9/10)
Rebasing (10/10)
Trying really trivial in-index merge...
Wonderful.
In-index merge
Successfully rebased and updated refs/heads/main.
gpg: Signature made Mon Oct 9 02:19:17 2023 UTC
gpg: using DSA key 73D758744BE721698EC54E8713B6F51ECDDE430D
gpg: issuer "committer@example.com"
gpg: Good signature from "C O Mitter <committer@example.com>" [ultimate]
ok 12 - rebase -r, merge strategy, --gpg-sign will sign commit
expecting success of 3435.13 'rebase -r, merge strategy, commit.gpgsign=true will sign commit':
git reset --hard merged &&
git config commit.gpgsign true &&
git rebase -fr -s resolve --root &&
git verify-commit HEAD
HEAD is now at 6a9f02a Merge branch 'side'
Rebasing (1/10)
Rebasing (2/10)
Rebasing (3/10)
Trying simple merge.
Rebasing (4/10)
Trying simple merge.
Rebasing (5/10)
Trying simple merge.
Rebasing (6/10)
Rebasing (7/10)
Trying simple merge.
Rebasing (8/10)
Rebasing (9/10)
Rebasing (10/10)
Trying really trivial in-index merge...
Wonderful.
In-index merge
Successfully rebased and updated refs/heads/main.
gpg: Signature made Mon Oct 9 02:19:17 2023 UTC
gpg: using DSA key 73D758744BE721698EC54E8713B6F51ECDDE430D
gpg: issuer "committer@example.com"
gpg: Good signature from "C O Mitter <committer@example.com>" [ultimate]
ok 13 - rebase -r, merge strategy, commit.gpgsign=true will sign commit
expecting success of 3435.14 'rebase -r, merge strategy, commit.gpgsign=false --gpg-sign will sign commit':
git reset --hard merged &&
git config commit.gpgsign false &&
git rebase -fr --gpg-sign -s resolve --root &&
git verify-commit HEAD
HEAD is now at 6a9f02a Merge branch 'side'
Rebasing (1/10)
Rebasing (2/10)
Rebasing (3/10)
Trying simple merge.
Rebasing (4/10)
Trying simple merge.
Rebasing (5/10)
Trying simple merge.
Rebasing (6/10)
Rebasing (7/10)
Trying simple merge.
Rebasing (8/10)
Rebasing (9/10)
Rebasing (10/10)
Trying really trivial in-index merge...
Wonderful.
In-index merge
Successfully rebased and updated refs/heads/main.
gpg: Signature made Mon Oct 9 02:19:17 2023 UTC
gpg: using DSA key 73D758744BE721698EC54E8713B6F51ECDDE430D
gpg: issuer "committer@example.com"
gpg: Good signature from "C O Mitter <committer@example.com>" [ultimate]
ok 14 - rebase -r, merge strategy, commit.gpgsign=false --gpg-sign will sign commit
expecting success of 3435.15 'rebase -r, merge strategy, commit.gpgsign=true --no-gpg-sign won't sign commit':
git reset --hard merged &&
git config commit.gpgsign true &&
git rebase -fr --no-gpg-sign -s resolve --root &&
test_must_fail git verify-commit HEAD
HEAD is now at 6a9f02a Merge branch 'side'
Rebasing (1/10)
Rebasing (2/10)
Rebasing (3/10)
Trying simple merge.
Rebasing (4/10)
Trying simple merge.
Rebasing (5/10)
Trying simple merge.
Rebasing (6/10)
Rebasing (7/10)
Trying simple merge.
Rebasing (8/10)
Rebasing (9/10)
Rebasing (10/10)
Trying really trivial in-index merge...
Wonderful.
In-index merge
Successfully rebased and updated refs/heads/main.
ok 15 - rebase -r, merge strategy, commit.gpgsign=true --no-gpg-sign won't sign commit
expecting success of 3435.16 'rebase -r --gpg-sign will sign commit':
git reset --hard merged &&
test_unconfig commit.gpgsign &&
git rebase -fr --gpg-sign --root &&
git verify-commit HEAD
HEAD is now at 6a9f02a Merge branch 'side'
Rebasing (1/10)
Rebasing (2/10)
Rebasing (3/10)
Rebasing (4/10)
Rebasing (5/10)
Rebasing (6/10)
Rebasing (7/10)
Rebasing (8/10)
Rebasing (9/10)
Rebasing (10/10)
Successfully rebased and updated refs/heads/main.
gpg: Signature made Mon Oct 9 02:19:18 2023 UTC
gpg: using DSA key 73D758744BE721698EC54E8713B6F51ECDDE430D
gpg: issuer "committer@example.com"
gpg: Good signature from "C O Mitter <committer@example.com>" [ultimate]
ok 16 - rebase -r --gpg-sign will sign commit
expecting success of 3435.17 'rebase -r with commit.gpgsign=true will sign commit':
git reset --hard merged &&
git config commit.gpgsign true &&
git rebase -fr --root &&
git verify-commit HEAD
HEAD is now at 6a9f02a Merge branch 'side'
Rebasing (1/10)
Rebasing (2/10)
Rebasing (3/10)
Rebasing (4/10)
Rebasing (5/10)
Rebasing (6/10)
Rebasing (7/10)
Rebasing (8/10)
Rebasing (9/10)
Rebasing (10/10)
Successfully rebased and updated refs/heads/main.
gpg: Signature made Mon Oct 9 02:19:18 2023 UTC
gpg: using DSA key 73D758744BE721698EC54E8713B6F51ECDDE430D
gpg: issuer "committer@example.com"
gpg: Good signature from "C O Mitter <committer@example.com>" [ultimate]
ok 17 - rebase -r with commit.gpgsign=true will sign commit
expecting success of 3435.18 'rebase -r --gpg-sign with commit.gpgsign=false will sign commit':
git reset --hard merged &&
git config commit.gpgsign false &&
git rebase -fr --gpg-sign --root &&
git verify-commit HEAD
HEAD is now at 6a9f02a Merge branch 'side'
Rebasing (1/10)
Rebasing (2/10)
Rebasing (3/10)
Rebasing (4/10)
Rebasing (5/10)
Rebasing (6/10)
Rebasing (7/10)
Rebasing (8/10)
Rebasing (9/10)
Rebasing (10/10)
Successfully rebased and updated refs/heads/main.
gpg: Signature made Mon Oct 9 02:19:18 2023 UTC
gpg: using DSA key 73D758744BE721698EC54E8713B6F51ECDDE430D
gpg: issuer "committer@example.com"
gpg: Good signature from "C O Mitter <committer@example.com>" [ultimate]
ok 18 - rebase -r --gpg-sign with commit.gpgsign=false will sign commit
expecting success of 3435.19 'rebase -r --no-gpg-sign with commit.gpgsign=true won't sign commit':
git reset --hard merged &&
git config commit.gpgsign true &&
git rebase -fr --no-gpg-sign --root &&
test_must_fail git verify-commit HEAD
HEAD is now at 6a9f02a Merge branch 'side'
Rebasing (1/10)
Rebasing (2/10)
Rebasing (3/10)
Rebasing (4/10)
Rebasing (5/10)
Rebasing (6/10)
Rebasing (7/10)
Rebasing (8/10)
Rebasing (9/10)
Rebasing (10/10)
Successfully rebased and updated refs/heads/main.
ok 19 - rebase -r --no-gpg-sign with commit.gpgsign=true won't sign commit
# passed all 19 test(s)
1..19
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3437-rebase-fixup-options.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3437-rebase-fixup-options/.git/
expecting success of 3437.1 'setup':
cat >message <<-EOF &&
amend! B
$EMPTY
new subject
$EMPTY
new
body
EOF
test_commit initial &&
test_commit A A &&
test_commit B B &&
get_author HEAD >expected-author &&
ORIG_AUTHOR_NAME="$GIT_AUTHOR_NAME" &&
ORIG_AUTHOR_EMAIL="$GIT_AUTHOR_EMAIL" &&
GIT_AUTHOR_NAME="Amend Author" &&
GIT_AUTHOR_EMAIL="amend@example.com" &&
test_commit "$(cat message)" A A1 A1 &&
test_commit A2 A &&
test_commit A3 A &&
GIT_AUTHOR_NAME="$ORIG_AUTHOR_NAME" &&
GIT_AUTHOR_EMAIL="$ORIG_AUTHOR_EMAIL" &&
git checkout -b conflicts-branch A &&
test_commit conflicts A &&
set_fake_editor &&
git checkout -b branch B &&
echo B1 >B &&
test_tick &&
git commit --fixup=HEAD -a &&
git tag B1 &&
test_tick &&
FAKE_COMMIT_AMEND="edited 1" git commit --fixup=reword:B &&
test_tick &&
FAKE_COMMIT_AMEND="edited 2" git commit --fixup=reword:HEAD &&
echo B2 >B &&
test_tick &&
FAKE_COMMIT_AMEND="edited squash" git commit --squash=HEAD -a &&
git tag B2 &&
echo B3 >B &&
test_tick &&
FAKE_COMMIT_AMEND="edited 3" git commit -a --fixup=amend:HEAD^ &&
git tag B3 &&
GIT_AUTHOR_NAME="Rebase Author" &&
GIT_AUTHOR_EMAIL="rebase.author@example.com" &&
GIT_COMMITTER_NAME="Rebase Committer" &&
GIT_COMMITTER_EMAIL="rebase.committer@example.com"
[master (root-commit) 24b24cf] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 initial.t
[master e45ed32] A
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 A
[master 0b010d6] B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 B
[master 24547d2] amend! B
Author: Amend Author <amend@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[master 34b9ec4] A2
Author: Amend Author <amend@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[master fc6fe24] A3
Author: Amend Author <amend@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to a new branch 'conflicts-branch'
[conflicts-branch 1ae01f5] conflicts
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to a new branch 'branch'
[branch 5ea5a69] fixup! B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[branch 9954cb8] amend! B
Author: A U Thor <author@example.com>
[branch ddcbd4a] amend! amend! B
Author: A U Thor <author@example.com>
[branch 4d0230e] squash! amend! amend! B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[branch e0c8cb3] amend! amend! amend! B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 1 - setup
expecting success of 3437.2 'simple fixup -C works':
test_when_finished "test_might_fail git rebase --abort" &&
git checkout --detach A2 &&
FAKE_LINES="1 fixup_-C 2" git rebase -i B &&
test_cmp_rev HEAD^ B &&
test_cmp_rev HEAD^{tree} A2^{tree} &&
test_commit_message HEAD -m "A2"
HEAD is now at 34b9ec4 A2
rebase -i script before editing:
pick 24547d2 amend! B
pick 34b9ec4 A2
rebase -i script after editing:
pick 24547d2 amend! B
fixup -C 34b9ec4 A2
Rebasing (2/2)
Successfully rebased and updated detached HEAD.
fatal: No rebase in progress?
ok 2 - simple fixup -C works
expecting success of 3437.3 'simple fixup -c works':
test_when_finished "test_might_fail git rebase --abort" &&
git checkout --detach A2 &&
git log -1 --pretty=format:%B >expected-fixup-message &&
test_write_lines "" "Modified A2" >>expected-fixup-message &&
FAKE_LINES="1 fixup_-c 2" \
FAKE_COMMIT_AMEND="Modified A2" \
git rebase -i B &&
test_cmp_rev HEAD^ B &&
test_cmp_rev HEAD^{tree} A2^{tree} &&
test_commit_message HEAD expected-fixup-message
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
9e14115 A2
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 9e14115
HEAD is now at 34b9ec4 A2
rebase -i script before editing:
pick 24547d2 amend! B
pick 34b9ec4 A2
rebase -i script after editing:
pick 24547d2 amend! B
fixup -c 34b9ec4 A2
Rebasing (2/2)
[detached HEAD e21ffe9] A2
Author: Amend Author <amend@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
Successfully rebased and updated detached HEAD.
fatal: No rebase in progress?
ok 3 - simple fixup -c works
expecting success of 3437.4 'fixup -C removes amend! from message':
test_when_finished "test_might_fail git rebase --abort" &&
git checkout --detach A1 &&
git log -1 --pretty=format:%b >expected-message &&
FAKE_LINES="1 fixup_-C 2" git rebase -i A &&
test_cmp_rev HEAD^ A &&
test_cmp_rev HEAD^{tree} A1^{tree} &&
test_commit_message HEAD expected-message &&
get_author HEAD >actual-author &&
test_cmp expected-author actual-author
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
e21ffe9 A2
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> e21ffe9
HEAD is now at 24547d2 amend! B
rebase -i script before editing:
pick 0b010d6 B
pick 24547d2 amend! B
rebase -i script after editing:
pick 0b010d6 B
fixup -C 24547d2 amend! B
Rebasing (2/2)
Successfully rebased and updated detached HEAD.
fatal: No rebase in progress?
ok 4 - fixup -C removes amend! from message
expecting success of 3437.5 'fixup -C with conflicts gives correct message':
test_when_finished "test_might_fail git rebase --abort" &&
git checkout --detach A1 &&
git log -1 --pretty=format:%b >expected-message &&
test_write_lines "" "edited" >>expected-message &&
test_must_fail env FAKE_LINES="1 fixup_-C 2" git rebase -i conflicts &&
git checkout --theirs -- A &&
git add A &&
FAKE_COMMIT_AMEND=edited git rebase --continue &&
test_cmp_rev HEAD^ conflicts &&
test_cmp_rev HEAD^{tree} A1^{tree} &&
test_commit_message HEAD expected-message &&
get_author HEAD >actual-author &&
test_cmp expected-author actual-author
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
b96345a new subject
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> b96345a
HEAD is now at 24547d2 amend! B
rebase -i script before editing:
pick 0b010d6 B
pick 24547d2 amend! B
rebase -i script after editing:
pick 0b010d6 B
fixup -C 24547d2 amend! B
Rebasing (1/2)
Rebasing (2/2)
Auto-merging A
CONFLICT (content): Merge conflict in A
error: could not apply 24547d2... amend! B
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 24547d2... amend! B
[detached HEAD df4c993] new subject
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
2 files changed, 2 insertions(+), 1 deletion(-)
create mode 100644 B
Successfully rebased and updated detached HEAD.
fatal: No rebase in progress?
ok 5 - fixup -C with conflicts gives correct message
expecting success of 3437.6 'skipping fixup -C after fixup gives correct message':
test_when_finished "test_might_fail git rebase --abort" &&
git checkout --detach A3 &&
test_must_fail env FAKE_LINES="1 fixup 2 fixup_-C 4" git rebase -i A &&
git reset --hard &&
FAKE_COMMIT_AMEND=edited git rebase --continue &&
test_commit_message HEAD -m "B"
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
df4c993 new subject
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> df4c993
HEAD is now at fc6fe24 A3
rebase -i script before editing:
pick 0b010d6 B
pick 24547d2 amend! B
pick 34b9ec4 A2
pick fc6fe24 A3
rebase -i script after editing:
pick 0b010d6 B
fixup 24547d2 amend! B
fixup -C fc6fe24 A3
Rebasing (2/3)
Rebasing (3/3)
Auto-merging A
CONFLICT (content): Merge conflict in A
error: could not apply fc6fe24... A3
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply fc6fe24... A3
HEAD is now at dfd7a63 # This is a combination of 2 commits. # This is the 1st commit message:
Successfully rebased and updated detached HEAD.
fatal: No rebase in progress?
ok 6 - skipping fixup -C after fixup gives correct message
expecting success of 3437.7 'sequence of fixup, fixup -C & squash --signoff works':
git checkout --detach B3 &&
FAKE_LINES="1 fixup 2 fixup_-C 3 fixup_-C 4 squash 5 fixup_-C 6" \
FAKE_COMMIT_AMEND=squashed \
FAKE_MESSAGE_COPY=actual-squash-message \
git -c commit.status=false rebase -ik --signoff A &&
git diff-tree --exit-code --patch HEAD B3 -- &&
test_cmp_rev HEAD^ A &&
test_cmp "$TEST_DIRECTORY/t3437/expected-squash-message" \
actual-squash-message
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
e650b85 B
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> e650b85
HEAD is now at e0c8cb3 amend! amend! amend! B
rebase -i script before editing:
pick 0b010d6 B
pick 5ea5a69 fixup! B
pick 9954cb8 amend! B # empty
pick ddcbd4a amend! amend! B # empty
pick 4d0230e squash! amend! amend! B
pick e0c8cb3 amend! amend! amend! B
rebase -i script after editing:
pick 0b010d6 B
fixup 5ea5a69 fixup! B
fixup -C 9954cb8 amend! B # empty
fixup -C ddcbd4a amend! amend! B # empty
squash 4d0230e squash! amend! amend! B
fixup -C e0c8cb3 amend! amend! amend! B
Rebasing (1/6)
Rebasing (2/6)
Rebasing (3/6)
Rebasing (4/6)
Rebasing (5/6)
Rebasing (6/6)
[detached HEAD 93e1c61] B
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 B
Successfully rebased and updated detached HEAD.
ok 7 - sequence of fixup, fixup -C & squash --signoff works
expecting success of 3437.8 'first fixup -C commented out in sequence fixup fixup -C fixup -C':
test_when_finished "test_might_fail git rebase --abort" &&
git checkout --detach B2~ &&
git log -1 --pretty=format:%b >expected-message &&
FAKE_LINES="1 fixup 2 fixup_-C 3 fixup_-C 4" git rebase -i A &&
test_cmp_rev HEAD^ A &&
test_commit_message HEAD expected-message
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
93e1c61 B
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 93e1c61
HEAD is now at ddcbd4a amend! amend! B
rebase -i script before editing:
pick 0b010d6 B
pick 5ea5a69 fixup! B
pick 9954cb8 amend! B # empty
pick ddcbd4a amend! amend! B # empty
rebase -i script after editing:
pick 0b010d6 B
fixup 5ea5a69 fixup! B
fixup -C 9954cb8 amend! B # empty
fixup -C ddcbd4a amend! amend! B # empty
Rebasing (2/4)
Rebasing (3/4)
Rebasing (4/4)
Successfully rebased and updated detached HEAD.
fatal: No rebase in progress?
ok 8 - first fixup -C commented out in sequence fixup fixup -C fixup -C
expecting success of 3437.9 'multiple fixup -c opens editor once':
test_when_finished "test_might_fail git rebase --abort" &&
git checkout --detach A3 &&
git log -1 --pretty=format:%B >expected-message &&
test_write_lines "" "Modified-A3" >>expected-message &&
FAKE_COMMIT_AMEND="Modified-A3" \
FAKE_LINES="1 fixup_-C 2 fixup_-c 3 fixup_-c 4" \
EXPECT_HEADER_COUNT=4 \
git rebase -i A &&
test_cmp_rev HEAD^ A &&
get_author HEAD >actual-author &&
test_cmp expected-author actual-author &&
test_commit_message HEAD expected-message
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
8566dee B
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 8566dee
HEAD is now at fc6fe24 A3
rebase -i script before editing:
pick 0b010d6 B
pick 24547d2 amend! B
pick 34b9ec4 A2
pick fc6fe24 A3
rebase -i script after editing:
pick 0b010d6 B
fixup -C 24547d2 amend! B
fixup -c 34b9ec4 A2
fixup -c fc6fe24 A3
Rebasing (2/4)
Rebasing (3/4)
Rebasing (4/4)
[detached HEAD 68e48e4] A3
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
2 files changed, 2 insertions(+), 1 deletion(-)
create mode 100644 B
Successfully rebased and updated detached HEAD.
fatal: No rebase in progress?
ok 9 - multiple fixup -c opens editor once
expecting success of 3437.10 'sequence squash, fixup & fixup -c gives combined message':
test_when_finished "test_might_fail git rebase --abort" &&
git checkout --detach A3 &&
FAKE_LINES="1 squash 2 fixup 3 fixup_-c 4" \
FAKE_MESSAGE_COPY=actual-combined-message \
git -c commit.status=false rebase -i A &&
test_cmp "$TEST_DIRECTORY/t3437/expected-combined-message" \
actual-combined-message &&
test_cmp_rev HEAD^ A
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
68e48e4 A3
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 68e48e4
HEAD is now at fc6fe24 A3
rebase -i script before editing:
pick 0b010d6 B
pick 24547d2 amend! B
pick 34b9ec4 A2
pick fc6fe24 A3
rebase -i script after editing:
pick 0b010d6 B
squash 24547d2 amend! B
fixup 34b9ec4 A2
fixup -c fc6fe24 A3
Rebasing (2/4)
Rebasing (3/4)
Rebasing (4/4)
[detached HEAD 0a304e5] B
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
2 files changed, 2 insertions(+), 1 deletion(-)
create mode 100644 B
Successfully rebased and updated detached HEAD.
fatal: No rebase in progress?
ok 10 - sequence squash, fixup & fixup -c gives combined message
expecting success of 3437.11 'fixup -C works upon --autosquash with amend!':
git checkout --detach B3 &&
FAKE_COMMIT_AMEND=squashed \
FAKE_MESSAGE_COPY=actual-squash-message \
git -c commit.status=false rebase -ik --autosquash \
--signoff A &&
git diff-tree --exit-code --patch HEAD B3 -- &&
test_cmp_rev HEAD^ A &&
test_cmp "$TEST_DIRECTORY/t3437/expected-squash-message" \
actual-squash-message
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
0a304e5 B
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 0a304e5
HEAD is now at e0c8cb3 amend! amend! amend! B
Rebasing (1/6)
Rebasing (2/6)
Rebasing (3/6)
Rebasing (4/6)
Rebasing (5/6)
Rebasing (6/6)
[detached HEAD 93e1c61] B
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 B
Successfully rebased and updated detached HEAD.
ok 11 - fixup -C works upon --autosquash with amend!
expecting success of 3437.12 'fixup -[Cc]<commit> works':
test_when_finished "test_might_fail git rebase --abort" &&
cat >todo <<-\EOF &&
pick A
fixup -CA1
pick B
fixup -cA2
EOF
(
set_replace_editor todo &&
FAKE_COMMIT_MESSAGE="edited and fixed up" \
git rebase -i initial initial
) &&
git log --pretty=format:%B initial.. >actual &&
cat >expect <<-EOF &&
edited and fixed up
$EMPTY
new subject
$EMPTY
new
body
EOF
test_cmp expect actual
rebase -i script after editing:
pick A
fixup -CA1
pick B
fixup -cA2
Rebasing (2/4)
Rebasing (3/4)
Rebasing (4/4)
[detached HEAD 755eebe] edited and fixed up
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
2 files changed, 2 insertions(+), 1 deletion(-)
create mode 100644 B
Successfully rebased and updated detached HEAD.
fatal: No rebase in progress?
ok 12 - fixup -[Cc]<commit> works
# passed all 12 test(s)
1..12
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3438-rebase-broken-files.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3438-rebase-broken-files/.git/
expecting success of 3438.1 'set up conflicting branches':
test_commit base file &&
git checkout -b branch1 &&
test_commit one file &&
git checkout -b branch2 HEAD^ &&
test_commit two file
[master (root-commit) 215235d] base
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
Switched to a new branch 'branch1'
[branch1 92a1cb8] one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to a new branch 'branch2'
[branch2 638f6ad] two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 1 - set up conflicting branches
expecting success of 3438.2 'detect missing GIT_AUTHOR_NAME':
create_conflict &&
grep -v $item .git/rebase-merge/author-script >tmp &&
mv tmp .git/rebase-merge/author-script &&
check_resolve_fails
Switched to a new branch 'tmp'
Rebasing (1/1)
Auto-merging file
CONFLICT (content): Merge conflict in file
error: could not apply 638f6ad... two
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 638f6ad... two
error: missing 'GIT_AUTHOR_NAME'
error: you have staged changes in your working tree
If these changes are meant to be squashed into the previous commit, run:
git commit --amend
If they are meant to go into a new commit, run:
git commit
In both cases, once you're done, continue with:
git rebase --continue
error: could not commit staged changes.
ok 2 - detect missing GIT_AUTHOR_NAME
expecting success of 3438.3 'detect missing GIT_AUTHOR_EMAIL':
create_conflict &&
grep -v $item .git/rebase-merge/author-script >tmp &&
mv tmp .git/rebase-merge/author-script &&
check_resolve_fails
Reset branch 'tmp'
Rebasing (1/1)
Auto-merging file
CONFLICT (content): Merge conflict in file
error: could not apply 638f6ad... two
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 638f6ad... two
error: missing 'GIT_AUTHOR_EMAIL'
error: you have staged changes in your working tree
If these changes are meant to be squashed into the previous commit, run:
git commit --amend
If they are meant to go into a new commit, run:
git commit
In both cases, once you're done, continue with:
git rebase --continue
error: could not commit staged changes.
ok 3 - detect missing GIT_AUTHOR_EMAIL
expecting success of 3438.4 'detect missing GIT_AUTHOR_DATE':
create_conflict &&
grep -v $item .git/rebase-merge/author-script >tmp &&
mv tmp .git/rebase-merge/author-script &&
check_resolve_fails
Reset branch 'tmp'
Rebasing (1/1)
Auto-merging file
CONFLICT (content): Merge conflict in file
error: could not apply 638f6ad... two
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 638f6ad... two
error: missing 'GIT_AUTHOR_DATE'
error: you have staged changes in your working tree
If these changes are meant to be squashed into the previous commit, run:
git commit --amend
If they are meant to go into a new commit, run:
git commit
In both cases, once you're done, continue with:
git rebase --continue
error: could not commit staged changes.
ok 4 - detect missing GIT_AUTHOR_DATE
expecting success of 3438.5 'detect duplicate GIT_AUTHOR_NAME':
create_conflict &&
grep -i $item .git/rebase-merge/author-script >tmp &&
cat tmp >>.git/rebase-merge/author-script &&
check_resolve_fails
Reset branch 'tmp'
Rebasing (1/1)
Auto-merging file
CONFLICT (content): Merge conflict in file
error: could not apply 638f6ad... two
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 638f6ad... two
error: 'GIT_AUTHOR_NAME' already given
error: you have staged changes in your working tree
If these changes are meant to be squashed into the previous commit, run:
git commit --amend
If they are meant to go into a new commit, run:
git commit
In both cases, once you're done, continue with:
git rebase --continue
error: could not commit staged changes.
ok 5 - detect duplicate GIT_AUTHOR_NAME
expecting success of 3438.6 'detect duplicate GIT_AUTHOR_EMAIL':
create_conflict &&
grep -i $item .git/rebase-merge/author-script >tmp &&
cat tmp >>.git/rebase-merge/author-script &&
check_resolve_fails
Reset branch 'tmp'
Rebasing (1/1)
Auto-merging file
CONFLICT (content): Merge conflict in file
error: could not apply 638f6ad... two
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 638f6ad... two
error: 'GIT_AUTHOR_EMAIL' already given
error: you have staged changes in your working tree
If these changes are meant to be squashed into the previous commit, run:
git commit --amend
If they are meant to go into a new commit, run:
git commit
In both cases, once you're done, continue with:
git rebase --continue
error: could not commit staged changes.
ok 6 - detect duplicate GIT_AUTHOR_EMAIL
expecting success of 3438.7 'detect duplicate GIT_AUTHOR_DATE':
create_conflict &&
grep -i $item .git/rebase-merge/author-script >tmp &&
cat tmp >>.git/rebase-merge/author-script &&
check_resolve_fails
Reset branch 'tmp'
Rebasing (1/1)
Auto-merging file
CONFLICT (content): Merge conflict in file
error: could not apply 638f6ad... two
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 638f6ad... two
error: 'GIT_AUTHOR_DATE' already given
error: you have staged changes in your working tree
If these changes are meant to be squashed into the previous commit, run:
git commit --amend
If they are meant to go into a new commit, run:
git commit
In both cases, once you're done, continue with:
git rebase --continue
error: could not commit staged changes.
ok 7 - detect duplicate GIT_AUTHOR_DATE
expecting success of 3438.8 'unknown key in author-script':
create_conflict &&
echo "GIT_AUTHOR_BOGUS=${SQ}whatever${SQ}" \
>>.git/rebase-merge/author-script &&
check_resolve_fails
Reset branch 'tmp'
Rebasing (1/1)
Auto-merging file
CONFLICT (content): Merge conflict in file
error: could not apply 638f6ad... two
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 638f6ad... two
error: unknown variable 'GIT_AUTHOR_BOGUS'
error: you have staged changes in your working tree
If these changes are meant to be squashed into the previous commit, run:
git commit --amend
If they are meant to go into a new commit, run:
git commit
In both cases, once you're done, continue with:
git rebase --continue
error: could not commit staged changes.
ok 8 - unknown key in author-script
# passed all 8 test(s)
1..8
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3500-cherry.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3500-cherry/.git/
expecting success of 3500.1 'prepare repository with topic branch, and check cherry finds the 2 patches from there':
echo First > A &&
git update-index --add A &&
test_tick &&
git commit -m "Add A." &&
git checkout -b my-topic-branch &&
echo Second > B &&
git update-index --add B &&
test_tick &&
git commit -m "Add B." &&
echo AnotherSecond > C &&
git update-index --add C &&
test_tick &&
git commit -m "Add C." &&
git checkout -f main &&
rm -f B C &&
echo Third >> A &&
git update-index A &&
test_tick &&
git commit -m "Modify A." &&
expr "$(echo $(git cherry main my-topic-branch) )" : "+ [^ ]* + .*"
[main (root-commit) 4655d1a] Add A.
Author: A U Thor <bogus_email_address>
1 file changed, 1 insertion(+)
create mode 100644 A
Switched to a new branch 'my-topic-branch'
[my-topic-branch 75dd694] Add B.
Author: A U Thor <bogus_email_address>
1 file changed, 1 insertion(+)
create mode 100644 B
[my-topic-branch c8d60d2] Add C.
Author: A U Thor <bogus_email_address>
1 file changed, 1 insertion(+)
create mode 100644 C
Switched to branch 'main'
[main 90cb8ed] Modify A.
Author: A U Thor <bogus_email_address>
1 file changed, 1 insertion(+)
85
ok 1 - prepare repository with topic branch, and check cherry finds the 2 patches from there
expecting success of 3500.2 'check that cherry with limit returns only the top patch':
expr "$(echo $(git cherry main my-topic-branch my-topic-branch^1) )" : "+ [^ ]*"
42
ok 2 - check that cherry with limit returns only the top patch
expecting success of 3500.3 'cherry-pick one of the 2 patches, and check cherry recognized one and only one as new':
git cherry-pick my-topic-branch^0 &&
echo $(git cherry main my-topic-branch) &&
expr "$(echo $(git cherry main my-topic-branch) )" : "+ [^ ]* - .*"
[main 3a1a38a] Add C.
Author: A U Thor <bogus_email_address>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 C
+ 75dd694131e593dac8cf8ea0a377f1b73a80c1ad - c8d60d26f42936e7a055747f5412d41a6bce7d77
85
ok 3 - cherry-pick one of the 2 patches, and check cherry recognized one and only one as new
expecting success of 3500.4 'cherry ignores whitespace':
git switch --orphan=upstream-with-space &&
test_commit initial file &&
>expect &&
git switch --create=feature-without-space &&
# A spaceless file on the feature branch. Expect a match upstream.
printf space >file &&
git add file &&
git commit -m"file without space" &&
git log --format="- %H" -1 >>expect &&
# A further change. Should not match upstream.
test_commit change file &&
git log --format="+ %H" -1 >>expect &&
git switch upstream-with-space &&
# Same as the spaceless file, just with spaces and on upstream.
test_commit "file with space" file "s p a c e" file-with-space &&
git cherry upstream-with-space feature-without-space >actual &&
test_cmp expect actual
Switched to a new branch 'upstream-with-space'
[upstream-with-space (root-commit) 42825d6] initial
Author: A U Thor <bogus_email_address>
1 file changed, 1 insertion(+)
create mode 100644 file
Switched to a new branch 'feature-without-space'
[feature-without-space 21e64a6] file without space
Author: A U Thor <bogus_email_address>
1 file changed, 1 insertion(+), 1 deletion(-)
[feature-without-space efc65e3] change
Author: A U Thor <bogus_email_address>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to branch 'upstream-with-space'
[upstream-with-space 2ae2c61] file with space
Author: A U Thor <bogus_email_address>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 4 - cherry ignores whitespace
# passed all 4 test(s)
1..4
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3502-cherry-pick-merge.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3502-cherry-pick-merge/.git/
expecting success of 3502.1 'setup':
>A &&
>B &&
git add A B &&
git commit -m "Initial" &&
git tag initial &&
git branch side &&
echo new line >A &&
git commit -m "add line to A" A &&
git tag a &&
git checkout side &&
echo new line >B &&
git commit -m "add line to B" B &&
git tag b &&
git checkout main &&
git merge side &&
git tag c
[main (root-commit) 5c8827d] Initial
Author: A U Thor <author@example.com>
2 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 A
create mode 100644 B
[main 6e41539] add line to A
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
Switched to branch 'side'
[side 4fb21f2] add line to B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
Switched to branch 'main'
Merge made by the 'ort' strategy.
B | 1 +
1 file changed, 1 insertion(+)
ok 1 - setup
expecting success of 3502.2 'cherry-pick -m complains of bogus numbers':
# expect 129 here to distinguish between cases where
# there was nothing to cherry-pick
test_expect_code 129 git cherry-pick -m &&
test_expect_code 129 git cherry-pick -m foo b &&
test_expect_code 129 git cherry-pick -m -1 b &&
test_expect_code 129 git cherry-pick -m 0 b
error: switch `m' requires a value
error: option `mainline' expects a number greater than zero
error: option `mainline' expects a number greater than zero
error: option `mainline' expects a number greater than zero
ok 2 - cherry-pick -m complains of bogus numbers
expecting success of 3502.3 'cherry-pick explicit first parent of a non-merge':
git reset --hard &&
git checkout a^0 &&
git cherry-pick -m 1 b &&
git diff --exit-code c --
HEAD is now at c81ef52 Merge branch 'side'
Note: switching to 'a^0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 6e41539 add line to A
[detached HEAD 99ce4f9] add line to B
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 insertion(+)
ok 3 - cherry-pick explicit first parent of a non-merge
expecting success of 3502.4 'cherry pick a merge without -m should fail':
git reset --hard &&
git checkout a^0 &&
test_must_fail git cherry-pick c &&
git diff --exit-code a --
HEAD is now at 99ce4f9 add line to B
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
99ce4f9 add line to B
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 99ce4f9
HEAD is now at 6e41539 add line to A
error: commit c81ef52706f2522fbbe43a852f8cf2995e7bd8a1 is a merge but no -m option was given.
fatal: cherry-pick failed
ok 4 - cherry pick a merge without -m should fail
expecting success of 3502.5 'cherry pick a merge (1)':
git reset --hard &&
git checkout a^0 &&
git cherry-pick -m 1 c &&
git diff --exit-code c
HEAD is now at 6e41539 add line to A
HEAD is now at 6e41539 add line to A
[detached HEAD 9d31cba] Merge branch 'side'
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 insertion(+)
ok 5 - cherry pick a merge (1)
expecting success of 3502.6 'cherry pick a merge (2)':
git reset --hard &&
git checkout b^0 &&
git cherry-pick -m 2 c &&
git diff --exit-code c
HEAD is now at 9d31cba Merge branch 'side'
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
9d31cba Merge branch 'side'
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 9d31cba
HEAD is now at 4fb21f2 add line to B
[detached HEAD 9554515] Merge branch 'side'
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 insertion(+)
ok 6 - cherry pick a merge (2)
expecting success of 3502.7 'cherry pick a merge relative to nonexistent parent should fail':
git reset --hard &&
git checkout b^0 &&
test_must_fail git cherry-pick -m 3 c
HEAD is now at 9554515 Merge branch 'side'
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
9554515 Merge branch 'side'
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 9554515
HEAD is now at 4fb21f2 add line to B
error: commit c81ef52706f2522fbbe43a852f8cf2995e7bd8a1 does not have parent 3
fatal: cherry-pick failed
ok 7 - cherry pick a merge relative to nonexistent parent should fail
expecting success of 3502.8 'revert explicit first parent of a non-merge':
git reset --hard &&
git checkout c^0 &&
git revert -m 1 b &&
git diff --exit-code a --
HEAD is now at 4fb21f2 add line to B
Previous HEAD position was 4fb21f2 add line to B
HEAD is now at c81ef52 Merge branch 'side'
[detached HEAD 1b3e5cc] Revert "add line to B"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 deletion(-)
ok 8 - revert explicit first parent of a non-merge
expecting success of 3502.9 'revert a merge without -m should fail':
git reset --hard &&
git checkout c^0 &&
test_must_fail git revert c &&
git diff --exit-code c
HEAD is now at 1b3e5cc Revert "add line to B"
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
1b3e5cc Revert "add line to B"
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 1b3e5cc
HEAD is now at c81ef52 Merge branch 'side'
error: commit c81ef52706f2522fbbe43a852f8cf2995e7bd8a1 is a merge but no -m option was given.
fatal: revert failed
ok 9 - revert a merge without -m should fail
expecting success of 3502.10 'revert a merge (1)':
git reset --hard &&
git checkout c^0 &&
git revert -m 1 c &&
git diff --exit-code a --
HEAD is now at c81ef52 Merge branch 'side'
HEAD is now at c81ef52 Merge branch 'side'
[detached HEAD ab594ec] Revert "Merge branch 'side'"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 deletion(-)
ok 10 - revert a merge (1)
expecting success of 3502.11 'revert a merge (2)':
git reset --hard &&
git checkout c^0 &&
git revert -m 2 c &&
git diff --exit-code b --
HEAD is now at ab594ec Revert "Merge branch 'side'"
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
ab594ec Revert "Merge branch 'side'"
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> ab594ec
HEAD is now at c81ef52 Merge branch 'side'
[detached HEAD 3f41b61] Revert "Merge branch 'side'"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 deletion(-)
ok 11 - revert a merge (2)
expecting success of 3502.12 'revert a merge relative to nonexistent parent should fail':
git reset --hard &&
git checkout c^0 &&
test_must_fail git revert -m 3 c &&
git diff --exit-code c
HEAD is now at 3f41b61 Revert "Merge branch 'side'"
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
3f41b61 Revert "Merge branch 'side'"
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 3f41b61
HEAD is now at c81ef52 Merge branch 'side'
error: commit c81ef52706f2522fbbe43a852f8cf2995e7bd8a1 does not have parent 3
fatal: revert failed
ok 12 - revert a merge relative to nonexistent parent should fail
# passed all 12 test(s)
1..12
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3426-rebase-submodule.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/.git/
expecting success of 3426.1 'git_rebase: added submodule creates empty directory':
prolog &&
reset_work_tree_to no_submodule &&
(
cd submodule_update &&
git branch -t add_sub1 origin/add_sub1 &&
$command add_sub1 &&
test_superproject_content origin/add_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/add_sub1
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_sub1/.git/
[master (root-commit) 63c4304] Base inside first submodule
Author: A U Thor <author@example.com>
3 files changed, 4 insertions(+)
create mode 100644 .gitignore
create mode 100644 file1
create mode 100644 file2
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_sub2/.git/
[master (root-commit) 27c5769] nested submodule base
Author: A U Thor <author@example.com>
3 files changed, 4 insertions(+)
create mode 100644 .gitignore
create mode 100644 file1
create mode 100644 file2
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_repo/.git/
[master (root-commit) 27611a5] Base
Author: A U Thor <author@example.com>
3 files changed, 4 insertions(+)
create mode 100644 .gitignore
create mode 100644 file1
create mode 100644 file2
Switched to a new branch 'add_sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_repo/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_repo/uninitialized_sub'...
done.
[add_sub1 09bcf53] Add sub1
Author: A U Thor <author@example.com>
2 files changed, 8 insertions(+)
create mode 100644 .gitmodules
create mode 160000 uninitialized_sub
Switched to a new branch 'remove_sub1'
warning: unable to rmdir 'sub1': Directory not empty
warning: unable to rmdir 'uninitialized_sub': Directory not empty
[remove_sub1 d6ba723] Revert "Add sub1"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
3 files changed, 9 deletions(-)
delete mode 100644 .gitmodules
delete mode 160000 sub1
delete mode 160000 uninitialized_sub
Switched to a new branch 'modify_sub1'
Switched to a new branch 'modifications'
[modifications 03da4ea] modified file2 and added file3
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+), 1 deletion(-)
create mode 100644 file3
To /<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_sub1
* [new branch] modifications -> modifications
[modify_sub1 cb2bda7] Modify sub1
Author: A U Thor <author@example.com>
Switched to a new branch 'add_nested_sub'
Switched to a new branch 'add_nested_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_repo/sub1/sub2'...
done.
[add_nested_sub 8b3b335] add a nested submodule
Author: A U Thor <author@example.com>
2 files changed, 5 insertions(+)
create mode 100644 .gitmodules
create mode 160000 sub2
[add_nested_sub 5bc57bf] update submodule, that updates a nested submodule
Author: A U Thor <author@example.com>
Switched to a new branch 'modify_sub1_recursively'
Switched to a new branch 'modify_sub1_recursively'
Switched to a new branch 'modify_sub1_recursively'
[modify_sub1_recursively c7c4624] make a change in nested sub
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file3
[modify_sub1_recursively 92fc14a] update nested sub
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[modify_sub1_recursively 953e869] update sub1, that updates nested sub
Author: A U Thor <author@example.com>
To /<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_sub1
* [new branch] modify_sub1_recursively -> modify_sub1_recursively
To /<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_sub2
* [new branch] modify_sub1_recursively -> modify_sub1_recursively
Cleared directory 'sub2'
Submodule 'sub2' (../submodule_update_sub2) unregistered for path 'sub2'
Switched to a new branch 'replace_sub1_with_directory'
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Previous HEAD position was 63c4304 Base inside first submodule
Switched to branch 'modifications'
rm 'sub1'
[replace_sub1_with_directory cb28587] Replace sub1 with directory
Author: A U Thor <author@example.com>
5 files changed, 3 insertions(+), 5 deletions(-)
delete mode 160000 sub1
create mode 100644 sub1/file1
create mode 100644 sub1/file2
create mode 100644 sub1/file3
Switched to a new branch 'replace_directory_with_sub1'
[replace_directory_with_sub1 a2e65d5] Revert "Replace sub1 with directory"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
4 files changed, 4 insertions(+), 3 deletions(-)
delete mode 100644 sub1/file1
delete mode 100644 sub1/file2
delete mode 100644 sub1/file3
Switched to a new branch 'replace_sub1_with_file'
rm 'sub1'
[replace_sub1_with_file 2364f5a] Replace sub1 with file
Author: A U Thor <author@example.com>
2 files changed, 1 insertion(+), 5 deletions(-)
mode change 160000 => 100644 sub1
Switched to a new branch 'replace_file_with_sub1'
[replace_file_with_sub1 8b6fdfc] Revert "Replace sub1 with file"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
2 files changed, 5 insertions(+), 1 deletion(-)
mode change 100644 => 160000 sub1
Switched to a new branch 'invalid_sub1'
[invalid_sub1 e6169bf] Invalid sub1 commit
Author: A U Thor <author@example.com>
Switched to a new branch 'valid_sub1'
[valid_sub1 3036e4e] Revert "Invalid sub1 commit"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
warning: unable to rmdir 'uninitialized_sub': Directory not empty
Switched to branch 'master'
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
Switched to a new branch 'ours'
[ours dddfb5c] add_x
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[ours 2a5884b] Revert "add_x"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 deletion(-)
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/ours.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Submodule path 'uninitialized_sub': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 1 - git_rebase: added submodule creates empty directory
expecting success of 3426.2 'git_rebase: added submodule leaves existing empty directory alone':
prolog &&
reset_work_tree_to no_submodule &&
(
cd submodule_update &&
mkdir sub1 &&
git branch -t add_sub1 origin/add_sub1 &&
$command add_sub1 &&
test_superproject_content origin/add_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
Switched to a new branch 'ours'
[ours dddfb5c] add_x
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[ours 2a5884b] Revert "add_x"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 deletion(-)
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/ours.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Submodule path 'uninitialized_sub': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 2 - git_rebase: added submodule leaves existing empty directory alone
expecting success of 3426.3 'git_rebase: replace tracked file with submodule creates empty directory':
prolog &&
reset_work_tree_to replace_sub1_with_file &&
(
cd submodule_update &&
git branch -t replace_file_with_sub1 origin/replace_file_with_sub1 &&
$command replace_file_with_sub1 &&
test_superproject_content origin/replace_file_with_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/replace_file_with_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'replace_sub1_with_file'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
fatal: Needed a single revision
branch 'replace_file_with_sub1' set up to track 'origin/replace_file_with_sub1'.
Switched to a new branch 'ours'
[ours db2b5c3] add_x
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[ours d7a6c40] Revert "add_x"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 deletion(-)
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/ours.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Submodule path 'uninitialized_sub': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 3 - git_rebase: replace tracked file with submodule creates empty directory
expecting success of 3426.4 'git_rebase: replace directory with submodule':
prolog &&
reset_work_tree_to replace_sub1_with_directory &&
(
cd submodule_update &&
git branch -t replace_directory_with_sub1 origin/replace_directory_with_sub1 &&
$command replace_directory_with_sub1 &&
test_superproject_content origin/replace_directory_with_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/replace_directory_with_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'replace_sub1_with_directory'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
fatal: Needed a single revision
branch 'replace_directory_with_sub1' set up to track 'origin/replace_directory_with_sub1'.
Switched to a new branch 'ours'
[ours c876b15] add_x
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[ours 86f2b1a] Revert "add_x"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 deletion(-)
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/ours.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Submodule path 'uninitialized_sub': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 4 - git_rebase: replace directory with submodule
expecting success of 3426.5 'git_rebase: removed submodule leaves submodule directory and its contents in place':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t remove_sub1 origin/remove_sub1 &&
$command remove_sub1 &&
test_superproject_content origin/remove_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'remove_sub1' set up to track 'origin/remove_sub1'.
Switched to a new branch 'ours'
[ours 506db5c] add_x
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[ours 9ad3499] Revert "add_x"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 deletion(-)
warning: unable to rmdir 'sub1': Directory not empty
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/ours.
ok 5 - git_rebase: removed submodule leaves submodule directory and its contents in place
expecting success of 3426.6 'git_rebase: removed submodule leaves submodule containing a .git directory alone':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t remove_sub1 origin/remove_sub1 &&
replace_gitfile_with_git_dir sub1 &&
$command remove_sub1 &&
test_superproject_content origin/remove_sub1 &&
test_git_directory_is_unchanged sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'remove_sub1' set up to track 'origin/remove_sub1'.
Switched to a new branch 'ours'
[ours 506db5c] add_x
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[ours 9ad3499] Revert "add_x"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 deletion(-)
warning: unable to rmdir 'sub1': Directory not empty
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/ours.
ok 6 - git_rebase: removed submodule leaves submodule containing a .git directory alone
expecting success of 3426.7 'git_rebase: replace submodule with a directory must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_directory origin/replace_sub1_with_directory &&
$command replace_sub1_with_directory test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
Switched to a new branch 'ours'
[ours 506db5c] add_x
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[ours 9ad3499] Revert "add_x"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 deletion(-)
error: The following untracked working tree files would be overwritten by checkout:
sub1/file1
sub1/file2
Please move or remove them before you switch branches.
Aborting
error: could not detach HEAD
ok 7 - git_rebase: replace submodule with a directory must fail
expecting success of 3426.8 'git_rebase: replace submodule containing a .git directory with a directory must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_directory origin/replace_sub1_with_directory &&
replace_gitfile_with_git_dir sub1 &&
$command replace_sub1_with_directory test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_git_directory_is_unchanged sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
Switched to a new branch 'ours'
[ours 506db5c] add_x
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[ours 9ad3499] Revert "add_x"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 deletion(-)
error: The following untracked working tree files would be overwritten by checkout:
sub1/file1
sub1/file2
Please move or remove them before you switch branches.
Aborting
error: could not detach HEAD
ok 8 - git_rebase: replace submodule containing a .git directory with a directory must fail
checking known breakage of 3426.9 'git_rebase: replace submodule with a file must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_file origin/replace_sub1_with_file &&
$command replace_sub1_with_file test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
Switched to a new branch 'ours'
[ours 506db5c] add_x
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[ours 9ad3499] Revert "add_x"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 deletion(-)
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/ours.
test_must_fail: command succeeded: git rebase replace_sub1_with_file
not ok 9 - git_rebase: replace submodule with a file must fail # TODO known breakage
checking known breakage of 3426.10 'git_rebase: replace submodule containing a .git directory with a file must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_file origin/replace_sub1_with_file &&
replace_gitfile_with_git_dir sub1 &&
$command replace_sub1_with_file test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_git_directory_is_unchanged sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
Switched to a new branch 'ours'
[ours 506db5c] add_x
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[ours 9ad3499] Revert "add_x"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 deletion(-)
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/ours.
test_must_fail: command succeeded: git rebase replace_sub1_with_file
not ok 10 - git_rebase: replace submodule containing a .git directory with a file must fail # TODO known breakage
expecting success of 3426.11 'git_rebase: modified submodule does not update submodule work tree':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t modify_sub1 origin/modify_sub1 &&
$command modify_sub1 &&
test_superproject_content origin/modify_sub1 &&
test_submodule_content sub1 origin/add_sub1 &&
git submodule update &&
test_submodule_content sub1 origin/modify_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'modify_sub1' set up to track 'origin/modify_sub1'.
Switched to a new branch 'ours'
[ours 506db5c] add_x
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[ours 9ad3499] Revert "add_x"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 deletion(-)
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/ours.
Submodule path 'sub1': checked out '03da4ea88bb165bd26ee0b2e5c657f2858b23f53'
ok 11 - git_rebase: modified submodule does not update submodule work tree
expecting success of 3426.12 'git_rebase: modified submodule does not update submodule work tree to invalid commit':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t invalid_sub1 origin/invalid_sub1 &&
$command invalid_sub1 &&
test_superproject_content origin/invalid_sub1 &&
test_submodule_content sub1 origin/add_sub1 &&
test_must_fail git submodule update &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'invalid_sub1' set up to track 'origin/invalid_sub1'.
Switched to a new branch 'ours'
[ours 506db5c] add_x
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[ours 9ad3499] Revert "add_x"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 deletion(-)
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/ours.
fatal: git upload-pack: not our ref 0123456789012345678901234567890123456789
fatal: remote error: upload-pack: not our ref 0123456789012345678901234567890123456789
fatal: Fetched in submodule path 'sub1', but it did not contain 0123456789012345678901234567890123456789. Direct fetching of that commit failed.
ok 12 - git_rebase: modified submodule does not update submodule work tree to invalid commit
expecting success of 3426.13 'git_rebase: modified submodule does not update submodule work tree from invalid commit':
prolog &&
reset_work_tree_to invalid_sub1 &&
(
cd submodule_update &&
git branch -t valid_sub1 origin/valid_sub1 &&
$command valid_sub1 &&
test_superproject_content origin/valid_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/valid_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'invalid_sub1'
branch 'invalid_sub1' set up to track 'origin/invalid_sub1'.
fatal: Needed a single revision
branch 'valid_sub1' set up to track 'origin/valid_sub1'.
Switched to a new branch 'ours'
[ours 8fb6209] add_x
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[ours 1145b44] Revert "add_x"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 deletion(-)
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/ours.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Submodule path 'uninitialized_sub': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 13 - git_rebase: modified submodule does not update submodule work tree from invalid commit
expecting success of 3426.14 'git_rebase: added submodule doesn't remove untracked unignored file with same name':
prolog &&
reset_work_tree_to no_submodule &&
(
cd submodule_update &&
git branch -t add_sub1 origin/add_sub1 &&
>sub1 &&
$command add_sub1 test_must_fail &&
test_superproject_content origin/no_submodule &&
test_must_be_empty sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
Switched to a new branch 'ours'
[ours dddfb5c] add_x
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[ours 2a5884b] Revert "add_x"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 deletion(-)
error: The following untracked working tree files would be overwritten by checkout:
sub1
Please move or remove them before you switch branches.
Aborting
error: could not detach HEAD
ok 14 - git_rebase: added submodule doesn't remove untracked unignored file with same name
expecting success of 3426.15 'git_rebase_interactive: added submodule creates empty directory':
prolog &&
reset_work_tree_to no_submodule &&
(
cd submodule_update &&
git branch -t add_sub1 origin/add_sub1 &&
$command add_sub1 &&
test_superproject_content origin/add_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
Switched to a new branch 'ours'
[ours dddfb5c] add_x
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[ours 2a5884b] Revert "add_x"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 deletion(-)
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/ours.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Submodule path 'uninitialized_sub': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 15 - git_rebase_interactive: added submodule creates empty directory
expecting success of 3426.16 'git_rebase_interactive: added submodule leaves existing empty directory alone':
prolog &&
reset_work_tree_to no_submodule &&
(
cd submodule_update &&
mkdir sub1 &&
git branch -t add_sub1 origin/add_sub1 &&
$command add_sub1 &&
test_superproject_content origin/add_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
Switched to a new branch 'ours'
[ours dddfb5c] add_x
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[ours 2a5884b] Revert "add_x"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 deletion(-)
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/ours.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Submodule path 'uninitialized_sub': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 16 - git_rebase_interactive: added submodule leaves existing empty directory alone
expecting success of 3426.17 'git_rebase_interactive: replace tracked file with submodule creates empty directory':
prolog &&
reset_work_tree_to replace_sub1_with_file &&
(
cd submodule_update &&
git branch -t replace_file_with_sub1 origin/replace_file_with_sub1 &&
$command replace_file_with_sub1 &&
test_superproject_content origin/replace_file_with_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/replace_file_with_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'replace_sub1_with_file'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
fatal: Needed a single revision
branch 'replace_file_with_sub1' set up to track 'origin/replace_file_with_sub1'.
Switched to a new branch 'ours'
[ours db2b5c3] add_x
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[ours d7a6c40] Revert "add_x"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 deletion(-)
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/ours.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Submodule path 'uninitialized_sub': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 17 - git_rebase_interactive: replace tracked file with submodule creates empty directory
expecting success of 3426.18 'git_rebase_interactive: replace directory with submodule':
prolog &&
reset_work_tree_to replace_sub1_with_directory &&
(
cd submodule_update &&
git branch -t replace_directory_with_sub1 origin/replace_directory_with_sub1 &&
$command replace_directory_with_sub1 &&
test_superproject_content origin/replace_directory_with_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/replace_directory_with_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'replace_sub1_with_directory'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
fatal: Needed a single revision
branch 'replace_directory_with_sub1' set up to track 'origin/replace_directory_with_sub1'.
Switched to a new branch 'ours'
[ours c876b15] add_x
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[ours 86f2b1a] Revert "add_x"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 deletion(-)
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/ours.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Submodule path 'uninitialized_sub': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 18 - git_rebase_interactive: replace directory with submodule
expecting success of 3426.19 'git_rebase_interactive: removed submodule leaves submodule directory and its contents in place':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t remove_sub1 origin/remove_sub1 &&
$command remove_sub1 &&
test_superproject_content origin/remove_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'remove_sub1' set up to track 'origin/remove_sub1'.
Switched to a new branch 'ours'
[ours 506db5c] add_x
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[ours 9ad3499] Revert "add_x"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 deletion(-)
warning: unable to rmdir 'sub1': Directory not empty
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/ours.
ok 19 - git_rebase_interactive: removed submodule leaves submodule directory and its contents in place
expecting success of 3426.20 'git_rebase_interactive: removed submodule leaves submodule containing a .git directory alone':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t remove_sub1 origin/remove_sub1 &&
replace_gitfile_with_git_dir sub1 &&
$command remove_sub1 &&
test_superproject_content origin/remove_sub1 &&
test_git_directory_is_unchanged sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'remove_sub1' set up to track 'origin/remove_sub1'.
Switched to a new branch 'ours'
[ours 506db5c] add_x
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[ours 9ad3499] Revert "add_x"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 deletion(-)
warning: unable to rmdir 'sub1': Directory not empty
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/ours.
ok 20 - git_rebase_interactive: removed submodule leaves submodule containing a .git directory alone
expecting success of 3426.21 'git_rebase_interactive: replace submodule with a directory must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_directory origin/replace_sub1_with_directory &&
$command replace_sub1_with_directory test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
Switched to a new branch 'ours'
[ours 506db5c] add_x
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[ours 9ad3499] Revert "add_x"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 deletion(-)
error: The following untracked working tree files would be overwritten by checkout:
sub1/file1
sub1/file2
Please move or remove them before you switch branches.
Aborting
error: could not detach HEAD
ok 21 - git_rebase_interactive: replace submodule with a directory must fail
expecting success of 3426.22 'git_rebase_interactive: replace submodule containing a .git directory with a directory must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_directory origin/replace_sub1_with_directory &&
replace_gitfile_with_git_dir sub1 &&
$command replace_sub1_with_directory test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_git_directory_is_unchanged sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
Switched to a new branch 'ours'
[ours 506db5c] add_x
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[ours 9ad3499] Revert "add_x"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 deletion(-)
error: The following untracked working tree files would be overwritten by checkout:
sub1/file1
sub1/file2
Please move or remove them before you switch branches.
Aborting
error: could not detach HEAD
ok 22 - git_rebase_interactive: replace submodule containing a .git directory with a directory must fail
checking known breakage of 3426.23 'git_rebase_interactive: replace submodule with a file must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_file origin/replace_sub1_with_file &&
$command replace_sub1_with_file test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
Switched to a new branch 'ours'
[ours 506db5c] add_x
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[ours 9ad3499] Revert "add_x"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 deletion(-)
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/ours.
test_must_fail: command succeeded: git rebase -i replace_sub1_with_file
not ok 23 - git_rebase_interactive: replace submodule with a file must fail # TODO known breakage
checking known breakage of 3426.24 'git_rebase_interactive: replace submodule containing a .git directory with a file must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_file origin/replace_sub1_with_file &&
replace_gitfile_with_git_dir sub1 &&
$command replace_sub1_with_file test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_git_directory_is_unchanged sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
Switched to a new branch 'ours'
[ours 506db5c] add_x
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[ours 9ad3499] Revert "add_x"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 deletion(-)
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/ours.
test_must_fail: command succeeded: git rebase -i replace_sub1_with_file
not ok 24 - git_rebase_interactive: replace submodule containing a .git directory with a file must fail # TODO known breakage
expecting success of 3426.25 'git_rebase_interactive: modified submodule does not update submodule work tree':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t modify_sub1 origin/modify_sub1 &&
$command modify_sub1 &&
test_superproject_content origin/modify_sub1 &&
test_submodule_content sub1 origin/add_sub1 &&
git submodule update &&
test_submodule_content sub1 origin/modify_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'modify_sub1' set up to track 'origin/modify_sub1'.
Switched to a new branch 'ours'
[ours 506db5c] add_x
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[ours 9ad3499] Revert "add_x"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 deletion(-)
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/ours.
Submodule path 'sub1': checked out '03da4ea88bb165bd26ee0b2e5c657f2858b23f53'
ok 25 - git_rebase_interactive: modified submodule does not update submodule work tree
expecting success of 3426.26 'git_rebase_interactive: modified submodule does not update submodule work tree to invalid commit':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t invalid_sub1 origin/invalid_sub1 &&
$command invalid_sub1 &&
test_superproject_content origin/invalid_sub1 &&
test_submodule_content sub1 origin/add_sub1 &&
test_must_fail git submodule update &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'invalid_sub1' set up to track 'origin/invalid_sub1'.
Switched to a new branch 'ours'
[ours 506db5c] add_x
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[ours 9ad3499] Revert "add_x"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 deletion(-)
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/ours.
fatal: remote error: upload-pack: not our ref 0123456789012345678901234567890123456789
fatal: Fetched in submodule path 'sub1', but it did not contain 0123456789012345678901234567890123456789. Direct fetching of that commit failed.
fatal: git upload-pack: not our ref 0123456789012345678901234567890123456789
ok 26 - git_rebase_interactive: modified submodule does not update submodule work tree to invalid commit
expecting success of 3426.27 'git_rebase_interactive: modified submodule does not update submodule work tree from invalid commit':
prolog &&
reset_work_tree_to invalid_sub1 &&
(
cd submodule_update &&
git branch -t valid_sub1 origin/valid_sub1 &&
$command valid_sub1 &&
test_superproject_content origin/valid_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/valid_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'invalid_sub1'
branch 'invalid_sub1' set up to track 'origin/invalid_sub1'.
fatal: Needed a single revision
branch 'valid_sub1' set up to track 'origin/valid_sub1'.
Switched to a new branch 'ours'
[ours 8fb6209] add_x
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[ours 1145b44] Revert "add_x"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 deletion(-)
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/ours.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Submodule path 'uninitialized_sub': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 27 - git_rebase_interactive: modified submodule does not update submodule work tree from invalid commit
expecting success of 3426.28 'git_rebase_interactive: added submodule doesn't remove untracked unignored file with same name':
prolog &&
reset_work_tree_to no_submodule &&
(
cd submodule_update &&
git branch -t add_sub1 origin/add_sub1 &&
>sub1 &&
$command add_sub1 test_must_fail &&
test_superproject_content origin/no_submodule &&
test_must_be_empty sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
Switched to a new branch 'ours'
[ours dddfb5c] add_x
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[ours 2a5884b] Revert "add_x"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 deletion(-)
error: The following untracked working tree files would be overwritten by checkout:
sub1
Please move or remove them before you switch branches.
Aborting
error: could not detach HEAD
ok 28 - git_rebase_interactive: added submodule doesn't remove untracked unignored file with same name
expecting success of 3426.29 'rebase interactive ignores modified submodules':
test_when_finished "rm -rf super sub" &&
git init sub &&
git -C sub commit --allow-empty -m "Initial commit" &&
git init super &&
git -c protocol.file.allow=always \
-C super submodule add ../sub &&
git -C super config submodule.sub.ignore dirty &&
>super/foo &&
git -C super add foo &&
git -C super commit -m "Initial commit" &&
test_commit -C super a &&
test_commit -C super b &&
test_commit -C super/sub c &&
set_fake_editor &&
git -C super rebase -i HEAD^^
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/sub/.git/
[master (root-commit) b8cea33] Initial commit
Author: A U Thor <author@example.com>
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/super/.git/
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3426-rebase-submodule/super/sub'...
done.
[master (root-commit) f377606] Initial commit
Author: A U Thor <author@example.com>
3 files changed, 4 insertions(+)
create mode 100644 .gitmodules
create mode 100644 foo
create mode 160000 sub
[master 4e30919] a
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 a.t
[master 41aa191] b
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 b.t
[master a61c667] c
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 c.t
Successfully rebased and updated refs/heads/master.
ok 29 - rebase interactive ignores modified submodules
# still have 4 known breakage(s)
# passed all remaining 25 test(s)
1..29
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3501-revert-cherry-pick.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3501-revert-cherry-pick/.git/
expecting success of 3501.1 'setup':
for l in a b c d e f g h i j k l m n o
do
echo $l$l$l$l$l$l$l$l$l || return 1
done >oops &&
test_tick &&
git add oops &&
git commit -m initial &&
git tag initial &&
test_tick &&
echo "Add extra line at the end" >>oops &&
git commit -a -m added &&
git tag added &&
test_tick &&
git mv oops spoo &&
git commit -m rename1 &&
git tag rename1 &&
test_tick &&
git checkout -b side initial &&
git mv oops opos &&
git commit -m rename2 &&
git tag rename2
[main (root-commit) a242c62] initial
Author: A U Thor <author@example.com>
1 file changed, 15 insertions(+)
create mode 100644 oops
[main 4399171] added
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[main 31df260] rename1
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
rename oops => spoo (100%)
Switched to a new branch 'side'
[side f6d0551] rename2
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
rename oops => opos (100%)
ok 1 - setup
expecting success of 3501.2 'cherry-pick --nonsense':
pos=$(git rev-parse HEAD) &&
git diff --exit-code HEAD &&
test_must_fail git cherry-pick --nonsense 2>msg &&
git diff --exit-code HEAD "$pos" &&
test_i18ngrep "[Uu]sage:" msg
usage: git cherry-pick [--edit] [-n] [-m <parent-number>] [-s] [-x] [--ff]
ok 2 - cherry-pick --nonsense
expecting success of 3501.3 'revert --nonsense':
pos=$(git rev-parse HEAD) &&
git diff --exit-code HEAD &&
test_must_fail git revert --nonsense 2>msg &&
git diff --exit-code HEAD "$pos" &&
test_i18ngrep "[Uu]sage:" msg
usage: git revert [--[no-]edit] [-n] [-m <parent-number>] [-s] [-S[<keyid>]] <commit>...
ok 3 - revert --nonsense
expecting success of 3501.4 'cherry-pick after renaming branch':
git checkout rename2 &&
git cherry-pick added &&
test_cmp_rev rename2 HEAD^ &&
grep "Add extra line at the end" opos &&
git reflog -1 | grep cherry-pick
Note: switching to 'rename2'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at f6d0551 rename2
[detached HEAD 2da2754] added
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
1 file changed, 1 insertion(+)
Add extra line at the end
2da2754 HEAD@{0}: cherry-pick: added
ok 4 - cherry-pick after renaming branch
expecting success of 3501.5 'revert after renaming branch':
git checkout rename1 &&
git revert added &&
test_cmp_rev rename1 HEAD^ &&
test_path_is_file spoo &&
test_cmp_rev initial:oops HEAD:spoo &&
git reflog -1 | grep revert
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
2da2754 added
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 2da2754
HEAD is now at 31df260 rename1
[detached HEAD 9990ddc] Revert "added"
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 deletion(-)
9990ddc HEAD@{0}: revert: Revert "added"
ok 5 - revert after renaming branch
expecting success of 3501.6 'cherry-pick on stat-dirty working tree':
git clone . copy &&
(
cd copy &&
git checkout initial &&
test-tool chmtime +40 oops &&
git cherry-pick added
)
Cloning into 'copy'...
done.
Note: switching to '9990ddca844ef3875d864da986dfd141d1a88865'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
9990ddc Revert "added"
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 9990ddc
HEAD is now at a242c62 initial
[detached HEAD 096ed54] added
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
1 file changed, 1 insertion(+)
ok 6 - cherry-pick on stat-dirty working tree
expecting success of 3501.7 'revert forbidden on dirty working tree':
echo content >extra_file &&
git add extra_file &&
test_must_fail git revert HEAD 2>errors &&
test_i18ngrep "your local changes would be overwritten by " errors
error: your local changes would be overwritten by revert.
ok 7 - revert forbidden on dirty working tree
expecting success of 3501.8 'cherry-pick on unborn branch':
git checkout --orphan unborn &&
git rm --cached -r . &&
rm -rf * &&
git cherry-pick initial &&
git diff --quiet initial &&
test_cmp_rev ! initial HEAD
Switched to a new branch 'unborn'
A extra_file
rm 'extra_file'
rm 'spoo'
[unborn 38e6d75] initial
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:13:13 2005 -0700
1 file changed, 15 insertions(+)
create mode 100644 oops
ok 8 - cherry-pick on unborn branch
expecting success of 3501.9 'cherry-pick "-" to pick from previous branch':
git checkout unborn &&
test_commit to-pick actual content &&
git checkout main &&
git cherry-pick - &&
echo content >expect &&
test_cmp expect actual
Already on 'unborn'
[unborn d9ba711] to-pick
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 actual
Switched to branch 'main'
[main 7c68b81] to-pick
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:17:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 actual
ok 9 - cherry-pick "-" to pick from previous branch
expecting success of 3501.10 'cherry-pick "-" is meaningless without checkout':
test_create_repo afresh &&
(
cd afresh &&
test_commit one &&
test_commit two &&
test_commit three &&
test_must_fail git cherry-pick -
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3501-revert-cherry-pick/afresh/.git/
[main (root-commit) 26cc6ba] one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 one.t
[main 776892e] two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 two.t
[main 6c11eb3] three
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 three.t
fatal: bad revision '@{-1}'
ok 10 - cherry-pick "-" is meaningless without checkout
expecting success of 3501.11 'cherry-pick "-" works with arguments':
git checkout -b side-branch &&
test_commit change actual change &&
git checkout main &&
git cherry-pick -s - &&
echo "Signed-off-by: C O Mitter <committer@example.com>" >expect &&
git cat-file commit HEAD | grep ^Signed-off-by: >signoff &&
test_cmp expect signoff &&
echo change >expect &&
test_cmp expect actual
Switched to a new branch 'side-branch'
[side-branch 94f7852] change
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to branch 'main'
[main a524e05] change
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:18:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
ok 11 - cherry-pick "-" works with arguments
expecting success of 3501.12 'cherry-pick works with dirty renamed file':
test_commit to-rename &&
git checkout -b unrelated &&
test_commit unrelated &&
git checkout @{-1} &&
git mv to-rename.t renamed &&
test_tick &&
git commit -m renamed &&
echo modified >renamed &&
git cherry-pick refs/heads/unrelated &&
test $(git rev-parse :0:renamed) = $(git rev-parse HEAD~2:to-rename.t) &&
grep -q "^modified$" renamed
[main 035700e] to-rename
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 to-rename.t
Switched to a new branch 'unrelated'
[unrelated ef4075f] unrelated
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 unrelated.t
Switched to branch 'main'
[main 356b685] renamed
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
rename to-rename.t => renamed (100%)
[main d1730b0] unrelated
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:20:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 unrelated.t
ok 12 - cherry-pick works with dirty renamed file
expecting success of 3501.13 'advice from failed revert':
test_when_finished "git reset --hard" &&
test_commit --no-tag "add dream" dream dream &&
dream_oid=$(git rev-parse --short HEAD) &&
cat <<-EOF >expected &&
error: could not revert $dream_oid... add dream
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git revert --continue".
hint: You can instead skip this commit with "git revert --skip".
hint: To abort and get back to the state before "git revert",
hint: run "git revert --abort".
EOF
test_commit --append --no-tag "double-add dream" dream dream &&
test_must_fail git revert HEAD^ 2>actual &&
test_cmp expected actual
[main 10ebfde] add dream
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 dream
[main 9bf0a53] double-add dream
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
CONFLICT (modify/delete): dream deleted in parent of 10ebfde (add dream) and modified in HEAD. Version HEAD of dream left in tree.
HEAD is now at 9bf0a53 double-add dream
ok 13 - advice from failed revert
expecting success of 3501.14 'identification of reverted commit (default)':
test_commit to-ident &&
test_when_finished "git reset --hard to-ident" &&
git checkout --detach to-ident &&
git revert --no-edit HEAD &&
git cat-file commit HEAD >actual.raw &&
grep "^This reverts " actual.raw >actual &&
echo "This reverts commit $(git rev-parse HEAD^)." >expect &&
test_cmp expect actual
[main cf6fdeb] to-ident
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 to-ident.t
HEAD is now at cf6fdeb to-ident
[detached HEAD c920115] Revert "to-ident"
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:24:13 2005 -0700
1 file changed, 1 deletion(-)
delete mode 100644 to-ident.t
HEAD is now at cf6fdeb to-ident
ok 14 - identification of reverted commit (default)
expecting success of 3501.15 'identification of reverted commit (--reference)':
git checkout --detach to-ident &&
git revert --reference --no-edit HEAD &&
git cat-file commit HEAD >actual.raw &&
grep "^This reverts " actual.raw >actual &&
echo "This reverts commit $(git show -s --pretty=reference HEAD^)." >expect &&
test_cmp expect actual
HEAD is now at cf6fdeb to-ident
[detached HEAD 7f489d3] # *** SAY WHY WE ARE REVERTING ON THE TITLE LINE ***
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:24:13 2005 -0700
1 file changed, 1 deletion(-)
delete mode 100644 to-ident.t
ok 15 - identification of reverted commit (--reference)
expecting success of 3501.16 'identification of reverted commit (revert.reference)':
git checkout --detach to-ident &&
git -c revert.reference=true revert --no-edit HEAD &&
git cat-file commit HEAD >actual.raw &&
grep "^This reverts " actual.raw >actual &&
echo "This reverts commit $(git show -s --pretty=reference HEAD^)." >expect &&
test_cmp expect actual
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
7f489d3 # *** SAY WHY WE ARE REVERTING ON THE TITLE LINE ***
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 7f489d3
HEAD is now at cf6fdeb to-ident
M actual
[detached HEAD 7f489d3] # *** SAY WHY WE ARE REVERTING ON THE TITLE LINE ***
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:24:13 2005 -0700
1 file changed, 1 deletion(-)
delete mode 100644 to-ident.t
ok 16 - identification of reverted commit (revert.reference)
expecting success of 3501.17 'cherry-pick is unaware of --reference (for now)':
test_when_finished "git reset --hard" &&
test_must_fail git cherry-pick --reference HEAD 2>actual &&
grep "^usage: git cherry-pick" actual
usage: git cherry-pick [--edit] [-n] [-m <parent-number>] [-s] [-x] [--ff]
HEAD is now at 7f489d3 # *** SAY WHY WE ARE REVERTING ON THE TITLE LINE ***
ok 17 - cherry-pick is unaware of --reference (for now)
# passed all 17 test(s)
1..17
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3503-cherry-pick-root.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3503-cherry-pick-root/.git/
expecting success of 3503.1 'setup':
echo first > file1 &&
git add file1 &&
test_tick &&
git commit -m "first" &&
git symbolic-ref HEAD refs/heads/second &&
rm .git/index file1 &&
echo second > file2 &&
git add file2 &&
test_tick &&
git commit -m "second" &&
git symbolic-ref HEAD refs/heads/third &&
rm .git/index file2 &&
echo third > file3 &&
git add file3 &&
test_tick &&
git commit -m "third"
[main (root-commit) 0c72e4f] first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file1
[second (root-commit) bbcd39a] second
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file2
[third (root-commit) 4911fa6] third
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file3
ok 1 - setup
expecting success of 3503.2 'cherry-pick a root commit':
git checkout second^0 &&
git cherry-pick main &&
echo first >expect &&
test_cmp expect file1
Note: switching to 'second^0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at bbcd39a second
[detached HEAD 3e6f574] first
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:13:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 file1
ok 2 - cherry-pick a root commit
expecting success of 3503.3 'revert a root commit':
git revert main &&
test_path_is_missing file1
[detached HEAD 3eb7e0d] Revert "first"
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 deletion(-)
delete mode 100644 file1
ok 3 - revert a root commit
expecting success of 3503.4 'cherry-pick a root commit with an external strategy':
git cherry-pick --strategy=resolve main &&
echo first >expect &&
test_cmp expect file1
Trying simple merge.
[detached HEAD 54587e2] first
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:13:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 file1
ok 4 - cherry-pick a root commit with an external strategy
expecting success of 3503.5 'revert a root commit with an external strategy':
git revert --strategy=resolve main &&
test_path_is_missing file1
Removing file1
[detached HEAD a457399] Revert "first"
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 deletion(-)
delete mode 100644 file1
ok 5 - revert a root commit with an external strategy
expecting success of 3503.6 'cherry-pick two root commits':
echo first >expect.file1 &&
echo second >expect.file2 &&
echo third >expect.file3 &&
git checkout second^0 &&
git cherry-pick main third &&
test_cmp expect.file1 file1 &&
test_cmp expect.file2 file2 &&
test_cmp expect.file3 file3 &&
git rev-parse --verify HEAD^^ &&
test_must_fail git rev-parse --verify HEAD^^^
Warning: you are leaving 4 commits behind, not connected to
any of your branches:
a457399 Revert "first"
54587e2 first
3eb7e0d Revert "first"
3e6f574 first
If you want to keep them by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> a457399
HEAD is now at bbcd39a second
[detached HEAD 3e6f574] first
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:13:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 file1
[detached HEAD 2069bd1] third
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 file3
bbcd39af5b7918b8e79c884f958eeddbace1fd46
fatal: Needed a single revision
ok 6 - cherry-pick two root commits
# passed all 6 test(s)
1..6
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3505-cherry-pick-empty.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3505-cherry-pick-empty/.git/
expecting success of 3505.1 'setup':
echo first > file1 &&
git add file1 &&
test_tick &&
git commit -m "first" &&
git checkout -b empty-message-branch &&
echo third >> file1 &&
git add file1 &&
test_tick &&
git commit --allow-empty-message -m "" &&
git checkout main &&
git checkout -b empty-change-branch &&
test_tick &&
git commit --allow-empty -m "empty"
[main (root-commit) 0c72e4f] first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file1
Switched to a new branch 'empty-message-branch'
[empty-message-branch d6aa1e8]
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
Switched to branch 'main'
Switched to a new branch 'empty-change-branch'
[empty-change-branch 0f51a27] empty
Author: A U Thor <author@example.com>
ok 1 - setup
expecting success of 3505.2 'cherry-pick an empty commit':
git checkout main &&
test_expect_code 1 git cherry-pick empty-change-branch
Switched to branch 'main'
The previous cherry-pick is now empty, possibly due to conflict resolution.
If you wish to commit it anyway, use:
git commit --allow-empty
Otherwise, please use 'git cherry-pick --skip'
On branch main
You are currently cherry-picking commit 0f51a27.
(all conflicts fixed: run "git cherry-pick --continue")
(use "git cherry-pick --skip" to skip this patch)
(use "git cherry-pick --abort" to cancel the cherry-pick operation)
nothing to commit, working tree clean
ok 2 - cherry-pick an empty commit
expecting success of 3505.3 'index lockfile was removed':
test ! -f .git/index.lock
ok 3 - index lockfile was removed
expecting success of 3505.4 'cherry-pick a commit with an empty message':
test_when_finished "git reset --hard empty-message-branch~1" &&
git checkout main &&
git cherry-pick empty-message-branch
Already on 'main'
warning: cancelling a cherry picking in progress
[main d800ed2]
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
1 file changed, 1 insertion(+)
HEAD is now at 0c72e4f first
ok 4 - cherry-pick a commit with an empty message
expecting success of 3505.5 'index lockfile was removed':
test ! -f .git/index.lock
ok 5 - index lockfile was removed
expecting success of 3505.6 'cherry-pick a commit with an empty message with --allow-empty-message':
git checkout -f main &&
git cherry-pick --allow-empty-message empty-message-branch
Already on 'main'
[main d800ed2]
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
1 file changed, 1 insertion(+)
ok 6 - cherry-pick a commit with an empty message with --allow-empty-message
expecting success of 3505.7 'cherry pick an empty non-ff commit without --allow-empty':
git checkout main &&
echo fourth >>file2 &&
git add file2 &&
git commit -m "fourth" &&
test_must_fail git cherry-pick empty-change-branch
Already on 'main'
[main 36c19c0] fourth
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file2
The previous cherry-pick is now empty, possibly due to conflict resolution.
If you wish to commit it anyway, use:
git commit --allow-empty
Otherwise, please use 'git cherry-pick --skip'
On branch main
You are currently cherry-picking commit 0f51a27.
(all conflicts fixed: run "git cherry-pick --continue")
(use "git cherry-pick --skip" to skip this patch)
(use "git cherry-pick --abort" to cancel the cherry-pick operation)
nothing to commit, working tree clean
ok 7 - cherry pick an empty non-ff commit without --allow-empty
expecting success of 3505.8 'cherry pick an empty non-ff commit with --allow-empty':
git checkout main &&
git cherry-pick --allow-empty empty-change-branch
Already on 'main'
warning: cancelling a cherry picking in progress
[main 72a973f] empty
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
ok 8 - cherry pick an empty non-ff commit with --allow-empty
expecting success of 3505.9 'cherry pick with --keep-redundant-commits':
git checkout main &&
git cherry-pick --keep-redundant-commits HEAD^
Already on 'main'
[main 938d13f] fourth
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
ok 9 - cherry pick with --keep-redundant-commits
expecting success of 3505.10 'cherry-pick a commit that becomes no-op (prep)':
git checkout main &&
git branch fork &&
echo foo >file2 &&
git add file2 &&
test_tick &&
git commit -m "add file2 on main" &&
git checkout fork &&
echo foo >file2 &&
git add file2 &&
test_tick &&
git commit -m "add file2 on the side"
Already on 'main'
[main aa68455] add file2 on main
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to branch 'fork'
[fork 521fc70] add file2 on the side
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 10 - cherry-pick a commit that becomes no-op (prep)
expecting success of 3505.11 'cherry-pick a no-op without --keep-redundant':
git reset --hard &&
git checkout fork^0 &&
test_must_fail git cherry-pick main
HEAD is now at 521fc70 add file2 on the side
Note: switching to 'fork^0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 521fc70 add file2 on the side
The previous cherry-pick is now empty, possibly due to conflict resolution.
If you wish to commit it anyway, use:
git commit --allow-empty
Otherwise, please use 'git cherry-pick --skip'
HEAD detached at 521fc70
You are currently cherry-picking commit aa68455.
(all conflicts fixed: run "git cherry-pick --continue")
(use "git cherry-pick --skip" to skip this patch)
(use "git cherry-pick --abort" to cancel the cherry-pick operation)
nothing to commit, working tree clean
ok 11 - cherry-pick a no-op without --keep-redundant
expecting success of 3505.12 'cherry-pick a no-op with --keep-redundant':
git reset --hard &&
git checkout fork^0 &&
git cherry-pick --keep-redundant-commits main &&
git show -s --format=%s >actual &&
echo "add file2 on main" >expect &&
test_cmp expect actual
HEAD is now at 521fc70 add file2 on the side
HEAD is now at 521fc70 add file2 on the side
[detached HEAD ffffb2b] add file2 on main
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
ok 12 - cherry-pick a no-op with --keep-redundant
# passed all 12 test(s)
1..12
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3504-cherry-pick-rerere.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3504-cherry-pick-rerere/.git/
expecting success of 3504.1 'setup':
test_commit foo &&
test_commit foo-main foo &&
test_commit bar-main bar &&
git checkout -b dev foo &&
test_commit foo-dev foo &&
test_commit bar-dev bar &&
git config rerere.enabled true
[main (root-commit) ddd63c9] foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo.t
[main b0605b8] foo-main
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo
[main f55d303] bar-main
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 bar
Switched to a new branch 'dev'
[dev 1d8ba7e] foo-dev
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo
[dev 5392a79] bar-dev
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 bar
ok 1 - setup
expecting success of 3504.2 'conflicting merge':
test_must_fail git merge main
Auto-merging bar
CONFLICT (add/add): Merge conflict in bar
Auto-merging foo
CONFLICT (add/add): Merge conflict in foo
Recorded preimage for 'bar'
Recorded preimage for 'foo'
Automatic merge failed; fix conflicts and then commit the result.
ok 2 - conflicting merge
expecting success of 3504.3 'fixup':
echo foo-resolved >foo &&
echo bar-resolved >bar &&
git commit -am resolved &&
cp foo foo-expect &&
cp bar bar-expect &&
git reset --hard HEAD^
Recorded resolution for 'bar'.
Recorded resolution for 'foo'.
[dev 85492e3] resolved
Author: A U Thor <author@example.com>
HEAD is now at 5392a79 bar-dev
ok 3 - fixup
expecting success of 3504.4 'cherry-pick conflict with --rerere-autoupdate':
test_must_fail git cherry-pick --rerere-autoupdate foo..bar-main &&
test_cmp foo-expect foo &&
git diff-files --quiet &&
test_must_fail git cherry-pick --continue &&
test_cmp bar-expect bar &&
git diff-files --quiet &&
git cherry-pick --continue &&
git reset --hard bar-dev
Auto-merging foo
CONFLICT (add/add): Merge conflict in foo
error: could not apply b0605b8... foo-main
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
Staged 'foo' using previous resolution.
[dev 41ff336] foo-main
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
Auto-merging bar
CONFLICT (add/add): Merge conflict in bar
error: could not apply f55d303... bar-main
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
Staged 'bar' using previous resolution.
[dev c0de054] bar-main
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
HEAD is now at 5392a79 bar-dev
ok 4 - cherry-pick conflict with --rerere-autoupdate
expecting success of 3504.5 'cherry-pick conflict repsects rerere.autoUpdate':
test_config rerere.autoUpdate true &&
test_must_fail git cherry-pick foo..bar-main &&
test_cmp foo-expect foo &&
git diff-files --quiet &&
test_must_fail git cherry-pick --continue &&
test_cmp bar-expect bar &&
git diff-files --quiet &&
git cherry-pick --continue &&
git reset --hard bar-dev
Auto-merging foo
CONFLICT (add/add): Merge conflict in foo
error: could not apply b0605b8... foo-main
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
Staged 'foo' using previous resolution.
[dev 41ff336] foo-main
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
Auto-merging bar
CONFLICT (add/add): Merge conflict in bar
error: could not apply f55d303... bar-main
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
Staged 'bar' using previous resolution.
[dev c0de054] bar-main
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
HEAD is now at 5392a79 bar-dev
ok 5 - cherry-pick conflict repsects rerere.autoUpdate
expecting success of 3504.6 'cherry-pick conflict with --no-rerere-autoupdate':
test_config rerere.autoUpdate true &&
test_must_fail git cherry-pick --no-rerere-autoupdate foo..bar-main &&
test_cmp foo-expect foo &&
test_must_fail git diff-files --quiet &&
git add foo &&
test_must_fail git cherry-pick --continue &&
test_cmp bar-expect bar &&
test_must_fail git diff-files --quiet &&
git add bar &&
git cherry-pick --continue &&
git reset --hard bar-dev
Auto-merging foo
CONFLICT (add/add): Merge conflict in foo
error: could not apply b0605b8... foo-main
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
Resolved 'foo' using previous resolution.
[dev 41ff336] foo-main
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
Auto-merging bar
CONFLICT (add/add): Merge conflict in bar
error: could not apply f55d303... bar-main
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
Resolved 'bar' using previous resolution.
[dev c0de054] bar-main
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
HEAD is now at 5392a79 bar-dev
ok 6 - cherry-pick conflict with --no-rerere-autoupdate
expecting success of 3504.7 'cherry-pick --continue rejects --rerere-autoupdate':
test_must_fail git cherry-pick --rerere-autoupdate foo..bar-main &&
test_cmp foo-expect foo &&
git diff-files --quiet &&
test_must_fail git cherry-pick --continue --rerere-autoupdate >actual 2>&1 &&
echo "fatal: cherry-pick: --rerere-autoupdate cannot be used with --continue" >expect &&
test_cmp expect actual &&
test_must_fail git cherry-pick --continue --no-rerere-autoupdate >actual 2>&1 &&
echo "fatal: cherry-pick: --no-rerere-autoupdate cannot be used with --continue" >expect &&
test_cmp expect actual &&
git cherry-pick --abort
Auto-merging foo
CONFLICT (add/add): Merge conflict in foo
error: could not apply b0605b8... foo-main
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
Staged 'foo' using previous resolution.
ok 7 - cherry-pick --continue rejects --rerere-autoupdate
expecting success of 3504.8 'cherry-pick --rerere-autoupdate more than once':
test_must_fail git cherry-pick --rerere-autoupdate --rerere-autoupdate foo..bar-main &&
test_cmp foo-expect foo &&
git diff-files --quiet &&
git cherry-pick --abort &&
test_must_fail git cherry-pick --rerere-autoupdate --no-rerere-autoupdate --rerere-autoupdate foo..bar-main &&
test_cmp foo-expect foo &&
git diff-files --quiet &&
git cherry-pick --abort &&
test_must_fail git cherry-pick --rerere-autoupdate --no-rerere-autoupdate foo..bar-main &&
test_must_fail git diff-files --quiet &&
git cherry-pick --abort
Auto-merging foo
CONFLICT (add/add): Merge conflict in foo
error: could not apply b0605b8... foo-main
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
Staged 'foo' using previous resolution.
Auto-merging foo
CONFLICT (add/add): Merge conflict in foo
error: could not apply b0605b8... foo-main
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
Staged 'foo' using previous resolution.
Auto-merging foo
CONFLICT (add/add): Merge conflict in foo
error: could not apply b0605b8... foo-main
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
Resolved 'foo' using previous resolution.
ok 8 - cherry-pick --rerere-autoupdate more than once
expecting success of 3504.9 'cherry-pick conflict without rerere':
test_config rerere.enabled false &&
test_must_fail git cherry-pick foo-main &&
grep ===== foo &&
grep foo-dev foo &&
grep foo-main foo
Auto-merging foo
CONFLICT (add/add): Merge conflict in foo
error: could not apply b0605b8... foo-main
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
=======
foo-dev
foo-main
>>>>>>> b0605b8 (foo-main)
ok 9 - cherry-pick conflict without rerere
# passed all 9 test(s)
1..9
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3506-cherry-pick-ff.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3506-cherry-pick-ff/.git/
expecting success of 3506.1 'setup':
echo first > file1 &&
git add file1 &&
test_tick &&
git commit -m "first" &&
git tag first &&
git checkout -b other &&
echo second >> file1 &&
git add file1 &&
test_tick &&
git commit -m "second" &&
git tag second &&
test_oid_cache <<-EOF
cp_ff sha1:1df192cd8bc58a2b275d842cede4d221ad9000d1
cp_ff sha256:e70d6b7fc064bddb516b8d512c9057094b96ce6ff08e12080acc4fe7f1d60a1d
EOF
[main (root-commit) 0c72e4f] first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file1
Switched to a new branch 'other'
[other 453a047] second
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
ok 1 - setup
expecting success of 3506.2 'cherry-pick using --ff fast forwards':
git checkout main &&
git reset --hard first &&
test_tick &&
git cherry-pick --ff second &&
test "$(git rev-parse --verify HEAD)" = "$(git rev-parse --verify second)"
Switched to branch 'main'
HEAD is now at 0c72e4f first
ok 2 - cherry-pick using --ff fast forwards
expecting success of 3506.3 'cherry-pick not using --ff does not fast forwards':
git checkout main &&
git reset --hard first &&
test_tick &&
git cherry-pick second &&
test "$(git rev-parse --verify HEAD)" != "$(git rev-parse --verify second)"
Already on 'main'
HEAD is now at 0c72e4f first
[main 43e4ff7] second
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
1 file changed, 1 insertion(+)
ok 3 - cherry-pick not using --ff does not fast forwards
expecting success of 3506.4 'merge setup':
git checkout main &&
git reset --hard first &&
echo new line >A &&
git add A &&
test_tick &&
git commit -m "add line to A" A &&
git tag A &&
git checkout -b side first &&
echo new line >B &&
git add B &&
test_tick &&
git commit -m "add line to B" B &&
git tag B &&
git checkout main &&
git merge side &&
git tag C &&
git checkout -b new A
Already on 'main'
HEAD is now at 0c72e4f first
[main e3ca70e] add line to A
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 A
Switched to a new branch 'side'
[side 5faaf2e] add line to B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 B
Switched to branch 'main'
Merge made by the 'ort' strategy.
B | 1 +
1 file changed, 1 insertion(+)
create mode 100644 B
Switched to a new branch 'new'
ok 4 - merge setup
expecting success of 3506.5 'cherry-pick explicit first parent of a non-merge with --ff':
git reset --hard A -- &&
git cherry-pick --ff -m 1 B &&
git diff --exit-code C --
HEAD is now at e3ca70e add line to A
[new d859d20] add line to B
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:18:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 B
ok 5 - cherry-pick explicit first parent of a non-merge with --ff
expecting success of 3506.6 'cherry pick a merge with --ff but without -m should fail':
git reset --hard A -- &&
test_must_fail git cherry-pick --ff C &&
git diff --exit-code A --
HEAD is now at e3ca70e add line to A
error: commit 17345dd7218a0fc4dc087d5aacc6be7192e4fa2a is a merge but no -m option was given.
fatal: cherry-pick failed
ok 6 - cherry pick a merge with --ff but without -m should fail
expecting success of 3506.7 'cherry pick with --ff a merge (1)':
git reset --hard A -- &&
git cherry-pick --ff -m 1 C &&
git diff --exit-code C &&
test "$(git rev-parse --verify HEAD)" = "$(git rev-parse --verify C)"
HEAD is now at e3ca70e add line to A
ok 7 - cherry pick with --ff a merge (1)
expecting success of 3506.8 'cherry pick with --ff a merge (2)':
git reset --hard B -- &&
git cherry-pick --ff -m 2 C &&
git diff --exit-code C &&
test "$(git rev-parse --verify HEAD)" = "$(git rev-parse --verify C)"
HEAD is now at 5faaf2e add line to B
ok 8 - cherry pick with --ff a merge (2)
expecting success of 3506.9 'cherry pick a merge relative to nonexistent parent with --ff should fail':
git reset --hard B -- &&
test_must_fail git cherry-pick --ff -m 3 C
HEAD is now at 5faaf2e add line to B
error: commit 17345dd7218a0fc4dc087d5aacc6be7192e4fa2a does not have parent 3
fatal: cherry-pick failed
ok 9 - cherry pick a merge relative to nonexistent parent with --ff should fail
expecting success of 3506.10 'cherry pick a root commit with --ff':
git reset --hard first -- &&
git rm file1 &&
echo first >file2 &&
git add file2 &&
git commit --amend -m "file2" &&
git cherry-pick --ff first &&
test "$(git rev-parse --verify HEAD)" = "$(test_oid cp_ff)"
HEAD is now at 0c72e4f first
rm 'file1'
[new 1654ff9] file2
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:13:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 file2
[new 1df192c] first
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:13:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 file1
ok 10 - cherry pick a root commit with --ff
expecting success of 3506.11 'cherry-pick --ff on unborn branch':
git checkout --orphan unborn &&
git rm --cached -r . &&
rm -rf * &&
git cherry-pick --ff first &&
test_cmp_rev first HEAD
Switched to a new branch 'unborn'
rm 'file1'
rm 'file2'
ok 11 - cherry-pick --ff on unborn branch
# passed all 11 test(s)
1..11
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3509-cherry-pick-merge-df.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3509-cherry-pick-merge-df/.git/
expecting success of 3509.1 'Initialize repository':
mkdir a &&
>a/f &&
git add a &&
git commit -m a
[main (root-commit) 8938fef] a
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 a/f
ok 1 - Initialize repository
expecting success of 3509.2 'Setup rename across paths each below D/F conflicts':
mkdir b &&
test_ln_s_add ../a b/a &&
git commit -m b &&
git checkout -b branch &&
rm b/a &&
git mv a b/a &&
test_ln_s_add b/a a &&
git commit -m swap &&
>f1 &&
git add f1 &&
git commit -m f1
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
[main 6c20241] b
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 120000 b/a
Switched to a new branch 'branch'
[branch 138a745] swap
Author: A U Thor <author@example.com>
3 files changed, 1 insertion(+), 1 deletion(-)
create mode 120000 a
delete mode 120000 b/a
rename {a => b/a}/f (100%)
[branch b71b76f] f1
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 f1
ok 2 - Setup rename across paths each below D/F conflicts
expecting success of 3509.3 'Cherry-pick succeeds with rename across D/F conflicts':
git reset --hard &&
git checkout main^0 &&
git cherry-pick branch
HEAD is now at b71b76f f1
Note: switching to 'main^0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 6c20241 b
[detached HEAD 1b1aec6] f1
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 f1
ok 3 - Cherry-pick succeeds with rename across D/F conflicts
expecting success of 3509.4 'Setup rename with file on one side matching directory name on other':
git checkout --orphan nick-testcase &&
git rm -rf . &&
>empty &&
git add empty &&
git commit -m "Empty file" &&
git checkout -b simple &&
mv empty file &&
mkdir empty &&
mv file empty &&
git add empty/file &&
git commit -m "Empty file under empty dir" &&
echo content >newfile &&
git add newfile &&
git commit -m "New file"
Switched to a new branch 'nick-testcase'
rm 'a/f'
rm 'b/a'
rm 'f1'
[nick-testcase (root-commit) f619bd8] Empty file
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 empty
Switched to a new branch 'simple'
[simple 735003f] Empty file under empty dir
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
rename empty => empty/file (100%)
[simple 2eb2ba1] New file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 newfile
ok 4 - Setup rename with file on one side matching directory name on other
expecting success of 3509.5 'Cherry-pick succeeds with was_a_dir/file -> was_a_dir (resolve)':
git reset --hard &&
git checkout -q nick-testcase^0 &&
git cherry-pick --strategy=resolve simple
HEAD is now at 2eb2ba1 New file
Trying simple merge.
Simple merge failed, trying Automatic merge.
[detached HEAD 072269c] New file
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 insertion(+)
create mode 100644 newfile
ok 5 - Cherry-pick succeeds with was_a_dir/file -> was_a_dir (resolve)
expecting success of 3509.6 'Cherry-pick succeeds with was_a_dir/file -> was_a_dir (recursive)':
git reset --hard &&
git checkout -q nick-testcase^0 &&
git cherry-pick --strategy=recursive simple
HEAD is now at 072269c New file
Adding empty
[detached HEAD 072269c] New file
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 insertion(+)
create mode 100644 newfile
ok 6 - Cherry-pick succeeds with was_a_dir/file -> was_a_dir (recursive)
expecting success of 3509.7 'Setup rename with file on one side matching different dirname on other':
git reset --hard &&
git checkout --orphan mergeme &&
git rm -rf . &&
mkdir sub &&
mkdir othersub &&
echo content > sub/file &&
echo foo > othersub/whatever &&
git add -A &&
git commit -m "Common commit" &&
git rm -rf othersub &&
git mv sub/file othersub &&
git commit -m "Commit to merge" &&
git checkout -b newhead mergeme~1 &&
>independent-change &&
git add independent-change &&
git commit -m "Completely unrelated change"
HEAD is now at 072269c New file
Switched to a new branch 'mergeme'
rm 'empty'
rm 'newfile'
[mergeme (root-commit) 220cb6a] Common commit
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 othersub/whatever
create mode 100644 sub/file
rm 'othersub/whatever'
[mergeme 73ee5a0] Commit to merge
Author: A U Thor <author@example.com>
2 files changed, 1 deletion(-)
rename sub/file => othersub (100%)
delete mode 100644 othersub/whatever
Switched to a new branch 'newhead'
[newhead dec5ebc] Completely unrelated change
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 independent-change
ok 7 - Setup rename with file on one side matching different dirname on other
expecting success of 3509.8 'Cherry-pick with rename to different D/F conflict succeeds (resolve)':
git reset --hard &&
git checkout -q newhead^0 &&
git cherry-pick --strategy=resolve mergeme
HEAD is now at dec5ebc Completely unrelated change
Trying simple merge.
Simple merge failed, trying Automatic merge.
Adding othersub
[detached HEAD 8d9f455] Commit to merge
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
2 files changed, 1 deletion(-)
rename sub/file => othersub (100%)
delete mode 100644 othersub/whatever
ok 8 - Cherry-pick with rename to different D/F conflict succeeds (resolve)
expecting success of 3509.9 'Cherry-pick with rename to different D/F conflict succeeds (recursive)':
git reset --hard &&
git checkout -q newhead^0 &&
git cherry-pick --strategy=recursive mergeme
HEAD is now at 8d9f455 Commit to merge
Removing othersub/whatever
[detached HEAD 8d9f455] Commit to merge
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
2 files changed, 1 deletion(-)
rename sub/file => othersub (100%)
delete mode 100644 othersub/whatever
ok 9 - Cherry-pick with rename to different D/F conflict succeeds (recursive)
# passed all 9 test(s)
1..9
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3508-cherry-pick-many-commits.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3508-cherry-pick-many-commits/.git/
expecting success of 3508.1 'setup':
echo first > file1 &&
git add file1 &&
test_tick &&
git commit -m "first" &&
git tag first &&
git checkout -b other &&
for val in second third fourth
do
echo $val >> file1 &&
git add file1 &&
test_tick &&
git commit -m "$val" &&
git tag $val || return 1
done
[main (root-commit) 0c72e4f] first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file1
Switched to a new branch 'other'
[other 453a047] second
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[other e85abe2] third
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[other 94d3184] fourth
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
ok 1 - setup
expecting success of 3508.2 'cherry-pick first..fourth works':
git checkout -f main &&
git reset --hard first &&
test_tick &&
git cherry-pick first..fourth &&
git diff --quiet other &&
git diff --quiet HEAD other &&
check_head_differs_from fourth
Switched to branch 'main'
HEAD is now at 0c72e4f first
[main 9589776] second
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
1 file changed, 1 insertion(+)
[main 7ef563c] third
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+)
[main 105ac0a] fourth
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 insertion(+)
ok 2 - cherry-pick first..fourth works
expecting success of 3508.3 'cherry-pick three one two works':
git checkout -f first &&
test_commit one &&
test_commit two &&
test_commit three &&
git checkout -f main &&
git reset --hard first &&
git cherry-pick three one two &&
git diff --quiet three &&
git diff --quiet HEAD three &&
test "$(git log --reverse --format=%s first..)" = "three
one
two"
Note: switching to 'first'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 0c72e4f first
[detached HEAD 08ada56] one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 one.t
[detached HEAD 556e4fe] two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 two.t
[detached HEAD a4e9322] three
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 three.t
Previous HEAD position was a4e9322 three
Switched to branch 'main'
HEAD is now at 0c72e4f first
[main 124d016] three
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:20:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 three.t
[main 6e6e64d] one
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:18:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 one.t
[main 54c7896] two
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:19:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 two.t
ok 3 - cherry-pick three one two works
expecting success of 3508.4 'cherry-pick three one two: fails':
git checkout -f main &&
git reset --hard first &&
test_must_fail git cherry-pick three one two:
Already on 'main'
HEAD is now at 0c72e4f first
error: two:: can't cherry-pick a tree
fatal: cherry-pick failed
ok 4 - cherry-pick three one two: fails
expecting success of 3508.5 'output to keep user entertained during multi-pick':
cat <<-\EOF >expected &&
[main OBJID] second
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
1 file changed, 1 insertion(+)
[main OBJID] third
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+)
[main OBJID] fourth
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 insertion(+)
EOF
git checkout -f main &&
git reset --hard first &&
test_tick &&
git cherry-pick first..fourth >actual &&
sed -e "s/$_x05[0-9a-f][0-9a-f]/OBJID/" <actual >actual.fuzzy &&
test_line_count -ge 3 actual.fuzzy &&
test_cmp expected actual.fuzzy
Already on 'main'
HEAD is now at 0c72e4f first
ok 5 - output to keep user entertained during multi-pick
expecting success of 3508.6 'cherry-pick --strategy resolve first..fourth works':
git checkout -f main &&
git reset --hard first &&
test_tick &&
git cherry-pick --strategy resolve first..fourth &&
git diff --quiet other &&
git diff --quiet HEAD other &&
check_head_differs_from fourth
Already on 'main'
HEAD is now at 0c72e4f first
Trying simple merge.
[main 48c207c] second
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
1 file changed, 1 insertion(+)
Trying simple merge.
[main 9dcf789] third
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+)
Trying simple merge.
[main 1f7167d] fourth
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 insertion(+)
ok 6 - cherry-pick --strategy resolve first..fourth works
expecting success of 3508.7 'output during multi-pick indicates merge strategy':
cat <<-\EOF >expected &&
Trying simple merge.
[main OBJID] second
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
1 file changed, 1 insertion(+)
Trying simple merge.
[main OBJID] third
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+)
Trying simple merge.
[main OBJID] fourth
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 insertion(+)
EOF
git checkout -f main &&
git reset --hard first &&
test_tick &&
git cherry-pick --strategy resolve first..fourth >actual &&
sed -e "s/$_x05[0-9a-f][0-9a-f]/OBJID/" <actual >actual.fuzzy &&
test_cmp expected actual.fuzzy
Already on 'main'
HEAD is now at 0c72e4f first
ok 7 - output during multi-pick indicates merge strategy
expecting success of 3508.8 'cherry-pick --ff first..fourth works':
git checkout -f main &&
git reset --hard first &&
test_tick &&
git cherry-pick --ff first..fourth &&
git diff --quiet other &&
git diff --quiet HEAD other &&
check_head_equals fourth
Already on 'main'
HEAD is now at 0c72e4f first
ok 8 - cherry-pick --ff first..fourth works
expecting success of 3508.9 'cherry-pick -n first..fourth works':
git checkout -f main &&
git reset --hard first &&
test_tick &&
git cherry-pick -n first..fourth &&
git diff --quiet other &&
git diff --cached --quiet other &&
git diff --quiet HEAD first
Already on 'main'
HEAD is now at 0c72e4f first
ok 9 - cherry-pick -n first..fourth works
expecting success of 3508.10 'revert first..fourth works':
git checkout -f main &&
git reset --hard fourth &&
test_tick &&
git revert first..fourth &&
git diff --quiet first &&
git diff --cached --quiet first &&
git diff --quiet HEAD first
Already on 'main'
HEAD is now at 94d3184 fourth
[main 9fd86ee] Revert "fourth"
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:26:13 2005 -0700
1 file changed, 1 deletion(-)
[main bcb892c] Revert "third"
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:26:13 2005 -0700
1 file changed, 1 deletion(-)
[main 6e2dda4] Revert "second"
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:26:13 2005 -0700
1 file changed, 1 deletion(-)
ok 10 - revert first..fourth works
expecting success of 3508.11 'revert ^first fourth works':
git checkout -f main &&
git reset --hard fourth &&
test_tick &&
git revert ^first fourth &&
git diff --quiet first &&
git diff --cached --quiet first &&
git diff --quiet HEAD first
Already on 'main'
HEAD is now at 94d3184 fourth
[main e6761b3] Revert "fourth"
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:27:13 2005 -0700
1 file changed, 1 deletion(-)
[main 4940ca7] Revert "third"
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:27:13 2005 -0700
1 file changed, 1 deletion(-)
[main e06156e] Revert "second"
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:27:13 2005 -0700
1 file changed, 1 deletion(-)
ok 11 - revert ^first fourth works
expecting success of 3508.12 'revert fourth fourth~1 fourth~2 works':
git checkout -f main &&
git reset --hard fourth &&
test_tick &&
git revert fourth fourth~1 fourth~2 &&
git diff --quiet first &&
git diff --cached --quiet first &&
git diff --quiet HEAD first
Already on 'main'
HEAD is now at 94d3184 fourth
[main 8d9417a] Revert "fourth"
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:28:13 2005 -0700
1 file changed, 1 deletion(-)
[main 210e986] Revert "third"
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:28:13 2005 -0700
1 file changed, 1 deletion(-)
[main f77c534] Revert "second"
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:28:13 2005 -0700
1 file changed, 1 deletion(-)
ok 12 - revert fourth fourth~1 fourth~2 works
expecting success of 3508.13 'cherry-pick -3 fourth works':
git checkout -f main &&
git reset --hard first &&
test_tick &&
git cherry-pick -3 fourth &&
git diff --quiet other &&
git diff --quiet HEAD other &&
check_head_differs_from fourth
Already on 'main'
HEAD is now at 0c72e4f first
[main 0b92961] second
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
1 file changed, 1 insertion(+)
[main e4ba54b] third
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+)
[main bb3aa41] fourth
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 insertion(+)
ok 13 - cherry-pick -3 fourth works
expecting success of 3508.14 'cherry-pick --stdin works':
git checkout -f main &&
git reset --hard first &&
test_tick &&
git rev-list --reverse first..fourth | git cherry-pick --stdin &&
git diff --quiet other &&
git diff --quiet HEAD other &&
check_head_differs_from fourth
Already on 'main'
HEAD is now at 0c72e4f first
[main 026fdf1] second
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
1 file changed, 1 insertion(+)
[main 56d3171] third
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+)
[main 2cef6d1] fourth
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 insertion(+)
ok 14 - cherry-pick --stdin works
# passed all 14 test(s)
1..14
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3507-cherry-pick-conflict.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3507-cherry-pick-conflict/.git/
expecting success of 3507.1 'setup':
echo unrelated >unrelated &&
git add unrelated &&
test_commit initial foo a &&
test_commit base foo b &&
test_commit picked foo c &&
test_commit --signoff picked-signed foo d &&
git checkout -b topic initial &&
test_commit redundant-pick foo c redundant &&
git commit --allow-empty --allow-empty-message &&
git tag empty &&
git checkout main &&
git config advice.detachedhead false
[main (root-commit) df2a63d] initial
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 foo
create mode 100644 unrelated
[main dc0113b] base
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[main 7e6d412] picked
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[main e4ca149] picked-signed
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to a new branch 'topic'
[topic 2aaca37] redundant-pick
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[topic c0ecbf1]
Author: A U Thor <author@example.com>
Switched to branch 'main'
ok 1 - setup
expecting success of 3507.2 'failed cherry-pick does not advance HEAD':
pristine_detach initial &&
head=$(git rev-parse HEAD) &&
test_must_fail git cherry-pick picked &&
newhead=$(git rev-parse HEAD) &&
test "$head" = "$newhead"
HEAD is now at df2a63d initial
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply 7e6d412... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
ok 2 - failed cherry-pick does not advance HEAD
expecting success of 3507.3 'advice from failed cherry-pick':
pristine_detach initial &&
picked=$(git rev-parse --short picked) &&
cat <<-EOF >expected &&
error: could not apply $picked... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
EOF
test_must_fail git cherry-pick picked 2>actual &&
test_cmp expected actual
HEAD is now at df2a63d initial
warning: cancelling a cherry picking in progress
Auto-merging foo
CONFLICT (content): Merge conflict in foo
ok 3 - advice from failed cherry-pick
expecting success of 3507.4 'advice from failed cherry-pick --no-commit':
pristine_detach initial &&
picked=$(git rev-parse --short picked) &&
cat <<-EOF >expected &&
error: could not apply $picked... picked
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
EOF
test_must_fail git cherry-pick --no-commit picked 2>actual &&
test_cmp expected actual
HEAD is now at df2a63d initial
warning: cancelling a cherry picking in progress
Auto-merging foo
CONFLICT (content): Merge conflict in foo
ok 4 - advice from failed cherry-pick --no-commit
expecting success of 3507.5 'failed cherry-pick sets CHERRY_PICK_HEAD':
pristine_detach initial &&
test_must_fail git cherry-pick picked &&
test_cmp_rev picked CHERRY_PICK_HEAD
HEAD is now at df2a63d initial
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply 7e6d412... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
ok 5 - failed cherry-pick sets CHERRY_PICK_HEAD
expecting success of 3507.6 'successful cherry-pick does not set CHERRY_PICK_HEAD':
pristine_detach initial &&
git cherry-pick base &&
test_must_fail git rev-parse --verify CHERRY_PICK_HEAD
HEAD is now at df2a63d initial
warning: cancelling a cherry picking in progress
[detached HEAD ccd9cfc] base
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
fatal: Needed a single revision
ok 6 - successful cherry-pick does not set CHERRY_PICK_HEAD
expecting success of 3507.7 'cherry-pick --no-commit does not set CHERRY_PICK_HEAD':
pristine_detach initial &&
git cherry-pick --no-commit base &&
test_must_fail git rev-parse --verify CHERRY_PICK_HEAD
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
ccd9cfc base
HEAD is now at df2a63d initial
fatal: Needed a single revision
ok 7 - cherry-pick --no-commit does not set CHERRY_PICK_HEAD
expecting success of 3507.8 'cherry-pick w/dirty tree does not set CHERRY_PICK_HEAD':
pristine_detach initial &&
echo foo >foo &&
test_must_fail git cherry-pick base &&
test_must_fail git rev-parse --verify CHERRY_PICK_HEAD
HEAD is now at df2a63d initial
error: Your local changes to the following files would be overwritten by merge:
foo
Please commit your changes or stash them before you merge.
Aborting
fatal: cherry-pick failed
fatal: Needed a single revision
ok 8 - cherry-pick w/dirty tree does not set CHERRY_PICK_HEAD
expecting success of 3507.9 'cherry-pick --strategy=resolve w/dirty tree does not set CHERRY_PICK_HEAD':
pristine_detach initial &&
echo foo >foo &&
test_must_fail git cherry-pick --strategy=resolve base &&
test_must_fail git rev-parse --verify CHERRY_PICK_HEAD
HEAD is now at df2a63d initial
error: Entry 'foo' not uptodate. Cannot merge.
error: could not apply dc0113b... base
fatal: Needed a single revision
ok 9 - cherry-pick --strategy=resolve w/dirty tree does not set CHERRY_PICK_HEAD
expecting success of 3507.10 'GIT_CHERRY_PICK_HELP suppresses CHERRY_PICK_HEAD':
pristine_detach initial &&
(
GIT_CHERRY_PICK_HELP="and then do something else" &&
export GIT_CHERRY_PICK_HELP &&
test_must_fail git cherry-pick picked
) &&
test_must_fail git rev-parse --verify CHERRY_PICK_HEAD
HEAD is now at df2a63d initial
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply 7e6d412... picked
hint: and then do something else
fatal: Needed a single revision
ok 10 - GIT_CHERRY_PICK_HELP suppresses CHERRY_PICK_HEAD
expecting success of 3507.11 'git reset clears CHERRY_PICK_HEAD':
pristine_detach initial &&
test_must_fail git cherry-pick picked &&
git reset &&
test_must_fail git rev-parse --verify CHERRY_PICK_HEAD
HEAD is now at df2a63d initial
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply 7e6d412... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
Unstaged changes after reset:
M foo
fatal: Needed a single revision
ok 11 - git reset clears CHERRY_PICK_HEAD
expecting success of 3507.12 'failed commit does not clear CHERRY_PICK_HEAD':
pristine_detach initial &&
test_must_fail git cherry-pick picked &&
test_must_fail git commit &&
test_cmp_rev picked CHERRY_PICK_HEAD
HEAD is now at df2a63d initial
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply 7e6d412... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
error: Committing is not possible because you have unmerged files.
hint: Fix them up in the work tree, and then use 'git add/rm <file>'
hint: as appropriate to mark resolution and make a commit.
fatal: Exiting because of an unresolved conflict.
U foo
ok 12 - failed commit does not clear CHERRY_PICK_HEAD
expecting success of 3507.13 'cancelled commit does not clear CHERRY_PICK_HEAD':
pristine_detach initial &&
test_must_fail git cherry-pick picked &&
echo resolved >foo &&
git add foo &&
git update-index --refresh -q &&
test_must_fail git diff-index --exit-code HEAD &&
(
GIT_EDITOR=false &&
export GIT_EDITOR &&
test_must_fail git commit
) &&
test_cmp_rev picked CHERRY_PICK_HEAD
HEAD is now at df2a63d initial
warning: cancelling a cherry picking in progress
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply 7e6d412... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
:100644 100644 78981922613b2afb6025042ff6bd878ac1994e85 2ab19ae607aabda796309682e0448237aab03047 M foo
error: There was a problem with the editor 'false'.
Please supply the message using either -m or -F option.
ok 13 - cancelled commit does not clear CHERRY_PICK_HEAD
expecting success of 3507.14 'successful commit clears CHERRY_PICK_HEAD':
pristine_detach initial &&
test_must_fail git cherry-pick picked &&
echo resolved >foo &&
git add foo &&
git commit &&
test_must_fail git rev-parse --verify CHERRY_PICK_HEAD
HEAD is now at df2a63d initial
warning: cancelling a cherry picking in progress
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply 7e6d412... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
[detached HEAD a8c44c9] picked
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
fatal: Needed a single revision
ok 14 - successful commit clears CHERRY_PICK_HEAD
expecting success of 3507.15 'partial commit of cherry-pick fails':
pristine_detach initial &&
test_must_fail git cherry-pick picked &&
echo resolved >foo &&
git add foo &&
test_must_fail git commit foo 2>err &&
test_i18ngrep "cannot do a partial commit during a cherry-pick." err
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
a8c44c9 picked
HEAD is now at df2a63d initial
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply 7e6d412... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
fatal: cannot do a partial commit during a cherry-pick.
ok 15 - partial commit of cherry-pick fails
expecting success of 3507.16 'commit --amend of cherry-pick fails':
pristine_detach initial &&
test_must_fail git cherry-pick picked &&
echo resolved >foo &&
git add foo &&
test_must_fail git commit --amend 2>err &&
test_i18ngrep "in the middle of a cherry-pick -- cannot amend." err
HEAD is now at df2a63d initial
warning: cancelling a cherry picking in progress
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply 7e6d412... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
fatal: You are in the middle of a cherry-pick -- cannot amend.
ok 16 - commit --amend of cherry-pick fails
expecting success of 3507.17 'successful final commit clears cherry-pick state':
pristine_detach initial &&
test_must_fail git cherry-pick base picked-signed &&
echo resolved >foo &&
test_path_is_file .git/sequencer/todo &&
git commit -a &&
test_path_is_missing .git/sequencer
HEAD is now at df2a63d initial
warning: cancelling a cherry picking in progress
[detached HEAD ccd9cfc] base
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply e4ca149... picked-signed
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
[detached HEAD 53c8c73] picked-signed
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
ok 17 - successful final commit clears cherry-pick state
expecting success of 3507.18 'reset after final pick clears cherry-pick state':
pristine_detach initial &&
test_must_fail git cherry-pick base picked-signed &&
echo resolved >foo &&
test_path_is_file .git/sequencer/todo &&
git reset &&
test_path_is_missing .git/sequencer
Warning: you are leaving 2 commits behind, not connected to
any of your branches:
53c8c73 picked-signed
ccd9cfc base
HEAD is now at df2a63d initial
[detached HEAD ccd9cfc] base
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply e4ca149... picked-signed
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
Unstaged changes after reset:
M foo
ok 18 - reset after final pick clears cherry-pick state
expecting success of 3507.19 'failed cherry-pick produces dirty index':
pristine_detach initial &&
test_must_fail git cherry-pick picked &&
test_must_fail git update-index --refresh -q &&
test_must_fail git diff-index --exit-code HEAD
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
ccd9cfc base
HEAD is now at df2a63d initial
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply 7e6d412... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
foo: needs merge
:100644 100644 78981922613b2afb6025042ff6bd878ac1994e85 0000000000000000000000000000000000000000 M foo
ok 19 - failed cherry-pick produces dirty index
expecting success of 3507.20 'failed cherry-pick registers participants in index':
pristine_detach initial &&
{
git checkout base -- foo &&
git ls-files --stage foo &&
git checkout initial -- foo &&
git ls-files --stage foo &&
git checkout picked -- foo &&
git ls-files --stage foo
} >stages &&
sed "
1 s/ 0 / 1 /
2 s/ 0 / 2 /
3 s/ 0 / 3 /
" stages >expected &&
git read-tree -u --reset HEAD &&
test_must_fail git cherry-pick picked &&
git ls-files --stage --unmerged >actual &&
test_cmp expected actual
HEAD is now at df2a63d initial
warning: cancelling a cherry picking in progress
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply 7e6d412... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
ok 20 - failed cherry-pick registers participants in index
expecting success of 3507.21 'cherry-pick conflict, ensure commit.cleanup = scissors places scissors line properly':
pristine_detach initial &&
git config commit.cleanup scissors &&
cat <<-EOF >expected &&
picked
# ------------------------ >8 ------------------------
# Do not modify or remove the line above.
# Everything below it will be ignored.
#
# Conflicts:
# foo
EOF
test_must_fail git cherry-pick picked &&
test_cmp expected .git/MERGE_MSG
HEAD is now at df2a63d initial
warning: cancelling a cherry picking in progress
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply 7e6d412... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
ok 21 - cherry-pick conflict, ensure commit.cleanup = scissors places scissors line properly
expecting success of 3507.22 'cherry-pick conflict, ensure cleanup=scissors places scissors line properly':
pristine_detach initial &&
git config --unset commit.cleanup &&
cat <<-EOF >expected &&
picked
# ------------------------ >8 ------------------------
# Do not modify or remove the line above.
# Everything below it will be ignored.
#
# Conflicts:
# foo
EOF
test_must_fail git cherry-pick --cleanup=scissors picked &&
test_cmp expected .git/MERGE_MSG
HEAD is now at df2a63d initial
warning: cancelling a cherry picking in progress
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply 7e6d412... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
ok 22 - cherry-pick conflict, ensure cleanup=scissors places scissors line properly
expecting success of 3507.23 'failed cherry-pick describes conflict in work tree':
pristine_detach initial &&
cat <<-EOF >expected &&
<<<<<<< HEAD
a
=======
c
>>>>>>> objid (picked)
EOF
test_must_fail git cherry-pick picked &&
sed "s/[a-f0-9]* (/objid (/" foo >actual &&
test_cmp expected actual
HEAD is now at df2a63d initial
warning: cancelling a cherry picking in progress
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply 7e6d412... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
ok 23 - failed cherry-pick describes conflict in work tree
expecting success of 3507.24 'diff3 -m style':
pristine_detach initial &&
git config merge.conflictstyle diff3 &&
cat <<-EOF >expected &&
<<<<<<< HEAD
a
||||||| parent of objid (picked)
b
=======
c
>>>>>>> objid (picked)
EOF
test_must_fail git cherry-pick picked &&
sed "s/[a-f0-9]* (/objid (/" foo >actual &&
test_cmp expected actual
HEAD is now at df2a63d initial
warning: cancelling a cherry picking in progress
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply 7e6d412... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
ok 24 - diff3 -m style
expecting success of 3507.25 'revert also handles conflicts sanely':
git config --unset merge.conflictstyle &&
pristine_detach initial &&
cat <<-EOF >expected &&
<<<<<<< HEAD
a
=======
b
>>>>>>> parent of objid (picked)
EOF
{
git checkout picked -- foo &&
git ls-files --stage foo &&
git checkout initial -- foo &&
git ls-files --stage foo &&
git checkout base -- foo &&
git ls-files --stage foo
} >stages &&
sed "
1 s/ 0 / 1 /
2 s/ 0 / 2 /
3 s/ 0 / 3 /
" stages >expected-stages &&
git read-tree -u --reset HEAD &&
head=$(git rev-parse HEAD) &&
test_must_fail git revert picked &&
newhead=$(git rev-parse HEAD) &&
git ls-files --stage --unmerged >actual-stages &&
test "$head" = "$newhead" &&
test_must_fail git update-index --refresh -q &&
test_must_fail git diff-index --exit-code HEAD &&
test_cmp expected-stages actual-stages &&
sed "s/[a-f0-9]* (/objid (/" foo >actual &&
test_cmp expected actual
HEAD is now at df2a63d initial
warning: cancelling a cherry picking in progress
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not revert 7e6d412... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git revert --continue".
hint: You can instead skip this commit with "git revert --skip".
hint: To abort and get back to the state before "git revert",
hint: run "git revert --abort".
foo: needs merge
:100644 100644 78981922613b2afb6025042ff6bd878ac1994e85 0000000000000000000000000000000000000000 M foo
ok 25 - revert also handles conflicts sanely
expecting success of 3507.26 'failed revert sets REVERT_HEAD':
pristine_detach initial &&
test_must_fail git revert picked &&
test_cmp_rev picked REVERT_HEAD
HEAD is now at df2a63d initial
warning: cancelling a revert in progress
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not revert 7e6d412... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git revert --continue".
hint: You can instead skip this commit with "git revert --skip".
hint: To abort and get back to the state before "git revert",
hint: run "git revert --abort".
ok 26 - failed revert sets REVERT_HEAD
expecting success of 3507.27 'successful revert does not set REVERT_HEAD':
pristine_detach base &&
git revert base &&
test_must_fail git rev-parse --verify CHERRY_PICK_HEAD &&
test_must_fail git rev-parse --verify REVERT_HEAD
Previous HEAD position was df2a63d initial
HEAD is now at dc0113b base
warning: cancelling a revert in progress
[detached HEAD feb2983] Revert "base"
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:17:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
fatal: Needed a single revision
fatal: Needed a single revision
ok 27 - successful revert does not set REVERT_HEAD
expecting success of 3507.28 'revert --no-commit sets REVERT_HEAD':
pristine_detach base &&
git revert --no-commit base &&
test_must_fail git rev-parse --verify CHERRY_PICK_HEAD &&
test_cmp_rev base REVERT_HEAD
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
feb2983 Revert "base"
HEAD is now at dc0113b base
fatal: Needed a single revision
ok 28 - revert --no-commit sets REVERT_HEAD
expecting success of 3507.29 'revert w/dirty tree does not set REVERT_HEAD':
pristine_detach base &&
echo foo >foo &&
test_must_fail git revert base &&
test_must_fail git rev-parse --verify CHERRY_PICK_HEAD &&
test_must_fail git rev-parse --verify REVERT_HEAD
HEAD is now at dc0113b base
warning: cancelling a revert in progress
error: Your local changes to the following files would be overwritten by merge:
foo
Please commit your changes or stash them before you merge.
Aborting
fatal: revert failed
fatal: Needed a single revision
fatal: Needed a single revision
ok 29 - revert w/dirty tree does not set REVERT_HEAD
expecting success of 3507.30 'GIT_CHERRY_PICK_HELP does not suppress REVERT_HEAD':
pristine_detach initial &&
(
GIT_CHERRY_PICK_HELP="and then do something else" &&
GIT_REVERT_HELP="and then do something else, again" &&
export GIT_CHERRY_PICK_HELP GIT_REVERT_HELP &&
test_must_fail git revert picked
) &&
test_must_fail git rev-parse --verify CHERRY_PICK_HEAD &&
test_cmp_rev picked REVERT_HEAD
Previous HEAD position was dc0113b base
HEAD is now at df2a63d initial
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not revert 7e6d412... picked
hint: and then do something else
fatal: Needed a single revision
ok 30 - GIT_CHERRY_PICK_HELP does not suppress REVERT_HEAD
expecting success of 3507.31 'git reset clears REVERT_HEAD':
pristine_detach initial &&
test_must_fail git revert picked &&
git reset &&
test_must_fail git rev-parse --verify REVERT_HEAD
HEAD is now at df2a63d initial
warning: cancelling a revert in progress
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not revert 7e6d412... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git revert --continue".
hint: You can instead skip this commit with "git revert --skip".
hint: To abort and get back to the state before "git revert",
hint: run "git revert --abort".
Unstaged changes after reset:
M foo
fatal: Needed a single revision
ok 31 - git reset clears REVERT_HEAD
expecting success of 3507.32 'failed commit does not clear REVERT_HEAD':
pristine_detach initial &&
test_must_fail git revert picked &&
test_must_fail git commit &&
test_cmp_rev picked REVERT_HEAD
HEAD is now at df2a63d initial
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not revert 7e6d412... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git revert --continue".
hint: You can instead skip this commit with "git revert --skip".
hint: To abort and get back to the state before "git revert",
hint: run "git revert --abort".
error: Committing is not possible because you have unmerged files.
hint: Fix them up in the work tree, and then use 'git add/rm <file>'
hint: as appropriate to mark resolution and make a commit.
fatal: Exiting because of an unresolved conflict.
U foo
ok 32 - failed commit does not clear REVERT_HEAD
expecting success of 3507.33 'successful final commit clears revert state':
pristine_detach picked-signed &&
test_must_fail git revert picked-signed base &&
echo resolved >foo &&
test_path_is_file .git/sequencer/todo &&
git commit -a &&
test_path_is_missing .git/sequencer
Previous HEAD position was df2a63d initial
HEAD is now at e4ca149 picked-signed
warning: cancelling a revert in progress
[detached HEAD b940b09] Revert "picked-signed"
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:17:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not revert dc0113b... base
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git revert --continue".
hint: You can instead skip this commit with "git revert --skip".
hint: To abort and get back to the state before "git revert",
hint: run "git revert --abort".
[detached HEAD 7342963] Revert "base"
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 33 - successful final commit clears revert state
expecting success of 3507.34 'reset after final pick clears revert state':
pristine_detach picked-signed &&
test_must_fail git revert picked-signed base &&
echo resolved >foo &&
test_path_is_file .git/sequencer/todo &&
git reset &&
test_path_is_missing .git/sequencer
Warning: you are leaving 2 commits behind, not connected to
any of your branches:
7342963 Revert "base"
b940b09 Revert "picked-signed"
HEAD is now at e4ca149 picked-signed
[detached HEAD b940b09] Revert "picked-signed"
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:17:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not revert dc0113b... base
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git revert --continue".
hint: You can instead skip this commit with "git revert --skip".
hint: To abort and get back to the state before "git revert",
hint: run "git revert --abort".
Unstaged changes after reset:
M foo
ok 34 - reset after final pick clears revert state
expecting success of 3507.35 'revert conflict, diff3 -m style':
pristine_detach initial &&
git config merge.conflictstyle diff3 &&
cat <<-EOF >expected &&
<<<<<<< HEAD
a
||||||| objid (picked)
c
=======
b
>>>>>>> parent of objid (picked)
EOF
test_must_fail git revert picked &&
sed "s/[a-f0-9]* (/objid (/" foo >actual &&
test_cmp expected actual
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
b940b09 Revert "picked-signed"
HEAD is now at df2a63d initial
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not revert 7e6d412... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git revert --continue".
hint: You can instead skip this commit with "git revert --skip".
hint: To abort and get back to the state before "git revert",
hint: run "git revert --abort".
ok 35 - revert conflict, diff3 -m style
expecting success of 3507.36 'revert conflict, ensure commit.cleanup = scissors places scissors line properly':
pristine_detach initial &&
git config commit.cleanup scissors &&
cat >expected <<-EOF &&
Revert "picked"
This reverts commit OBJID.
# ------------------------ >8 ------------------------
# Do not modify or remove the line above.
# Everything below it will be ignored.
#
# Conflicts:
# foo
EOF
test_must_fail git revert picked &&
sed "s/$OID_REGEX/OBJID/" .git/MERGE_MSG >actual &&
test_cmp expected actual
HEAD is now at df2a63d initial
warning: cancelling a revert in progress
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not revert 7e6d412... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git revert --continue".
hint: You can instead skip this commit with "git revert --skip".
hint: To abort and get back to the state before "git revert",
hint: run "git revert --abort".
ok 36 - revert conflict, ensure commit.cleanup = scissors places scissors line properly
expecting success of 3507.37 'revert conflict, ensure cleanup=scissors places scissors line properly':
pristine_detach initial &&
git config --unset commit.cleanup &&
cat >expected <<-EOF &&
Revert "picked"
This reverts commit OBJID.
# ------------------------ >8 ------------------------
# Do not modify or remove the line above.
# Everything below it will be ignored.
#
# Conflicts:
# foo
EOF
test_must_fail git revert --cleanup=scissors picked &&
sed "s/$OID_REGEX/OBJID/" .git/MERGE_MSG >actual &&
test_cmp expected actual
HEAD is now at df2a63d initial
warning: cancelling a revert in progress
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not revert 7e6d412... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git revert --continue".
hint: You can instead skip this commit with "git revert --skip".
hint: To abort and get back to the state before "git revert",
hint: run "git revert --abort".
ok 37 - revert conflict, ensure cleanup=scissors places scissors line properly
expecting success of 3507.38 'failed cherry-pick does not forget -s':
pristine_detach initial &&
test_must_fail git cherry-pick -s picked &&
test_i18ngrep -e "Signed-off-by" .git/MERGE_MSG
HEAD is now at df2a63d initial
warning: cancelling a revert in progress
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply 7e6d412... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
Signed-off-by: C O Mitter <committer@example.com>
ok 38 - failed cherry-pick does not forget -s
expecting success of 3507.39 'commit after failed cherry-pick does not add duplicated -s':
pristine_detach initial &&
test_must_fail git cherry-pick -s picked-signed &&
git commit -a -s &&
test $(git show -s >tmp && grep -c "Signed-off-by" tmp && rm tmp) = 1
HEAD is now at df2a63d initial
warning: cancelling a cherry picking in progress
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply e4ca149... picked-signed
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
[detached HEAD ae79e40] picked-signed
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 6 insertions(+)
ok 39 - commit after failed cherry-pick does not add duplicated -s
expecting success of 3507.40 'commit after failed cherry-pick adds -s at the right place':
pristine_detach initial &&
test_must_fail git cherry-pick picked &&
git commit -a -s &&
# Do S-o-b and Conflicts appear in the right order?
cat <<-\EOF >expect &&
Signed-off-by: C O Mitter <committer@example.com>
# Conflicts:
EOF
grep -e "^# Conflicts:" -e "^Signed-off-by" .git/COMMIT_EDITMSG >actual &&
test_cmp expect actual &&
cat <<-\EOF >expected &&
picked
Signed-off-by: C O Mitter <committer@example.com>
EOF
git show -s --pretty=format:%B >actual &&
test_cmp expected actual
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
ae79e40 picked-signed
HEAD is now at df2a63d initial
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply 7e6d412... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
[detached HEAD 56f790d] picked
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 6 insertions(+)
ok 40 - commit after failed cherry-pick adds -s at the right place
expecting success of 3507.41 'commit --amend -s places the sign-off at the right place':
pristine_detach initial &&
test_must_fail git cherry-pick picked &&
# emulate old-style conflicts block
mv .git/MERGE_MSG .git/MERGE_MSG+ &&
sed -e "/^# Conflicts:/,\$s/^# *//" .git/MERGE_MSG+ >.git/MERGE_MSG &&
git commit -a &&
git commit --amend -s &&
# Do S-o-b and Conflicts appear in the right order?
cat <<-\EOF >expect &&
Signed-off-by: C O Mitter <committer@example.com>
Conflicts:
EOF
grep -e "^Conflicts:" -e "^Signed-off-by" .git/COMMIT_EDITMSG >actual &&
test_cmp expect actual
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
56f790d picked
HEAD is now at df2a63d initial
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply 7e6d412... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
[detached HEAD a795bbb] picked
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 6 insertions(+)
[detached HEAD 91df379] picked
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 6 insertions(+)
ok 41 - commit --amend -s places the sign-off at the right place
expecting success of 3507.42 'cherry-pick preserves sparse-checkout':
pristine_detach initial &&
test_config core.sparseCheckout true &&
test_when_finished "
echo \"/*\" >.git/info/sparse-checkout
git read-tree --reset -u HEAD
rm .git/info/sparse-checkout" &&
mkdir .git/info &&
echo /unrelated >.git/info/sparse-checkout &&
git read-tree --reset -u HEAD &&
test_must_fail git cherry-pick -Xours picked>actual &&
test_i18ngrep ! "Changes not staged for commit:" actual
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
91df379 picked
HEAD is now at df2a63d initial
The previous cherry-pick is now empty, possibly due to conflict resolution.
If you wish to commit it anyway, use:
git commit --allow-empty
Otherwise, please use 'git cherry-pick --skip'
ok 42 - cherry-pick preserves sparse-checkout
expecting success of 3507.43 'cherry-pick --continue remembers --keep-redundant-commits':
test_when_finished "git cherry-pick --abort || :" &&
pristine_detach initial &&
test_must_fail git cherry-pick --keep-redundant-commits picked redundant &&
echo c >foo &&
git add foo &&
git cherry-pick --continue
HEAD is now at df2a63d initial
warning: cancelling a cherry picking in progress
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply 7e6d412... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
[detached HEAD d9f497e] picked
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
[detached HEAD 22de78d] redundant-pick
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:17:13 2005 -0700
error: no cherry-pick or revert in progress
fatal: cherry-pick failed
ok 43 - cherry-pick --continue remembers --keep-redundant-commits
expecting success of 3507.44 'cherry-pick --continue remembers --allow-empty and --allow-empty-message':
test_when_finished "git cherry-pick --abort || :" &&
pristine_detach initial &&
test_must_fail git cherry-pick --allow-empty --allow-empty-message \
picked empty &&
echo c >foo &&
git add foo &&
git cherry-pick --continue
Warning: you are leaving 2 commits behind, not connected to
any of your branches:
22de78d redundant-pick
d9f497e picked
HEAD is now at df2a63d initial
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply 7e6d412... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
[detached HEAD d9f497e] picked
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
[detached HEAD d7f7844]
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:17:13 2005 -0700
error: no cherry-pick or revert in progress
fatal: cherry-pick failed
ok 44 - cherry-pick --continue remembers --allow-empty and --allow-empty-message
# passed all 44 test(s)
1..44
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3511-cherry-pick-x.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3511-cherry-pick-x/.git/
expecting success of 3511.1 'setup':
git config advice.detachedhead false &&
echo unrelated >unrelated &&
git add unrelated &&
test_commit initial foo a &&
test_commit "$mesg_one_line" foo b mesg-one-line &&
git reset --hard initial &&
test_commit "$mesg_no_footer" foo b mesg-no-footer &&
git reset --hard initial &&
test_commit "$mesg_broken_footer" foo b mesg-broken-footer &&
git reset --hard initial &&
test_commit "$mesg_with_footer" foo b mesg-with-footer &&
git reset --hard initial &&
test_commit "$mesg_with_footer_sob" foo b mesg-with-footer-sob &&
git reset --hard initial &&
test_commit "$mesg_with_cherry_footer" foo b mesg-with-cherry-footer &&
git reset --hard initial &&
test_config commit.cleanup verbatim &&
test_commit "$mesg_unclean" foo b mesg-unclean &&
test_unconfig commit.cleanup &&
pristine_detach initial &&
test_commit conflicting unrelated
[master (root-commit) df2a63d] initial
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 foo
create mode 100644 unrelated
[master d18d4f3] base: commit message
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
HEAD is now at df2a63d initial
[master e073909] base: commit message
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
HEAD is now at df2a63d initial
[master 0353e8f] base: commit message
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
HEAD is now at df2a63d initial
[master 3838485] base: commit message
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
HEAD is now at df2a63d initial
[master d60edf0] base: commit message
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
HEAD is now at df2a63d initial
[master d7a875c] base: commit message
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
HEAD is now at df2a63d initial
[master 860e94a] base: commit message
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
HEAD is now at df2a63d initial
[detached HEAD 823a98f] conflicting
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 1 - setup
expecting success of 3511.2 'cherry-pick -x inserts blank line after one line subject':
pristine_detach initial &&
sha1=$(git rev-parse mesg-one-line^0) &&
git cherry-pick -x mesg-one-line &&
cat <<-EOF >expect &&
$mesg_one_line
(cherry picked from commit $sha1)
EOF
git log -1 --pretty=format:%B >actual &&
test_cmp expect actual
Previous HEAD position was 823a98f conflicting
HEAD is now at df2a63d initial
[detached HEAD 6970a53] base: commit message
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
ok 2 - cherry-pick -x inserts blank line after one line subject
expecting success of 3511.3 'cherry-pick -s inserts blank line after one line subject':
pristine_detach initial &&
git cherry-pick -s mesg-one-line &&
cat <<-EOF >expect &&
$mesg_one_line
Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>
EOF
git log -1 --pretty=format:%B >actual &&
test_cmp expect actual
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
6970a53 base: commit message
HEAD is now at df2a63d initial
[detached HEAD 0fda2e1] base: commit message
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
ok 3 - cherry-pick -s inserts blank line after one line subject
expecting success of 3511.4 'cherry-pick -s inserts blank line after non-conforming footer':
pristine_detach initial &&
git cherry-pick -s mesg-broken-footer &&
cat <<-EOF >expect &&
$mesg_broken_footer
Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>
EOF
git log -1 --pretty=format:%B >actual &&
test_cmp expect actual
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
0fda2e1 base: commit message
HEAD is now at df2a63d initial
[detached HEAD 0cf5261] base: commit message
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
ok 4 - cherry-pick -s inserts blank line after non-conforming footer
expecting success of 3511.5 'cherry-pick -s recognizes trailer config':
pristine_detach initial &&
git -c "trailer.Myfooter.ifexists=add" cherry-pick -s mesg-broken-footer &&
cat <<-EOF >expect &&
$mesg_broken_footer
Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>
EOF
git log -1 --pretty=format:%B >actual &&
test_cmp expect actual
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
0cf5261 base: commit message
HEAD is now at df2a63d initial
[detached HEAD b95a0f7] base: commit message
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
ok 5 - cherry-pick -s recognizes trailer config
expecting success of 3511.6 'cherry-pick -x inserts blank line when conforming footer not found':
pristine_detach initial &&
sha1=$(git rev-parse mesg-no-footer^0) &&
git cherry-pick -x mesg-no-footer &&
cat <<-EOF >expect &&
$mesg_no_footer
(cherry picked from commit $sha1)
EOF
git log -1 --pretty=format:%B >actual &&
test_cmp expect actual
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
b95a0f7 base: commit message
HEAD is now at df2a63d initial
[detached HEAD 6f42e54] base: commit message
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
ok 6 - cherry-pick -x inserts blank line when conforming footer not found
expecting success of 3511.7 'cherry-pick -s inserts blank line when conforming footer not found':
pristine_detach initial &&
git cherry-pick -s mesg-no-footer &&
cat <<-EOF >expect &&
$mesg_no_footer
Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>
EOF
git log -1 --pretty=format:%B >actual &&
test_cmp expect actual
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
6f42e54 base: commit message
HEAD is now at df2a63d initial
[detached HEAD 32d2dda] base: commit message
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
ok 7 - cherry-pick -s inserts blank line when conforming footer not found
expecting success of 3511.8 'cherry-pick -x -s inserts blank line when conforming footer not found':
pristine_detach initial &&
sha1=$(git rev-parse mesg-no-footer^0) &&
git cherry-pick -x -s mesg-no-footer &&
cat <<-EOF >expect &&
$mesg_no_footer
(cherry picked from commit $sha1)
Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>
EOF
git log -1 --pretty=format:%B >actual &&
test_cmp expect actual
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
32d2dda base: commit message
HEAD is now at df2a63d initial
[detached HEAD adaaef8] base: commit message
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
ok 8 - cherry-pick -x -s inserts blank line when conforming footer not found
expecting success of 3511.9 'cherry-pick -s adds sob when last sob doesnt match committer':
pristine_detach initial &&
git cherry-pick -s mesg-with-footer &&
cat <<-EOF >expect &&
$mesg_with_footer
Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>
EOF
git log -1 --pretty=format:%B >actual &&
test_cmp expect actual
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
adaaef8 base: commit message
HEAD is now at df2a63d initial
[detached HEAD b62bd75] base: commit message
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:17:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
ok 9 - cherry-pick -s adds sob when last sob doesnt match committer
expecting success of 3511.10 'cherry-pick -x -s adds sob when last sob doesnt match committer':
pristine_detach initial &&
sha1=$(git rev-parse mesg-with-footer^0) &&
git cherry-pick -x -s mesg-with-footer &&
cat <<-EOF >expect &&
$mesg_with_footer
(cherry picked from commit $sha1)
Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>
EOF
git log -1 --pretty=format:%B >actual &&
test_cmp expect actual
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
b62bd75 base: commit message
HEAD is now at df2a63d initial
[detached HEAD 94e740a] base: commit message
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:17:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
ok 10 - cherry-pick -x -s adds sob when last sob doesnt match committer
expecting success of 3511.11 'cherry-pick -s refrains from adding duplicate trailing sob':
pristine_detach initial &&
git cherry-pick -s mesg-with-footer-sob &&
cat <<-EOF >expect &&
$mesg_with_footer_sob
EOF
git log -1 --pretty=format:%B >actual &&
test_cmp expect actual
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
94e740a base: commit message
HEAD is now at df2a63d initial
[detached HEAD a836c16] base: commit message
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:18:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
ok 11 - cherry-pick -s refrains from adding duplicate trailing sob
expecting success of 3511.12 'cherry-pick -x -s adds sob even when trailing sob exists for committer':
pristine_detach initial &&
sha1=$(git rev-parse mesg-with-footer-sob^0) &&
git cherry-pick -x -s mesg-with-footer-sob &&
cat <<-EOF >expect &&
$mesg_with_footer_sob
(cherry picked from commit $sha1)
Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>
EOF
git log -1 --pretty=format:%B >actual &&
test_cmp expect actual
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
a836c16 base: commit message
HEAD is now at df2a63d initial
[detached HEAD 2d6e386] base: commit message
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:18:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
ok 12 - cherry-pick -x -s adds sob even when trailing sob exists for committer
expecting success of 3511.13 'cherry-pick -x handles commits with no NL at end of message':
pristine_detach initial &&
printf "title\n\nSigned-off-by: A <a@example.com>" >msg &&
sha1=$(git commit-tree -p initial mesg-with-footer^{tree} <msg) &&
git cherry-pick -x $sha1 &&
git log -1 --pretty=format:%B >actual &&
printf "\n(cherry picked from commit %s)\n" $sha1 >>msg &&
test_cmp msg actual
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
2d6e386 base: commit message
HEAD is now at df2a63d initial
[detached HEAD 96716be] title
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:21:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
ok 13 - cherry-pick -x handles commits with no NL at end of message
expecting success of 3511.14 'cherry-pick -x handles commits with no footer and no NL at end of message':
pristine_detach initial &&
printf "title\n\nnot a footer" >msg &&
sha1=$(git commit-tree -p initial mesg-with-footer^{tree} <msg) &&
git cherry-pick -x $sha1 &&
git log -1 --pretty=format:%B >actual &&
printf "\n\n(cherry picked from commit %s)\n" $sha1 >>msg &&
test_cmp msg actual
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
96716be title
HEAD is now at df2a63d initial
[detached HEAD 8c5d63f] title
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:21:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
ok 14 - cherry-pick -x handles commits with no footer and no NL at end of message
expecting success of 3511.15 'cherry-pick -s handles commits with no NL at end of message':
pristine_detach initial &&
printf "title\n\nSigned-off-by: A <a@example.com>" >msg &&
sha1=$(git commit-tree -p initial mesg-with-footer^{tree} <msg) &&
git cherry-pick -s $sha1 &&
git log -1 --pretty=format:%B >actual &&
printf "\nSigned-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>\n" >>msg &&
test_cmp msg actual
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
8c5d63f title
HEAD is now at df2a63d initial
[detached HEAD 6671fda] title
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:21:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
ok 15 - cherry-pick -s handles commits with no NL at end of message
expecting success of 3511.16 'cherry-pick -s handles commits with no footer and no NL at end of message':
pristine_detach initial &&
printf "title\n\nnot a footer" >msg &&
sha1=$(git commit-tree -p initial mesg-with-footer^{tree} <msg) &&
git cherry-pick -s $sha1 &&
git log -1 --pretty=format:%B >actual &&
printf "\n\nSigned-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>\n" >>msg &&
test_cmp msg actual
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
6671fda title
HEAD is now at df2a63d initial
[detached HEAD 19f481d] title
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:21:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
ok 16 - cherry-pick -s handles commits with no footer and no NL at end of message
expecting success of 3511.17 'cherry-pick -x treats "(cherry picked from..." line as part of footer':
pristine_detach initial &&
sha1=$(git rev-parse mesg-with-cherry-footer^0) &&
git cherry-pick -x mesg-with-cherry-footer &&
cat <<-EOF >expect &&
$mesg_with_cherry_footer
(cherry picked from commit $sha1)
EOF
git log -1 --pretty=format:%B >actual &&
test_cmp expect actual
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
19f481d title
HEAD is now at df2a63d initial
[detached HEAD 7b5eb6d] base: commit message
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:19:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
ok 17 - cherry-pick -x treats "(cherry picked from..." line as part of footer
expecting success of 3511.18 'cherry-pick -s treats "(cherry picked from..." line as part of footer':
pristine_detach initial &&
git cherry-pick -s mesg-with-cherry-footer &&
cat <<-EOF >expect &&
$mesg_with_cherry_footer
Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>
EOF
git log -1 --pretty=format:%B >actual &&
test_cmp expect actual
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
7b5eb6d base: commit message
HEAD is now at df2a63d initial
[detached HEAD b468a7b] base: commit message
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:19:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
ok 18 - cherry-pick -s treats "(cherry picked from..." line as part of footer
expecting success of 3511.19 'cherry-pick -x -s treats "(cherry picked from..." line as part of footer':
pristine_detach initial &&
sha1=$(git rev-parse mesg-with-cherry-footer^0) &&
git cherry-pick -x -s mesg-with-cherry-footer &&
cat <<-EOF >expect &&
$mesg_with_cherry_footer
(cherry picked from commit $sha1)
Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>
EOF
git log -1 --pretty=format:%B >actual &&
test_cmp expect actual
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
b468a7b base: commit message
HEAD is now at df2a63d initial
[detached HEAD c7c741c] base: commit message
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:19:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
ok 19 - cherry-pick -x -s treats "(cherry picked from..." line as part of footer
expecting success of 3511.20 'cherry-pick preserves commit message':
pristine_detach initial &&
printf "$mesg_unclean" >expect &&
git log -1 --pretty=format:%B mesg-unclean >actual &&
test_cmp expect actual &&
git cherry-pick mesg-unclean &&
git log -1 --pretty=format:%B >actual &&
test_cmp expect actual
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
c7c741c base: commit message
HEAD is now at df2a63d initial
[detached HEAD 7a2ed43] base: commit message
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:20:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
ok 20 - cherry-pick preserves commit message
expecting success of 3511.21 'cherry-pick -x cleans commit message':
pristine_detach initial &&
git cherry-pick -x mesg-unclean &&
git log -1 --pretty=format:%B >actual &&
printf "%s\n(cherry picked from commit %s)\n" \
"$mesg_unclean" $(git rev-parse mesg-unclean) |
git stripspace >expect &&
test_cmp expect actual
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
7a2ed43 base: commit message
HEAD is now at df2a63d initial
[detached HEAD ad2d5bc] base: commit message
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:20:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
ok 21 - cherry-pick -x cleans commit message
expecting success of 3511.22 'cherry-pick -x respects commit.cleanup':
pristine_detach initial &&
git -c commit.cleanup=strip cherry-pick -x mesg-unclean &&
git log -1 --pretty=format:%B >actual &&
printf "%s\n(cherry picked from commit %s)\n" \
"$mesg_unclean" $(git rev-parse mesg-unclean) |
git stripspace -s >expect &&
test_cmp expect actual
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
ad2d5bc base: commit message
HEAD is now at df2a63d initial
[detached HEAD fd8c8fa] base: commit message
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:20:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
ok 22 - cherry-pick -x respects commit.cleanup
# passed all 22 test(s)
1..22
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3510-cherry-pick-sequence.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3510-cherry-pick-sequence/.git/
expecting success of 3510.1 'setup':
git config advice.detachedhead false &&
echo unrelated >unrelated &&
git add unrelated &&
test_commit initial foo a &&
test_commit base foo b &&
test_commit unrelatedpick unrelated reallyunrelated &&
test_commit picked foo c &&
test_commit anotherpick foo d &&
test_commit yetanotherpick foo e &&
pristine_detach initial &&
test_commit conflicting unrelated
[master (root-commit) df2a63d] initial
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 foo
create mode 100644 unrelated
[master dc0113b] base
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[master 24c5742] unrelatedpick
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[master fdc0b12] picked
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[master 965fed4] anotherpick
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[master 55c7d12] yetanotherpick
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
HEAD is now at df2a63d initial
[detached HEAD d520364] conflicting
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 1 - setup
expecting success of 3510.2 'cherry-pick persists data on failure':
pristine_detach initial &&
test_expect_code 1 git cherry-pick -s base..anotherpick &&
test_path_is_dir .git/sequencer &&
test_path_is_file .git/sequencer/head &&
test_path_is_file .git/sequencer/todo &&
test_path_is_file .git/sequencer/opts
Previous HEAD position was d520364 conflicting
HEAD is now at df2a63d initial
[detached HEAD 2fa73e8] unrelatedpick
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply fdc0b12... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
ok 2 - cherry-pick persists data on failure
expecting success of 3510.3 'cherry-pick mid-cherry-pick-sequence':
pristine_detach initial &&
test_must_fail git cherry-pick base..anotherpick &&
test_cmp_rev picked CHERRY_PICK_HEAD &&
# "oops, I forgot that these patches rely on the change from base"
git checkout HEAD foo &&
git cherry-pick base &&
git cherry-pick picked &&
git cherry-pick --continue &&
git diff --exit-code anotherpick
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
2fa73e8 unrelatedpick
HEAD is now at df2a63d initial
[detached HEAD 7fdfeeb] unrelatedpick
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply fdc0b12... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
Updated 1 path from a9867be
[detached HEAD 28eafda] base
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
[detached HEAD 4a5cd69] picked
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
[detached HEAD 49d5115] anotherpick
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:17:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
ok 3 - cherry-pick mid-cherry-pick-sequence
expecting success of 3510.4 'cherry-pick persists opts correctly':
pristine_detach initial &&
# to make sure that the session to cherry-pick a sequence
# gets interrupted, use a high-enough number that is larger
# than the number of parents of any commit we have created
mainline=4 &&
test_expect_code 128 git cherry-pick -s -m $mainline --strategy=recursive -X patience -X ours --edit initial..anotherpick &&
test_path_is_dir .git/sequencer &&
test_path_is_file .git/sequencer/head &&
test_path_is_file .git/sequencer/todo &&
test_path_is_file .git/sequencer/opts &&
echo "true" >expect &&
git config --file=.git/sequencer/opts --get-all options.signoff >actual &&
test_cmp expect actual &&
echo "$mainline" >expect &&
git config --file=.git/sequencer/opts --get-all options.mainline >actual &&
test_cmp expect actual &&
echo "recursive" >expect &&
git config --file=.git/sequencer/opts --get-all options.strategy >actual &&
test_cmp expect actual &&
cat >expect <<-\EOF &&
patience
ours
EOF
git config --file=.git/sequencer/opts --get-all options.strategy-option >actual &&
test_cmp expect actual &&
echo "true" >expect &&
git config --file=.git/sequencer/opts --get-all options.edit >actual &&
test_cmp expect actual
Warning: you are leaving 4 commits behind, not connected to
any of your branches:
49d5115 anotherpick
4a5cd69 picked
28eafda base
7fdfeeb unrelatedpick
HEAD is now at df2a63d initial
error: commit dc0113b541050fbc624688af31e35b1d246f20fc does not have parent 4
fatal: cherry-pick failed
ok 4 - cherry-pick persists opts correctly
expecting success of 3510.5 'revert persists opts correctly':
pristine_detach initial &&
# to make sure that the session to revert a sequence
# gets interrupted, revert commits that are not in the history
# of HEAD.
test_expect_code 1 git revert -s --strategy=recursive -X patience -X ours --no-edit picked yetanotherpick &&
test_path_is_dir .git/sequencer &&
test_path_is_file .git/sequencer/head &&
test_path_is_file .git/sequencer/todo &&
test_path_is_file .git/sequencer/opts &&
echo "true" >expect &&
git config --file=.git/sequencer/opts --get-all options.signoff >actual &&
test_cmp expect actual &&
echo "recursive" >expect &&
git config --file=.git/sequencer/opts --get-all options.strategy >actual &&
test_cmp expect actual &&
cat >expect <<-\EOF &&
patience
ours
EOF
git config --file=.git/sequencer/opts --get-all options.strategy-option >actual &&
test_cmp expect actual &&
echo "false" >expect &&
git config --file=.git/sequencer/opts --get-all options.edit >actual &&
test_cmp expect actual
HEAD is now at df2a63d initial
Auto-merging foo
Skipped foo (merged same as existing)
HEAD detached at df2a63d
Revert currently in progress.
(run "git revert --continue" to continue)
(use "git revert --skip" to skip this patch)
(use "git revert --abort" to cancel the revert operation)
nothing to commit, working tree clean
ok 5 - revert persists opts correctly
expecting success of 3510.6 'cherry-pick cleans up sequencer state upon success':
pristine_detach initial &&
git cherry-pick initial..picked &&
test_path_is_missing .git/sequencer
HEAD is now at df2a63d initial
[detached HEAD 86ee3fa] base
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
[detached HEAD 2b8ae83] unrelatedpick
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
[detached HEAD a222ac0] picked
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
ok 6 - cherry-pick cleans up sequencer state upon success
expecting success of 3510.7 'cherry-pick --skip requires cherry-pick in progress':
pristine_detach initial &&
test_must_fail git cherry-pick --skip
Warning: you are leaving 3 commits behind, not connected to
any of your branches:
a222ac0 picked
2b8ae83 unrelatedpick
86ee3fa base
HEAD is now at df2a63d initial
error: no cherry-pick in progress
fatal: cherry-pick failed
ok 7 - cherry-pick --skip requires cherry-pick in progress
expecting success of 3510.8 'revert --skip requires revert in progress':
pristine_detach initial &&
test_must_fail git revert --skip
HEAD is now at df2a63d initial
error: no revert in progress
fatal: revert failed
ok 8 - revert --skip requires revert in progress
expecting success of 3510.9 'cherry-pick --skip to skip commit':
pristine_detach initial &&
test_must_fail git cherry-pick anotherpick &&
test_must_fail git revert --skip &&
git cherry-pick --skip &&
test_cmp_rev initial HEAD &&
test_path_is_missing .git/CHERRY_PICK_HEAD
HEAD is now at df2a63d initial
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply 965fed4... anotherpick
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
error: no revert in progress
fatal: revert failed
ok 9 - cherry-pick --skip to skip commit
expecting success of 3510.10 'revert --skip to skip commit':
pristine_detach anotherpick &&
test_must_fail git revert anotherpick~1 &&
test_must_fail git cherry-pick --skip &&
git revert --skip &&
test_cmp_rev anotherpick HEAD
Previous HEAD position was df2a63d initial
HEAD is now at 965fed4 anotherpick
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not revert fdc0b12... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git revert --continue".
hint: You can instead skip this commit with "git revert --skip".
hint: To abort and get back to the state before "git revert",
hint: run "git revert --abort".
error: no cherry-pick in progress
fatal: cherry-pick failed
ok 10 - revert --skip to skip commit
expecting success of 3510.11 'skip "empty" commit':
pristine_detach picked &&
test_commit dummy foo d &&
test_must_fail git cherry-pick anotherpick 2>err &&
test_i18ngrep "git cherry-pick --skip" err &&
git cherry-pick --skip &&
test_cmp_rev dummy HEAD
Previous HEAD position was 965fed4 anotherpick
HEAD is now at fdc0b12 picked
[detached HEAD 4b36a1c] dummy
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
HEAD detached from fdc0b12
You are currently cherry-picking commit 965fed4.
(all conflicts fixed: run "git cherry-pick --continue")
(use "git cherry-pick --skip" to skip this patch)
(use "git cherry-pick --abort" to cancel the cherry-pick operation)
Untracked files:
(use "git add <file>..." to include in what will be committed)
err
nothing added to commit but untracked files present (use "git add" to track)
Otherwise, please use 'git cherry-pick --skip'
ok 11 - skip "empty" commit
expecting success of 3510.12 'skip a commit and check if rest of sequence is correct':
pristine_detach initial &&
echo e >expect &&
cat >expect.log <<-EOF &&
OBJID
:100644 100644 OBJID OBJID M foo
OBJID
:100644 100644 OBJID OBJID M foo
OBJID
:100644 100644 OBJID OBJID M unrelated
OBJID
:000000 100644 OBJID OBJID A foo
:000000 100644 OBJID OBJID A unrelated
EOF
test_must_fail git cherry-pick base..yetanotherpick &&
test_must_fail git cherry-pick --skip &&
echo d >foo &&
git add foo &&
git cherry-pick --continue &&
{
git rev-list HEAD |
git diff-tree --root --stdin |
sed "s/$OID_REGEX/OBJID/g"
} >actual.log &&
test_cmp expect foo &&
test_cmp expect.log actual.log
Previous HEAD position was 4b36a1c dummy
HEAD is now at df2a63d initial
[detached HEAD c738c4d] unrelatedpick
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply fdc0b12... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply 965fed4... anotherpick
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
[detached HEAD 612ff5e] anotherpick
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:17:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
[detached HEAD 61f8ec3] yetanotherpick
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:18:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
ok 12 - skip a commit and check if rest of sequence is correct
expecting success of 3510.13 'check advice when we move HEAD by committing':
pristine_detach initial &&
cat >expect <<-EOF &&
error: there is nothing to skip
hint: have you committed already?
hint: try "git cherry-pick --continue"
fatal: cherry-pick failed
EOF
test_must_fail git cherry-pick base..yetanotherpick &&
echo c >foo &&
git commit -a &&
test_path_is_missing .git/CHERRY_PICK_HEAD &&
test_must_fail git cherry-pick --skip 2>advice &&
test_cmp expect advice
Warning: you are leaving 3 commits behind, not connected to
any of your branches:
61f8ec3 yetanotherpick
612ff5e anotherpick
c738c4d unrelatedpick
HEAD is now at df2a63d initial
[detached HEAD c738c4d] unrelatedpick
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply fdc0b12... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
[detached HEAD 43fe10f] picked
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
ok 13 - check advice when we move HEAD by committing
expecting success of 3510.14 'selectively advise --skip while launching another sequence':
pristine_detach initial &&
cat >expect <<-EOF &&
error: cherry-pick is already in progress
hint: try "git cherry-pick (--continue | --skip | --abort | --quit)"
fatal: cherry-pick failed
EOF
test_must_fail git cherry-pick picked..yetanotherpick &&
test_must_fail git cherry-pick picked..yetanotherpick 2>advice &&
test_cmp expect advice &&
cat >expect <<-EOF &&
error: cherry-pick is already in progress
hint: try "git cherry-pick (--continue | --abort | --quit)"
fatal: cherry-pick failed
EOF
git reset --merge &&
test_must_fail git cherry-pick picked..yetanotherpick 2>advice &&
test_cmp expect advice
Warning: you are leaving 2 commits behind, not connected to
any of your branches:
43fe10f picked
c738c4d unrelatedpick
HEAD is now at df2a63d initial
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply 965fed4... anotherpick
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
ok 14 - selectively advise --skip while launching another sequence
expecting success of 3510.15 'allow skipping commit but not abort for a new history':
pristine_detach initial &&
cat >expect <<-EOF &&
error: cannot abort from a branch yet to be born
fatal: cherry-pick failed
EOF
git checkout --orphan new_disconnected &&
git reset --hard &&
test_must_fail git cherry-pick anotherpick &&
test_must_fail git cherry-pick --abort 2>advice &&
git cherry-pick --skip &&
test_cmp expect advice
HEAD is now at df2a63d initial
Switched to a new branch 'new_disconnected'
CONFLICT (modify/delete): foo deleted in HEAD and modified in 965fed4 (anotherpick). Version 965fed4 (anotherpick) of foo left in tree.
error: could not apply 965fed4... anotherpick
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
ok 15 - allow skipping commit but not abort for a new history
expecting success of 3510.16 'allow skipping stopped cherry-pick because of untracked file modifications':
test_when_finished "rm unrelated" &&
pristine_detach initial &&
git rm --cached unrelated &&
git commit -m "untrack unrelated" &&
test_must_fail git cherry-pick initial base &&
test_path_is_missing .git/CHERRY_PICK_HEAD &&
git cherry-pick --skip
HEAD is now at df2a63d initial
rm 'unrelated'
[detached HEAD 44a5ca1] untrack unrelated
Author: A U Thor <author@example.com>
1 file changed, 1 deletion(-)
delete mode 100644 unrelated
error: The following untracked working tree files would be overwritten by merge:
unrelated
Please move or remove them before you merge.
Aborting
fatal: cherry-pick failed
[detached HEAD f847cb0] base
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
ok 16 - allow skipping stopped cherry-pick because of untracked file modifications
expecting success of 3510.17 '--quit does not complain when no cherry-pick is in progress':
pristine_detach initial &&
git cherry-pick --quit
Warning: you are leaving 2 commits behind, not connected to
any of your branches:
f847cb0 base
44a5ca1 untrack unrelated
HEAD is now at df2a63d initial
ok 17 - --quit does not complain when no cherry-pick is in progress
expecting success of 3510.18 '--abort requires cherry-pick in progress':
pristine_detach initial &&
test_must_fail git cherry-pick --abort
HEAD is now at df2a63d initial
error: no cherry-pick or revert in progress
fatal: cherry-pick failed
ok 18 - --abort requires cherry-pick in progress
expecting success of 3510.19 '--quit cleans up sequencer state':
pristine_detach initial &&
test_expect_code 1 git cherry-pick base..picked &&
git cherry-pick --quit &&
test_path_is_missing .git/sequencer &&
test_path_is_missing .git/CHERRY_PICK_HEAD
HEAD is now at df2a63d initial
[detached HEAD c738c4d] unrelatedpick
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply fdc0b12... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
ok 19 - --quit cleans up sequencer state
expecting success of 3510.20 '--quit keeps HEAD and conflicted index intact':
pristine_detach initial &&
cat >expect <<-\EOF &&
OBJID
:100644 100644 OBJID OBJID M unrelated
OBJID
:000000 100644 OBJID OBJID A foo
:000000 100644 OBJID OBJID A unrelated
EOF
test_expect_code 1 git cherry-pick base..picked &&
git cherry-pick --quit &&
test_path_is_missing .git/sequencer &&
test_must_fail git update-index --refresh &&
{
git rev-list HEAD |
git diff-tree --root --stdin |
sed "s/$OID_REGEX/OBJID/g"
} >actual &&
test_cmp expect actual
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
c738c4d unrelatedpick
HEAD is now at df2a63d initial
[detached HEAD c738c4d] unrelatedpick
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply fdc0b12... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
foo: needs merge
ok 20 - --quit keeps HEAD and conflicted index intact
expecting success of 3510.21 '--abort to cancel multiple cherry-pick':
pristine_detach initial &&
test_expect_code 1 git cherry-pick base..anotherpick &&
git cherry-pick --abort &&
test_path_is_missing .git/sequencer &&
test_path_is_missing .git/CHERRY_PICK_HEAD &&
test_cmp_rev initial HEAD &&
git update-index --refresh &&
git diff-index --exit-code HEAD
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
c738c4d unrelatedpick
HEAD is now at df2a63d initial
[detached HEAD c738c4d] unrelatedpick
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply fdc0b12... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
ok 21 - --abort to cancel multiple cherry-pick
expecting success of 3510.22 '--abort to cancel single cherry-pick':
pristine_detach initial &&
test_expect_code 1 git cherry-pick picked &&
git cherry-pick --abort &&
test_path_is_missing .git/sequencer &&
test_path_is_missing .git/CHERRY_PICK_HEAD &&
test_cmp_rev initial HEAD &&
git update-index --refresh &&
git diff-index --exit-code HEAD
HEAD is now at df2a63d initial
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply fdc0b12... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
ok 22 - --abort to cancel single cherry-pick
expecting success of 3510.23 '--abort does not unsafely change HEAD':
pristine_detach initial &&
test_must_fail git cherry-pick picked anotherpick &&
git reset --hard base &&
test_must_fail git cherry-pick picked anotherpick &&
git cherry-pick --abort 2>actual &&
test_i18ngrep "You seem to have moved HEAD" actual &&
test_cmp_rev base HEAD
HEAD is now at df2a63d initial
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply fdc0b12... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
HEAD is now at dc0113b base
error: cherry-pick is already in progress
hint: try "git cherry-pick (--continue | --abort | --quit)"
fatal: cherry-pick failed
warning: You seem to have moved HEAD. Not rewinding, check your HEAD!
ok 23 - --abort does not unsafely change HEAD
expecting success of 3510.24 'cherry-pick --abort to cancel multiple revert':
pristine_detach anotherpick &&
test_expect_code 1 git revert base..picked &&
git cherry-pick --abort &&
test_path_is_missing .git/sequencer &&
test_path_is_missing .git/CHERRY_PICK_HEAD &&
test_cmp_rev anotherpick HEAD &&
git update-index --refresh &&
git diff-index --exit-code HEAD
Previous HEAD position was dc0113b base
HEAD is now at 965fed4 anotherpick
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not revert fdc0b12... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git revert --continue".
hint: You can instead skip this commit with "git revert --skip".
hint: To abort and get back to the state before "git revert",
hint: run "git revert --abort".
ok 24 - cherry-pick --abort to cancel multiple revert
expecting success of 3510.25 'revert --abort works, too':
pristine_detach anotherpick &&
test_expect_code 1 git revert base..picked &&
git revert --abort &&
test_path_is_missing .git/sequencer &&
test_cmp_rev anotherpick HEAD
HEAD is now at 965fed4 anotherpick
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not revert fdc0b12... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git revert --continue".
hint: You can instead skip this commit with "git revert --skip".
hint: To abort and get back to the state before "git revert",
hint: run "git revert --abort".
ok 25 - revert --abort works, too
expecting success of 3510.26 '--abort to cancel single revert':
pristine_detach anotherpick &&
test_expect_code 1 git revert picked &&
git revert --abort &&
test_path_is_missing .git/sequencer &&
test_cmp_rev anotherpick HEAD &&
git update-index --refresh &&
git diff-index --exit-code HEAD
HEAD is now at 965fed4 anotherpick
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not revert fdc0b12... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git revert --continue".
hint: You can instead skip this commit with "git revert --skip".
hint: To abort and get back to the state before "git revert",
hint: run "git revert --abort".
ok 26 - --abort to cancel single revert
expecting success of 3510.27 '--abort keeps unrelated change, easy case':
pristine_detach unrelatedpick &&
echo changed >expect &&
test_expect_code 1 git cherry-pick picked..yetanotherpick &&
echo changed >unrelated &&
git cherry-pick --abort &&
test_cmp expect unrelated
Previous HEAD position was 965fed4 anotherpick
HEAD is now at 24c5742 unrelatedpick
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply 965fed4... anotherpick
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
ok 27 - --abort keeps unrelated change, easy case
expecting success of 3510.28 '--abort refuses to clobber unrelated change, harder case':
pristine_detach initial &&
echo changed >expect &&
test_expect_code 1 git cherry-pick base..anotherpick &&
echo changed >unrelated &&
test_must_fail git cherry-pick --abort &&
test_cmp expect unrelated &&
git rev-list HEAD >log &&
test_line_count = 2 log &&
test_must_fail git update-index --refresh &&
git checkout unrelated &&
git cherry-pick --abort &&
test_cmp_rev initial HEAD
Previous HEAD position was 24c5742 unrelatedpick
HEAD is now at df2a63d initial
[detached HEAD c738c4d] unrelatedpick
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply fdc0b12... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
error: Entry 'unrelated' not uptodate. Cannot merge.
fatal: Could not reset index file to revision 'df2a63d8a410bba7d3f608203e12bb371c76d4a8'.
fatal: cherry-pick failed
foo: needs merge
unrelated: needs update
Updated 1 path from the index
ok 28 - --abort refuses to clobber unrelated change, harder case
expecting success of 3510.29 'cherry-pick still writes sequencer state when one commit is left':
pristine_detach initial &&
test_expect_code 1 git cherry-pick base..picked &&
test_path_is_dir .git/sequencer &&
echo "resolved" >foo &&
git add foo &&
git commit &&
{
git rev-list HEAD |
git diff-tree --root --stdin |
sed "s/$OID_REGEX/OBJID/g"
} >actual &&
cat >expect <<-\EOF &&
OBJID
:100644 100644 OBJID OBJID M foo
OBJID
:100644 100644 OBJID OBJID M unrelated
OBJID
:000000 100644 OBJID OBJID A foo
:000000 100644 OBJID OBJID A unrelated
EOF
test_cmp expect actual
HEAD is now at df2a63d initial
[detached HEAD c738c4d] unrelatedpick
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply fdc0b12... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
[detached HEAD 9781982] picked
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
ok 29 - cherry-pick still writes sequencer state when one commit is left
expecting success of 3510.30 '--abort after last commit in sequence':
pristine_detach initial &&
test_expect_code 1 git cherry-pick base..picked &&
git cherry-pick --abort &&
test_path_is_missing .git/sequencer &&
test_path_is_missing .git/CHERRY_PICK_HEAD &&
test_cmp_rev initial HEAD &&
git update-index --refresh &&
git diff-index --exit-code HEAD
Warning: you are leaving 2 commits behind, not connected to
any of your branches:
9781982 picked
c738c4d unrelatedpick
HEAD is now at df2a63d initial
[detached HEAD c738c4d] unrelatedpick
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply fdc0b12... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
ok 30 - --abort after last commit in sequence
expecting success of 3510.31 'cherry-pick does not implicitly stomp an existing operation':
pristine_detach initial &&
test_expect_code 1 git cherry-pick base..anotherpick &&
test-tool chmtime --get .git/sequencer >expect &&
test_expect_code 128 git cherry-pick unrelatedpick &&
test-tool chmtime --get .git/sequencer >actual &&
test_cmp expect actual
HEAD is now at df2a63d initial
[detached HEAD c738c4d] unrelatedpick
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply fdc0b12... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
error: Cherry-picking is not possible because you have unmerged files.
hint: Fix them up in the work tree, and then use 'git add/rm <file>'
hint: as appropriate to mark resolution and make a commit.
fatal: cherry-pick failed
ok 31 - cherry-pick does not implicitly stomp an existing operation
expecting success of 3510.32 '--continue complains when no cherry-pick is in progress':
pristine_detach initial &&
test_expect_code 128 git cherry-pick --continue
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
c738c4d unrelatedpick
HEAD is now at df2a63d initial
error: no cherry-pick or revert in progress
fatal: cherry-pick failed
ok 32 - --continue complains when no cherry-pick is in progress
expecting success of 3510.33 '--continue complains when there are unresolved conflicts':
pristine_detach initial &&
test_expect_code 1 git cherry-pick base..anotherpick &&
test_expect_code 128 git cherry-pick --continue
HEAD is now at df2a63d initial
[detached HEAD c738c4d] unrelatedpick
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply fdc0b12... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
error: Committing is not possible because you have unmerged files.
hint: Fix them up in the work tree, and then use 'git add/rm <file>'
hint: as appropriate to mark resolution and make a commit.
fatal: Exiting because of an unresolved conflict.
U foo
ok 33 - --continue complains when there are unresolved conflicts
expecting success of 3510.34 '--continue of single cherry-pick':
pristine_detach initial &&
echo c >expect &&
test_must_fail git cherry-pick picked &&
echo c >foo &&
git add foo &&
git cherry-pick --continue &&
test_cmp expect foo &&
test_cmp_rev initial HEAD^ &&
git diff --exit-code HEAD &&
test_must_fail git rev-parse --verify CHERRY_PICK_HEAD
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
c738c4d unrelatedpick
HEAD is now at df2a63d initial
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply fdc0b12... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
[detached HEAD 9aabd79] picked
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
fatal: Needed a single revision
ok 34 - --continue of single cherry-pick
expecting success of 3510.35 '--continue of single revert':
pristine_detach initial &&
echo resolved >expect &&
echo "Revert \"picked\"" >expect.msg &&
test_must_fail git revert picked &&
echo resolved >foo &&
git add foo &&
git cherry-pick --continue &&
git diff --exit-code HEAD &&
test_cmp expect foo &&
test_cmp_rev initial HEAD^ &&
git diff-tree -s --pretty=tformat:%s HEAD >msg &&
test_cmp expect.msg msg &&
test_must_fail git rev-parse --verify CHERRY_PICK_HEAD &&
test_must_fail git rev-parse --verify REVERT_HEAD
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
9aabd79 picked
HEAD is now at df2a63d initial
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not revert fdc0b12... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git revert --continue".
hint: You can instead skip this commit with "git revert --skip".
hint: To abort and get back to the state before "git revert",
hint: run "git revert --abort".
[detached HEAD 267eac8] Revert "picked"
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
fatal: Needed a single revision
fatal: Needed a single revision
ok 35 - --continue of single revert
expecting success of 3510.36 '--continue after resolving conflicts':
pristine_detach initial &&
echo d >expect &&
cat >expect.log <<-\EOF &&
OBJID
:100644 100644 OBJID OBJID M foo
OBJID
:100644 100644 OBJID OBJID M foo
OBJID
:100644 100644 OBJID OBJID M unrelated
OBJID
:000000 100644 OBJID OBJID A foo
:000000 100644 OBJID OBJID A unrelated
EOF
test_must_fail git cherry-pick base..anotherpick &&
echo c >foo &&
git add foo &&
git cherry-pick --continue &&
{
git rev-list HEAD |
git diff-tree --root --stdin |
sed "s/$OID_REGEX/OBJID/g"
} >actual.log &&
test_cmp expect foo &&
test_cmp expect.log actual.log
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
267eac8 Revert "picked"
HEAD is now at df2a63d initial
[detached HEAD c738c4d] unrelatedpick
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply fdc0b12... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
[detached HEAD 43fe10f] picked
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
[detached HEAD 3b1768d] anotherpick
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:17:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
ok 36 - --continue after resolving conflicts
expecting success of 3510.37 '--continue after resolving conflicts and committing':
pristine_detach initial &&
test_expect_code 1 git cherry-pick base..anotherpick &&
echo "c" >foo &&
git add foo &&
git commit &&
git cherry-pick --continue &&
test_path_is_missing .git/sequencer &&
{
git rev-list HEAD |
git diff-tree --root --stdin |
sed "s/$OID_REGEX/OBJID/g"
} >actual &&
cat >expect <<-\EOF &&
OBJID
:100644 100644 OBJID OBJID M foo
OBJID
:100644 100644 OBJID OBJID M foo
OBJID
:100644 100644 OBJID OBJID M unrelated
OBJID
:000000 100644 OBJID OBJID A foo
:000000 100644 OBJID OBJID A unrelated
EOF
test_cmp expect actual
Warning: you are leaving 3 commits behind, not connected to
any of your branches:
3b1768d anotherpick
43fe10f picked
c738c4d unrelatedpick
HEAD is now at df2a63d initial
[detached HEAD c738c4d] unrelatedpick
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply fdc0b12... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
[detached HEAD 43fe10f] picked
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
[detached HEAD 3b1768d] anotherpick
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:17:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
ok 37 - --continue after resolving conflicts and committing
expecting success of 3510.38 '--continue asks for help after resolving patch to nil':
pristine_detach conflicting &&
test_must_fail git cherry-pick initial..picked &&
test_cmp_rev unrelatedpick CHERRY_PICK_HEAD &&
git checkout HEAD -- unrelated &&
test_must_fail git cherry-pick --continue 2>msg &&
test_i18ngrep "The previous cherry-pick is now empty" msg
Warning: you are leaving 3 commits behind, not connected to
any of your branches:
3b1768d anotherpick
43fe10f picked
c738c4d unrelatedpick
HEAD is now at d520364 conflicting
[detached HEAD 838794c] base
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
Auto-merging unrelated
CONFLICT (content): Merge conflict in unrelated
error: could not apply 24c5742... unrelatedpick
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
HEAD detached from d520364
You are currently cherry-picking commit 24c5742.
(all conflicts fixed: run "git cherry-pick --continue")
(use "git cherry-pick --skip" to skip this patch)
(use "git cherry-pick --abort" to cancel the cherry-pick operation)
Untracked files:
(use "git add <file>..." to include in what will be committed)
msg
nothing added to commit but untracked files present (use "git add" to track)
The previous cherry-pick is now empty, possibly due to conflict resolution.
ok 38 - --continue asks for help after resolving patch to nil
expecting success of 3510.39 'follow advice and skip nil patch':
pristine_detach conflicting &&
test_must_fail git cherry-pick initial..picked &&
git checkout HEAD -- unrelated &&
test_must_fail git cherry-pick --continue &&
git reset &&
git cherry-pick --continue &&
git rev-list initial..HEAD >commits &&
test_line_count = 3 commits
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
838794c base
HEAD is now at d520364 conflicting
[detached HEAD 838794c] base
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
Auto-merging unrelated
CONFLICT (content): Merge conflict in unrelated
error: could not apply 24c5742... unrelatedpick
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
The previous cherry-pick is now empty, possibly due to conflict resolution.
If you wish to commit it anyway, use:
git commit --allow-empty
Otherwise, please use 'git cherry-pick --skip'
HEAD detached from d520364
You are currently cherry-picking commit 24c5742.
(all conflicts fixed: run "git cherry-pick --continue")
(use "git cherry-pick --skip" to skip this patch)
(use "git cherry-pick --abort" to cancel the cherry-pick operation)
nothing to commit, working tree clean
[detached HEAD fef14ec] picked
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
ok 39 - follow advice and skip nil patch
expecting success of 3510.40 '--continue respects opts':
pristine_detach initial &&
test_expect_code 1 git cherry-pick -x base..anotherpick &&
echo "c" >foo &&
git add foo &&
git commit &&
git cherry-pick --continue &&
test_path_is_missing .git/sequencer &&
git cat-file commit HEAD >anotherpick_msg &&
git cat-file commit HEAD~1 >picked_msg &&
git cat-file commit HEAD~2 >unrelatedpick_msg &&
git cat-file commit HEAD~3 >initial_msg &&
! grep "cherry picked from" initial_msg &&
grep "cherry picked from" unrelatedpick_msg &&
grep "cherry picked from" picked_msg &&
grep "cherry picked from" anotherpick_msg
Warning: you are leaving 2 commits behind, not connected to
any of your branches:
fef14ec picked
838794c base
HEAD is now at df2a63d initial
[detached HEAD a731ebf] unrelatedpick
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply fdc0b12... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
[detached HEAD 4d735ac] picked
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
[detached HEAD 3834c90] anotherpick
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:17:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
(cherry picked from commit 24c574226938b210285578b30b436ec6119f7a7d)
(cherry picked from commit fdc0b12b2eb6de44c0df7d41b045ab2b44b6c37c)
(cherry picked from commit 965fed4c41239668ada422bca0c600444cc00e82)
ok 40 - --continue respects opts
expecting success of 3510.41 '--continue of single-pick respects -x':
pristine_detach initial &&
test_must_fail git cherry-pick -x picked &&
echo c >foo &&
git add foo &&
git cherry-pick --continue &&
test_path_is_missing .git/sequencer &&
git cat-file commit HEAD >msg &&
grep "cherry picked from" msg
Warning: you are leaving 3 commits behind, not connected to
any of your branches:
3834c90 anotherpick
4d735ac picked
a731ebf unrelatedpick
HEAD is now at df2a63d initial
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply fdc0b12... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
[detached HEAD 775318b] picked
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
(cherry picked from commit fdc0b12b2eb6de44c0df7d41b045ab2b44b6c37c)
ok 41 - --continue of single-pick respects -x
expecting success of 3510.42 '--continue respects -x in first commit in multi-pick':
pristine_detach initial &&
test_must_fail git cherry-pick -x picked anotherpick &&
echo c >foo &&
git add foo &&
git cherry-pick --continue &&
test_path_is_missing .git/sequencer &&
git cat-file commit HEAD^ >msg &&
picked=$(git rev-parse --verify picked) &&
grep "cherry picked from.*$picked" msg
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
775318b picked
HEAD is now at df2a63d initial
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply fdc0b12... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
[detached HEAD 775318b] picked
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
[detached HEAD d310f74] anotherpick
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:17:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
(cherry picked from commit fdc0b12b2eb6de44c0df7d41b045ab2b44b6c37c)
ok 42 - --continue respects -x in first commit in multi-pick
checking known breakage of 3510.43 '--signoff is automatically propagated to resolved conflict':
pristine_detach initial &&
test_expect_code 1 git cherry-pick --signoff base..anotherpick &&
echo "c" >foo &&
git add foo &&
git commit &&
git cherry-pick --continue &&
test_path_is_missing .git/sequencer &&
git cat-file commit HEAD >anotherpick_msg &&
git cat-file commit HEAD~1 >picked_msg &&
git cat-file commit HEAD~2 >unrelatedpick_msg &&
git cat-file commit HEAD~3 >initial_msg &&
! grep "Signed-off-by:" initial_msg &&
grep "Signed-off-by:" unrelatedpick_msg &&
! grep "Signed-off-by:" picked_msg &&
grep "Signed-off-by:" anotherpick_msg
Warning: you are leaving 2 commits behind, not connected to
any of your branches:
d310f74 anotherpick
775318b picked
HEAD is now at df2a63d initial
[detached HEAD 9b2cda6] unrelatedpick
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply fdc0b12... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
[detached HEAD f7bab3d] picked
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
[detached HEAD cf7cfba] anotherpick
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:17:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
Signed-off-by: C O Mitter <committer@example.com>
Signed-off-by: C O Mitter <committer@example.com>
not ok 43 - --signoff is automatically propagated to resolved conflict # TODO known breakage
checking known breakage of 3510.44 '--signoff dropped for implicit commit of resolution, multi-pick case':
pristine_detach initial &&
test_must_fail git cherry-pick -s picked anotherpick &&
echo c >foo &&
git add foo &&
git cherry-pick --continue &&
git diff --exit-code HEAD &&
test_cmp_rev initial HEAD^^ &&
git cat-file commit HEAD^ >msg &&
! grep Signed-off-by: msg
Warning: you are leaving 3 commits behind, not connected to
any of your branches:
cf7cfba anotherpick
f7bab3d picked
9b2cda6 unrelatedpick
HEAD is now at df2a63d initial
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply fdc0b12... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
[detached HEAD c80a680] picked
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
[detached HEAD d9a8514] anotherpick
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:17:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
Signed-off-by: C O Mitter <committer@example.com>
not ok 44 - --signoff dropped for implicit commit of resolution, multi-pick case # TODO known breakage
checking known breakage of 3510.45 'sign-off needs to be reaffirmed after conflict resolution, single-pick case':
pristine_detach initial &&
test_must_fail git cherry-pick -s picked &&
echo c >foo &&
git add foo &&
git cherry-pick --continue &&
git diff --exit-code HEAD &&
test_cmp_rev initial HEAD^ &&
git cat-file commit HEAD >msg &&
! grep Signed-off-by: msg
Warning: you are leaving 2 commits behind, not connected to
any of your branches:
d9a8514 anotherpick
c80a680 picked
HEAD is now at df2a63d initial
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply fdc0b12... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
[detached HEAD c80a680] picked
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
Signed-off-by: C O Mitter <committer@example.com>
not ok 45 - sign-off needs to be reaffirmed after conflict resolution, single-pick case # TODO known breakage
expecting success of 3510.46 'malformed instruction sheet 1':
pristine_detach initial &&
test_expect_code 1 git cherry-pick base..anotherpick &&
echo "resolved" >foo &&
git add foo &&
git commit &&
sed "s/pick /pick/" .git/sequencer/todo >new_sheet &&
cp new_sheet .git/sequencer/todo &&
test_expect_code 128 git cherry-pick --continue
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
c80a680 picked
HEAD is now at df2a63d initial
[detached HEAD c738c4d] unrelatedpick
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply fdc0b12... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
[detached HEAD 9781982] picked
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
error: invalid command 'pickfdc0b12'
error: invalid line 1: pickfdc0b12 picked
error: invalid command 'pick965fed4'
error: invalid line 2: pick965fed4 anotherpick
error: unusable instruction sheet: '.git/sequencer/todo'
fatal: cherry-pick failed
ok 46 - malformed instruction sheet 1
expecting success of 3510.47 'malformed instruction sheet 2':
pristine_detach initial &&
test_expect_code 1 git cherry-pick base..anotherpick &&
echo "resolved" >foo &&
git add foo &&
git commit &&
sed "s/pick/revert/" .git/sequencer/todo >new_sheet &&
cp new_sheet .git/sequencer/todo &&
test_expect_code 128 git cherry-pick --continue
Warning: you are leaving 2 commits behind, not connected to
any of your branches:
9781982 picked
c738c4d unrelatedpick
HEAD is now at df2a63d initial
[detached HEAD c738c4d] unrelatedpick
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply fdc0b12... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
[detached HEAD 9781982] picked
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
error: cannot cherry-pick during a revert.
fatal: cherry-pick failed
ok 47 - malformed instruction sheet 2
expecting success of 3510.48 'empty commit set (no commits to walk)':
pristine_detach initial &&
test_expect_code 128 git cherry-pick base..base
Warning: you are leaving 2 commits behind, not connected to
any of your branches:
9781982 picked
c738c4d unrelatedpick
HEAD is now at df2a63d initial
error: empty commit set passed
fatal: cherry-pick failed
ok 48 - empty commit set (no commits to walk)
expecting success of 3510.49 'empty commit set (culled during walk)':
pristine_detach initial &&
test_expect_code 128 git cherry-pick -2 --author=no.such.author base
HEAD is now at df2a63d initial
error: empty commit set passed
fatal: cherry-pick failed
ok 49 - empty commit set (culled during walk)
expecting success of 3510.50 'malformed instruction sheet 3':
pristine_detach initial &&
test_expect_code 1 git cherry-pick base..anotherpick &&
echo "resolved" >foo &&
git add foo &&
git commit &&
sed "s/pick \([0-9a-f]*\)/pick $_r10/" .git/sequencer/todo >new_sheet &&
cp new_sheet .git/sequencer/todo &&
test_expect_code 128 git cherry-pick --continue
HEAD is now at df2a63d initial
[detached HEAD c738c4d] unrelatedpick
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply fdc0b12... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
[detached HEAD 9781982] picked
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
error: could not parse 'fdc0b12fdc0b12fdc0b12fdc0b12fdc0b12fdc0b12fdc0b12fdc0b12fdc0b12fdc0b12'
error: invalid line 1: pick fdc0b12fdc0b12fdc0b12fdc0b12fdc0b12fdc0b12fdc0b12fdc0b12fdc0b12fdc0b12 picked
error: could not parse '965fed4965fed4965fed4965fed4965fed4965fed4965fed4965fed4965fed4965fed4'
error: invalid line 2: pick 965fed4965fed4965fed4965fed4965fed4965fed4965fed4965fed4965fed4965fed4 anotherpick
error: unusable instruction sheet: '.git/sequencer/todo'
fatal: cherry-pick failed
ok 50 - malformed instruction sheet 3
expecting success of 3510.51 'instruction sheet, fat-fingers version':
pristine_detach initial &&
test_expect_code 1 git cherry-pick base..anotherpick &&
echo "c" >foo &&
git add foo &&
git commit &&
sed "s/pick \([0-9a-f]*\)/pick \1 /" .git/sequencer/todo >new_sheet &&
cp new_sheet .git/sequencer/todo &&
git cherry-pick --continue
Warning: you are leaving 2 commits behind, not connected to
any of your branches:
9781982 picked
c738c4d unrelatedpick
HEAD is now at df2a63d initial
[detached HEAD c738c4d] unrelatedpick
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply fdc0b12... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
[detached HEAD 43fe10f] picked
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
[detached HEAD 3b1768d] anotherpick
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:17:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
ok 51 - instruction sheet, fat-fingers version
expecting success of 3510.52 'commit descriptions in insn sheet are optional':
pristine_detach initial &&
test_expect_code 1 git cherry-pick base..anotherpick &&
echo "c" >foo &&
git add foo &&
git commit &&
cut -d" " -f1,2 .git/sequencer/todo >new_sheet &&
cp new_sheet .git/sequencer/todo &&
git cherry-pick --continue &&
test_path_is_missing .git/sequencer &&
git rev-list HEAD >commits &&
test_line_count = 4 commits
Warning: you are leaving 3 commits behind, not connected to
any of your branches:
3b1768d anotherpick
43fe10f picked
c738c4d unrelatedpick
HEAD is now at df2a63d initial
[detached HEAD c738c4d] unrelatedpick
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
Auto-merging foo
CONFLICT (content): Merge conflict in foo
error: could not apply fdc0b12... picked
hint: After resolving the conflicts, mark them with
hint: "git add/rm <pathspec>", then run
hint: "git cherry-pick --continue".
hint: You can instead skip this commit with "git cherry-pick --skip".
hint: To abort and get back to the state before "git cherry-pick",
hint: run "git cherry-pick --abort".
[detached HEAD 43fe10f] picked
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
[detached HEAD 3b1768d] anotherpick
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:17:13 2005 -0700
1 file changed, 1 insertion(+), 1 deletion(-)
ok 52 - commit descriptions in insn sheet are optional
# still have 3 known breakage(s)
# passed all remaining 49 test(s)
1..52
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3432-rebase-fast-forward.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3432-rebase-fast-forward/.git/
expecting success of 3432.1 'setup':
test_commit A &&
test_commit B &&
test_commit C &&
test_commit D &&
git checkout -t -b side
[main (root-commit) 0ddfaf1] A
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 A.t
[main d9df450] B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 B.t
[main 35a8500] C
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 C.t
[main be8f64f] D
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 D.t
Switched to a new branch 'side'
branch 'side' set up to track 'main'.
ok 1 - setup
expecting success of 3432.2 'git rebase --apply with no changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 2 - git rebase --apply with no changes is noop with same HEAD
expecting success of 3432.3 'git rebase --apply --no-ff with no changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --no-ff >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 3 - git rebase --apply --no-ff with no changes is work with same HEAD
expecting success of 3432.4 'git rebase --merge with no changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 4 - git rebase --merge with no changes is noop with same HEAD
expecting success of 3432.5 'git rebase --merge --no-ff with no changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at be8f64f D
ok 5 - git rebase --merge --no-ff with no changes is work with same HEAD
expecting success of 3432.6 'git rebase --merge (rebase.abbreviateCommands = true) with no changes is noop with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 6 - git rebase --merge (rebase.abbreviateCommands = true) with no changes is noop with same HEAD
expecting success of 3432.7 'git rebase --merge --no-ff (rebase.abbreviateCommands = true) with no changes is work with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at be8f64f D
ok 7 - git rebase --merge --no-ff (rebase.abbreviateCommands = true) with no changes is work with same HEAD
expecting success of 3432.8 'git rebase --apply main with no changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 8 - git rebase --apply main with no changes is noop with same HEAD
expecting success of 3432.9 'git rebase --apply --no-ff main with no changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --no-ff main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 9 - git rebase --apply --no-ff main with no changes is work with same HEAD
expecting success of 3432.10 'git rebase --merge main with no changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 10 - git rebase --merge main with no changes is noop with same HEAD
expecting success of 3432.11 'git rebase --merge --no-ff main with no changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at be8f64f D
ok 11 - git rebase --merge --no-ff main with no changes is work with same HEAD
expecting success of 3432.12 'git rebase --merge main (rebase.abbreviateCommands = true) with no changes is noop with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 12 - git rebase --merge main (rebase.abbreviateCommands = true) with no changes is noop with same HEAD
expecting success of 3432.13 'git rebase --merge --no-ff main (rebase.abbreviateCommands = true) with no changes is work with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at be8f64f D
ok 13 - git rebase --merge --no-ff main (rebase.abbreviateCommands = true) with no changes is work with same HEAD
expecting success of 3432.14 'git rebase --apply --onto B B with no changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --onto B B >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 14 - git rebase --apply --onto B B with no changes is noop with same HEAD
expecting success of 3432.15 'git rebase --apply --no-ff --onto B B with no changes is work with diff HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --no-ff --onto B B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 15 - git rebase --apply --no-ff --onto B B with no changes is work with diff HEAD
expecting success of 3432.16 'git rebase --merge --onto B B with no changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --onto B B >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 16 - git rebase --merge --onto B B with no changes is noop with same HEAD
expecting success of 3432.17 'git rebase --merge --no-ff --onto B B with no changes is work with diff HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --onto B B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/side.
HEAD is now at be8f64f D
ok 17 - git rebase --merge --no-ff --onto B B with no changes is work with diff HEAD
expecting success of 3432.18 'git rebase --merge --onto B B (rebase.abbreviateCommands = true) with no changes is noop with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --onto B B >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 18 - git rebase --merge --onto B B (rebase.abbreviateCommands = true) with no changes is noop with same HEAD
expecting success of 3432.19 'git rebase --merge --no-ff --onto B B (rebase.abbreviateCommands = true) with no changes is work with diff HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --onto B B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/side.
HEAD is now at be8f64f D
ok 19 - git rebase --merge --no-ff --onto B B (rebase.abbreviateCommands = true) with no changes is work with diff HEAD
expecting success of 3432.20 'git rebase --apply --onto B... B with no changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --onto B... B >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 20 - git rebase --apply --onto B... B with no changes is noop with same HEAD
expecting success of 3432.21 'git rebase --apply --no-ff --onto B... B with no changes is work with diff HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --no-ff --onto B... B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 21 - git rebase --apply --no-ff --onto B... B with no changes is work with diff HEAD
expecting success of 3432.22 'git rebase --merge --onto B... B with no changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --onto B... B >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 22 - git rebase --merge --onto B... B with no changes is noop with same HEAD
expecting success of 3432.23 'git rebase --merge --no-ff --onto B... B with no changes is work with diff HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --onto B... B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/side.
HEAD is now at be8f64f D
ok 23 - git rebase --merge --no-ff --onto B... B with no changes is work with diff HEAD
expecting success of 3432.24 'git rebase --merge --onto B... B (rebase.abbreviateCommands = true) with no changes is noop with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --onto B... B >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 24 - git rebase --merge --onto B... B (rebase.abbreviateCommands = true) with no changes is noop with same HEAD
expecting success of 3432.25 'git rebase --merge --no-ff --onto B... B (rebase.abbreviateCommands = true) with no changes is work with diff HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --onto B... B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/side.
HEAD is now at be8f64f D
ok 25 - git rebase --merge --no-ff --onto B... B (rebase.abbreviateCommands = true) with no changes is work with diff HEAD
expecting success of 3432.26 'git rebase --apply --onto main... main with no changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --onto main... main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 26 - git rebase --apply --onto main... main with no changes is noop with same HEAD
expecting success of 3432.27 'git rebase --apply --no-ff --onto main... main with no changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --no-ff --onto main... main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 27 - git rebase --apply --no-ff --onto main... main with no changes is work with same HEAD
expecting success of 3432.28 'git rebase --merge --onto main... main with no changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --onto main... main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 28 - git rebase --merge --onto main... main with no changes is noop with same HEAD
expecting success of 3432.29 'git rebase --merge --no-ff --onto main... main with no changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --onto main... main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at be8f64f D
ok 29 - git rebase --merge --no-ff --onto main... main with no changes is work with same HEAD
expecting success of 3432.30 'git rebase --merge --onto main... main (rebase.abbreviateCommands = true) with no changes is noop with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --onto main... main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 30 - git rebase --merge --onto main... main (rebase.abbreviateCommands = true) with no changes is noop with same HEAD
expecting success of 3432.31 'git rebase --merge --no-ff --onto main... main (rebase.abbreviateCommands = true) with no changes is work with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --onto main... main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at be8f64f D
ok 31 - git rebase --merge --no-ff --onto main... main (rebase.abbreviateCommands = true) with no changes is work with same HEAD
expecting success of 3432.32 'git rebase --apply --keep-base main with no changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --keep-base main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 32 - git rebase --apply --keep-base main with no changes is noop with same HEAD
expecting success of 3432.33 'git rebase --apply --no-ff --keep-base main with no changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --no-ff --keep-base main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 33 - git rebase --apply --no-ff --keep-base main with no changes is work with same HEAD
expecting success of 3432.34 'git rebase --merge --keep-base main with no changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --keep-base main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 34 - git rebase --merge --keep-base main with no changes is noop with same HEAD
expecting success of 3432.35 'git rebase --merge --no-ff --keep-base main with no changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --keep-base main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at be8f64f D
ok 35 - git rebase --merge --no-ff --keep-base main with no changes is work with same HEAD
expecting success of 3432.36 'git rebase --merge --keep-base main (rebase.abbreviateCommands = true) with no changes is noop with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --keep-base main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 36 - git rebase --merge --keep-base main (rebase.abbreviateCommands = true) with no changes is noop with same HEAD
expecting success of 3432.37 'git rebase --merge --no-ff --keep-base main (rebase.abbreviateCommands = true) with no changes is work with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --keep-base main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at be8f64f D
ok 37 - git rebase --merge --no-ff --keep-base main (rebase.abbreviateCommands = true) with no changes is work with same HEAD
expecting success of 3432.38 'git rebase --apply --keep-base with no changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --keep-base >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 38 - git rebase --apply --keep-base with no changes is noop with same HEAD
expecting success of 3432.39 'git rebase --apply --no-ff --keep-base with no changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --no-ff --keep-base >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 39 - git rebase --apply --no-ff --keep-base with no changes is work with same HEAD
expecting success of 3432.40 'git rebase --merge --keep-base with no changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --keep-base >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 40 - git rebase --merge --keep-base with no changes is noop with same HEAD
expecting success of 3432.41 'git rebase --merge --no-ff --keep-base with no changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --keep-base >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at be8f64f D
ok 41 - git rebase --merge --no-ff --keep-base with no changes is work with same HEAD
expecting success of 3432.42 'git rebase --merge --keep-base (rebase.abbreviateCommands = true) with no changes is noop with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --keep-base >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 42 - git rebase --merge --keep-base (rebase.abbreviateCommands = true) with no changes is noop with same HEAD
expecting success of 3432.43 'git rebase --merge --no-ff --keep-base (rebase.abbreviateCommands = true) with no changes is work with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --keep-base >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at be8f64f D
ok 43 - git rebase --merge --no-ff --keep-base (rebase.abbreviateCommands = true) with no changes is work with same HEAD
expecting success of 3432.44 'git rebase --apply --no-fork-point with no changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --no-fork-point >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 44 - git rebase --apply --no-fork-point with no changes is noop with same HEAD
expecting success of 3432.45 'git rebase --apply --no-ff --no-fork-point with no changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --no-ff --no-fork-point >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 45 - git rebase --apply --no-ff --no-fork-point with no changes is work with same HEAD
expecting success of 3432.46 'git rebase --merge --no-fork-point with no changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-fork-point >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 46 - git rebase --merge --no-fork-point with no changes is noop with same HEAD
expecting success of 3432.47 'git rebase --merge --no-ff --no-fork-point with no changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --no-fork-point >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at be8f64f D
ok 47 - git rebase --merge --no-ff --no-fork-point with no changes is work with same HEAD
expecting success of 3432.48 'git rebase --merge --no-fork-point (rebase.abbreviateCommands = true) with no changes is noop with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-fork-point >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 48 - git rebase --merge --no-fork-point (rebase.abbreviateCommands = true) with no changes is noop with same HEAD
expecting success of 3432.49 'git rebase --merge --no-ff --no-fork-point (rebase.abbreviateCommands = true) with no changes is work with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --no-fork-point >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at be8f64f D
ok 49 - git rebase --merge --no-ff --no-fork-point (rebase.abbreviateCommands = true) with no changes is work with same HEAD
expecting success of 3432.50 'git rebase --apply --keep-base --no-fork-point with no changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --keep-base --no-fork-point >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 50 - git rebase --apply --keep-base --no-fork-point with no changes is noop with same HEAD
expecting success of 3432.51 'git rebase --apply --no-ff --keep-base --no-fork-point with no changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --no-ff --keep-base --no-fork-point >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 51 - git rebase --apply --no-ff --keep-base --no-fork-point with no changes is work with same HEAD
expecting success of 3432.52 'git rebase --merge --keep-base --no-fork-point with no changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --keep-base --no-fork-point >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 52 - git rebase --merge --keep-base --no-fork-point with no changes is noop with same HEAD
expecting success of 3432.53 'git rebase --merge --no-ff --keep-base --no-fork-point with no changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --keep-base --no-fork-point >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at be8f64f D
ok 53 - git rebase --merge --no-ff --keep-base --no-fork-point with no changes is work with same HEAD
expecting success of 3432.54 'git rebase --merge --keep-base --no-fork-point (rebase.abbreviateCommands = true) with no changes is noop with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --keep-base --no-fork-point >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 54 - git rebase --merge --keep-base --no-fork-point (rebase.abbreviateCommands = true) with no changes is noop with same HEAD
expecting success of 3432.55 'git rebase --merge --no-ff --keep-base --no-fork-point (rebase.abbreviateCommands = true) with no changes is work with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --keep-base --no-fork-point >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at be8f64f D
ok 55 - git rebase --merge --no-ff --keep-base --no-fork-point (rebase.abbreviateCommands = true) with no changes is work with same HEAD
expecting success of 3432.56 'git rebase --apply --fork-point main with no changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --fork-point main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 56 - git rebase --apply --fork-point main with no changes is noop with same HEAD
expecting success of 3432.57 'git rebase --apply --no-ff --fork-point main with no changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --no-ff --fork-point main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 57 - git rebase --apply --no-ff --fork-point main with no changes is work with same HEAD
expecting success of 3432.58 'git rebase --merge --fork-point main with no changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --fork-point main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 58 - git rebase --merge --fork-point main with no changes is noop with same HEAD
expecting success of 3432.59 'git rebase --merge --no-ff --fork-point main with no changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --fork-point main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at be8f64f D
ok 59 - git rebase --merge --no-ff --fork-point main with no changes is work with same HEAD
expecting success of 3432.60 'git rebase --merge --fork-point main (rebase.abbreviateCommands = true) with no changes is noop with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --fork-point main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 60 - git rebase --merge --fork-point main (rebase.abbreviateCommands = true) with no changes is noop with same HEAD
expecting success of 3432.61 'git rebase --merge --no-ff --fork-point main (rebase.abbreviateCommands = true) with no changes is work with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --fork-point main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at be8f64f D
ok 61 - git rebase --merge --no-ff --fork-point main (rebase.abbreviateCommands = true) with no changes is work with same HEAD
expecting success of 3432.62 'git rebase --apply --fork-point --onto B B with no changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --fork-point --onto B B >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 62 - git rebase --apply --fork-point --onto B B with no changes is noop with same HEAD
expecting success of 3432.63 'git rebase --apply --no-ff --fork-point --onto B B with no changes is work with diff HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --no-ff --fork-point --onto B B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 63 - git rebase --apply --no-ff --fork-point --onto B B with no changes is work with diff HEAD
expecting success of 3432.64 'git rebase --merge --fork-point --onto B B with no changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --fork-point --onto B B >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 64 - git rebase --merge --fork-point --onto B B with no changes is noop with same HEAD
expecting success of 3432.65 'git rebase --merge --no-ff --fork-point --onto B B with no changes is work with diff HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --fork-point --onto B B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/side.
HEAD is now at be8f64f D
ok 65 - git rebase --merge --no-ff --fork-point --onto B B with no changes is work with diff HEAD
expecting success of 3432.66 'git rebase --merge --fork-point --onto B B (rebase.abbreviateCommands = true) with no changes is noop with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --fork-point --onto B B >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 66 - git rebase --merge --fork-point --onto B B (rebase.abbreviateCommands = true) with no changes is noop with same HEAD
expecting success of 3432.67 'git rebase --merge --no-ff --fork-point --onto B B (rebase.abbreviateCommands = true) with no changes is work with diff HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --fork-point --onto B B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/side.
HEAD is now at be8f64f D
ok 67 - git rebase --merge --no-ff --fork-point --onto B B (rebase.abbreviateCommands = true) with no changes is work with diff HEAD
expecting success of 3432.68 'git rebase --apply --fork-point --onto B... B with no changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --fork-point --onto B... B >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 68 - git rebase --apply --fork-point --onto B... B with no changes is noop with same HEAD
expecting success of 3432.69 'git rebase --apply --no-ff --fork-point --onto B... B with no changes is work with diff HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --no-ff --fork-point --onto B... B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 69 - git rebase --apply --no-ff --fork-point --onto B... B with no changes is work with diff HEAD
expecting success of 3432.70 'git rebase --merge --fork-point --onto B... B with no changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --fork-point --onto B... B >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 70 - git rebase --merge --fork-point --onto B... B with no changes is noop with same HEAD
expecting success of 3432.71 'git rebase --merge --no-ff --fork-point --onto B... B with no changes is work with diff HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --fork-point --onto B... B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/side.
HEAD is now at be8f64f D
ok 71 - git rebase --merge --no-ff --fork-point --onto B... B with no changes is work with diff HEAD
expecting success of 3432.72 'git rebase --merge --fork-point --onto B... B (rebase.abbreviateCommands = true) with no changes is noop with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --fork-point --onto B... B >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 72 - git rebase --merge --fork-point --onto B... B (rebase.abbreviateCommands = true) with no changes is noop with same HEAD
expecting success of 3432.73 'git rebase --merge --no-ff --fork-point --onto B... B (rebase.abbreviateCommands = true) with no changes is work with diff HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --fork-point --onto B... B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/side.
HEAD is now at be8f64f D
ok 73 - git rebase --merge --no-ff --fork-point --onto B... B (rebase.abbreviateCommands = true) with no changes is work with diff HEAD
expecting success of 3432.74 'git rebase --apply --fork-point --onto main... main with no changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --fork-point --onto main... main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 74 - git rebase --apply --fork-point --onto main... main with no changes is noop with same HEAD
expecting success of 3432.75 'git rebase --apply --no-ff --fork-point --onto main... main with no changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --no-ff --fork-point --onto main... main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 75 - git rebase --apply --no-ff --fork-point --onto main... main with no changes is work with same HEAD
expecting success of 3432.76 'git rebase --merge --fork-point --onto main... main with no changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --fork-point --onto main... main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 76 - git rebase --merge --fork-point --onto main... main with no changes is noop with same HEAD
expecting success of 3432.77 'git rebase --merge --no-ff --fork-point --onto main... main with no changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --fork-point --onto main... main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at be8f64f D
ok 77 - git rebase --merge --no-ff --fork-point --onto main... main with no changes is work with same HEAD
expecting success of 3432.78 'git rebase --merge --fork-point --onto main... main (rebase.abbreviateCommands = true) with no changes is noop with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --fork-point --onto main... main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 78 - git rebase --merge --fork-point --onto main... main (rebase.abbreviateCommands = true) with no changes is noop with same HEAD
expecting success of 3432.79 'git rebase --merge --no-ff --fork-point --onto main... main (rebase.abbreviateCommands = true) with no changes is work with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --fork-point --onto main... main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at be8f64f D
ok 79 - git rebase --merge --no-ff --fork-point --onto main... main (rebase.abbreviateCommands = true) with no changes is work with same HEAD
expecting success of 3432.80 'git rebase --apply --keep-base --keep-base main with no changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --keep-base --keep-base main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 80 - git rebase --apply --keep-base --keep-base main with no changes is noop with same HEAD
expecting success of 3432.81 'git rebase --apply --no-ff --keep-base --keep-base main with no changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --no-ff --keep-base --keep-base main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 81 - git rebase --apply --no-ff --keep-base --keep-base main with no changes is work with same HEAD
expecting success of 3432.82 'git rebase --merge --keep-base --keep-base main with no changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --keep-base --keep-base main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 82 - git rebase --merge --keep-base --keep-base main with no changes is noop with same HEAD
expecting success of 3432.83 'git rebase --merge --no-ff --keep-base --keep-base main with no changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --keep-base --keep-base main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at be8f64f D
ok 83 - git rebase --merge --no-ff --keep-base --keep-base main with no changes is work with same HEAD
expecting success of 3432.84 'git rebase --merge --keep-base --keep-base main (rebase.abbreviateCommands = true) with no changes is noop with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --keep-base --keep-base main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at be8f64f D
ok 84 - git rebase --merge --keep-base --keep-base main (rebase.abbreviateCommands = true) with no changes is noop with same HEAD
expecting success of 3432.85 'git rebase --merge --no-ff --keep-base --keep-base main (rebase.abbreviateCommands = true) with no changes is work with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --keep-base --keep-base main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at be8f64f D
ok 85 - git rebase --merge --no-ff --keep-base --keep-base main (rebase.abbreviateCommands = true) with no changes is work with same HEAD
expecting success of 3432.86 'add work same to side':
test_commit E
[side ee2ad00] E
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 E.t
ok 86 - add work same to side
expecting success of 3432.87 'git rebase --apply with our changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 87 - git rebase --apply with our changes is noop with same HEAD
expecting success of 3432.88 'git rebase --apply --no-ff with our changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --no-ff >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 88 - git rebase --apply --no-ff with our changes is work with same HEAD
expecting success of 3432.89 'git rebase --merge with our changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 89 - git rebase --merge with our changes is noop with same HEAD
expecting success of 3432.90 'git rebase --merge --no-ff with our changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 90 - git rebase --merge --no-ff with our changes is work with same HEAD
expecting success of 3432.91 'git rebase --merge (rebase.abbreviateCommands = true) with our changes is noop with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 91 - git rebase --merge (rebase.abbreviateCommands = true) with our changes is noop with same HEAD
expecting success of 3432.92 'git rebase --merge --no-ff (rebase.abbreviateCommands = true) with our changes is work with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 92 - git rebase --merge --no-ff (rebase.abbreviateCommands = true) with our changes is work with same HEAD
expecting success of 3432.93 'git rebase --apply main with our changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 93 - git rebase --apply main with our changes is noop with same HEAD
expecting success of 3432.94 'git rebase --apply --no-ff main with our changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --no-ff main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 94 - git rebase --apply --no-ff main with our changes is work with same HEAD
expecting success of 3432.95 'git rebase --merge main with our changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 95 - git rebase --merge main with our changes is noop with same HEAD
expecting success of 3432.96 'git rebase --merge --no-ff main with our changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 96 - git rebase --merge --no-ff main with our changes is work with same HEAD
expecting success of 3432.97 'git rebase --merge main (rebase.abbreviateCommands = true) with our changes is noop with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 97 - git rebase --merge main (rebase.abbreviateCommands = true) with our changes is noop with same HEAD
expecting success of 3432.98 'git rebase --merge --no-ff main (rebase.abbreviateCommands = true) with our changes is work with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 98 - git rebase --merge --no-ff main (rebase.abbreviateCommands = true) with our changes is work with same HEAD
expecting success of 3432.99 'git rebase --apply --onto B B with our changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --onto B B >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 99 - git rebase --apply --onto B B with our changes is noop with same HEAD
expecting success of 3432.100 'git rebase --apply --no-ff --onto B B with our changes is work with diff HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --no-ff --onto B B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 100 - git rebase --apply --no-ff --onto B B with our changes is work with diff HEAD
expecting success of 3432.101 'git rebase --merge --onto B B with our changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --onto B B >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 101 - git rebase --merge --onto B B with our changes is noop with same HEAD
expecting success of 3432.102 'git rebase --merge --no-ff --onto B B with our changes is work with diff HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --onto B B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/3)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 102 - git rebase --merge --no-ff --onto B B with our changes is work with diff HEAD
expecting success of 3432.103 'git rebase --merge --onto B B (rebase.abbreviateCommands = true) with our changes is noop with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --onto B B >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 103 - git rebase --merge --onto B B (rebase.abbreviateCommands = true) with our changes is noop with same HEAD
expecting success of 3432.104 'git rebase --merge --no-ff --onto B B (rebase.abbreviateCommands = true) with our changes is work with diff HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --onto B B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/3)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 104 - git rebase --merge --no-ff --onto B B (rebase.abbreviateCommands = true) with our changes is work with diff HEAD
expecting success of 3432.105 'git rebase --apply --onto B... B with our changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --onto B... B >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 105 - git rebase --apply --onto B... B with our changes is noop with same HEAD
expecting success of 3432.106 'git rebase --apply --no-ff --onto B... B with our changes is work with diff HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --no-ff --onto B... B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 106 - git rebase --apply --no-ff --onto B... B with our changes is work with diff HEAD
expecting success of 3432.107 'git rebase --merge --onto B... B with our changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --onto B... B >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 107 - git rebase --merge --onto B... B with our changes is noop with same HEAD
expecting success of 3432.108 'git rebase --merge --no-ff --onto B... B with our changes is work with diff HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --onto B... B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/3)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 108 - git rebase --merge --no-ff --onto B... B with our changes is work with diff HEAD
expecting success of 3432.109 'git rebase --merge --onto B... B (rebase.abbreviateCommands = true) with our changes is noop with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --onto B... B >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 109 - git rebase --merge --onto B... B (rebase.abbreviateCommands = true) with our changes is noop with same HEAD
expecting success of 3432.110 'git rebase --merge --no-ff --onto B... B (rebase.abbreviateCommands = true) with our changes is work with diff HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --onto B... B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/3)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 110 - git rebase --merge --no-ff --onto B... B (rebase.abbreviateCommands = true) with our changes is work with diff HEAD
expecting success of 3432.111 'git rebase --apply --onto main... main with our changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --onto main... main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 111 - git rebase --apply --onto main... main with our changes is noop with same HEAD
expecting success of 3432.112 'git rebase --apply --no-ff --onto main... main with our changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --no-ff --onto main... main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 112 - git rebase --apply --no-ff --onto main... main with our changes is work with same HEAD
expecting success of 3432.113 'git rebase --merge --onto main... main with our changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --onto main... main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 113 - git rebase --merge --onto main... main with our changes is noop with same HEAD
expecting success of 3432.114 'git rebase --merge --no-ff --onto main... main with our changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --onto main... main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 114 - git rebase --merge --no-ff --onto main... main with our changes is work with same HEAD
expecting success of 3432.115 'git rebase --merge --onto main... main (rebase.abbreviateCommands = true) with our changes is noop with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --onto main... main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 115 - git rebase --merge --onto main... main (rebase.abbreviateCommands = true) with our changes is noop with same HEAD
expecting success of 3432.116 'git rebase --merge --no-ff --onto main... main (rebase.abbreviateCommands = true) with our changes is work with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --onto main... main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 116 - git rebase --merge --no-ff --onto main... main (rebase.abbreviateCommands = true) with our changes is work with same HEAD
expecting success of 3432.117 'git rebase --apply --keep-base main with our changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --keep-base main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 117 - git rebase --apply --keep-base main with our changes is noop with same HEAD
expecting success of 3432.118 'git rebase --apply --no-ff --keep-base main with our changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --no-ff --keep-base main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 118 - git rebase --apply --no-ff --keep-base main with our changes is work with same HEAD
expecting success of 3432.119 'git rebase --merge --keep-base main with our changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --keep-base main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 119 - git rebase --merge --keep-base main with our changes is noop with same HEAD
expecting success of 3432.120 'git rebase --merge --no-ff --keep-base main with our changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --keep-base main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 120 - git rebase --merge --no-ff --keep-base main with our changes is work with same HEAD
expecting success of 3432.121 'git rebase --merge --keep-base main (rebase.abbreviateCommands = true) with our changes is noop with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --keep-base main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 121 - git rebase --merge --keep-base main (rebase.abbreviateCommands = true) with our changes is noop with same HEAD
expecting success of 3432.122 'git rebase --merge --no-ff --keep-base main (rebase.abbreviateCommands = true) with our changes is work with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --keep-base main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 122 - git rebase --merge --no-ff --keep-base main (rebase.abbreviateCommands = true) with our changes is work with same HEAD
expecting success of 3432.123 'git rebase --apply --keep-base with our changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --keep-base >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 123 - git rebase --apply --keep-base with our changes is noop with same HEAD
expecting success of 3432.124 'git rebase --apply --no-ff --keep-base with our changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --no-ff --keep-base >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 124 - git rebase --apply --no-ff --keep-base with our changes is work with same HEAD
expecting success of 3432.125 'git rebase --merge --keep-base with our changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --keep-base >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 125 - git rebase --merge --keep-base with our changes is noop with same HEAD
expecting success of 3432.126 'git rebase --merge --no-ff --keep-base with our changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --keep-base >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 126 - git rebase --merge --no-ff --keep-base with our changes is work with same HEAD
expecting success of 3432.127 'git rebase --merge --keep-base (rebase.abbreviateCommands = true) with our changes is noop with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --keep-base >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 127 - git rebase --merge --keep-base (rebase.abbreviateCommands = true) with our changes is noop with same HEAD
expecting success of 3432.128 'git rebase --merge --no-ff --keep-base (rebase.abbreviateCommands = true) with our changes is work with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --keep-base >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 128 - git rebase --merge --no-ff --keep-base (rebase.abbreviateCommands = true) with our changes is work with same HEAD
expecting success of 3432.129 'git rebase --apply --no-fork-point with our changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --no-fork-point >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 129 - git rebase --apply --no-fork-point with our changes is noop with same HEAD
expecting success of 3432.130 'git rebase --apply --no-ff --no-fork-point with our changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --no-ff --no-fork-point >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 130 - git rebase --apply --no-ff --no-fork-point with our changes is work with same HEAD
expecting success of 3432.131 'git rebase --merge --no-fork-point with our changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-fork-point >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 131 - git rebase --merge --no-fork-point with our changes is noop with same HEAD
expecting success of 3432.132 'git rebase --merge --no-ff --no-fork-point with our changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --no-fork-point >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 132 - git rebase --merge --no-ff --no-fork-point with our changes is work with same HEAD
expecting success of 3432.133 'git rebase --merge --no-fork-point (rebase.abbreviateCommands = true) with our changes is noop with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-fork-point >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 133 - git rebase --merge --no-fork-point (rebase.abbreviateCommands = true) with our changes is noop with same HEAD
expecting success of 3432.134 'git rebase --merge --no-ff --no-fork-point (rebase.abbreviateCommands = true) with our changes is work with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --no-fork-point >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 134 - git rebase --merge --no-ff --no-fork-point (rebase.abbreviateCommands = true) with our changes is work with same HEAD
expecting success of 3432.135 'git rebase --apply --keep-base --no-fork-point with our changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --keep-base --no-fork-point >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 135 - git rebase --apply --keep-base --no-fork-point with our changes is noop with same HEAD
expecting success of 3432.136 'git rebase --apply --no-ff --keep-base --no-fork-point with our changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --no-ff --keep-base --no-fork-point >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 136 - git rebase --apply --no-ff --keep-base --no-fork-point with our changes is work with same HEAD
expecting success of 3432.137 'git rebase --merge --keep-base --no-fork-point with our changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --keep-base --no-fork-point >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 137 - git rebase --merge --keep-base --no-fork-point with our changes is noop with same HEAD
expecting success of 3432.138 'git rebase --merge --no-ff --keep-base --no-fork-point with our changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --keep-base --no-fork-point >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 138 - git rebase --merge --no-ff --keep-base --no-fork-point with our changes is work with same HEAD
expecting success of 3432.139 'git rebase --merge --keep-base --no-fork-point (rebase.abbreviateCommands = true) with our changes is noop with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --keep-base --no-fork-point >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 139 - git rebase --merge --keep-base --no-fork-point (rebase.abbreviateCommands = true) with our changes is noop with same HEAD
expecting success of 3432.140 'git rebase --merge --no-ff --keep-base --no-fork-point (rebase.abbreviateCommands = true) with our changes is work with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --keep-base --no-fork-point >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 140 - git rebase --merge --no-ff --keep-base --no-fork-point (rebase.abbreviateCommands = true) with our changes is work with same HEAD
expecting success of 3432.141 'git rebase --apply --fork-point main with our changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --fork-point main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 141 - git rebase --apply --fork-point main with our changes is noop with same HEAD
expecting success of 3432.142 'git rebase --apply --no-ff --fork-point main with our changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --no-ff --fork-point main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 142 - git rebase --apply --no-ff --fork-point main with our changes is work with same HEAD
expecting success of 3432.143 'git rebase --merge --fork-point main with our changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --fork-point main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 143 - git rebase --merge --fork-point main with our changes is noop with same HEAD
expecting success of 3432.144 'git rebase --merge --no-ff --fork-point main with our changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --fork-point main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 144 - git rebase --merge --no-ff --fork-point main with our changes is work with same HEAD
expecting success of 3432.145 'git rebase --merge --fork-point main (rebase.abbreviateCommands = true) with our changes is noop with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --fork-point main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 145 - git rebase --merge --fork-point main (rebase.abbreviateCommands = true) with our changes is noop with same HEAD
expecting success of 3432.146 'git rebase --merge --no-ff --fork-point main (rebase.abbreviateCommands = true) with our changes is work with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --fork-point main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 146 - git rebase --merge --no-ff --fork-point main (rebase.abbreviateCommands = true) with our changes is work with same HEAD
expecting success of 3432.147 'git rebase --apply --fork-point --onto B B with our changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --fork-point --onto B B >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 147 - git rebase --apply --fork-point --onto B B with our changes is noop with same HEAD
expecting success of 3432.148 'git rebase --apply --no-ff --fork-point --onto B B with our changes is work with diff HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --no-ff --fork-point --onto B B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 148 - git rebase --apply --no-ff --fork-point --onto B B with our changes is work with diff HEAD
expecting success of 3432.149 'git rebase --merge --fork-point --onto B B with our changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --fork-point --onto B B >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 149 - git rebase --merge --fork-point --onto B B with our changes is noop with same HEAD
expecting success of 3432.150 'git rebase --merge --no-ff --fork-point --onto B B with our changes is work with diff HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --fork-point --onto B B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/3)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 150 - git rebase --merge --no-ff --fork-point --onto B B with our changes is work with diff HEAD
expecting success of 3432.151 'git rebase --merge --fork-point --onto B B (rebase.abbreviateCommands = true) with our changes is noop with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --fork-point --onto B B >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 151 - git rebase --merge --fork-point --onto B B (rebase.abbreviateCommands = true) with our changes is noop with same HEAD
expecting success of 3432.152 'git rebase --merge --no-ff --fork-point --onto B B (rebase.abbreviateCommands = true) with our changes is work with diff HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --fork-point --onto B B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/3)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 152 - git rebase --merge --no-ff --fork-point --onto B B (rebase.abbreviateCommands = true) with our changes is work with diff HEAD
expecting success of 3432.153 'git rebase --apply --fork-point --onto B... B with our changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --fork-point --onto B... B >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 153 - git rebase --apply --fork-point --onto B... B with our changes is noop with same HEAD
expecting success of 3432.154 'git rebase --apply --no-ff --fork-point --onto B... B with our changes is work with diff HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --no-ff --fork-point --onto B... B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 154 - git rebase --apply --no-ff --fork-point --onto B... B with our changes is work with diff HEAD
expecting success of 3432.155 'git rebase --merge --fork-point --onto B... B with our changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --fork-point --onto B... B >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 155 - git rebase --merge --fork-point --onto B... B with our changes is noop with same HEAD
expecting success of 3432.156 'git rebase --merge --no-ff --fork-point --onto B... B with our changes is work with diff HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --fork-point --onto B... B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/3)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 156 - git rebase --merge --no-ff --fork-point --onto B... B with our changes is work with diff HEAD
expecting success of 3432.157 'git rebase --merge --fork-point --onto B... B (rebase.abbreviateCommands = true) with our changes is noop with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --fork-point --onto B... B >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 157 - git rebase --merge --fork-point --onto B... B (rebase.abbreviateCommands = true) with our changes is noop with same HEAD
expecting success of 3432.158 'git rebase --merge --no-ff --fork-point --onto B... B (rebase.abbreviateCommands = true) with our changes is work with diff HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --fork-point --onto B... B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/3)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 158 - git rebase --merge --no-ff --fork-point --onto B... B (rebase.abbreviateCommands = true) with our changes is work with diff HEAD
expecting success of 3432.159 'git rebase --apply --fork-point --onto main... main with our changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --fork-point --onto main... main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 159 - git rebase --apply --fork-point --onto main... main with our changes is noop with same HEAD
expecting success of 3432.160 'git rebase --apply --no-ff --fork-point --onto main... main with our changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --no-ff --fork-point --onto main... main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 160 - git rebase --apply --no-ff --fork-point --onto main... main with our changes is work with same HEAD
expecting success of 3432.161 'git rebase --merge --fork-point --onto main... main with our changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --fork-point --onto main... main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 161 - git rebase --merge --fork-point --onto main... main with our changes is noop with same HEAD
expecting success of 3432.162 'git rebase --merge --no-ff --fork-point --onto main... main with our changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --fork-point --onto main... main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 162 - git rebase --merge --no-ff --fork-point --onto main... main with our changes is work with same HEAD
expecting success of 3432.163 'git rebase --merge --fork-point --onto main... main (rebase.abbreviateCommands = true) with our changes is noop with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --fork-point --onto main... main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 163 - git rebase --merge --fork-point --onto main... main (rebase.abbreviateCommands = true) with our changes is noop with same HEAD
expecting success of 3432.164 'git rebase --merge --no-ff --fork-point --onto main... main (rebase.abbreviateCommands = true) with our changes is work with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --fork-point --onto main... main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 164 - git rebase --merge --no-ff --fork-point --onto main... main (rebase.abbreviateCommands = true) with our changes is work with same HEAD
expecting success of 3432.165 'git rebase --apply --fork-point --keep-base main with our changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --fork-point --keep-base main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 165 - git rebase --apply --fork-point --keep-base main with our changes is noop with same HEAD
expecting success of 3432.166 'git rebase --apply --no-ff --fork-point --keep-base main with our changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --no-ff --fork-point --keep-base main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 166 - git rebase --apply --no-ff --fork-point --keep-base main with our changes is work with same HEAD
expecting success of 3432.167 'git rebase --merge --fork-point --keep-base main with our changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --fork-point --keep-base main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 167 - git rebase --merge --fork-point --keep-base main with our changes is noop with same HEAD
expecting success of 3432.168 'git rebase --merge --no-ff --fork-point --keep-base main with our changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --fork-point --keep-base main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 168 - git rebase --merge --no-ff --fork-point --keep-base main with our changes is work with same HEAD
expecting success of 3432.169 'git rebase --merge --fork-point --keep-base main (rebase.abbreviateCommands = true) with our changes is noop with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --fork-point --keep-base main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 169 - git rebase --merge --fork-point --keep-base main (rebase.abbreviateCommands = true) with our changes is noop with same HEAD
expecting success of 3432.170 'git rebase --merge --no-ff --fork-point --keep-base main (rebase.abbreviateCommands = true) with our changes is work with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --fork-point --keep-base main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 170 - git rebase --merge --no-ff --fork-point --keep-base main (rebase.abbreviateCommands = true) with our changes is work with same HEAD
expecting success of 3432.171 'add work same to upstream':
git checkout main &&
test_commit F &&
git checkout side
Switched to branch 'main'
[main 71ab28b] F
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 F.t
Switched to branch 'side'
Your branch and 'main' have diverged,
and have 1 and 1 different commits each, respectively.
(use "git pull" if you want to integrate the remote branch with yours)
ok 171 - add work same to upstream
expecting success of 3432.172 'git rebase --apply --onto B B with our and their changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --onto B B >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 172 - git rebase --apply --onto B B with our and their changes is noop with same HEAD
expecting success of 3432.173 'git rebase --apply --no-ff --onto B B with our and their changes is work with diff HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --no-ff --onto B B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 173 - git rebase --apply --no-ff --onto B B with our and their changes is work with diff HEAD
expecting success of 3432.174 'git rebase --merge --onto B B with our and their changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --onto B B >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 174 - git rebase --merge --onto B B with our and their changes is noop with same HEAD
expecting success of 3432.175 'git rebase --merge --no-ff --onto B B with our and their changes is work with diff HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --onto B B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/3)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 175 - git rebase --merge --no-ff --onto B B with our and their changes is work with diff HEAD
expecting success of 3432.176 'git rebase --merge --onto B B (rebase.abbreviateCommands = true) with our and their changes is noop with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --onto B B >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 176 - git rebase --merge --onto B B (rebase.abbreviateCommands = true) with our and their changes is noop with same HEAD
expecting success of 3432.177 'git rebase --merge --no-ff --onto B B (rebase.abbreviateCommands = true) with our and their changes is work with diff HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --onto B B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/3)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 177 - git rebase --merge --no-ff --onto B B (rebase.abbreviateCommands = true) with our and their changes is work with diff HEAD
expecting success of 3432.178 'git rebase --apply --onto B... B with our and their changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --onto B... B >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 178 - git rebase --apply --onto B... B with our and their changes is noop with same HEAD
expecting success of 3432.179 'git rebase --apply --no-ff --onto B... B with our and their changes is work with diff HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --no-ff --onto B... B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 179 - git rebase --apply --no-ff --onto B... B with our and their changes is work with diff HEAD
expecting success of 3432.180 'git rebase --merge --onto B... B with our and their changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --onto B... B >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 180 - git rebase --merge --onto B... B with our and their changes is noop with same HEAD
expecting success of 3432.181 'git rebase --merge --no-ff --onto B... B with our and their changes is work with diff HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --onto B... B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/3)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 181 - git rebase --merge --no-ff --onto B... B with our and their changes is work with diff HEAD
expecting success of 3432.182 'git rebase --merge --onto B... B (rebase.abbreviateCommands = true) with our and their changes is noop with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --onto B... B >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 182 - git rebase --merge --onto B... B (rebase.abbreviateCommands = true) with our and their changes is noop with same HEAD
expecting success of 3432.183 'git rebase --merge --no-ff --onto B... B (rebase.abbreviateCommands = true) with our and their changes is work with diff HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --onto B... B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/3)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 183 - git rebase --merge --no-ff --onto B... B (rebase.abbreviateCommands = true) with our and their changes is work with diff HEAD
expecting success of 3432.184 'git rebase --apply --onto main... main with our and their changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --onto main... main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 184 - git rebase --apply --onto main... main with our and their changes is noop with same HEAD
expecting success of 3432.185 'git rebase --apply --no-ff --onto main... main with our and their changes is work with diff HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --no-ff --onto main... main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 185 - git rebase --apply --no-ff --onto main... main with our and their changes is work with diff HEAD
expecting success of 3432.186 'git rebase --merge --onto main... main with our and their changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --onto main... main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 186 - git rebase --merge --onto main... main with our and their changes is noop with same HEAD
expecting success of 3432.187 'git rebase --merge --no-ff --onto main... main with our and their changes is work with diff HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --onto main... main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 187 - git rebase --merge --no-ff --onto main... main with our and their changes is work with diff HEAD
expecting success of 3432.188 'git rebase --merge --onto main... main (rebase.abbreviateCommands = true) with our and their changes is noop with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --onto main... main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 188 - git rebase --merge --onto main... main (rebase.abbreviateCommands = true) with our and their changes is noop with same HEAD
expecting success of 3432.189 'git rebase --merge --no-ff --onto main... main (rebase.abbreviateCommands = true) with our and their changes is work with diff HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --onto main... main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 189 - git rebase --merge --no-ff --onto main... main (rebase.abbreviateCommands = true) with our and their changes is work with diff HEAD
expecting success of 3432.190 'git rebase --apply --keep-base main with our and their changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --keep-base main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 190 - git rebase --apply --keep-base main with our and their changes is noop with same HEAD
expecting success of 3432.191 'git rebase --apply --no-ff --keep-base main with our and their changes is work with diff HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --no-ff --keep-base main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 191 - git rebase --apply --no-ff --keep-base main with our and their changes is work with diff HEAD
expecting success of 3432.192 'git rebase --merge --keep-base main with our and their changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --keep-base main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 192 - git rebase --merge --keep-base main with our and their changes is noop with same HEAD
expecting success of 3432.193 'git rebase --merge --no-ff --keep-base main with our and their changes is work with diff HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --keep-base main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 193 - git rebase --merge --no-ff --keep-base main with our and their changes is work with diff HEAD
expecting success of 3432.194 'git rebase --merge --keep-base main (rebase.abbreviateCommands = true) with our and their changes is noop with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --keep-base main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 194 - git rebase --merge --keep-base main (rebase.abbreviateCommands = true) with our and their changes is noop with same HEAD
expecting success of 3432.195 'git rebase --merge --no-ff --keep-base main (rebase.abbreviateCommands = true) with our and their changes is work with diff HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --keep-base main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 195 - git rebase --merge --no-ff --keep-base main (rebase.abbreviateCommands = true) with our and their changes is work with diff HEAD
expecting success of 3432.196 'git rebase --apply --keep-base with our and their changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --keep-base >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 196 - git rebase --apply --keep-base with our and their changes is noop with same HEAD
expecting success of 3432.197 'git rebase --apply --no-ff --keep-base with our and their changes is work with diff HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --no-ff --keep-base >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 197 - git rebase --apply --no-ff --keep-base with our and their changes is work with diff HEAD
expecting success of 3432.198 'git rebase --merge --keep-base with our and their changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --keep-base >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 198 - git rebase --merge --keep-base with our and their changes is noop with same HEAD
expecting success of 3432.199 'git rebase --merge --no-ff --keep-base with our and their changes is work with diff HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --keep-base >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 199 - git rebase --merge --no-ff --keep-base with our and their changes is work with diff HEAD
expecting success of 3432.200 'git rebase --merge --keep-base (rebase.abbreviateCommands = true) with our and their changes is noop with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --keep-base >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 200 - git rebase --merge --keep-base (rebase.abbreviateCommands = true) with our and their changes is noop with same HEAD
expecting success of 3432.201 'git rebase --merge --no-ff --keep-base (rebase.abbreviateCommands = true) with our and their changes is work with diff HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --keep-base >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 201 - git rebase --merge --no-ff --keep-base (rebase.abbreviateCommands = true) with our and their changes is work with diff HEAD
checking known breakage of 3432.202 'git rebase --apply --fork-point --onto B B with our and their changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --fork-point --onto B B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
test_line_count: line count for actual !-gt 522
ee2ad00 HEAD@{0}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{1}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{2}: rebase (pick): E
be8f64f HEAD@{3}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{4}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{5}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{6}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{7}: rebase (pick): E
be8f64f HEAD@{8}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{9}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{10}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{11}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{12}: rebase (pick): E
be8f64f HEAD@{13}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{14}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{15}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{16}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{17}: rebase (pick): E
be8f64f HEAD@{18}: rebase (start): checkout main...side
ee2ad00 HEAD@{19}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{20}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{21}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{22}: rebase (pick): E
be8f64f HEAD@{23}: rebase (start): checkout main...side
ee2ad00 HEAD@{24}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{25}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{26}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{27}: rebase (pick): E
be8f64f HEAD@{28}: rebase (start): checkout main...side
ee2ad00 HEAD@{29}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{30}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{31}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{32}: rebase (pick): E
be8f64f HEAD@{33}: rebase (start): checkout main...
ee2ad00 HEAD@{34}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{35}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{36}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{37}: rebase (pick): E
be8f64f HEAD@{38}: rebase (start): checkout main...
ee2ad00 HEAD@{39}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{40}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{41}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{42}: rebase (pick): E
be8f64f HEAD@{43}: rebase (start): checkout main...
ee2ad00 HEAD@{44}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{45}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{46}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{47}: rebase (pick): E
6376ca0 HEAD@{48}: rebase (pick): D
c45f440 HEAD@{49}: rebase (pick): C
d9df450 HEAD@{50}: rebase (start): checkout B...
ee2ad00 HEAD@{51}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{52}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{53}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{54}: rebase (pick): E
6376ca0 HEAD@{55}: rebase (pick): D
c45f440 HEAD@{56}: rebase (pick): C
d9df450 HEAD@{57}: rebase (start): checkout B...
ee2ad00 HEAD@{58}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{59}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{60}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{61}: rebase (pick): E
6376ca0 HEAD@{62}: rebase (pick): D
c45f440 HEAD@{63}: rebase (pick): C
d9df450 HEAD@{64}: rebase (start): checkout B...
ee2ad00 HEAD@{65}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{66}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{67}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{68}: rebase (pick): E
6376ca0 HEAD@{69}: rebase (pick): D
c45f440 HEAD@{70}: rebase (pick): C
d9df450 HEAD@{71}: rebase (start): checkout B
ee2ad00 HEAD@{72}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{73}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{74}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{75}: rebase (pick): E
6376ca0 HEAD@{76}: rebase (pick): D
c45f440 HEAD@{77}: rebase (pick): C
d9df450 HEAD@{78}: rebase (start): checkout B
ee2ad00 HEAD@{79}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{80}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{81}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{82}: rebase (pick): E
6376ca0 HEAD@{83}: rebase (pick): D
c45f440 HEAD@{84}: rebase (pick): C
d9df450 HEAD@{85}: rebase (start): checkout B
ee2ad00 HEAD@{86}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{87}: checkout: moving from main to side
71ab28b HEAD@{88}: commit: F
be8f64f HEAD@{89}: checkout: moving from side to main
ee2ad00 HEAD@{90}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{91}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{92}: rebase (pick): E
be8f64f HEAD@{93}: rebase (start): checkout main...side
ee2ad00 HEAD@{94}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{95}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{96}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{97}: rebase (pick): E
be8f64f HEAD@{98}: rebase (start): checkout main...side
ee2ad00 HEAD@{99}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{100}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{101}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{102}: rebase (pick): E
be8f64f HEAD@{103}: rebase (start): checkout main...side
ee2ad00 HEAD@{104}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{105}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{106}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{107}: rebase (pick): E
be8f64f HEAD@{108}: rebase (start): checkout main...
ee2ad00 HEAD@{109}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{110}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{111}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{112}: rebase (pick): E
be8f64f HEAD@{113}: rebase (start): checkout main...
ee2ad00 HEAD@{114}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{115}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{116}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{117}: rebase (pick): E
be8f64f HEAD@{118}: rebase (start): checkout main...
ee2ad00 HEAD@{119}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{120}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{121}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{122}: rebase (pick): E
0e6d3b5 HEAD@{123}: rebase (pick): D
0103ecb HEAD@{124}: rebase (pick): C
d9df450 HEAD@{125}: rebase (start): checkout B...
ee2ad00 HEAD@{126}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{127}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{128}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{129}: rebase (pick): E
0e6d3b5 HEAD@{130}: rebase (pick): D
0103ecb HEAD@{131}: rebase (pick): C
d9df450 HEAD@{132}: rebase (start): checkout B...
ee2ad00 HEAD@{133}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{134}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{135}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{136}: rebase (pick): E
0e6d3b5 HEAD@{137}: rebase (pick): D
0103ecb HEAD@{138}: rebase (pick): C
d9df450 HEAD@{139}: rebase (start): checkout B...
ee2ad00 HEAD@{140}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{141}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{142}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{143}: rebase (pick): E
0e6d3b5 HEAD@{144}: rebase (pick): D
0103ecb HEAD@{145}: rebase (pick): C
d9df450 HEAD@{146}: rebase (start): checkout B
ee2ad00 HEAD@{147}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{148}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{149}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{150}: rebase (pick): E
0e6d3b5 HEAD@{151}: rebase (pick): D
0103ecb HEAD@{152}: rebase (pick): C
d9df450 HEAD@{153}: rebase (start): checkout B
ee2ad00 HEAD@{154}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{155}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{156}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{157}: rebase (pick): E
0e6d3b5 HEAD@{158}: rebase (pick): D
0103ecb HEAD@{159}: rebase (pick): C
d9df450 HEAD@{160}: rebase (start): checkout B
ee2ad00 HEAD@{161}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{162}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{163}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{164}: rebase (pick): E
be8f64f HEAD@{165}: rebase (start): checkout main
ee2ad00 HEAD@{166}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{167}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{168}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{169}: rebase (pick): E
be8f64f HEAD@{170}: rebase (start): checkout main
ee2ad00 HEAD@{171}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{172}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{173}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{174}: rebase (pick): E
be8f64f HEAD@{175}: rebase (start): checkout main
ee2ad00 HEAD@{176}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{177}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{178}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{179}: rebase (pick): E
be8f64f HEAD@{180}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{181}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{182}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{183}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{184}: rebase (pick): E
be8f64f HEAD@{185}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{186}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{187}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{188}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{189}: rebase (pick): E
be8f64f HEAD@{190}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{191}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{192}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{193}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{194}: rebase (pick): E
be8f64f HEAD@{195}: rebase (start): checkout refs/heads/main
ee2ad00 HEAD@{196}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{197}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{198}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{199}: rebase (pick): E
be8f64f HEAD@{200}: rebase (start): checkout refs/heads/main
ee2ad00 HEAD@{201}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{202}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{203}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{204}: rebase (pick): E
be8f64f HEAD@{205}: rebase (start): checkout refs/heads/main
ee2ad00 HEAD@{206}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{207}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{208}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{209}: rebase (pick): E
be8f64f HEAD@{210}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{211}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{212}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{213}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{214}: rebase (pick): E
be8f64f HEAD@{215}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{216}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{217}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{218}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{219}: rebase (pick): E
be8f64f HEAD@{220}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{221}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{222}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{223}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{224}: rebase (pick): E
be8f64f HEAD@{225}: rebase (start): checkout main...side
ee2ad00 HEAD@{226}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{227}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{228}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{229}: rebase (pick): E
be8f64f HEAD@{230}: rebase (start): checkout main...side
ee2ad00 HEAD@{231}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{232}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{233}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{234}: rebase (pick): E
be8f64f HEAD@{235}: rebase (start): checkout main...side
ee2ad00 HEAD@{236}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{237}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{238}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{239}: rebase (pick): E
be8f64f HEAD@{240}: rebase (start): checkout main...
ee2ad00 HEAD@{241}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{242}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{243}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{244}: rebase (pick): E
be8f64f HEAD@{245}: rebase (start): checkout main...
ee2ad00 HEAD@{246}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{247}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{248}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{249}: rebase (pick): E
be8f64f HEAD@{250}: rebase (start): checkout main...
ee2ad00 HEAD@{251}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{252}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{253}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{254}: rebase (pick): E
0e6d3b5 HEAD@{255}: rebase (pick): D
0103ecb HEAD@{256}: rebase (pick): C
d9df450 HEAD@{257}: rebase (start): checkout B...
ee2ad00 HEAD@{258}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{259}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{260}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{261}: rebase (pick): E
0e6d3b5 HEAD@{262}: rebase (pick): D
0103ecb HEAD@{263}: rebase (pick): C
d9df450 HEAD@{264}: rebase (start): checkout B...
ee2ad00 HEAD@{265}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{266}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{267}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{268}: rebase (pick): E
0e6d3b5 HEAD@{269}: rebase (pick): D
0103ecb HEAD@{270}: rebase (pick): C
d9df450 HEAD@{271}: rebase (start): checkout B...
ee2ad00 HEAD@{272}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{273}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{274}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{275}: rebase (pick): E
0e6d3b5 HEAD@{276}: rebase (pick): D
0103ecb HEAD@{277}: rebase (pick): C
d9df450 HEAD@{278}: rebase (start): checkout B
ee2ad00 HEAD@{279}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{280}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{281}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{282}: rebase (pick): E
0e6d3b5 HEAD@{283}: rebase (pick): D
0103ecb HEAD@{284}: rebase (pick): C
d9df450 HEAD@{285}: rebase (start): checkout B
ee2ad00 HEAD@{286}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{287}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{288}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{289}: rebase (pick): E
0e6d3b5 HEAD@{290}: rebase (pick): D
0103ecb HEAD@{291}: rebase (pick): C
d9df450 HEAD@{292}: rebase (start): checkout B
ee2ad00 HEAD@{293}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{294}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{295}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{296}: rebase (pick): E
be8f64f HEAD@{297}: rebase (start): checkout main
ee2ad00 HEAD@{298}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{299}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{300}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{301}: rebase (pick): E
be8f64f HEAD@{302}: rebase (start): checkout main
ee2ad00 HEAD@{303}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{304}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{305}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{306}: rebase (pick): E
be8f64f HEAD@{307}: rebase (start): checkout main
ee2ad00 HEAD@{308}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{309}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{310}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{311}: rebase (pick): E
be8f64f HEAD@{312}: rebase (start): checkout refs/heads/main
ee2ad00 HEAD@{313}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{314}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{315}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{316}: rebase (pick): E
be8f64f HEAD@{317}: rebase (start): checkout refs/heads/main
ee2ad00 HEAD@{318}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{319}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{320}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{321}: rebase (pick): E
be8f64f HEAD@{322}: rebase (start): checkout refs/heads/main
ee2ad00 HEAD@{323}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{324}: commit: E
be8f64f HEAD@{325}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{326}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{327}: rebase (start): checkout main...side
be8f64f HEAD@{328}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{329}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{330}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{331}: rebase (start): checkout main...side
be8f64f HEAD@{332}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{333}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{334}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{335}: rebase (start): checkout main...side
be8f64f HEAD@{336}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{337}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{338}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{339}: rebase (start): checkout main...
be8f64f HEAD@{340}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{341}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{342}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{343}: rebase (start): checkout main...
be8f64f HEAD@{344}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{345}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{346}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{347}: rebase (start): checkout main...
be8f64f HEAD@{348}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{349}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{350}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{351}: rebase (pick): D
e9ee69b HEAD@{352}: rebase (pick): C
d9df450 HEAD@{353}: rebase (start): checkout B...
be8f64f HEAD@{354}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{355}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{356}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{357}: rebase (pick): D
e9ee69b HEAD@{358}: rebase (pick): C
d9df450 HEAD@{359}: rebase (start): checkout B...
be8f64f HEAD@{360}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{361}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{362}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{363}: rebase (pick): D
e9ee69b HEAD@{364}: rebase (pick): C
d9df450 HEAD@{365}: rebase (start): checkout B...
be8f64f HEAD@{366}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{367}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{368}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{369}: rebase (pick): D
e9ee69b HEAD@{370}: rebase (pick): C
d9df450 HEAD@{371}: rebase (start): checkout B
be8f64f HEAD@{372}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{373}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{374}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{375}: rebase (pick): D
e9ee69b HEAD@{376}: rebase (pick): C
d9df450 HEAD@{377}: rebase (start): checkout B
be8f64f HEAD@{378}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{379}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{380}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{381}: rebase (pick): D
e9ee69b HEAD@{382}: rebase (pick): C
d9df450 HEAD@{383}: rebase (start): checkout B
be8f64f HEAD@{384}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{385}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{386}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{387}: rebase (start): checkout main
be8f64f HEAD@{388}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{389}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{390}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{391}: rebase (start): checkout main
be8f64f HEAD@{392}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{393}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{394}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{395}: rebase (start): checkout main
be8f64f HEAD@{396}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{397}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{398}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{399}: rebase (start): checkout refs/heads/main...side
be8f64f HEAD@{400}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{401}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{402}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{403}: rebase (start): checkout refs/heads/main...side
be8f64f HEAD@{404}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{405}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{406}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{407}: rebase (start): checkout refs/heads/main...side
be8f64f HEAD@{408}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{409}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{410}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{411}: rebase (start): checkout refs/heads/main
be8f64f HEAD@{412}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{413}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{414}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{415}: rebase (start): checkout refs/heads/main
be8f64f HEAD@{416}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{417}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{418}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{419}: rebase (start): checkout refs/heads/main
be8f64f HEAD@{420}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{421}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{422}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{423}: rebase (start): checkout refs/heads/main...side
be8f64f HEAD@{424}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{425}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{426}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{427}: rebase (start): checkout refs/heads/main...side
be8f64f HEAD@{428}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{429}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{430}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{431}: rebase (start): checkout refs/heads/main...side
be8f64f HEAD@{432}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{433}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{434}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{435}: rebase (start): checkout main...side
be8f64f HEAD@{436}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{437}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{438}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{439}: rebase (start): checkout main...side
be8f64f HEAD@{440}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{441}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{442}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{443}: rebase (start): checkout main...side
be8f64f HEAD@{444}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{445}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{446}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{447}: rebase (start): checkout main...
be8f64f HEAD@{448}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{449}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{450}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{451}: rebase (start): checkout main...
be8f64f HEAD@{452}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{453}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{454}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{455}: rebase (start): checkout main...
be8f64f HEAD@{456}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{457}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{458}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{459}: rebase (pick): D
e9ee69b HEAD@{460}: rebase (pick): C
d9df450 HEAD@{461}: rebase (start): checkout B...
be8f64f HEAD@{462}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{463}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{464}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{465}: rebase (pick): D
e9ee69b HEAD@{466}: rebase (pick): C
d9df450 HEAD@{467}: rebase (start): checkout B...
be8f64f HEAD@{468}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{469}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{470}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{471}: rebase (pick): D
e9ee69b HEAD@{472}: rebase (pick): C
d9df450 HEAD@{473}: rebase (start): checkout B...
be8f64f HEAD@{474}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{475}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{476}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{477}: rebase (pick): D
e9ee69b HEAD@{478}: rebase (pick): C
d9df450 HEAD@{479}: rebase (start): checkout B
be8f64f HEAD@{480}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{481}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{482}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{483}: rebase (pick): D
e9ee69b HEAD@{484}: rebase (pick): C
d9df450 HEAD@{485}: rebase (start): checkout B
be8f64f HEAD@{486}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{487}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{488}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{489}: rebase (pick): D
e9ee69b HEAD@{490}: rebase (pick): C
d9df450 HEAD@{491}: rebase (start): checkout B
be8f64f HEAD@{492}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{493}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{494}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{495}: rebase (start): checkout main
be8f64f HEAD@{496}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{497}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{498}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{499}: rebase (start): checkout main
be8f64f HEAD@{500}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{501}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{502}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{503}: rebase (start): checkout main
be8f64f HEAD@{504}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{505}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{506}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{507}: rebase (start): checkout refs/heads/main
be8f64f HEAD@{508}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{509}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{510}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{511}: rebase (start): checkout refs/heads/main
be8f64f HEAD@{512}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{513}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{514}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{515}: rebase (start): checkout refs/heads/main
be8f64f HEAD@{516}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{517}: checkout: moving from main to side
be8f64f HEAD@{518}: commit: D
35a8500 HEAD@{519}: commit: C
d9df450 HEAD@{520}: commit: B
0ddfaf1 HEAD@{521}: commit (initial): A
HEAD is now at ee2ad00 E
not ok 202 - git rebase --apply --fork-point --onto B B with our and their changes is work with same HEAD # TODO known breakage
expecting success of 3432.203 'git rebase --apply --no-ff --fork-point --onto B B with our and their changes is work with diff HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --no-ff --fork-point --onto B B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 203 - git rebase --apply --no-ff --fork-point --onto B B with our and their changes is work with diff HEAD
checking known breakage of 3432.204 'git rebase --merge --fork-point --onto B B with our and their changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --fork-point --onto B B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
test_line_count: line count for actual !-gt 529
ee2ad00 HEAD@{0}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{1}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{2}: rebase (pick): E
6376ca0 HEAD@{3}: rebase (pick): D
c45f440 HEAD@{4}: rebase (pick): C
d9df450 HEAD@{5}: rebase (start): checkout B
ee2ad00 HEAD@{6}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{7}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{8}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{9}: rebase (pick): E
be8f64f HEAD@{10}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{11}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{12}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{13}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{14}: rebase (pick): E
be8f64f HEAD@{15}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{16}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{17}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{18}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{19}: rebase (pick): E
be8f64f HEAD@{20}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{21}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{22}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{23}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{24}: rebase (pick): E
be8f64f HEAD@{25}: rebase (start): checkout main...side
ee2ad00 HEAD@{26}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{27}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{28}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{29}: rebase (pick): E
be8f64f HEAD@{30}: rebase (start): checkout main...side
ee2ad00 HEAD@{31}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{32}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{33}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{34}: rebase (pick): E
be8f64f HEAD@{35}: rebase (start): checkout main...side
ee2ad00 HEAD@{36}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{37}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{38}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{39}: rebase (pick): E
be8f64f HEAD@{40}: rebase (start): checkout main...
ee2ad00 HEAD@{41}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{42}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{43}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{44}: rebase (pick): E
be8f64f HEAD@{45}: rebase (start): checkout main...
ee2ad00 HEAD@{46}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{47}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{48}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{49}: rebase (pick): E
be8f64f HEAD@{50}: rebase (start): checkout main...
ee2ad00 HEAD@{51}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{52}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{53}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{54}: rebase (pick): E
6376ca0 HEAD@{55}: rebase (pick): D
c45f440 HEAD@{56}: rebase (pick): C
d9df450 HEAD@{57}: rebase (start): checkout B...
ee2ad00 HEAD@{58}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{59}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{60}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{61}: rebase (pick): E
6376ca0 HEAD@{62}: rebase (pick): D
c45f440 HEAD@{63}: rebase (pick): C
d9df450 HEAD@{64}: rebase (start): checkout B...
ee2ad00 HEAD@{65}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{66}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{67}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{68}: rebase (pick): E
6376ca0 HEAD@{69}: rebase (pick): D
c45f440 HEAD@{70}: rebase (pick): C
d9df450 HEAD@{71}: rebase (start): checkout B...
ee2ad00 HEAD@{72}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{73}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{74}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{75}: rebase (pick): E
6376ca0 HEAD@{76}: rebase (pick): D
c45f440 HEAD@{77}: rebase (pick): C
d9df450 HEAD@{78}: rebase (start): checkout B
ee2ad00 HEAD@{79}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{80}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{81}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{82}: rebase (pick): E
6376ca0 HEAD@{83}: rebase (pick): D
c45f440 HEAD@{84}: rebase (pick): C
d9df450 HEAD@{85}: rebase (start): checkout B
ee2ad00 HEAD@{86}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{87}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{88}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{89}: rebase (pick): E
6376ca0 HEAD@{90}: rebase (pick): D
c45f440 HEAD@{91}: rebase (pick): C
d9df450 HEAD@{92}: rebase (start): checkout B
ee2ad00 HEAD@{93}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{94}: checkout: moving from main to side
71ab28b HEAD@{95}: commit: F
be8f64f HEAD@{96}: checkout: moving from side to main
ee2ad00 HEAD@{97}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{98}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{99}: rebase (pick): E
be8f64f HEAD@{100}: rebase (start): checkout main...side
ee2ad00 HEAD@{101}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{102}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{103}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{104}: rebase (pick): E
be8f64f HEAD@{105}: rebase (start): checkout main...side
ee2ad00 HEAD@{106}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{107}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{108}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{109}: rebase (pick): E
be8f64f HEAD@{110}: rebase (start): checkout main...side
ee2ad00 HEAD@{111}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{112}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{113}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{114}: rebase (pick): E
be8f64f HEAD@{115}: rebase (start): checkout main...
ee2ad00 HEAD@{116}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{117}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{118}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{119}: rebase (pick): E
be8f64f HEAD@{120}: rebase (start): checkout main...
ee2ad00 HEAD@{121}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{122}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{123}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{124}: rebase (pick): E
be8f64f HEAD@{125}: rebase (start): checkout main...
ee2ad00 HEAD@{126}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{127}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{128}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{129}: rebase (pick): E
0e6d3b5 HEAD@{130}: rebase (pick): D
0103ecb HEAD@{131}: rebase (pick): C
d9df450 HEAD@{132}: rebase (start): checkout B...
ee2ad00 HEAD@{133}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{134}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{135}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{136}: rebase (pick): E
0e6d3b5 HEAD@{137}: rebase (pick): D
0103ecb HEAD@{138}: rebase (pick): C
d9df450 HEAD@{139}: rebase (start): checkout B...
ee2ad00 HEAD@{140}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{141}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{142}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{143}: rebase (pick): E
0e6d3b5 HEAD@{144}: rebase (pick): D
0103ecb HEAD@{145}: rebase (pick): C
d9df450 HEAD@{146}: rebase (start): checkout B...
ee2ad00 HEAD@{147}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{148}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{149}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{150}: rebase (pick): E
0e6d3b5 HEAD@{151}: rebase (pick): D
0103ecb HEAD@{152}: rebase (pick): C
d9df450 HEAD@{153}: rebase (start): checkout B
ee2ad00 HEAD@{154}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{155}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{156}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{157}: rebase (pick): E
0e6d3b5 HEAD@{158}: rebase (pick): D
0103ecb HEAD@{159}: rebase (pick): C
d9df450 HEAD@{160}: rebase (start): checkout B
ee2ad00 HEAD@{161}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{162}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{163}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{164}: rebase (pick): E
0e6d3b5 HEAD@{165}: rebase (pick): D
0103ecb HEAD@{166}: rebase (pick): C
d9df450 HEAD@{167}: rebase (start): checkout B
ee2ad00 HEAD@{168}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{169}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{170}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{171}: rebase (pick): E
be8f64f HEAD@{172}: rebase (start): checkout main
ee2ad00 HEAD@{173}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{174}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{175}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{176}: rebase (pick): E
be8f64f HEAD@{177}: rebase (start): checkout main
ee2ad00 HEAD@{178}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{179}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{180}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{181}: rebase (pick): E
be8f64f HEAD@{182}: rebase (start): checkout main
ee2ad00 HEAD@{183}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{184}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{185}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{186}: rebase (pick): E
be8f64f HEAD@{187}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{188}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{189}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{190}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{191}: rebase (pick): E
be8f64f HEAD@{192}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{193}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{194}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{195}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{196}: rebase (pick): E
be8f64f HEAD@{197}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{198}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{199}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{200}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{201}: rebase (pick): E
be8f64f HEAD@{202}: rebase (start): checkout refs/heads/main
ee2ad00 HEAD@{203}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{204}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{205}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{206}: rebase (pick): E
be8f64f HEAD@{207}: rebase (start): checkout refs/heads/main
ee2ad00 HEAD@{208}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{209}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{210}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{211}: rebase (pick): E
be8f64f HEAD@{212}: rebase (start): checkout refs/heads/main
ee2ad00 HEAD@{213}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{214}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{215}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{216}: rebase (pick): E
be8f64f HEAD@{217}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{218}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{219}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{220}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{221}: rebase (pick): E
be8f64f HEAD@{222}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{223}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{224}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{225}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{226}: rebase (pick): E
be8f64f HEAD@{227}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{228}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{229}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{230}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{231}: rebase (pick): E
be8f64f HEAD@{232}: rebase (start): checkout main...side
ee2ad00 HEAD@{233}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{234}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{235}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{236}: rebase (pick): E
be8f64f HEAD@{237}: rebase (start): checkout main...side
ee2ad00 HEAD@{238}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{239}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{240}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{241}: rebase (pick): E
be8f64f HEAD@{242}: rebase (start): checkout main...side
ee2ad00 HEAD@{243}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{244}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{245}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{246}: rebase (pick): E
be8f64f HEAD@{247}: rebase (start): checkout main...
ee2ad00 HEAD@{248}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{249}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{250}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{251}: rebase (pick): E
be8f64f HEAD@{252}: rebase (start): checkout main...
ee2ad00 HEAD@{253}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{254}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{255}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{256}: rebase (pick): E
be8f64f HEAD@{257}: rebase (start): checkout main...
ee2ad00 HEAD@{258}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{259}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{260}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{261}: rebase (pick): E
0e6d3b5 HEAD@{262}: rebase (pick): D
0103ecb HEAD@{263}: rebase (pick): C
d9df450 HEAD@{264}: rebase (start): checkout B...
ee2ad00 HEAD@{265}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{266}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{267}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{268}: rebase (pick): E
0e6d3b5 HEAD@{269}: rebase (pick): D
0103ecb HEAD@{270}: rebase (pick): C
d9df450 HEAD@{271}: rebase (start): checkout B...
ee2ad00 HEAD@{272}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{273}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{274}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{275}: rebase (pick): E
0e6d3b5 HEAD@{276}: rebase (pick): D
0103ecb HEAD@{277}: rebase (pick): C
d9df450 HEAD@{278}: rebase (start): checkout B...
ee2ad00 HEAD@{279}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{280}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{281}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{282}: rebase (pick): E
0e6d3b5 HEAD@{283}: rebase (pick): D
0103ecb HEAD@{284}: rebase (pick): C
d9df450 HEAD@{285}: rebase (start): checkout B
ee2ad00 HEAD@{286}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{287}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{288}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{289}: rebase (pick): E
0e6d3b5 HEAD@{290}: rebase (pick): D
0103ecb HEAD@{291}: rebase (pick): C
d9df450 HEAD@{292}: rebase (start): checkout B
ee2ad00 HEAD@{293}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{294}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{295}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{296}: rebase (pick): E
0e6d3b5 HEAD@{297}: rebase (pick): D
0103ecb HEAD@{298}: rebase (pick): C
d9df450 HEAD@{299}: rebase (start): checkout B
ee2ad00 HEAD@{300}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{301}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{302}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{303}: rebase (pick): E
be8f64f HEAD@{304}: rebase (start): checkout main
ee2ad00 HEAD@{305}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{306}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{307}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{308}: rebase (pick): E
be8f64f HEAD@{309}: rebase (start): checkout main
ee2ad00 HEAD@{310}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{311}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{312}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{313}: rebase (pick): E
be8f64f HEAD@{314}: rebase (start): checkout main
ee2ad00 HEAD@{315}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{316}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{317}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{318}: rebase (pick): E
be8f64f HEAD@{319}: rebase (start): checkout refs/heads/main
ee2ad00 HEAD@{320}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{321}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{322}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{323}: rebase (pick): E
be8f64f HEAD@{324}: rebase (start): checkout refs/heads/main
ee2ad00 HEAD@{325}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{326}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{327}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{328}: rebase (pick): E
be8f64f HEAD@{329}: rebase (start): checkout refs/heads/main
ee2ad00 HEAD@{330}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{331}: commit: E
be8f64f HEAD@{332}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{333}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{334}: rebase (start): checkout main...side
be8f64f HEAD@{335}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{336}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{337}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{338}: rebase (start): checkout main...side
be8f64f HEAD@{339}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{340}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{341}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{342}: rebase (start): checkout main...side
be8f64f HEAD@{343}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{344}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{345}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{346}: rebase (start): checkout main...
be8f64f HEAD@{347}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{348}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{349}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{350}: rebase (start): checkout main...
be8f64f HEAD@{351}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{352}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{353}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{354}: rebase (start): checkout main...
be8f64f HEAD@{355}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{356}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{357}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{358}: rebase (pick): D
e9ee69b HEAD@{359}: rebase (pick): C
d9df450 HEAD@{360}: rebase (start): checkout B...
be8f64f HEAD@{361}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{362}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{363}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{364}: rebase (pick): D
e9ee69b HEAD@{365}: rebase (pick): C
d9df450 HEAD@{366}: rebase (start): checkout B...
be8f64f HEAD@{367}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{368}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{369}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{370}: rebase (pick): D
e9ee69b HEAD@{371}: rebase (pick): C
d9df450 HEAD@{372}: rebase (start): checkout B...
be8f64f HEAD@{373}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{374}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{375}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{376}: rebase (pick): D
e9ee69b HEAD@{377}: rebase (pick): C
d9df450 HEAD@{378}: rebase (start): checkout B
be8f64f HEAD@{379}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{380}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{381}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{382}: rebase (pick): D
e9ee69b HEAD@{383}: rebase (pick): C
d9df450 HEAD@{384}: rebase (start): checkout B
be8f64f HEAD@{385}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{386}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{387}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{388}: rebase (pick): D
e9ee69b HEAD@{389}: rebase (pick): C
d9df450 HEAD@{390}: rebase (start): checkout B
be8f64f HEAD@{391}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{392}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{393}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{394}: rebase (start): checkout main
be8f64f HEAD@{395}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{396}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{397}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{398}: rebase (start): checkout main
be8f64f HEAD@{399}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{400}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{401}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{402}: rebase (start): checkout main
be8f64f HEAD@{403}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{404}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{405}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{406}: rebase (start): checkout refs/heads/main...side
be8f64f HEAD@{407}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{408}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{409}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{410}: rebase (start): checkout refs/heads/main...side
be8f64f HEAD@{411}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{412}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{413}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{414}: rebase (start): checkout refs/heads/main...side
be8f64f HEAD@{415}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{416}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{417}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{418}: rebase (start): checkout refs/heads/main
be8f64f HEAD@{419}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{420}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{421}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{422}: rebase (start): checkout refs/heads/main
be8f64f HEAD@{423}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{424}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{425}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{426}: rebase (start): checkout refs/heads/main
be8f64f HEAD@{427}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{428}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{429}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{430}: rebase (start): checkout refs/heads/main...side
be8f64f HEAD@{431}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{432}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{433}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{434}: rebase (start): checkout refs/heads/main...side
be8f64f HEAD@{435}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{436}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{437}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{438}: rebase (start): checkout refs/heads/main...side
be8f64f HEAD@{439}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{440}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{441}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{442}: rebase (start): checkout main...side
be8f64f HEAD@{443}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{444}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{445}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{446}: rebase (start): checkout main...side
be8f64f HEAD@{447}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{448}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{449}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{450}: rebase (start): checkout main...side
be8f64f HEAD@{451}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{452}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{453}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{454}: rebase (start): checkout main...
be8f64f HEAD@{455}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{456}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{457}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{458}: rebase (start): checkout main...
be8f64f HEAD@{459}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{460}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{461}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{462}: rebase (start): checkout main...
be8f64f HEAD@{463}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{464}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{465}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{466}: rebase (pick): D
e9ee69b HEAD@{467}: rebase (pick): C
d9df450 HEAD@{468}: rebase (start): checkout B...
be8f64f HEAD@{469}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{470}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{471}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{472}: rebase (pick): D
e9ee69b HEAD@{473}: rebase (pick): C
d9df450 HEAD@{474}: rebase (start): checkout B...
be8f64f HEAD@{475}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{476}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{477}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{478}: rebase (pick): D
e9ee69b HEAD@{479}: rebase (pick): C
d9df450 HEAD@{480}: rebase (start): checkout B...
be8f64f HEAD@{481}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{482}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{483}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{484}: rebase (pick): D
e9ee69b HEAD@{485}: rebase (pick): C
d9df450 HEAD@{486}: rebase (start): checkout B
be8f64f HEAD@{487}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{488}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{489}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{490}: rebase (pick): D
e9ee69b HEAD@{491}: rebase (pick): C
d9df450 HEAD@{492}: rebase (start): checkout B
be8f64f HEAD@{493}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{494}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{495}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{496}: rebase (pick): D
e9ee69b HEAD@{497}: rebase (pick): C
d9df450 HEAD@{498}: rebase (start): checkout B
be8f64f HEAD@{499}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{500}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{501}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{502}: rebase (start): checkout main
be8f64f HEAD@{503}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{504}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{505}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{506}: rebase (start): checkout main
be8f64f HEAD@{507}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{508}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{509}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{510}: rebase (start): checkout main
be8f64f HEAD@{511}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{512}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{513}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{514}: rebase (start): checkout refs/heads/main
be8f64f HEAD@{515}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{516}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{517}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{518}: rebase (start): checkout refs/heads/main
be8f64f HEAD@{519}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{520}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{521}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{522}: rebase (start): checkout refs/heads/main
be8f64f HEAD@{523}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{524}: checkout: moving from main to side
be8f64f HEAD@{525}: commit: D
35a8500 HEAD@{526}: commit: C
d9df450 HEAD@{527}: commit: B
0ddfaf1 HEAD@{528}: commit (initial): A
HEAD is now at ee2ad00 E
not ok 204 - git rebase --merge --fork-point --onto B B with our and their changes is work with same HEAD # TODO known breakage
expecting success of 3432.205 'git rebase --merge --no-ff --fork-point --onto B B with our and their changes is work with diff HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --fork-point --onto B B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/3)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 205 - git rebase --merge --no-ff --fork-point --onto B B with our and their changes is work with diff HEAD
checking known breakage of 3432.206 'git rebase --merge --fork-point --onto B B (rebase.abbreviateCommands = true) with our and their changes is work with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --fork-point --onto B B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
test_line_count: line count for actual !-gt 536
ee2ad00 HEAD@{0}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{1}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{2}: rebase (pick): E
6376ca0 HEAD@{3}: rebase (pick): D
c45f440 HEAD@{4}: rebase (pick): C
d9df450 HEAD@{5}: rebase (start): checkout B
ee2ad00 HEAD@{6}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{7}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{8}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{9}: rebase (pick): E
6376ca0 HEAD@{10}: rebase (pick): D
c45f440 HEAD@{11}: rebase (pick): C
d9df450 HEAD@{12}: rebase (start): checkout B
ee2ad00 HEAD@{13}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{14}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{15}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{16}: rebase (pick): E
be8f64f HEAD@{17}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{18}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{19}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{20}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{21}: rebase (pick): E
be8f64f HEAD@{22}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{23}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{24}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{25}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{26}: rebase (pick): E
be8f64f HEAD@{27}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{28}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{29}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{30}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{31}: rebase (pick): E
be8f64f HEAD@{32}: rebase (start): checkout main...side
ee2ad00 HEAD@{33}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{34}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{35}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{36}: rebase (pick): E
be8f64f HEAD@{37}: rebase (start): checkout main...side
ee2ad00 HEAD@{38}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{39}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{40}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{41}: rebase (pick): E
be8f64f HEAD@{42}: rebase (start): checkout main...side
ee2ad00 HEAD@{43}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{44}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{45}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{46}: rebase (pick): E
be8f64f HEAD@{47}: rebase (start): checkout main...
ee2ad00 HEAD@{48}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{49}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{50}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{51}: rebase (pick): E
be8f64f HEAD@{52}: rebase (start): checkout main...
ee2ad00 HEAD@{53}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{54}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{55}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{56}: rebase (pick): E
be8f64f HEAD@{57}: rebase (start): checkout main...
ee2ad00 HEAD@{58}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{59}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{60}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{61}: rebase (pick): E
6376ca0 HEAD@{62}: rebase (pick): D
c45f440 HEAD@{63}: rebase (pick): C
d9df450 HEAD@{64}: rebase (start): checkout B...
ee2ad00 HEAD@{65}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{66}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{67}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{68}: rebase (pick): E
6376ca0 HEAD@{69}: rebase (pick): D
c45f440 HEAD@{70}: rebase (pick): C
d9df450 HEAD@{71}: rebase (start): checkout B...
ee2ad00 HEAD@{72}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{73}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{74}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{75}: rebase (pick): E
6376ca0 HEAD@{76}: rebase (pick): D
c45f440 HEAD@{77}: rebase (pick): C
d9df450 HEAD@{78}: rebase (start): checkout B...
ee2ad00 HEAD@{79}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{80}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{81}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{82}: rebase (pick): E
6376ca0 HEAD@{83}: rebase (pick): D
c45f440 HEAD@{84}: rebase (pick): C
d9df450 HEAD@{85}: rebase (start): checkout B
ee2ad00 HEAD@{86}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{87}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{88}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{89}: rebase (pick): E
6376ca0 HEAD@{90}: rebase (pick): D
c45f440 HEAD@{91}: rebase (pick): C
d9df450 HEAD@{92}: rebase (start): checkout B
ee2ad00 HEAD@{93}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{94}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{95}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{96}: rebase (pick): E
6376ca0 HEAD@{97}: rebase (pick): D
c45f440 HEAD@{98}: rebase (pick): C
d9df450 HEAD@{99}: rebase (start): checkout B
ee2ad00 HEAD@{100}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{101}: checkout: moving from main to side
71ab28b HEAD@{102}: commit: F
be8f64f HEAD@{103}: checkout: moving from side to main
ee2ad00 HEAD@{104}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{105}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{106}: rebase (pick): E
be8f64f HEAD@{107}: rebase (start): checkout main...side
ee2ad00 HEAD@{108}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{109}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{110}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{111}: rebase (pick): E
be8f64f HEAD@{112}: rebase (start): checkout main...side
ee2ad00 HEAD@{113}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{114}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{115}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{116}: rebase (pick): E
be8f64f HEAD@{117}: rebase (start): checkout main...side
ee2ad00 HEAD@{118}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{119}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{120}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{121}: rebase (pick): E
be8f64f HEAD@{122}: rebase (start): checkout main...
ee2ad00 HEAD@{123}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{124}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{125}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{126}: rebase (pick): E
be8f64f HEAD@{127}: rebase (start): checkout main...
ee2ad00 HEAD@{128}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{129}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{130}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{131}: rebase (pick): E
be8f64f HEAD@{132}: rebase (start): checkout main...
ee2ad00 HEAD@{133}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{134}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{135}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{136}: rebase (pick): E
0e6d3b5 HEAD@{137}: rebase (pick): D
0103ecb HEAD@{138}: rebase (pick): C
d9df450 HEAD@{139}: rebase (start): checkout B...
ee2ad00 HEAD@{140}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{141}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{142}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{143}: rebase (pick): E
0e6d3b5 HEAD@{144}: rebase (pick): D
0103ecb HEAD@{145}: rebase (pick): C
d9df450 HEAD@{146}: rebase (start): checkout B...
ee2ad00 HEAD@{147}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{148}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{149}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{150}: rebase (pick): E
0e6d3b5 HEAD@{151}: rebase (pick): D
0103ecb HEAD@{152}: rebase (pick): C
d9df450 HEAD@{153}: rebase (start): checkout B...
ee2ad00 HEAD@{154}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{155}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{156}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{157}: rebase (pick): E
0e6d3b5 HEAD@{158}: rebase (pick): D
0103ecb HEAD@{159}: rebase (pick): C
d9df450 HEAD@{160}: rebase (start): checkout B
ee2ad00 HEAD@{161}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{162}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{163}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{164}: rebase (pick): E
0e6d3b5 HEAD@{165}: rebase (pick): D
0103ecb HEAD@{166}: rebase (pick): C
d9df450 HEAD@{167}: rebase (start): checkout B
ee2ad00 HEAD@{168}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{169}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{170}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{171}: rebase (pick): E
0e6d3b5 HEAD@{172}: rebase (pick): D
0103ecb HEAD@{173}: rebase (pick): C
d9df450 HEAD@{174}: rebase (start): checkout B
ee2ad00 HEAD@{175}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{176}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{177}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{178}: rebase (pick): E
be8f64f HEAD@{179}: rebase (start): checkout main
ee2ad00 HEAD@{180}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{181}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{182}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{183}: rebase (pick): E
be8f64f HEAD@{184}: rebase (start): checkout main
ee2ad00 HEAD@{185}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{186}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{187}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{188}: rebase (pick): E
be8f64f HEAD@{189}: rebase (start): checkout main
ee2ad00 HEAD@{190}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{191}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{192}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{193}: rebase (pick): E
be8f64f HEAD@{194}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{195}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{196}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{197}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{198}: rebase (pick): E
be8f64f HEAD@{199}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{200}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{201}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{202}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{203}: rebase (pick): E
be8f64f HEAD@{204}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{205}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{206}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{207}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{208}: rebase (pick): E
be8f64f HEAD@{209}: rebase (start): checkout refs/heads/main
ee2ad00 HEAD@{210}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{211}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{212}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{213}: rebase (pick): E
be8f64f HEAD@{214}: rebase (start): checkout refs/heads/main
ee2ad00 HEAD@{215}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{216}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{217}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{218}: rebase (pick): E
be8f64f HEAD@{219}: rebase (start): checkout refs/heads/main
ee2ad00 HEAD@{220}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{221}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{222}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{223}: rebase (pick): E
be8f64f HEAD@{224}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{225}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{226}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{227}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{228}: rebase (pick): E
be8f64f HEAD@{229}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{230}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{231}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{232}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{233}: rebase (pick): E
be8f64f HEAD@{234}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{235}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{236}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{237}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{238}: rebase (pick): E
be8f64f HEAD@{239}: rebase (start): checkout main...side
ee2ad00 HEAD@{240}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{241}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{242}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{243}: rebase (pick): E
be8f64f HEAD@{244}: rebase (start): checkout main...side
ee2ad00 HEAD@{245}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{246}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{247}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{248}: rebase (pick): E
be8f64f HEAD@{249}: rebase (start): checkout main...side
ee2ad00 HEAD@{250}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{251}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{252}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{253}: rebase (pick): E
be8f64f HEAD@{254}: rebase (start): checkout main...
ee2ad00 HEAD@{255}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{256}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{257}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{258}: rebase (pick): E
be8f64f HEAD@{259}: rebase (start): checkout main...
ee2ad00 HEAD@{260}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{261}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{262}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{263}: rebase (pick): E
be8f64f HEAD@{264}: rebase (start): checkout main...
ee2ad00 HEAD@{265}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{266}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{267}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{268}: rebase (pick): E
0e6d3b5 HEAD@{269}: rebase (pick): D
0103ecb HEAD@{270}: rebase (pick): C
d9df450 HEAD@{271}: rebase (start): checkout B...
ee2ad00 HEAD@{272}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{273}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{274}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{275}: rebase (pick): E
0e6d3b5 HEAD@{276}: rebase (pick): D
0103ecb HEAD@{277}: rebase (pick): C
d9df450 HEAD@{278}: rebase (start): checkout B...
ee2ad00 HEAD@{279}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{280}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{281}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{282}: rebase (pick): E
0e6d3b5 HEAD@{283}: rebase (pick): D
0103ecb HEAD@{284}: rebase (pick): C
d9df450 HEAD@{285}: rebase (start): checkout B...
ee2ad00 HEAD@{286}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{287}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{288}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{289}: rebase (pick): E
0e6d3b5 HEAD@{290}: rebase (pick): D
0103ecb HEAD@{291}: rebase (pick): C
d9df450 HEAD@{292}: rebase (start): checkout B
ee2ad00 HEAD@{293}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{294}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{295}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{296}: rebase (pick): E
0e6d3b5 HEAD@{297}: rebase (pick): D
0103ecb HEAD@{298}: rebase (pick): C
d9df450 HEAD@{299}: rebase (start): checkout B
ee2ad00 HEAD@{300}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{301}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{302}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{303}: rebase (pick): E
0e6d3b5 HEAD@{304}: rebase (pick): D
0103ecb HEAD@{305}: rebase (pick): C
d9df450 HEAD@{306}: rebase (start): checkout B
ee2ad00 HEAD@{307}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{308}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{309}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{310}: rebase (pick): E
be8f64f HEAD@{311}: rebase (start): checkout main
ee2ad00 HEAD@{312}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{313}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{314}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{315}: rebase (pick): E
be8f64f HEAD@{316}: rebase (start): checkout main
ee2ad00 HEAD@{317}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{318}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{319}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{320}: rebase (pick): E
be8f64f HEAD@{321}: rebase (start): checkout main
ee2ad00 HEAD@{322}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{323}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{324}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{325}: rebase (pick): E
be8f64f HEAD@{326}: rebase (start): checkout refs/heads/main
ee2ad00 HEAD@{327}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{328}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{329}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{330}: rebase (pick): E
be8f64f HEAD@{331}: rebase (start): checkout refs/heads/main
ee2ad00 HEAD@{332}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{333}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{334}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{335}: rebase (pick): E
be8f64f HEAD@{336}: rebase (start): checkout refs/heads/main
ee2ad00 HEAD@{337}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{338}: commit: E
be8f64f HEAD@{339}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{340}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{341}: rebase (start): checkout main...side
be8f64f HEAD@{342}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{343}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{344}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{345}: rebase (start): checkout main...side
be8f64f HEAD@{346}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{347}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{348}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{349}: rebase (start): checkout main...side
be8f64f HEAD@{350}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{351}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{352}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{353}: rebase (start): checkout main...
be8f64f HEAD@{354}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{355}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{356}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{357}: rebase (start): checkout main...
be8f64f HEAD@{358}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{359}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{360}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{361}: rebase (start): checkout main...
be8f64f HEAD@{362}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{363}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{364}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{365}: rebase (pick): D
e9ee69b HEAD@{366}: rebase (pick): C
d9df450 HEAD@{367}: rebase (start): checkout B...
be8f64f HEAD@{368}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{369}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{370}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{371}: rebase (pick): D
e9ee69b HEAD@{372}: rebase (pick): C
d9df450 HEAD@{373}: rebase (start): checkout B...
be8f64f HEAD@{374}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{375}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{376}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{377}: rebase (pick): D
e9ee69b HEAD@{378}: rebase (pick): C
d9df450 HEAD@{379}: rebase (start): checkout B...
be8f64f HEAD@{380}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{381}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{382}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{383}: rebase (pick): D
e9ee69b HEAD@{384}: rebase (pick): C
d9df450 HEAD@{385}: rebase (start): checkout B
be8f64f HEAD@{386}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{387}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{388}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{389}: rebase (pick): D
e9ee69b HEAD@{390}: rebase (pick): C
d9df450 HEAD@{391}: rebase (start): checkout B
be8f64f HEAD@{392}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{393}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{394}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{395}: rebase (pick): D
e9ee69b HEAD@{396}: rebase (pick): C
d9df450 HEAD@{397}: rebase (start): checkout B
be8f64f HEAD@{398}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{399}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{400}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{401}: rebase (start): checkout main
be8f64f HEAD@{402}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{403}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{404}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{405}: rebase (start): checkout main
be8f64f HEAD@{406}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{407}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{408}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{409}: rebase (start): checkout main
be8f64f HEAD@{410}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{411}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{412}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{413}: rebase (start): checkout refs/heads/main...side
be8f64f HEAD@{414}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{415}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{416}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{417}: rebase (start): checkout refs/heads/main...side
be8f64f HEAD@{418}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{419}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{420}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{421}: rebase (start): checkout refs/heads/main...side
be8f64f HEAD@{422}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{423}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{424}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{425}: rebase (start): checkout refs/heads/main
be8f64f HEAD@{426}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{427}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{428}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{429}: rebase (start): checkout refs/heads/main
be8f64f HEAD@{430}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{431}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{432}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{433}: rebase (start): checkout refs/heads/main
be8f64f HEAD@{434}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{435}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{436}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{437}: rebase (start): checkout refs/heads/main...side
be8f64f HEAD@{438}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{439}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{440}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{441}: rebase (start): checkout refs/heads/main...side
be8f64f HEAD@{442}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{443}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{444}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{445}: rebase (start): checkout refs/heads/main...side
be8f64f HEAD@{446}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{447}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{448}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{449}: rebase (start): checkout main...side
be8f64f HEAD@{450}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{451}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{452}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{453}: rebase (start): checkout main...side
be8f64f HEAD@{454}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{455}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{456}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{457}: rebase (start): checkout main...side
be8f64f HEAD@{458}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{459}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{460}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{461}: rebase (start): checkout main...
be8f64f HEAD@{462}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{463}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{464}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{465}: rebase (start): checkout main...
be8f64f HEAD@{466}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{467}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{468}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{469}: rebase (start): checkout main...
be8f64f HEAD@{470}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{471}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{472}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{473}: rebase (pick): D
e9ee69b HEAD@{474}: rebase (pick): C
d9df450 HEAD@{475}: rebase (start): checkout B...
be8f64f HEAD@{476}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{477}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{478}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{479}: rebase (pick): D
e9ee69b HEAD@{480}: rebase (pick): C
d9df450 HEAD@{481}: rebase (start): checkout B...
be8f64f HEAD@{482}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{483}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{484}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{485}: rebase (pick): D
e9ee69b HEAD@{486}: rebase (pick): C
d9df450 HEAD@{487}: rebase (start): checkout B...
be8f64f HEAD@{488}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{489}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{490}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{491}: rebase (pick): D
e9ee69b HEAD@{492}: rebase (pick): C
d9df450 HEAD@{493}: rebase (start): checkout B
be8f64f HEAD@{494}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{495}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{496}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{497}: rebase (pick): D
e9ee69b HEAD@{498}: rebase (pick): C
d9df450 HEAD@{499}: rebase (start): checkout B
be8f64f HEAD@{500}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{501}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{502}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{503}: rebase (pick): D
e9ee69b HEAD@{504}: rebase (pick): C
d9df450 HEAD@{505}: rebase (start): checkout B
be8f64f HEAD@{506}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{507}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{508}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{509}: rebase (start): checkout main
be8f64f HEAD@{510}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{511}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{512}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{513}: rebase (start): checkout main
be8f64f HEAD@{514}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{515}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{516}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{517}: rebase (start): checkout main
be8f64f HEAD@{518}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{519}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{520}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{521}: rebase (start): checkout refs/heads/main
be8f64f HEAD@{522}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{523}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{524}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{525}: rebase (start): checkout refs/heads/main
be8f64f HEAD@{526}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{527}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{528}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{529}: rebase (start): checkout refs/heads/main
be8f64f HEAD@{530}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{531}: checkout: moving from main to side
be8f64f HEAD@{532}: commit: D
35a8500 HEAD@{533}: commit: C
d9df450 HEAD@{534}: commit: B
0ddfaf1 HEAD@{535}: commit (initial): A
HEAD is now at ee2ad00 E
not ok 206 - git rebase --merge --fork-point --onto B B (rebase.abbreviateCommands = true) with our and their changes is work with same HEAD # TODO known breakage
expecting success of 3432.207 'git rebase --merge --no-ff --fork-point --onto B B (rebase.abbreviateCommands = true) with our and their changes is work with diff HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --fork-point --onto B B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/3)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 207 - git rebase --merge --no-ff --fork-point --onto B B (rebase.abbreviateCommands = true) with our and their changes is work with diff HEAD
checking known breakage of 3432.208 'git rebase --apply --fork-point --onto B... B with our and their changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --fork-point --onto B... B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
test_line_count: line count for actual !-gt 543
ee2ad00 HEAD@{0}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{1}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{2}: rebase (pick): E
6376ca0 HEAD@{3}: rebase (pick): D
c45f440 HEAD@{4}: rebase (pick): C
d9df450 HEAD@{5}: rebase (start): checkout B
ee2ad00 HEAD@{6}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{7}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{8}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{9}: rebase (pick): E
6376ca0 HEAD@{10}: rebase (pick): D
c45f440 HEAD@{11}: rebase (pick): C
d9df450 HEAD@{12}: rebase (start): checkout B
ee2ad00 HEAD@{13}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{14}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{15}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{16}: rebase (pick): E
6376ca0 HEAD@{17}: rebase (pick): D
c45f440 HEAD@{18}: rebase (pick): C
d9df450 HEAD@{19}: rebase (start): checkout B
ee2ad00 HEAD@{20}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{21}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{22}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{23}: rebase (pick): E
be8f64f HEAD@{24}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{25}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{26}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{27}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{28}: rebase (pick): E
be8f64f HEAD@{29}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{30}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{31}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{32}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{33}: rebase (pick): E
be8f64f HEAD@{34}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{35}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{36}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{37}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{38}: rebase (pick): E
be8f64f HEAD@{39}: rebase (start): checkout main...side
ee2ad00 HEAD@{40}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{41}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{42}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{43}: rebase (pick): E
be8f64f HEAD@{44}: rebase (start): checkout main...side
ee2ad00 HEAD@{45}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{46}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{47}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{48}: rebase (pick): E
be8f64f HEAD@{49}: rebase (start): checkout main...side
ee2ad00 HEAD@{50}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{51}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{52}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{53}: rebase (pick): E
be8f64f HEAD@{54}: rebase (start): checkout main...
ee2ad00 HEAD@{55}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{56}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{57}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{58}: rebase (pick): E
be8f64f HEAD@{59}: rebase (start): checkout main...
ee2ad00 HEAD@{60}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{61}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{62}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{63}: rebase (pick): E
be8f64f HEAD@{64}: rebase (start): checkout main...
ee2ad00 HEAD@{65}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{66}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{67}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{68}: rebase (pick): E
6376ca0 HEAD@{69}: rebase (pick): D
c45f440 HEAD@{70}: rebase (pick): C
d9df450 HEAD@{71}: rebase (start): checkout B...
ee2ad00 HEAD@{72}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{73}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{74}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{75}: rebase (pick): E
6376ca0 HEAD@{76}: rebase (pick): D
c45f440 HEAD@{77}: rebase (pick): C
d9df450 HEAD@{78}: rebase (start): checkout B...
ee2ad00 HEAD@{79}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{80}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{81}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{82}: rebase (pick): E
6376ca0 HEAD@{83}: rebase (pick): D
c45f440 HEAD@{84}: rebase (pick): C
d9df450 HEAD@{85}: rebase (start): checkout B...
ee2ad00 HEAD@{86}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{87}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{88}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{89}: rebase (pick): E
6376ca0 HEAD@{90}: rebase (pick): D
c45f440 HEAD@{91}: rebase (pick): C
d9df450 HEAD@{92}: rebase (start): checkout B
ee2ad00 HEAD@{93}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{94}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{95}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{96}: rebase (pick): E
6376ca0 HEAD@{97}: rebase (pick): D
c45f440 HEAD@{98}: rebase (pick): C
d9df450 HEAD@{99}: rebase (start): checkout B
ee2ad00 HEAD@{100}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{101}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{102}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{103}: rebase (pick): E
6376ca0 HEAD@{104}: rebase (pick): D
c45f440 HEAD@{105}: rebase (pick): C
d9df450 HEAD@{106}: rebase (start): checkout B
ee2ad00 HEAD@{107}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{108}: checkout: moving from main to side
71ab28b HEAD@{109}: commit: F
be8f64f HEAD@{110}: checkout: moving from side to main
ee2ad00 HEAD@{111}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{112}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{113}: rebase (pick): E
be8f64f HEAD@{114}: rebase (start): checkout main...side
ee2ad00 HEAD@{115}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{116}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{117}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{118}: rebase (pick): E
be8f64f HEAD@{119}: rebase (start): checkout main...side
ee2ad00 HEAD@{120}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{121}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{122}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{123}: rebase (pick): E
be8f64f HEAD@{124}: rebase (start): checkout main...side
ee2ad00 HEAD@{125}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{126}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{127}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{128}: rebase (pick): E
be8f64f HEAD@{129}: rebase (start): checkout main...
ee2ad00 HEAD@{130}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{131}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{132}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{133}: rebase (pick): E
be8f64f HEAD@{134}: rebase (start): checkout main...
ee2ad00 HEAD@{135}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{136}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{137}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{138}: rebase (pick): E
be8f64f HEAD@{139}: rebase (start): checkout main...
ee2ad00 HEAD@{140}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{141}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{142}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{143}: rebase (pick): E
0e6d3b5 HEAD@{144}: rebase (pick): D
0103ecb HEAD@{145}: rebase (pick): C
d9df450 HEAD@{146}: rebase (start): checkout B...
ee2ad00 HEAD@{147}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{148}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{149}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{150}: rebase (pick): E
0e6d3b5 HEAD@{151}: rebase (pick): D
0103ecb HEAD@{152}: rebase (pick): C
d9df450 HEAD@{153}: rebase (start): checkout B...
ee2ad00 HEAD@{154}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{155}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{156}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{157}: rebase (pick): E
0e6d3b5 HEAD@{158}: rebase (pick): D
0103ecb HEAD@{159}: rebase (pick): C
d9df450 HEAD@{160}: rebase (start): checkout B...
ee2ad00 HEAD@{161}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{162}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{163}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{164}: rebase (pick): E
0e6d3b5 HEAD@{165}: rebase (pick): D
0103ecb HEAD@{166}: rebase (pick): C
d9df450 HEAD@{167}: rebase (start): checkout B
ee2ad00 HEAD@{168}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{169}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{170}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{171}: rebase (pick): E
0e6d3b5 HEAD@{172}: rebase (pick): D
0103ecb HEAD@{173}: rebase (pick): C
d9df450 HEAD@{174}: rebase (start): checkout B
ee2ad00 HEAD@{175}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{176}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{177}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{178}: rebase (pick): E
0e6d3b5 HEAD@{179}: rebase (pick): D
0103ecb HEAD@{180}: rebase (pick): C
d9df450 HEAD@{181}: rebase (start): checkout B
ee2ad00 HEAD@{182}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{183}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{184}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{185}: rebase (pick): E
be8f64f HEAD@{186}: rebase (start): checkout main
ee2ad00 HEAD@{187}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{188}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{189}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{190}: rebase (pick): E
be8f64f HEAD@{191}: rebase (start): checkout main
ee2ad00 HEAD@{192}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{193}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{194}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{195}: rebase (pick): E
be8f64f HEAD@{196}: rebase (start): checkout main
ee2ad00 HEAD@{197}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{198}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{199}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{200}: rebase (pick): E
be8f64f HEAD@{201}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{202}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{203}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{204}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{205}: rebase (pick): E
be8f64f HEAD@{206}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{207}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{208}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{209}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{210}: rebase (pick): E
be8f64f HEAD@{211}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{212}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{213}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{214}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{215}: rebase (pick): E
be8f64f HEAD@{216}: rebase (start): checkout refs/heads/main
ee2ad00 HEAD@{217}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{218}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{219}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{220}: rebase (pick): E
be8f64f HEAD@{221}: rebase (start): checkout refs/heads/main
ee2ad00 HEAD@{222}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{223}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{224}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{225}: rebase (pick): E
be8f64f HEAD@{226}: rebase (start): checkout refs/heads/main
ee2ad00 HEAD@{227}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{228}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{229}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{230}: rebase (pick): E
be8f64f HEAD@{231}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{232}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{233}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{234}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{235}: rebase (pick): E
be8f64f HEAD@{236}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{237}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{238}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{239}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{240}: rebase (pick): E
be8f64f HEAD@{241}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{242}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{243}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{244}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{245}: rebase (pick): E
be8f64f HEAD@{246}: rebase (start): checkout main...side
ee2ad00 HEAD@{247}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{248}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{249}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{250}: rebase (pick): E
be8f64f HEAD@{251}: rebase (start): checkout main...side
ee2ad00 HEAD@{252}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{253}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{254}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{255}: rebase (pick): E
be8f64f HEAD@{256}: rebase (start): checkout main...side
ee2ad00 HEAD@{257}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{258}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{259}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{260}: rebase (pick): E
be8f64f HEAD@{261}: rebase (start): checkout main...
ee2ad00 HEAD@{262}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{263}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{264}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{265}: rebase (pick): E
be8f64f HEAD@{266}: rebase (start): checkout main...
ee2ad00 HEAD@{267}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{268}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{269}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{270}: rebase (pick): E
be8f64f HEAD@{271}: rebase (start): checkout main...
ee2ad00 HEAD@{272}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{273}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{274}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{275}: rebase (pick): E
0e6d3b5 HEAD@{276}: rebase (pick): D
0103ecb HEAD@{277}: rebase (pick): C
d9df450 HEAD@{278}: rebase (start): checkout B...
ee2ad00 HEAD@{279}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{280}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{281}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{282}: rebase (pick): E
0e6d3b5 HEAD@{283}: rebase (pick): D
0103ecb HEAD@{284}: rebase (pick): C
d9df450 HEAD@{285}: rebase (start): checkout B...
ee2ad00 HEAD@{286}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{287}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{288}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{289}: rebase (pick): E
0e6d3b5 HEAD@{290}: rebase (pick): D
0103ecb HEAD@{291}: rebase (pick): C
d9df450 HEAD@{292}: rebase (start): checkout B...
ee2ad00 HEAD@{293}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{294}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{295}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{296}: rebase (pick): E
0e6d3b5 HEAD@{297}: rebase (pick): D
0103ecb HEAD@{298}: rebase (pick): C
d9df450 HEAD@{299}: rebase (start): checkout B
ee2ad00 HEAD@{300}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{301}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{302}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{303}: rebase (pick): E
0e6d3b5 HEAD@{304}: rebase (pick): D
0103ecb HEAD@{305}: rebase (pick): C
d9df450 HEAD@{306}: rebase (start): checkout B
ee2ad00 HEAD@{307}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{308}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{309}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{310}: rebase (pick): E
0e6d3b5 HEAD@{311}: rebase (pick): D
0103ecb HEAD@{312}: rebase (pick): C
d9df450 HEAD@{313}: rebase (start): checkout B
ee2ad00 HEAD@{314}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{315}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{316}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{317}: rebase (pick): E
be8f64f HEAD@{318}: rebase (start): checkout main
ee2ad00 HEAD@{319}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{320}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{321}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{322}: rebase (pick): E
be8f64f HEAD@{323}: rebase (start): checkout main
ee2ad00 HEAD@{324}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{325}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{326}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{327}: rebase (pick): E
be8f64f HEAD@{328}: rebase (start): checkout main
ee2ad00 HEAD@{329}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{330}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{331}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{332}: rebase (pick): E
be8f64f HEAD@{333}: rebase (start): checkout refs/heads/main
ee2ad00 HEAD@{334}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{335}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{336}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{337}: rebase (pick): E
be8f64f HEAD@{338}: rebase (start): checkout refs/heads/main
ee2ad00 HEAD@{339}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{340}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{341}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{342}: rebase (pick): E
be8f64f HEAD@{343}: rebase (start): checkout refs/heads/main
ee2ad00 HEAD@{344}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{345}: commit: E
be8f64f HEAD@{346}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{347}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{348}: rebase (start): checkout main...side
be8f64f HEAD@{349}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{350}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{351}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{352}: rebase (start): checkout main...side
be8f64f HEAD@{353}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{354}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{355}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{356}: rebase (start): checkout main...side
be8f64f HEAD@{357}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{358}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{359}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{360}: rebase (start): checkout main...
be8f64f HEAD@{361}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{362}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{363}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{364}: rebase (start): checkout main...
be8f64f HEAD@{365}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{366}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{367}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{368}: rebase (start): checkout main...
be8f64f HEAD@{369}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{370}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{371}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{372}: rebase (pick): D
e9ee69b HEAD@{373}: rebase (pick): C
d9df450 HEAD@{374}: rebase (start): checkout B...
be8f64f HEAD@{375}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{376}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{377}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{378}: rebase (pick): D
e9ee69b HEAD@{379}: rebase (pick): C
d9df450 HEAD@{380}: rebase (start): checkout B...
be8f64f HEAD@{381}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{382}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{383}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{384}: rebase (pick): D
e9ee69b HEAD@{385}: rebase (pick): C
d9df450 HEAD@{386}: rebase (start): checkout B...
be8f64f HEAD@{387}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{388}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{389}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{390}: rebase (pick): D
e9ee69b HEAD@{391}: rebase (pick): C
d9df450 HEAD@{392}: rebase (start): checkout B
be8f64f HEAD@{393}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{394}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{395}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{396}: rebase (pick): D
e9ee69b HEAD@{397}: rebase (pick): C
d9df450 HEAD@{398}: rebase (start): checkout B
be8f64f HEAD@{399}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{400}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{401}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{402}: rebase (pick): D
e9ee69b HEAD@{403}: rebase (pick): C
d9df450 HEAD@{404}: rebase (start): checkout B
be8f64f HEAD@{405}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{406}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{407}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{408}: rebase (start): checkout main
be8f64f HEAD@{409}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{410}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{411}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{412}: rebase (start): checkout main
be8f64f HEAD@{413}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{414}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{415}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{416}: rebase (start): checkout main
be8f64f HEAD@{417}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{418}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{419}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{420}: rebase (start): checkout refs/heads/main...side
be8f64f HEAD@{421}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{422}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{423}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{424}: rebase (start): checkout refs/heads/main...side
be8f64f HEAD@{425}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{426}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{427}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{428}: rebase (start): checkout refs/heads/main...side
be8f64f HEAD@{429}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{430}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{431}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{432}: rebase (start): checkout refs/heads/main
be8f64f HEAD@{433}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{434}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{435}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{436}: rebase (start): checkout refs/heads/main
be8f64f HEAD@{437}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{438}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{439}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{440}: rebase (start): checkout refs/heads/main
be8f64f HEAD@{441}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{442}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{443}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{444}: rebase (start): checkout refs/heads/main...side
be8f64f HEAD@{445}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{446}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{447}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{448}: rebase (start): checkout refs/heads/main...side
be8f64f HEAD@{449}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{450}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{451}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{452}: rebase (start): checkout refs/heads/main...side
be8f64f HEAD@{453}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{454}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{455}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{456}: rebase (start): checkout main...side
be8f64f HEAD@{457}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{458}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{459}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{460}: rebase (start): checkout main...side
be8f64f HEAD@{461}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{462}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{463}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{464}: rebase (start): checkout main...side
be8f64f HEAD@{465}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{466}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{467}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{468}: rebase (start): checkout main...
be8f64f HEAD@{469}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{470}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{471}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{472}: rebase (start): checkout main...
be8f64f HEAD@{473}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{474}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{475}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{476}: rebase (start): checkout main...
be8f64f HEAD@{477}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{478}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{479}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{480}: rebase (pick): D
e9ee69b HEAD@{481}: rebase (pick): C
d9df450 HEAD@{482}: rebase (start): checkout B...
be8f64f HEAD@{483}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{484}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{485}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{486}: rebase (pick): D
e9ee69b HEAD@{487}: rebase (pick): C
d9df450 HEAD@{488}: rebase (start): checkout B...
be8f64f HEAD@{489}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{490}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{491}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{492}: rebase (pick): D
e9ee69b HEAD@{493}: rebase (pick): C
d9df450 HEAD@{494}: rebase (start): checkout B...
be8f64f HEAD@{495}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{496}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{497}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{498}: rebase (pick): D
e9ee69b HEAD@{499}: rebase (pick): C
d9df450 HEAD@{500}: rebase (start): checkout B
be8f64f HEAD@{501}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{502}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{503}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{504}: rebase (pick): D
e9ee69b HEAD@{505}: rebase (pick): C
d9df450 HEAD@{506}: rebase (start): checkout B
be8f64f HEAD@{507}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{508}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{509}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{510}: rebase (pick): D
e9ee69b HEAD@{511}: rebase (pick): C
d9df450 HEAD@{512}: rebase (start): checkout B
be8f64f HEAD@{513}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{514}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{515}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{516}: rebase (start): checkout main
be8f64f HEAD@{517}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{518}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{519}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{520}: rebase (start): checkout main
be8f64f HEAD@{521}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{522}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{523}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{524}: rebase (start): checkout main
be8f64f HEAD@{525}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{526}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{527}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{528}: rebase (start): checkout refs/heads/main
be8f64f HEAD@{529}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{530}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{531}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{532}: rebase (start): checkout refs/heads/main
be8f64f HEAD@{533}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{534}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{535}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{536}: rebase (start): checkout refs/heads/main
be8f64f HEAD@{537}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{538}: checkout: moving from main to side
be8f64f HEAD@{539}: commit: D
35a8500 HEAD@{540}: commit: C
d9df450 HEAD@{541}: commit: B
0ddfaf1 HEAD@{542}: commit (initial): A
HEAD is now at ee2ad00 E
not ok 208 - git rebase --apply --fork-point --onto B... B with our and their changes is work with same HEAD # TODO known breakage
expecting success of 3432.209 'git rebase --apply --no-ff --fork-point --onto B... B with our and their changes is work with diff HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --no-ff --fork-point --onto B... B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 209 - git rebase --apply --no-ff --fork-point --onto B... B with our and their changes is work with diff HEAD
checking known breakage of 3432.210 'git rebase --merge --fork-point --onto B... B with our and their changes is work with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --fork-point --onto B... B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
test_line_count: line count for actual !-gt 550
ee2ad00 HEAD@{0}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{1}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{2}: rebase (pick): E
6376ca0 HEAD@{3}: rebase (pick): D
c45f440 HEAD@{4}: rebase (pick): C
d9df450 HEAD@{5}: rebase (start): checkout B...
ee2ad00 HEAD@{6}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{7}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{8}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{9}: rebase (pick): E
6376ca0 HEAD@{10}: rebase (pick): D
c45f440 HEAD@{11}: rebase (pick): C
d9df450 HEAD@{12}: rebase (start): checkout B
ee2ad00 HEAD@{13}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{14}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{15}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{16}: rebase (pick): E
6376ca0 HEAD@{17}: rebase (pick): D
c45f440 HEAD@{18}: rebase (pick): C
d9df450 HEAD@{19}: rebase (start): checkout B
ee2ad00 HEAD@{20}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{21}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{22}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{23}: rebase (pick): E
6376ca0 HEAD@{24}: rebase (pick): D
c45f440 HEAD@{25}: rebase (pick): C
d9df450 HEAD@{26}: rebase (start): checkout B
ee2ad00 HEAD@{27}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{28}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{29}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{30}: rebase (pick): E
be8f64f HEAD@{31}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{32}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{33}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{34}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{35}: rebase (pick): E
be8f64f HEAD@{36}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{37}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{38}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{39}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{40}: rebase (pick): E
be8f64f HEAD@{41}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{42}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{43}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{44}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{45}: rebase (pick): E
be8f64f HEAD@{46}: rebase (start): checkout main...side
ee2ad00 HEAD@{47}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{48}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{49}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{50}: rebase (pick): E
be8f64f HEAD@{51}: rebase (start): checkout main...side
ee2ad00 HEAD@{52}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{53}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{54}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{55}: rebase (pick): E
be8f64f HEAD@{56}: rebase (start): checkout main...side
ee2ad00 HEAD@{57}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{58}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{59}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{60}: rebase (pick): E
be8f64f HEAD@{61}: rebase (start): checkout main...
ee2ad00 HEAD@{62}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{63}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{64}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{65}: rebase (pick): E
be8f64f HEAD@{66}: rebase (start): checkout main...
ee2ad00 HEAD@{67}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{68}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{69}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{70}: rebase (pick): E
be8f64f HEAD@{71}: rebase (start): checkout main...
ee2ad00 HEAD@{72}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{73}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{74}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{75}: rebase (pick): E
6376ca0 HEAD@{76}: rebase (pick): D
c45f440 HEAD@{77}: rebase (pick): C
d9df450 HEAD@{78}: rebase (start): checkout B...
ee2ad00 HEAD@{79}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{80}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{81}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{82}: rebase (pick): E
6376ca0 HEAD@{83}: rebase (pick): D
c45f440 HEAD@{84}: rebase (pick): C
d9df450 HEAD@{85}: rebase (start): checkout B...
ee2ad00 HEAD@{86}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{87}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{88}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{89}: rebase (pick): E
6376ca0 HEAD@{90}: rebase (pick): D
c45f440 HEAD@{91}: rebase (pick): C
d9df450 HEAD@{92}: rebase (start): checkout B...
ee2ad00 HEAD@{93}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{94}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{95}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{96}: rebase (pick): E
6376ca0 HEAD@{97}: rebase (pick): D
c45f440 HEAD@{98}: rebase (pick): C
d9df450 HEAD@{99}: rebase (start): checkout B
ee2ad00 HEAD@{100}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{101}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{102}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{103}: rebase (pick): E
6376ca0 HEAD@{104}: rebase (pick): D
c45f440 HEAD@{105}: rebase (pick): C
d9df450 HEAD@{106}: rebase (start): checkout B
ee2ad00 HEAD@{107}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{108}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{109}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{110}: rebase (pick): E
6376ca0 HEAD@{111}: rebase (pick): D
c45f440 HEAD@{112}: rebase (pick): C
d9df450 HEAD@{113}: rebase (start): checkout B
ee2ad00 HEAD@{114}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{115}: checkout: moving from main to side
71ab28b HEAD@{116}: commit: F
be8f64f HEAD@{117}: checkout: moving from side to main
ee2ad00 HEAD@{118}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{119}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{120}: rebase (pick): E
be8f64f HEAD@{121}: rebase (start): checkout main...side
ee2ad00 HEAD@{122}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{123}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{124}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{125}: rebase (pick): E
be8f64f HEAD@{126}: rebase (start): checkout main...side
ee2ad00 HEAD@{127}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{128}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{129}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{130}: rebase (pick): E
be8f64f HEAD@{131}: rebase (start): checkout main...side
ee2ad00 HEAD@{132}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{133}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{134}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{135}: rebase (pick): E
be8f64f HEAD@{136}: rebase (start): checkout main...
ee2ad00 HEAD@{137}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{138}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{139}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{140}: rebase (pick): E
be8f64f HEAD@{141}: rebase (start): checkout main...
ee2ad00 HEAD@{142}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{143}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{144}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{145}: rebase (pick): E
be8f64f HEAD@{146}: rebase (start): checkout main...
ee2ad00 HEAD@{147}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{148}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{149}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{150}: rebase (pick): E
0e6d3b5 HEAD@{151}: rebase (pick): D
0103ecb HEAD@{152}: rebase (pick): C
d9df450 HEAD@{153}: rebase (start): checkout B...
ee2ad00 HEAD@{154}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{155}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{156}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{157}: rebase (pick): E
0e6d3b5 HEAD@{158}: rebase (pick): D
0103ecb HEAD@{159}: rebase (pick): C
d9df450 HEAD@{160}: rebase (start): checkout B...
ee2ad00 HEAD@{161}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{162}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{163}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{164}: rebase (pick): E
0e6d3b5 HEAD@{165}: rebase (pick): D
0103ecb HEAD@{166}: rebase (pick): C
d9df450 HEAD@{167}: rebase (start): checkout B...
ee2ad00 HEAD@{168}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{169}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{170}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{171}: rebase (pick): E
0e6d3b5 HEAD@{172}: rebase (pick): D
0103ecb HEAD@{173}: rebase (pick): C
d9df450 HEAD@{174}: rebase (start): checkout B
ee2ad00 HEAD@{175}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{176}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{177}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{178}: rebase (pick): E
0e6d3b5 HEAD@{179}: rebase (pick): D
0103ecb HEAD@{180}: rebase (pick): C
d9df450 HEAD@{181}: rebase (start): checkout B
ee2ad00 HEAD@{182}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{183}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{184}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{185}: rebase (pick): E
0e6d3b5 HEAD@{186}: rebase (pick): D
0103ecb HEAD@{187}: rebase (pick): C
d9df450 HEAD@{188}: rebase (start): checkout B
ee2ad00 HEAD@{189}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{190}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{191}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{192}: rebase (pick): E
be8f64f HEAD@{193}: rebase (start): checkout main
ee2ad00 HEAD@{194}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{195}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{196}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{197}: rebase (pick): E
be8f64f HEAD@{198}: rebase (start): checkout main
ee2ad00 HEAD@{199}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{200}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{201}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{202}: rebase (pick): E
be8f64f HEAD@{203}: rebase (start): checkout main
ee2ad00 HEAD@{204}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{205}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{206}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{207}: rebase (pick): E
be8f64f HEAD@{208}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{209}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{210}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{211}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{212}: rebase (pick): E
be8f64f HEAD@{213}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{214}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{215}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{216}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{217}: rebase (pick): E
be8f64f HEAD@{218}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{219}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{220}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{221}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{222}: rebase (pick): E
be8f64f HEAD@{223}: rebase (start): checkout refs/heads/main
ee2ad00 HEAD@{224}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{225}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{226}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{227}: rebase (pick): E
be8f64f HEAD@{228}: rebase (start): checkout refs/heads/main
ee2ad00 HEAD@{229}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{230}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{231}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{232}: rebase (pick): E
be8f64f HEAD@{233}: rebase (start): checkout refs/heads/main
ee2ad00 HEAD@{234}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{235}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{236}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{237}: rebase (pick): E
be8f64f HEAD@{238}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{239}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{240}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{241}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{242}: rebase (pick): E
be8f64f HEAD@{243}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{244}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{245}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{246}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{247}: rebase (pick): E
be8f64f HEAD@{248}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{249}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{250}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{251}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{252}: rebase (pick): E
be8f64f HEAD@{253}: rebase (start): checkout main...side
ee2ad00 HEAD@{254}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{255}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{256}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{257}: rebase (pick): E
be8f64f HEAD@{258}: rebase (start): checkout main...side
ee2ad00 HEAD@{259}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{260}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{261}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{262}: rebase (pick): E
be8f64f HEAD@{263}: rebase (start): checkout main...side
ee2ad00 HEAD@{264}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{265}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{266}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{267}: rebase (pick): E
be8f64f HEAD@{268}: rebase (start): checkout main...
ee2ad00 HEAD@{269}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{270}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{271}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{272}: rebase (pick): E
be8f64f HEAD@{273}: rebase (start): checkout main...
ee2ad00 HEAD@{274}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{275}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{276}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{277}: rebase (pick): E
be8f64f HEAD@{278}: rebase (start): checkout main...
ee2ad00 HEAD@{279}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{280}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{281}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{282}: rebase (pick): E
0e6d3b5 HEAD@{283}: rebase (pick): D
0103ecb HEAD@{284}: rebase (pick): C
d9df450 HEAD@{285}: rebase (start): checkout B...
ee2ad00 HEAD@{286}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{287}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{288}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{289}: rebase (pick): E
0e6d3b5 HEAD@{290}: rebase (pick): D
0103ecb HEAD@{291}: rebase (pick): C
d9df450 HEAD@{292}: rebase (start): checkout B...
ee2ad00 HEAD@{293}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{294}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{295}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{296}: rebase (pick): E
0e6d3b5 HEAD@{297}: rebase (pick): D
0103ecb HEAD@{298}: rebase (pick): C
d9df450 HEAD@{299}: rebase (start): checkout B...
ee2ad00 HEAD@{300}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{301}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{302}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{303}: rebase (pick): E
0e6d3b5 HEAD@{304}: rebase (pick): D
0103ecb HEAD@{305}: rebase (pick): C
d9df450 HEAD@{306}: rebase (start): checkout B
ee2ad00 HEAD@{307}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{308}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{309}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{310}: rebase (pick): E
0e6d3b5 HEAD@{311}: rebase (pick): D
0103ecb HEAD@{312}: rebase (pick): C
d9df450 HEAD@{313}: rebase (start): checkout B
ee2ad00 HEAD@{314}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{315}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{316}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{317}: rebase (pick): E
0e6d3b5 HEAD@{318}: rebase (pick): D
0103ecb HEAD@{319}: rebase (pick): C
d9df450 HEAD@{320}: rebase (start): checkout B
ee2ad00 HEAD@{321}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{322}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{323}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{324}: rebase (pick): E
be8f64f HEAD@{325}: rebase (start): checkout main
ee2ad00 HEAD@{326}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{327}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{328}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{329}: rebase (pick): E
be8f64f HEAD@{330}: rebase (start): checkout main
ee2ad00 HEAD@{331}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{332}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{333}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{334}: rebase (pick): E
be8f64f HEAD@{335}: rebase (start): checkout main
ee2ad00 HEAD@{336}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{337}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{338}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{339}: rebase (pick): E
be8f64f HEAD@{340}: rebase (start): checkout refs/heads/main
ee2ad00 HEAD@{341}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{342}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{343}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{344}: rebase (pick): E
be8f64f HEAD@{345}: rebase (start): checkout refs/heads/main
ee2ad00 HEAD@{346}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{347}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{348}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{349}: rebase (pick): E
be8f64f HEAD@{350}: rebase (start): checkout refs/heads/main
ee2ad00 HEAD@{351}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{352}: commit: E
be8f64f HEAD@{353}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{354}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{355}: rebase (start): checkout main...side
be8f64f HEAD@{356}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{357}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{358}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{359}: rebase (start): checkout main...side
be8f64f HEAD@{360}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{361}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{362}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{363}: rebase (start): checkout main...side
be8f64f HEAD@{364}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{365}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{366}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{367}: rebase (start): checkout main...
be8f64f HEAD@{368}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{369}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{370}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{371}: rebase (start): checkout main...
be8f64f HEAD@{372}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{373}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{374}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{375}: rebase (start): checkout main...
be8f64f HEAD@{376}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{377}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{378}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{379}: rebase (pick): D
e9ee69b HEAD@{380}: rebase (pick): C
d9df450 HEAD@{381}: rebase (start): checkout B...
be8f64f HEAD@{382}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{383}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{384}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{385}: rebase (pick): D
e9ee69b HEAD@{386}: rebase (pick): C
d9df450 HEAD@{387}: rebase (start): checkout B...
be8f64f HEAD@{388}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{389}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{390}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{391}: rebase (pick): D
e9ee69b HEAD@{392}: rebase (pick): C
d9df450 HEAD@{393}: rebase (start): checkout B...
be8f64f HEAD@{394}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{395}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{396}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{397}: rebase (pick): D
e9ee69b HEAD@{398}: rebase (pick): C
d9df450 HEAD@{399}: rebase (start): checkout B
be8f64f HEAD@{400}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{401}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{402}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{403}: rebase (pick): D
e9ee69b HEAD@{404}: rebase (pick): C
d9df450 HEAD@{405}: rebase (start): checkout B
be8f64f HEAD@{406}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{407}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{408}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{409}: rebase (pick): D
e9ee69b HEAD@{410}: rebase (pick): C
d9df450 HEAD@{411}: rebase (start): checkout B
be8f64f HEAD@{412}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{413}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{414}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{415}: rebase (start): checkout main
be8f64f HEAD@{416}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{417}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{418}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{419}: rebase (start): checkout main
be8f64f HEAD@{420}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{421}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{422}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{423}: rebase (start): checkout main
be8f64f HEAD@{424}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{425}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{426}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{427}: rebase (start): checkout refs/heads/main...side
be8f64f HEAD@{428}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{429}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{430}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{431}: rebase (start): checkout refs/heads/main...side
be8f64f HEAD@{432}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{433}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{434}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{435}: rebase (start): checkout refs/heads/main...side
be8f64f HEAD@{436}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{437}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{438}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{439}: rebase (start): checkout refs/heads/main
be8f64f HEAD@{440}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{441}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{442}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{443}: rebase (start): checkout refs/heads/main
be8f64f HEAD@{444}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{445}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{446}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{447}: rebase (start): checkout refs/heads/main
be8f64f HEAD@{448}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{449}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{450}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{451}: rebase (start): checkout refs/heads/main...side
be8f64f HEAD@{452}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{453}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{454}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{455}: rebase (start): checkout refs/heads/main...side
be8f64f HEAD@{456}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{457}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{458}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{459}: rebase (start): checkout refs/heads/main...side
be8f64f HEAD@{460}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{461}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{462}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{463}: rebase (start): checkout main...side
be8f64f HEAD@{464}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{465}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{466}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{467}: rebase (start): checkout main...side
be8f64f HEAD@{468}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{469}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{470}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{471}: rebase (start): checkout main...side
be8f64f HEAD@{472}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{473}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{474}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{475}: rebase (start): checkout main...
be8f64f HEAD@{476}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{477}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{478}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{479}: rebase (start): checkout main...
be8f64f HEAD@{480}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{481}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{482}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{483}: rebase (start): checkout main...
be8f64f HEAD@{484}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{485}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{486}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{487}: rebase (pick): D
e9ee69b HEAD@{488}: rebase (pick): C
d9df450 HEAD@{489}: rebase (start): checkout B...
be8f64f HEAD@{490}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{491}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{492}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{493}: rebase (pick): D
e9ee69b HEAD@{494}: rebase (pick): C
d9df450 HEAD@{495}: rebase (start): checkout B...
be8f64f HEAD@{496}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{497}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{498}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{499}: rebase (pick): D
e9ee69b HEAD@{500}: rebase (pick): C
d9df450 HEAD@{501}: rebase (start): checkout B...
be8f64f HEAD@{502}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{503}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{504}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{505}: rebase (pick): D
e9ee69b HEAD@{506}: rebase (pick): C
d9df450 HEAD@{507}: rebase (start): checkout B
be8f64f HEAD@{508}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{509}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{510}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{511}: rebase (pick): D
e9ee69b HEAD@{512}: rebase (pick): C
d9df450 HEAD@{513}: rebase (start): checkout B
be8f64f HEAD@{514}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{515}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{516}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{517}: rebase (pick): D
e9ee69b HEAD@{518}: rebase (pick): C
d9df450 HEAD@{519}: rebase (start): checkout B
be8f64f HEAD@{520}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{521}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{522}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{523}: rebase (start): checkout main
be8f64f HEAD@{524}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{525}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{526}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{527}: rebase (start): checkout main
be8f64f HEAD@{528}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{529}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{530}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{531}: rebase (start): checkout main
be8f64f HEAD@{532}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{533}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{534}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{535}: rebase (start): checkout refs/heads/main
be8f64f HEAD@{536}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{537}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{538}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{539}: rebase (start): checkout refs/heads/main
be8f64f HEAD@{540}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{541}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{542}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{543}: rebase (start): checkout refs/heads/main
be8f64f HEAD@{544}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{545}: checkout: moving from main to side
be8f64f HEAD@{546}: commit: D
35a8500 HEAD@{547}: commit: C
d9df450 HEAD@{548}: commit: B
0ddfaf1 HEAD@{549}: commit (initial): A
HEAD is now at ee2ad00 E
not ok 210 - git rebase --merge --fork-point --onto B... B with our and their changes is work with same HEAD # TODO known breakage
expecting success of 3432.211 'git rebase --merge --no-ff --fork-point --onto B... B with our and their changes is work with diff HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --fork-point --onto B... B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/3)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 211 - git rebase --merge --no-ff --fork-point --onto B... B with our and their changes is work with diff HEAD
checking known breakage of 3432.212 'git rebase --merge --fork-point --onto B... B (rebase.abbreviateCommands = true) with our and their changes is work with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --fork-point --onto B... B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
test_line_count: line count for actual !-gt 557
ee2ad00 HEAD@{0}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{1}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{2}: rebase (pick): E
6376ca0 HEAD@{3}: rebase (pick): D
c45f440 HEAD@{4}: rebase (pick): C
d9df450 HEAD@{5}: rebase (start): checkout B...
ee2ad00 HEAD@{6}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{7}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{8}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{9}: rebase (pick): E
6376ca0 HEAD@{10}: rebase (pick): D
c45f440 HEAD@{11}: rebase (pick): C
d9df450 HEAD@{12}: rebase (start): checkout B...
ee2ad00 HEAD@{13}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{14}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{15}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{16}: rebase (pick): E
6376ca0 HEAD@{17}: rebase (pick): D
c45f440 HEAD@{18}: rebase (pick): C
d9df450 HEAD@{19}: rebase (start): checkout B
ee2ad00 HEAD@{20}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{21}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{22}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{23}: rebase (pick): E
6376ca0 HEAD@{24}: rebase (pick): D
c45f440 HEAD@{25}: rebase (pick): C
d9df450 HEAD@{26}: rebase (start): checkout B
ee2ad00 HEAD@{27}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{28}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{29}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{30}: rebase (pick): E
6376ca0 HEAD@{31}: rebase (pick): D
c45f440 HEAD@{32}: rebase (pick): C
d9df450 HEAD@{33}: rebase (start): checkout B
ee2ad00 HEAD@{34}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{35}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{36}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{37}: rebase (pick): E
be8f64f HEAD@{38}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{39}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{40}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{41}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{42}: rebase (pick): E
be8f64f HEAD@{43}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{44}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{45}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{46}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{47}: rebase (pick): E
be8f64f HEAD@{48}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{49}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{50}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{51}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{52}: rebase (pick): E
be8f64f HEAD@{53}: rebase (start): checkout main...side
ee2ad00 HEAD@{54}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{55}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{56}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{57}: rebase (pick): E
be8f64f HEAD@{58}: rebase (start): checkout main...side
ee2ad00 HEAD@{59}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{60}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{61}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{62}: rebase (pick): E
be8f64f HEAD@{63}: rebase (start): checkout main...side
ee2ad00 HEAD@{64}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{65}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{66}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{67}: rebase (pick): E
be8f64f HEAD@{68}: rebase (start): checkout main...
ee2ad00 HEAD@{69}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{70}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{71}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{72}: rebase (pick): E
be8f64f HEAD@{73}: rebase (start): checkout main...
ee2ad00 HEAD@{74}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{75}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
769df17 HEAD@{76}: rebase (finish): returning to refs/heads/side
769df17 HEAD@{77}: rebase (pick): E
be8f64f HEAD@{78}: rebase (start): checkout main...
ee2ad00 HEAD@{79}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{80}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{81}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{82}: rebase (pick): E
6376ca0 HEAD@{83}: rebase (pick): D
c45f440 HEAD@{84}: rebase (pick): C
d9df450 HEAD@{85}: rebase (start): checkout B...
ee2ad00 HEAD@{86}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{87}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{88}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{89}: rebase (pick): E
6376ca0 HEAD@{90}: rebase (pick): D
c45f440 HEAD@{91}: rebase (pick): C
d9df450 HEAD@{92}: rebase (start): checkout B...
ee2ad00 HEAD@{93}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{94}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{95}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{96}: rebase (pick): E
6376ca0 HEAD@{97}: rebase (pick): D
c45f440 HEAD@{98}: rebase (pick): C
d9df450 HEAD@{99}: rebase (start): checkout B...
ee2ad00 HEAD@{100}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{101}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{102}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{103}: rebase (pick): E
6376ca0 HEAD@{104}: rebase (pick): D
c45f440 HEAD@{105}: rebase (pick): C
d9df450 HEAD@{106}: rebase (start): checkout B
ee2ad00 HEAD@{107}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{108}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{109}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{110}: rebase (pick): E
6376ca0 HEAD@{111}: rebase (pick): D
c45f440 HEAD@{112}: rebase (pick): C
d9df450 HEAD@{113}: rebase (start): checkout B
ee2ad00 HEAD@{114}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{115}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
a96c691 HEAD@{116}: rebase (finish): returning to refs/heads/side
a96c691 HEAD@{117}: rebase (pick): E
6376ca0 HEAD@{118}: rebase (pick): D
c45f440 HEAD@{119}: rebase (pick): C
d9df450 HEAD@{120}: rebase (start): checkout B
ee2ad00 HEAD@{121}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{122}: checkout: moving from main to side
71ab28b HEAD@{123}: commit: F
be8f64f HEAD@{124}: checkout: moving from side to main
ee2ad00 HEAD@{125}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{126}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{127}: rebase (pick): E
be8f64f HEAD@{128}: rebase (start): checkout main...side
ee2ad00 HEAD@{129}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{130}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{131}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{132}: rebase (pick): E
be8f64f HEAD@{133}: rebase (start): checkout main...side
ee2ad00 HEAD@{134}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{135}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{136}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{137}: rebase (pick): E
be8f64f HEAD@{138}: rebase (start): checkout main...side
ee2ad00 HEAD@{139}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{140}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{141}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{142}: rebase (pick): E
be8f64f HEAD@{143}: rebase (start): checkout main...
ee2ad00 HEAD@{144}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{145}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{146}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{147}: rebase (pick): E
be8f64f HEAD@{148}: rebase (start): checkout main...
ee2ad00 HEAD@{149}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{150}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{151}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{152}: rebase (pick): E
be8f64f HEAD@{153}: rebase (start): checkout main...
ee2ad00 HEAD@{154}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{155}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{156}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{157}: rebase (pick): E
0e6d3b5 HEAD@{158}: rebase (pick): D
0103ecb HEAD@{159}: rebase (pick): C
d9df450 HEAD@{160}: rebase (start): checkout B...
ee2ad00 HEAD@{161}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{162}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{163}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{164}: rebase (pick): E
0e6d3b5 HEAD@{165}: rebase (pick): D
0103ecb HEAD@{166}: rebase (pick): C
d9df450 HEAD@{167}: rebase (start): checkout B...
ee2ad00 HEAD@{168}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{169}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{170}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{171}: rebase (pick): E
0e6d3b5 HEAD@{172}: rebase (pick): D
0103ecb HEAD@{173}: rebase (pick): C
d9df450 HEAD@{174}: rebase (start): checkout B...
ee2ad00 HEAD@{175}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{176}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{177}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{178}: rebase (pick): E
0e6d3b5 HEAD@{179}: rebase (pick): D
0103ecb HEAD@{180}: rebase (pick): C
d9df450 HEAD@{181}: rebase (start): checkout B
ee2ad00 HEAD@{182}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{183}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{184}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{185}: rebase (pick): E
0e6d3b5 HEAD@{186}: rebase (pick): D
0103ecb HEAD@{187}: rebase (pick): C
d9df450 HEAD@{188}: rebase (start): checkout B
ee2ad00 HEAD@{189}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{190}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{191}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{192}: rebase (pick): E
0e6d3b5 HEAD@{193}: rebase (pick): D
0103ecb HEAD@{194}: rebase (pick): C
d9df450 HEAD@{195}: rebase (start): checkout B
ee2ad00 HEAD@{196}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{197}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{198}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{199}: rebase (pick): E
be8f64f HEAD@{200}: rebase (start): checkout main
ee2ad00 HEAD@{201}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{202}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{203}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{204}: rebase (pick): E
be8f64f HEAD@{205}: rebase (start): checkout main
ee2ad00 HEAD@{206}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{207}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{208}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{209}: rebase (pick): E
be8f64f HEAD@{210}: rebase (start): checkout main
ee2ad00 HEAD@{211}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{212}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{213}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{214}: rebase (pick): E
be8f64f HEAD@{215}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{216}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{217}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{218}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{219}: rebase (pick): E
be8f64f HEAD@{220}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{221}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{222}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{223}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{224}: rebase (pick): E
be8f64f HEAD@{225}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{226}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{227}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{228}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{229}: rebase (pick): E
be8f64f HEAD@{230}: rebase (start): checkout refs/heads/main
ee2ad00 HEAD@{231}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{232}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{233}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{234}: rebase (pick): E
be8f64f HEAD@{235}: rebase (start): checkout refs/heads/main
ee2ad00 HEAD@{236}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{237}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{238}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{239}: rebase (pick): E
be8f64f HEAD@{240}: rebase (start): checkout refs/heads/main
ee2ad00 HEAD@{241}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{242}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{243}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{244}: rebase (pick): E
be8f64f HEAD@{245}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{246}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{247}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{248}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{249}: rebase (pick): E
be8f64f HEAD@{250}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{251}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{252}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{253}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{254}: rebase (pick): E
be8f64f HEAD@{255}: rebase (start): checkout refs/heads/main...side
ee2ad00 HEAD@{256}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{257}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{258}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{259}: rebase (pick): E
be8f64f HEAD@{260}: rebase (start): checkout main...side
ee2ad00 HEAD@{261}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{262}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{263}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{264}: rebase (pick): E
be8f64f HEAD@{265}: rebase (start): checkout main...side
ee2ad00 HEAD@{266}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{267}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{268}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{269}: rebase (pick): E
be8f64f HEAD@{270}: rebase (start): checkout main...side
ee2ad00 HEAD@{271}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{272}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{273}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{274}: rebase (pick): E
be8f64f HEAD@{275}: rebase (start): checkout main...
ee2ad00 HEAD@{276}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{277}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{278}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{279}: rebase (pick): E
be8f64f HEAD@{280}: rebase (start): checkout main...
ee2ad00 HEAD@{281}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{282}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{283}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{284}: rebase (pick): E
be8f64f HEAD@{285}: rebase (start): checkout main...
ee2ad00 HEAD@{286}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{287}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{288}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{289}: rebase (pick): E
0e6d3b5 HEAD@{290}: rebase (pick): D
0103ecb HEAD@{291}: rebase (pick): C
d9df450 HEAD@{292}: rebase (start): checkout B...
ee2ad00 HEAD@{293}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{294}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{295}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{296}: rebase (pick): E
0e6d3b5 HEAD@{297}: rebase (pick): D
0103ecb HEAD@{298}: rebase (pick): C
d9df450 HEAD@{299}: rebase (start): checkout B...
ee2ad00 HEAD@{300}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{301}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{302}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{303}: rebase (pick): E
0e6d3b5 HEAD@{304}: rebase (pick): D
0103ecb HEAD@{305}: rebase (pick): C
d9df450 HEAD@{306}: rebase (start): checkout B...
ee2ad00 HEAD@{307}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{308}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{309}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{310}: rebase (pick): E
0e6d3b5 HEAD@{311}: rebase (pick): D
0103ecb HEAD@{312}: rebase (pick): C
d9df450 HEAD@{313}: rebase (start): checkout B
ee2ad00 HEAD@{314}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{315}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{316}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{317}: rebase (pick): E
0e6d3b5 HEAD@{318}: rebase (pick): D
0103ecb HEAD@{319}: rebase (pick): C
d9df450 HEAD@{320}: rebase (start): checkout B
ee2ad00 HEAD@{321}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{322}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
271ccd1 HEAD@{323}: rebase (finish): returning to refs/heads/side
271ccd1 HEAD@{324}: rebase (pick): E
0e6d3b5 HEAD@{325}: rebase (pick): D
0103ecb HEAD@{326}: rebase (pick): C
d9df450 HEAD@{327}: rebase (start): checkout B
ee2ad00 HEAD@{328}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{329}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{330}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{331}: rebase (pick): E
be8f64f HEAD@{332}: rebase (start): checkout main
ee2ad00 HEAD@{333}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{334}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{335}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{336}: rebase (pick): E
be8f64f HEAD@{337}: rebase (start): checkout main
ee2ad00 HEAD@{338}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{339}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{340}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{341}: rebase (pick): E
be8f64f HEAD@{342}: rebase (start): checkout main
ee2ad00 HEAD@{343}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{344}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{345}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{346}: rebase (pick): E
be8f64f HEAD@{347}: rebase (start): checkout refs/heads/main
ee2ad00 HEAD@{348}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{349}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{350}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{351}: rebase (pick): E
be8f64f HEAD@{352}: rebase (start): checkout refs/heads/main
ee2ad00 HEAD@{353}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{354}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{355}: rebase (finish): returning to refs/heads/side
ee2ad00 HEAD@{356}: rebase (pick): E
be8f64f HEAD@{357}: rebase (start): checkout refs/heads/main
ee2ad00 HEAD@{358}: reset: moving to ee2ad00ba5d6f9cffc4462b5b728f61485e3ec67
ee2ad00 HEAD@{359}: commit: E
be8f64f HEAD@{360}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{361}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{362}: rebase (start): checkout main...side
be8f64f HEAD@{363}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{364}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{365}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{366}: rebase (start): checkout main...side
be8f64f HEAD@{367}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{368}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{369}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{370}: rebase (start): checkout main...side
be8f64f HEAD@{371}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{372}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{373}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{374}: rebase (start): checkout main...
be8f64f HEAD@{375}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{376}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{377}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{378}: rebase (start): checkout main...
be8f64f HEAD@{379}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{380}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{381}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{382}: rebase (start): checkout main...
be8f64f HEAD@{383}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{384}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{385}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{386}: rebase (pick): D
e9ee69b HEAD@{387}: rebase (pick): C
d9df450 HEAD@{388}: rebase (start): checkout B...
be8f64f HEAD@{389}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{390}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{391}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{392}: rebase (pick): D
e9ee69b HEAD@{393}: rebase (pick): C
d9df450 HEAD@{394}: rebase (start): checkout B...
be8f64f HEAD@{395}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{396}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{397}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{398}: rebase (pick): D
e9ee69b HEAD@{399}: rebase (pick): C
d9df450 HEAD@{400}: rebase (start): checkout B...
be8f64f HEAD@{401}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{402}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{403}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{404}: rebase (pick): D
e9ee69b HEAD@{405}: rebase (pick): C
d9df450 HEAD@{406}: rebase (start): checkout B
be8f64f HEAD@{407}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{408}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{409}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{410}: rebase (pick): D
e9ee69b HEAD@{411}: rebase (pick): C
d9df450 HEAD@{412}: rebase (start): checkout B
be8f64f HEAD@{413}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{414}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{415}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{416}: rebase (pick): D
e9ee69b HEAD@{417}: rebase (pick): C
d9df450 HEAD@{418}: rebase (start): checkout B
be8f64f HEAD@{419}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{420}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{421}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{422}: rebase (start): checkout main
be8f64f HEAD@{423}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{424}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{425}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{426}: rebase (start): checkout main
be8f64f HEAD@{427}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{428}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{429}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{430}: rebase (start): checkout main
be8f64f HEAD@{431}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{432}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{433}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{434}: rebase (start): checkout refs/heads/main...side
be8f64f HEAD@{435}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{436}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{437}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{438}: rebase (start): checkout refs/heads/main...side
be8f64f HEAD@{439}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{440}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{441}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{442}: rebase (start): checkout refs/heads/main...side
be8f64f HEAD@{443}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{444}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{445}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{446}: rebase (start): checkout refs/heads/main
be8f64f HEAD@{447}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{448}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{449}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{450}: rebase (start): checkout refs/heads/main
be8f64f HEAD@{451}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{452}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{453}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{454}: rebase (start): checkout refs/heads/main
be8f64f HEAD@{455}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{456}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{457}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{458}: rebase (start): checkout refs/heads/main...side
be8f64f HEAD@{459}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{460}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{461}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{462}: rebase (start): checkout refs/heads/main...side
be8f64f HEAD@{463}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{464}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{465}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{466}: rebase (start): checkout refs/heads/main...side
be8f64f HEAD@{467}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{468}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{469}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{470}: rebase (start): checkout main...side
be8f64f HEAD@{471}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{472}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{473}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{474}: rebase (start): checkout main...side
be8f64f HEAD@{475}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{476}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{477}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{478}: rebase (start): checkout main...side
be8f64f HEAD@{479}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{480}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{481}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{482}: rebase (start): checkout main...
be8f64f HEAD@{483}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{484}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{485}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{486}: rebase (start): checkout main...
be8f64f HEAD@{487}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{488}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{489}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{490}: rebase (start): checkout main...
be8f64f HEAD@{491}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{492}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{493}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{494}: rebase (pick): D
e9ee69b HEAD@{495}: rebase (pick): C
d9df450 HEAD@{496}: rebase (start): checkout B...
be8f64f HEAD@{497}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{498}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{499}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{500}: rebase (pick): D
e9ee69b HEAD@{501}: rebase (pick): C
d9df450 HEAD@{502}: rebase (start): checkout B...
be8f64f HEAD@{503}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{504}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{505}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{506}: rebase (pick): D
e9ee69b HEAD@{507}: rebase (pick): C
d9df450 HEAD@{508}: rebase (start): checkout B...
be8f64f HEAD@{509}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{510}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{511}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{512}: rebase (pick): D
e9ee69b HEAD@{513}: rebase (pick): C
d9df450 HEAD@{514}: rebase (start): checkout B
be8f64f HEAD@{515}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{516}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{517}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{518}: rebase (pick): D
e9ee69b HEAD@{519}: rebase (pick): C
d9df450 HEAD@{520}: rebase (start): checkout B
be8f64f HEAD@{521}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{522}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
9405860 HEAD@{523}: rebase (finish): returning to refs/heads/side
9405860 HEAD@{524}: rebase (pick): D
e9ee69b HEAD@{525}: rebase (pick): C
d9df450 HEAD@{526}: rebase (start): checkout B
be8f64f HEAD@{527}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{528}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{529}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{530}: rebase (start): checkout main
be8f64f HEAD@{531}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{532}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{533}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{534}: rebase (start): checkout main
be8f64f HEAD@{535}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{536}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{537}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{538}: rebase (start): checkout main
be8f64f HEAD@{539}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{540}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{541}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{542}: rebase (start): checkout refs/heads/main
be8f64f HEAD@{543}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{544}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{545}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{546}: rebase (start): checkout refs/heads/main
be8f64f HEAD@{547}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{548}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{549}: rebase (finish): returning to refs/heads/side
be8f64f HEAD@{550}: rebase (start): checkout refs/heads/main
be8f64f HEAD@{551}: reset: moving to be8f64ffad20e1c23faacd732a7ba726ee6f156d
be8f64f HEAD@{552}: checkout: moving from main to side
be8f64f HEAD@{553}: commit: D
35a8500 HEAD@{554}: commit: C
d9df450 HEAD@{555}: commit: B
0ddfaf1 HEAD@{556}: commit (initial): A
HEAD is now at ee2ad00 E
not ok 212 - git rebase --merge --fork-point --onto B... B (rebase.abbreviateCommands = true) with our and their changes is work with same HEAD # TODO known breakage
expecting success of 3432.213 'git rebase --merge --no-ff --fork-point --onto B... B (rebase.abbreviateCommands = true) with our and their changes is work with diff HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --fork-point --onto B... B >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/3)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 213 - git rebase --merge --no-ff --fork-point --onto B... B (rebase.abbreviateCommands = true) with our and their changes is work with diff HEAD
expecting success of 3432.214 'git rebase --apply --fork-point --onto main... main with our and their changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --fork-point --onto main... main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 214 - git rebase --apply --fork-point --onto main... main with our and their changes is noop with same HEAD
expecting success of 3432.215 'git rebase --apply --no-ff --fork-point --onto main... main with our and their changes is work with diff HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --no-ff --fork-point --onto main... main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 215 - git rebase --apply --no-ff --fork-point --onto main... main with our and their changes is work with diff HEAD
expecting success of 3432.216 'git rebase --merge --fork-point --onto main... main with our and their changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --fork-point --onto main... main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 216 - git rebase --merge --fork-point --onto main... main with our and their changes is noop with same HEAD
expecting success of 3432.217 'git rebase --merge --no-ff --fork-point --onto main... main with our and their changes is work with diff HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --fork-point --onto main... main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 217 - git rebase --merge --no-ff --fork-point --onto main... main with our and their changes is work with diff HEAD
expecting success of 3432.218 'git rebase --merge --fork-point --onto main... main (rebase.abbreviateCommands = true) with our and their changes is noop with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --fork-point --onto main... main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 218 - git rebase --merge --fork-point --onto main... main (rebase.abbreviateCommands = true) with our and their changes is noop with same HEAD
expecting success of 3432.219 'git rebase --merge --no-ff --fork-point --onto main... main (rebase.abbreviateCommands = true) with our and their changes is work with diff HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --fork-point --onto main... main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 219 - git rebase --merge --no-ff --fork-point --onto main... main (rebase.abbreviateCommands = true) with our and their changes is work with diff HEAD
expecting success of 3432.220 'git rebase --apply --fork-point --keep-base main with our and their changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --fork-point --keep-base main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 220 - git rebase --apply --fork-point --keep-base main with our and their changes is noop with same HEAD
expecting success of 3432.221 'git rebase --apply --no-ff --fork-point --keep-base main with our and their changes is work with diff HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --apply --no-ff --fork-point --keep-base main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 221 - git rebase --apply --no-ff --fork-point --keep-base main with our and their changes is work with diff HEAD
expecting success of 3432.222 'git rebase --merge --fork-point --keep-base main with our and their changes is noop with same HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --fork-point --keep-base main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 222 - git rebase --merge --fork-point --keep-base main with our and their changes is noop with same HEAD
expecting success of 3432.223 'git rebase --merge --no-ff --fork-point --keep-base main with our and their changes is work with diff HEAD':
if test 0 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --fork-point --keep-base main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 223 - git rebase --merge --no-ff --fork-point --keep-base main with our and their changes is work with diff HEAD
expecting success of 3432.224 'git rebase --merge --fork-point --keep-base main (rebase.abbreviateCommands = true) with our and their changes is noop with same HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --fork-point --keep-base main >stdout &&
git reflog HEAD >actual &&
if test noop = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test noop = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test same = same
then
test_cmp_rev $oldhead $newhead
elif test same = diff
then
test_cmp_rev ! $oldhead $newhead
fi
HEAD is now at ee2ad00 E
ok 224 - git rebase --merge --fork-point --keep-base main (rebase.abbreviateCommands = true) with our and their changes is noop with same HEAD
expecting success of 3432.225 'git rebase --merge --no-ff --fork-point --keep-base main (rebase.abbreviateCommands = true) with our and their changes is work with diff HEAD':
if test 1 -eq 1
then
test_config rebase.abbreviateCommands true
fi &&
oldhead=$(git rev-parse HEAD) &&
test_when_finished 'git reset --hard $oldhead' &&
git reflog HEAD >expect &&
git rebase --merge --no-ff --fork-point --keep-base main >stdout &&
git reflog HEAD >actual &&
if test work = work
then
old=$(wc -l <expect) &&
test_line_count '-gt' $old actual
elif test work = noop
then
test_cmp expect actual
fi &&
newhead=$(git rev-parse HEAD) &&
if test diff = same
then
test_cmp_rev $oldhead $newhead
elif test diff = diff
then
test_cmp_rev ! $oldhead $newhead
fi
Rebasing (1/1)
Successfully rebased and updated refs/heads/side.
HEAD is now at ee2ad00 E
ok 225 - git rebase --merge --no-ff --fork-point --keep-base main (rebase.abbreviateCommands = true) with our and their changes is work with diff HEAD
# still have 6 known breakage(s)
# passed all remaining 219 test(s)
1..225
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3514-cherry-pick-revert-gpg.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3514-cherry-pick-revert-gpg/.git/
checking prerequisite: GPG
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-GPG" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-GPG" &&
gpg_version=$(gpg --version 2>&1)
test $? != 127 || exit 1
# As said here: http://www.gnupg.org/documentation/faqs.html#q6.19
# the gpg version 1.0.6 did not parse trust packets correctly, so for
# that version, creation of signed tags using the generated key fails.
case "$gpg_version" in
"gpg (GnuPG) 1.0.6"*)
say "Your version of gpg (1.0.6) is too buggy for testing"
exit 1
;;
*)
# Available key info:
# * Type DSA and Elgamal, size 2048 bits, no expiration date,
# name and email: C O Mitter <committer@example.com>
# * Type RSA, size 2048 bits, no expiration date,
# name and email: Eris Discordia <discord@example.net>
# No password given, to enable non-interactive operation.
# To generate new key:
# gpg --homedir /tmp/gpghome --gen-key
# To write armored exported key to keyring:
# gpg --homedir /tmp/gpghome --export-secret-keys \
# --armor 0xDEADBEEF >> lib-gpg/keyring.gpg
# gpg --homedir /tmp/gpghome --export \
# --armor 0xDEADBEEF >> lib-gpg/keyring.gpg
# To export ownertrust:
# gpg --homedir /tmp/gpghome --export-ownertrust \
# > lib-gpg/ownertrust
mkdir "$GNUPGHOME" &&
chmod 0700 "$GNUPGHOME" &&
(gpgconf --kill all || : ) &&
gpg --homedir "${GNUPGHOME}" --import \
"$TEST_DIRECTORY"/lib-gpg/keyring.gpg &&
gpg --homedir "${GNUPGHOME}" --import-ownertrust \
"$TEST_DIRECTORY"/lib-gpg/ownertrust &&
gpg --homedir "${GNUPGHOME}" </dev/null >/dev/null \
--sign -u committer@example.com
;;
esac
)
gpg: keybox '/<<PKGBUILDDIR>>/t/trash directory.t3514-cherry-pick-revert-gpg/gpghome/pubring.kbx' created
gpg: /<<PKGBUILDDIR>>/t/trash directory.t3514-cherry-pick-revert-gpg/gpghome/trustdb.gpg: trustdb created
gpg: key 13B6F51ECDDE430D: public key "C O Mitter <committer@example.com>" imported
gpg: key 13B6F51ECDDE430D: secret key imported
gpg: key 61092E85B7227189: public key "Eris Discordia <discord@example.net>" imported
gpg: key 61092E85B7227189: secret key imported
gpg: key 13B6F51ECDDE430D: "C O Mitter <committer@example.com>" not changed
gpg: key 61092E85B7227189: "Eris Discordia <discord@example.net>" not changed
gpg: Total number processed: 4
gpg: imported: 2
gpg: unchanged: 2
gpg: secret keys read: 2
gpg: secret keys imported: 2
gpg: inserting ownertrust of 6
gpg: inserting ownertrust of 3
prerequisite GPG ok
expecting success of 3514.1 'setup':
test_commit one &&
git switch -c side &&
test_commit side1 &&
test_commit side2 &&
git switch - &&
test_commit two &&
test_commit three &&
test_commit tip
[master (root-commit) d79ce16] one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 one.t
Switched to a new branch 'side'
[side 280f728] side1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 side1.t
[side 2e6a05f] side2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 side2.t
Switched to branch 'master'
[master 021da12] two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 two.t
[master a0dcc8f] three
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 three.t
[master ef70922] tip
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 tip.t
ok 1 - setup
expecting success of 3514.2 'cherry-pick side with commit.gpgsign=false won't sign commit':
git reset --hard tip &&
git config commit.gpgsign false &&
git cherry-pick side &&
git rev-list tip.. >rev-list &&
test_must_fail git verify-commit $(cat rev-list)
HEAD is now at ef70922 tip
[master caeb198] side2
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 side2.t
ok 2 - cherry-pick side with commit.gpgsign=false won't sign commit
expecting success of 3514.3 'cherry-pick ..side with commit.gpgsign=false won't sign commit':
git reset --hard tip &&
git config commit.gpgsign false &&
git cherry-pick ..side &&
git rev-list tip.. >rev-list &&
test_must_fail git verify-commit $(cat rev-list)
HEAD is now at ef70922 tip
[master 6846999] side1
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 side1.t
[master 14b3cff] side2
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 side2.t
ok 3 - cherry-pick ..side with commit.gpgsign=false won't sign commit
expecting success of 3514.4 'cherry-pick side with commit.gpgsign=true will sign commit':
git reset --hard tip &&
git config commit.gpgsign true &&
git cherry-pick side &&
git rev-list tip.. >rev-list &&
git verify-commit $(cat rev-list)
HEAD is now at ef70922 tip
[master 1a4cf60] side2
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 side2.t
gpg: Signature made Mon Oct 9 02:19:25 2023 UTC
gpg: using DSA key 73D758744BE721698EC54E8713B6F51ECDDE430D
gpg: issuer "committer@example.com"
gpg: checking the trustdb
gpg: marginals needed: 3 completes needed: 1 trust model: pgp
gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: Good signature from "C O Mitter <committer@example.com>" [ultimate]
ok 4 - cherry-pick side with commit.gpgsign=true will sign commit
expecting success of 3514.5 'cherry-pick ..side with commit.gpgsign=true will sign commit':
git reset --hard tip &&
git config commit.gpgsign true &&
git cherry-pick ..side &&
git rev-list tip.. >rev-list &&
git verify-commit $(cat rev-list)
HEAD is now at ef70922 tip
[master 5ce54c3] side1
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 side1.t
[master 4384e92] side2
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 side2.t
gpg: Signature made Mon Oct 9 02:19:25 2023 UTC
gpg: using DSA key 73D758744BE721698EC54E8713B6F51ECDDE430D
gpg: issuer "committer@example.com"
gpg: Good signature from "C O Mitter <committer@example.com>" [ultimate]
gpg: Signature made Mon Oct 9 02:19:25 2023 UTC
gpg: using DSA key 73D758744BE721698EC54E8713B6F51ECDDE430D
gpg: issuer "committer@example.com"
gpg: Good signature from "C O Mitter <committer@example.com>" [ultimate]
ok 5 - cherry-pick ..side with commit.gpgsign=true will sign commit
expecting success of 3514.6 'cherry-pick --no-gpg-sign side with commit.gpgsign=true won't sign commit':
git reset --hard tip &&
git config commit.gpgsign true &&
git cherry-pick --no-gpg-sign side &&
git rev-list tip.. >rev-list &&
test_must_fail git verify-commit $(cat rev-list)
HEAD is now at ef70922 tip
[master caeb198] side2
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 side2.t
ok 6 - cherry-pick --no-gpg-sign side with commit.gpgsign=true won't sign commit
expecting success of 3514.7 'cherry-pick --no-gpg-sign ..side with commit.gpgsign=true won't sign commit':
git reset --hard tip &&
git config commit.gpgsign true &&
git cherry-pick --no-gpg-sign ..side &&
git rev-list tip.. >rev-list &&
test_must_fail git verify-commit $(cat rev-list)
HEAD is now at ef70922 tip
[master 6846999] side1
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 side1.t
[master 14b3cff] side2
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 side2.t
ok 7 - cherry-pick --no-gpg-sign ..side with commit.gpgsign=true won't sign commit
expecting success of 3514.8 'cherry-pick --gpg-sign --no-gpg-sign side with commit.gpgsign=true won't sign commit':
git reset --hard tip &&
git config commit.gpgsign true &&
git cherry-pick --gpg-sign --no-gpg-sign side &&
git rev-list tip.. >rev-list &&
test_must_fail git verify-commit $(cat rev-list)
HEAD is now at ef70922 tip
[master caeb198] side2
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 side2.t
ok 8 - cherry-pick --gpg-sign --no-gpg-sign side with commit.gpgsign=true won't sign commit
expecting success of 3514.9 'cherry-pick --gpg-sign --no-gpg-sign ..side with commit.gpgsign=true won't sign commit':
git reset --hard tip &&
git config commit.gpgsign true &&
git cherry-pick --gpg-sign --no-gpg-sign ..side &&
git rev-list tip.. >rev-list &&
test_must_fail git verify-commit $(cat rev-list)
HEAD is now at ef70922 tip
[master 6846999] side1
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 side1.t
[master 14b3cff] side2
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 side2.t
ok 9 - cherry-pick --gpg-sign --no-gpg-sign ..side with commit.gpgsign=true won't sign commit
expecting success of 3514.10 'cherry-pick --no-gpg-sign --gpg-sign side with commit.gpgsign=false will sign commit':
git reset --hard tip &&
git config commit.gpgsign false &&
git cherry-pick --no-gpg-sign --gpg-sign side &&
git rev-list tip.. >rev-list &&
git verify-commit $(cat rev-list)
HEAD is now at ef70922 tip
[master dbbb5cc] side2
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 side2.t
gpg: Signature made Mon Oct 9 02:19:26 2023 UTC
gpg: using DSA key 73D758744BE721698EC54E8713B6F51ECDDE430D
gpg: issuer "committer@example.com"
gpg: Good signature from "C O Mitter <committer@example.com>" [ultimate]
ok 10 - cherry-pick --no-gpg-sign --gpg-sign side with commit.gpgsign=false will sign commit
expecting success of 3514.11 'cherry-pick --no-gpg-sign --gpg-sign ..side with commit.gpgsign=false will sign commit':
git reset --hard tip &&
git config commit.gpgsign false &&
git cherry-pick --no-gpg-sign --gpg-sign ..side &&
git rev-list tip.. >rev-list &&
git verify-commit $(cat rev-list)
HEAD is now at ef70922 tip
[master 96ce65c] side1
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 side1.t
[master 4ebce3c] side2
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 side2.t
gpg: Signature made Mon Oct 9 02:19:26 2023 UTC
gpg: using DSA key 73D758744BE721698EC54E8713B6F51ECDDE430D
gpg: issuer "committer@example.com"
gpg: Good signature from "C O Mitter <committer@example.com>" [ultimate]
gpg: Signature made Mon Oct 9 02:19:26 2023 UTC
gpg: using DSA key 73D758744BE721698EC54E8713B6F51ECDDE430D
gpg: issuer "committer@example.com"
gpg: Good signature from "C O Mitter <committer@example.com>" [ultimate]
ok 11 - cherry-pick --no-gpg-sign --gpg-sign ..side with commit.gpgsign=false will sign commit
expecting success of 3514.12 'cherry-pick --edit side with commit.gpgsign=true will sign commit':
git reset --hard tip &&
git config commit.gpgsign true &&
git cherry-pick --edit side &&
git rev-list tip.. >rev-list &&
git verify-commit $(cat rev-list)
HEAD is now at ef70922 tip
[master dbbb5cc] side2
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 side2.t
gpg: Signature made Mon Oct 9 02:19:26 2023 UTC
gpg: using DSA key 73D758744BE721698EC54E8713B6F51ECDDE430D
gpg: issuer "committer@example.com"
gpg: Good signature from "C O Mitter <committer@example.com>" [ultimate]
ok 12 - cherry-pick --edit side with commit.gpgsign=true will sign commit
expecting success of 3514.13 'cherry-pick --edit ..side with commit.gpgsign=true will sign commit':
git reset --hard tip &&
git config commit.gpgsign true &&
git cherry-pick --edit ..side &&
git rev-list tip.. >rev-list &&
git verify-commit $(cat rev-list)
HEAD is now at ef70922 tip
[master 96ce65c] side1
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 side1.t
[master 4ebce3c] side2
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 side2.t
gpg: Signature made Mon Oct 9 02:19:26 2023 UTC
gpg: using DSA key 73D758744BE721698EC54E8713B6F51ECDDE430D
gpg: issuer "committer@example.com"
gpg: Good signature from "C O Mitter <committer@example.com>" [ultimate]
gpg: Signature made Mon Oct 9 02:19:26 2023 UTC
gpg: using DSA key 73D758744BE721698EC54E8713B6F51ECDDE430D
gpg: issuer "committer@example.com"
gpg: Good signature from "C O Mitter <committer@example.com>" [ultimate]
ok 13 - cherry-pick --edit ..side with commit.gpgsign=true will sign commit
expecting success of 3514.14 'cherry-pick --edit --no-gpg-sign side with commit.gpgsign=true won't sign commit':
git reset --hard tip &&
git config commit.gpgsign true &&
git cherry-pick --edit --no-gpg-sign side &&
git rev-list tip.. >rev-list &&
test_must_fail git verify-commit $(cat rev-list)
HEAD is now at ef70922 tip
[master caeb198] side2
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 side2.t
ok 14 - cherry-pick --edit --no-gpg-sign side with commit.gpgsign=true won't sign commit
expecting success of 3514.15 'cherry-pick --edit --no-gpg-sign ..side with commit.gpgsign=true won't sign commit':
git reset --hard tip &&
git config commit.gpgsign true &&
git cherry-pick --edit --no-gpg-sign ..side &&
git rev-list tip.. >rev-list &&
test_must_fail git verify-commit $(cat rev-list)
HEAD is now at ef70922 tip
[master 6846999] side1
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 side1.t
[master 14b3cff] side2
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 side2.t
ok 15 - cherry-pick --edit --no-gpg-sign ..side with commit.gpgsign=true won't sign commit
expecting success of 3514.16 'cherry-pick --edit --gpg-sign --no-gpg-sign side with commit.gpgsign=true won't sign commit':
git reset --hard tip &&
git config commit.gpgsign true &&
git cherry-pick --edit --gpg-sign --no-gpg-sign side &&
git rev-list tip.. >rev-list &&
test_must_fail git verify-commit $(cat rev-list)
HEAD is now at ef70922 tip
[master caeb198] side2
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 side2.t
ok 16 - cherry-pick --edit --gpg-sign --no-gpg-sign side with commit.gpgsign=true won't sign commit
expecting success of 3514.17 'cherry-pick --edit --gpg-sign --no-gpg-sign ..side with commit.gpgsign=true won't sign commit':
git reset --hard tip &&
git config commit.gpgsign true &&
git cherry-pick --edit --gpg-sign --no-gpg-sign ..side &&
git rev-list tip.. >rev-list &&
test_must_fail git verify-commit $(cat rev-list)
HEAD is now at ef70922 tip
[master 6846999] side1
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 side1.t
[master 14b3cff] side2
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 side2.t
ok 17 - cherry-pick --edit --gpg-sign --no-gpg-sign ..side with commit.gpgsign=true won't sign commit
expecting success of 3514.18 'cherry-pick --edit --no-gpg-sign --gpg-sign side with commit.gpgsign=false will sign commit':
git reset --hard tip &&
git config commit.gpgsign false &&
git cherry-pick --edit --no-gpg-sign --gpg-sign side &&
git rev-list tip.. >rev-list &&
git verify-commit $(cat rev-list)
HEAD is now at ef70922 tip
[master dbbb5cc] side2
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 side2.t
gpg: Signature made Mon Oct 9 02:19:26 2023 UTC
gpg: using DSA key 73D758744BE721698EC54E8713B6F51ECDDE430D
gpg: issuer "committer@example.com"
gpg: Good signature from "C O Mitter <committer@example.com>" [ultimate]
ok 18 - cherry-pick --edit --no-gpg-sign --gpg-sign side with commit.gpgsign=false will sign commit
expecting success of 3514.19 'cherry-pick --edit --no-gpg-sign --gpg-sign ..side with commit.gpgsign=false will sign commit':
git reset --hard tip &&
git config commit.gpgsign false &&
git cherry-pick --edit --no-gpg-sign --gpg-sign ..side &&
git rev-list tip.. >rev-list &&
git verify-commit $(cat rev-list)
HEAD is now at ef70922 tip
[master 96ce65c] side1
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 side1.t
[master 4ebce3c] side2
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 side2.t
gpg: Signature made Mon Oct 9 02:19:26 2023 UTC
gpg: using DSA key 73D758744BE721698EC54E8713B6F51ECDDE430D
gpg: issuer "committer@example.com"
gpg: Good signature from "C O Mitter <committer@example.com>" [ultimate]
gpg: Signature made Mon Oct 9 02:19:26 2023 UTC
gpg: using DSA key 73D758744BE721698EC54E8713B6F51ECDDE430D
gpg: issuer "committer@example.com"
gpg: Good signature from "C O Mitter <committer@example.com>" [ultimate]
ok 19 - cherry-pick --edit --no-gpg-sign --gpg-sign ..side with commit.gpgsign=false will sign commit
expecting success of 3514.20 'revert --edit HEAD with commit.gpgsign=false won't sign commit':
git reset --hard tip &&
git config commit.gpgsign false &&
git revert --edit HEAD &&
git rev-list tip.. >rev-list &&
test_must_fail git verify-commit $(cat rev-list)
HEAD is now at ef70922 tip
[master ef14522] Revert "tip"
Author: A U Thor <author@example.com>
1 file changed, 1 deletion(-)
delete mode 100644 tip.t
ok 20 - revert --edit HEAD with commit.gpgsign=false won't sign commit
expecting success of 3514.21 'revert --edit two.. with commit.gpgsign=false won't sign commit':
git reset --hard tip &&
git config commit.gpgsign false &&
git revert --edit two.. &&
git rev-list tip.. >rev-list &&
test_must_fail git verify-commit $(cat rev-list)
HEAD is now at ef70922 tip
[master ef14522] Revert "tip"
Author: A U Thor <author@example.com>
1 file changed, 1 deletion(-)
delete mode 100644 tip.t
[master 89c0e70] Revert "three"
Author: A U Thor <author@example.com>
1 file changed, 1 deletion(-)
delete mode 100644 three.t
ok 21 - revert --edit two.. with commit.gpgsign=false won't sign commit
expecting success of 3514.22 'revert --edit HEAD with commit.gpgsign=true will sign commit':
git reset --hard tip &&
git config commit.gpgsign true &&
git revert --edit HEAD &&
git rev-list tip.. >rev-list &&
git verify-commit $(cat rev-list)
HEAD is now at ef70922 tip
[master e1ea102] Revert "tip"
Author: A U Thor <author@example.com>
1 file changed, 1 deletion(-)
delete mode 100644 tip.t
gpg: Signature made Mon Oct 9 02:19:26 2023 UTC
gpg: using DSA key 73D758744BE721698EC54E8713B6F51ECDDE430D
gpg: issuer "committer@example.com"
gpg: Good signature from "C O Mitter <committer@example.com>" [ultimate]
ok 22 - revert --edit HEAD with commit.gpgsign=true will sign commit
expecting success of 3514.23 'revert --edit two.. with commit.gpgsign=true will sign commit':
git reset --hard tip &&
git config commit.gpgsign true &&
git revert --edit two.. &&
git rev-list tip.. >rev-list &&
git verify-commit $(cat rev-list)
HEAD is now at ef70922 tip
[master e1ea102] Revert "tip"
Author: A U Thor <author@example.com>
1 file changed, 1 deletion(-)
delete mode 100644 tip.t
[master 53afa58] Revert "three"
Author: A U Thor <author@example.com>
1 file changed, 1 deletion(-)
delete mode 100644 three.t
gpg: Signature made Mon Oct 9 02:19:26 2023 UTC
gpg: using DSA key 73D758744BE721698EC54E8713B6F51ECDDE430D
gpg: issuer "committer@example.com"
gpg: Good signature from "C O Mitter <committer@example.com>" [ultimate]
gpg: Signature made Mon Oct 9 02:19:26 2023 UTC
gpg: using DSA key 73D758744BE721698EC54E8713B6F51ECDDE430D
gpg: issuer "committer@example.com"
gpg: Good signature from "C O Mitter <committer@example.com>" [ultimate]
ok 23 - revert --edit two.. with commit.gpgsign=true will sign commit
expecting success of 3514.24 'revert --edit --no-gpg-sign HEAD with commit.gpgsign=true won't sign commit':
git reset --hard tip &&
git config commit.gpgsign true &&
git revert --edit --no-gpg-sign HEAD &&
git rev-list tip.. >rev-list &&
test_must_fail git verify-commit $(cat rev-list)
HEAD is now at ef70922 tip
[master ef14522] Revert "tip"
Author: A U Thor <author@example.com>
1 file changed, 1 deletion(-)
delete mode 100644 tip.t
ok 24 - revert --edit --no-gpg-sign HEAD with commit.gpgsign=true won't sign commit
expecting success of 3514.25 'revert --edit --no-gpg-sign two.. with commit.gpgsign=true won't sign commit':
git reset --hard tip &&
git config commit.gpgsign true &&
git revert --edit --no-gpg-sign two.. &&
git rev-list tip.. >rev-list &&
test_must_fail git verify-commit $(cat rev-list)
HEAD is now at ef70922 tip
[master ef14522] Revert "tip"
Author: A U Thor <author@example.com>
1 file changed, 1 deletion(-)
delete mode 100644 tip.t
[master 89c0e70] Revert "three"
Author: A U Thor <author@example.com>
1 file changed, 1 deletion(-)
delete mode 100644 three.t
ok 25 - revert --edit --no-gpg-sign two.. with commit.gpgsign=true won't sign commit
expecting success of 3514.26 'revert --edit --gpg-sign --no-gpg-sign HEAD with commit.gpgsign=true won't sign commit':
git reset --hard tip &&
git config commit.gpgsign true &&
git revert --edit --gpg-sign --no-gpg-sign HEAD &&
git rev-list tip.. >rev-list &&
test_must_fail git verify-commit $(cat rev-list)
HEAD is now at ef70922 tip
[master ef14522] Revert "tip"
Author: A U Thor <author@example.com>
1 file changed, 1 deletion(-)
delete mode 100644 tip.t
ok 26 - revert --edit --gpg-sign --no-gpg-sign HEAD with commit.gpgsign=true won't sign commit
expecting success of 3514.27 'revert --edit --gpg-sign --no-gpg-sign two.. with commit.gpgsign=true won't sign commit':
git reset --hard tip &&
git config commit.gpgsign true &&
git revert --edit --gpg-sign --no-gpg-sign two.. &&
git rev-list tip.. >rev-list &&
test_must_fail git verify-commit $(cat rev-list)
HEAD is now at ef70922 tip
[master ef14522] Revert "tip"
Author: A U Thor <author@example.com>
1 file changed, 1 deletion(-)
delete mode 100644 tip.t
[master 89c0e70] Revert "three"
Author: A U Thor <author@example.com>
1 file changed, 1 deletion(-)
delete mode 100644 three.t
ok 27 - revert --edit --gpg-sign --no-gpg-sign two.. with commit.gpgsign=true won't sign commit
expecting success of 3514.28 'revert --edit --no-gpg-sign --gpg-sign HEAD with commit.gpgsign=false will sign commit':
git reset --hard tip &&
git config commit.gpgsign false &&
git revert --edit --no-gpg-sign --gpg-sign HEAD &&
git rev-list tip.. >rev-list &&
git verify-commit $(cat rev-list)
HEAD is now at ef70922 tip
[master 9ac0914] Revert "tip"
Author: A U Thor <author@example.com>
1 file changed, 1 deletion(-)
delete mode 100644 tip.t
gpg: Signature made Mon Oct 9 02:19:27 2023 UTC
gpg: using DSA key 73D758744BE721698EC54E8713B6F51ECDDE430D
gpg: issuer "committer@example.com"
gpg: Good signature from "C O Mitter <committer@example.com>" [ultimate]
ok 28 - revert --edit --no-gpg-sign --gpg-sign HEAD with commit.gpgsign=false will sign commit
expecting success of 3514.29 'revert --edit --no-gpg-sign --gpg-sign two.. with commit.gpgsign=false will sign commit':
git reset --hard tip &&
git config commit.gpgsign false &&
git revert --edit --no-gpg-sign --gpg-sign two.. &&
git rev-list tip.. >rev-list &&
git verify-commit $(cat rev-list)
HEAD is now at ef70922 tip
[master 9ac0914] Revert "tip"
Author: A U Thor <author@example.com>
1 file changed, 1 deletion(-)
delete mode 100644 tip.t
[master 51a020a] Revert "three"
Author: A U Thor <author@example.com>
1 file changed, 1 deletion(-)
delete mode 100644 three.t
gpg: Signature made Mon Oct 9 02:19:27 2023 UTC
gpg: using DSA key 73D758744BE721698EC54E8713B6F51ECDDE430D
gpg: issuer "committer@example.com"
gpg: Good signature from "C O Mitter <committer@example.com>" [ultimate]
gpg: Signature made Mon Oct 9 02:19:27 2023 UTC
gpg: using DSA key 73D758744BE721698EC54E8713B6F51ECDDE430D
gpg: issuer "committer@example.com"
gpg: Good signature from "C O Mitter <committer@example.com>" [ultimate]
ok 29 - revert --edit --no-gpg-sign --gpg-sign two.. with commit.gpgsign=false will sign commit
expecting success of 3514.30 'revert --no-edit HEAD with commit.gpgsign=true will sign commit':
git reset --hard tip &&
git config commit.gpgsign true &&
git revert --no-edit HEAD &&
git rev-list tip.. >rev-list &&
git verify-commit $(cat rev-list)
HEAD is now at ef70922 tip
[master 9ac0914] Revert "tip"
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:18:13 2005 -0700
1 file changed, 1 deletion(-)
delete mode 100644 tip.t
gpg: Signature made Mon Oct 9 02:19:27 2023 UTC
gpg: using DSA key 73D758744BE721698EC54E8713B6F51ECDDE430D
gpg: issuer "committer@example.com"
gpg: Good signature from "C O Mitter <committer@example.com>" [ultimate]
ok 30 - revert --no-edit HEAD with commit.gpgsign=true will sign commit
expecting success of 3514.31 'revert --no-edit two.. with commit.gpgsign=true will sign commit':
git reset --hard tip &&
git config commit.gpgsign true &&
git revert --no-edit two.. &&
git rev-list tip.. >rev-list &&
git verify-commit $(cat rev-list)
HEAD is now at ef70922 tip
[master 9ac0914] Revert "tip"
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:18:13 2005 -0700
1 file changed, 1 deletion(-)
delete mode 100644 tip.t
[master 51a020a] Revert "three"
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:18:13 2005 -0700
1 file changed, 1 deletion(-)
delete mode 100644 three.t
gpg: Signature made Mon Oct 9 02:19:27 2023 UTC
gpg: using DSA key 73D758744BE721698EC54E8713B6F51ECDDE430D
gpg: issuer "committer@example.com"
gpg: Good signature from "C O Mitter <committer@example.com>" [ultimate]
gpg: Signature made Mon Oct 9 02:19:27 2023 UTC
gpg: using DSA key 73D758744BE721698EC54E8713B6F51ECDDE430D
gpg: issuer "committer@example.com"
gpg: Good signature from "C O Mitter <committer@example.com>" [ultimate]
ok 31 - revert --no-edit two.. with commit.gpgsign=true will sign commit
expecting success of 3514.32 'revert --no-edit --no-gpg-sign HEAD with commit.gpgsign=true won't sign commit':
git reset --hard tip &&
git config commit.gpgsign true &&
git revert --no-edit --no-gpg-sign HEAD &&
git rev-list tip.. >rev-list &&
test_must_fail git verify-commit $(cat rev-list)
HEAD is now at ef70922 tip
[master ef14522] Revert "tip"
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:18:13 2005 -0700
1 file changed, 1 deletion(-)
delete mode 100644 tip.t
ok 32 - revert --no-edit --no-gpg-sign HEAD with commit.gpgsign=true won't sign commit
expecting success of 3514.33 'revert --no-edit --no-gpg-sign two.. with commit.gpgsign=true won't sign commit':
git reset --hard tip &&
git config commit.gpgsign true &&
git revert --no-edit --no-gpg-sign two.. &&
git rev-list tip.. >rev-list &&
test_must_fail git verify-commit $(cat rev-list)
HEAD is now at ef70922 tip
[master ef14522] Revert "tip"
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:18:13 2005 -0700
1 file changed, 1 deletion(-)
delete mode 100644 tip.t
[master 89c0e70] Revert "three"
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:18:13 2005 -0700
1 file changed, 1 deletion(-)
delete mode 100644 three.t
ok 33 - revert --no-edit --no-gpg-sign two.. with commit.gpgsign=true won't sign commit
expecting success of 3514.34 'revert --no-edit --gpg-sign --no-gpg-sign HEAD with commit.gpgsign=true won't sign commit':
git reset --hard tip &&
git config commit.gpgsign true &&
git revert --no-edit --gpg-sign --no-gpg-sign HEAD &&
git rev-list tip.. >rev-list &&
test_must_fail git verify-commit $(cat rev-list)
HEAD is now at ef70922 tip
[master ef14522] Revert "tip"
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:18:13 2005 -0700
1 file changed, 1 deletion(-)
delete mode 100644 tip.t
ok 34 - revert --no-edit --gpg-sign --no-gpg-sign HEAD with commit.gpgsign=true won't sign commit
expecting success of 3514.35 'revert --no-edit --gpg-sign --no-gpg-sign two.. with commit.gpgsign=true won't sign commit':
git reset --hard tip &&
git config commit.gpgsign true &&
git revert --no-edit --gpg-sign --no-gpg-sign two.. &&
git rev-list tip.. >rev-list &&
test_must_fail git verify-commit $(cat rev-list)
HEAD is now at ef70922 tip
[master ef14522] Revert "tip"
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:18:13 2005 -0700
1 file changed, 1 deletion(-)
delete mode 100644 tip.t
[master 89c0e70] Revert "three"
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:18:13 2005 -0700
1 file changed, 1 deletion(-)
delete mode 100644 three.t
ok 35 - revert --no-edit --gpg-sign --no-gpg-sign two.. with commit.gpgsign=true won't sign commit
expecting success of 3514.36 'revert --no-edit --no-gpg-sign --gpg-sign HEAD with commit.gpgsign=false will sign commit':
git reset --hard tip &&
git config commit.gpgsign false &&
git revert --no-edit --no-gpg-sign --gpg-sign HEAD &&
git rev-list tip.. >rev-list &&
git verify-commit $(cat rev-list)
HEAD is now at ef70922 tip
[master 9ac0914] Revert "tip"
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:18:13 2005 -0700
1 file changed, 1 deletion(-)
delete mode 100644 tip.t
gpg: Signature made Mon Oct 9 02:19:27 2023 UTC
gpg: using DSA key 73D758744BE721698EC54E8713B6F51ECDDE430D
gpg: issuer "committer@example.com"
gpg: Good signature from "C O Mitter <committer@example.com>" [ultimate]
ok 36 - revert --no-edit --no-gpg-sign --gpg-sign HEAD with commit.gpgsign=false will sign commit
# passed all 36 test(s)
1..36
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3512-cherry-pick-submodule.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/.git/
expecting success of 3512.1 'git_test_func: added submodule creates empty directory':
prolog &&
reset_work_tree_to no_submodule &&
(
cd submodule_update &&
git branch -t add_sub1 origin/add_sub1 &&
$command add_sub1 &&
test_superproject_content origin/add_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/add_sub1
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update_sub1/.git/
[main (root-commit) 63c4304] Base inside first submodule
Author: A U Thor <author@example.com>
3 files changed, 4 insertions(+)
create mode 100644 .gitignore
create mode 100644 file1
create mode 100644 file2
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update_sub2/.git/
[main (root-commit) 27c5769] nested submodule base
Author: A U Thor <author@example.com>
3 files changed, 4 insertions(+)
create mode 100644 .gitignore
create mode 100644 file1
create mode 100644 file2
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update_repo/.git/
[main (root-commit) 27611a5] Base
Author: A U Thor <author@example.com>
3 files changed, 4 insertions(+)
create mode 100644 .gitignore
create mode 100644 file1
create mode 100644 file2
Switched to a new branch 'add_sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update_repo/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update_repo/uninitialized_sub'...
done.
[add_sub1 09bcf53] Add sub1
Author: A U Thor <author@example.com>
2 files changed, 8 insertions(+)
create mode 100644 .gitmodules
create mode 160000 uninitialized_sub
Switched to a new branch 'remove_sub1'
warning: unable to rmdir 'sub1': Directory not empty
warning: unable to rmdir 'uninitialized_sub': Directory not empty
[remove_sub1 d6ba723] Revert "Add sub1"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
3 files changed, 9 deletions(-)
delete mode 100644 .gitmodules
delete mode 160000 sub1
delete mode 160000 uninitialized_sub
Switched to a new branch 'modify_sub1'
Switched to a new branch 'modifications'
[modifications 03da4ea] modified file2 and added file3
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+), 1 deletion(-)
create mode 100644 file3
To /<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update_sub1
* [new branch] modifications -> modifications
[modify_sub1 cb2bda7] Modify sub1
Author: A U Thor <author@example.com>
Switched to a new branch 'add_nested_sub'
Switched to a new branch 'add_nested_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update_repo/sub1/sub2'...
done.
[add_nested_sub 8b3b335] add a nested submodule
Author: A U Thor <author@example.com>
2 files changed, 5 insertions(+)
create mode 100644 .gitmodules
create mode 160000 sub2
[add_nested_sub 5bc57bf] update submodule, that updates a nested submodule
Author: A U Thor <author@example.com>
Switched to a new branch 'modify_sub1_recursively'
Switched to a new branch 'modify_sub1_recursively'
Switched to a new branch 'modify_sub1_recursively'
[modify_sub1_recursively c7c4624] make a change in nested sub
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file3
[modify_sub1_recursively 92fc14a] update nested sub
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[modify_sub1_recursively 953e869] update sub1, that updates nested sub
Author: A U Thor <author@example.com>
To /<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update_sub1
* [new branch] modify_sub1_recursively -> modify_sub1_recursively
To /<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update_sub2
* [new branch] modify_sub1_recursively -> modify_sub1_recursively
Cleared directory 'sub2'
Submodule 'sub2' (../submodule_update_sub2) unregistered for path 'sub2'
Switched to a new branch 'replace_sub1_with_directory'
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Previous HEAD position was 63c4304 Base inside first submodule
Switched to branch 'modifications'
rm 'sub1'
[replace_sub1_with_directory cb28587] Replace sub1 with directory
Author: A U Thor <author@example.com>
5 files changed, 3 insertions(+), 5 deletions(-)
delete mode 160000 sub1
create mode 100644 sub1/file1
create mode 100644 sub1/file2
create mode 100644 sub1/file3
Switched to a new branch 'replace_directory_with_sub1'
[replace_directory_with_sub1 a2e65d5] Revert "Replace sub1 with directory"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
4 files changed, 4 insertions(+), 3 deletions(-)
delete mode 100644 sub1/file1
delete mode 100644 sub1/file2
delete mode 100644 sub1/file3
Switched to a new branch 'replace_sub1_with_file'
rm 'sub1'
[replace_sub1_with_file 2364f5a] Replace sub1 with file
Author: A U Thor <author@example.com>
2 files changed, 1 insertion(+), 5 deletions(-)
mode change 160000 => 100644 sub1
Switched to a new branch 'replace_file_with_sub1'
[replace_file_with_sub1 8b6fdfc] Revert "Replace sub1 with file"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
2 files changed, 5 insertions(+), 1 deletion(-)
mode change 100644 => 160000 sub1
Switched to a new branch 'invalid_sub1'
[invalid_sub1 e6169bf] Invalid sub1 commit
Author: A U Thor <author@example.com>
Switched to a new branch 'valid_sub1'
[valid_sub1 3036e4e] Revert "Invalid sub1 commit"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
warning: unable to rmdir 'uninitialized_sub': Directory not empty
Switched to branch 'main'
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
[no_submodule 09bcf53] Add sub1
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
2 files changed, 8 insertions(+)
create mode 100644 .gitmodules
create mode 160000 uninitialized_sub
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Submodule path 'uninitialized_sub': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 1 - git_test_func: added submodule creates empty directory
expecting success of 3512.2 'git_test_func: added submodule leaves existing empty directory alone':
prolog &&
reset_work_tree_to no_submodule &&
(
cd submodule_update &&
mkdir sub1 &&
git branch -t add_sub1 origin/add_sub1 &&
$command add_sub1 &&
test_superproject_content origin/add_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
[no_submodule 09bcf53] Add sub1
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
2 files changed, 8 insertions(+)
create mode 100644 .gitmodules
create mode 160000 uninitialized_sub
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Submodule path 'uninitialized_sub': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 2 - git_test_func: added submodule leaves existing empty directory alone
expecting success of 3512.3 'git_test_func: replace tracked file with submodule creates empty directory':
prolog &&
reset_work_tree_to replace_sub1_with_file &&
(
cd submodule_update &&
git branch -t replace_file_with_sub1 origin/replace_file_with_sub1 &&
$command replace_file_with_sub1 &&
test_superproject_content origin/replace_file_with_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/replace_file_with_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'replace_sub1_with_file'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
fatal: Needed a single revision
branch 'replace_file_with_sub1' set up to track 'origin/replace_file_with_sub1'.
[replace_sub1_with_file 8b6fdfc] Revert "Replace sub1 with file"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
2 files changed, 5 insertions(+), 1 deletion(-)
mode change 100644 => 160000 sub1
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Submodule path 'uninitialized_sub': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 3 - git_test_func: replace tracked file with submodule creates empty directory
expecting success of 3512.4 'git_test_func: replace directory with submodule':
prolog &&
reset_work_tree_to replace_sub1_with_directory &&
(
cd submodule_update &&
git branch -t replace_directory_with_sub1 origin/replace_directory_with_sub1 &&
$command replace_directory_with_sub1 &&
test_superproject_content origin/replace_directory_with_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/replace_directory_with_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'replace_sub1_with_directory'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
fatal: Needed a single revision
branch 'replace_directory_with_sub1' set up to track 'origin/replace_directory_with_sub1'.
[replace_sub1_with_directory a2e65d5] Revert "Replace sub1 with directory"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
4 files changed, 4 insertions(+), 3 deletions(-)
delete mode 100644 sub1/file1
delete mode 100644 sub1/file2
delete mode 100644 sub1/file3
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Submodule path 'uninitialized_sub': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 4 - git_test_func: replace directory with submodule
expecting success of 3512.5 'git_test_func: removed submodule leaves submodule directory and its contents in place':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t remove_sub1 origin/remove_sub1 &&
$command remove_sub1 &&
test_superproject_content origin/remove_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'remove_sub1' set up to track 'origin/remove_sub1'.
warning: unable to rmdir 'sub1': Directory not empty
[add_sub1 d6ba723] Revert "Add sub1"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
3 files changed, 9 deletions(-)
delete mode 100644 .gitmodules
delete mode 160000 sub1
delete mode 160000 uninitialized_sub
ok 5 - git_test_func: removed submodule leaves submodule directory and its contents in place
expecting success of 3512.6 'git_test_func: removed submodule leaves submodule containing a .git directory alone':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t remove_sub1 origin/remove_sub1 &&
replace_gitfile_with_git_dir sub1 &&
$command remove_sub1 &&
test_superproject_content origin/remove_sub1 &&
test_git_directory_is_unchanged sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'remove_sub1' set up to track 'origin/remove_sub1'.
warning: unable to rmdir 'sub1': Directory not empty
[add_sub1 d6ba723] Revert "Add sub1"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
3 files changed, 9 deletions(-)
delete mode 100644 .gitmodules
delete mode 160000 sub1
delete mode 160000 uninitialized_sub
ok 6 - git_test_func: removed submodule leaves submodule containing a .git directory alone
expecting success of 3512.7 'git_test_func: replace submodule with a directory must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_directory origin/replace_sub1_with_directory &&
$command replace_sub1_with_directory test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
error: The following untracked working tree files would be overwritten by merge:
sub1/file1
sub1/file2
Please move or remove them before you merge.
Aborting
fatal: cherry-pick failed
ok 7 - git_test_func: replace submodule with a directory must fail
expecting success of 3512.8 'git_test_func: replace submodule containing a .git directory with a directory must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_directory origin/replace_sub1_with_directory &&
replace_gitfile_with_git_dir sub1 &&
$command replace_sub1_with_directory test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_git_directory_is_unchanged sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
error: The following untracked working tree files would be overwritten by merge:
sub1/file1
sub1/file2
Please move or remove them before you merge.
Aborting
fatal: cherry-pick failed
ok 8 - git_test_func: replace submodule containing a .git directory with a directory must fail
checking known breakage of 3512.9 'git_test_func: replace submodule with a file must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_file origin/replace_sub1_with_file &&
$command replace_sub1_with_file test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
[add_sub1 2364f5a] Replace sub1 with file
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
2 files changed, 1 insertion(+), 5 deletions(-)
mode change 160000 => 100644 sub1
test_must_fail: command succeeded: git cherry-pick replace_sub1_with_file
not ok 9 - git_test_func: replace submodule with a file must fail # TODO known breakage
checking known breakage of 3512.10 'git_test_func: replace submodule containing a .git directory with a file must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_file origin/replace_sub1_with_file &&
replace_gitfile_with_git_dir sub1 &&
$command replace_sub1_with_file test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_git_directory_is_unchanged sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
[add_sub1 2364f5a] Replace sub1 with file
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
2 files changed, 1 insertion(+), 5 deletions(-)
mode change 160000 => 100644 sub1
test_must_fail: command succeeded: git cherry-pick replace_sub1_with_file
not ok 10 - git_test_func: replace submodule containing a .git directory with a file must fail # TODO known breakage
expecting success of 3512.11 'git_test_func: modified submodule does not update submodule work tree':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t modify_sub1 origin/modify_sub1 &&
$command modify_sub1 &&
test_superproject_content origin/modify_sub1 &&
test_submodule_content sub1 origin/add_sub1 &&
git submodule update &&
test_submodule_content sub1 origin/modify_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'modify_sub1' set up to track 'origin/modify_sub1'.
[add_sub1 cb2bda7] Modify sub1
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
Submodule path 'sub1': checked out '03da4ea88bb165bd26ee0b2e5c657f2858b23f53'
ok 11 - git_test_func: modified submodule does not update submodule work tree
expecting success of 3512.12 'git_test_func: modified submodule does not update submodule work tree to invalid commit':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t invalid_sub1 origin/invalid_sub1 &&
$command invalid_sub1 &&
test_superproject_content origin/invalid_sub1 &&
test_submodule_content sub1 origin/add_sub1 &&
test_must_fail git submodule update &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'invalid_sub1' set up to track 'origin/invalid_sub1'.
[add_sub1 e6169bf] Invalid sub1 commit
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
fatal: git upload-pack: not our ref 0123456789012345678901234567890123456789
fatal: remote error: upload-pack: not our ref 0123456789012345678901234567890123456789
fatal: Fetched in submodule path 'sub1', but it did not contain 0123456789012345678901234567890123456789. Direct fetching of that commit failed.
ok 12 - git_test_func: modified submodule does not update submodule work tree to invalid commit
expecting success of 3512.13 'git_test_func: modified submodule does not update submodule work tree from invalid commit':
prolog &&
reset_work_tree_to invalid_sub1 &&
(
cd submodule_update &&
git branch -t valid_sub1 origin/valid_sub1 &&
$command valid_sub1 &&
test_superproject_content origin/valid_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/valid_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'invalid_sub1'
branch 'invalid_sub1' set up to track 'origin/invalid_sub1'.
fatal: Needed a single revision
branch 'valid_sub1' set up to track 'origin/valid_sub1'.
[invalid_sub1 3036e4e] Revert "Invalid sub1 commit"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Submodule path 'uninitialized_sub': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 13 - git_test_func: modified submodule does not update submodule work tree from invalid commit
expecting success of 3512.14 'git_test_func: added submodule doesn't remove untracked unignored file with same name':
prolog &&
reset_work_tree_to no_submodule &&
(
cd submodule_update &&
git branch -t add_sub1 origin/add_sub1 &&
>sub1 &&
$command add_sub1 test_must_fail &&
test_superproject_content origin/no_submodule &&
test_must_be_empty sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
error: The following untracked working tree files would be overwritten by merge:
sub1
Please move or remove them before you merge.
Aborting
fatal: cherry-pick failed
ok 14 - git_test_func: added submodule doesn't remove untracked unignored file with same name
expecting success of 3512.15 'unrelated submodule/file conflict is ignored':
test_config_global protocol.file.allow always &&
test_create_repo sub &&
touch sub/file &&
git -C sub add file &&
git -C sub commit -m "add a file in a submodule" &&
test_create_repo a_repo &&
(
cd a_repo &&
>a_file &&
git add a_file &&
git commit -m "add a file" &&
git branch test &&
git checkout test &&
mkdir sub &&
>sub/content &&
git add sub/content &&
git commit -m "add a regular folder with name sub" &&
echo "123" >a_file &&
git add a_file &&
git commit -m "modify a file" &&
git checkout main &&
git submodule add ../sub sub &&
git submodule update sub &&
git commit -m "add a submodule info folder with name sub" &&
git cherry-pick test
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/sub/.git/
[main (root-commit) 8e92946] add a file in a submodule
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/a_repo/.git/
[main (root-commit) ab27302] add a file
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 a_file
Switched to branch 'test'
[test 472972d] add a regular folder with name sub
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 sub/content
[test 32d3b70] modify a file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
Switched to branch 'main'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3512-cherry-pick-submodule/a_repo/sub'...
done.
[main 77c71a9] add a submodule info folder with name sub
Author: A U Thor <author@example.com>
2 files changed, 4 insertions(+)
create mode 100644 .gitmodules
create mode 160000 sub
[main ec77434] modify a file
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 insertion(+)
ok 15 - unrelated submodule/file conflict is ignored
# still have 2 known breakage(s)
# passed all remaining 13 test(s)
1..15
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3601-rm-pathspec-file.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3601-rm-pathspec-file/.git/
expecting success of 3601.1 'setup':
echo A >fileA.t &&
echo B >fileB.t &&
echo C >fileC.t &&
echo D >fileD.t &&
git add fileA.t fileB.t fileC.t fileD.t &&
git commit -m "files" &&
git tag checkpoint
[master (root-commit) d32ab08] files
Author: A U Thor <author@example.com>
4 files changed, 4 insertions(+)
create mode 100644 fileA.t
create mode 100644 fileB.t
create mode 100644 fileC.t
create mode 100644 fileD.t
ok 1 - setup
expecting success of 3601.2 'simplest':
restore_checkpoint &&
cat >expect <<-\EOF &&
D fileA.t
EOF
echo fileA.t | git rm --pathspec-from-file=- &&
verify_expect
HEAD is now at d32ab08 files
rm 'fileA.t'
ok 2 - simplest
expecting success of 3601.3 '--pathspec-file-nul':
restore_checkpoint &&
cat >expect <<-\EOF &&
D fileA.t
D fileB.t
EOF
printf "fileA.t\0fileB.t\0" | git rm --pathspec-from-file=- --pathspec-file-nul &&
verify_expect
HEAD is now at d32ab08 files
rm 'fileA.t'
rm 'fileB.t'
ok 3 - --pathspec-file-nul
expecting success of 3601.4 'only touches what was listed':
restore_checkpoint &&
cat >expect <<-\EOF &&
D fileB.t
D fileC.t
EOF
printf "fileB.t\nfileC.t\n" | git rm --pathspec-from-file=- &&
verify_expect
HEAD is now at d32ab08 files
rm 'fileB.t'
rm 'fileC.t'
ok 4 - only touches what was listed
expecting success of 3601.5 'error conditions':
restore_checkpoint &&
echo fileA.t >list &&
test_must_fail git rm --pathspec-from-file=list -- fileA.t 2>err &&
test_i18ngrep -e ".--pathspec-from-file. and pathspec arguments cannot be used together" err &&
test_must_fail git rm --pathspec-file-nul 2>err &&
test_i18ngrep -e "the option .--pathspec-file-nul. requires .--pathspec-from-file." err &&
>empty_list &&
test_must_fail git rm --pathspec-from-file=empty_list 2>err &&
test_i18ngrep -e "No pathspec was given. Which files should I remove?" err
HEAD is now at d32ab08 files
fatal: '--pathspec-from-file' and pathspec arguments cannot be used together
fatal: the option '--pathspec-file-nul' requires '--pathspec-from-file'
fatal: No pathspec was given. Which files should I remove?
ok 5 - error conditions
# passed all 5 test(s)
1..5
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3602-rm-sparse-checkout.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3602-rm-sparse-checkout/.git/
expecting success of 3602.1 'setup':
mkdir -p sub/dir &&
touch a b c sub/d sub/dir/e &&
git add -A &&
git commit -m files &&
cat >sparse_error_header <<-EOF &&
The following paths and/or pathspecs matched paths that exist
outside of your sparse-checkout definition, so will not be
updated in the index:
EOF
cat >sparse_hint <<-EOF &&
hint: If you intend to update such entries, try one of the following:
hint: * Use the --sparse option.
hint: * Disable or modify the sparsity rules.
hint: Disable this message with "git config advice.updateSparsePath false"
EOF
echo b | cat sparse_error_header - >sparse_entry_b_error &&
cat sparse_entry_b_error sparse_hint >b_error_and_hint
[master (root-commit) ff99497] files
Author: A U Thor <author@example.com>
5 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 a
create mode 100644 b
create mode 100644 c
create mode 100644 sub/d
create mode 100644 sub/dir/e
ok 1 - setup
expecting success of 3602.2 'rm does not remove sparse entries':
git sparse-checkout set --no-cone a &&
test_must_fail git rm $opt b 2>stderr &&
test_cmp b_error_and_hint stderr &&
git ls-files --error-unmatch b
warning: pass a leading slash before paths such as 'a' if you want a single file (see NON-CONE PROBLEMS in the git-sparse-checkout manual).
b
ok 2 - rm does not remove sparse entries
expecting success of 3602.3 'rm -f does not remove sparse entries':
git sparse-checkout set --no-cone a &&
test_must_fail git rm $opt b 2>stderr &&
test_cmp b_error_and_hint stderr &&
git ls-files --error-unmatch b
warning: pass a leading slash before paths such as 'a' if you want a single file (see NON-CONE PROBLEMS in the git-sparse-checkout manual).
b
ok 3 - rm -f does not remove sparse entries
expecting success of 3602.4 'rm --dry-run does not remove sparse entries':
git sparse-checkout set --no-cone a &&
test_must_fail git rm $opt b 2>stderr &&
test_cmp b_error_and_hint stderr &&
git ls-files --error-unmatch b
warning: pass a leading slash before paths such as 'a' if you want a single file (see NON-CONE PROBLEMS in the git-sparse-checkout manual).
b
ok 4 - rm --dry-run does not remove sparse entries
expecting success of 3602.5 'recursive rm does not remove sparse entries':
git reset --hard &&
git sparse-checkout set sub/dir &&
git rm -r sub &&
git status --porcelain -uno >actual &&
cat >expected <<-\EOF &&
D sub/dir/e
EOF
test_cmp expected actual &&
git rm --sparse -r sub &&
git status --porcelain -uno >actual2 &&
cat >expected2 <<-\EOF &&
D sub/d
D sub/dir/e
EOF
test_cmp expected2 actual2
HEAD is now at ff99497 files
rm 'sub/dir/e'
rm 'sub/d'
ok 5 - recursive rm does not remove sparse entries
expecting success of 3602.6 'recursive rm --sparse removes sparse entries':
git reset --hard &&
git sparse-checkout set "sub/dir" &&
git rm --sparse -r sub &&
git status --porcelain -uno >actual &&
cat >expected <<-\EOF &&
D sub/d
D sub/dir/e
EOF
test_cmp expected actual
HEAD is now at ff99497 files
rm 'sub/d'
rm 'sub/dir/e'
ok 6 - recursive rm --sparse removes sparse entries
expecting success of 3602.7 'rm obeys advice.updateSparsePath':
git reset --hard &&
git sparse-checkout set a &&
test_must_fail git -c advice.updateSparsePath=false rm b 2>stderr &&
test_cmp sparse_entry_b_error stderr
HEAD is now at ff99497 files
warning: pass a leading slash before paths such as 'a' if you want a single file (see NON-CONE PROBLEMS in the git-sparse-checkout manual).
ok 7 - rm obeys advice.updateSparsePath
expecting success of 3602.8 'do not advice about sparse entries when they do not match the pathspec':
git reset --hard &&
git sparse-checkout set a &&
test_must_fail git rm nonexistent 2>stderr &&
grep "fatal: pathspec .nonexistent. did not match any files" stderr &&
! grep -F -f sparse_error_header stderr
HEAD is now at ff99497 files
warning: pass a leading slash before paths such as 'a' if you want a single file (see NON-CONE PROBLEMS in the git-sparse-checkout manual).
fatal: pathspec 'nonexistent' did not match any files
ok 8 - do not advice about sparse entries when they do not match the pathspec
expecting success of 3602.9 'do not warn about sparse entries when pathspec matches dense entries':
git reset --hard &&
git sparse-checkout set a &&
git rm "[ba]" 2>stderr &&
test_must_be_empty stderr &&
git ls-files --error-unmatch b &&
test_must_fail git ls-files --error-unmatch a
HEAD is now at ff99497 files
warning: pass a leading slash before paths such as 'a' if you want a single file (see NON-CONE PROBLEMS in the git-sparse-checkout manual).
rm 'a'
b
error: pathspec 'a' did not match any file(s) known to git
Did you forget to 'git add'?
ok 9 - do not warn about sparse entries when pathspec matches dense entries
expecting success of 3602.10 'do not warn about sparse entries with --ignore-unmatch':
git reset --hard &&
git sparse-checkout set a &&
git rm --ignore-unmatch b 2>stderr &&
test_must_be_empty stderr &&
git ls-files --error-unmatch b
HEAD is now at ff99497 files
warning: pass a leading slash before paths such as 'a' if you want a single file (see NON-CONE PROBLEMS in the git-sparse-checkout manual).
b
ok 10 - do not warn about sparse entries with --ignore-unmatch
expecting success of 3602.11 'refuse to rm a non-skip-worktree path outside sparse cone':
git reset --hard &&
git sparse-checkout set a &&
git update-index --no-skip-worktree b &&
test_must_fail git rm b 2>stderr &&
test_cmp b_error_and_hint stderr &&
git rm --sparse b 2>stderr &&
test_must_be_empty stderr &&
test_path_is_missing b
HEAD is now at ff99497 files
warning: pass a leading slash before paths such as 'a' if you want a single file (see NON-CONE PROBLEMS in the git-sparse-checkout manual).
rm 'b'
ok 11 - refuse to rm a non-skip-worktree path outside sparse cone
expecting success of 3602.12 'can remove files from non-sparse dir':
git reset --hard &&
git sparse-checkout disable &&
mkdir -p w x/y &&
test_commit w/f &&
test_commit x/y/f &&
git sparse-checkout set --no-cone w !/x y/ &&
git rm w/f.t x/y/f.t 2>stderr &&
test_must_be_empty stderr
HEAD is now at ff99497 files
[master 8effd50] w/f
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 w/f.t
[master d038d72] x/y/f
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 x/y/f.t
rm 'w/f.t'
rm 'x/y/f.t'
ok 12 - can remove files from non-sparse dir
expecting success of 3602.13 'refuse to remove non-skip-worktree file from sparse dir':
git reset --hard &&
git sparse-checkout disable &&
mkdir -p x/y/z &&
test_commit x/y/z/f &&
git sparse-checkout set --no-cone !/x y/ !x/y/z &&
git update-index --no-skip-worktree x/y/z/f.t &&
test_must_fail git rm x/y/z/f.t 2>stderr &&
echo x/y/z/f.t | cat sparse_error_header - sparse_hint >expect &&
test_cmp expect stderr
HEAD is now at d038d72 x/y/f
[master 9387e98] x/y/z/f
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 x/y/z/f.t
ok 13 - refuse to remove non-skip-worktree file from sparse dir
# passed all 13 test(s)
1..13
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3513-revert-submodule.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/.git/
expecting success of 3513.1 'git_revert: added submodule creates empty directory':
prolog &&
reset_work_tree_to no_submodule &&
(
cd submodule_update &&
git branch -t add_sub1 origin/add_sub1 &&
$command add_sub1 &&
test_superproject_content origin/add_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/add_sub1
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update_sub1/.git/
[master (root-commit) 63c4304] Base inside first submodule
Author: A U Thor <author@example.com>
3 files changed, 4 insertions(+)
create mode 100644 .gitignore
create mode 100644 file1
create mode 100644 file2
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update_sub2/.git/
[master (root-commit) 27c5769] nested submodule base
Author: A U Thor <author@example.com>
3 files changed, 4 insertions(+)
create mode 100644 .gitignore
create mode 100644 file1
create mode 100644 file2
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update_repo/.git/
[master (root-commit) 27611a5] Base
Author: A U Thor <author@example.com>
3 files changed, 4 insertions(+)
create mode 100644 .gitignore
create mode 100644 file1
create mode 100644 file2
Switched to a new branch 'add_sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update_repo/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update_repo/uninitialized_sub'...
done.
[add_sub1 09bcf53] Add sub1
Author: A U Thor <author@example.com>
2 files changed, 8 insertions(+)
create mode 100644 .gitmodules
create mode 160000 uninitialized_sub
Switched to a new branch 'remove_sub1'
warning: unable to rmdir 'sub1': Directory not empty
warning: unable to rmdir 'uninitialized_sub': Directory not empty
[remove_sub1 d6ba723] Revert "Add sub1"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
3 files changed, 9 deletions(-)
delete mode 100644 .gitmodules
delete mode 160000 sub1
delete mode 160000 uninitialized_sub
Switched to a new branch 'modify_sub1'
Switched to a new branch 'modifications'
[modifications 03da4ea] modified file2 and added file3
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+), 1 deletion(-)
create mode 100644 file3
To /<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update_sub1
* [new branch] modifications -> modifications
[modify_sub1 cb2bda7] Modify sub1
Author: A U Thor <author@example.com>
Switched to a new branch 'add_nested_sub'
Switched to a new branch 'add_nested_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update_repo/sub1/sub2'...
done.
[add_nested_sub 8b3b335] add a nested submodule
Author: A U Thor <author@example.com>
2 files changed, 5 insertions(+)
create mode 100644 .gitmodules
create mode 160000 sub2
[add_nested_sub 5bc57bf] update submodule, that updates a nested submodule
Author: A U Thor <author@example.com>
Switched to a new branch 'modify_sub1_recursively'
Switched to a new branch 'modify_sub1_recursively'
Switched to a new branch 'modify_sub1_recursively'
[modify_sub1_recursively c7c4624] make a change in nested sub
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file3
[modify_sub1_recursively 92fc14a] update nested sub
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[modify_sub1_recursively 953e869] update sub1, that updates nested sub
Author: A U Thor <author@example.com>
To /<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update_sub1
* [new branch] modify_sub1_recursively -> modify_sub1_recursively
To /<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update_sub2
* [new branch] modify_sub1_recursively -> modify_sub1_recursively
Cleared directory 'sub2'
Submodule 'sub2' (../submodule_update_sub2) unregistered for path 'sub2'
Switched to a new branch 'replace_sub1_with_directory'
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Previous HEAD position was 63c4304 Base inside first submodule
Switched to branch 'modifications'
rm 'sub1'
[replace_sub1_with_directory cb28587] Replace sub1 with directory
Author: A U Thor <author@example.com>
5 files changed, 3 insertions(+), 5 deletions(-)
delete mode 160000 sub1
create mode 100644 sub1/file1
create mode 100644 sub1/file2
create mode 100644 sub1/file3
Switched to a new branch 'replace_directory_with_sub1'
[replace_directory_with_sub1 a2e65d5] Revert "Replace sub1 with directory"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
4 files changed, 4 insertions(+), 3 deletions(-)
delete mode 100644 sub1/file1
delete mode 100644 sub1/file2
delete mode 100644 sub1/file3
Switched to a new branch 'replace_sub1_with_file'
rm 'sub1'
[replace_sub1_with_file 2364f5a] Replace sub1 with file
Author: A U Thor <author@example.com>
2 files changed, 1 insertion(+), 5 deletions(-)
mode change 160000 => 100644 sub1
Switched to a new branch 'replace_file_with_sub1'
[replace_file_with_sub1 8b6fdfc] Revert "Replace sub1 with file"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
2 files changed, 5 insertions(+), 1 deletion(-)
mode change 100644 => 160000 sub1
Switched to a new branch 'invalid_sub1'
[invalid_sub1 e6169bf] Invalid sub1 commit
Author: A U Thor <author@example.com>
Switched to a new branch 'valid_sub1'
[valid_sub1 3036e4e] Revert "Invalid sub1 commit"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
warning: unable to rmdir 'uninitialized_sub': Directory not empty
Switched to branch 'master'
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
Switched to branch 'add_sub1'
Your branch is up to date with 'origin/add_sub1'.
[add_sub1 d6ba723] Revert "Add sub1"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
3 files changed, 9 deletions(-)
delete mode 100644 .gitmodules
delete mode 160000 sub1
delete mode 160000 uninitialized_sub
[add_sub1 b4b80f3] Revert "Revert "Add sub1""
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
2 files changed, 8 insertions(+)
create mode 100644 .gitmodules
create mode 160000 uninitialized_sub
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Submodule path 'uninitialized_sub': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 1 - git_revert: added submodule creates empty directory
expecting success of 3513.2 'git_revert: added submodule leaves existing empty directory alone':
prolog &&
reset_work_tree_to no_submodule &&
(
cd submodule_update &&
mkdir sub1 &&
git branch -t add_sub1 origin/add_sub1 &&
$command add_sub1 &&
test_superproject_content origin/add_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
Switched to branch 'add_sub1'
Your branch is up to date with 'origin/add_sub1'.
[add_sub1 d6ba723] Revert "Add sub1"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
3 files changed, 9 deletions(-)
delete mode 100644 .gitmodules
delete mode 160000 sub1
delete mode 160000 uninitialized_sub
[add_sub1 b4b80f3] Revert "Revert "Add sub1""
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
2 files changed, 8 insertions(+)
create mode 100644 .gitmodules
create mode 160000 uninitialized_sub
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Submodule path 'uninitialized_sub': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 2 - git_revert: added submodule leaves existing empty directory alone
expecting success of 3513.3 'git_revert: replace tracked file with submodule creates empty directory':
prolog &&
reset_work_tree_to replace_sub1_with_file &&
(
cd submodule_update &&
git branch -t replace_file_with_sub1 origin/replace_file_with_sub1 &&
$command replace_file_with_sub1 &&
test_superproject_content origin/replace_file_with_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/replace_file_with_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'replace_sub1_with_file'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
fatal: Needed a single revision
branch 'replace_file_with_sub1' set up to track 'origin/replace_file_with_sub1'.
Switched to branch 'replace_file_with_sub1'
Your branch is up to date with 'origin/replace_file_with_sub1'.
[replace_file_with_sub1 8bd0dc0] Revert "Revert "Replace sub1 with file""
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
2 files changed, 1 insertion(+), 5 deletions(-)
mode change 160000 => 100644 sub1
[replace_file_with_sub1 5d93312] Revert "Revert "Revert "Replace sub1 with file"""
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
2 files changed, 5 insertions(+), 1 deletion(-)
mode change 100644 => 160000 sub1
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Submodule path 'uninitialized_sub': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 3 - git_revert: replace tracked file with submodule creates empty directory
expecting success of 3513.4 'git_revert: replace directory with submodule':
prolog &&
reset_work_tree_to replace_sub1_with_directory &&
(
cd submodule_update &&
git branch -t replace_directory_with_sub1 origin/replace_directory_with_sub1 &&
$command replace_directory_with_sub1 &&
test_superproject_content origin/replace_directory_with_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/replace_directory_with_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'replace_sub1_with_directory'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
fatal: Needed a single revision
branch 'replace_directory_with_sub1' set up to track 'origin/replace_directory_with_sub1'.
Switched to branch 'replace_directory_with_sub1'
Your branch is up to date with 'origin/replace_directory_with_sub1'.
[replace_directory_with_sub1 16e3b33] Revert "Revert "Replace sub1 with directory""
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
5 files changed, 3 insertions(+), 5 deletions(-)
delete mode 160000 sub1
create mode 100644 sub1/file1
create mode 100644 sub1/file2
create mode 100644 sub1/file3
[replace_directory_with_sub1 fd8532e] Revert "Revert "Revert "Replace sub1 with directory"""
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
4 files changed, 4 insertions(+), 3 deletions(-)
delete mode 100644 sub1/file1
delete mode 100644 sub1/file2
delete mode 100644 sub1/file3
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Submodule path 'uninitialized_sub': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 4 - git_revert: replace directory with submodule
expecting success of 3513.5 'git_revert: removed submodule leaves submodule directory and its contents in place':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t remove_sub1 origin/remove_sub1 &&
$command remove_sub1 &&
test_superproject_content origin/remove_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'remove_sub1' set up to track 'origin/remove_sub1'.
warning: unable to rmdir 'sub1': Directory not empty
Switched to branch 'remove_sub1'
Your branch is up to date with 'origin/remove_sub1'.
[remove_sub1 b4b80f3] Revert "Revert "Add sub1""
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
2 files changed, 8 insertions(+)
create mode 100644 .gitmodules
create mode 160000 uninitialized_sub
warning: unable to rmdir 'sub1': Directory not empty
[remove_sub1 7a52ac8] Revert "Revert "Revert "Add sub1"""
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
3 files changed, 9 deletions(-)
delete mode 100644 .gitmodules
delete mode 160000 sub1
delete mode 160000 uninitialized_sub
ok 5 - git_revert: removed submodule leaves submodule directory and its contents in place
expecting success of 3513.6 'git_revert: removed submodule leaves submodule containing a .git directory alone':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t remove_sub1 origin/remove_sub1 &&
replace_gitfile_with_git_dir sub1 &&
$command remove_sub1 &&
test_superproject_content origin/remove_sub1 &&
test_git_directory_is_unchanged sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'remove_sub1' set up to track 'origin/remove_sub1'.
warning: unable to rmdir 'sub1': Directory not empty
Switched to branch 'remove_sub1'
Your branch is up to date with 'origin/remove_sub1'.
[remove_sub1 b4b80f3] Revert "Revert "Add sub1""
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
2 files changed, 8 insertions(+)
create mode 100644 .gitmodules
create mode 160000 uninitialized_sub
warning: unable to rmdir 'sub1': Directory not empty
[remove_sub1 7a52ac8] Revert "Revert "Revert "Add sub1"""
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
3 files changed, 9 deletions(-)
delete mode 100644 .gitmodules
delete mode 160000 sub1
delete mode 160000 uninitialized_sub
ok 6 - git_revert: removed submodule leaves submodule containing a .git directory alone
expecting success of 3513.7 'git_revert: replace submodule with a directory must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_directory origin/replace_sub1_with_directory &&
$command replace_sub1_with_directory test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
error: The following untracked working tree files would be overwritten by checkout:
sub1/file1
sub1/file2
Please move or remove them before you switch branches.
Aborting
ok 7 - git_revert: replace submodule with a directory must fail
expecting success of 3513.8 'git_revert: replace submodule containing a .git directory with a directory must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_directory origin/replace_sub1_with_directory &&
replace_gitfile_with_git_dir sub1 &&
$command replace_sub1_with_directory test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_git_directory_is_unchanged sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
error: The following untracked working tree files would be overwritten by checkout:
sub1/file1
sub1/file2
Please move or remove them before you switch branches.
Aborting
ok 8 - git_revert: replace submodule containing a .git directory with a directory must fail
checking known breakage of 3513.9 'git_revert: replace submodule with a file must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_file origin/replace_sub1_with_file &&
$command replace_sub1_with_file test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
Switched to branch 'replace_sub1_with_file'
Your branch is up to date with 'origin/replace_sub1_with_file'.
test_must_fail: command succeeded: git checkout replace_sub1_with_file
not ok 9 - git_revert: replace submodule with a file must fail # TODO known breakage
checking known breakage of 3513.10 'git_revert: replace submodule containing a .git directory with a file must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_file origin/replace_sub1_with_file &&
replace_gitfile_with_git_dir sub1 &&
$command replace_sub1_with_file test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_git_directory_is_unchanged sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
Switched to branch 'replace_sub1_with_file'
Your branch is up to date with 'origin/replace_sub1_with_file'.
test_must_fail: command succeeded: git checkout replace_sub1_with_file
not ok 10 - git_revert: replace submodule containing a .git directory with a file must fail # TODO known breakage
expecting success of 3513.11 'git_revert: modified submodule does not update submodule work tree':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t modify_sub1 origin/modify_sub1 &&
$command modify_sub1 &&
test_superproject_content origin/modify_sub1 &&
test_submodule_content sub1 origin/add_sub1 &&
git submodule update &&
test_submodule_content sub1 origin/modify_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'modify_sub1' set up to track 'origin/modify_sub1'.
Switched to branch 'modify_sub1'
Your branch is up to date with 'origin/modify_sub1'.
[modify_sub1 d25c1ce] Revert "Modify sub1"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
[modify_sub1 b56a15a] Revert "Revert "Modify sub1""
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
Submodule path 'sub1': checked out '03da4ea88bb165bd26ee0b2e5c657f2858b23f53'
ok 11 - git_revert: modified submodule does not update submodule work tree
expecting success of 3513.12 'git_revert: modified submodule does not update submodule work tree to invalid commit':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t invalid_sub1 origin/invalid_sub1 &&
$command invalid_sub1 &&
test_superproject_content origin/invalid_sub1 &&
test_submodule_content sub1 origin/add_sub1 &&
test_must_fail git submodule update &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'invalid_sub1' set up to track 'origin/invalid_sub1'.
Switched to branch 'invalid_sub1'
Your branch is up to date with 'origin/invalid_sub1'.
[invalid_sub1 3036e4e] Revert "Invalid sub1 commit"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
[invalid_sub1 af7d5fb] Revert "Revert "Invalid sub1 commit""
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
fatal: remote error: upload-pack: not our ref 0123456789012345678901234567890123456789
fatal: Fetched in submodule path 'sub1', but it did not contain 0123456789012345678901234567890123456789. Direct fetching of that commit failed.
fatal: git upload-pack: not our ref 0123456789012345678901234567890123456789
ok 12 - git_revert: modified submodule does not update submodule work tree to invalid commit
expecting success of 3513.13 'git_revert: modified submodule does not update submodule work tree from invalid commit':
prolog &&
reset_work_tree_to invalid_sub1 &&
(
cd submodule_update &&
git branch -t valid_sub1 origin/valid_sub1 &&
$command valid_sub1 &&
test_superproject_content origin/valid_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/valid_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'invalid_sub1'
branch 'invalid_sub1' set up to track 'origin/invalid_sub1'.
fatal: Needed a single revision
branch 'valid_sub1' set up to track 'origin/valid_sub1'.
Switched to branch 'valid_sub1'
Your branch is up to date with 'origin/valid_sub1'.
[valid_sub1 af7d5fb] Revert "Revert "Invalid sub1 commit""
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
[valid_sub1 eb4fc36] Revert "Revert "Revert "Invalid sub1 commit"""
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3513-revert-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Submodule path 'uninitialized_sub': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 13 - git_revert: modified submodule does not update submodule work tree from invalid commit
expecting success of 3513.14 'git_revert: added submodule doesn't remove untracked unignored file with same name':
prolog &&
reset_work_tree_to no_submodule &&
(
cd submodule_update &&
git branch -t add_sub1 origin/add_sub1 &&
>sub1 &&
$command add_sub1 test_must_fail &&
test_superproject_content origin/no_submodule &&
test_must_be_empty sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
error: The following untracked working tree files would be overwritten by checkout:
sub1
Please move or remove them before you switch branches.
Aborting
ok 14 - git_revert: added submodule doesn't remove untracked unignored file with same name
# still have 2 known breakage(s)
# passed all remaining 12 test(s)
1..14
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3702-add-edit.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3702-add-edit/.git/
expecting success of 3702.1 'setup':
git add file &&
test_tick &&
git commit -m initial file
[master (root-commit) e055285] initial
Author: A U Thor <author@example.com>
1 file changed, 11 insertions(+)
create mode 100644 file
ok 1 - setup
expecting success of 3702.2 'add -e':
cp second-part file &&
git add -e &&
test_cmp second-part file &&
test_cmp expected-patch orig-patch &&
git diff --cached >actual &&
grep -v index actual >out &&
test_cmp expected out
ok 2 - add -e
expecting success of 3702.3 'add -e notices editor failure':
git reset --hard &&
echo change >>file &&
test_must_fail env GIT_EDITOR=false git add -e &&
test_expect_code 1 git diff --exit-code
HEAD is now at e055285 initial
error: There was a problem with the editor 'false'.
fatal: editing patch failed
diff --git a/file b/file
index b9834b5..cce9ee2 100644
--- a/file
+++ b/file
@@ -9,3 +9,4 @@ for he waxed under welkin, in wealth he throve,
till before him the folk, both far and near,
who house by the whale-path, heard his mandate,
gave him gifts: a good king he!
+change
ok 3 - add -e notices editor failure
# passed all 3 test(s)
1..3
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3703-add-magic-pathspec.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3703-add-magic-pathspec/.git/
expecting success of 3703.1 'setup':
mkdir sub anothersub &&
: >sub/foo &&
: >anothersub/foo
ok 1 - setup
expecting success of 3703.2 'add :/':
cat >expected <<-EOF &&
add 'anothersub/foo'
add 'expected'
add 'sub/actual'
add 'sub/foo'
EOF
(cd sub && git add -n :/ >actual) &&
test_cmp expected sub/actual
ok 2 - add :/
expecting success of 3703.3 'add :/anothersub':
(cd sub && git add -n :/anothersub >actual) &&
test_cmp expected sub/actual
ok 3 - add :/anothersub
expecting success of 3703.4 'add :/non-existent':
(cd sub && test_must_fail git add -n :/non-existent)
fatal: pathspec ':/non-existent' did not match any files
ok 4 - add :/non-existent
expecting success of 3703.5 'a file with the same (long) magic name exists':
: >":(icase)ha" &&
test_must_fail git add -n ":(icase)ha" &&
git add -n "./:(icase)ha"
fatal: pathspec ':(icase)ha' did not match any files
add ':(icase)ha'
ok 5 - a file with the same (long) magic name exists
expecting success of 3703.6 'a file with the same (short) magic name exists':
: >":/bar" &&
test_must_fail git add -n :/bar &&
git add -n "./:/bar"
fatal: pathspec ':/bar' did not match any files
add ':/bar'
ok 6 - a file with the same (short) magic name exists
# passed all 6 test(s)
1..6
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3700-add.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3700-add/.git/
expecting success of 3700.1 'Test of git add':
touch foo && git add foo
ok 1 - Test of git add
expecting success of 3700.2 'Post-check that foo is in the index':
git ls-files foo | grep foo
foo
ok 2 - Post-check that foo is in the index
expecting success of 3700.3 'Test that "git add -- -q" works':
touch -- -q && git add -- -q
ok 3 - Test that "git add -- -q" works
expecting success of 3700.4 'git add: core.fsyncmethod=batch':
test_create_unique_files 2 4 files_base_dir1 &&
GIT_TEST_FSYNC=1 git -c core.fsync=loose-object -c core.fsyncmethod=batch add -- ./files_base_dir1/ &&
git ls-files --stage files_base_dir1/ |
test_parse_ls_files_stage_oids >added_files_oids &&
# We created 2 subdirs with 4 files each (8 files total) above
test_line_count = 8 added_files_oids &&
git cat-file --batch-check='%(objectname)' <added_files_oids >added_files_actual &&
test_cmp added_files_oids added_files_actual
ok 4 - git add: core.fsyncmethod=batch
expecting success of 3700.5 'git update-index: core.fsyncmethod=batch':
test_create_unique_files 2 4 files_base_dir2 &&
find files_base_dir2 ! -type d -print | xargs git -c core.fsync=loose-object -c core.fsyncmethod=batch update-index --add -- &&
git ls-files --stage files_base_dir2 |
test_parse_ls_files_stage_oids >added_files2_oids &&
# We created 2 subdirs with 4 files each (8 files total) above
test_line_count = 8 added_files2_oids &&
git cat-file --batch-check='%(objectname)' <added_files2_oids >added_files2_actual &&
test_cmp added_files2_oids added_files2_actual
ok 5 - git update-index: core.fsyncmethod=batch
expecting success of 3700.6 'git add: Test that executable bit is not used if core.filemode=0': git config core.filemode 0 &&
echo foo >xfoo1 &&
chmod 755 xfoo1 &&
git add xfoo1 &&
test_mode_in_index 100644 xfoo1
pass
ok 6 - git add: Test that executable bit is not used if core.filemode=0
expecting success of 3700.7 'git add: filemode=0 should not get confused by symlink':
rm -f xfoo1 &&
test_ln_s_add foo xfoo1 &&
test_mode_in_index 120000 xfoo1
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
pass
ok 7 - git add: filemode=0 should not get confused by symlink
expecting success of 3700.8 'git update-index --add: Test that executable bit is not used...': git config core.filemode 0 &&
echo foo >xfoo2 &&
chmod 755 xfoo2 &&
git update-index --add xfoo2 &&
test_mode_in_index 100644 xfoo2
pass
ok 8 - git update-index --add: Test that executable bit is not used...
expecting success of 3700.9 'git add: filemode=0 should not get confused by symlink':
rm -f xfoo2 &&
test_ln_s_add foo xfoo2 &&
test_mode_in_index 120000 xfoo2
pass
ok 9 - git add: filemode=0 should not get confused by symlink
expecting success of 3700.10 'git update-index --add: Test that executable bit is not used...': git config core.filemode 0 &&
test_ln_s_add xfoo2 xfoo3 && # runs git update-index --add
test_mode_in_index 120000 xfoo3
pass
ok 10 - git update-index --add: Test that executable bit is not used...
expecting success of 3700.11 '.gitignore test setup':
echo "*.ig" >.gitignore &&
mkdir c.if d.ig &&
>a.ig && >b.if &&
>c.if/c.if && >c.if/c.ig &&
>d.ig/d.if && >d.ig/d.ig
ok 11 - .gitignore test setup
expecting success of 3700.12 '.gitignore is honored':
git add . &&
git ls-files >files &&
sed -n "/\\.ig/p" <files >actual &&
test_must_be_empty actual
ok 12 - .gitignore is honored
expecting success of 3700.13 'error out when attempting to add ignored ones without -f':
test_must_fail git add a.?? &&
git ls-files >files &&
sed -n "/\\.ig/p" <files >actual &&
test_must_be_empty actual
The following paths are ignored by one of your .gitignore files:
a.ig
hint: Use -f if you really want to add them.
hint: Turn this message off by running
hint: "git config advice.addIgnoredFile false"
ok 13 - error out when attempting to add ignored ones without -f
expecting success of 3700.14 'error out when attempting to add ignored ones without -f':
test_must_fail git add d.?? &&
git ls-files >files &&
sed -n "/\\.ig/p" <files >actual &&
test_must_be_empty actual
The following paths are ignored by one of your .gitignore files:
d.ig
hint: Use -f if you really want to add them.
hint: Turn this message off by running
hint: "git config advice.addIgnoredFile false"
ok 14 - error out when attempting to add ignored ones without -f
expecting success of 3700.15 'error out when attempting to add ignored ones but add others':
touch a.if &&
test_must_fail git add a.?? &&
git ls-files >files &&
sed -n "/\\.ig/p" <files >actual &&
test_must_be_empty actual &&
grep a.if files
The following paths are ignored by one of your .gitignore files:
a.ig
hint: Use -f if you really want to add them.
hint: Turn this message off by running
hint: "git config advice.addIgnoredFile false"
a.if
ok 15 - error out when attempting to add ignored ones but add others
expecting success of 3700.16 'add ignored ones with -f':
git add -f a.?? &&
git ls-files --error-unmatch a.ig
a.ig
ok 16 - add ignored ones with -f
expecting success of 3700.17 'add ignored ones with -f':
git add -f d.??/* &&
git ls-files --error-unmatch d.ig/d.if d.ig/d.ig
d.ig/d.if
d.ig/d.ig
ok 17 - add ignored ones with -f
expecting success of 3700.18 'add ignored ones with -f':
rm -f .git/index &&
git add -f d.?? &&
git ls-files --error-unmatch d.ig/d.if d.ig/d.ig
d.ig/d.if
d.ig/d.ig
ok 18 - add ignored ones with -f
expecting success of 3700.19 '.gitignore with subdirectory':
rm -f .git/index &&
mkdir -p sub/dir &&
echo "!dir/a.*" >sub/.gitignore &&
>sub/a.ig &&
>sub/dir/a.ig &&
git add sub/dir &&
git ls-files --error-unmatch sub/dir/a.ig &&
rm -f .git/index &&
(
cd sub/dir &&
git add .
) &&
git ls-files --error-unmatch sub/dir/a.ig
sub/dir/a.ig
sub/dir/a.ig
ok 19 - .gitignore with subdirectory
expecting success of 3700.20 'check correct prefix detection':
rm -f .git/index &&
git add 1/2/a 1/3/b 1/2/c
ok 20 - check correct prefix detection
expecting success of 3700.21 'git add with filemode=0, symlinks=0, and unmerged entries':
for s in 1 2 3
do
echo $s > stage$s &&
echo "100755 $(git hash-object -w stage$s) $s file" &&
echo "120000 $(printf $s | git hash-object -w -t blob --stdin) $s symlink" || return 1
done | git update-index --index-info &&
git config core.filemode 0 &&
git config core.symlinks 0 &&
echo new > file &&
echo new > symlink &&
git add file symlink &&
git ls-files --stage | grep "^100755 .* 0 file$" &&
git ls-files --stage | grep "^120000 .* 0 symlink$"
100755 3e757656cf36eca53338e520d134963a44f793f8 0 file
120000 3e757656cf36eca53338e520d134963a44f793f8 0 symlink
ok 21 - git add with filemode=0, symlinks=0, and unmerged entries
expecting success of 3700.22 'git add with filemode=0, symlinks=0 prefers stage 2 over stage 1':
git rm --cached -f file symlink &&
(
echo "100644 $(git hash-object -w stage1) 1 file" &&
echo "100755 $(git hash-object -w stage2) 2 file" &&
echo "100644 $(printf 1 | git hash-object -w -t blob --stdin) 1 symlink" &&
echo "120000 $(printf 2 | git hash-object -w -t blob --stdin) 2 symlink"
) | git update-index --index-info &&
git config core.filemode 0 &&
git config core.symlinks 0 &&
echo new > file &&
echo new > symlink &&
git add file symlink &&
git ls-files --stage | grep "^100755 .* 0 file$" &&
git ls-files --stage | grep "^120000 .* 0 symlink$"
rm 'file'
rm 'symlink'
100755 3e757656cf36eca53338e520d134963a44f793f8 0 file
120000 3e757656cf36eca53338e520d134963a44f793f8 0 symlink
ok 22 - git add with filemode=0, symlinks=0 prefers stage 2 over stage 1
expecting success of 3700.23 'git add --refresh':
>foo && git add foo && git commit -a -m "commit all" &&
test -z "$(git diff-index HEAD -- foo)" &&
git read-tree HEAD &&
case "$(git diff-index HEAD -- foo)" in
:100644" "*"M foo") echo pass;;
*) echo fail; false;;
esac &&
git add --refresh -- foo &&
test -z "$(git diff-index HEAD -- foo)"
[master (root-commit) 0254e3c] commit all
Author: A U Thor <author@example.com>
6 files changed, 2 insertions(+)
create mode 100644 1/2/a
create mode 100644 1/2/c
create mode 100644 1/3/b
create mode 100755 file
create mode 100644 foo
create mode 120000 symlink
pass
ok 23 - git add --refresh
expecting success of 3700.24 'git add --refresh with pathspec':
git reset --hard &&
echo >foo && echo >bar && echo >baz &&
git add foo bar baz && H=$(git rev-parse :foo) && git rm -f foo &&
echo "100644 $H 3 foo" | git update-index --index-info &&
test-tool chmtime -60 bar baz &&
git add --refresh bar >actual &&
test_must_be_empty actual &&
git diff-files --name-only >actual &&
! grep bar actual &&
grep baz actual
HEAD is now at 0254e3c commit all
rm 'foo'
baz
ok 24 - git add --refresh with pathspec
expecting success of 3700.25 'git add --refresh correctly reports no match error':
echo "fatal: pathspec ':(icase)nonexistent' did not match any files" >expect &&
test_must_fail git add --refresh ':(icase)nonexistent' 2>actual &&
test_cmp expect actual
ok 25 - git add --refresh correctly reports no match error
checking prerequisite: SANITY
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SANITY" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SANITY" &&
mkdir SANETESTD.1 SANETESTD.2 &&
chmod +w SANETESTD.1 SANETESTD.2 &&
>SANETESTD.1/x 2>SANETESTD.2/x &&
chmod -w SANETESTD.1 &&
chmod -r SANETESTD.1/x &&
chmod -rx SANETESTD.2 ||
BUG "cannot prepare SANETESTD"
! test -r SANETESTD.1/x &&
! rm SANETESTD.1/x && ! test -f SANETESTD.2/x
status=$?
chmod +rwx SANETESTD.1 SANETESTD.2 &&
rm -rf SANETESTD.1 SANETESTD.2 ||
BUG "cannot clean SANETESTD"
return $status
)
rm: cannot remove 'SANETESTD.1/x': Permission denied
prerequisite SANITY ok
expecting success of 3700.26 'git add should fail atomically upon an unreadable file':
git reset --hard &&
date >foo1 &&
date >foo2 &&
chmod 0 foo2 &&
test_must_fail git add --verbose . &&
! ( git ls-files foo1 | grep foo1 )
HEAD is now at 0254e3c commit all
error: open("foo2"): Permission denied
error: unable to index file 'foo2'
fatal: adding files failed
add '-q'
add '.gitignore'
add 'a.if'
add 'actual'
add 'added_files2_actual'
add 'added_files2_oids'
add 'added_files_actual'
add 'added_files_oids'
add 'b.if'
add 'c.if/c.if'
add 'expect'
add 'files'
add 'files_base_dir1/dir1/file1.txt'
add 'files_base_dir1/dir1/file2.txt'
add 'files_base_dir1/dir1/file3.txt'
add 'files_base_dir1/dir1/file4.txt'
add 'files_base_dir1/dir2/file1.txt'
add 'files_base_dir1/dir2/file2.txt'
add 'files_base_dir1/dir2/file3.txt'
add 'files_base_dir1/dir2/file4.txt'
add 'files_base_dir2/dir1/file1.txt'
add 'files_base_dir2/dir1/file2.txt'
add 'files_base_dir2/dir1/file3.txt'
add 'files_base_dir2/dir1/file4.txt'
add 'files_base_dir2/dir2/file1.txt'
add 'files_base_dir2/dir2/file2.txt'
add 'files_base_dir2/dir2/file3.txt'
add 'files_base_dir2/dir2/file4.txt'
add 'foo1'
ok 26 - git add should fail atomically upon an unreadable file
expecting success of 3700.27 'git add --ignore-errors':
git reset --hard &&
date >foo1 &&
date >foo2 &&
chmod 0 foo2 &&
test_must_fail git add --verbose --ignore-errors . &&
git ls-files foo1 | grep foo1
HEAD is now at 0254e3c commit all
error: open("foo2"): Permission denied
error: unable to index file 'foo2'
add '-q'
add '.gitignore'
add 'a.if'
add 'actual'
add 'added_files2_actual'
add 'added_files2_oids'
add 'added_files_actual'
add 'added_files_oids'
add 'b.if'
add 'c.if/c.if'
add 'expect'
add 'files'
add 'files_base_dir1/dir1/file1.txt'
add 'files_base_dir1/dir1/file2.txt'
add 'files_base_dir1/dir1/file3.txt'
add 'files_base_dir1/dir1/file4.txt'
add 'files_base_dir1/dir2/file1.txt'
add 'files_base_dir1/dir2/file2.txt'
add 'files_base_dir1/dir2/file3.txt'
add 'files_base_dir1/dir2/file4.txt'
add 'files_base_dir2/dir1/file1.txt'
add 'files_base_dir2/dir1/file2.txt'
add 'files_base_dir2/dir1/file3.txt'
add 'files_base_dir2/dir1/file4.txt'
add 'files_base_dir2/dir2/file1.txt'
add 'files_base_dir2/dir2/file2.txt'
add 'files_base_dir2/dir2/file3.txt'
add 'files_base_dir2/dir2/file4.txt'
add 'foo1'
add 'stage1'
add 'stage2'
add 'stage3'
add 'sub/.gitignore'
add 'sub/dir/a.ig'
add 'xfoo1'
add 'xfoo2'
add 'xfoo3'
foo1
ok 27 - git add --ignore-errors
expecting success of 3700.28 'git add (add.ignore-errors)':
git config add.ignore-errors 1 &&
git reset --hard &&
date >foo1 &&
date >foo2 &&
chmod 0 foo2 &&
test_must_fail git add --verbose . &&
git ls-files foo1 | grep foo1
HEAD is now at 0254e3c commit all
error: open("foo2"): Permission denied
error: unable to index file 'foo2'
add 'a.ig'
add 'c.if/c.ig'
add 'd.ig/d.if'
add 'd.ig/d.ig'
add 'foo1'
add 'sub/a.ig'
foo1
ok 28 - git add (add.ignore-errors)
expecting success of 3700.29 'git add (add.ignore-errors = false)':
git config add.ignore-errors 0 &&
git reset --hard &&
date >foo1 &&
date >foo2 &&
chmod 0 foo2 &&
test_must_fail git add --verbose . &&
! ( git ls-files foo1 | grep foo1 )
HEAD is now at 0254e3c commit all
error: open("foo2"): Permission denied
error: unable to index file 'foo2'
fatal: adding files failed
add 'foo1'
ok 29 - git add (add.ignore-errors = false)
expecting success of 3700.30 '--no-ignore-errors overrides config':
git config add.ignore-errors 1 &&
git reset --hard &&
date >foo1 &&
date >foo2 &&
chmod 0 foo2 &&
test_must_fail git add --verbose --no-ignore-errors . &&
! ( git ls-files foo1 | grep foo1 ) &&
git config add.ignore-errors 0
HEAD is now at 0254e3c commit all
error: open("foo2"): Permission denied
error: unable to index file 'foo2'
fatal: adding files failed
add 'foo1'
ok 30 - --no-ignore-errors overrides config
expecting success of 3700.31 'git add 'fo\[ou\]bar' ignores foobar':
git reset --hard &&
touch fo\[ou\]bar foobar &&
git add 'fo\[ou\]bar' &&
git ls-files fo\[ou\]bar | grep -F fo\[ou\]bar &&
! ( git ls-files foobar | grep foobar )
HEAD is now at 0254e3c commit all
fo[ou]bar
ok 31 - git add 'fo\[ou\]bar' ignores foobar
expecting success of 3700.32 'git add to resolve conflicts on otherwise ignored path':
git reset --hard &&
H=$(git rev-parse :1/2/a) &&
(
echo "100644 $H 1 track-this" &&
echo "100644 $H 3 track-this"
) | git update-index --index-info &&
echo track-this >>.gitignore &&
echo resolved >track-this &&
git add track-this
HEAD is now at 0254e3c commit all
ok 32 - git add to resolve conflicts on otherwise ignored path
expecting success of 3700.33 '"add non-existent" should fail':
test_must_fail git add non-existent &&
! (git ls-files | grep "non-existent")
fatal: pathspec 'non-existent' did not match any files
ok 33 - "add non-existent" should fail
expecting success of 3700.34 'git add -A on empty repo does not error out':
rm -fr empty &&
git init empty &&
(
cd empty &&
git add -A . &&
git add -A
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3700-add/empty/.git/
ok 34 - git add -A on empty repo does not error out
expecting success of 3700.35 '"git add ." in empty repo':
rm -fr empty &&
git init empty &&
(
cd empty &&
git add .
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3700-add/empty/.git/
ok 35 - "git add ." in empty repo
expecting success of 3700.36 'error on a repository with no commits':
rm -fr empty &&
git init empty &&
test_must_fail git add empty >actual 2>&1 &&
cat >expect <<-EOF &&
error: 'empty/' does not have a commit checked out
fatal: adding files failed
EOF
test_cmp expect actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3700-add/empty/.git/
ok 36 - error on a repository with no commits
expecting success of 3700.37 'git add --dry-run of existing changed file':
echo new >>track-this &&
git add --dry-run track-this >actual 2>&1 &&
echo "add 'track-this'" | test_cmp - actual
ok 37 - git add --dry-run of existing changed file
expecting success of 3700.38 'git add --dry-run of non-existing file':
echo ignored-file >>.gitignore &&
test_must_fail git add --dry-run track-this ignored-file >actual 2>&1
ok 38 - git add --dry-run of non-existing file
expecting success of 3700.39 'git add --dry-run of an existing file output':
echo "fatal: pathspec 'ignored-file' did not match any files" >expect &&
test_cmp expect actual
ok 39 - git add --dry-run of an existing file output
expecting success of 3700.40 'git add --dry-run --ignore-missing of non-existing file':
test_must_fail git add --dry-run --ignore-missing track-this ignored-file >actual.out 2>actual.err
ok 40 - git add --dry-run --ignore-missing of non-existing file
expecting success of 3700.41 'git add --dry-run --ignore-missing of non-existing file output':
test_cmp expect.out actual.out &&
test_cmp expect.err actual.err
ok 41 - git add --dry-run --ignore-missing of non-existing file output
expecting success of 3700.42 'git add --dry-run --interactive should fail':
test_must_fail git add --dry-run --interactive
fatal: options '--dry-run' and '--interactive/--patch' cannot be used together
ok 42 - git add --dry-run --interactive should fail
expecting success of 3700.43 'git add empty string should fail':
test_must_fail git add ""
fatal: empty string is not a valid pathspec. please use . instead if you meant to match all paths
ok 43 - git add empty string should fail
expecting success of 3700.44 'git add --chmod=[+-]x stages correctly':
rm -f foo1 &&
echo foo >foo1 &&
git add --chmod=+x foo1 &&
test_mode_in_index 100755 foo1 &&
git add --chmod=-x foo1 &&
test_mode_in_index 100644 foo1
pass
pass
ok 44 - git add --chmod=[+-]x stages correctly
expecting success of 3700.45 'git add --chmod=+x with symlinks':
git config core.filemode 1 &&
git config core.symlinks 1 &&
rm -f foo2 &&
echo foo >foo2 &&
git add --chmod=+x foo2 &&
test_mode_in_index 100755 foo2
pass
ok 45 - git add --chmod=+x with symlinks
expecting success of 3700.46 'git add --chmod=[+-]x changes index with already added file':
rm -f foo3 xfoo3 &&
git reset --hard &&
echo foo >foo3 &&
git add foo3 &&
git add --chmod=+x foo3 &&
test_mode_in_index 100755 foo3 &&
echo foo >xfoo3 &&
chmod 755 xfoo3 &&
git add xfoo3 &&
git add --chmod=-x xfoo3 &&
test_mode_in_index 100644 xfoo3
HEAD is now at 0254e3c commit all
pass
pass
ok 46 - git add --chmod=[+-]x changes index with already added file
expecting success of 3700.47 'git add --chmod=[+-]x does not change the working tree':
echo foo >foo4 &&
git add foo4 &&
git add --chmod=+x foo4 &&
! test -x foo4
ok 47 - git add --chmod=[+-]x does not change the working tree
expecting success of 3700.48 'git add --chmod fails with non regular files (but updates the other paths)':
git reset --hard &&
test_ln_s_add foo foo3 &&
touch foo4 &&
test_must_fail git add --chmod=+x foo3 foo4 2>stderr &&
test_i18ngrep "cannot chmod +x .foo3." stderr &&
test_mode_in_index 120000 foo3 &&
test_mode_in_index 100755 foo4
HEAD is now at 0254e3c commit all
error: cannot chmod +x 'foo3'
pass
pass
ok 48 - git add --chmod fails with non regular files (but updates the other paths)
expecting success of 3700.49 'git add --chmod honors --dry-run':
git reset --hard &&
echo foo >foo4 &&
git add foo4 &&
git add --chmod=+x --dry-run foo4 &&
test_mode_in_index 100644 foo4
HEAD is now at 0254e3c commit all
pass
ok 49 - git add --chmod honors --dry-run
expecting success of 3700.50 'git add --chmod --dry-run reports error for non regular files':
git reset --hard &&
test_ln_s_add foo foo4 &&
test_must_fail git add --chmod=+x --dry-run foo4 2>stderr &&
test_i18ngrep "cannot chmod +x .foo4." stderr
HEAD is now at 0254e3c commit all
error: cannot chmod +x 'foo4'
ok 50 - git add --chmod --dry-run reports error for non regular files
expecting success of 3700.51 'git add --chmod --dry-run reports error for unmatched pathspec':
test_must_fail git add --chmod=+x --dry-run nonexistent 2>stderr &&
test_i18ngrep "pathspec .nonexistent. did not match any files" stderr
fatal: pathspec 'nonexistent' did not match any files
ok 51 - git add --chmod --dry-run reports error for unmatched pathspec
expecting success of 3700.52 'no file status change if no pathspec is given':
>foo5 &&
>foo6 &&
git add foo5 foo6 &&
git add --chmod=+x &&
test_mode_in_index 100644 foo5 &&
test_mode_in_index 100644 foo6
Nothing specified, nothing added.
hint: Maybe you wanted to say 'git add .'?
hint: Turn this message off by running
hint: "git config advice.addEmptyPathspec false"
pass
pass
ok 52 - no file status change if no pathspec is given
expecting success of 3700.53 'no file status change if no pathspec is given in subdir':
mkdir -p sub &&
(
cd sub &&
>sub-foo1 &&
>sub-foo2 &&
git add . &&
git add --chmod=+x &&
test_mode_in_index 100644 sub-foo1 &&
test_mode_in_index 100644 sub-foo2
)
Nothing specified, nothing added.
hint: Maybe you wanted to say 'git add .'?
hint: Turn this message off by running
hint: "git config advice.addEmptyPathspec false"
pass
pass
ok 53 - no file status change if no pathspec is given in subdir
expecting success of 3700.54 'all statuses changed in folder if . is given':
git init repo &&
(
cd repo &&
mkdir -p sub/dir &&
touch x y z sub/a sub/dir/b &&
git add -A &&
git add --chmod=+x . &&
test $(git ls-files --stage | grep ^100644 | wc -l) -eq 0 &&
git add --chmod=-x . &&
test $(git ls-files --stage | grep ^100755 | wc -l) -eq 0
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3700-add/repo/.git/
ok 54 - all statuses changed in folder if . is given
checking prerequisite: CASE_INSENSITIVE_FS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-CASE_INSENSITIVE_FS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-CASE_INSENSITIVE_FS" &&
echo good >CamelCase &&
echo bad >camelcase &&
test "$(cat CamelCase)" != good
)
prerequisite CASE_INSENSITIVE_FS not satisfied
ok 55 # skip path is case-insensitive (missing CASE_INSENSITIVE_FS)
# passed all 55 test(s)
1..55
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3704-add-pathspec-file.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3704-add-pathspec-file/.git/
expecting success of 3704.1 'setup':
test_commit file0 &&
echo A >fileA.t &&
echo B >fileB.t &&
echo C >fileC.t &&
echo D >fileD.t
[master (root-commit) ad2e047] file0
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file0.t
ok 1 - setup
expecting success of 3704.2 '--pathspec-from-file from stdin':
restore_checkpoint &&
echo fileA.t | git add --pathspec-from-file=- &&
cat >expect <<-\EOF &&
A fileA.t
EOF
verify_expect
ok 2 - --pathspec-from-file from stdin
expecting success of 3704.3 '--pathspec-from-file from file':
restore_checkpoint &&
echo fileA.t >list &&
git add --pathspec-from-file=list &&
cat >expect <<-\EOF &&
A fileA.t
EOF
verify_expect
ok 3 - --pathspec-from-file from file
expecting success of 3704.4 'NUL delimiters':
restore_checkpoint &&
printf "fileA.t\0fileB.t\0" | git add --pathspec-from-file=- --pathspec-file-nul &&
cat >expect <<-\EOF &&
A fileA.t
A fileB.t
EOF
verify_expect
ok 4 - NUL delimiters
expecting success of 3704.5 'LF delimiters':
restore_checkpoint &&
printf "fileA.t\nfileB.t\n" | git add --pathspec-from-file=- &&
cat >expect <<-\EOF &&
A fileA.t
A fileB.t
EOF
verify_expect
ok 5 - LF delimiters
expecting success of 3704.6 'no trailing delimiter':
restore_checkpoint &&
printf "fileA.t\nfileB.t" | git add --pathspec-from-file=- &&
cat >expect <<-\EOF &&
A fileA.t
A fileB.t
EOF
verify_expect
ok 6 - no trailing delimiter
expecting success of 3704.7 'CRLF delimiters':
restore_checkpoint &&
printf "fileA.t\r\nfileB.t\r\n" | git add --pathspec-from-file=- &&
cat >expect <<-\EOF &&
A fileA.t
A fileB.t
EOF
verify_expect
ok 7 - CRLF delimiters
expecting success of 3704.8 'quotes':
restore_checkpoint &&
cat >list <<-\EOF &&
"file\101.t"
EOF
git add --pathspec-from-file=list &&
cat >expect <<-\EOF &&
A fileA.t
EOF
verify_expect
ok 8 - quotes
expecting success of 3704.9 'quotes not compatible with --pathspec-file-nul':
restore_checkpoint &&
cat >list <<-\EOF &&
"file\101.t"
EOF
test_must_fail git add --pathspec-from-file=list --pathspec-file-nul
fatal: pathspec '"file\101.t"
' did not match any files
ok 9 - quotes not compatible with --pathspec-file-nul
expecting success of 3704.10 'only touches what was listed':
restore_checkpoint &&
printf "fileB.t\nfileC.t\n" | git add --pathspec-from-file=- &&
cat >expect <<-\EOF &&
A fileB.t
A fileC.t
EOF
verify_expect
ok 10 - only touches what was listed
expecting success of 3704.11 'error conditions':
restore_checkpoint &&
echo fileA.t >list &&
>empty_list &&
test_must_fail git add --pathspec-from-file=list --interactive 2>err &&
test_i18ngrep -e "options .--pathspec-from-file. and .--interactive/--patch. cannot be used together" err &&
test_must_fail git add --pathspec-from-file=list --patch 2>err &&
test_i18ngrep -e "options .--pathspec-from-file. and .--interactive/--patch. cannot be used together" err &&
test_must_fail git add --pathspec-from-file=list --edit 2>err &&
test_i18ngrep -e "options .--pathspec-from-file. and .--edit. cannot be used together" err &&
test_must_fail git add --pathspec-from-file=list -- fileA.t 2>err &&
test_i18ngrep -e ".--pathspec-from-file. and pathspec arguments cannot be used together" err &&
test_must_fail git add --pathspec-file-nul 2>err &&
test_i18ngrep -e "the option .--pathspec-file-nul. requires .--pathspec-from-file." err &&
# This case succeeds, but still prints to stderr
git add --pathspec-from-file=empty_list 2>err &&
test_i18ngrep -e "Nothing specified, nothing added." err
fatal: options '--pathspec-from-file' and '--interactive/--patch' cannot be used together
fatal: options '--pathspec-from-file' and '--interactive/--patch' cannot be used together
fatal: options '--pathspec-from-file' and '--edit' cannot be used together
fatal: '--pathspec-from-file' and pathspec arguments cannot be used together
fatal: the option '--pathspec-file-nul' requires '--pathspec-from-file'
Nothing specified, nothing added.
ok 11 - error conditions
# passed all 11 test(s)
1..11
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3705-add-sparse-checkout.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3705-add-sparse-checkout/.git/
expecting success of 3705.1 'setup':
cat >sparse_error_header <<-EOF &&
The following paths and/or pathspecs matched paths that exist
outside of your sparse-checkout definition, so will not be
updated in the index:
EOF
cat >sparse_hint <<-EOF &&
hint: If you intend to update such entries, try one of the following:
hint: * Use the --sparse option.
hint: * Disable or modify the sparsity rules.
hint: Disable this message with "git config advice.updateSparsePath false"
EOF
echo sparse_entry | cat sparse_error_header - >sparse_entry_error &&
cat sparse_entry_error sparse_hint >error_and_hint
ok 1 - setup
expecting success of 3705.2 'git add does not remove sparse entries':
setup_sparse_entry &&
rm sparse_entry &&
test_must_fail git add sparse_entry 2>stderr &&
test_sparse_entry_unstaged &&
test_cmp error_and_hint stderr &&
test_sparse_entry_unchanged
[master (root-commit) c0e866f] ensure sparse_entry exists at HEAD
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 sparse_entry
ok 2 - git add does not remove sparse entries
expecting success of 3705.3 'git add -A does not remove sparse entries':
setup_sparse_entry &&
rm sparse_entry &&
setup_gitignore &&
git add -A 2>stderr &&
test_must_be_empty stderr &&
test_sparse_entry_unchanged
[master 5de8edd] ensure sparse_entry exists at HEAD
Author: A U Thor <author@example.com>
ok 3 - git add -A does not remove sparse entries
expecting success of 3705.4 'git add . does not remove sparse entries':
setup_sparse_entry &&
rm sparse_entry &&
setup_gitignore &&
test_must_fail git add . 2>stderr &&
test_sparse_entry_unstaged &&
cat sparse_error_header >expect &&
echo . >>expect &&
cat sparse_hint >>expect &&
test_cmp expect stderr &&
test_sparse_entry_unchanged
[master e79cbb6] ensure sparse_entry exists at HEAD
Author: A U Thor <author@example.com>
ok 4 - git add . does not remove sparse entries
expecting success of 3705.5 'git add does not update sparse entries':
setup_sparse_entry &&
echo modified >sparse_entry &&
test_must_fail git add $opt sparse_entry 2>stderr &&
test_sparse_entry_unstaged &&
test_cmp error_and_hint stderr &&
test_sparse_entry_unchanged
[master 52a8d7c] ensure sparse_entry exists at HEAD
Author: A U Thor <author@example.com>
ok 5 - git add does not update sparse entries
expecting success of 3705.6 'git add -f does not update sparse entries':
setup_sparse_entry &&
echo modified >sparse_entry &&
test_must_fail git add $opt sparse_entry 2>stderr &&
test_sparse_entry_unstaged &&
test_cmp error_and_hint stderr &&
test_sparse_entry_unchanged
[master 6e383d3] ensure sparse_entry exists at HEAD
Author: A U Thor <author@example.com>
ok 6 - git add -f does not update sparse entries
expecting success of 3705.7 'git add -u does not update sparse entries':
setup_sparse_entry &&
echo modified >sparse_entry &&
test_must_fail git add $opt sparse_entry 2>stderr &&
test_sparse_entry_unstaged &&
test_cmp error_and_hint stderr &&
test_sparse_entry_unchanged
[master bb85fed] ensure sparse_entry exists at HEAD
Author: A U Thor <author@example.com>
ok 7 - git add -u does not update sparse entries
expecting success of 3705.8 'git add --ignore-removal does not update sparse entries':
setup_sparse_entry &&
echo modified >sparse_entry &&
test_must_fail git add $opt sparse_entry 2>stderr &&
test_sparse_entry_unstaged &&
test_cmp error_and_hint stderr &&
test_sparse_entry_unchanged
[master 2bced02] ensure sparse_entry exists at HEAD
Author: A U Thor <author@example.com>
ok 8 - git add --ignore-removal does not update sparse entries
expecting success of 3705.9 'git add --dry-run does not update sparse entries':
setup_sparse_entry &&
echo modified >sparse_entry &&
test_must_fail git add $opt sparse_entry 2>stderr &&
test_sparse_entry_unstaged &&
test_cmp error_and_hint stderr &&
test_sparse_entry_unchanged
[master 1fb2ac0] ensure sparse_entry exists at HEAD
Author: A U Thor <author@example.com>
ok 9 - git add --dry-run does not update sparse entries
expecting success of 3705.10 'git add --refresh does not update sparse entries':
setup_sparse_entry &&
git ls-files --debug sparse_entry | grep mtime >before &&
test-tool chmtime -60 sparse_entry &&
test_must_fail git add --refresh sparse_entry 2>stderr &&
test_sparse_entry_unstaged &&
test_cmp error_and_hint stderr &&
git ls-files --debug sparse_entry | grep mtime >after &&
test_cmp before after
[master b9f487e] ensure sparse_entry exists at HEAD
Author: A U Thor <author@example.com>
ok 10 - git add --refresh does not update sparse entries
expecting success of 3705.11 'git add --chmod does not update sparse entries':
setup_sparse_entry &&
test_must_fail git add --chmod=+x sparse_entry 2>stderr &&
test_sparse_entry_unstaged &&
test_cmp error_and_hint stderr &&
test_sparse_entry_unchanged &&
! test -x sparse_entry
[master 46b5fb2] ensure sparse_entry exists at HEAD
Author: A U Thor <author@example.com>
ok 11 - git add --chmod does not update sparse entries
expecting success of 3705.12 'git add --renormalize does not update sparse entries':
test_when_finished rm .gitattributes &&
test_config core.autocrlf false &&
setup_sparse_entry "LINEONE\r\nLINETWO\r\n" &&
echo "sparse_entry text=auto" >.gitattributes &&
test_must_fail git add --renormalize sparse_entry 2>stderr &&
test_sparse_entry_unstaged &&
test_cmp error_and_hint stderr &&
test_sparse_entry_unchanged
[master 18a544d] ensure sparse_entry exists at HEAD
Author: A U Thor <author@example.com>
1 file changed, 2 insertions(+)
ok 12 - git add --renormalize does not update sparse entries
expecting success of 3705.13 'git add --dry-run --ignore-missing warn on sparse path':
setup_sparse_entry &&
rm sparse_entry &&
test_must_fail git add --dry-run --ignore-missing sparse_entry 2>stderr &&
test_sparse_entry_unstaged &&
test_cmp error_and_hint stderr &&
test_sparse_entry_unchanged
[master c192c51] ensure sparse_entry exists at HEAD
Author: A U Thor <author@example.com>
1 file changed, 2 deletions(-)
ok 13 - git add --dry-run --ignore-missing warn on sparse path
expecting success of 3705.14 'do not advice about sparse entries when they do not match the pathspec':
setup_sparse_entry &&
test_must_fail git add nonexistent 2>stderr &&
grep "fatal: pathspec .nonexistent. did not match any files" stderr &&
! grep -F -f sparse_error_header stderr
[master f9f36a2] ensure sparse_entry exists at HEAD
Author: A U Thor <author@example.com>
fatal: pathspec 'nonexistent' did not match any files
ok 14 - do not advice about sparse entries when they do not match the pathspec
expecting success of 3705.15 'do not warn when pathspec matches dense entries':
setup_sparse_entry &&
echo modified >sparse_entry &&
>dense_entry &&
git add "*_entry" 2>stderr &&
test_must_be_empty stderr &&
test_sparse_entry_unchanged &&
git ls-files --error-unmatch dense_entry
[master 8db759d] ensure sparse_entry exists at HEAD
Author: A U Thor <author@example.com>
dense_entry
ok 15 - do not warn when pathspec matches dense entries
expecting success of 3705.16 'git add fails outside of sparse-checkout definition':
test_when_finished git sparse-checkout disable &&
test_commit a &&
git sparse-checkout init --no-cone &&
git sparse-checkout set a &&
echo >>sparse_entry &&
git update-index --no-skip-worktree sparse_entry &&
test_must_fail git add sparse_entry &&
test_sparse_entry_unstaged &&
test_must_fail git add --chmod=+x sparse_entry &&
test_sparse_entry_unstaged &&
test_must_fail git add --renormalize sparse_entry &&
test_sparse_entry_unstaged &&
# Avoid munging CRLFs to avoid an error message
git -c core.autocrlf=input add --sparse sparse_entry 2>stderr &&
test_must_be_empty stderr &&
git ls-files --stage >actual &&
grep "^100644 .*sparse_entry\$" actual &&
git add --sparse --chmod=+x sparse_entry 2>stderr &&
test_must_be_empty stderr &&
git ls-files --stage >actual &&
grep "^100755 .*sparse_entry\$" actual &&
git reset &&
# This will print a message over stderr on Windows.
git add --sparse --renormalize sparse_entry &&
git status --porcelain >actual &&
grep "^M sparse_entry\$" actual
[master 2be48a2] a
Author: A U Thor <author@example.com>
2 files changed, 1 insertion(+)
create mode 100644 a.t
create mode 100644 dense_entry
warning: The following paths were already present and thus not updated despite sparse patterns:
sparse_entry
After fixing the above paths, you may want to run `git sparse-checkout reapply`.
warning: The following paths are not up to date and were left despite sparse patterns:
sparse_entry
After fixing the above paths, you may want to run `git sparse-checkout reapply`.
The following paths and/or pathspecs matched paths that exist
outside of your sparse-checkout definition, so will not be
updated in the index:
sparse_entry
hint: If you intend to update such entries, try one of the following:
hint: * Use the --sparse option.
hint: * Disable or modify the sparsity rules.
hint: Disable this message with "git config advice.updateSparsePath false"
The following paths and/or pathspecs matched paths that exist
outside of your sparse-checkout definition, so will not be
updated in the index:
sparse_entry
hint: If you intend to update such entries, try one of the following:
hint: * Use the --sparse option.
hint: * Disable or modify the sparsity rules.
hint: Disable this message with "git config advice.updateSparsePath false"
The following paths and/or pathspecs matched paths that exist
outside of your sparse-checkout definition, so will not be
updated in the index:
sparse_entry
hint: If you intend to update such entries, try one of the following:
hint: * Use the --sparse option.
hint: * Disable or modify the sparsity rules.
hint: Disable this message with "git config advice.updateSparsePath false"
100644 e0c06d45b9d40f6c18a37e4cab8070a0dc4d2ef1 0 sparse_entry
100755 e0c06d45b9d40f6c18a37e4cab8070a0dc4d2ef1 0 sparse_entry
Unstaged changes after reset:
M sparse_entry
M sparse_entry
ok 16 - git add fails outside of sparse-checkout definition
expecting success of 3705.17 'add obeys advice.updateSparsePath':
setup_sparse_entry &&
test_must_fail git -c advice.updateSparsePath=false add sparse_entry 2>stderr &&
test_sparse_entry_unstaged &&
test_cmp sparse_entry_error stderr
[master 91ae5df] ensure sparse_entry exists at HEAD
Author: A U Thor <author@example.com>
ok 17 - add obeys advice.updateSparsePath
expecting success of 3705.18 'add allows sparse entries with --sparse':
git sparse-checkout set --no-cone a &&
echo modified >sparse_entry &&
test_must_fail git add sparse_entry &&
test_sparse_entry_unchanged &&
git add --sparse sparse_entry 2>stderr &&
test_must_be_empty stderr
The following paths and/or pathspecs matched paths that exist
outside of your sparse-checkout definition, so will not be
updated in the index:
sparse_entry
hint: If you intend to update such entries, try one of the following:
hint: * Use the --sparse option.
hint: * Disable or modify the sparsity rules.
hint: Disable this message with "git config advice.updateSparsePath false"
ok 18 - add allows sparse entries with --sparse
expecting success of 3705.19 'can add files from non-sparse dir':
git sparse-checkout set w !/x y/ &&
mkdir -p w x/y &&
touch w/f x/y/f &&
git add w/f x/y/f 2>stderr &&
test_must_be_empty stderr
ok 19 - can add files from non-sparse dir
expecting success of 3705.20 'refuse to add non-skip-worktree file from sparse dir':
git sparse-checkout set !/x y/ !x/y/z &&
mkdir -p x/y/z &&
touch x/y/z/f &&
test_must_fail git add x/y/z/f 2>stderr &&
echo x/y/z/f | cat sparse_error_header - sparse_hint >expect &&
test_cmp expect stderr
ok 20 - refuse to add non-skip-worktree file from sparse dir
# passed all 20 test(s)
1..20
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3900-i18n-commit.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3900-i18n-commit/.git/
expecting success of 3900.1 'setup':
: >F &&
git add F &&
T=$(git write-tree) &&
C=$(git commit-tree $T <"$TEST_DIRECTORY"/t3900/1-UTF-8.txt) &&
git update-ref HEAD $C &&
git tag C0
ok 1 - setup
expecting success of 3900.2 'no encoding header for base case':
E=$(git cat-file commit C0 | sed -ne "s/^encoding //p") &&
test z = "z$E"
ok 2 - no encoding header for base case
expecting success of 3900.3 'UTF-16 refused because of NULs':
echo UTF-16 >F &&
test_must_fail git commit -a -F "$TEST_DIRECTORY"/t3900/UTF-16.txt
error: a NUL byte in commit log message not allowed.
fatal: failed to write commit object
ok 3 - UTF-16 refused because of NULs
expecting success of 3900.4 'UTF-8 invalid characters refused':
test_when_finished "rm -f \"\$HOME/stderr\" \"\$HOME/invalid\"" &&
echo "UTF-8 characters" >F &&
printf "Commit message\n\nInvalid surrogate:\355\240\200\n" \
>"$HOME/invalid" &&
git commit -a -F "$HOME/invalid" 2>"$HOME"/stderr &&
test_i18ngrep "did not conform" "$HOME"/stderr
[master 97e22ab] Commit message
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
Warning: commit message did not conform to UTF-8.
ok 4 - UTF-8 invalid characters refused
expecting success of 3900.5 'UTF-8 overlong sequences rejected':
test_when_finished "rm -f \"\$HOME/stderr\" \"\$HOME/invalid\"" &&
rm -f "$HOME/stderr" "$HOME/invalid" &&
echo "UTF-8 overlong" >F &&
printf "\340\202\251ommit message\n\nThis is not a space:\300\240\n" \
>"$HOME/invalid" &&
git commit -a -F "$HOME/invalid" 2>"$HOME"/stderr &&
test_i18ngrep "did not conform" "$HOME"/stderr
[master f17d203] à©ommit message
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Warning: commit message did not conform to UTF-8.
ok 5 - UTF-8 overlong sequences rejected
expecting success of 3900.6 'UTF-8 non-characters refused':
test_when_finished "rm -f \"\$HOME/stderr\" \"\$HOME/invalid\"" &&
echo "UTF-8 non-character 1" >F &&
printf "Commit message\n\nNon-character:\364\217\277\276\n" \
>"$HOME/invalid" &&
git commit -a -F "$HOME/invalid" 2>"$HOME"/stderr &&
test_i18ngrep "did not conform" "$HOME"/stderr
[master b54194f] Commit message
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Warning: commit message did not conform to UTF-8.
ok 6 - UTF-8 non-characters refused
expecting success of 3900.7 'UTF-8 non-characters refused':
test_when_finished "rm -f \"\$HOME/stderr\" \"\$HOME/invalid\"" &&
echo "UTF-8 non-character 2." >F &&
printf "Commit message\n\nNon-character:\357\267\220\n" \
>"$HOME/invalid" &&
git commit -a -F "$HOME/invalid" 2>"$HOME"/stderr &&
test_i18ngrep "did not conform" "$HOME"/stderr
[master 65f731d] Commit message
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Warning: commit message did not conform to UTF-8.
ok 7 - UTF-8 non-characters refused
expecting success of 3900.8 'ISO8859-1 setup':
git config i18n.commitencoding $H &&
git checkout -b $H C0 &&
echo $H >F &&
git commit -a -F "$TEST_DIRECTORY"/t3900/$H.txt
Switched to a new branch 'ISO8859-1'
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
ok 8 - ISO8859-1 setup
expecting success of 3900.9 'eucJP setup':
git config i18n.commitencoding $H &&
git checkout -b $H C0 &&
echo $H >F &&
git commit -a -F "$TEST_DIRECTORY"/t3900/$H.txt
Switched to a new branch 'eucJP'
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
ok 9 - eucJP setup
expecting success of 3900.10 'ISO-2022-JP setup':
git config i18n.commitencoding $H &&
git checkout -b $H C0 &&
echo $H >F &&
git commit -a -F "$TEST_DIRECTORY"/t3900/$H.txt
Switched to a new branch 'ISO-2022-JP'
[ISO-2022-JP ae78d6f] $B$O$l$R$[$U(B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
ok 10 - ISO-2022-JP setup
expecting success of 3900.11 'check encoding header for ISO8859-1':
E=$(git cat-file commit ISO8859-1 | sed -ne "s/^encoding //p") &&
test "z$E" = "zISO8859-1"
ok 11 - check encoding header for ISO8859-1
expecting success of 3900.12 'check encoding header for eucJP':
E=$(git cat-file commit eucJP | sed -ne "s/^encoding //p") &&
test "z$E" = "zeucJP"
ok 12 - check encoding header for eucJP
expecting success of 3900.13 'check encoding header for ISO-2022-JP':
E=$(git cat-file commit ISO-2022-JP | sed -ne "s/^encoding //p") &&
test "z$E" = "zISO-2022-JP"
ok 13 - check encoding header for ISO-2022-JP
expecting success of 3900.14 'config to remove customization':
git config --unset-all i18n.commitencoding &&
if Z=$(git config --get-all i18n.commitencoding)
then
echo Oops, should have failed.
false
else
test z = "z$Z"
fi &&
git config i18n.commitencoding UTF-8
ok 14 - config to remove customization
expecting success of 3900.15 'ISO8859-1 should be shown in UTF-8 now':
compare_with ISO8859-1 "$TEST_DIRECTORY"/t3900/1-UTF-8.txt
ok 15 - ISO8859-1 should be shown in UTF-8 now
expecting success of 3900.16 'eucJP should be shown in UTF-8 now':
compare_with eucJP "$TEST_DIRECTORY"/t3900/2-UTF-8.txt
ok 16 - eucJP should be shown in UTF-8 now
expecting success of 3900.17 'ISO-2022-JP should be shown in UTF-8 now':
compare_with ISO-2022-JP "$TEST_DIRECTORY"/t3900/2-UTF-8.txt
ok 17 - ISO-2022-JP should be shown in UTF-8 now
expecting success of 3900.18 'config to add customization':
git config --unset-all i18n.commitencoding &&
if Z=$(git config --get-all i18n.commitencoding)
then
echo Oops, should have failed.
false
else
test z = "z$Z"
fi
ok 18 - config to add customization
expecting success of 3900.19 'ISO8859-1 should be shown in itself now':
git config i18n.commitencoding ISO8859-1 &&
compare_with ISO8859-1 "$TEST_DIRECTORY"/t3900/ISO8859-1.txt
ok 19 - ISO8859-1 should be shown in itself now
expecting success of 3900.20 'eucJP should be shown in itself now':
git config i18n.commitencoding eucJP &&
compare_with eucJP "$TEST_DIRECTORY"/t3900/eucJP.txt
ok 20 - eucJP should be shown in itself now
expecting success of 3900.21 'ISO-2022-JP should be shown in itself now':
git config i18n.commitencoding ISO-2022-JP &&
compare_with ISO-2022-JP "$TEST_DIRECTORY"/t3900/ISO-2022-JP.txt
ok 21 - ISO-2022-JP should be shown in itself now
expecting success of 3900.22 'config to tweak customization':
git config i18n.logoutputencoding UTF-8
ok 22 - config to tweak customization
expecting success of 3900.23 'ISO8859-1 should be shown in UTF-8 now':
compare_with ISO8859-1 "$TEST_DIRECTORY"/t3900/1-UTF-8.txt
ok 23 - ISO8859-1 should be shown in UTF-8 now
expecting success of 3900.24 'eucJP should be shown in UTF-8 now':
compare_with eucJP "$TEST_DIRECTORY"/t3900/2-UTF-8.txt
ok 24 - eucJP should be shown in UTF-8 now
expecting success of 3900.25 'ISO-2022-JP should be shown in UTF-8 now':
compare_with ISO-2022-JP "$TEST_DIRECTORY"/t3900/2-UTF-8.txt
ok 25 - ISO-2022-JP should be shown in UTF-8 now
expecting success of 3900.26 'eucJP should be shown in eucJP now':
compare_with eucJP "$TEST_DIRECTORY"/t3900/eucJP.txt $ICONV
ok 26 - eucJP should be shown in eucJP now
expecting success of 3900.27 'ISO-2022-JP should be shown in eucJP now':
compare_with ISO-2022-JP "$TEST_DIRECTORY"/t3900/eucJP.txt $ICONV
ok 27 - ISO-2022-JP should be shown in eucJP now
expecting success of 3900.28 'eucJP should be shown in ISO-2022-JP now':
compare_with eucJP "$TEST_DIRECTORY"/t3900/ISO-2022-JP.txt $ICONV
ok 28 - eucJP should be shown in ISO-2022-JP now
expecting success of 3900.29 'ISO-2022-JP should be shown in ISO-2022-JP now':
compare_with ISO-2022-JP "$TEST_DIRECTORY"/t3900/ISO-2022-JP.txt $ICONV
ok 29 - ISO-2022-JP should be shown in ISO-2022-JP now
expecting success of 3900.30 'No conversion with ISO8859-1':
compare_with "--encoding=none ISO8859-1" "$TEST_DIRECTORY"/t3900/ISO8859-1.txt
ok 30 - No conversion with ISO8859-1
expecting success of 3900.31 'No conversion with eucJP':
compare_with "--encoding=none eucJP" "$TEST_DIRECTORY"/t3900/eucJP.txt
ok 31 - No conversion with eucJP
expecting success of 3900.32 'No conversion with ISO-2022-JP':
compare_with "--encoding=none ISO-2022-JP" "$TEST_DIRECTORY"/t3900/ISO-2022-JP.txt
ok 32 - No conversion with ISO-2022-JP
expecting success of 3900.33 'commit --fixup with eucJP encoding':
git config i18n.commitencoding $H &&
git checkout -b $H-$flag C0 &&
echo $H >>F &&
git commit -a -F "$TEST_DIRECTORY"/t3900/$H.txt &&
test_tick &&
echo intermediate stuff >>G &&
git add G &&
git commit -a -m "intermediate commit" &&
test_tick &&
echo $H $flag >>F &&
git commit -a --$flag HEAD~1 &&
E=$(git cat-file commit eucJP-fixup |
sed -ne "s/^encoding //p") &&
test "z$E" = "z$H" &&
git config --unset-all i18n.commitencoding &&
git rebase --autosquash -i HEAD^^^ &&
git log --oneline >actual &&
test_line_count = 3 actual
Switched to a new branch 'eucJP-fixup'
[eucJP-fixup 2d12add] $B$O$l$R$[$U(B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[eucJP-fixup 4164b89] intermediate commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 G
[eucJP-fixup 762ea33] fixup! $B$O$l$R$[$U(B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated refs/heads/eucJP-fixup.
ok 33 - commit --fixup with eucJP encoding
expecting success of 3900.34 'commit --squash with ISO-2022-JP encoding':
git config i18n.commitencoding $H &&
git checkout -b $H-$flag C0 &&
echo $H >>F &&
git commit -a -F "$TEST_DIRECTORY"/t3900/$H.txt &&
test_tick &&
echo intermediate stuff >>G &&
git add G &&
git commit -a -m "intermediate commit" &&
test_tick &&
echo $H $flag >>F &&
git commit -a --$flag HEAD~1 &&
E=$(git cat-file commit ISO-2022-JP-squash |
sed -ne "s/^encoding //p") &&
test "z$E" = "z$H" &&
git config --unset-all i18n.commitencoding &&
git rebase --autosquash -i HEAD^^^ &&
git log --oneline >actual &&
test_line_count = 3 actual
Switched to a new branch 'ISO-2022-JP-squash'
[ISO-2022-JP-squash 73be6f0] $B$O$l$R$[$U(B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[ISO-2022-JP-squash 358ea4d] intermediate commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 G
[ISO-2022-JP-squash 31af1e8] squash! $B$O$l$R$[$U(B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
Rebasing (2/3)
[detached HEAD 452b79b] $B$O$l$R$[$U(B
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
1 file changed, 2 insertions(+)
Rebasing (3/3)
Successfully rebased and updated refs/heads/ISO-2022-JP-squash.
ok 34 - commit --squash with ISO-2022-JP encoding
expecting success of 3900.35 'commit --fixup into UTF-8 from ISO-8859-1':
git checkout -b $flag-$old-$new C0 &&
git config i18n.commitencoding $old &&
echo $old >>F &&
git commit -a -F "$TEST_DIRECTORY"/t3900/$msg &&
test_tick &&
echo intermediate stuff >>G &&
git add G &&
git commit -a -m "intermediate commit" &&
test_tick &&
git config i18n.commitencoding $new &&
echo $new-$flag >>F &&
git commit -a --$flag HEAD^ &&
git rebase --autosquash -i HEAD^^^ &&
git rev-list HEAD >actual &&
test_line_count = 3 actual &&
iconv -f $old -t UTF-8 "$TEST_DIRECTORY"/t3900/$msg >expect &&
git cat-file commit HEAD^ >raw &&
(sed "1,/^$/d" raw | iconv -f $new -t utf-8) >actual &&
test_cmp expect actual
Switched to a new branch 'fixup-UTF-8-ISO-8859-1'
[fixup-UTF-8-ISO-8859-1 f9ae2e6] ÄËÑÏÖ
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[fixup-UTF-8-ISO-8859-1 2e63169] intermediate commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 G
[fixup-UTF-8-ISO-8859-1 c8086ca] fixup! ÄËÑÏÖ
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated refs/heads/fixup-UTF-8-ISO-8859-1.
ok 35 - commit --fixup into UTF-8 from ISO-8859-1
expecting success of 3900.36 'commit --squash into ISO-8859-1 from UTF-8':
git checkout -b $flag-$old-$new C0 &&
git config i18n.commitencoding $old &&
echo $old >>F &&
git commit -a -F "$TEST_DIRECTORY"/t3900/$msg &&
test_tick &&
echo intermediate stuff >>G &&
git add G &&
git commit -a -m "intermediate commit" &&
test_tick &&
git config i18n.commitencoding $new &&
echo $new-$flag >>F &&
git commit -a --$flag HEAD^ &&
git rebase --autosquash -i HEAD^^^ &&
git rev-list HEAD >actual &&
test_line_count = 3 actual &&
iconv -f $old -t UTF-8 "$TEST_DIRECTORY"/t3900/$msg >expect &&
git cat-file commit HEAD^ >raw &&
(sed "1,/^$/d" raw | iconv -f $new -t utf-8) >actual &&
test_cmp expect actual
Switched to a new branch 'squash-ISO-8859-1-UTF-8'
[squash-ISO-8859-1-UTF-8 786be3a] ÄËÑÏÖ
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[squash-ISO-8859-1-UTF-8 108aa2c] intermediate commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 G
[squash-ISO-8859-1-UTF-8 1f9565f] squash! ÄËÑÏÖ
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
Rebasing (2/3)
[detached HEAD a65b88e] ÄËÑÏÖ
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:18:13 2005 -0700
1 file changed, 2 insertions(+)
Rebasing (3/3)
Successfully rebased and updated refs/heads/squash-ISO-8859-1-UTF-8.
ok 36 - commit --squash into ISO-8859-1 from UTF-8
expecting success of 3900.37 'commit --squash into eucJP from ISO-2022-JP':
git checkout -b $flag-$old-$new C0 &&
git config i18n.commitencoding $old &&
echo $old >>F &&
git commit -a -F "$TEST_DIRECTORY"/t3900/$msg &&
test_tick &&
echo intermediate stuff >>G &&
git add G &&
git commit -a -m "intermediate commit" &&
test_tick &&
git config i18n.commitencoding $new &&
echo $new-$flag >>F &&
git commit -a --$flag HEAD^ &&
git rebase --autosquash -i HEAD^^^ &&
git rev-list HEAD >actual &&
test_line_count = 3 actual &&
iconv -f $old -t UTF-8 "$TEST_DIRECTORY"/t3900/$msg >expect &&
git cat-file commit HEAD^ >raw &&
(sed "1,/^$/d" raw | iconv -f $new -t utf-8) >actual &&
test_cmp expect actual
Switched to a new branch 'squash-eucJP-ISO-2022-JP'
[squash-eucJP-ISO-2022-JP 8154dd2] $B$O$l$R$[$U(B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[squash-eucJP-ISO-2022-JP ac34524] intermediate commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 G
[squash-eucJP-ISO-2022-JP 60556dc] squash! $B$O$l$R$[$U(B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
Rebasing (2/3)
[detached HEAD d7dba56] $B$O$l$R$[$U(B
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:20:13 2005 -0700
1 file changed, 2 insertions(+)
Rebasing (3/3)
Successfully rebased and updated refs/heads/squash-eucJP-ISO-2022-JP.
ok 37 - commit --squash into eucJP from ISO-2022-JP
expecting success of 3900.38 'commit --fixup into ISO-2022-JP from UTF-8':
git checkout -b $flag-$old-$new C0 &&
git config i18n.commitencoding $old &&
echo $old >>F &&
git commit -a -F "$TEST_DIRECTORY"/t3900/$msg &&
test_tick &&
echo intermediate stuff >>G &&
git add G &&
git commit -a -m "intermediate commit" &&
test_tick &&
git config i18n.commitencoding $new &&
echo $new-$flag >>F &&
git commit -a --$flag HEAD^ &&
git rebase --autosquash -i HEAD^^^ &&
git rev-list HEAD >actual &&
test_line_count = 3 actual &&
iconv -f $old -t UTF-8 "$TEST_DIRECTORY"/t3900/$msg >expect &&
git cat-file commit HEAD^ >raw &&
(sed "1,/^$/d" raw | iconv -f $new -t utf-8) >actual &&
test_cmp expect actual
Switched to a new branch 'fixup-ISO-2022-JP-UTF-8'
[fixup-ISO-2022-JP-UTF-8 31ec3d8] $B$O$l$R$[$U(B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[fixup-ISO-2022-JP-UTF-8 1264baa] intermediate commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 G
[fixup-ISO-2022-JP-UTF-8 7683d37] fixup! $B$O$l$R$[$U(B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
Rebasing (2/3)
Rebasing (3/3)
Successfully rebased and updated refs/heads/fixup-ISO-2022-JP-UTF-8.
ok 38 - commit --fixup into ISO-2022-JP from UTF-8
# passed all 38 test(s)
1..38
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3701-add-interactive.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3701-add-interactive/.git/
expecting success of 3701.1 'warn about add.interactive.useBuiltin':
cat >expect <<-\EOF &&
warning: the add.interactive.useBuiltin setting has been removed!
See its entry in 'git help config' for details.
No changes.
EOF
for v in = =true =false
do
git -c "add.interactive.useBuiltin$v" add -p >out 2>actual &&
test_must_be_empty out &&
test_cmp expect actual || return 1
done
ok 1 - warn about add.interactive.useBuiltin
expecting success of 3701.2 'setup (initial)':
echo content >file &&
git add file &&
echo more >>file &&
echo lines >>file
ok 2 - setup (initial)
expecting success of 3701.3 'status works (initial)':
git add -i </dev/null >output &&
grep "+1/-0 *+2/-0 file" output
1: +1/-0 +2/-0 file
ok 3 - status works (initial)
expecting success of 3701.4 'setup expected':
cat >expected <<-\EOF
new file mode 100644
index 0000000..d95f3ad
--- /dev/null
+++ b/file
@@ -0,0 +1 @@
+content
EOF
ok 4 - setup expected
expecting success of 3701.5 'diff works (initial)':
test_write_lines d 1 | git add -i >output &&
sed -ne "/new file/,/content/p" <output >diff &&
diff_cmp expected diff
ok 5 - diff works (initial)
expecting success of 3701.6 'revert works (initial)':
git add file &&
test_write_lines r 1 | git add -i &&
git ls-files >output &&
! grep . output
staged unstaged path
1: +3/-0 nothing file
*** Commands ***
1: [s]tatus 2: [u]pdate 3: [r]evert 4: [a]dd untracked
5: [p]atch 6: [d]iff 7: [q]uit 8: [h]elp
What now> staged unstaged path
1: +3/-0 nothing [f]ile
Revert>> staged unstaged path
* 1: +3/-0 nothing [f]ile
Revert>>
note: file is untracked now.
reverted 1 path
*** Commands ***
1: [s]tatus 2: [u]pdate 3: [r]evert 4: [a]dd untracked
5: [p]atch 6: [d]iff 7: [q]uit 8: [h]elp
What now>
Bye.
ok 6 - revert works (initial)
expecting success of 3701.7 'add untracked (multiple)':
test_when_finished "git reset && rm [1-9]" &&
touch $(test_seq 9) &&
test_write_lines a "2-5 8-" | git add -i -- [1-9] &&
test_write_lines 2 3 4 5 8 9 >expected &&
git ls-files [1-9] >output &&
test_cmp expected output
*** Commands ***
1: [s]tatus 2: [u]pdate 3: [r]evert 4: [a]dd untracked
5: [p]atch 6: [d]iff 7: [q]uit 8: [h]elp
What now> staged unstaged path
1: 1
2: 2
3: 3
4: 4
5: 5
6: 6
7: 7
8: 8
9: 9
Add untracked>> staged unstaged path
1: 1
* 2: 2
* 3: 3
* 4: 4
* 5: 5
6: 6
7: 7
* 8: 8
* 9: 9
Add untracked>>
added 6 paths
*** Commands ***
1: [s]tatus 2: [u]pdate 3: [r]evert 4: [a]dd untracked
5: [p]atch 6: [d]iff 7: [q]uit 8: [h]elp
What now>
Bye.
ok 7 - add untracked (multiple)
expecting success of 3701.8 'setup (commit)':
echo baseline >file &&
git add file &&
git commit -m commit &&
echo content >>file &&
git add file &&
echo more >>file &&
echo lines >>file
[main (root-commit) 4ef1e3a] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
ok 8 - setup (commit)
expecting success of 3701.9 'status works (commit)':
git add -i </dev/null >output &&
grep "+1/-0 *+2/-0 file" output
1: +1/-0 +2/-0 file
ok 9 - status works (commit)
expecting success of 3701.10 'update can stage deletions':
>to-delete &&
git add to-delete &&
rm to-delete &&
test_write_lines u t "" | git add -i &&
git ls-files to-delete >output &&
test_must_be_empty output
staged unstaged path
1: +1/-0 +2/-0 file
2: +0/-0 +0/-0 to-delete
*** Commands ***
1: [s]tatus 2: [u]pdate 3: [r]evert 4: [a]dd untracked
5: [p]atch 6: [d]iff 7: [q]uit 8: [h]elp
What now> staged unstaged path
1: +1/-0 +2/-0 [f]ile
2: +0/-0 +0/-0 [t]o-delete
Update>> staged unstaged path
1: +1/-0 +2/-0 [f]ile
* 2: +0/-0 +0/-0 [t]o-delete
Update>> updated 1 path
*** Commands ***
1: [s]tatus 2: [u]pdate 3: [r]evert 4: [a]dd untracked
5: [p]atch 6: [d]iff 7: [q]uit 8: [h]elp
What now>
Bye.
ok 10 - update can stage deletions
expecting success of 3701.11 'setup expected':
cat >expected <<-\EOF
index 180b47c..b6f2c08 100644
--- a/file
+++ b/file
@@ -1 +1,2 @@
baseline
+content
EOF
ok 11 - setup expected
expecting success of 3701.12 'diff works (commit)':
test_write_lines d 1 | git add -i >output &&
sed -ne "/^index/,/content/p" <output >diff &&
diff_cmp expected diff
ok 12 - diff works (commit)
expecting success of 3701.13 'revert works (commit)':
git add file &&
test_write_lines r 1 | git add -i &&
git add -i </dev/null >output &&
grep "unchanged *+3/-0 file" output
staged unstaged path
1: +3/-0 nothing file
*** Commands ***
1: [s]tatus 2: [u]pdate 3: [r]evert 4: [a]dd untracked
5: [p]atch 6: [d]iff 7: [q]uit 8: [h]elp
What now> staged unstaged path
1: +3/-0 nothing [f]ile
Revert>> staged unstaged path
* 1: +3/-0 nothing [f]ile
Revert>>
reverted 1 path
*** Commands ***
1: [s]tatus 2: [u]pdate 3: [r]evert 4: [a]dd untracked
5: [p]atch 6: [d]iff 7: [q]uit 8: [h]elp
What now>
Bye.
1: unchanged +3/-0 file
ok 13 - revert works (commit)
expecting success of 3701.14 'setup expected':
cat >expected <<-\EOF
EOF
ok 14 - setup expected
expecting success of 3701.15 'dummy edit works':
test_set_editor : &&
test_write_lines e a | git add -p &&
git diff > diff &&
diff_cmp expected diff
diff --git a/file b/file
index 180b47c..f910ae9 100644
--- a/file
+++ b/file
@@ -1 +1,4 @@
baseline
+content
+more
+lines
(1/1) Stage this hunk [y,n,q,a,d,e,?]?
ok 15 - dummy edit works
expecting success of 3701.16 'setup patch':
cat >patch <<-\EOF
@@ -1,1 +1,4 @@
this
+patch
-does not
apply
EOF
ok 16 - setup patch
expecting success of 3701.17 'setup fake editor':
write_script "fake_editor.sh" <<-\EOF &&
mv -f "$1" oldpatch &&
mv -f patch "$1"
EOF
test_set_editor "$(pwd)/fake_editor.sh"
ok 17 - setup fake editor
expecting success of 3701.18 'bad edit rejected':
git reset &&
test_write_lines e n d | git add -p >output &&
grep "hunk does not apply" output
Unstaged changes after reset:
M file
error: patch failed: file:1
error: file: patch does not apply
error: 'git apply --cached' failed
(1/1) Stage this hunk [y,n,q,a,d,e,?]? Your edited hunk does not apply. Edit again (saying "no" discards!) [y/n]? @@ -1 +1,4 @@
ok 18 - bad edit rejected
expecting success of 3701.19 'setup patch':
cat >patch <<-\EOF
this patch
is garbage
EOF
ok 19 - setup patch
expecting success of 3701.20 'garbage edit rejected':
git reset &&
test_write_lines e n d | git add -p >output &&
grep "hunk does not apply" output
Unstaged changes after reset:
M file
error: corrupt patch at line 6
error: 'git apply --cached' failed
(1/1) Stage this hunk [y,n,q,a,d,e,?]? Your edited hunk does not apply. Edit again (saying "no" discards!) [y/n]? @@ -1 +1,4 @@
ok 20 - garbage edit rejected
expecting success of 3701.21 'setup patch':
cat >patch <<-\EOF
@@ -1,0 +1,0 @@
baseline
+content
+newcontent
+lines
EOF
ok 21 - setup patch
expecting success of 3701.22 'setup expected':
cat >expected <<-\EOF
diff --git a/file b/file
index b5dd6c9..f910ae9 100644
--- a/file
+++ b/file
@@ -1,4 +1,4 @@
baseline
content
-newcontent
+more
lines
EOF
ok 22 - setup expected
expecting success of 3701.23 'real edit works':
test_write_lines e n d | git add -p &&
git diff >output &&
diff_cmp expected output
diff --git a/file b/file
index 180b47c..f910ae9 100644
--- a/file
+++ b/file
@@ -1 +1,4 @@
baseline
+content
+more
+lines
(1/1) Stage this hunk [y,n,q,a,d,e,?]?
ok 23 - real edit works
expecting success of 3701.24 'setup file':
test_write_lines a "" b "" c >file &&
git add file &&
test_write_lines a "" d "" c >file
ok 24 - setup file
expecting success of 3701.25 'setup patch':
SP=" " &&
NULL="" &&
cat >patch <<-EOF
@@ -1,4 +1,4 @@
a
$NULL
-b
+f
$SP
c
EOF
ok 25 - setup patch
expecting success of 3701.26 'setup expected':
cat >expected <<-EOF
diff --git a/file b/file
index b5dd6c9..f910ae9 100644
--- a/file
+++ b/file
@@ -1,5 +1,5 @@
a
$SP
-f
+d
$SP
c
EOF
ok 26 - setup expected
expecting success of 3701.27 'edit can strip spaces from empty context lines':
test_write_lines e n q | git add -p 2>error &&
test_must_be_empty error &&
git diff >output &&
diff_cmp expected output
diff --git a/file b/file
index bda3f38..90b7c9d 100644
--- a/file
+++ b/file
@@ -1,5 +1,5 @@
a
-b
+d
c
(1/1) Stage this hunk [y,n,q,a,d,e,?]?
ok 27 - edit can strip spaces from empty context lines
expecting success of 3701.28 'skip files similarly as commit -a':
git reset &&
echo file >.gitignore &&
echo changed >file &&
echo y | git add -p file &&
git diff >output &&
git reset &&
git commit -am commit &&
git diff >expected &&
diff_cmp expected output &&
git reset --hard HEAD^
Unstaged changes after reset:
M file
diff --git a/file b/file
index 180b47c..5ea2ed4 100644
--- a/file
+++ b/file
@@ -1 +1 @@
-baseline
+changed
(1/1) Stage this hunk [y,n,q,a,d,e,?]?
Unstaged changes after reset:
M file
[main 953db45] commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
HEAD is now at 4ef1e3a commit
ok 28 - skip files similarly as commit -a
checking prerequisite: FILEMODE
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-FILEMODE" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-FILEMODE" &&
test "$(git config --bool core.filemode)" = true
)
prerequisite FILEMODE ok
expecting success of 3701.29 'patch does not affect mode':
git reset --hard &&
echo content >>file &&
chmod +x file &&
printf "n\\ny\\n" | git add -p &&
git show :file | grep content &&
git diff file | grep "new mode"
HEAD is now at 4ef1e3a commit
diff --git a/file b/file
index 180b47c..b6f2c08
--- a/file
+++ b/file
old mode 100644
new mode 100755
(1/2) Stage mode change [y,n,q,a,d,j,J,g,/,?]? @@ -1 +1,2 @@
baseline
+content
(2/2) Stage this hunk [y,n,q,a,d,K,g,/,e,?]?
content
new mode 100755
ok 29 - patch does not affect mode
expecting success of 3701.30 'stage mode but not hunk':
git reset --hard &&
echo content >>file &&
chmod +x file &&
printf "y\\nn\\n" | git add -p &&
git diff --cached file | grep "new mode" &&
git diff file | grep "+content"
HEAD is now at 4ef1e3a commit
diff --git a/file b/file
index 180b47c..b6f2c08
--- a/file
+++ b/file
old mode 100644
new mode 100755
(1/2) Stage mode change [y,n,q,a,d,j,J,g,/,?]? @@ -1 +1,2 @@
baseline
+content
(2/2) Stage this hunk [y,n,q,a,d,K,g,/,e,?]?
new mode 100755
+content
ok 30 - stage mode but not hunk
expecting success of 3701.31 'stage mode and hunk':
git reset --hard &&
echo content >>file &&
chmod +x file &&
printf "y\\ny\\n" | git add -p &&
git diff --cached file >out &&
grep "new mode" out &&
grep "+content" out &&
git diff file >out &&
test_must_be_empty out
HEAD is now at 4ef1e3a commit
diff --git a/file b/file
index 180b47c..b6f2c08
--- a/file
+++ b/file
old mode 100644
new mode 100755
(1/2) Stage mode change [y,n,q,a,d,j,J,g,/,?]? @@ -1 +1,2 @@
baseline
+content
(2/2) Stage this hunk [y,n,q,a,d,K,g,/,e,?]?
new mode 100755
+content
ok 31 - stage mode and hunk
expecting success of 3701.32 'different prompts for mode change/deleted':
git reset --hard &&
>file &&
>deleted &&
git add --chmod=+x file deleted &&
echo changed >file &&
rm deleted &&
test_write_lines n n n |
git -c core.filemode=true add -p >actual &&
sed -n "s/^\(([0-9/]*) Stage .*?\).*/\1/p" actual >actual.filtered &&
cat >expect <<-\EOF &&
(1/1) Stage deletion [y,n,q,a,d,?]?
(1/2) Stage mode change [y,n,q,a,d,j,J,g,/,?]?
(2/2) Stage this hunk [y,n,q,a,d,K,g,/,e,?]?
EOF
test_cmp expect actual.filtered
HEAD is now at 4ef1e3a commit
ok 32 - different prompts for mode change/deleted
expecting success of 3701.33 'correct message when there is nothing to do':
git reset --hard &&
git add -p 2>err &&
test_i18ngrep "No changes" err &&
printf "\\0123" >binary &&
git add binary &&
printf "\\0abc" >binary &&
git add -p 2>err &&
test_i18ngrep "Only binary files changed" err
HEAD is now at 4ef1e3a commit
No changes.
Only binary files changed.
ok 33 - correct message when there is nothing to do
expecting success of 3701.34 'setup again':
git reset --hard &&
test_chmod +x file &&
echo content >>file &&
test_write_lines A B C D>file2 &&
git add file2
HEAD is now at 4ef1e3a commit
ok 34 - setup again
expecting success of 3701.35 'setup patch':
cat >patch <<-\EOF
index 180b47c..b6f2c08 100644
--- a/file
+++ b/file
@@ -1,2 +1,4 @@
+firstline
baseline
content
+lastline
\ No newline at end of file
diff --git a/file2 b/file2
index 8422d40..35b930a 100644
--- a/file2
+++ b/file2
@@ -1,4 +1,5 @@
-A
+Z
B
+Y
C
-D
+X
EOF
ok 35 - setup patch
expecting success of 3701.36 'setup expected':
echo diff --git a/file b/file >expected &&
sed -e "/^index 180b47c/s/ 100644/ 100755/" \
-e /1,5/s//1,4/ \
-e /Y/d patch >>expected &&
cat >expected-output <<-\EOF
--- a/file
+++ b/file
@@ -1,2 +1,4 @@
+firstline
baseline
content
+lastline
\ No newline at end of file
@@ -1,2 +1,3 @@
+firstline
baseline
content
@@ -1,2 +2,3 @@
baseline
content
+lastline
\ No newline at end of file
--- a/file2
+++ b/file2
@@ -1,4 +1,5 @@
-A
+Z
B
+Y
C
-D
+X
@@ -1,2 +1,2 @@
-A
+Z
B
@@ -2,2 +2,3 @@
B
+Y
C
@@ -3,2 +4,2 @@
C
-D
+X
EOF
ok 36 - setup expected
expecting success of 3701.37 'add first line works':
git commit -am "clear local changes" &&
git apply patch &&
test_write_lines s y y s y n y | git add -p 2>error >raw-output &&
sed -n -e "s/^([1-9]\/[1-9]) Stage this hunk[^@]*\(@@ .*\)/\1/" \
-e "/^[-+@ \\\\]"/p raw-output >output &&
test_must_be_empty error &&
git diff --cached >diff &&
diff_cmp expected diff &&
test_cmp expected-output output
[main dd8d550] clear local changes
Author: A U Thor <author@example.com>
2 files changed, 5 insertions(+)
mode change 100644 => 100755 file
create mode 100644 file2
ok 37 - add first line works
expecting success of 3701.38 'setup expected':
cat >expected <<-\EOF
diff --git a/non-empty b/non-empty
deleted file mode 100644
index d95f3ad..0000000
--- a/non-empty
+++ /dev/null
@@ -1 +0,0 @@
-content
EOF
ok 38 - setup expected
expecting success of 3701.39 'deleting a non-empty file':
git reset --hard &&
echo content >non-empty &&
git add non-empty &&
git commit -m non-empty &&
rm non-empty &&
echo y | git add -p non-empty &&
git diff --cached >diff &&
diff_cmp expected diff
HEAD is now at dd8d550 clear local changes
[main 00556ef] non-empty
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 non-empty
diff --git a/non-empty b/non-empty
deleted file mode 100644
index d95f3ad..0000000
--- a/non-empty
+++ /dev/null
@@ -1 +0,0 @@
-content
(1/1) Stage deletion [y,n,q,a,d,?]?
ok 39 - deleting a non-empty file
expecting success of 3701.40 'setup expected':
cat >expected <<-\EOF
diff --git a/empty b/empty
deleted file mode 100644
index e69de29..0000000
EOF
ok 40 - setup expected
expecting success of 3701.41 'deleting an empty file':
git reset --hard &&
> empty &&
git add empty &&
git commit -m empty &&
rm empty &&
echo y | git add -p empty &&
git diff --cached >diff &&
diff_cmp expected diff
HEAD is now at 00556ef non-empty
[main 2e6bfc0] empty
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 empty
diff --git a/empty b/empty
deleted file mode 100644
index e69de29..0000000
(1/1) Stage deletion [y,n,q,a,d,?]?
ok 41 - deleting an empty file
expecting success of 3701.42 'adding an empty file':
git init added &&
(
cd added &&
test_commit initial &&
>empty &&
git add empty &&
test_tick &&
git commit -m empty &&
git tag added-file &&
git reset --hard HEAD^ &&
test_path_is_missing empty &&
echo y | git checkout -p added-file -- >actual &&
test_path_is_file empty &&
test_i18ngrep "Apply addition to index and worktree" actual
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3701-add-interactive/added/.git/
[main (root-commit) 24b24cf] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 initial.t
[main 47883bc] empty
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 empty
HEAD is now at 24b24cf initial
(1/1) Apply addition to index and worktree [y,n,q,a,d,?]?
ok 42 - adding an empty file
expecting success of 3701.43 'split hunk setup':
git reset --hard &&
test_write_lines 10 20 30 40 50 60 >test &&
git add test &&
test_tick &&
git commit -m test &&
test_write_lines 10 15 20 21 22 23 24 30 40 50 60 >test
HEAD is now at 2e6bfc0 empty
[main 18d1e3e] test
Author: A U Thor <author@example.com>
1 file changed, 6 insertions(+)
create mode 100644 test
ok 43 - split hunk setup
expecting success of 3701.44 'goto hunk':
test_when_finished "git reset" &&
tr _ " " >expect <<-EOF &&
(2/2) Stage this hunk [y,n,q,a,d,K,g,/,e,?]? + 1: -1,2 +1,3 +15
_ 2: -2,4 +3,8 +21
go to which hunk? @@ -1,2 +1,3 @@
_10
+15
_20
(1/2) Stage this hunk [y,n,q,a,d,j,J,g,/,e,?]?_
EOF
test_write_lines s y g 1 | git add -p >actual &&
tail -n 7 <actual >actual.trimmed &&
test_cmp expect actual.trimmed
Unstaged changes after reset:
M test
ok 44 - goto hunk
expecting success of 3701.45 'navigate to hunk via regex':
test_when_finished "git reset" &&
tr _ " " >expect <<-EOF &&
(2/2) Stage this hunk [y,n,q,a,d,K,g,/,e,?]? @@ -1,2 +1,3 @@
_10
+15
_20
(1/2) Stage this hunk [y,n,q,a,d,j,J,g,/,e,?]?_
EOF
test_write_lines s y /1,2 | git add -p >actual &&
tail -n 5 <actual >actual.trimmed &&
test_cmp expect actual.trimmed
Unstaged changes after reset:
M test
ok 45 - navigate to hunk via regex
expecting success of 3701.46 'split hunk "add -p (edit)"':
# Split, say Edit and do nothing. Then:
#
# 1. Broken version results in a patch that does not apply and
# only takes [y/n] (edit again) so the first q is discarded
# and then n attempts to discard the edit. Repeat q enough
# times to get out.
#
# 2. Correct version applies the (not)edited version, and asks
# about the next hunk, against which we say q and program
# exits.
printf "%s\n" s e q n q q |
EDITOR=: git add -p &&
git diff >actual &&
! grep "^+15" actual
diff --git a/test b/test
index 0889435..26b5645 100644
--- a/test
+++ b/test
@@ -1,5 +1,10 @@
10
+15
20
+21
+22
+23
+24
30
40
50
(1/1) Stage this hunk [y,n,q,a,d,s,e,?]? Split into 2 hunks.
@@ -1,2 +1,3 @@
10
+15
20
(1/2) Stage this hunk [y,n,q,a,d,j,J,g,/,e,?]? @@ -2,4 +3,8 @@
20
+21
+22
+23
+24
30
40
50
(2/2) Stage this hunk [y,n,q,a,d,K,g,/,e,?]?
ok 46 - split hunk "add -p (edit)"
expecting success of 3701.47 'split hunk "add -p (no, yes, edit)"':
test_write_lines 5 10 20 21 30 31 40 50 60 >test &&
git reset &&
# test sequence is s(plit), n(o), y(es), e(dit)
# q n q q is there to make sure we exit at the end.
printf "%s\n" s n y e q n q q |
EDITOR=: git add -p 2>error &&
test_must_be_empty error &&
git diff >actual &&
! grep "^+31" actual
Unstaged changes after reset:
M test
diff --git a/test b/test
index 0889435..47ab15d 100644
--- a/test
+++ b/test
@@ -1,6 +1,9 @@
+5
10
20
+21
30
+31
40
50
60
(1/1) Stage this hunk [y,n,q,a,d,s,e,?]? Split into 3 hunks.
@@ -1,2 +1,3 @@
+5
10
20
(1/3) Stage this hunk [y,n,q,a,d,j,J,g,/,e,?]? @@ -1,3 +2,4 @@
10
20
+21
30
(2/3) Stage this hunk [y,n,q,a,d,K,j,J,g,/,e,?]? @@ -3,4 +5,5 @@
30
+31
40
50
60
(3/3) Stage this hunk [y,n,q,a,d,K,g,/,e,?]?
ok 47 - split hunk "add -p (no, yes, edit)"
expecting success of 3701.48 'split hunk with incomplete line at end':
git reset --hard &&
printf "missing LF" >>test &&
git add test &&
test_write_lines before 10 20 30 40 50 60 70 >test &&
git grep --cached missing &&
test_write_lines s n y q | git add -p &&
test_must_fail git grep --cached missing &&
git grep before &&
test_must_fail git grep --cached before
HEAD is now at 18d1e3e test
test:missing LF
diff --git a/test b/test
index dd09efb..cdbfd1e 100644
--- a/test
+++ b/test
@@ -1,7 +1,8 @@
+before
10
20
30
40
50
60
-missing LF
\ No newline at end of file
+70
(1/1) Stage this hunk [y,n,q,a,d,s,e,?]? Split into 2 hunks.
@@ -1,6 +1,7 @@
+before
10
20
30
40
50
60
(1/2) Stage this hunk [y,n,q,a,d,j,J,g,/,e,?]? @@ -1,7 +2,7 @@
10
20
30
40
50
60
-missing LF
\ No newline at end of file
+70
(2/2) Stage this hunk [y,n,q,a,d,K,g,/,e,?]?
test:before
ok 48 - split hunk with incomplete line at end
expecting success of 3701.49 'edit, adding lines to the first hunk':
test_write_lines 10 11 20 30 40 50 51 60 >test &&
git reset &&
tr _ " " >patch <<-EOF &&
@@ -1,5 +1,6 @@
_10
+11
+12
_20
+21
+22
_30
EOF
# test sequence is s(plit), e(dit), n(o)
# q n q q is there to make sure we exit at the end.
printf "%s\n" s e n q n q q |
EDITOR=./fake_editor.sh git add -p 2>error &&
test_must_be_empty error &&
git diff --cached >actual &&
grep "^+22" actual
Unstaged changes after reset:
M test
diff --git a/test b/test
index 0889435..cf86f12 100644
--- a/test
+++ b/test
@@ -1,6 +1,8 @@
10
+11
20
30
40
50
+51
60
(1/1) Stage this hunk [y,n,q,a,d,s,e,?]? Split into 2 hunks.
@@ -1,5 +1,6 @@
10
+11
20
30
40
50
(1/2) Stage this hunk [y,n,q,a,d,j,J,g,/,e,?]? @@ -2,5 +3,6 @@
20
30
40
50
+51
60
(2/2) Stage this hunk [y,n,q,a,d,K,g,/,e,?]?
+22
ok 49 - edit, adding lines to the first hunk
expecting success of 3701.50 'patch mode ignores unmerged entries':
git reset --hard &&
test_commit conflict &&
test_commit non-conflict &&
git checkout -b side &&
test_commit side conflict.t &&
git checkout main &&
test_commit main conflict.t &&
test_must_fail git merge side &&
echo changed >non-conflict.t &&
echo y | git add -p >output &&
! grep a/conflict.t output &&
cat >expected <<-\EOF &&
* Unmerged path conflict.t
diff --git a/non-conflict.t b/non-conflict.t
index f766221..5ea2ed4 100644
--- a/non-conflict.t
+++ b/non-conflict.t
@@ -1 +1 @@
-non-conflict
+changed
EOF
git diff --cached >diff &&
diff_cmp expected diff
HEAD is now at 18d1e3e test
[main 7573f98] conflict
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 conflict.t
[main 8e66292] non-conflict
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 non-conflict.t
Switched to a new branch 'side'
[side a0a968f] side
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to branch 'main'
[main 095e8c6] main
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
warning: refname 'side' is ambiguous.
warning: refname 'side' is ambiguous.
Auto-merging conflict.t
CONFLICT (content): Merge conflict in conflict.t
Automatic merge failed; fix conflicts and then commit the result.
ok 50 - patch mode ignores unmerged entries
expecting success of 3701.51 'index is refreshed after applying patch':
git reset --hard &&
echo content >test &&
printf y | git add -p &&
git diff-files --exit-code
HEAD is now at 095e8c6 main
diff --git a/test b/test
index 0889435..d95f3ad 100644
--- a/test
+++ b/test
@@ -1,6 +1 @@
-10
-20
-30
-40
-50
-60
+content
(1/1) Stage this hunk [y,n,q,a,d,e,?]?
ok 51 - index is refreshed after applying patch
expecting success of 3701.52 'diffs can be colorized':
git reset --hard &&
echo content >test &&
printf y >y &&
force_color git add -p >output 2>&1 <y &&
git diff-files --exit-code &&
# We do not want to depend on the exact coloring scheme
# git uses for diffs, so just check that we saw some kind of color.
grep "$(printf "\\033")" output
HEAD is now at 095e8c6 main
[1mdiff --git a/test b/test[m
[1mindex 0889435..d95f3ad 100644[m
[1m--- a/test[m
[1m+++ b/test[m
[36m@@ -1,6 +1 @@[m
[31m-10[m
[31m-20[m
[31m-30[m
[31m-40[m
[31m-50[m
[31m-60[m
[32m+[m[32mcontent[m
[1;34m(1/1) Stage this hunk [y,n,q,a,d,e,?]? [m
ok 52 - diffs can be colorized
expecting success of 3701.53 'colors can be overridden':
git reset --hard &&
test_when_finished "git rm -f color-test" &&
test_write_lines context old more-context >color-test &&
git add color-test &&
test_write_lines context new more-context another-one >color-test &&
echo trigger an error message >input &&
force_color git \
-c color.interactive.error=blue \
add -i 2>err.raw <input &&
test_decode_color <err.raw >err &&
grep "<BLUE>Huh (trigger)?<RESET>" err &&
test_write_lines help quit >input &&
force_color git \
-c color.interactive.header=red \
-c color.interactive.help=green \
-c color.interactive.prompt=yellow \
add -i >actual.raw <input &&
test_decode_color <actual.raw >actual &&
cat >expect <<-\EOF &&
<RED> staged unstaged path<RESET>
1: +3/-0 +2/-1 color-test
<RED>*** Commands ***<RESET>
1: <YELLOW>s<RESET>tatus 2: <YELLOW>u<RESET>pdate 3: <YELLOW>r<RESET>evert 4: <YELLOW>a<RESET>dd untracked
5: <YELLOW>p<RESET>atch 6: <YELLOW>d<RESET>iff 7: <YELLOW>q<RESET>uit 8: <YELLOW>h<RESET>elp
<YELLOW>What now<RESET>> <GREEN>status - show paths with changes<RESET>
<GREEN>update - add working tree state to the staged set of changes<RESET>
<GREEN>revert - revert staged set of changes back to the HEAD version<RESET>
<GREEN>patch - pick hunks and update selectively<RESET>
<GREEN>diff - view diff between HEAD and index<RESET>
<GREEN>add untracked - add contents of untracked files to the staged set of changes<RESET>
<RED>*** Commands ***<RESET>
1: <YELLOW>s<RESET>tatus 2: <YELLOW>u<RESET>pdate 3: <YELLOW>r<RESET>evert 4: <YELLOW>a<RESET>dd untracked
5: <YELLOW>p<RESET>atch 6: <YELLOW>d<RESET>iff 7: <YELLOW>q<RESET>uit 8: <YELLOW>h<RESET>elp
<YELLOW>What now<RESET>> Bye.
EOF
test_cmp expect actual &&
: exercise recolor_hunk by editing and then look at the hunk again &&
test_write_lines s e K q >input &&
force_color git \
-c color.interactive.prompt=yellow \
-c color.diff.meta=italic \
-c color.diff.frag=magenta \
-c color.diff.context=cyan \
-c color.diff.old=bold \
-c color.diff.new=blue \
-c core.editor=touch \
add -p >actual.raw <input &&
test_decode_color <actual.raw >actual.decoded &&
sed "s/index [0-9a-f]*\\.\\.[0-9a-f]* 100644/<INDEX-LINE>/" <actual.decoded >actual &&
cat >expect <<-\EOF &&
<ITALIC>diff --git a/color-test b/color-test<RESET>
<ITALIC><INDEX-LINE><RESET>
<ITALIC>--- a/color-test<RESET>
<ITALIC>+++ b/color-test<RESET>
<MAGENTA>@@ -1,3 +1,4 @@<RESET>
<CYAN> context<RESET>
<BOLD>-old<RESET>
<BLUE>+<RESET><BLUE>new<RESET>
<CYAN> more-context<RESET>
<BLUE>+<RESET><BLUE>another-one<RESET>
<YELLOW>(1/1) Stage this hunk [y,n,q,a,d,s,e,?]? <RESET><BOLD>Split into 2 hunks.<RESET>
<MAGENTA>@@ -1,3 +1,3 @@<RESET>
<CYAN> context<RESET>
<BOLD>-old<RESET>
<BLUE>+<RESET><BLUE>new<RESET>
<CYAN> more-context<RESET>
<YELLOW>(1/2) Stage this hunk [y,n,q,a,d,j,J,g,/,e,?]? <RESET><MAGENTA>@@ -3 +3,2 @@<RESET>
<CYAN> more-context<RESET>
<BLUE>+<RESET><BLUE>another-one<RESET>
<YELLOW>(2/2) Stage this hunk [y,n,q,a,d,K,g,/,e,?]? <RESET><MAGENTA>@@ -1,3 +1,3 @@<RESET>
<CYAN> context<RESET>
<BOLD>-old<RESET>
<BLUE>+new<RESET>
<CYAN> more-context<RESET>
<YELLOW>(1/2) Stage this hunk [y,n,q,a,d,j,J,g,/,e,?]? <RESET>
EOF
test_cmp expect actual
HEAD is now at 095e8c6 main
[1m staged unstaged path[m
1: +3/-0 +2/-1 color-test
[1m*** Commands ***[m
1: [1;34ms[mtatus 2: [1;34mu[mpdate 3: [1;34mr[mevert 4: [1;34ma[mdd untracked
5: [1;34mp[match 6: [1;34md[miff 7: [1;34mq[muit 8: [1;34mh[melp
[1;34mWhat now[m> [1m*** Commands ***[m
1: [1;34ms[mtatus 2: [1;34mu[mpdate 3: [1;34mr[mevert 4: [1;34ma[mdd untracked
5: [1;34mp[match 6: [1;34md[miff 7: [1;34mq[muit 8: [1;34mh[melp
[1;34mWhat now[m>
Bye.
<BLUE>Huh (trigger)?<RESET>
rm 'color-test'
ok 53 - colors can be overridden
expecting success of 3701.54 'brackets appear without color':
git reset --hard &&
test_when_finished "git rm -f bracket-test" &&
test_write_lines context old more-context >bracket-test &&
git add bracket-test &&
test_write_lines context new more-context another-one >bracket-test &&
test_write_lines quit >input &&
git add -i >actual <input &&
sed "s/^|//" >expect <<-\EOF &&
| staged unstaged path
| 1: +3/-0 +2/-1 bracket-test
|
|*** Commands ***
| 1: [s]tatus 2: [u]pdate 3: [r]evert 4: [a]dd untracked
| 5: [p]atch 6: [d]iff 7: [q]uit 8: [h]elp
|What now> Bye.
EOF
test_cmp expect actual
HEAD is now at 095e8c6 main
rm 'bracket-test'
ok 54 - brackets appear without color
expecting success of 3701.55 'colors can be skipped with color.ui=false':
git reset --hard &&
test_when_finished "git rm -f color-test" &&
test_write_lines context old more-context >color-test &&
git add color-test &&
test_write_lines context new more-context another-one >color-test &&
test_write_lines help quit >input &&
force_color git \
-c color.ui=false \
add -i >actual.raw <input &&
test_decode_color <actual.raw >actual &&
test_cmp actual.raw actual
HEAD is now at 095e8c6 main
rm 'color-test'
ok 55 - colors can be skipped with color.ui=false
expecting success of 3701.56 'colorized diffs respect diff.wsErrorHighlight':
git reset --hard &&
echo "old " >test &&
git add test &&
echo "new " >test &&
printf y >y &&
force_color git -c diff.wsErrorHighlight=all add -p >output.raw 2>&1 <y &&
test_decode_color <output.raw >output &&
grep "old<" output
HEAD is now at 095e8c6 main
<RED>-<RESET><RED>old<RESET><BRED> <RESET>
ok 56 - colorized diffs respect diff.wsErrorHighlight
expecting success of 3701.57 'diffFilter filters diff':
git reset --hard &&
echo content >test &&
test_config interactive.diffFilter "sed s/^/foo:/" &&
printf y >y &&
force_color git add -p >output 2>&1 <y &&
# avoid depending on the exact coloring or content of the prompts,
# and just make sure we saw our diff prefixed
grep foo:.*content output
HEAD is now at 095e8c6 main
foo:[32m+[m[32mcontent[m
ok 57 - diffFilter filters diff
expecting success of 3701.58 'detect bogus diffFilter output':
git reset --hard &&
echo content >test &&
test_config interactive.diffFilter "sed 6d" &&
printf y >y &&
force_color test_must_fail git add -p <y >output 2>&1 &&
grep "mismatched output" output
HEAD is now at 095e8c6 main
error: mismatched output from interactive.diffFilter
ok 58 - detect bogus diffFilter output
expecting success of 3701.59 'handle iffy colored hunk headers':
git reset --hard &&
echo content >test &&
printf n >n &&
force_color git -c interactive.diffFilter="sed s/.*@@.*/XX/" \
add -p >output 2>&1 <n &&
grep "^XX$" output
HEAD is now at 095e8c6 main
XX
ok 59 - handle iffy colored hunk headers
expecting success of 3701.60 'handle very large filtered diff':
git reset --hard &&
# The specific number here is not important, but it must
# be large enough that the output of "git diff --color"
# fills up the pipe buffer. 10,000 results in ~200k of
# colored output.
test_seq 10000 >test &&
test_config interactive.diffFilter cat &&
printf y >y &&
force_color git add -p >output 2>&1 <y &&
git diff-files --exit-code -- test
HEAD is now at 095e8c6 main
ok 60 - handle very large filtered diff
expecting success of 3701.61 'diff.algorithm is passed to `git diff-files`':
git reset --hard &&
>file &&
git add file &&
echo changed >file &&
test_must_fail git -c diff.algorithm=bogus add -p 2>err &&
test_i18ngrep "error: option diff-algorithm accepts " err
HEAD is now at 095e8c6 main
error: option diff-algorithm accepts "myers", "minimal", "patience" and "histogram"
ok 61 - diff.algorithm is passed to `git diff-files`
expecting success of 3701.62 'patch-mode via -i prompts for files':
git reset --hard &&
echo one >file &&
echo two >test &&
git add -i <<-\EOF &&
patch
test
y
quit
EOF
echo test >expect &&
git diff --cached --name-only >actual &&
diff_cmp expect actual
HEAD is now at 095e8c6 main
staged unstaged path
1: unchanged +1/-2 file
2: unchanged +1/-6 test
*** Commands ***
1: [s]tatus 2: [u]pdate 3: [r]evert 4: [a]dd untracked
5: [p]atch 6: [d]iff 7: [q]uit 8: [h]elp
What now> staged unstaged path
1: unchanged +1/-2 [f]ile
2: unchanged +1/-6 [t]est
Patch update>> staged unstaged path
1: unchanged +1/-2 [f]ile
* 2: unchanged +1/-6 [t]est
Patch update>> diff --git a/test b/test
index 0889435..f719efd 100644
--- a/test
+++ b/test
@@ -1,6 +1 @@
-10
-20
-30
-40
-50
-60
+two
(1/1) Stage this hunk [y,n,q,a,d,e,?]?
*** Commands ***
1: [s]tatus 2: [u]pdate 3: [r]evert 4: [a]dd untracked
5: [p]atch 6: [d]iff 7: [q]uit 8: [h]elp
What now> Bye.
ok 62 - patch-mode via -i prompts for files
expecting success of 3701.63 'add -p handles globs':
git reset --hard &&
mkdir -p subdir &&
echo base >one.c &&
echo base >subdir/two.c &&
git add "*.c" &&
git commit -m base &&
echo change >one.c &&
echo change >subdir/two.c &&
git add -p "*.c" <<-\EOF &&
y
y
EOF
cat >expect <<-\EOF &&
one.c
subdir/two.c
EOF
git diff --cached --name-only >actual &&
test_cmp expect actual
HEAD is now at 095e8c6 main
[main 5128550] base
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 one.c
create mode 100644 subdir/two.c
diff --git a/one.c b/one.c
index df967b9..0835e4f 100644
--- a/one.c
+++ b/one.c
@@ -1 +1 @@
-base
+change
(1/1) Stage this hunk [y,n,q,a,d,e,?]?
diff --git a/subdir/two.c b/subdir/two.c
index df967b9..0835e4f 100644
--- a/subdir/two.c
+++ b/subdir/two.c
@@ -1 +1 @@
-base
+change
(1/1) Stage this hunk [y,n,q,a,d,e,?]?
ok 63 - add -p handles globs
expecting success of 3701.64 'add -p handles relative paths':
git reset --hard &&
echo base >relpath.c &&
git add "*.c" &&
git commit -m relpath &&
echo change >relpath.c &&
mkdir -p subdir &&
git -C subdir add -p .. 2>error <<-\EOF &&
y
EOF
test_must_be_empty error &&
cat >expect <<-\EOF &&
relpath.c
EOF
git diff --cached --name-only >actual &&
test_cmp expect actual
HEAD is now at 5128550 base
[main cad2ca7] relpath
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 relpath.c
diff --git a/relpath.c b/relpath.c
index df967b9..0835e4f 100644
--- a/relpath.c
+++ b/relpath.c
@@ -1 +1 @@
-base
+change
(1/1) Stage this hunk [y,n,q,a,d,e,?]?
ok 64 - add -p handles relative paths
expecting success of 3701.65 'add -p does not expand argument lists':
git reset --hard &&
echo content >not-changed &&
git add not-changed &&
git commit -m "add not-changed file" &&
echo change >file &&
GIT_TRACE=$(pwd)/trace.out git add -p . <<-\EOF &&
y
EOF
# we know that "file" must be mentioned since we actually
# update it, but we want to be sure that our "." pathspec
# was not expanded into the argument list of any command.
# So look only for "not-changed".
! grep -E "^trace: (built-in|exec|run_command): .*not-changed" trace.out
HEAD is now at cad2ca7 relpath
[main 86e6db4] add not-changed file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 not-changed
diff --git a/file b/file
index b6f2c08..0835e4f 100755
--- a/file
+++ b/file
@@ -1,2 +1 @@
-baseline
-content
+change
(1/1) Stage this hunk [y,n,q,a,d,e,?]?
ok 65 - add -p does not expand argument lists
expecting success of 3701.66 'hunk-editing handles custom comment char':
git reset --hard &&
echo change >>file &&
test_config core.commentChar "\$" &&
echo e | GIT_EDITOR=true git add -p &&
git diff --exit-code
HEAD is now at 86e6db4 add not-changed file
diff --git a/file b/file
index b6f2c08..59630e0 100755
--- a/file
+++ b/file
@@ -1,2 +1,3 @@
baseline
content
+change
(1/1) Stage this hunk [y,n,q,a,d,e,?]?
ok 66 - hunk-editing handles custom comment char
expecting success of 3701.67 'add -p works even with color.ui=always':
git reset --hard &&
echo change >>file &&
test_config color.ui always &&
echo y | git add -p &&
echo file >expect &&
git diff --cached --name-only >actual &&
test_cmp expect actual
HEAD is now at 86e6db4 add not-changed file
[1mdiff --git a/file b/file[m
[1mindex b6f2c08..59630e0 100755[m
[1m--- a/file[m
[1m+++ b/file[m
[36m@@ -1,2 +1,3 @@[m
baseline[m
content[m
[32m+[m[32mchange[m
[1;34m(1/1) Stage this hunk [y,n,q,a,d,e,?]? [m
ok 67 - add -p works even with color.ui=always
expecting success of 3701.68 'setup different kinds of dirty submodules':
test_create_repo for-submodules &&
(
cd for-submodules &&
test_commit initial &&
test_create_repo dirty-head &&
(
cd dirty-head &&
test_commit initial
) &&
cp -R dirty-head dirty-otherwise &&
cp -R dirty-head dirty-both-ways &&
git add dirty-head &&
git add dirty-otherwise dirty-both-ways &&
git commit -m initial &&
cd dirty-head &&
test_commit updated &&
cd ../dirty-both-ways &&
test_commit updated &&
echo dirty >>initial &&
: >untracked &&
cd ../dirty-otherwise &&
echo dirty >>initial &&
: >untracked
) &&
git -C for-submodules diff-files --name-only >actual &&
cat >expected <<-\EOF &&
dirty-both-ways
dirty-head
EOF
test_cmp expected actual &&
git -C for-submodules diff-files --name-only --ignore-submodules=none >actual &&
cat >expected <<-\EOF &&
dirty-both-ways
dirty-head
dirty-otherwise
EOF
test_cmp expected actual &&
git -C for-submodules diff-files --name-only --ignore-submodules=dirty >actual &&
cat >expected <<-\EOF &&
dirty-both-ways
dirty-head
EOF
test_cmp expected actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3701-add-interactive/for-submodules/.git/
[main (root-commit) 31243c6] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 initial.t
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3701-add-interactive/for-submodules/dirty-head/.git/
[main (root-commit) 167ffd6] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 initial.t
warning: adding embedded git repository: dirty-head
hint: You've added another git repository inside your current repository.
hint: Clones of the outer repository will not contain the contents of
hint: the embedded repository and will not know how to obtain it.
hint: If you meant to add a submodule, use:
hint:
hint: git submodule add <url> dirty-head
hint:
hint: If you added this path by mistake, you can remove it from the
hint: index with:
hint:
hint: git rm --cached dirty-head
hint:
hint: See "git help submodule" for more information.
warning: adding embedded git repository: dirty-both-ways
hint: You've added another git repository inside your current repository.
hint: Clones of the outer repository will not contain the contents of
hint: the embedded repository and will not know how to obtain it.
hint: If you meant to add a submodule, use:
hint:
hint: git submodule add <url> dirty-both-ways
hint:
hint: If you added this path by mistake, you can remove it from the
hint: index with:
hint:
hint: git rm --cached dirty-both-ways
hint:
hint: See "git help submodule" for more information.
warning: adding embedded git repository: dirty-otherwise
[main 6489f21] initial
Author: A U Thor <author@example.com>
3 files changed, 3 insertions(+)
create mode 160000 dirty-both-ways
create mode 160000 dirty-head
create mode 160000 dirty-otherwise
[main f10ac08] updated
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 updated.t
[main f86bdf4] updated
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 updated.t
ok 68 - setup different kinds of dirty submodules
expecting success of 3701.69 'status ignores dirty submodules (except HEAD)':
git -C for-submodules add -i </dev/null >output &&
grep dirty-head output &&
grep dirty-both-ways output &&
! grep dirty-otherwise output
2: unchanged +1/-1 dirty-head
1: unchanged +1/-1 dirty-both-ways
ok 69 - status ignores dirty submodules (except HEAD)
expecting success of 3701.70 'handle submodules':
echo 123 >>for-submodules/dirty-otherwise/initial.t &&
force_color git -C for-submodules add -p dirty-otherwise >output 2>&1 &&
grep "No changes" output &&
force_color git -C for-submodules add -p dirty-head >output 2>&1 <y &&
git -C for-submodules ls-files --stage dirty-head >actual &&
rev="$(git -C for-submodules/dirty-head rev-parse HEAD)" &&
grep "$rev" actual
No changes.
160000 f10ac08dbe6eaf5e88125c402669e6f9b7076181 0 dirty-head
ok 70 - handle submodules
expecting success of 3701.71 'set up pathological context':
git reset --hard &&
test_write_lines a a a a a a a a a a a >a &&
git add a &&
git commit -m a &&
test_write_lines c b a a a a a a a b a a a a >a &&
test_write_lines a a a a a a a b a a a a >expected-1 &&
test_write_lines b a a a a a a a b a a a a >expected-2 &&
# check editing can cope with missing header and deleted context lines
# as well as changes to other lines
test_write_lines +b " a" >patch
HEAD is now at 86e6db4 add not-changed file
[main 9e98a5e] a
Author: A U Thor <author@example.com>
1 file changed, 11 insertions(+)
create mode 100644 a
ok 71 - set up pathological context
expecting success of 3701.72 'add -p works with pathological context lines':
git reset &&
printf "%s\n" n y |
git add -p &&
git cat-file blob :a >actual &&
test_cmp expected-1 actual
Unstaged changes after reset:
M a
diff --git a/a b/a
index f04e1e1..f39a0f0 100644
--- a/a
+++ b/a
@@ -1,3 +1,5 @@
+c
+b
a
a
a
(1/2) Stage this hunk [y,n,q,a,d,j,J,g,/,e,?]? @@ -5,6 +7,7 @@ a
a
a
a
+b
a
a
a
(2/2) Stage this hunk [y,n,q,a,d,K,g,/,e,?]?
ok 72 - add -p works with pathological context lines
expecting success of 3701.73 'add -p patch editing works with pathological context lines':
git reset &&
# n q q below is in case edit fails
printf "%s\n" e y n q q |
git add -p &&
git cat-file blob :a >actual &&
test_cmp expected-2 actual
Unstaged changes after reset:
M a
diff --git a/a b/a
index f04e1e1..f39a0f0 100644
--- a/a
+++ b/a
@@ -1,3 +1,5 @@
+c
+b
a
a
a
(1/2) Stage this hunk [y,n,q,a,d,j,J,g,/,e,?]? @@ -5,6 +7,7 @@ a
a
a
a
+b
a
a
a
(2/2) Stage this hunk [y,n,q,a,d,K,g,/,e,?]?
ok 73 - add -p patch editing works with pathological context lines
expecting success of 3701.74 'checkout -p works with pathological context lines':
test_write_lines a a a a a a >a &&
git add a &&
test_write_lines a b a b a b a b a b a >a &&
test_write_lines s n n y q | git checkout -p &&
test_write_lines a b a b a a b a b a >expect &&
test_cmp expect a
diff --git a/a b/a
index 786e4a7..477d4da 100644
--- a/a
+++ b/a
@@ -1,6 +1,11 @@
a
+b
a
+b
a
+b
a
+b
a
+b
a
(1/1) Discard this hunk from worktree [y,n,q,a,d,s,e,?]? Split into 5 hunks.
@@ -1,2 +1,3 @@
a
+b
a
(1/5) Discard this hunk from worktree [y,n,q,a,d,j,J,g,/,e,?]? @@ -2,2 +3,3 @@
a
+b
a
(2/5) Discard this hunk from worktree [y,n,q,a,d,K,j,J,g,/,e,?]? @@ -3,2 +5,3 @@
a
+b
a
(3/5) Discard this hunk from worktree [y,n,q,a,d,K,j,J,g,/,e,?]? @@ -4,2 +7,3 @@
a
+b
a
(4/5) Discard this hunk from worktree [y,n,q,a,d,K,j,J,g,/,e,?]?
ok 74 - checkout -p works with pathological context lines
expecting success of 3701.75 'add -N followed by add -p patch editing':
git reset --hard &&
(
setup_new_file &&
git add -N new-file &&
test_write_lines e n q | git add -p &&
git cat-file blob :new-file >actual &&
test_cmp new-file-expect actual &&
test_cmp patch-expect patch
)
HEAD is now at 9e98a5e a
diff --git a/new-file b/new-file
new file mode 100644
index 0000000..0fdf397
--- /dev/null
+++ b/new-file
@@ -0,0 +1,6 @@
+a
+b
+c
+d
+e
+f
(1/1) Stage addition [y,n,q,a,d,e,?]?
ok 75 - add -N followed by add -p patch editing
expecting success of 3701.76 'checkout -p patch editing of added file':
git reset --hard &&
(
setup_new_file &&
git add new-file &&
git commit -m "add new file" &&
git rm new-file &&
git commit -m "remove new file" &&
test_write_lines e n q | git checkout -p HEAD^ &&
test_cmp new-file-expect new-file &&
test_cmp patch-expect patch
)
HEAD is now at 9e98a5e a
[main 58d499b] add new file
Author: A U Thor <author@example.com>
1 file changed, 6 insertions(+)
create mode 100644 new-file
rm 'new-file'
[main 4a33265] remove new file
Author: A U Thor <author@example.com>
1 file changed, 6 deletions(-)
delete mode 100644 new-file
diff --git b/new-file a/new-file
new file mode 100644
index 0000000..0fdf397
--- /dev/null
+++ a/new-file
@@ -0,0 +1,6 @@
+a
+b
+c
+d
+e
+f
(1/1) Apply addition to index and worktree [y,n,q,a,d,e,?]?
ok 76 - checkout -p patch editing of added file
expecting success of 3701.77 'show help from add--helper':
git reset --hard &&
cat >expect <<-EOF &&
<BOLD>*** Commands ***<RESET>
1: <BOLD;BLUE>s<RESET>tatus 2: <BOLD;BLUE>u<RESET>pdate 3: <BOLD;BLUE>r<RESET>evert 4: <BOLD;BLUE>a<RESET>dd untracked
5: <BOLD;BLUE>p<RESET>atch 6: <BOLD;BLUE>d<RESET>iff 7: <BOLD;BLUE>q<RESET>uit 8: <BOLD;BLUE>h<RESET>elp
<BOLD;BLUE>What now<RESET>> <BOLD;RED>status - show paths with changes<RESET>
<BOLD;RED>update - add working tree state to the staged set of changes<RESET>
<BOLD;RED>revert - revert staged set of changes back to the HEAD version<RESET>
<BOLD;RED>patch - pick hunks and update selectively<RESET>
<BOLD;RED>diff - view diff between HEAD and index<RESET>
<BOLD;RED>add untracked - add contents of untracked files to the staged set of changes<RESET>
<BOLD>*** Commands ***<RESET>
1: <BOLD;BLUE>s<RESET>tatus 2: <BOLD;BLUE>u<RESET>pdate 3: <BOLD;BLUE>r<RESET>evert 4: <BOLD;BLUE>a<RESET>dd untracked
5: <BOLD;BLUE>p<RESET>atch 6: <BOLD;BLUE>d<RESET>iff 7: <BOLD;BLUE>q<RESET>uit 8: <BOLD;BLUE>h<RESET>elp
<BOLD;BLUE>What now<RESET>>$SP
Bye.
EOF
test_write_lines h | force_color git add -i >actual.colored &&
test_decode_color <actual.colored >actual &&
test_cmp expect actual
HEAD is now at 4a33265 remove new file
ok 77 - show help from add--helper
expecting success of 3701.78 'reset -p with unmerged files':
test_when_finished "git checkout --force main" &&
test_commit one conflict &&
git checkout -B side HEAD^ &&
test_commit two conflict &&
test_must_fail git merge one &&
# this is a noop with only an unmerged entry
git reset -p &&
# add files that sort before and after unmerged entry
echo a >a &&
echo z >z &&
git add a z &&
# confirm that we can reset those files
printf "%s\n" y y | git reset -p &&
git diff-index --cached --diff-filter=u HEAD >staged &&
test_must_be_empty staged
[main 4d874b0] one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 conflict
Switched to and reset branch 'side'
[side 136cab8] two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 conflict
Auto-merging conflict
CONFLICT (add/add): Merge conflict in conflict
Automatic merge failed; fix conflicts and then commit the result.
diff --git a/a b/a
index f04e1e1..7898192 100644
--- a/a
+++ b/a
@@ -1,11 +1 @@
a
-a
-a
-a
-a
-a
-a
-a
-a
-a
-a
(1/1) Unstage this hunk [y,n,q,a,d,e,?]? conflict: needs merge
diff --git a/z b/z
new file mode 100644
index 0000000..b680253
--- /dev/null
+++ b/z
@@ -0,0 +1 @@
+z
(1/1) Unstage addition [y,n,q,a,d,e,?]? conflict: needs merge
warning: refname 'main' is ambiguous.
Switched to branch 'main'
ok 78 - reset -p with unmerged files
# passed all 78 test(s)
1..78
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3902-quoted.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3902-quoted/.git/
expecting success of 3902.1 'setup':
mkdir "$FN" &&
for_each_name "echo initial >\"\$name\"" &&
git add . &&
git commit -q -m Initial &&
for_each_name "echo second >\"\$name\"" &&
git commit -a -m Second &&
for_each_name "echo modified >\"\$name\""
[master 6e4313d] Second
Author: A U Thor <author@example.com>
11 files changed, 11 insertions(+), 11 deletions(-)
ok 1 - setup
expecting success of 3902.2 'setup expected files':
cat >expect.quoted <<\EOF &&
Name
"Name and a\nLF"
"Name and an\tHT"
"Name\""
With SP in it
"\346\277\261\351\207\216\t\347\264\224"
"\346\277\261\351\207\216\n\347\264\224"
"\346\277\261\351\207\216 \347\264\224"
"\346\277\261\351\207\216\"\347\264\224"
"\346\277\261\351\207\216/file"
"\346\277\261\351\207\216\347\264\224"
EOF
cat >expect.raw <<\EOF
Name
"Name and a\nLF"
"Name and an\tHT"
"Name\""
With SP in it
"濱野\t純"
"濱野\n純"
濱野 純
"濱野\"純"
濱野/file
濱野純
EOF
ok 2 - setup expected files
expecting success of 3902.3 'check fully quoted output from ls-files':
git ls-files >current && test_cmp expect.quoted current
ok 3 - check fully quoted output from ls-files
expecting success of 3902.4 'check fully quoted output from diff-files':
git diff --name-only >current &&
test_cmp expect.quoted current
ok 4 - check fully quoted output from diff-files
expecting success of 3902.5 'check fully quoted output from diff-index':
git diff --name-only HEAD >current &&
test_cmp expect.quoted current
ok 5 - check fully quoted output from diff-index
expecting success of 3902.6 'check fully quoted output from diff-tree':
git diff --name-only HEAD^ HEAD >current &&
test_cmp expect.quoted current
ok 6 - check fully quoted output from diff-tree
expecting success of 3902.7 'check fully quoted output from ls-tree':
git ls-tree --name-only -r HEAD >current &&
test_cmp expect.quoted current
ok 7 - check fully quoted output from ls-tree
expecting success of 3902.8 'setting core.quotepath':
git config --bool core.quotepath false
ok 8 - setting core.quotepath
expecting success of 3902.9 'check fully quoted output from ls-files':
git ls-files >current && test_cmp expect.raw current
ok 9 - check fully quoted output from ls-files
expecting success of 3902.10 'check fully quoted output from diff-files':
git diff --name-only >current &&
test_cmp expect.raw current
ok 10 - check fully quoted output from diff-files
expecting success of 3902.11 'check fully quoted output from diff-index':
git diff --name-only HEAD >current &&
test_cmp expect.raw current
ok 11 - check fully quoted output from diff-index
expecting success of 3902.12 'check fully quoted output from diff-tree':
git diff --name-only HEAD^ HEAD >current &&
test_cmp expect.raw current
ok 12 - check fully quoted output from diff-tree
expecting success of 3902.13 'check fully quoted output from ls-tree':
git ls-tree --name-only -r HEAD >current &&
test_cmp expect.raw current
ok 13 - check fully quoted output from ls-tree
# passed all 13 test(s)
1..13
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3800-mktag.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3800-mktag/.git/
expecting success of 3800.1 'setup':
test_commit A &&
test_commit B &&
head=$(git rev-parse --verify HEAD) &&
head_parent=$(git rev-parse --verify HEAD~) &&
tree=$(git rev-parse HEAD^{tree}) &&
blob=$(git rev-parse --verify HEAD:B.t)
[master (root-commit) 0ddfaf1] A
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 A.t
[master d9df450] B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 B.t
ok 1 - setup
expecting success of 3800.2 'basic usage':
cat >tag.sig <<-EOF &&
object $head
type commit
tag mytag
tagger T A Gger <tagger@example.com> 1206478233 -0500
EOF
git mktag <tag.sig &&
git mktag --end-of-options <tag.sig &&
test_expect_code 129 git mktag --unknown-option
03e2668a257938d0a47497d9762e45da6c84c9f8
03e2668a257938d0a47497d9762e45da6c84c9f8
error: unknown option `unknown-option'
usage: git mktag
--strict enable more strict checking
ok 2 - basic usage
expecting success of 3800.3 'fail with [--[no-]strict]: Tag object length check':
test_must_fail git mktag <tag.sig 2>err &&
if test -z "$no_strict"
then
test_must_fail git mktag <tag.sig 2>err2 &&
test_cmp err err2
else
git mktag --no-strict <tag.sig
fi
ok 3 - fail with [--[no-]strict]: Tag object length check
expecting success of 3800.4 'setup: Tag object length check':
tag_ref=refs/tags/bad_tag &&
# Reset any leftover state from the last $subject
rm -rf bad-tag &&
git init --bare bad-tag &&
bad_tag=$(git -C bad-tag hash-object -t tag -w --stdin --literally <tag.sig)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3800-mktag/bad-tag/
ok 4 - setup: Tag object length check
expecting success of 3800.5 'hash-object & fsck unreachable: Tag object length check':
if test -n "$fsck_obj_ok"
then
git -C bad-tag fsck
else
test_must_fail git -C bad-tag fsck
fi
error: 8d62cb0b066bfbc796d7b3f65e7b88dcff037784: object could not be parsed: ./objects/8d/62cb0b066bfbc796d7b3f65e7b88dcff037784
notice: HEAD points to an unborn branch (master)
notice: No default references
ok 5 - hash-object & fsck unreachable: Tag object length check
expecting success of 3800.6 'update-ref & fsck reachable: Tag object length check':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
# The update-ref of the bad content will fail, do it
# anyway to see if it segfaults
test_might_fail git -C bad-tag update-ref "$tag_ref" "$bad_tag" &&
# Manually create the broken, we cannot do it with
# update-ref
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
# Unlike fsck-ing unreachable content above, this
# will always fail.
test_must_fail git -C bad-tag fsck
8d62cb0b066bfbc796d7b3f65e7b88dcff037784
fatal: update_ref failed for ref 'refs/tags/bad_tag': cannot update ref 'refs/tags/bad_tag': trying to write ref 'refs/tags/bad_tag' with nonexistent object 8d62cb0b066bfbc796d7b3f65e7b88dcff037784
error: 8d62cb0b066bfbc796d7b3f65e7b88dcff037784: object could not be parsed: ./objects/8d/62cb0b066bfbc796d7b3f65e7b88dcff037784
error: refs/tags/bad_tag: invalid sha1 pointer 8d62cb0b066bfbc796d7b3f65e7b88dcff037784
notice: HEAD points to an unborn branch (master)
notice: No default references
ok 6 - update-ref & fsck reachable: Tag object length check
expecting success of 3800.7 'for-each-ref: Tag object length check':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
printf "%s tag\t%s\n" "$bad_tag" "$tag_ref" >expected &&
git -C bad-tag for-each-ref "$tag_ref" >actual &&
test_cmp expected actual &&
test_must_fail git -C bad-tag for-each-ref --format="%(*objectname)"
8d62cb0b066bfbc796d7b3f65e7b88dcff037784
fatal: parse_object_buffer failed on 8d62cb0b066bfbc796d7b3f65e7b88dcff037784 for refs/tags/bad_tag
ok 7 - for-each-ref: Tag object length check
expecting success of 3800.8 'fast-export & fast-import: Tag object length check':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test_must_fail git -C bad-tag fast-export --all &&
test_must_fail git -C bad-tag fast-export "$bad_tag"
8d62cb0b066bfbc796d7b3f65e7b88dcff037784
fatal: bad object refs/tags/bad_tag
fatal: bad object 8d62cb0b066bfbc796d7b3f65e7b88dcff037784
ok 8 - fast-export & fast-import: Tag object length check
expecting success of 3800.9 'fail with [--[no-]strict]: "object" line label check':
test_must_fail git mktag <tag.sig 2>err &&
if test -z "$no_strict"
then
test_must_fail git mktag <tag.sig 2>err2 &&
test_cmp err err2
else
git mktag --no-strict <tag.sig
fi
ok 9 - fail with [--[no-]strict]: "object" line label check
expecting success of 3800.10 'setup: "object" line label check':
tag_ref=refs/tags/bad_tag &&
# Reset any leftover state from the last $subject
rm -rf bad-tag &&
git init --bare bad-tag &&
bad_tag=$(git -C bad-tag hash-object -t tag -w --stdin --literally <tag.sig)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3800-mktag/bad-tag/
ok 10 - setup: "object" line label check
expecting success of 3800.11 'hash-object & fsck unreachable: "object" line label check':
if test -n "$fsck_obj_ok"
then
git -C bad-tag fsck
else
test_must_fail git -C bad-tag fsck
fi
error: b9e0ff26e2bd60ee615c24ca05d8440ef20bca14: object could not be parsed: ./objects/b9/e0ff26e2bd60ee615c24ca05d8440ef20bca14
notice: HEAD points to an unborn branch (master)
notice: No default references
ok 11 - hash-object & fsck unreachable: "object" line label check
expecting success of 3800.12 'update-ref & fsck reachable: "object" line label check':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
# The update-ref of the bad content will fail, do it
# anyway to see if it segfaults
test_might_fail git -C bad-tag update-ref "$tag_ref" "$bad_tag" &&
# Manually create the broken, we cannot do it with
# update-ref
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
# Unlike fsck-ing unreachable content above, this
# will always fail.
test_must_fail git -C bad-tag fsck
b9e0ff26e2bd60ee615c24ca05d8440ef20bca14
fatal: update_ref failed for ref 'refs/tags/bad_tag': cannot update ref 'refs/tags/bad_tag': trying to write ref 'refs/tags/bad_tag' with nonexistent object b9e0ff26e2bd60ee615c24ca05d8440ef20bca14
error: b9e0ff26e2bd60ee615c24ca05d8440ef20bca14: object could not be parsed: ./objects/b9/e0ff26e2bd60ee615c24ca05d8440ef20bca14
error: refs/tags/bad_tag: invalid sha1 pointer b9e0ff26e2bd60ee615c24ca05d8440ef20bca14
notice: HEAD points to an unborn branch (master)
notice: No default references
ok 12 - update-ref & fsck reachable: "object" line label check
expecting success of 3800.13 'for-each-ref: "object" line label check':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
printf "%s tag\t%s\n" "$bad_tag" "$tag_ref" >expected &&
git -C bad-tag for-each-ref "$tag_ref" >actual &&
test_cmp expected actual &&
test_must_fail git -C bad-tag for-each-ref --format="%(*objectname)"
b9e0ff26e2bd60ee615c24ca05d8440ef20bca14
fatal: parse_object_buffer failed on b9e0ff26e2bd60ee615c24ca05d8440ef20bca14 for refs/tags/bad_tag
ok 13 - for-each-ref: "object" line label check
expecting success of 3800.14 'fast-export & fast-import: "object" line label check':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test_must_fail git -C bad-tag fast-export --all &&
test_must_fail git -C bad-tag fast-export "$bad_tag"
b9e0ff26e2bd60ee615c24ca05d8440ef20bca14
fatal: bad object refs/tags/bad_tag
fatal: bad object b9e0ff26e2bd60ee615c24ca05d8440ef20bca14
ok 14 - fast-export & fast-import: "object" line label check
expecting success of 3800.15 'fail with [--[no-]strict]: "object" line check':
test_must_fail git mktag <tag.sig 2>err &&
if test -z "$no_strict"
then
test_must_fail git mktag <tag.sig 2>err2 &&
test_cmp err err2
else
git mktag --no-strict <tag.sig
fi
ok 15 - fail with [--[no-]strict]: "object" line check
expecting success of 3800.16 'setup: "object" line check':
tag_ref=refs/tags/bad_tag &&
# Reset any leftover state from the last $subject
rm -rf bad-tag &&
git init --bare bad-tag &&
bad_tag=$(git -C bad-tag hash-object -t tag -w --stdin --literally <tag.sig)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3800-mktag/bad-tag/
ok 16 - setup: "object" line check
expecting success of 3800.17 'hash-object & fsck unreachable: "object" line check':
if test -n "$fsck_obj_ok"
then
git -C bad-tag fsck
else
test_must_fail git -C bad-tag fsck
fi
error: 7ff15067ef1f3dffae49e370c6032ac7c0148ce3: object could not be parsed: ./objects/7f/f15067ef1f3dffae49e370c6032ac7c0148ce3
notice: HEAD points to an unborn branch (master)
notice: No default references
ok 17 - hash-object & fsck unreachable: "object" line check
expecting success of 3800.18 'update-ref & fsck reachable: "object" line check':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
# The update-ref of the bad content will fail, do it
# anyway to see if it segfaults
test_might_fail git -C bad-tag update-ref "$tag_ref" "$bad_tag" &&
# Manually create the broken, we cannot do it with
# update-ref
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
# Unlike fsck-ing unreachable content above, this
# will always fail.
test_must_fail git -C bad-tag fsck
7ff15067ef1f3dffae49e370c6032ac7c0148ce3
fatal: update_ref failed for ref 'refs/tags/bad_tag': cannot update ref 'refs/tags/bad_tag': trying to write ref 'refs/tags/bad_tag' with nonexistent object 7ff15067ef1f3dffae49e370c6032ac7c0148ce3
error: 7ff15067ef1f3dffae49e370c6032ac7c0148ce3: object could not be parsed: ./objects/7f/f15067ef1f3dffae49e370c6032ac7c0148ce3
error: refs/tags/bad_tag: invalid sha1 pointer 7ff15067ef1f3dffae49e370c6032ac7c0148ce3
notice: HEAD points to an unborn branch (master)
notice: No default references
ok 18 - update-ref & fsck reachable: "object" line check
expecting success of 3800.19 'for-each-ref: "object" line check':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
printf "%s tag\t%s\n" "$bad_tag" "$tag_ref" >expected &&
git -C bad-tag for-each-ref "$tag_ref" >actual &&
test_cmp expected actual &&
test_must_fail git -C bad-tag for-each-ref --format="%(*objectname)"
7ff15067ef1f3dffae49e370c6032ac7c0148ce3
fatal: parse_object_buffer failed on 7ff15067ef1f3dffae49e370c6032ac7c0148ce3 for refs/tags/bad_tag
ok 19 - for-each-ref: "object" line check
expecting success of 3800.20 'fast-export & fast-import: "object" line check':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test_must_fail git -C bad-tag fast-export --all &&
test_must_fail git -C bad-tag fast-export "$bad_tag"
7ff15067ef1f3dffae49e370c6032ac7c0148ce3
fatal: bad object refs/tags/bad_tag
fatal: bad object 7ff15067ef1f3dffae49e370c6032ac7c0148ce3
ok 20 - fast-export & fast-import: "object" line check
expecting success of 3800.21 'fail with [--[no-]strict]: "type" line label check':
test_must_fail git mktag <tag.sig 2>err &&
if test -z "$no_strict"
then
test_must_fail git mktag <tag.sig 2>err2 &&
test_cmp err err2
else
git mktag --no-strict <tag.sig
fi
ok 21 - fail with [--[no-]strict]: "type" line label check
expecting success of 3800.22 'setup: "type" line label check':
tag_ref=refs/tags/bad_tag &&
# Reset any leftover state from the last $subject
rm -rf bad-tag &&
git init --bare bad-tag &&
bad_tag=$(git -C bad-tag hash-object -t tag -w --stdin --literally <tag.sig)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3800-mktag/bad-tag/
ok 22 - setup: "type" line label check
expecting success of 3800.23 'hash-object & fsck unreachable: "type" line label check':
if test -n "$fsck_obj_ok"
then
git -C bad-tag fsck
else
test_must_fail git -C bad-tag fsck
fi
error: 090ab97d1645d040d15bb9e4b20fd6212b886bca: object could not be parsed: ./objects/09/0ab97d1645d040d15bb9e4b20fd6212b886bca
notice: HEAD points to an unborn branch (master)
notice: No default references
ok 23 - hash-object & fsck unreachable: "type" line label check
expecting success of 3800.24 'update-ref & fsck reachable: "type" line label check':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
# The update-ref of the bad content will fail, do it
# anyway to see if it segfaults
test_might_fail git -C bad-tag update-ref "$tag_ref" "$bad_tag" &&
# Manually create the broken, we cannot do it with
# update-ref
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
# Unlike fsck-ing unreachable content above, this
# will always fail.
test_must_fail git -C bad-tag fsck
090ab97d1645d040d15bb9e4b20fd6212b886bca
fatal: update_ref failed for ref 'refs/tags/bad_tag': cannot update ref 'refs/tags/bad_tag': trying to write ref 'refs/tags/bad_tag' with nonexistent object 090ab97d1645d040d15bb9e4b20fd6212b886bca
error: 090ab97d1645d040d15bb9e4b20fd6212b886bca: object could not be parsed: ./objects/09/0ab97d1645d040d15bb9e4b20fd6212b886bca
error: refs/tags/bad_tag: invalid sha1 pointer 090ab97d1645d040d15bb9e4b20fd6212b886bca
notice: HEAD points to an unborn branch (master)
notice: No default references
ok 24 - update-ref & fsck reachable: "type" line label check
expecting success of 3800.25 'for-each-ref: "type" line label check':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
printf "%s tag\t%s\n" "$bad_tag" "$tag_ref" >expected &&
git -C bad-tag for-each-ref "$tag_ref" >actual &&
test_cmp expected actual &&
test_must_fail git -C bad-tag for-each-ref --format="%(*objectname)"
090ab97d1645d040d15bb9e4b20fd6212b886bca
fatal: parse_object_buffer failed on 090ab97d1645d040d15bb9e4b20fd6212b886bca for refs/tags/bad_tag
ok 25 - for-each-ref: "type" line label check
expecting success of 3800.26 'fast-export & fast-import: "type" line label check':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test_must_fail git -C bad-tag fast-export --all &&
test_must_fail git -C bad-tag fast-export "$bad_tag"
090ab97d1645d040d15bb9e4b20fd6212b886bca
fatal: bad object refs/tags/bad_tag
fatal: bad object 090ab97d1645d040d15bb9e4b20fd6212b886bca
ok 26 - fast-export & fast-import: "type" line label check
expecting success of 3800.27 'fail with [--[no-]strict]: "type" line eol check':
test_must_fail git mktag <tag.sig 2>err &&
if test -z "$no_strict"
then
test_must_fail git mktag <tag.sig 2>err2 &&
test_cmp err err2
else
git mktag --no-strict <tag.sig
fi
ok 27 - fail with [--[no-]strict]: "type" line eol check
expecting success of 3800.28 'setup: "type" line eol check':
tag_ref=refs/tags/bad_tag &&
# Reset any leftover state from the last $subject
rm -rf bad-tag &&
git init --bare bad-tag &&
bad_tag=$(git -C bad-tag hash-object -t tag -w --stdin --literally <tag.sig)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3800-mktag/bad-tag/
ok 28 - setup: "type" line eol check
expecting success of 3800.29 'hash-object & fsck unreachable: "type" line eol check':
if test -n "$fsck_obj_ok"
then
git -C bad-tag fsck
else
test_must_fail git -C bad-tag fsck
fi
error: a36dccd49036e007b4d53368115f23136beaf229: object could not be parsed: ./objects/a3/6dccd49036e007b4d53368115f23136beaf229
notice: HEAD points to an unborn branch (master)
notice: No default references
ok 29 - hash-object & fsck unreachable: "type" line eol check
expecting success of 3800.30 'update-ref & fsck reachable: "type" line eol check':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
# The update-ref of the bad content will fail, do it
# anyway to see if it segfaults
test_might_fail git -C bad-tag update-ref "$tag_ref" "$bad_tag" &&
# Manually create the broken, we cannot do it with
# update-ref
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
# Unlike fsck-ing unreachable content above, this
# will always fail.
test_must_fail git -C bad-tag fsck
a36dccd49036e007b4d53368115f23136beaf229
fatal: update_ref failed for ref 'refs/tags/bad_tag': cannot update ref 'refs/tags/bad_tag': trying to write ref 'refs/tags/bad_tag' with nonexistent object a36dccd49036e007b4d53368115f23136beaf229
error: a36dccd49036e007b4d53368115f23136beaf229: object could not be parsed: ./objects/a3/6dccd49036e007b4d53368115f23136beaf229
error: refs/tags/bad_tag: invalid sha1 pointer a36dccd49036e007b4d53368115f23136beaf229
notice: HEAD points to an unborn branch (master)
notice: No default references
ok 30 - update-ref & fsck reachable: "type" line eol check
expecting success of 3800.31 'for-each-ref: "type" line eol check':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
printf "%s tag\t%s\n" "$bad_tag" "$tag_ref" >expected &&
git -C bad-tag for-each-ref "$tag_ref" >actual &&
test_cmp expected actual &&
test_must_fail git -C bad-tag for-each-ref --format="%(*objectname)"
a36dccd49036e007b4d53368115f23136beaf229
fatal: parse_object_buffer failed on a36dccd49036e007b4d53368115f23136beaf229 for refs/tags/bad_tag
ok 31 - for-each-ref: "type" line eol check
expecting success of 3800.32 'fast-export & fast-import: "type" line eol check':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test_must_fail git -C bad-tag fast-export --all &&
test_must_fail git -C bad-tag fast-export "$bad_tag"
a36dccd49036e007b4d53368115f23136beaf229
fatal: bad object refs/tags/bad_tag
fatal: bad object a36dccd49036e007b4d53368115f23136beaf229
ok 32 - fast-export & fast-import: "type" line eol check
expecting success of 3800.33 'fail with [--[no-]strict]: "tag" line label check #1':
test_must_fail git mktag <tag.sig 2>err &&
if test -z "$no_strict"
then
test_must_fail git mktag <tag.sig 2>err2 &&
test_cmp err err2
else
git mktag --no-strict <tag.sig
fi
ok 33 - fail with [--[no-]strict]: "tag" line label check #1
expecting success of 3800.34 'setup: "tag" line label check #1':
tag_ref=refs/tags/bad_tag &&
# Reset any leftover state from the last $subject
rm -rf bad-tag &&
git init --bare bad-tag &&
bad_tag=$(git -C bad-tag hash-object -t tag -w --stdin --literally <tag.sig)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3800-mktag/bad-tag/
ok 34 - setup: "tag" line label check #1
expecting success of 3800.35 'hash-object & fsck unreachable: "tag" line label check #1':
if test -n "$fsck_obj_ok"
then
git -C bad-tag fsck
else
test_must_fail git -C bad-tag fsck
fi
error: 37957fe24f66b0a0c90e24e3e0d1c79c27c66a08: object could not be parsed: ./objects/37/957fe24f66b0a0c90e24e3e0d1c79c27c66a08
notice: HEAD points to an unborn branch (master)
notice: No default references
ok 35 - hash-object & fsck unreachable: "tag" line label check #1
expecting success of 3800.36 'update-ref & fsck reachable: "tag" line label check #1':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
# The update-ref of the bad content will fail, do it
# anyway to see if it segfaults
test_might_fail git -C bad-tag update-ref "$tag_ref" "$bad_tag" &&
# Manually create the broken, we cannot do it with
# update-ref
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
# Unlike fsck-ing unreachable content above, this
# will always fail.
test_must_fail git -C bad-tag fsck
37957fe24f66b0a0c90e24e3e0d1c79c27c66a08
fatal: update_ref failed for ref 'refs/tags/bad_tag': cannot update ref 'refs/tags/bad_tag': trying to write ref 'refs/tags/bad_tag' with nonexistent object 37957fe24f66b0a0c90e24e3e0d1c79c27c66a08
error: 37957fe24f66b0a0c90e24e3e0d1c79c27c66a08: object could not be parsed: ./objects/37/957fe24f66b0a0c90e24e3e0d1c79c27c66a08
error: refs/tags/bad_tag: invalid sha1 pointer 37957fe24f66b0a0c90e24e3e0d1c79c27c66a08
notice: HEAD points to an unborn branch (master)
notice: No default references
ok 36 - update-ref & fsck reachable: "tag" line label check #1
expecting success of 3800.37 'for-each-ref: "tag" line label check #1':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
printf "%s tag\t%s\n" "$bad_tag" "$tag_ref" >expected &&
git -C bad-tag for-each-ref "$tag_ref" >actual &&
test_cmp expected actual &&
test_must_fail git -C bad-tag for-each-ref --format="%(*objectname)"
37957fe24f66b0a0c90e24e3e0d1c79c27c66a08
fatal: parse_object_buffer failed on 37957fe24f66b0a0c90e24e3e0d1c79c27c66a08 for refs/tags/bad_tag
ok 37 - for-each-ref: "tag" line label check #1
expecting success of 3800.38 'fast-export & fast-import: "tag" line label check #1':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test_must_fail git -C bad-tag fast-export --all &&
test_must_fail git -C bad-tag fast-export "$bad_tag"
37957fe24f66b0a0c90e24e3e0d1c79c27c66a08
fatal: bad object refs/tags/bad_tag
fatal: bad object 37957fe24f66b0a0c90e24e3e0d1c79c27c66a08
ok 38 - fast-export & fast-import: "tag" line label check #1
expecting success of 3800.39 'fail with [--[no-]strict]: "tag" line label check #2':
test_must_fail git mktag <tag.sig 2>err &&
if test -z "$no_strict"
then
test_must_fail git mktag <tag.sig 2>err2 &&
test_cmp err err2
else
git mktag --no-strict <tag.sig
fi
ok 39 - fail with [--[no-]strict]: "tag" line label check #2
expecting success of 3800.40 'setup: "tag" line label check #2':
tag_ref=refs/tags/bad_tag &&
# Reset any leftover state from the last $subject
rm -rf bad-tag &&
git init --bare bad-tag &&
bad_tag=$(git -C bad-tag hash-object -t tag -w --stdin --literally <tag.sig)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3800-mktag/bad-tag/
ok 40 - setup: "tag" line label check #2
expecting success of 3800.41 'hash-object & fsck unreachable: "tag" line label check #2':
if test -n "$fsck_obj_ok"
then
git -C bad-tag fsck
else
test_must_fail git -C bad-tag fsck
fi
error: c39056bc6fbf6608f8331298eaf035bdb0b551d1: object could not be parsed: ./objects/c3/9056bc6fbf6608f8331298eaf035bdb0b551d1
notice: HEAD points to an unborn branch (master)
notice: No default references
ok 41 - hash-object & fsck unreachable: "tag" line label check #2
expecting success of 3800.42 'update-ref & fsck reachable: "tag" line label check #2':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
# The update-ref of the bad content will fail, do it
# anyway to see if it segfaults
test_might_fail git -C bad-tag update-ref "$tag_ref" "$bad_tag" &&
# Manually create the broken, we cannot do it with
# update-ref
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
# Unlike fsck-ing unreachable content above, this
# will always fail.
test_must_fail git -C bad-tag fsck
c39056bc6fbf6608f8331298eaf035bdb0b551d1
fatal: update_ref failed for ref 'refs/tags/bad_tag': cannot update ref 'refs/tags/bad_tag': trying to write ref 'refs/tags/bad_tag' with nonexistent object c39056bc6fbf6608f8331298eaf035bdb0b551d1
error: c39056bc6fbf6608f8331298eaf035bdb0b551d1: object could not be parsed: ./objects/c3/9056bc6fbf6608f8331298eaf035bdb0b551d1
error: refs/tags/bad_tag: invalid sha1 pointer c39056bc6fbf6608f8331298eaf035bdb0b551d1
notice: HEAD points to an unborn branch (master)
notice: No default references
ok 42 - update-ref & fsck reachable: "tag" line label check #2
expecting success of 3800.43 'for-each-ref: "tag" line label check #2':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
printf "%s tag\t%s\n" "$bad_tag" "$tag_ref" >expected &&
git -C bad-tag for-each-ref "$tag_ref" >actual &&
test_cmp expected actual &&
test_must_fail git -C bad-tag for-each-ref --format="%(*objectname)"
c39056bc6fbf6608f8331298eaf035bdb0b551d1
fatal: parse_object_buffer failed on c39056bc6fbf6608f8331298eaf035bdb0b551d1 for refs/tags/bad_tag
ok 43 - for-each-ref: "tag" line label check #2
expecting success of 3800.44 'fast-export & fast-import: "tag" line label check #2':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test_must_fail git -C bad-tag fast-export --all &&
test_must_fail git -C bad-tag fast-export "$bad_tag"
c39056bc6fbf6608f8331298eaf035bdb0b551d1
fatal: bad object refs/tags/bad_tag
fatal: bad object c39056bc6fbf6608f8331298eaf035bdb0b551d1
ok 44 - fast-export & fast-import: "tag" line label check #2
expecting success of 3800.45 'fail with [--[no-]strict]: "type" line type-name length check':
test_must_fail git mktag <tag.sig 2>err &&
if test -z "$no_strict"
then
test_must_fail git mktag <tag.sig 2>err2 &&
test_cmp err err2
else
git mktag --no-strict <tag.sig
fi
ok 45 - fail with [--[no-]strict]: "type" line type-name length check
expecting success of 3800.46 'setup: "type" line type-name length check':
tag_ref=refs/tags/bad_tag &&
# Reset any leftover state from the last $subject
rm -rf bad-tag &&
git init --bare bad-tag &&
bad_tag=$(git -C bad-tag hash-object -t tag -w --stdin --literally <tag.sig)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3800-mktag/bad-tag/
ok 46 - setup: "type" line type-name length check
expecting success of 3800.47 'hash-object & fsck unreachable: "type" line type-name length check':
if test -n "$fsck_obj_ok"
then
git -C bad-tag fsck
else
test_must_fail git -C bad-tag fsck
fi
error: c03294b01e3733b92662e0a182bacdaa09e6cd45: object could not be parsed: ./objects/c0/3294b01e3733b92662e0a182bacdaa09e6cd45
notice: HEAD points to an unborn branch (master)
notice: No default references
ok 47 - hash-object & fsck unreachable: "type" line type-name length check
expecting success of 3800.48 'update-ref & fsck reachable: "type" line type-name length check':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
# The update-ref of the bad content will fail, do it
# anyway to see if it segfaults
test_might_fail git -C bad-tag update-ref "$tag_ref" "$bad_tag" &&
# Manually create the broken, we cannot do it with
# update-ref
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
# Unlike fsck-ing unreachable content above, this
# will always fail.
test_must_fail git -C bad-tag fsck
c03294b01e3733b92662e0a182bacdaa09e6cd45
fatal: update_ref failed for ref 'refs/tags/bad_tag': cannot update ref 'refs/tags/bad_tag': trying to write ref 'refs/tags/bad_tag' with nonexistent object c03294b01e3733b92662e0a182bacdaa09e6cd45
error: c03294b01e3733b92662e0a182bacdaa09e6cd45: object could not be parsed: ./objects/c0/3294b01e3733b92662e0a182bacdaa09e6cd45
error: refs/tags/bad_tag: invalid sha1 pointer c03294b01e3733b92662e0a182bacdaa09e6cd45
notice: HEAD points to an unborn branch (master)
notice: No default references
ok 48 - update-ref & fsck reachable: "type" line type-name length check
expecting success of 3800.49 'for-each-ref: "type" line type-name length check':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
printf "%s tag\t%s\n" "$bad_tag" "$tag_ref" >expected &&
git -C bad-tag for-each-ref "$tag_ref" >actual &&
test_cmp expected actual &&
test_must_fail git -C bad-tag for-each-ref --format="%(*objectname)"
c03294b01e3733b92662e0a182bacdaa09e6cd45
fatal: parse_object_buffer failed on c03294b01e3733b92662e0a182bacdaa09e6cd45 for refs/tags/bad_tag
ok 49 - for-each-ref: "type" line type-name length check
expecting success of 3800.50 'fast-export & fast-import: "type" line type-name length check':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test_must_fail git -C bad-tag fast-export --all &&
test_must_fail git -C bad-tag fast-export "$bad_tag"
c03294b01e3733b92662e0a182bacdaa09e6cd45
fatal: bad object refs/tags/bad_tag
fatal: bad object c03294b01e3733b92662e0a182bacdaa09e6cd45
ok 50 - fast-export & fast-import: "type" line type-name length check
expecting success of 3800.51 'fail with [--[no-]strict]: verify object (hash/type) check -- correct type, nonexisting object':
test_must_fail git mktag <tag.sig 2>err &&
if test -z "$no_strict"
then
test_must_fail git mktag <tag.sig 2>err2 &&
test_cmp err err2
else
git mktag --no-strict <tag.sig
fi
ok 51 - fail with [--[no-]strict]: verify object (hash/type) check -- correct type, nonexisting object
expecting success of 3800.52 'setup: verify object (hash/type) check -- correct type, nonexisting object':
tag_ref=refs/tags/bad_tag &&
# Reset any leftover state from the last $subject
rm -rf bad-tag &&
git init --bare bad-tag &&
bad_tag=$(git -C bad-tag hash-object -t tag -w --stdin --literally <tag.sig)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3800-mktag/bad-tag/
ok 52 - setup: verify object (hash/type) check -- correct type, nonexisting object
expecting success of 3800.53 'hash-object & fsck unreachable: verify object (hash/type) check -- correct type, nonexisting object':
if test -n "$fsck_obj_ok"
then
git -C bad-tag fsck
else
test_must_fail git -C bad-tag fsck
fi
notice: HEAD points to an unborn branch (master)
notice: No default references
dangling tag 4e3fe4d9567cd5a844c5587aa99cf1b302e7487f
ok 53 - hash-object & fsck unreachable: verify object (hash/type) check -- correct type, nonexisting object
expecting success of 3800.54 'update-ref & fsck reachable: verify object (hash/type) check -- correct type, nonexisting object':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
# The update-ref of the bad content will fail, do it
# anyway to see if it segfaults
test_might_fail git -C bad-tag update-ref "$tag_ref" "$bad_tag" &&
# Manually create the broken, we cannot do it with
# update-ref
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
# Unlike fsck-ing unreachable content above, this
# will always fail.
test_must_fail git -C bad-tag fsck
4e3fe4d9567cd5a844c5587aa99cf1b302e7487f
notice: HEAD points to an unborn branch (master)
broken link from tag 4e3fe4d9567cd5a844c5587aa99cf1b302e7487f
to tag deadbeefdeadbeefdeadbeefdeadbeefdeadbeef
missing tag deadbeefdeadbeefdeadbeefdeadbeefdeadbeef
ok 54 - update-ref & fsck reachable: verify object (hash/type) check -- correct type, nonexisting object
expecting success of 3800.55 'for-each-ref: verify object (hash/type) check -- correct type, nonexisting object':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
printf "%s tag\t%s\n" "$bad_tag" "$tag_ref" >expected &&
git -C bad-tag for-each-ref "$tag_ref" >actual &&
test_cmp expected actual &&
test_must_fail git -C bad-tag for-each-ref --format="%(*objectname)"
4e3fe4d9567cd5a844c5587aa99cf1b302e7487f
fatal: missing object deadbeefdeadbeefdeadbeefdeadbeefdeadbeef for refs/tags/bad_tag
ok 55 - for-each-ref: verify object (hash/type) check -- correct type, nonexisting object
expecting success of 3800.56 'fast-export & fast-import: verify object (hash/type) check -- correct type, nonexisting object':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test_must_fail git -C bad-tag fast-export --all &&
test_must_fail git -C bad-tag fast-export "$bad_tag"
4e3fe4d9567cd5a844c5587aa99cf1b302e7487f
fatal: Tag refs/tags/bad_tag points nowhere?
fatal: bad object deadbeefdeadbeefdeadbeefdeadbeefdeadbeef
ok 56 - fast-export & fast-import: verify object (hash/type) check -- correct type, nonexisting object
expecting success of 3800.57 'fail with [--[no-]strict]: verify object (hash/type) check -- made-up type, valid object':
test_must_fail git mktag <tag.sig 2>err &&
if test -z "$no_strict"
then
test_must_fail git mktag <tag.sig 2>err2 &&
test_cmp err err2
else
git mktag --no-strict <tag.sig
fi
ok 57 - fail with [--[no-]strict]: verify object (hash/type) check -- made-up type, valid object
expecting success of 3800.58 'setup: verify object (hash/type) check -- made-up type, valid object':
tag_ref=refs/tags/bad_tag &&
# Reset any leftover state from the last $subject
rm -rf bad-tag &&
git init --bare bad-tag &&
bad_tag=$(git -C bad-tag hash-object -t tag -w --stdin --literally <tag.sig)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3800-mktag/bad-tag/
ok 58 - setup: verify object (hash/type) check -- made-up type, valid object
expecting success of 3800.59 'hash-object & fsck unreachable: verify object (hash/type) check -- made-up type, valid object':
if test -n "$fsck_obj_ok"
then
git -C bad-tag fsck
else
test_must_fail git -C bad-tag fsck
fi
error: unknown tag type 'tagggg' in 52b3b27f1ab531cc409f48a025c37dbc1f4f6ac0
error: 52b3b27f1ab531cc409f48a025c37dbc1f4f6ac0: object could not be parsed: ./objects/52/b3b27f1ab531cc409f48a025c37dbc1f4f6ac0
notice: HEAD points to an unborn branch (master)
notice: No default references
ok 59 - hash-object & fsck unreachable: verify object (hash/type) check -- made-up type, valid object
expecting success of 3800.60 'update-ref & fsck reachable: verify object (hash/type) check -- made-up type, valid object':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
# The update-ref of the bad content will fail, do it
# anyway to see if it segfaults
test_might_fail git -C bad-tag update-ref "$tag_ref" "$bad_tag" &&
# Manually create the broken, we cannot do it with
# update-ref
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
# Unlike fsck-ing unreachable content above, this
# will always fail.
test_must_fail git -C bad-tag fsck
52b3b27f1ab531cc409f48a025c37dbc1f4f6ac0
error: unknown tag type 'tagggg' in 52b3b27f1ab531cc409f48a025c37dbc1f4f6ac0
fatal: update_ref failed for ref 'refs/tags/bad_tag': cannot update ref 'refs/tags/bad_tag': trying to write ref 'refs/tags/bad_tag' with nonexistent object 52b3b27f1ab531cc409f48a025c37dbc1f4f6ac0
error: unknown tag type 'tagggg' in 52b3b27f1ab531cc409f48a025c37dbc1f4f6ac0
error: 52b3b27f1ab531cc409f48a025c37dbc1f4f6ac0: object could not be parsed: ./objects/52/b3b27f1ab531cc409f48a025c37dbc1f4f6ac0
error: unknown tag type 'tagggg' in 52b3b27f1ab531cc409f48a025c37dbc1f4f6ac0
error: refs/tags/bad_tag: invalid sha1 pointer 52b3b27f1ab531cc409f48a025c37dbc1f4f6ac0
notice: HEAD points to an unborn branch (master)
notice: No default references
ok 60 - update-ref & fsck reachable: verify object (hash/type) check -- made-up type, valid object
expecting success of 3800.61 'for-each-ref: verify object (hash/type) check -- made-up type, valid object':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
printf "%s tag\t%s\n" "$bad_tag" "$tag_ref" >expected &&
git -C bad-tag for-each-ref "$tag_ref" >actual &&
test_cmp expected actual &&
test_must_fail git -C bad-tag for-each-ref --format="%(*objectname)"
52b3b27f1ab531cc409f48a025c37dbc1f4f6ac0
error: unknown tag type 'tagggg' in 52b3b27f1ab531cc409f48a025c37dbc1f4f6ac0
fatal: parse_object_buffer failed on 52b3b27f1ab531cc409f48a025c37dbc1f4f6ac0 for refs/tags/bad_tag
ok 61 - for-each-ref: verify object (hash/type) check -- made-up type, valid object
expecting success of 3800.62 'fast-export & fast-import: verify object (hash/type) check -- made-up type, valid object':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test_must_fail git -C bad-tag fast-export --all &&
test_must_fail git -C bad-tag fast-export "$bad_tag"
52b3b27f1ab531cc409f48a025c37dbc1f4f6ac0
error: unknown tag type 'tagggg' in 52b3b27f1ab531cc409f48a025c37dbc1f4f6ac0
fatal: bad object refs/tags/bad_tag
error: unknown tag type 'tagggg' in 52b3b27f1ab531cc409f48a025c37dbc1f4f6ac0
fatal: bad object 52b3b27f1ab531cc409f48a025c37dbc1f4f6ac0
ok 62 - fast-export & fast-import: verify object (hash/type) check -- made-up type, valid object
expecting success of 3800.63 'fail with [--[no-]strict]: verify object (hash/type) check -- made-up type, nonexisting object':
test_must_fail git mktag <tag.sig 2>err &&
if test -z "$no_strict"
then
test_must_fail git mktag <tag.sig 2>err2 &&
test_cmp err err2
else
git mktag --no-strict <tag.sig
fi
ok 63 - fail with [--[no-]strict]: verify object (hash/type) check -- made-up type, nonexisting object
expecting success of 3800.64 'setup: verify object (hash/type) check -- made-up type, nonexisting object':
tag_ref=refs/tags/bad_tag &&
# Reset any leftover state from the last $subject
rm -rf bad-tag &&
git init --bare bad-tag &&
bad_tag=$(git -C bad-tag hash-object -t tag -w --stdin --literally <tag.sig)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3800-mktag/bad-tag/
ok 64 - setup: verify object (hash/type) check -- made-up type, nonexisting object
expecting success of 3800.65 'hash-object & fsck unreachable: verify object (hash/type) check -- made-up type, nonexisting object':
if test -n "$fsck_obj_ok"
then
git -C bad-tag fsck
else
test_must_fail git -C bad-tag fsck
fi
error: unknown tag type 'tagggg' in 873c7147ca509be00715bfd9f0901c56090b241a
error: 873c7147ca509be00715bfd9f0901c56090b241a: object could not be parsed: ./objects/87/3c7147ca509be00715bfd9f0901c56090b241a
notice: HEAD points to an unborn branch (master)
notice: No default references
ok 65 - hash-object & fsck unreachable: verify object (hash/type) check -- made-up type, nonexisting object
expecting success of 3800.66 'update-ref & fsck reachable: verify object (hash/type) check -- made-up type, nonexisting object':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
# The update-ref of the bad content will fail, do it
# anyway to see if it segfaults
test_might_fail git -C bad-tag update-ref "$tag_ref" "$bad_tag" &&
# Manually create the broken, we cannot do it with
# update-ref
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
# Unlike fsck-ing unreachable content above, this
# will always fail.
test_must_fail git -C bad-tag fsck
873c7147ca509be00715bfd9f0901c56090b241a
error: unknown tag type 'tagggg' in 873c7147ca509be00715bfd9f0901c56090b241a
fatal: update_ref failed for ref 'refs/tags/bad_tag': cannot update ref 'refs/tags/bad_tag': trying to write ref 'refs/tags/bad_tag' with nonexistent object 873c7147ca509be00715bfd9f0901c56090b241a
error: unknown tag type 'tagggg' in 873c7147ca509be00715bfd9f0901c56090b241a
error: 873c7147ca509be00715bfd9f0901c56090b241a: object could not be parsed: ./objects/87/3c7147ca509be00715bfd9f0901c56090b241a
error: unknown tag type 'tagggg' in 873c7147ca509be00715bfd9f0901c56090b241a
error: refs/tags/bad_tag: invalid sha1 pointer 873c7147ca509be00715bfd9f0901c56090b241a
notice: HEAD points to an unborn branch (master)
notice: No default references
ok 66 - update-ref & fsck reachable: verify object (hash/type) check -- made-up type, nonexisting object
expecting success of 3800.67 'for-each-ref: verify object (hash/type) check -- made-up type, nonexisting object':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
printf "%s tag\t%s\n" "$bad_tag" "$tag_ref" >expected &&
git -C bad-tag for-each-ref "$tag_ref" >actual &&
test_cmp expected actual &&
test_must_fail git -C bad-tag for-each-ref --format="%(*objectname)"
873c7147ca509be00715bfd9f0901c56090b241a
error: unknown tag type 'tagggg' in 873c7147ca509be00715bfd9f0901c56090b241a
fatal: parse_object_buffer failed on 873c7147ca509be00715bfd9f0901c56090b241a for refs/tags/bad_tag
ok 67 - for-each-ref: verify object (hash/type) check -- made-up type, nonexisting object
expecting success of 3800.68 'fast-export & fast-import: verify object (hash/type) check -- made-up type, nonexisting object':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test_must_fail git -C bad-tag fast-export --all &&
test_must_fail git -C bad-tag fast-export "$bad_tag"
873c7147ca509be00715bfd9f0901c56090b241a
error: unknown tag type 'tagggg' in 873c7147ca509be00715bfd9f0901c56090b241a
fatal: bad object refs/tags/bad_tag
error: unknown tag type 'tagggg' in 873c7147ca509be00715bfd9f0901c56090b241a
fatal: bad object 873c7147ca509be00715bfd9f0901c56090b241a
ok 68 - fast-export & fast-import: verify object (hash/type) check -- made-up type, nonexisting object
expecting success of 3800.69 'fail with [--[no-]strict]: verify object (hash/type) check -- mismatched type, valid object':
test_must_fail git mktag <tag.sig 2>err &&
if test -z "$no_strict"
then
test_must_fail git mktag <tag.sig 2>err2 &&
test_cmp err err2
else
git mktag --no-strict <tag.sig
fi
ok 69 - fail with [--[no-]strict]: verify object (hash/type) check -- mismatched type, valid object
expecting success of 3800.70 'setup: verify object (hash/type) check -- mismatched type, valid object':
tag_ref=refs/tags/bad_tag &&
# Reset any leftover state from the last $subject
rm -rf bad-tag &&
git init --bare bad-tag &&
bad_tag=$(git -C bad-tag hash-object -t tag -w --stdin --literally <tag.sig)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3800-mktag/bad-tag/
ok 70 - setup: verify object (hash/type) check -- mismatched type, valid object
expecting success of 3800.71 'hash-object & fsck unreachable: verify object (hash/type) check -- mismatched type, valid object':
if test -n "$fsck_obj_ok"
then
git -C bad-tag fsck
else
test_must_fail git -C bad-tag fsck
fi
notice: HEAD points to an unborn branch (master)
notice: No default references
dangling tag 8eb32de5253d54ed4e9a069073f158738f84be64
ok 71 - hash-object & fsck unreachable: verify object (hash/type) check -- mismatched type, valid object
expecting success of 3800.72 'update-ref & fsck reachable: verify object (hash/type) check -- mismatched type, valid object':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
# The update-ref of the bad content will fail, do it
# anyway to see if it segfaults
test_might_fail git -C bad-tag update-ref "$tag_ref" "$bad_tag" &&
# Manually create the broken, we cannot do it with
# update-ref
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
# Unlike fsck-ing unreachable content above, this
# will always fail.
test_must_fail git -C bad-tag fsck
8eb32de5253d54ed4e9a069073f158738f84be64
notice: HEAD points to an unborn branch (master)
broken link from tag 8eb32de5253d54ed4e9a069073f158738f84be64
to tree d9df4505cb3522088b9e29d6051ac16f1564154a
missing tree d9df4505cb3522088b9e29d6051ac16f1564154a
ok 72 - update-ref & fsck reachable: verify object (hash/type) check -- mismatched type, valid object
expecting success of 3800.73 'for-each-ref: verify object (hash/type) check -- mismatched type, valid object':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
printf "%s tag\t%s\n" "$bad_tag" "$tag_ref" >expected &&
git -C bad-tag for-each-ref "$tag_ref" >actual &&
test_cmp expected actual &&
test_must_fail git -C bad-tag for-each-ref --format="%(*objectname)"
8eb32de5253d54ed4e9a069073f158738f84be64
fatal: missing object d9df4505cb3522088b9e29d6051ac16f1564154a for refs/tags/bad_tag
ok 73 - for-each-ref: verify object (hash/type) check -- mismatched type, valid object
expecting success of 3800.74 'fast-export & fast-import: verify object (hash/type) check -- mismatched type, valid object':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test_must_fail git -C bad-tag fast-export --all &&
test_must_fail git -C bad-tag fast-export "$bad_tag"
8eb32de5253d54ed4e9a069073f158738f84be64
warning: Tag points to object of unexpected type tree, skipping.
fatal: bad object d9df4505cb3522088b9e29d6051ac16f1564154a
fatal: bad object d9df4505cb3522088b9e29d6051ac16f1564154a
ok 74 - fast-export & fast-import: verify object (hash/type) check -- mismatched type, valid object
expecting success of 3800.75 'setup replacement of commit -> commit and tree -> blob':
git replace $head_parent $head &&
git replace -f $tree $blob
ok 75 - setup replacement of commit -> commit and tree -> blob
expecting success of 3800.76 'tag to a commit replaced by another commit':
git hash-object -t tag -w --stdin <tag.sig >expected &&
git fsck --strict &&
git mktag <tag.sig >hash &&
test_cmp expected hash &&
test_when_finished "git update-ref -d refs/tags/mytag $(cat hash)" &&
git update-ref refs/tags/mytag $(cat hash) $(test_oid zero) &&
git fsck --strict
dangling tag 0182c9c0d953da2345b39546afbd57e917ee9f4c
dangling tag 03e2668a257938d0a47497d9762e45da6c84c9f8
dangling tag 03e2668a257938d0a47497d9762e45da6c84c9f8
ok 76 - tag to a commit replaced by another commit
expecting success of 3800.77 'fail with [--[no-]strict]: verify object (hash/type) check -- mismatched type, valid object':
test_must_fail git mktag <tag.sig 2>err &&
if test -z "$no_strict"
then
test_must_fail git mktag <tag.sig 2>err2 &&
test_cmp err err2
else
git mktag --no-strict <tag.sig
fi
ok 77 - fail with [--[no-]strict]: verify object (hash/type) check -- mismatched type, valid object
expecting success of 3800.78 'setup: verify object (hash/type) check -- mismatched type, valid object':
tag_ref=refs/tags/bad_tag &&
# Reset any leftover state from the last $subject
rm -rf bad-tag &&
git init --bare bad-tag &&
bad_tag=$(git -C bad-tag hash-object -t tag -w --stdin --literally <tag.sig)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3800-mktag/bad-tag/
ok 78 - setup: verify object (hash/type) check -- mismatched type, valid object
expecting success of 3800.79 'hash-object & fsck unreachable: verify object (hash/type) check -- mismatched type, valid object':
if test -n "$fsck_obj_ok"
then
git -C bad-tag fsck
else
test_must_fail git -C bad-tag fsck
fi
notice: HEAD points to an unborn branch (master)
notice: No default references
dangling tag 9c31a0046f5d3b4164baf115cc0b69635524bb04
ok 79 - hash-object & fsck unreachable: verify object (hash/type) check -- mismatched type, valid object
expecting success of 3800.80 'update-ref & fsck reachable: verify object (hash/type) check -- mismatched type, valid object':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
# The update-ref of the bad content will fail, do it
# anyway to see if it segfaults
test_might_fail git -C bad-tag update-ref "$tag_ref" "$bad_tag" &&
# Manually create the broken, we cannot do it with
# update-ref
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
# Unlike fsck-ing unreachable content above, this
# will always fail.
test_must_fail git -C bad-tag fsck
9c31a0046f5d3b4164baf115cc0b69635524bb04
notice: HEAD points to an unborn branch (master)
broken link from tag 9c31a0046f5d3b4164baf115cc0b69635524bb04
to tree 0fbca9850869684085d654f9e1380c9780802570
missing tree 0fbca9850869684085d654f9e1380c9780802570
ok 80 - update-ref & fsck reachable: verify object (hash/type) check -- mismatched type, valid object
expecting success of 3800.81 'for-each-ref: verify object (hash/type) check -- mismatched type, valid object':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
printf "%s tag\t%s\n" "$bad_tag" "$tag_ref" >expected &&
git -C bad-tag for-each-ref "$tag_ref" >actual &&
test_cmp expected actual &&
test_must_fail git -C bad-tag for-each-ref --format="%(*objectname)"
9c31a0046f5d3b4164baf115cc0b69635524bb04
fatal: missing object 0fbca9850869684085d654f9e1380c9780802570 for refs/tags/bad_tag
ok 81 - for-each-ref: verify object (hash/type) check -- mismatched type, valid object
expecting success of 3800.82 'fast-export & fast-import: verify object (hash/type) check -- mismatched type, valid object':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test_must_fail git -C bad-tag fast-export --all &&
test_must_fail git -C bad-tag fast-export "$bad_tag"
9c31a0046f5d3b4164baf115cc0b69635524bb04
warning: Tag points to object of unexpected type tree, skipping.
fatal: bad object 0fbca9850869684085d654f9e1380c9780802570
fatal: bad object 0fbca9850869684085d654f9e1380c9780802570
ok 82 - fast-export & fast-import: verify object (hash/type) check -- mismatched type, valid object
expecting success of 3800.83 'fail with [--[no-]strict]: verify tag-name check':
test_must_fail git mktag <tag.sig 2>err &&
if test -z "$no_strict"
then
test_must_fail git mktag <tag.sig 2>err2 &&
test_cmp err err2
else
git mktag --no-strict <tag.sig
fi
warning: tag input does not pass fsck: badTagName: invalid 'tag' name: my tag
3a917b365efe8e0762ae4448ca795035d60fedbe
ok 83 - fail with [--[no-]strict]: verify tag-name check
expecting success of 3800.84 'setup: verify tag-name check':
tag_ref=refs/tags/bad_tag &&
# Reset any leftover state from the last $subject
rm -rf bad-tag &&
git init --bare bad-tag &&
bad_tag=$(git -C bad-tag hash-object -t tag -w --stdin --literally <tag.sig)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3800-mktag/bad-tag/
ok 84 - setup: verify tag-name check
expecting success of 3800.85 'hash-object & fsck unreachable: verify tag-name check':
if test -n "$fsck_obj_ok"
then
git -C bad-tag fsck
else
test_must_fail git -C bad-tag fsck
fi
warning in tag 3a917b365efe8e0762ae4448ca795035d60fedbe: badTagName: invalid 'tag' name: my tag
notice: HEAD points to an unborn branch (master)
notice: No default references
dangling tag 3a917b365efe8e0762ae4448ca795035d60fedbe
ok 85 - hash-object & fsck unreachable: verify tag-name check
expecting success of 3800.86 'update-ref & fsck reachable: verify tag-name check':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
# The update-ref of the bad content will fail, do it
# anyway to see if it segfaults
test_might_fail git -C bad-tag update-ref "$tag_ref" "$bad_tag" &&
# Manually create the broken, we cannot do it with
# update-ref
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
# Unlike fsck-ing unreachable content above, this
# will always fail.
test_must_fail git -C bad-tag fsck
3a917b365efe8e0762ae4448ca795035d60fedbe
warning in tag 3a917b365efe8e0762ae4448ca795035d60fedbe: badTagName: invalid 'tag' name: my tag
notice: HEAD points to an unborn branch (master)
broken link from tag 3a917b365efe8e0762ae4448ca795035d60fedbe
to commit d9df4505cb3522088b9e29d6051ac16f1564154a
missing commit d9df4505cb3522088b9e29d6051ac16f1564154a
ok 86 - update-ref & fsck reachable: verify tag-name check
expecting success of 3800.87 'for-each-ref: verify tag-name check':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
printf "%s tag\t%s\n" "$bad_tag" "$tag_ref" >expected &&
git -C bad-tag for-each-ref "$tag_ref" >actual &&
test_cmp expected actual &&
test_must_fail git -C bad-tag for-each-ref --format="%(*objectname)"
3a917b365efe8e0762ae4448ca795035d60fedbe
fatal: missing object d9df4505cb3522088b9e29d6051ac16f1564154a for refs/tags/bad_tag
ok 87 - for-each-ref: verify tag-name check
expecting success of 3800.88 'fast-export & fast-import: verify tag-name check':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test_must_fail git -C bad-tag fast-export --all &&
test_must_fail git -C bad-tag fast-export "$bad_tag"
3a917b365efe8e0762ae4448ca795035d60fedbe
fatal: bad object d9df4505cb3522088b9e29d6051ac16f1564154a
fatal: bad object d9df4505cb3522088b9e29d6051ac16f1564154a
ok 88 - fast-export & fast-import: verify tag-name check
expecting success of 3800.89 'fail with [--[no-]strict]: "tagger" line label check #1':
test_must_fail git mktag <tag.sig 2>err &&
if test -z "$no_strict"
then
test_must_fail git mktag <tag.sig 2>err2 &&
test_cmp err err2
else
git mktag --no-strict <tag.sig
fi
warning: tag input does not pass fsck: missingTaggerEntry: invalid format - expected 'tagger' line
c4a19535d7c87120cb5b48094d2cd8e9b0918a03
ok 89 - fail with [--[no-]strict]: "tagger" line label check #1
expecting success of 3800.90 'setup: "tagger" line label check #1':
tag_ref=refs/tags/bad_tag &&
# Reset any leftover state from the last $subject
rm -rf bad-tag &&
git init --bare bad-tag &&
bad_tag=$(git -C bad-tag hash-object -t tag -w --stdin --literally <tag.sig)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3800-mktag/bad-tag/
ok 90 - setup: "tagger" line label check #1
expecting success of 3800.91 'hash-object & fsck unreachable: "tagger" line label check #1':
if test -n "$fsck_obj_ok"
then
git -C bad-tag fsck
else
test_must_fail git -C bad-tag fsck
fi
warning in tag c4a19535d7c87120cb5b48094d2cd8e9b0918a03: missingTaggerEntry: invalid format - expected 'tagger' line
notice: HEAD points to an unborn branch (master)
notice: No default references
dangling tag c4a19535d7c87120cb5b48094d2cd8e9b0918a03
ok 91 - hash-object & fsck unreachable: "tagger" line label check #1
expecting success of 3800.92 'update-ref & fsck reachable: "tagger" line label check #1':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
# The update-ref of the bad content will fail, do it
# anyway to see if it segfaults
test_might_fail git -C bad-tag update-ref "$tag_ref" "$bad_tag" &&
# Manually create the broken, we cannot do it with
# update-ref
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
# Unlike fsck-ing unreachable content above, this
# will always fail.
test_must_fail git -C bad-tag fsck
c4a19535d7c87120cb5b48094d2cd8e9b0918a03
warning in tag c4a19535d7c87120cb5b48094d2cd8e9b0918a03: missingTaggerEntry: invalid format - expected 'tagger' line
notice: HEAD points to an unborn branch (master)
broken link from tag c4a19535d7c87120cb5b48094d2cd8e9b0918a03
to commit d9df4505cb3522088b9e29d6051ac16f1564154a
missing commit d9df4505cb3522088b9e29d6051ac16f1564154a
ok 92 - update-ref & fsck reachable: "tagger" line label check #1
expecting success of 3800.93 'for-each-ref: "tagger" line label check #1':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
printf "%s tag\t%s\n" "$bad_tag" "$tag_ref" >expected &&
git -C bad-tag for-each-ref "$tag_ref" >actual &&
test_cmp expected actual &&
test_must_fail git -C bad-tag for-each-ref --format="%(*objectname)"
c4a19535d7c87120cb5b48094d2cd8e9b0918a03
fatal: missing object d9df4505cb3522088b9e29d6051ac16f1564154a for refs/tags/bad_tag
ok 93 - for-each-ref: "tagger" line label check #1
expecting success of 3800.94 'fast-export & fast-import: "tagger" line label check #1':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test_must_fail git -C bad-tag fast-export --all &&
test_must_fail git -C bad-tag fast-export "$bad_tag"
c4a19535d7c87120cb5b48094d2cd8e9b0918a03
fatal: bad object d9df4505cb3522088b9e29d6051ac16f1564154a
fatal: bad object d9df4505cb3522088b9e29d6051ac16f1564154a
ok 94 - fast-export & fast-import: "tagger" line label check #1
expecting success of 3800.95 'fail with [--[no-]strict]: "tagger" line label check #2':
test_must_fail git mktag <tag.sig 2>err &&
if test -z "$no_strict"
then
test_must_fail git mktag <tag.sig 2>err2 &&
test_cmp err err2
else
git mktag --no-strict <tag.sig
fi
warning: tag input does not pass fsck: missingTaggerEntry: invalid format - expected 'tagger' line
warning: tag input does not pass fsck: extraHeaderEntry: invalid format - extra header(s) after 'tagger'
a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba
ok 95 - fail with [--[no-]strict]: "tagger" line label check #2
expecting success of 3800.96 'setup: "tagger" line label check #2':
tag_ref=refs/tags/bad_tag &&
# Reset any leftover state from the last $subject
rm -rf bad-tag &&
git init --bare bad-tag &&
bad_tag=$(git -C bad-tag hash-object -t tag -w --stdin --literally <tag.sig)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3800-mktag/bad-tag/
ok 96 - setup: "tagger" line label check #2
expecting success of 3800.97 'hash-object & fsck unreachable: "tagger" line label check #2':
if test -n "$fsck_obj_ok"
then
git -C bad-tag fsck
else
test_must_fail git -C bad-tag fsck
fi
warning in tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba: missingTaggerEntry: invalid format - expected 'tagger' line
notice: HEAD points to an unborn branch (master)
notice: No default references
dangling tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba
ok 97 - hash-object & fsck unreachable: "tagger" line label check #2
expecting success of 3800.98 'update-ref & fsck reachable: "tagger" line label check #2':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
# The update-ref of the bad content will fail, do it
# anyway to see if it segfaults
test_might_fail git -C bad-tag update-ref "$tag_ref" "$bad_tag" &&
# Manually create the broken, we cannot do it with
# update-ref
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
# Unlike fsck-ing unreachable content above, this
# will always fail.
test_must_fail git -C bad-tag fsck
a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba
warning in tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba: missingTaggerEntry: invalid format - expected 'tagger' line
notice: HEAD points to an unborn branch (master)
broken link from tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba
to commit d9df4505cb3522088b9e29d6051ac16f1564154a
missing commit d9df4505cb3522088b9e29d6051ac16f1564154a
ok 98 - update-ref & fsck reachable: "tagger" line label check #2
expecting success of 3800.99 'for-each-ref: "tagger" line label check #2':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
printf "%s tag\t%s\n" "$bad_tag" "$tag_ref" >expected &&
git -C bad-tag for-each-ref "$tag_ref" >actual &&
test_cmp expected actual &&
test_must_fail git -C bad-tag for-each-ref --format="%(*objectname)"
a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba
fatal: missing object d9df4505cb3522088b9e29d6051ac16f1564154a for refs/tags/bad_tag
ok 99 - for-each-ref: "tagger" line label check #2
expecting success of 3800.100 'fast-export & fast-import: "tagger" line label check #2':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test_must_fail git -C bad-tag fast-export --all &&
test_must_fail git -C bad-tag fast-export "$bad_tag"
a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba
fatal: bad object d9df4505cb3522088b9e29d6051ac16f1564154a
fatal: bad object d9df4505cb3522088b9e29d6051ac16f1564154a
ok 100 - fast-export & fast-import: "tagger" line label check #2
expecting success of 3800.101 'allow missing tag author name':
git hash-object -t tag -w --stdin <tag.sig >expected &&
git fsck --strict &&
git mktag <tag.sig >hash &&
test_cmp expected hash &&
test_when_finished "git update-ref -d refs/tags/mytag $(cat hash)" &&
git update-ref refs/tags/mytag $(cat hash) $(test_oid zero) &&
git fsck --strict
warning in tag 3a917b365efe8e0762ae4448ca795035d60fedbe: badTagName: invalid 'tag' name: my tag
warning in tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba: missingTaggerEntry: invalid format - expected 'tagger' line
warning in tag c4a19535d7c87120cb5b48094d2cd8e9b0918a03: missingTaggerEntry: invalid format - expected 'tagger' line
dangling tag 0182c9c0d953da2345b39546afbd57e917ee9f4c
dangling tag 03e2668a257938d0a47497d9762e45da6c84c9f8
dangling tag 615b33f9ac2defb77a8cc50f373183ebe0a45e4a
dangling tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba
dangling tag c4a19535d7c87120cb5b48094d2cd8e9b0918a03
dangling tag 3a917b365efe8e0762ae4448ca795035d60fedbe
warning in tag 3a917b365efe8e0762ae4448ca795035d60fedbe: badTagName: invalid 'tag' name: my tag
warning in tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba: missingTaggerEntry: invalid format - expected 'tagger' line
warning in tag c4a19535d7c87120cb5b48094d2cd8e9b0918a03: missingTaggerEntry: invalid format - expected 'tagger' line
dangling tag 03e2668a257938d0a47497d9762e45da6c84c9f8
dangling tag 0182c9c0d953da2345b39546afbd57e917ee9f4c
dangling tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba
dangling tag c4a19535d7c87120cb5b48094d2cd8e9b0918a03
dangling tag 3a917b365efe8e0762ae4448ca795035d60fedbe
ok 101 - allow missing tag author name
expecting success of 3800.102 'fail with [--[no-]strict]: disallow malformed tagger':
test_must_fail git mktag <tag.sig 2>err &&
if test -z "$no_strict"
then
test_must_fail git mktag <tag.sig 2>err2 &&
test_cmp err err2
else
git mktag --no-strict <tag.sig
fi
error: tag input does not pass fsck: badEmail: invalid author/committer line - bad email
warning: tag input does not pass fsck: extraHeaderEntry: invalid format - extra header(s) after 'tagger'
10a38b63369e5f6b0d453612536d13ca970fdf12
ok 102 - fail with [--[no-]strict]: disallow malformed tagger
expecting success of 3800.103 'setup: disallow malformed tagger':
tag_ref=refs/tags/bad_tag &&
# Reset any leftover state from the last $subject
rm -rf bad-tag &&
git init --bare bad-tag &&
bad_tag=$(git -C bad-tag hash-object -t tag -w --stdin --literally <tag.sig)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3800-mktag/bad-tag/
ok 103 - setup: disallow malformed tagger
expecting success of 3800.104 'hash-object & fsck unreachable: disallow malformed tagger':
if test -n "$fsck_obj_ok"
then
git -C bad-tag fsck
else
test_must_fail git -C bad-tag fsck
fi
error in tag 10a38b63369e5f6b0d453612536d13ca970fdf12: badEmail: invalid author/committer line - bad email
notice: HEAD points to an unborn branch (master)
notice: No default references
dangling tag 10a38b63369e5f6b0d453612536d13ca970fdf12
ok 104 - hash-object & fsck unreachable: disallow malformed tagger
expecting success of 3800.105 'update-ref & fsck reachable: disallow malformed tagger':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
# The update-ref of the bad content will fail, do it
# anyway to see if it segfaults
test_might_fail git -C bad-tag update-ref "$tag_ref" "$bad_tag" &&
# Manually create the broken, we cannot do it with
# update-ref
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
# Unlike fsck-ing unreachable content above, this
# will always fail.
test_must_fail git -C bad-tag fsck
10a38b63369e5f6b0d453612536d13ca970fdf12
error in tag 10a38b63369e5f6b0d453612536d13ca970fdf12: badEmail: invalid author/committer line - bad email
notice: HEAD points to an unborn branch (master)
broken link from tag 10a38b63369e5f6b0d453612536d13ca970fdf12
to commit d9df4505cb3522088b9e29d6051ac16f1564154a
missing commit d9df4505cb3522088b9e29d6051ac16f1564154a
ok 105 - update-ref & fsck reachable: disallow malformed tagger
expecting success of 3800.106 'for-each-ref: disallow malformed tagger':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
printf "%s tag\t%s\n" "$bad_tag" "$tag_ref" >expected &&
git -C bad-tag for-each-ref "$tag_ref" >actual &&
test_cmp expected actual &&
test_must_fail git -C bad-tag for-each-ref --format="%(*objectname)"
10a38b63369e5f6b0d453612536d13ca970fdf12
fatal: missing object d9df4505cb3522088b9e29d6051ac16f1564154a for refs/tags/bad_tag
ok 106 - for-each-ref: disallow malformed tagger
expecting success of 3800.107 'fast-export & fast-import: disallow malformed tagger':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test_must_fail git -C bad-tag fast-export --all &&
test_must_fail git -C bad-tag fast-export "$bad_tag"
10a38b63369e5f6b0d453612536d13ca970fdf12
fatal: bad object d9df4505cb3522088b9e29d6051ac16f1564154a
fatal: bad object d9df4505cb3522088b9e29d6051ac16f1564154a
ok 107 - fast-export & fast-import: disallow malformed tagger
expecting success of 3800.108 'allow empty tag email':
git hash-object -t tag -w --stdin <tag.sig >expected &&
git fsck --strict &&
git mktag <tag.sig >hash &&
test_cmp expected hash &&
test_when_finished "git update-ref -d refs/tags/mytag $(cat hash)" &&
git update-ref refs/tags/mytag $(cat hash) $(test_oid zero) &&
git fsck --strict
error in tag 10a38b63369e5f6b0d453612536d13ca970fdf12: badEmail: invalid author/committer line - bad email
warning in tag 3a917b365efe8e0762ae4448ca795035d60fedbe: badTagName: invalid 'tag' name: my tag
warning in tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba: missingTaggerEntry: invalid format - expected 'tagger' line
warning in tag c4a19535d7c87120cb5b48094d2cd8e9b0918a03: missingTaggerEntry: invalid format - expected 'tagger' line
dangling tag 0182c9c0d953da2345b39546afbd57e917ee9f4c
dangling tag 03e2668a257938d0a47497d9762e45da6c84c9f8
dangling tag 615b33f9ac2defb77a8cc50f373183ebe0a45e4a
dangling tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba
dangling tag c4a19535d7c87120cb5b48094d2cd8e9b0918a03
dangling tag 10a38b63369e5f6b0d453612536d13ca970fdf12
dangling tag 3a917b365efe8e0762ae4448ca795035d60fedbe
dangling tag bfa074c29cdc9cc74319502c59a90da165e7113f
error in tag 10a38b63369e5f6b0d453612536d13ca970fdf12: badEmail: invalid author/committer line - bad email
warning in tag 3a917b365efe8e0762ae4448ca795035d60fedbe: badTagName: invalid 'tag' name: my tag
warning in tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba: missingTaggerEntry: invalid format - expected 'tagger' line
warning in tag c4a19535d7c87120cb5b48094d2cd8e9b0918a03: missingTaggerEntry: invalid format - expected 'tagger' line
dangling tag 0182c9c0d953da2345b39546afbd57e917ee9f4c
dangling tag 03e2668a257938d0a47497d9762e45da6c84c9f8
dangling tag 615b33f9ac2defb77a8cc50f373183ebe0a45e4a
dangling tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba
dangling tag c4a19535d7c87120cb5b48094d2cd8e9b0918a03
dangling tag 10a38b63369e5f6b0d453612536d13ca970fdf12
dangling tag 3a917b365efe8e0762ae4448ca795035d60fedbe
ok 108 - allow empty tag email
expecting success of 3800.109 'allow spaces in tag email like fsck':
git hash-object -t tag -w --stdin <tag.sig >expected &&
git fsck --strict &&
git mktag <tag.sig >hash &&
test_cmp expected hash &&
test_when_finished "git update-ref -d refs/tags/mytag $(cat hash)" &&
git update-ref refs/tags/mytag $(cat hash) $(test_oid zero) &&
git fsck --strict
error in tag 10a38b63369e5f6b0d453612536d13ca970fdf12: badEmail: invalid author/committer line - bad email
warning in tag 3a917b365efe8e0762ae4448ca795035d60fedbe: badTagName: invalid 'tag' name: my tag
warning in tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba: missingTaggerEntry: invalid format - expected 'tagger' line
warning in tag c4a19535d7c87120cb5b48094d2cd8e9b0918a03: missingTaggerEntry: invalid format - expected 'tagger' line
dangling tag 0182c9c0d953da2345b39546afbd57e917ee9f4c
dangling tag 03e2668a257938d0a47497d9762e45da6c84c9f8
dangling tag 615b33f9ac2defb77a8cc50f373183ebe0a45e4a
dangling tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba
dangling tag c4a19535d7c87120cb5b48094d2cd8e9b0918a03
dangling tag 10a38b63369e5f6b0d453612536d13ca970fdf12
dangling tag 3a917b365efe8e0762ae4448ca795035d60fedbe
dangling tag 7e37723df47e24f0dfc27cec7127fa011bb1843d
dangling tag bfa074c29cdc9cc74319502c59a90da165e7113f
error in tag 10a38b63369e5f6b0d453612536d13ca970fdf12: badEmail: invalid author/committer line - bad email
warning in tag 3a917b365efe8e0762ae4448ca795035d60fedbe: badTagName: invalid 'tag' name: my tag
warning in tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba: missingTaggerEntry: invalid format - expected 'tagger' line
warning in tag c4a19535d7c87120cb5b48094d2cd8e9b0918a03: missingTaggerEntry: invalid format - expected 'tagger' line
dangling tag 0182c9c0d953da2345b39546afbd57e917ee9f4c
dangling tag 03e2668a257938d0a47497d9762e45da6c84c9f8
dangling tag 615b33f9ac2defb77a8cc50f373183ebe0a45e4a
dangling tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba
dangling tag c4a19535d7c87120cb5b48094d2cd8e9b0918a03
dangling tag 10a38b63369e5f6b0d453612536d13ca970fdf12
dangling tag 3a917b365efe8e0762ae4448ca795035d60fedbe
dangling tag bfa074c29cdc9cc74319502c59a90da165e7113f
ok 109 - allow spaces in tag email like fsck
expecting success of 3800.110 'fail with [--[no-]strict]: disallow missing tag timestamp':
test_must_fail git mktag <tag.sig 2>err &&
if test -z "$no_strict"
then
test_must_fail git mktag <tag.sig 2>err2 &&
test_cmp err err2
else
git mktag --no-strict <tag.sig
fi
ok 110 - fail with [--[no-]strict]: disallow missing tag timestamp
expecting success of 3800.111 'setup: disallow missing tag timestamp':
tag_ref=refs/tags/bad_tag &&
# Reset any leftover state from the last $subject
rm -rf bad-tag &&
git init --bare bad-tag &&
bad_tag=$(git -C bad-tag hash-object -t tag -w --stdin --literally <tag.sig)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3800-mktag/bad-tag/
ok 111 - setup: disallow missing tag timestamp
expecting success of 3800.112 'hash-object & fsck unreachable: disallow missing tag timestamp':
if test -n "$fsck_obj_ok"
then
git -C bad-tag fsck
else
test_must_fail git -C bad-tag fsck
fi
error in tag 86ec28e12f82414dedbbf24955ba3624796ce743: badDate: invalid author/committer line - bad date
notice: HEAD points to an unborn branch (master)
notice: No default references
dangling tag 86ec28e12f82414dedbbf24955ba3624796ce743
ok 112 - hash-object & fsck unreachable: disallow missing tag timestamp
expecting success of 3800.113 'update-ref & fsck reachable: disallow missing tag timestamp':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
# The update-ref of the bad content will fail, do it
# anyway to see if it segfaults
test_might_fail git -C bad-tag update-ref "$tag_ref" "$bad_tag" &&
# Manually create the broken, we cannot do it with
# update-ref
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
# Unlike fsck-ing unreachable content above, this
# will always fail.
test_must_fail git -C bad-tag fsck
86ec28e12f82414dedbbf24955ba3624796ce743
error in tag 86ec28e12f82414dedbbf24955ba3624796ce743: badDate: invalid author/committer line - bad date
notice: HEAD points to an unborn branch (master)
broken link from tag 86ec28e12f82414dedbbf24955ba3624796ce743
to commit d9df4505cb3522088b9e29d6051ac16f1564154a
missing commit d9df4505cb3522088b9e29d6051ac16f1564154a
ok 113 - update-ref & fsck reachable: disallow missing tag timestamp
expecting success of 3800.114 'for-each-ref: disallow missing tag timestamp':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
printf "%s tag\t%s\n" "$bad_tag" "$tag_ref" >expected &&
git -C bad-tag for-each-ref "$tag_ref" >actual &&
test_cmp expected actual &&
test_must_fail git -C bad-tag for-each-ref --format="%(*objectname)"
86ec28e12f82414dedbbf24955ba3624796ce743
fatal: missing object d9df4505cb3522088b9e29d6051ac16f1564154a for refs/tags/bad_tag
ok 114 - for-each-ref: disallow missing tag timestamp
expecting success of 3800.115 'fast-export & fast-import: disallow missing tag timestamp':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test_must_fail git -C bad-tag fast-export --all &&
test_must_fail git -C bad-tag fast-export "$bad_tag"
86ec28e12f82414dedbbf24955ba3624796ce743
fatal: bad object d9df4505cb3522088b9e29d6051ac16f1564154a
fatal: bad object d9df4505cb3522088b9e29d6051ac16f1564154a
ok 115 - fast-export & fast-import: disallow missing tag timestamp
expecting success of 3800.116 'fail with [--[no-]strict]: detect invalid tag timestamp1':
test_must_fail git mktag <tag.sig 2>err &&
if test -z "$no_strict"
then
test_must_fail git mktag <tag.sig 2>err2 &&
test_cmp err err2
else
git mktag --no-strict <tag.sig
fi
ok 116 - fail with [--[no-]strict]: detect invalid tag timestamp1
expecting success of 3800.117 'setup: detect invalid tag timestamp1':
tag_ref=refs/tags/bad_tag &&
# Reset any leftover state from the last $subject
rm -rf bad-tag &&
git init --bare bad-tag &&
bad_tag=$(git -C bad-tag hash-object -t tag -w --stdin --literally <tag.sig)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3800-mktag/bad-tag/
ok 117 - setup: detect invalid tag timestamp1
expecting success of 3800.118 'hash-object & fsck unreachable: detect invalid tag timestamp1':
if test -n "$fsck_obj_ok"
then
git -C bad-tag fsck
else
test_must_fail git -C bad-tag fsck
fi
error in tag a7154e3a1ebaee50a7858cfa890b4e328ba6eff1: badDate: invalid author/committer line - bad date
notice: HEAD points to an unborn branch (master)
notice: No default references
dangling tag a7154e3a1ebaee50a7858cfa890b4e328ba6eff1
ok 118 - hash-object & fsck unreachable: detect invalid tag timestamp1
expecting success of 3800.119 'update-ref & fsck reachable: detect invalid tag timestamp1':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
# The update-ref of the bad content will fail, do it
# anyway to see if it segfaults
test_might_fail git -C bad-tag update-ref "$tag_ref" "$bad_tag" &&
# Manually create the broken, we cannot do it with
# update-ref
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
# Unlike fsck-ing unreachable content above, this
# will always fail.
test_must_fail git -C bad-tag fsck
a7154e3a1ebaee50a7858cfa890b4e328ba6eff1
error in tag a7154e3a1ebaee50a7858cfa890b4e328ba6eff1: badDate: invalid author/committer line - bad date
notice: HEAD points to an unborn branch (master)
broken link from tag a7154e3a1ebaee50a7858cfa890b4e328ba6eff1
to commit d9df4505cb3522088b9e29d6051ac16f1564154a
missing commit d9df4505cb3522088b9e29d6051ac16f1564154a
ok 119 - update-ref & fsck reachable: detect invalid tag timestamp1
expecting success of 3800.120 'for-each-ref: detect invalid tag timestamp1':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
printf "%s tag\t%s\n" "$bad_tag" "$tag_ref" >expected &&
git -C bad-tag for-each-ref "$tag_ref" >actual &&
test_cmp expected actual &&
test_must_fail git -C bad-tag for-each-ref --format="%(*objectname)"
a7154e3a1ebaee50a7858cfa890b4e328ba6eff1
fatal: missing object d9df4505cb3522088b9e29d6051ac16f1564154a for refs/tags/bad_tag
ok 120 - for-each-ref: detect invalid tag timestamp1
expecting success of 3800.121 'fast-export & fast-import: detect invalid tag timestamp1':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test_must_fail git -C bad-tag fast-export --all &&
test_must_fail git -C bad-tag fast-export "$bad_tag"
a7154e3a1ebaee50a7858cfa890b4e328ba6eff1
fatal: bad object d9df4505cb3522088b9e29d6051ac16f1564154a
fatal: bad object d9df4505cb3522088b9e29d6051ac16f1564154a
ok 121 - fast-export & fast-import: detect invalid tag timestamp1
expecting success of 3800.122 'fail with [--[no-]strict]: detect invalid tag timestamp2':
test_must_fail git mktag <tag.sig 2>err &&
if test -z "$no_strict"
then
test_must_fail git mktag <tag.sig 2>err2 &&
test_cmp err err2
else
git mktag --no-strict <tag.sig
fi
ok 122 - fail with [--[no-]strict]: detect invalid tag timestamp2
expecting success of 3800.123 'setup: detect invalid tag timestamp2':
tag_ref=refs/tags/bad_tag &&
# Reset any leftover state from the last $subject
rm -rf bad-tag &&
git init --bare bad-tag &&
bad_tag=$(git -C bad-tag hash-object -t tag -w --stdin --literally <tag.sig)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3800-mktag/bad-tag/
ok 123 - setup: detect invalid tag timestamp2
expecting success of 3800.124 'hash-object & fsck unreachable: detect invalid tag timestamp2':
if test -n "$fsck_obj_ok"
then
git -C bad-tag fsck
else
test_must_fail git -C bad-tag fsck
fi
error in tag 1f6463b89bb8b45e3232dbac638692b2b5d5c962: badDate: invalid author/committer line - bad date
notice: HEAD points to an unborn branch (master)
notice: No default references
dangling tag 1f6463b89bb8b45e3232dbac638692b2b5d5c962
ok 124 - hash-object & fsck unreachable: detect invalid tag timestamp2
expecting success of 3800.125 'update-ref & fsck reachable: detect invalid tag timestamp2':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
# The update-ref of the bad content will fail, do it
# anyway to see if it segfaults
test_might_fail git -C bad-tag update-ref "$tag_ref" "$bad_tag" &&
# Manually create the broken, we cannot do it with
# update-ref
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
# Unlike fsck-ing unreachable content above, this
# will always fail.
test_must_fail git -C bad-tag fsck
1f6463b89bb8b45e3232dbac638692b2b5d5c962
error in tag 1f6463b89bb8b45e3232dbac638692b2b5d5c962: badDate: invalid author/committer line - bad date
notice: HEAD points to an unborn branch (master)
broken link from tag 1f6463b89bb8b45e3232dbac638692b2b5d5c962
to commit d9df4505cb3522088b9e29d6051ac16f1564154a
missing commit d9df4505cb3522088b9e29d6051ac16f1564154a
ok 125 - update-ref & fsck reachable: detect invalid tag timestamp2
expecting success of 3800.126 'for-each-ref: detect invalid tag timestamp2':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
printf "%s tag\t%s\n" "$bad_tag" "$tag_ref" >expected &&
git -C bad-tag for-each-ref "$tag_ref" >actual &&
test_cmp expected actual &&
test_must_fail git -C bad-tag for-each-ref --format="%(*objectname)"
1f6463b89bb8b45e3232dbac638692b2b5d5c962
fatal: missing object d9df4505cb3522088b9e29d6051ac16f1564154a for refs/tags/bad_tag
ok 126 - for-each-ref: detect invalid tag timestamp2
expecting success of 3800.127 'fast-export & fast-import: detect invalid tag timestamp2':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test_must_fail git -C bad-tag fast-export --all &&
test_must_fail git -C bad-tag fast-export "$bad_tag"
1f6463b89bb8b45e3232dbac638692b2b5d5c962
fatal: bad object d9df4505cb3522088b9e29d6051ac16f1564154a
fatal: bad object d9df4505cb3522088b9e29d6051ac16f1564154a
ok 127 - fast-export & fast-import: detect invalid tag timestamp2
expecting success of 3800.128 'fail with [--[no-]strict]: detect invalid tag timezone1':
test_must_fail git mktag <tag.sig 2>err &&
if test -z "$no_strict"
then
test_must_fail git mktag <tag.sig 2>err2 &&
test_cmp err err2
else
git mktag --no-strict <tag.sig
fi
ok 128 - fail with [--[no-]strict]: detect invalid tag timezone1
expecting success of 3800.129 'setup: detect invalid tag timezone1':
tag_ref=refs/tags/bad_tag &&
# Reset any leftover state from the last $subject
rm -rf bad-tag &&
git init --bare bad-tag &&
bad_tag=$(git -C bad-tag hash-object -t tag -w --stdin --literally <tag.sig)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3800-mktag/bad-tag/
ok 129 - setup: detect invalid tag timezone1
expecting success of 3800.130 'hash-object & fsck unreachable: detect invalid tag timezone1':
if test -n "$fsck_obj_ok"
then
git -C bad-tag fsck
else
test_must_fail git -C bad-tag fsck
fi
error in tag 1062f3506ae6d34c78d90b80e45b2dc2d3ddff56: badTimezone: invalid author/committer line - bad time zone
notice: HEAD points to an unborn branch (master)
notice: No default references
dangling tag 1062f3506ae6d34c78d90b80e45b2dc2d3ddff56
ok 130 - hash-object & fsck unreachable: detect invalid tag timezone1
expecting success of 3800.131 'update-ref & fsck reachable: detect invalid tag timezone1':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
# The update-ref of the bad content will fail, do it
# anyway to see if it segfaults
test_might_fail git -C bad-tag update-ref "$tag_ref" "$bad_tag" &&
# Manually create the broken, we cannot do it with
# update-ref
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
# Unlike fsck-ing unreachable content above, this
# will always fail.
test_must_fail git -C bad-tag fsck
1062f3506ae6d34c78d90b80e45b2dc2d3ddff56
error in tag 1062f3506ae6d34c78d90b80e45b2dc2d3ddff56: badTimezone: invalid author/committer line - bad time zone
notice: HEAD points to an unborn branch (master)
broken link from tag 1062f3506ae6d34c78d90b80e45b2dc2d3ddff56
to commit d9df4505cb3522088b9e29d6051ac16f1564154a
missing commit d9df4505cb3522088b9e29d6051ac16f1564154a
ok 131 - update-ref & fsck reachable: detect invalid tag timezone1
expecting success of 3800.132 'for-each-ref: detect invalid tag timezone1':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
printf "%s tag\t%s\n" "$bad_tag" "$tag_ref" >expected &&
git -C bad-tag for-each-ref "$tag_ref" >actual &&
test_cmp expected actual &&
test_must_fail git -C bad-tag for-each-ref --format="%(*objectname)"
1062f3506ae6d34c78d90b80e45b2dc2d3ddff56
fatal: missing object d9df4505cb3522088b9e29d6051ac16f1564154a for refs/tags/bad_tag
ok 132 - for-each-ref: detect invalid tag timezone1
expecting success of 3800.133 'fast-export & fast-import: detect invalid tag timezone1':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test_must_fail git -C bad-tag fast-export --all &&
test_must_fail git -C bad-tag fast-export "$bad_tag"
1062f3506ae6d34c78d90b80e45b2dc2d3ddff56
fatal: bad object d9df4505cb3522088b9e29d6051ac16f1564154a
fatal: bad object d9df4505cb3522088b9e29d6051ac16f1564154a
ok 133 - fast-export & fast-import: detect invalid tag timezone1
expecting success of 3800.134 'fail with [--[no-]strict]: detect invalid tag timezone2':
test_must_fail git mktag <tag.sig 2>err &&
if test -z "$no_strict"
then
test_must_fail git mktag <tag.sig 2>err2 &&
test_cmp err err2
else
git mktag --no-strict <tag.sig
fi
ok 134 - fail with [--[no-]strict]: detect invalid tag timezone2
expecting success of 3800.135 'setup: detect invalid tag timezone2':
tag_ref=refs/tags/bad_tag &&
# Reset any leftover state from the last $subject
rm -rf bad-tag &&
git init --bare bad-tag &&
bad_tag=$(git -C bad-tag hash-object -t tag -w --stdin --literally <tag.sig)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3800-mktag/bad-tag/
ok 135 - setup: detect invalid tag timezone2
expecting success of 3800.136 'hash-object & fsck unreachable: detect invalid tag timezone2':
if test -n "$fsck_obj_ok"
then
git -C bad-tag fsck
else
test_must_fail git -C bad-tag fsck
fi
error in tag 30b2f9b749c26e3847c032f1f8dd41e8d8e29d5b: badTimezone: invalid author/committer line - bad time zone
notice: HEAD points to an unborn branch (master)
notice: No default references
dangling tag 30b2f9b749c26e3847c032f1f8dd41e8d8e29d5b
ok 136 - hash-object & fsck unreachable: detect invalid tag timezone2
expecting success of 3800.137 'update-ref & fsck reachable: detect invalid tag timezone2':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
# The update-ref of the bad content will fail, do it
# anyway to see if it segfaults
test_might_fail git -C bad-tag update-ref "$tag_ref" "$bad_tag" &&
# Manually create the broken, we cannot do it with
# update-ref
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
# Unlike fsck-ing unreachable content above, this
# will always fail.
test_must_fail git -C bad-tag fsck
30b2f9b749c26e3847c032f1f8dd41e8d8e29d5b
error in tag 30b2f9b749c26e3847c032f1f8dd41e8d8e29d5b: badTimezone: invalid author/committer line - bad time zone
notice: HEAD points to an unborn branch (master)
broken link from tag 30b2f9b749c26e3847c032f1f8dd41e8d8e29d5b
to commit d9df4505cb3522088b9e29d6051ac16f1564154a
missing commit d9df4505cb3522088b9e29d6051ac16f1564154a
ok 137 - update-ref & fsck reachable: detect invalid tag timezone2
expecting success of 3800.138 'for-each-ref: detect invalid tag timezone2':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
printf "%s tag\t%s\n" "$bad_tag" "$tag_ref" >expected &&
git -C bad-tag for-each-ref "$tag_ref" >actual &&
test_cmp expected actual &&
test_must_fail git -C bad-tag for-each-ref --format="%(*objectname)"
30b2f9b749c26e3847c032f1f8dd41e8d8e29d5b
fatal: missing object d9df4505cb3522088b9e29d6051ac16f1564154a for refs/tags/bad_tag
ok 138 - for-each-ref: detect invalid tag timezone2
expecting success of 3800.139 'fast-export & fast-import: detect invalid tag timezone2':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test_must_fail git -C bad-tag fast-export --all &&
test_must_fail git -C bad-tag fast-export "$bad_tag"
30b2f9b749c26e3847c032f1f8dd41e8d8e29d5b
fatal: bad object d9df4505cb3522088b9e29d6051ac16f1564154a
fatal: bad object d9df4505cb3522088b9e29d6051ac16f1564154a
ok 139 - fast-export & fast-import: detect invalid tag timezone2
expecting success of 3800.140 'allow invalid tag timezone':
git hash-object -t tag -w --stdin <tag.sig >expected &&
git fsck --strict &&
git mktag <tag.sig >hash &&
test_cmp expected hash &&
test_when_finished "git update-ref -d refs/tags/mytag $(cat hash)" &&
git update-ref refs/tags/mytag $(cat hash) $(test_oid zero) &&
git fsck --strict
error in tag 10a38b63369e5f6b0d453612536d13ca970fdf12: badEmail: invalid author/committer line - bad email
warning in tag 3a917b365efe8e0762ae4448ca795035d60fedbe: badTagName: invalid 'tag' name: my tag
warning in tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba: missingTaggerEntry: invalid format - expected 'tagger' line
warning in tag c4a19535d7c87120cb5b48094d2cd8e9b0918a03: missingTaggerEntry: invalid format - expected 'tagger' line
dangling tag 0182c9c0d953da2345b39546afbd57e917ee9f4c
dangling tag 03e2668a257938d0a47497d9762e45da6c84c9f8
dangling tag 615b33f9ac2defb77a8cc50f373183ebe0a45e4a
dangling tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba
dangling tag c4a19535d7c87120cb5b48094d2cd8e9b0918a03
dangling tag 10a38b63369e5f6b0d453612536d13ca970fdf12
dangling tag 93cc22724321522cdcfeced9652268b0eee0ccca
dangling tag 3a917b365efe8e0762ae4448ca795035d60fedbe
dangling tag 7e37723df47e24f0dfc27cec7127fa011bb1843d
dangling tag bfa074c29cdc9cc74319502c59a90da165e7113f
error in tag 10a38b63369e5f6b0d453612536d13ca970fdf12: badEmail: invalid author/committer line - bad email
warning in tag 3a917b365efe8e0762ae4448ca795035d60fedbe: badTagName: invalid 'tag' name: my tag
warning in tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba: missingTaggerEntry: invalid format - expected 'tagger' line
warning in tag c4a19535d7c87120cb5b48094d2cd8e9b0918a03: missingTaggerEntry: invalid format - expected 'tagger' line
dangling tag 0182c9c0d953da2345b39546afbd57e917ee9f4c
dangling tag 03e2668a257938d0a47497d9762e45da6c84c9f8
dangling tag 615b33f9ac2defb77a8cc50f373183ebe0a45e4a
dangling tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba
dangling tag c4a19535d7c87120cb5b48094d2cd8e9b0918a03
dangling tag 10a38b63369e5f6b0d453612536d13ca970fdf12
dangling tag 3a917b365efe8e0762ae4448ca795035d60fedbe
dangling tag 7e37723df47e24f0dfc27cec7127fa011bb1843d
dangling tag bfa074c29cdc9cc74319502c59a90da165e7113f
ok 140 - allow invalid tag timezone
expecting success of 3800.141 'fail with [--[no-]strict]: detect invalid header entry':
test_must_fail git mktag <tag.sig 2>err &&
if test -z "$no_strict"
then
test_must_fail git mktag <tag.sig 2>err2 &&
test_cmp err err2
else
git mktag --no-strict <tag.sig
fi
warning: tag input does not pass fsck: extraHeaderEntry: invalid format - extra header(s) after 'tagger'
27668aaff16c8e0303faa67823e07d9c4e709bd8
ok 141 - fail with [--[no-]strict]: detect invalid header entry
expecting success of 3800.142 'setup: detect invalid header entry':
tag_ref=refs/tags/bad_tag &&
# Reset any leftover state from the last $subject
rm -rf bad-tag &&
git init --bare bad-tag &&
bad_tag=$(git -C bad-tag hash-object -t tag -w --stdin --literally <tag.sig)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3800-mktag/bad-tag/
ok 142 - setup: detect invalid header entry
expecting success of 3800.143 'hash-object & fsck unreachable: detect invalid header entry':
if test -n "$fsck_obj_ok"
then
git -C bad-tag fsck
else
test_must_fail git -C bad-tag fsck
fi
notice: HEAD points to an unborn branch (master)
notice: No default references
dangling tag 27668aaff16c8e0303faa67823e07d9c4e709bd8
ok 143 - hash-object & fsck unreachable: detect invalid header entry
expecting success of 3800.144 'update-ref & fsck reachable: detect invalid header entry':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
# The update-ref of the bad content will fail, do it
# anyway to see if it segfaults
test_might_fail git -C bad-tag update-ref "$tag_ref" "$bad_tag" &&
# Manually create the broken, we cannot do it with
# update-ref
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
# Unlike fsck-ing unreachable content above, this
# will always fail.
test_must_fail git -C bad-tag fsck
27668aaff16c8e0303faa67823e07d9c4e709bd8
notice: HEAD points to an unborn branch (master)
broken link from tag 27668aaff16c8e0303faa67823e07d9c4e709bd8
to commit d9df4505cb3522088b9e29d6051ac16f1564154a
missing commit d9df4505cb3522088b9e29d6051ac16f1564154a
ok 144 - update-ref & fsck reachable: detect invalid header entry
expecting success of 3800.145 'for-each-ref: detect invalid header entry':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test-tool -C bad-tag ref-store main delete-refs 0 msg "$tag_ref" &&
test-tool -C bad-tag ref-store main update-ref msg "$tag_ref" $bad_tag $ZERO_OID REF_SKIP_OID_VERIFICATION &&
printf "%s tag\t%s\n" "$bad_tag" "$tag_ref" >expected &&
git -C bad-tag for-each-ref "$tag_ref" >actual &&
test_cmp expected actual &&
test_must_fail git -C bad-tag for-each-ref --format="%(*objectname)"
27668aaff16c8e0303faa67823e07d9c4e709bd8
fatal: missing object d9df4505cb3522088b9e29d6051ac16f1564154a for refs/tags/bad_tag
ok 145 - for-each-ref: detect invalid header entry
expecting success of 3800.146 'fast-export & fast-import: detect invalid header entry':
# Make sure the earlier test created it for us
git rev-parse "$bad_tag" &&
test_must_fail git -C bad-tag fast-export --all &&
test_must_fail git -C bad-tag fast-export "$bad_tag"
27668aaff16c8e0303faa67823e07d9c4e709bd8
fatal: bad object d9df4505cb3522088b9e29d6051ac16f1564154a
fatal: bad object d9df4505cb3522088b9e29d6051ac16f1564154a
ok 146 - fast-export & fast-import: detect invalid header entry
expecting success of 3800.147 'invalid header entry config & fsck':
test_must_fail git mktag <tag.sig &&
git mktag --no-strict <tag.sig &&
test_must_fail git -c fsck.extraHeaderEntry=error mktag <tag.sig &&
test_must_fail git -c fsck.extraHeaderEntry=error mktag --no-strict <tag.sig &&
test_must_fail git -c fsck.extraHeaderEntry=warn mktag <tag.sig &&
git -c fsck.extraHeaderEntry=warn mktag --no-strict <tag.sig &&
git -c fsck.extraHeaderEntry=ignore mktag <tag.sig &&
git -c fsck.extraHeaderEntry=ignore mktag --no-strict <tag.sig &&
git fsck &&
git -c fsck.extraHeaderEntry=warn fsck 2>err &&
grep "warning .*extraHeaderEntry:" err &&
test_must_fail git -c fsck.extraHeaderEntry=error 2>err fsck &&
grep "error .* extraHeaderEntry:" err
error: tag input does not pass fsck: extraHeaderEntry: invalid format - extra header(s) after 'tagger'
fatal: tag on stdin did not pass our strict fsck check
warning: tag input does not pass fsck: extraHeaderEntry: invalid format - extra header(s) after 'tagger'
27668aaff16c8e0303faa67823e07d9c4e709bd8
error: tag input does not pass fsck: extraHeaderEntry: invalid format - extra header(s) after 'tagger'
fatal: tag on stdin did not pass our strict fsck check
error: tag input does not pass fsck: extraHeaderEntry: invalid format - extra header(s) after 'tagger'
fatal: tag on stdin did not pass our strict fsck check
error: tag input does not pass fsck: extraHeaderEntry: invalid format - extra header(s) after 'tagger'
fatal: tag on stdin did not pass our strict fsck check
warning: tag input does not pass fsck: extraHeaderEntry: invalid format - extra header(s) after 'tagger'
27668aaff16c8e0303faa67823e07d9c4e709bd8
27668aaff16c8e0303faa67823e07d9c4e709bd8
27668aaff16c8e0303faa67823e07d9c4e709bd8
error in tag 10a38b63369e5f6b0d453612536d13ca970fdf12: badEmail: invalid author/committer line - bad email
warning in tag 3a917b365efe8e0762ae4448ca795035d60fedbe: badTagName: invalid 'tag' name: my tag
warning in tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba: missingTaggerEntry: invalid format - expected 'tagger' line
warning in tag c4a19535d7c87120cb5b48094d2cd8e9b0918a03: missingTaggerEntry: invalid format - expected 'tagger' line
dangling tag 0182c9c0d953da2345b39546afbd57e917ee9f4c
dangling tag 03e2668a257938d0a47497d9762e45da6c84c9f8
dangling tag c4a19535d7c87120cb5b48094d2cd8e9b0918a03
dangling tag 10a38b63369e5f6b0d453612536d13ca970fdf12
dangling tag 93cc22724321522cdcfeced9652268b0eee0ccca
dangling tag 615b33f9ac2defb77a8cc50f373183ebe0a45e4a
dangling tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba
dangling tag 27668aaff16c8e0303faa67823e07d9c4e709bd8
dangling tag 3a917b365efe8e0762ae4448ca795035d60fedbe
dangling tag 7e37723df47e24f0dfc27cec7127fa011bb1843d
dangling tag bfa074c29cdc9cc74319502c59a90da165e7113f
dangling tag 0182c9c0d953da2345b39546afbd57e917ee9f4c
dangling tag 03e2668a257938d0a47497d9762e45da6c84c9f8
dangling tag c4a19535d7c87120cb5b48094d2cd8e9b0918a03
dangling tag 10a38b63369e5f6b0d453612536d13ca970fdf12
dangling tag 93cc22724321522cdcfeced9652268b0eee0ccca
dangling tag 615b33f9ac2defb77a8cc50f373183ebe0a45e4a
dangling tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba
dangling tag 27668aaff16c8e0303faa67823e07d9c4e709bd8
dangling tag 3a917b365efe8e0762ae4448ca795035d60fedbe
dangling tag 7e37723df47e24f0dfc27cec7127fa011bb1843d
dangling tag bfa074c29cdc9cc74319502c59a90da165e7113f
warning in tag 10a38b63369e5f6b0d453612536d13ca970fdf12: extraHeaderEntry: invalid format - extra header(s) after 'tagger'
warning in tag 27668aaff16c8e0303faa67823e07d9c4e709bd8: extraHeaderEntry: invalid format - extra header(s) after 'tagger'
warning in tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba: extraHeaderEntry: invalid format - extra header(s) after 'tagger'
dangling tag 0182c9c0d953da2345b39546afbd57e917ee9f4c
dangling tag 03e2668a257938d0a47497d9762e45da6c84c9f8
dangling tag c4a19535d7c87120cb5b48094d2cd8e9b0918a03
dangling tag 10a38b63369e5f6b0d453612536d13ca970fdf12
dangling tag 93cc22724321522cdcfeced9652268b0eee0ccca
dangling tag 615b33f9ac2defb77a8cc50f373183ebe0a45e4a
dangling tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba
dangling tag 27668aaff16c8e0303faa67823e07d9c4e709bd8
dangling tag 3a917b365efe8e0762ae4448ca795035d60fedbe
dangling tag 7e37723df47e24f0dfc27cec7127fa011bb1843d
dangling tag bfa074c29cdc9cc74319502c59a90da165e7113f
error in tag 10a38b63369e5f6b0d453612536d13ca970fdf12: extraHeaderEntry: invalid format - extra header(s) after 'tagger'
error in tag 27668aaff16c8e0303faa67823e07d9c4e709bd8: extraHeaderEntry: invalid format - extra header(s) after 'tagger'
error in tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba: extraHeaderEntry: invalid format - extra header(s) after 'tagger'
ok 147 - invalid header entry config & fsck
expecting success of 3800.148 'allow extra newlines at start of body':
git hash-object -t tag -w --stdin <tag.sig >expected &&
git fsck --strict &&
git mktag <tag.sig >hash &&
test_cmp expected hash &&
test_when_finished "git update-ref -d refs/tags/mytag $(cat hash)" &&
git update-ref refs/tags/mytag $(cat hash) $(test_oid zero) &&
git fsck --strict
error in tag 10a38b63369e5f6b0d453612536d13ca970fdf12: badEmail: invalid author/committer line - bad email
warning in tag 3a917b365efe8e0762ae4448ca795035d60fedbe: badTagName: invalid 'tag' name: my tag
warning in tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba: missingTaggerEntry: invalid format - expected 'tagger' line
warning in tag c4a19535d7c87120cb5b48094d2cd8e9b0918a03: missingTaggerEntry: invalid format - expected 'tagger' line
dangling tag bfa074c29cdc9cc74319502c59a90da165e7113f
dangling tag 0182c9c0d953da2345b39546afbd57e917ee9f4c
dangling tag 03e2668a257938d0a47497d9762e45da6c84c9f8
dangling tag c4a19535d7c87120cb5b48094d2cd8e9b0918a03
dangling tag 10a38b63369e5f6b0d453612536d13ca970fdf12
dangling tag 93cc22724321522cdcfeced9652268b0eee0ccca
dangling tag 615b33f9ac2defb77a8cc50f373183ebe0a45e4a
dangling tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba
dangling tag 27668aaff16c8e0303faa67823e07d9c4e709bd8
dangling tag 3a917b365efe8e0762ae4448ca795035d60fedbe
dangling tag 7e37723df47e24f0dfc27cec7127fa011bb1843d
dangling tag 3f434bd651bfb4745f87bb9aa462415fddad0546
error in tag 10a38b63369e5f6b0d453612536d13ca970fdf12: badEmail: invalid author/committer line - bad email
warning in tag 3a917b365efe8e0762ae4448ca795035d60fedbe: badTagName: invalid 'tag' name: my tag
warning in tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba: missingTaggerEntry: invalid format - expected 'tagger' line
warning in tag c4a19535d7c87120cb5b48094d2cd8e9b0918a03: missingTaggerEntry: invalid format - expected 'tagger' line
dangling tag bfa074c29cdc9cc74319502c59a90da165e7113f
dangling tag 0182c9c0d953da2345b39546afbd57e917ee9f4c
dangling tag 03e2668a257938d0a47497d9762e45da6c84c9f8
dangling tag c4a19535d7c87120cb5b48094d2cd8e9b0918a03
dangling tag 10a38b63369e5f6b0d453612536d13ca970fdf12
dangling tag 93cc22724321522cdcfeced9652268b0eee0ccca
dangling tag 615b33f9ac2defb77a8cc50f373183ebe0a45e4a
dangling tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba
dangling tag 27668aaff16c8e0303faa67823e07d9c4e709bd8
dangling tag 3a917b365efe8e0762ae4448ca795035d60fedbe
dangling tag 7e37723df47e24f0dfc27cec7127fa011bb1843d
ok 148 - allow extra newlines at start of body
expecting success of 3800.149 'allow a blank line before an empty body (1)':
git hash-object -t tag -w --stdin <tag.sig >expected &&
git fsck --strict &&
git mktag <tag.sig >hash &&
test_cmp expected hash &&
test_when_finished "git update-ref -d refs/tags/mytag $(cat hash)" &&
git update-ref refs/tags/mytag $(cat hash) $(test_oid zero) &&
git fsck --strict
error in tag 10a38b63369e5f6b0d453612536d13ca970fdf12: badEmail: invalid author/committer line - bad email
warning in tag 3a917b365efe8e0762ae4448ca795035d60fedbe: badTagName: invalid 'tag' name: my tag
warning in tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba: missingTaggerEntry: invalid format - expected 'tagger' line
warning in tag c4a19535d7c87120cb5b48094d2cd8e9b0918a03: missingTaggerEntry: invalid format - expected 'tagger' line
dangling tag bfa074c29cdc9cc74319502c59a90da165e7113f
dangling tag 0182c9c0d953da2345b39546afbd57e917ee9f4c
dangling tag 03e2668a257938d0a47497d9762e45da6c84c9f8
dangling tag c4a19535d7c87120cb5b48094d2cd8e9b0918a03
dangling tag 10a38b63369e5f6b0d453612536d13ca970fdf12
dangling tag 93cc22724321522cdcfeced9652268b0eee0ccca
dangling tag 615b33f9ac2defb77a8cc50f373183ebe0a45e4a
dangling tag 22d42c00ce86208a0273f16e2d5808d17b3792f6
dangling tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba
dangling tag 27668aaff16c8e0303faa67823e07d9c4e709bd8
dangling tag 3a917b365efe8e0762ae4448ca795035d60fedbe
dangling tag 7e37723df47e24f0dfc27cec7127fa011bb1843d
dangling tag 3f434bd651bfb4745f87bb9aa462415fddad0546
error in tag 10a38b63369e5f6b0d453612536d13ca970fdf12: badEmail: invalid author/committer line - bad email
warning in tag 3a917b365efe8e0762ae4448ca795035d60fedbe: badTagName: invalid 'tag' name: my tag
warning in tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba: missingTaggerEntry: invalid format - expected 'tagger' line
warning in tag c4a19535d7c87120cb5b48094d2cd8e9b0918a03: missingTaggerEntry: invalid format - expected 'tagger' line
dangling tag bfa074c29cdc9cc74319502c59a90da165e7113f
dangling tag 0182c9c0d953da2345b39546afbd57e917ee9f4c
dangling tag 03e2668a257938d0a47497d9762e45da6c84c9f8
dangling tag c4a19535d7c87120cb5b48094d2cd8e9b0918a03
dangling tag 10a38b63369e5f6b0d453612536d13ca970fdf12
dangling tag 93cc22724321522cdcfeced9652268b0eee0ccca
dangling tag 615b33f9ac2defb77a8cc50f373183ebe0a45e4a
dangling tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba
dangling tag 27668aaff16c8e0303faa67823e07d9c4e709bd8
dangling tag 3a917b365efe8e0762ae4448ca795035d60fedbe
dangling tag 7e37723df47e24f0dfc27cec7127fa011bb1843d
dangling tag 3f434bd651bfb4745f87bb9aa462415fddad0546
ok 149 - allow a blank line before an empty body (1)
expecting success of 3800.150 'allow no blank line before an empty body (2)':
git hash-object -t tag -w --stdin <tag.sig >expected &&
git fsck --strict &&
git mktag <tag.sig >hash &&
test_cmp expected hash &&
test_when_finished "git update-ref -d refs/tags/mytag $(cat hash)" &&
git update-ref refs/tags/mytag $(cat hash) $(test_oid zero) &&
git fsck --strict
error in tag 10a38b63369e5f6b0d453612536d13ca970fdf12: badEmail: invalid author/committer line - bad email
warning in tag 3a917b365efe8e0762ae4448ca795035d60fedbe: badTagName: invalid 'tag' name: my tag
warning in tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba: missingTaggerEntry: invalid format - expected 'tagger' line
warning in tag c4a19535d7c87120cb5b48094d2cd8e9b0918a03: missingTaggerEntry: invalid format - expected 'tagger' line
dangling tag bfa074c29cdc9cc74319502c59a90da165e7113f
dangling tag 0182c9c0d953da2345b39546afbd57e917ee9f4c
dangling tag 03e2668a257938d0a47497d9762e45da6c84c9f8
dangling tag c4a19535d7c87120cb5b48094d2cd8e9b0918a03
dangling tag 10a38b63369e5f6b0d453612536d13ca970fdf12
dangling tag 93cc22724321522cdcfeced9652268b0eee0ccca
dangling tag 615b33f9ac2defb77a8cc50f373183ebe0a45e4a
dangling tag 22d42c00ce86208a0273f16e2d5808d17b3792f6
dangling tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba
dangling tag 27668aaff16c8e0303faa67823e07d9c4e709bd8
dangling tag 3a917b365efe8e0762ae4448ca795035d60fedbe
dangling tag 7e37723df47e24f0dfc27cec7127fa011bb1843d
dangling tag 3f434bd651bfb4745f87bb9aa462415fddad0546
error in tag 10a38b63369e5f6b0d453612536d13ca970fdf12: badEmail: invalid author/committer line - bad email
warning in tag 3a917b365efe8e0762ae4448ca795035d60fedbe: badTagName: invalid 'tag' name: my tag
warning in tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba: missingTaggerEntry: invalid format - expected 'tagger' line
warning in tag c4a19535d7c87120cb5b48094d2cd8e9b0918a03: missingTaggerEntry: invalid format - expected 'tagger' line
dangling tag bfa074c29cdc9cc74319502c59a90da165e7113f
dangling tag 0182c9c0d953da2345b39546afbd57e917ee9f4c
dangling tag c4a19535d7c87120cb5b48094d2cd8e9b0918a03
dangling tag 10a38b63369e5f6b0d453612536d13ca970fdf12
dangling tag 93cc22724321522cdcfeced9652268b0eee0ccca
dangling tag 615b33f9ac2defb77a8cc50f373183ebe0a45e4a
dangling tag 22d42c00ce86208a0273f16e2d5808d17b3792f6
dangling tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba
dangling tag 27668aaff16c8e0303faa67823e07d9c4e709bd8
dangling tag 3a917b365efe8e0762ae4448ca795035d60fedbe
dangling tag 7e37723df47e24f0dfc27cec7127fa011bb1843d
dangling tag 3f434bd651bfb4745f87bb9aa462415fddad0546
ok 150 - allow no blank line before an empty body (2)
expecting success of 3800.151 'create valid tag object':
git hash-object -t tag -w --stdin <tag.sig >expected &&
git fsck --strict &&
git mktag <tag.sig >hash &&
test_cmp expected hash &&
test_when_finished "git update-ref -d refs/tags/mytag $(cat hash)" &&
git update-ref refs/tags/mytag $(cat hash) $(test_oid zero) &&
git fsck --strict
error in tag 10a38b63369e5f6b0d453612536d13ca970fdf12: badEmail: invalid author/committer line - bad email
warning in tag 3a917b365efe8e0762ae4448ca795035d60fedbe: badTagName: invalid 'tag' name: my tag
warning in tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba: missingTaggerEntry: invalid format - expected 'tagger' line
warning in tag c4a19535d7c87120cb5b48094d2cd8e9b0918a03: missingTaggerEntry: invalid format - expected 'tagger' line
dangling tag bfa074c29cdc9cc74319502c59a90da165e7113f
dangling tag 0182c9c0d953da2345b39546afbd57e917ee9f4c
dangling tag 03e2668a257938d0a47497d9762e45da6c84c9f8
dangling tag c4a19535d7c87120cb5b48094d2cd8e9b0918a03
dangling tag 10a38b63369e5f6b0d453612536d13ca970fdf12
dangling tag 93cc22724321522cdcfeced9652268b0eee0ccca
dangling tag 615b33f9ac2defb77a8cc50f373183ebe0a45e4a
dangling tag 22d42c00ce86208a0273f16e2d5808d17b3792f6
dangling tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba
dangling tag 27668aaff16c8e0303faa67823e07d9c4e709bd8
dangling tag 3a917b365efe8e0762ae4448ca795035d60fedbe
dangling tag 7e37723df47e24f0dfc27cec7127fa011bb1843d
dangling tag 3f434bd651bfb4745f87bb9aa462415fddad0546
error in tag 10a38b63369e5f6b0d453612536d13ca970fdf12: badEmail: invalid author/committer line - bad email
warning in tag 3a917b365efe8e0762ae4448ca795035d60fedbe: badTagName: invalid 'tag' name: my tag
warning in tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba: missingTaggerEntry: invalid format - expected 'tagger' line
warning in tag c4a19535d7c87120cb5b48094d2cd8e9b0918a03: missingTaggerEntry: invalid format - expected 'tagger' line
dangling tag bfa074c29cdc9cc74319502c59a90da165e7113f
dangling tag 0182c9c0d953da2345b39546afbd57e917ee9f4c
dangling tag c4a19535d7c87120cb5b48094d2cd8e9b0918a03
dangling tag 10a38b63369e5f6b0d453612536d13ca970fdf12
dangling tag 93cc22724321522cdcfeced9652268b0eee0ccca
dangling tag 615b33f9ac2defb77a8cc50f373183ebe0a45e4a
dangling tag 22d42c00ce86208a0273f16e2d5808d17b3792f6
dangling tag a10af691a2a6ef23a4f258d9bf97b1a7fc46b0ba
dangling tag 27668aaff16c8e0303faa67823e07d9c4e709bd8
dangling tag 3a917b365efe8e0762ae4448ca795035d60fedbe
dangling tag 7e37723df47e24f0dfc27cec7127fa011bb1843d
dangling tag 3f434bd651bfb4745f87bb9aa462415fddad0546
ok 151 - create valid tag object
# passed all 151 test(s)
1..151
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3901-i18n-patch.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3901-i18n-patch/.git/
expecting success of 3901.1 'setup':
git config i18n.commitencoding UTF-8 &&
# use UTF-8 in author and committer name to match the
# i18n.commitencoding settings
. "$TEST_DIRECTORY"/t3901/utf8.txt &&
test_tick &&
echo "$GIT_AUTHOR_NAME" >mine &&
git add mine &&
git commit -s -m "Initial commit" &&
test_tick &&
echo Hello world >mine &&
git add mine &&
git commit -s -m "Second on main" &&
# the first commit on the side branch is UTF-8
test_tick &&
git checkout -b side main^ &&
echo Another file >yours &&
git add yours &&
git commit -s -m "Second on side" &&
if test_have_prereq !MINGW
then
# the second one on the side branch is ISO-8859-1
git config i18n.commitencoding ISO8859-1 &&
# use author and committer name in ISO-8859-1 to match it.
. "$TEST_DIRECTORY"/t3901/8859-1.txt
fi &&
test_tick &&
echo Yet another >theirs &&
git add theirs &&
git commit -s -m "Third on side" &&
# Back to default
git config i18n.commitencoding UTF-8
[main (root-commit) a751cb4] Initial commit
Author: Áéí óú <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 mine
[main 1abbfe5] Second on main
Author: Áéí óú <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to a new branch 'side'
[side 907dc52] Second on side
Author: Áéí óú <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 yours
[side 717f610] Third on side
1 file changed, 1 insertion(+)
create mode 100644 theirs
ok 1 - setup
expecting success of 3901.2 'format-patch output (ISO-8859-1)':
git config i18n.logoutputencoding ISO8859-1 &&
git format-patch --stdout main..HEAD^ >out-l1 &&
git format-patch --stdout HEAD^ >out-l2 &&
grep "^Content-Type: text/plain; charset=ISO8859-1" out-l1 &&
grep "^From: =?ISO8859-1?q?=C1=E9=ED=20=F3=FA?=" out-l1 &&
grep "^Content-Type: text/plain; charset=ISO8859-1" out-l2 &&
grep "^From: =?ISO8859-1?q?=C1=E9=ED=20=F3=FA?=" out-l2
Content-Type: text/plain; charset=ISO8859-1
From: =?ISO8859-1?q?=C1=E9=ED=20=F3=FA?= <author@example.com>
Content-Type: text/plain; charset=ISO8859-1
From: =?ISO8859-1?q?=C1=E9=ED=20=F3=FA?= <author@example.com>
ok 2 - format-patch output (ISO-8859-1)
expecting success of 3901.3 'format-patch output (UTF-8)':
git config i18n.logoutputencoding UTF-8 &&
git format-patch --stdout main..HEAD^ >out-u1 &&
git format-patch --stdout HEAD^ >out-u2 &&
grep "^Content-Type: text/plain; charset=UTF-8" out-u1 &&
grep "^From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?=" out-u1 &&
grep "^Content-Type: text/plain; charset=UTF-8" out-u2 &&
grep "^From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?=" out-u2
Content-Type: text/plain; charset=UTF-8
From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?= <author@example.com>
Content-Type: text/plain; charset=UTF-8
From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?= <author@example.com>
ok 3 - format-patch output (UTF-8)
expecting success of 3901.4 'rebase (U/U)':
# We want the result of rebase in UTF-8
git config i18n.commitencoding UTF-8 &&
# The test is about logoutputencoding not affecting the
# final outcome -- it is used internally to generate the
# patch and the log.
git config i18n.logoutputencoding UTF-8 &&
# The result will be committed by GIT_COMMITTER_NAME --
# we want UTF-8 encoded name.
. "$TEST_DIRECTORY"/t3901/utf8.txt &&
git checkout -b test &&
git rebase main &&
check_encoding 2
Switched to a new branch 'test'
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/test.
From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?= <author@example.com>
From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?= <author@example.com>
ok 4 - rebase (U/U)
expecting success of 3901.5 'rebase (U/L)':
git config i18n.commitencoding UTF-8 &&
git config i18n.logoutputencoding ISO8859-1 &&
. "$TEST_DIRECTORY"/t3901/utf8.txt &&
git reset --hard side &&
git rebase main &&
check_encoding 2
HEAD is now at 717f610 Third on side
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/test.
From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?= <author@example.com>
From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?= <author@example.com>
ok 5 - rebase (U/L)
expecting success of 3901.6 'rebase (L/L)':
# In this test we want ISO-8859-1 encoded commits as the result
git config i18n.commitencoding ISO8859-1 &&
git config i18n.logoutputencoding ISO8859-1 &&
. "$TEST_DIRECTORY"/t3901/8859-1.txt &&
git reset --hard side &&
git rebase main &&
check_encoding 2 8859
HEAD is now at 717f610 Third on side
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/test.
From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?= <author@example.com>
encoding ISO8859-1
From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?= <author@example.com>
encoding ISO8859-1
ok 6 - rebase (L/L)
expecting success of 3901.7 'rebase (L/U)':
# This is pathological -- use UTF-8 as intermediate form
# to get ISO-8859-1 results.
git config i18n.commitencoding ISO8859-1 &&
git config i18n.logoutputencoding UTF-8 &&
. "$TEST_DIRECTORY"/t3901/8859-1.txt &&
git reset --hard side &&
git rebase main &&
check_encoding 2 8859
HEAD is now at 717f610 Third on side
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/test.
From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?= <author@example.com>
encoding ISO8859-1
From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?= <author@example.com>
encoding ISO8859-1
ok 7 - rebase (L/U)
expecting success of 3901.8 'cherry-pick(U/U)':
# Both the commitencoding and logoutputencoding is set to UTF-8.
git config i18n.commitencoding UTF-8 &&
git config i18n.logoutputencoding UTF-8 &&
. "$TEST_DIRECTORY"/t3901/utf8.txt &&
git reset --hard main &&
git cherry-pick side^ &&
git cherry-pick side &&
git revert HEAD &&
check_encoding 3
HEAD is now at 1abbfe5 Second on main
[test 226e420] Second on side
Author: Áéí óú <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 yours
[test 0c82aa3] Third on side
Author: Áéí óú <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 theirs
[test 267f566] Revert "Third on side"
Author: Áéí óú <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 deletion(-)
delete mode 100644 theirs
From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?= <author@example.com>
From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?= <author@example.com>
From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?= <author@example.com>
ok 8 - cherry-pick(U/U)
expecting success of 3901.9 'cherry-pick(L/L)':
# Both the commitencoding and logoutputencoding is set to ISO-8859-1
git config i18n.commitencoding ISO8859-1 &&
git config i18n.logoutputencoding ISO8859-1 &&
. "$TEST_DIRECTORY"/t3901/8859-1.txt &&
git reset --hard main &&
git cherry-pick side^ &&
git cherry-pick side &&
git revert HEAD &&
check_encoding 3 8859
HEAD is now at 1abbfe5 Second on main
[test e1b2855] Second on side
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 yours
[test 37f31da] Third on side
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 theirs
[test 2f88e21] Revert "Third on side"
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 deletion(-)
delete mode 100644 theirs
From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?= <author@example.com>
encoding ISO8859-1
From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?= <author@example.com>
encoding ISO8859-1
From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?= <author@example.com>
encoding ISO8859-1
ok 9 - cherry-pick(L/L)
expecting success of 3901.10 'cherry-pick(U/L)':
# Commitencoding is set to UTF-8 but logoutputencoding is ISO-8859-1
git config i18n.commitencoding UTF-8 &&
git config i18n.logoutputencoding ISO8859-1 &&
. "$TEST_DIRECTORY"/t3901/utf8.txt &&
git reset --hard main &&
git cherry-pick side^ &&
git cherry-pick side &&
git revert HEAD &&
check_encoding 3
HEAD is now at 1abbfe5 Second on main
[test 226e420] Second on side
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 yours
[test 0c82aa3] Third on side
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 theirs
[test 267f566] Revert "Third on side"
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 deletion(-)
delete mode 100644 theirs
From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?= <author@example.com>
From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?= <author@example.com>
From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?= <author@example.com>
ok 10 - cherry-pick(U/L)
expecting success of 3901.11 'cherry-pick(L/U)':
# Again, the commitencoding is set to ISO-8859-1 but
# logoutputencoding is set to UTF-8.
git config i18n.commitencoding ISO8859-1 &&
git config i18n.logoutputencoding UTF-8 &&
. "$TEST_DIRECTORY"/t3901/8859-1.txt &&
git reset --hard main &&
git cherry-pick side^ &&
git cherry-pick side &&
git revert HEAD &&
check_encoding 3 8859
HEAD is now at 1abbfe5 Second on main
[test e1b2855] Second on side
Date: Thu Apr 7 15:15:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 yours
[test 37f31da] Third on side
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 theirs
[test 2f88e21] Revert "Third on side"
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 deletion(-)
delete mode 100644 theirs
From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?= <author@example.com>
encoding ISO8859-1
From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?= <author@example.com>
encoding ISO8859-1
From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?= <author@example.com>
encoding ISO8859-1
ok 11 - cherry-pick(L/U)
expecting success of 3901.12 'rebase --merge (U/U)':
git config i18n.commitencoding UTF-8 &&
git config i18n.logoutputencoding UTF-8 &&
. "$TEST_DIRECTORY"/t3901/utf8.txt &&
git reset --hard side &&
git rebase --merge main &&
check_encoding 2
HEAD is now at 717f610 Third on side
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/test.
From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?= <author@example.com>
From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?= <author@example.com>
ok 12 - rebase --merge (U/U)
expecting success of 3901.13 'rebase --merge (U/L)':
git config i18n.commitencoding UTF-8 &&
git config i18n.logoutputencoding ISO8859-1 &&
. "$TEST_DIRECTORY"/t3901/utf8.txt &&
git reset --hard side &&
git rebase --merge main &&
check_encoding 2
HEAD is now at 717f610 Third on side
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/test.
From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?= <author@example.com>
From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?= <author@example.com>
ok 13 - rebase --merge (U/L)
expecting success of 3901.14 'rebase --merge (L/L)':
# In this test we want ISO-8859-1 encoded commits as the result
git config i18n.commitencoding ISO8859-1 &&
git config i18n.logoutputencoding ISO8859-1 &&
. "$TEST_DIRECTORY"/t3901/8859-1.txt &&
git reset --hard side &&
git rebase --merge main &&
check_encoding 2 8859
HEAD is now at 717f610 Third on side
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/test.
From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?= <author@example.com>
encoding ISO8859-1
From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?= <author@example.com>
encoding ISO8859-1
ok 14 - rebase --merge (L/L)
expecting success of 3901.15 'rebase --merge (L/U)':
# This is pathological -- use UTF-8 as intermediate form
# to get ISO-8859-1 results.
git config i18n.commitencoding ISO8859-1 &&
git config i18n.logoutputencoding UTF-8 &&
. "$TEST_DIRECTORY"/t3901/8859-1.txt &&
git reset --hard side &&
git rebase --merge main &&
check_encoding 2 8859
HEAD is now at 717f610 Third on side
Rebasing (1/2)
Rebasing (2/2)
Successfully rebased and updated refs/heads/test.
From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?= <author@example.com>
encoding ISO8859-1
From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?= <author@example.com>
encoding ISO8859-1
ok 15 - rebase --merge (L/U)
expecting success of 3901.16 'am (U/U)':
# Apply UTF-8 patches with UTF-8 commitencoding
git config i18n.commitencoding UTF-8 &&
. "$TEST_DIRECTORY"/t3901/utf8.txt &&
git reset --hard main &&
git am out-u1 out-u2 &&
check_encoding 2
HEAD is now at 1abbfe5 Second on main
Applying: Second on side
Applying: Third on side
From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?= <author@example.com>
From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?= <author@example.com>
ok 16 - am (U/U)
expecting success of 3901.17 'am (L/L)':
# Apply ISO-8859-1 patches with ISO-8859-1 commitencoding
git config i18n.commitencoding ISO8859-1 &&
. "$TEST_DIRECTORY"/t3901/8859-1.txt &&
git reset --hard main &&
git am out-l1 out-l2 &&
check_encoding 2 8859
HEAD is now at 1abbfe5 Second on main
Applying: Second on side
Applying: Third on side
From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?= <author@example.com>
encoding ISO8859-1
From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?= <author@example.com>
encoding ISO8859-1
ok 17 - am (L/L)
expecting success of 3901.18 'am (U/L)':
# Apply ISO-8859-1 patches with UTF-8 commitencoding
git config i18n.commitencoding UTF-8 &&
. "$TEST_DIRECTORY"/t3901/utf8.txt &&
git reset --hard main &&
# am specifies --utf8 by default.
git am out-l1 out-l2 &&
check_encoding 2
HEAD is now at 1abbfe5 Second on main
Applying: Second on side
Applying: Third on side
From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?= <author@example.com>
From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?= <author@example.com>
ok 18 - am (U/L)
expecting success of 3901.19 'am --no-utf8 (U/L)':
# Apply ISO-8859-1 patches with UTF-8 commitencoding
git config i18n.commitencoding UTF-8 &&
. "$TEST_DIRECTORY"/t3901/utf8.txt &&
git reset --hard main &&
git am --no-utf8 out-l1 out-l2 2>err &&
# commit-tree will warn that the commit message does not contain valid UTF-8
# as mailinfo did not convert it
test_i18ngrep "did not conform" err &&
check_encoding 2
HEAD is now at 1abbfe5 Second on main
Applying: Second on side
Applying: Third on side
Warning: commit message did not conform to UTF-8.
Warning: commit message did not conform to UTF-8.
From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?= <author@example.com>
From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?= <author@example.com>
ok 19 - am --no-utf8 (U/L)
expecting success of 3901.20 'am (L/U)':
# Apply UTF-8 patches with ISO-8859-1 commitencoding
git config i18n.commitencoding ISO8859-1 &&
. "$TEST_DIRECTORY"/t3901/8859-1.txt &&
git reset --hard main &&
# mailinfo will re-code the commit message to the charset specified by
# i18n.commitencoding
git am out-u1 out-u2 &&
check_encoding 2 8859
HEAD is now at 1abbfe5 Second on main
Applying: Second on side
Applying: Third on side
From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?= <author@example.com>
encoding ISO8859-1
From: =?UTF-8?q?=C3=81=C3=A9=C3=AD=20=C3=B3=C3=BA?= <author@example.com>
encoding ISO8859-1
ok 20 - am (L/U)
# passed all 20 test(s)
1..20
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3600-rm.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3600-rm/.git/
expecting success of 3600.1 'Initialize test directory':
touch -- foo bar baz "space embedded" -q &&
git add -- foo bar baz "space embedded" -q &&
git commit -m "add normal files"
[main (root-commit) 27fd14d] add normal files
Author: A U Thor <author@example.com>
5 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 -q
create mode 100644 bar
create mode 100644 baz
create mode 100644 foo
create mode 100644 space embedded
ok 1 - Initialize test directory
checking prerequisite: FUNNYNAMES
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-FUNNYNAMES" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-FUNNYNAMES" &&
test_have_prereq !MINGW &&
touch -- \
"FUNNYNAMES tab embedded" \
"FUNNYNAMES \"quote embedded\"" \
"FUNNYNAMES newline
embedded" 2>/dev/null &&
rm -- \
"FUNNYNAMES tab embedded" \
"FUNNYNAMES \"quote embedded\"" \
"FUNNYNAMES newline
embedded" 2>/dev/null
)
prerequisite FUNNYNAMES ok
expecting success of 3600.2 'add files with funny names':
touch -- "tab embedded" "newline${LF}embedded" &&
git add -- "tab embedded" "newline${LF}embedded" &&
git commit -m "add files with tabs and newlines"
[main eaf70aa] add files with tabs and newlines
Author: A U Thor <author@example.com>
2 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 "newline\nembedded"
create mode 100644 "tab\tembedded"
ok 2 - add files with funny names
expecting success of 3600.3 'Pre-check that foo exists and is in index before git rm foo':
test_path_is_file foo &&
git ls-files --error-unmatch foo
foo
ok 3 - Pre-check that foo exists and is in index before git rm foo
expecting success of 3600.4 'Test that git rm foo succeeds':
git rm --cached foo
rm 'foo'
ok 4 - Test that git rm foo succeeds
expecting success of 3600.5 'Test that git rm --cached foo succeeds if the index matches the file':
echo content >foo &&
git add foo &&
git rm --cached foo
rm 'foo'
ok 5 - Test that git rm --cached foo succeeds if the index matches the file
expecting success of 3600.6 'Test that git rm --cached foo succeeds if the index matches the file':
echo content >foo &&
git add foo &&
git commit -m foo &&
echo "other content" >foo &&
git rm --cached foo
[main 774d6a8] foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
rm 'foo'
ok 6 - Test that git rm --cached foo succeeds if the index matches the file
expecting success of 3600.7 'Test that git rm --cached foo fails if the index matches neither the file nor HEAD':
echo content >foo &&
git add foo &&
git commit -m foo --allow-empty &&
echo "other content" >foo &&
git add foo &&
echo "yet another content" >foo &&
test_must_fail git rm --cached foo
[main 105830b] foo
Author: A U Thor <author@example.com>
error: the following file has staged content different from both the
file and the HEAD:
foo
(use -f to force removal)
ok 7 - Test that git rm --cached foo fails if the index matches neither the file nor HEAD
expecting success of 3600.8 'Test that git rm --cached -f foo works in case where --cached only did not':
echo content >foo &&
git add foo &&
git commit -m foo --allow-empty &&
echo "other content" >foo &&
git add foo &&
echo "yet another content" >foo &&
git rm --cached -f foo
[main 6fb3ca4] foo
Author: A U Thor <author@example.com>
rm 'foo'
ok 8 - Test that git rm --cached -f foo works in case where --cached only did not
expecting success of 3600.9 'Post-check that foo exists but is not in index after git rm foo':
test_path_is_file foo &&
test_must_fail git ls-files --error-unmatch foo
error: pathspec 'foo' did not match any file(s) known to git
Did you forget to 'git add'?
ok 9 - Post-check that foo exists but is not in index after git rm foo
expecting success of 3600.10 'Pre-check that bar exists and is in index before "git rm bar"':
test_path_is_file bar &&
git ls-files --error-unmatch bar
bar
ok 10 - Pre-check that bar exists and is in index before "git rm bar"
expecting success of 3600.11 'Test that "git rm bar" succeeds':
git rm bar
rm 'bar'
ok 11 - Test that "git rm bar" succeeds
expecting success of 3600.12 'Post-check that bar does not exist and is not in index after "git rm -f bar"':
test_path_is_missing bar &&
test_must_fail git ls-files --error-unmatch bar
error: pathspec 'bar' did not match any file(s) known to git
Did you forget to 'git add'?
ok 12 - Post-check that bar does not exist and is not in index after "git rm -f bar"
expecting success of 3600.13 'Test that "git rm -- -q" succeeds (remove a file that looks like an option)':
git rm -- -q
rm '-q'
ok 13 - Test that "git rm -- -q" succeeds (remove a file that looks like an option)
expecting success of 3600.14 'Test that "git rm -f" succeeds with embedded space, tab, or newline characters.':
git rm -f "space embedded" "tab embedded" "newline${LF}embedded"
rm 'newline
embedded'
rm 'space embedded'
rm 'tab embedded'
ok 14 - Test that "git rm -f" succeeds with embedded space, tab, or newline characters.
checking prerequisite: SANITY
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SANITY" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SANITY" &&
mkdir SANETESTD.1 SANETESTD.2 &&
chmod +w SANETESTD.1 SANETESTD.2 &&
>SANETESTD.1/x 2>SANETESTD.2/x &&
chmod -w SANETESTD.1 &&
chmod -r SANETESTD.1/x &&
chmod -rx SANETESTD.2 ||
BUG "cannot prepare SANETESTD"
! test -r SANETESTD.1/x &&
! rm SANETESTD.1/x && ! test -f SANETESTD.2/x
status=$?
chmod +rwx SANETESTD.1 SANETESTD.2 &&
rm -rf SANETESTD.1 SANETESTD.2 ||
BUG "cannot clean SANETESTD"
return $status
)
rm: cannot remove 'SANETESTD.1/x': Permission denied
prerequisite SANITY ok
expecting success of 3600.15 'Test that "git rm -f" fails if its rm fails':
test_when_finished "chmod 775 ." &&
chmod a-w . &&
test_must_fail git rm -f baz
fatal: git rm: 'baz': Permission denied
rm 'baz'
ok 15 - Test that "git rm -f" fails if its rm fails
expecting success of 3600.16 'When the rm in "git rm -f" fails, it should not remove the file from the index':
git ls-files --error-unmatch baz
baz
ok 16 - When the rm in "git rm -f" fails, it should not remove the file from the index
expecting success of 3600.17 'Remove nonexistent file with --ignore-unmatch':
git rm --ignore-unmatch nonexistent
ok 17 - Remove nonexistent file with --ignore-unmatch
expecting success of 3600.18 '"rm" command printed':
echo frotz >test-file &&
git add test-file &&
git commit -m "add file for rm test" &&
git rm test-file >rm-output.raw &&
grep "^rm " rm-output.raw >rm-output &&
test_line_count = 1 rm-output &&
rm -f test-file rm-output.raw rm-output &&
git commit -m "remove file from rm test"
[main d86816c] add file for rm test
Author: A U Thor <author@example.com>
7 files changed, 1 insertion(+), 1 deletion(-)
delete mode 100644 -q
delete mode 100644 bar
delete mode 100644 foo
delete mode 100644 "newline\nembedded"
delete mode 100644 space embedded
delete mode 100644 "tab\tembedded"
create mode 100644 test-file
[main 3dc045d] remove file from rm test
Author: A U Thor <author@example.com>
1 file changed, 1 deletion(-)
delete mode 100644 test-file
ok 18 - "rm" command printed
expecting success of 3600.19 '"rm" command suppressed with --quiet':
echo frotz >test-file &&
git add test-file &&
git commit -m "add file for rm --quiet test" &&
git rm --quiet test-file >rm-output &&
test_must_be_empty rm-output &&
rm -f test-file rm-output &&
git commit -m "remove file from rm --quiet test"
[main cd5294c] add file for rm --quiet test
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 test-file
[main 308e36c] remove file from rm --quiet test
Author: A U Thor <author@example.com>
1 file changed, 1 deletion(-)
delete mode 100644 test-file
ok 19 - "rm" command suppressed with --quiet
expecting success of 3600.20 'Re-add foo and baz':
git add foo baz &&
git ls-files --error-unmatch foo baz
baz
foo
ok 20 - Re-add foo and baz
expecting success of 3600.21 'Modify foo -- rm should refuse':
echo >>foo &&
test_must_fail git rm foo baz &&
test_path_is_file foo &&
test_path_is_file baz &&
git ls-files --error-unmatch foo baz
error: the following file has staged content different from both the
file and the HEAD:
foo
(use -f to force removal)
baz
foo
ok 21 - Modify foo -- rm should refuse
expecting success of 3600.22 'Modified foo -- rm -f should work':
git rm -f foo baz &&
test_path_is_missing foo &&
test_path_is_missing baz &&
test_must_fail git ls-files --error-unmatch foo &&
test_must_fail git ls-files --error-unmatch bar
rm 'baz'
rm 'foo'
error: pathspec 'foo' did not match any file(s) known to git
Did you forget to 'git add'?
error: pathspec 'bar' did not match any file(s) known to git
Did you forget to 'git add'?
ok 22 - Modified foo -- rm -f should work
expecting success of 3600.23 'Re-add foo and baz for HEAD tests':
echo frotz >foo &&
git checkout HEAD -- baz &&
git add foo baz &&
git ls-files --error-unmatch foo baz
baz
foo
ok 23 - Re-add foo and baz for HEAD tests
expecting success of 3600.24 'foo is different in index from HEAD -- rm should refuse':
test_must_fail git rm foo baz &&
test_path_is_file foo &&
test_path_is_file baz &&
git ls-files --error-unmatch foo baz
error: the following file has changes staged in the index:
foo
(use --cached to keep the file, or -f to force removal)
baz
foo
ok 24 - foo is different in index from HEAD -- rm should refuse
expecting success of 3600.25 'but with -f it should work.':
git rm -f foo baz &&
test_path_is_missing foo &&
test_path_is_missing baz &&
test_must_fail git ls-files --error-unmatch foo &&
test_must_fail git ls-files --error-unmatch baz
rm 'baz'
rm 'foo'
error: pathspec 'foo' did not match any file(s) known to git
Did you forget to 'git add'?
error: pathspec 'baz' did not match any file(s) known to git
Did you forget to 'git add'?
ok 25 - but with -f it should work.
expecting success of 3600.26 'refuse to remove cached empty file with modifications':
>empty &&
git add empty &&
echo content >empty &&
test_must_fail git rm --cached empty
error: the following file has staged content different from both the
file and the HEAD:
empty
(use -f to force removal)
ok 26 - refuse to remove cached empty file with modifications
expecting success of 3600.27 'remove intent-to-add file without --force':
echo content >intent-to-add &&
git add -N intent-to-add &&
git rm --cached intent-to-add
rm 'intent-to-add'
ok 27 - remove intent-to-add file without --force
expecting success of 3600.28 'Recursive test setup':
mkdir -p frotz &&
echo qfwfq >frotz/nitfol &&
git add frotz &&
git commit -m "subdir test"
[main 5a08f40] subdir test
Author: A U Thor <author@example.com>
2 files changed, 1 insertion(+)
rename baz => empty (100%)
create mode 100644 frotz/nitfol
ok 28 - Recursive test setup
expecting success of 3600.29 'Recursive without -r fails':
test_must_fail git rm frotz &&
test_path_is_dir frotz &&
test_path_is_file frotz/nitfol
fatal: not removing 'frotz' recursively without -r
ok 29 - Recursive without -r fails
expecting success of 3600.30 'Recursive with -r but dirty':
echo qfwfq >>frotz/nitfol &&
test_must_fail git rm -r frotz &&
test_path_is_dir frotz &&
test_path_is_file frotz/nitfol
error: the following file has local modifications:
frotz/nitfol
(use --cached to keep the file, or -f to force removal)
ok 30 - Recursive with -r but dirty
expecting success of 3600.31 'Recursive with -r -f':
git rm -f -r frotz &&
test_path_is_missing frotz/nitfol &&
test_path_is_missing frotz
rm 'frotz/nitfol'
ok 31 - Recursive with -r -f
expecting success of 3600.32 'Remove nonexistent file returns nonzero exit status':
test_must_fail git rm nonexistent
fatal: pathspec 'nonexistent' did not match any files
ok 32 - Remove nonexistent file returns nonzero exit status
expecting success of 3600.33 'Call "rm" from outside the work tree':
mkdir repo &&
(
cd repo &&
git init &&
echo something >somefile &&
git add somefile &&
git commit -m "add a file" &&
(
cd .. &&
git --git-dir=repo/.git --work-tree=repo rm somefile
) &&
test_must_fail git ls-files --error-unmatch somefile
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3600-rm/repo/.git/
[main (root-commit) bc24042] add a file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 somefile
rm 'somefile'
error: pathspec 'somefile' did not match any file(s) known to git
Did you forget to 'git add'?
ok 33 - Call "rm" from outside the work tree
expecting success of 3600.34 'refresh index before checking if it is up-to-date':
git reset --hard &&
test-tool chmtime -86400 frotz/nitfol &&
git rm frotz/nitfol &&
test_path_is_missing frotz/nitfol
HEAD is now at 5a08f40 subdir test
rm 'frotz/nitfol'
ok 34 - refresh index before checking if it is up-to-date
expecting success of 3600.35 'choking "git rm" should not let it die with cruft (induce SIGPIPE)':
choke_git_rm_setup &&
# git command is intentionally placed upstream of pipe to induce SIGPIPE
git rm -n "some-file-*" | : &&
test_path_is_missing .git/index.lock
ok 35 - choking "git rm" should not let it die with cruft (induce SIGPIPE)
expecting success of 3600.36 'choking "git rm" should not let it die with cruft (induce and check SIGPIPE)':
choke_git_rm_setup &&
OUT=$( ((trap "" PIPE && git rm -n "some-file-*"; echo $? 1>&3) | :) 3>&1 ) &&
test_match_signal 13 "$OUT" &&
test_path_is_missing .git/index.lock
ok 36 - choking "git rm" should not let it die with cruft (induce and check SIGPIPE)
expecting success of 3600.37 'Resolving by removal is not a warning-worthy event':
git reset -q --hard &&
test_when_finished "rm -f .git/index.lock msg && git reset -q --hard" &&
blob=$(echo blob | git hash-object -w --stdin) &&
printf "100644 $blob %d\tblob\n" 1 2 3 | git update-index --index-info &&
git rm blob >msg 2>&1 &&
test_i18ngrep ! "needs merge" msg &&
test_must_fail git ls-files -s --error-unmatch blob
error: pathspec 'blob' did not match any file(s) known to git
Did you forget to 'git add'?
ok 37 - Resolving by removal is not a warning-worthy event
expecting success of 3600.38 'rm removes subdirectories recursively':
mkdir -p dir/subdir/subsubdir &&
echo content >dir/subdir/subsubdir/file &&
git add dir/subdir/subsubdir/file &&
git rm -f dir/subdir/subsubdir/file &&
test_path_is_missing dir
rm 'dir/subdir/subsubdir/file'
ok 38 - rm removes subdirectories recursively
expecting success of 3600.39 'rm removes empty submodules from work tree':
mkdir submod &&
hash=$(git rev-parse HEAD) &&
git update-index --add --cacheinfo 160000 "$hash" submod &&
git config -f .gitmodules submodule.sub.url ./. &&
git config -f .gitmodules submodule.sub.path submod &&
git submodule init &&
git add .gitmodules &&
git commit -m "add submodule" &&
git rm submod &&
test_path_is_missing submod &&
git status -s -uno --ignore-submodules=none >actual &&
test_cmp expect actual &&
test_must_fail git config -f .gitmodules submodule.sub.url &&
test_must_fail git config -f .gitmodules submodule.sub.path
warning: could not look up configuration 'remote.origin.url'. Assuming this repository is its own authoritative upstream.
Submodule 'sub' (/<<PKGBUILDDIR>>/t/trash directory.t3600-rm/.) registered for path 'submod'
[main 639dc8a] add submodule
Author: A U Thor <author@example.com>
2 files changed, 4 insertions(+)
create mode 100644 .gitmodules
create mode 160000 submod
rm 'submod'
ok 39 - rm removes empty submodules from work tree
expecting success of 3600.40 'rm removes removed submodule from index and .gitmodules':
git reset --hard &&
git -c protocol.file.allow=always submodule update &&
rm -rf submod &&
git rm submod &&
git status -s -uno --ignore-submodules=none >actual &&
test_cmp expect actual &&
test_must_fail git config -f .gitmodules submodule.sub.url &&
test_must_fail git config -f .gitmodules submodule.sub.path
HEAD is now at 639dc8a add submodule
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3600-rm/submod'...
done.
Submodule path 'submod': checked out '5a08f409c5f8e886af660c5b2e2d84e5d1021a40'
rm 'submod'
ok 40 - rm removes removed submodule from index and .gitmodules
expecting success of 3600.41 'rm removes work tree of unmodified submodules':
git reset --hard &&
git submodule update &&
git rm submod &&
test_path_is_missing submod &&
git status -s -uno --ignore-submodules=none >actual &&
test_cmp expect actual &&
test_must_fail git config -f .gitmodules submodule.sub.url &&
test_must_fail git config -f .gitmodules submodule.sub.path
HEAD is now at 639dc8a add submodule
Submodule path 'submod': checked out '5a08f409c5f8e886af660c5b2e2d84e5d1021a40'
rm 'submod'
ok 41 - rm removes work tree of unmodified submodules
expecting success of 3600.42 'rm removes a submodule with a trailing /':
git reset --hard &&
git submodule update &&
git rm submod/ &&
test_path_is_missing submod &&
git status -s -uno --ignore-submodules=none >actual &&
test_cmp expect actual
HEAD is now at 639dc8a add submodule
Submodule path 'submod': checked out '5a08f409c5f8e886af660c5b2e2d84e5d1021a40'
rm 'submod'
ok 42 - rm removes a submodule with a trailing /
expecting success of 3600.43 'rm fails when given a file with a trailing /':
test_must_fail git rm empty/
fatal: pathspec 'empty/' did not match any files
ok 43 - rm fails when given a file with a trailing /
expecting success of 3600.44 'rm succeeds when given a directory with a trailing /':
git rm -r frotz/
rm 'frotz/nitfol'
ok 44 - rm succeeds when given a directory with a trailing /
expecting success of 3600.45 'rm of a populated submodule with different HEAD fails unless forced':
git reset --hard &&
git submodule update &&
git -C submod checkout HEAD^ &&
test_must_fail git rm submod &&
test_path_is_dir submod &&
test_path_is_file submod/.git &&
git status -s -uno --ignore-submodules=none >actual &&
test_cmp expect.modified actual &&
git rm -f submod &&
test_path_is_missing submod &&
git status -s -uno --ignore-submodules=none >actual &&
test_cmp expect actual &&
test_must_fail git config -f .gitmodules submodule.sub.url &&
test_must_fail git config -f .gitmodules submodule.sub.path
HEAD is now at 639dc8a add submodule
Submodule path 'submod': checked out '5a08f409c5f8e886af660c5b2e2d84e5d1021a40'
Previous HEAD position was 5a08f40 subdir test
HEAD is now at 308e36c remove file from rm --quiet test
error: the following file has local modifications:
submod
(use --cached to keep the file, or -f to force removal)
rm 'submod'
ok 45 - rm of a populated submodule with different HEAD fails unless forced
expecting success of 3600.46 'rm --cached leaves work tree of populated submodules and .gitmodules alone':
git reset --hard &&
git submodule update &&
git rm --cached submod &&
test_path_is_dir submod &&
test_path_is_file submod/.git &&
git status -s -uno >actual &&
test_cmp expect.cached actual &&
git config -f .gitmodules submodule.sub.url &&
git config -f .gitmodules submodule.sub.path
HEAD is now at 639dc8a add submodule
Submodule path 'submod': checked out '5a08f409c5f8e886af660c5b2e2d84e5d1021a40'
rm 'submod'
./.
submod
ok 46 - rm --cached leaves work tree of populated submodules and .gitmodules alone
expecting success of 3600.47 'rm --dry-run does not touch the submodule or .gitmodules':
git reset --hard &&
git submodule update &&
git rm -n submod &&
test_path_is_file submod/.git &&
git diff-index --exit-code HEAD
HEAD is now at 639dc8a add submodule
rm 'submod'
ok 47 - rm --dry-run does not touch the submodule or .gitmodules
expecting success of 3600.48 'rm does not complain when no .gitmodules file is found':
git reset --hard &&
git submodule update &&
git rm .gitmodules &&
git rm submod >actual 2>actual.err &&
test_must_be_empty actual.err &&
test_path_is_missing submod &&
test_path_is_missing submod/.git &&
git status -s -uno >actual &&
test_cmp expect.both_deleted actual
HEAD is now at 639dc8a add submodule
rm '.gitmodules'
ok 48 - rm does not complain when no .gitmodules file is found
expecting success of 3600.49 'rm will error out on a modified .gitmodules file unless staged':
git reset --hard &&
git submodule update &&
git config -f .gitmodules foo.bar true &&
test_must_fail git rm submod >actual 2>actual.err &&
test_file_not_empty actual.err &&
test_path_is_dir submod &&
test_path_is_file submod/.git &&
git diff-files --quiet -- submod &&
git add .gitmodules &&
git rm submod >actual 2>actual.err &&
test_must_be_empty actual.err &&
test_path_is_missing submod &&
test_path_is_missing submod/.git &&
git status -s -uno >actual &&
test_cmp expect actual
HEAD is now at 639dc8a add submodule
Submodule path 'submod': checked out '5a08f409c5f8e886af660c5b2e2d84e5d1021a40'
ok 49 - rm will error out on a modified .gitmodules file unless staged
expecting success of 3600.50 'rm will not error out on .gitmodules file with zero stat data':
git reset --hard &&
git submodule update &&
git read-tree HEAD &&
git rm submod &&
test_path_is_missing submod
HEAD is now at 639dc8a add submodule
Submodule path 'submod': checked out '5a08f409c5f8e886af660c5b2e2d84e5d1021a40'
rm 'submod'
ok 50 - rm will not error out on .gitmodules file with zero stat data
expecting success of 3600.51 'rm issues a warning when section is not found in .gitmodules':
git reset --hard &&
git submodule update &&
git config -f .gitmodules --remove-section submodule.sub &&
git add .gitmodules &&
echo "warning: Could not find section in .gitmodules where path=submod" >expect.err &&
git rm submod >actual 2>actual.err &&
test_cmp expect.err actual.err &&
test_path_is_missing submod &&
test_path_is_missing submod/.git &&
git status -s -uno >actual &&
test_cmp expect actual
HEAD is now at 639dc8a add submodule
Submodule path 'submod': checked out '5a08f409c5f8e886af660c5b2e2d84e5d1021a40'
ok 51 - rm issues a warning when section is not found in .gitmodules
expecting success of 3600.52 'rm of a populated submodule with modifications fails unless forced':
git reset --hard &&
git submodule update &&
echo X >submod/empty &&
test_must_fail git rm submod &&
test_path_is_dir submod &&
test_path_is_file submod/.git &&
git status -s -uno --ignore-submodules=none >actual &&
test_cmp expect.modified_inside actual &&
git rm -f submod &&
test_path_is_missing submod &&
git status -s -uno --ignore-submodules=none >actual &&
test_cmp expect actual
HEAD is now at 639dc8a add submodule
Submodule path 'submod': checked out '5a08f409c5f8e886af660c5b2e2d84e5d1021a40'
error: the following file has local modifications:
submod
(use --cached to keep the file, or -f to force removal)
rm 'submod'
ok 52 - rm of a populated submodule with modifications fails unless forced
expecting success of 3600.53 'rm of a populated submodule with untracked files fails unless forced':
git reset --hard &&
git submodule update &&
echo X >submod/untracked &&
test_must_fail git rm submod &&
test_path_is_dir submod &&
test_path_is_file submod/.git &&
git status -s -uno --ignore-submodules=none >actual &&
test_cmp expect.modified_untracked actual &&
git rm -f submod &&
test_path_is_missing submod &&
git status -s -uno --ignore-submodules=none >actual &&
test_cmp expect actual
HEAD is now at 639dc8a add submodule
Submodule path 'submod': checked out '5a08f409c5f8e886af660c5b2e2d84e5d1021a40'
error: the following file has local modifications:
submod
(use --cached to keep the file, or -f to force removal)
rm 'submod'
ok 53 - rm of a populated submodule with untracked files fails unless forced
expecting success of 3600.54 'setup submodule conflict':
git reset --hard &&
git submodule update &&
git checkout -b branch1 &&
echo 1 >nitfol &&
git add nitfol &&
git commit -m "added nitfol 1" &&
git checkout -b branch2 main &&
echo 2 >nitfol &&
git add nitfol &&
git commit -m "added nitfol 2" &&
git checkout -b conflict1 main &&
git -C submod fetch &&
git -C submod checkout branch1 &&
git add submod &&
git commit -m "submod 1" &&
git checkout -b conflict2 main &&
git -C submod checkout branch2 &&
git add submod &&
git commit -m "submod 2"
HEAD is now at 639dc8a add submodule
Submodule path 'submod': checked out '5a08f409c5f8e886af660c5b2e2d84e5d1021a40'
Switched to a new branch 'branch1'
[branch1 d0e7df6] added nitfol 1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 nitfol
Switched to a new branch 'branch2'
[branch2 e3f3428] added nitfol 2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 nitfol
Switched to a new branch 'conflict1'
From /<<PKGBUILDDIR>>/t/trash directory.t3600-rm/.
* [new branch] branch1 -> origin/branch1
* [new branch] branch2 -> origin/branch2
* [new branch] conflict1 -> origin/conflict1
Previous HEAD position was 5a08f40 subdir test
Switched to a new branch 'branch1'
branch 'branch1' set up to track 'origin/branch1'.
[conflict1 8a835a1] submod 1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to a new branch 'conflict2'
M submod
Switched to a new branch 'branch2'
branch 'branch2' set up to track 'origin/branch2'.
[conflict2 db3aa7b] submod 2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 54 - setup submodule conflict
expecting success of 3600.55 'rm removes work tree of unmodified conflicted submodule':
git checkout conflict1 &&
git reset --hard &&
git submodule update &&
test_must_fail git merge conflict2 &&
git rm submod &&
test_path_is_missing submod &&
git status -s -uno --ignore-submodules=none >actual &&
test_cmp expect actual
Switched to branch 'conflict1'
M submod
HEAD is now at 8a835a1 submod 1
Submodule path 'submod': checked out 'd0e7df645bf4f519acd9bb638b4ba20d14b7a359'
Failed to merge submodule submod
CONFLICT (submodule): Merge conflict in submod
Recursive merging with submodules currently only supports trivial cases.
Please manually handle the merging of each conflicted submodule.
This can be accomplished with the following steps:
- go to submodule (submod), and either merge commit e3f3428
or update to an existing commit which has merged those changes
- come back to superproject and run:
git add submod
to record the above merge or update
- resolve any other conflicts in the superproject
- commit the resulting index in the superproject
Automatic merge failed; fix conflicts and then commit the result.
rm 'submod'
ok 55 - rm removes work tree of unmodified conflicted submodule
expecting success of 3600.56 'rm of a conflicted populated submodule with different HEAD fails unless forced':
git checkout conflict1 &&
git reset --hard &&
git submodule update &&
git -C submod checkout HEAD^ &&
test_must_fail git merge conflict2 &&
test_must_fail git rm submod &&
test_path_is_dir submod &&
test_path_is_file submod/.git &&
git status -s -uno --ignore-submodules=none >actual &&
test_cmp expect.conflict actual &&
git rm -f submod &&
test_path_is_missing submod &&
git status -s -uno --ignore-submodules=none >actual &&
test_cmp expect actual &&
test_must_fail git config -f .gitmodules submodule.sub.url &&
test_must_fail git config -f .gitmodules submodule.sub.path
Already on 'conflict1'
M .gitmodules
D submod
HEAD is now at 8a835a1 submod 1
Submodule path 'submod': checked out 'd0e7df645bf4f519acd9bb638b4ba20d14b7a359'
Previous HEAD position was d0e7df6 added nitfol 1
HEAD is now at 639dc8a add submodule
Failed to merge submodule submod
CONFLICT (submodule): Merge conflict in submod
Recursive merging with submodules currently only supports trivial cases.
Please manually handle the merging of each conflicted submodule.
This can be accomplished with the following steps:
- go to submodule (submod), and either merge commit e3f3428
or update to an existing commit which has merged those changes
- come back to superproject and run:
git add submod
to record the above merge or update
- resolve any other conflicts in the superproject
- commit the resulting index in the superproject
Automatic merge failed; fix conflicts and then commit the result.
error: the following file has local modifications:
submod
(use --cached to keep the file, or -f to force removal)
rm 'submod'
ok 56 - rm of a conflicted populated submodule with different HEAD fails unless forced
expecting success of 3600.57 'rm of a conflicted populated submodule with modifications fails unless forced':
git checkout conflict1 &&
git reset --hard &&
git submodule update &&
echo X >submod/empty &&
test_must_fail git merge conflict2 &&
test_must_fail git rm submod &&
test_path_is_dir submod &&
test_path_is_file submod/.git &&
git status -s -uno --ignore-submodules=none >actual &&
test_cmp expect.conflict actual &&
git rm -f submod &&
test_path_is_missing submod &&
git status -s -uno --ignore-submodules=none >actual &&
test_cmp expect actual &&
test_must_fail git config -f .gitmodules submodule.sub.url &&
test_must_fail git config -f .gitmodules submodule.sub.path
Already on 'conflict1'
M .gitmodules
D submod
HEAD is now at 8a835a1 submod 1
Submodule path 'submod': checked out 'd0e7df645bf4f519acd9bb638b4ba20d14b7a359'
Failed to merge submodule submod
CONFLICT (submodule): Merge conflict in submod
Recursive merging with submodules currently only supports trivial cases.
Please manually handle the merging of each conflicted submodule.
This can be accomplished with the following steps:
- go to submodule (submod), and either merge commit e3f3428
or update to an existing commit which has merged those changes
- come back to superproject and run:
git add submod
to record the above merge or update
- resolve any other conflicts in the superproject
- commit the resulting index in the superproject
Automatic merge failed; fix conflicts and then commit the result.
error: the following file has local modifications:
submod
(use --cached to keep the file, or -f to force removal)
rm 'submod'
ok 57 - rm of a conflicted populated submodule with modifications fails unless forced
expecting success of 3600.58 'rm of a conflicted populated submodule with untracked files fails unless forced':
git checkout conflict1 &&
git reset --hard &&
git submodule update &&
echo X >submod/untracked &&
test_must_fail git merge conflict2 &&
test_must_fail git rm submod &&
test_path_is_dir submod &&
test_path_is_file submod/.git &&
git status -s -uno --ignore-submodules=none >actual &&
test_cmp expect.conflict actual &&
git rm -f submod &&
test_path_is_missing submod &&
git status -s -uno --ignore-submodules=none >actual &&
test_cmp expect actual
Already on 'conflict1'
M .gitmodules
D submod
HEAD is now at 8a835a1 submod 1
Submodule path 'submod': checked out 'd0e7df645bf4f519acd9bb638b4ba20d14b7a359'
Failed to merge submodule submod
CONFLICT (submodule): Merge conflict in submod
Recursive merging with submodules currently only supports trivial cases.
Please manually handle the merging of each conflicted submodule.
This can be accomplished with the following steps:
- go to submodule (submod), and either merge commit e3f3428
or update to an existing commit which has merged those changes
- come back to superproject and run:
git add submod
to record the above merge or update
- resolve any other conflicts in the superproject
- commit the resulting index in the superproject
Automatic merge failed; fix conflicts and then commit the result.
error: the following file has local modifications:
submod
(use --cached to keep the file, or -f to force removal)
rm 'submod'
ok 58 - rm of a conflicted populated submodule with untracked files fails unless forced
expecting success of 3600.59 'rm of a conflicted populated submodule with a .git directory fails even when forced':
git checkout conflict1 &&
git reset --hard &&
git submodule update &&
(
cd submod &&
rm .git &&
cp -R ../.git/modules/sub .git &&
GIT_WORK_TREE=. git config --unset core.worktree
) &&
test_must_fail git merge conflict2 &&
test_must_fail git rm submod &&
test_path_is_dir submod &&
test_path_is_dir submod/.git &&
git status -s -uno --ignore-submodules=none >actual &&
test_cmp expect.conflict actual &&
test_must_fail git rm -f submod &&
test_path_is_dir submod &&
test_path_is_dir submod/.git &&
git status -s -uno --ignore-submodules=none >actual &&
test_cmp expect.conflict actual &&
git merge --abort &&
rm -rf submod
Already on 'conflict1'
M .gitmodules
D submod
HEAD is now at 8a835a1 submod 1
Submodule path 'submod': checked out 'd0e7df645bf4f519acd9bb638b4ba20d14b7a359'
Failed to merge submodule submod
CONFLICT (submodule): Merge conflict in submod
Recursive merging with submodules currently only supports trivial cases.
Please manually handle the merging of each conflicted submodule.
This can be accomplished with the following steps:
- go to submodule (submod), and either merge commit e3f3428
or update to an existing commit which has merged those changes
- come back to superproject and run:
git add submod
to record the above merge or update
- resolve any other conflicts in the superproject
- commit the resulting index in the superproject
Automatic merge failed; fix conflicts and then commit the result.
Migrating git directory of 'submod' from
'/<<PKGBUILDDIR>>/t/trash directory.t3600-rm/submod/.git' to
'/<<PKGBUILDDIR>>/t/trash directory.t3600-rm/.git/modules/sub'
fatal: could not migrate git directory from '/<<PKGBUILDDIR>>/t/trash directory.t3600-rm/submod/.git' to '/<<PKGBUILDDIR>>/t/trash directory.t3600-rm/.git/modules/sub': Directory not empty
Migrating git directory of 'submod' from
'/<<PKGBUILDDIR>>/t/trash directory.t3600-rm/submod/.git' to
'/<<PKGBUILDDIR>>/t/trash directory.t3600-rm/.git/modules/sub'
fatal: could not migrate git directory from '/<<PKGBUILDDIR>>/t/trash directory.t3600-rm/submod/.git' to '/<<PKGBUILDDIR>>/t/trash directory.t3600-rm/.git/modules/sub': Directory not empty
ok 59 - rm of a conflicted populated submodule with a .git directory fails even when forced
expecting success of 3600.60 'rm of a conflicted unpopulated submodule succeeds':
git checkout conflict1 &&
git reset --hard &&
test_must_fail git merge conflict2 &&
git rm submod &&
test_path_is_missing submod &&
git status -s -uno --ignore-submodules=none >actual &&
test_cmp expect actual
Already on 'conflict1'
D submod
HEAD is now at 8a835a1 submod 1
Failed to merge submodule submod
CONFLICT (submodule): Merge conflict in submod
Recursive merging with submodules currently only supports trivial cases.
Please manually handle the merging of each conflicted submodule.
This can be accomplished with the following steps:
- go to submodule (submod), and either merge commit e3f3428
or update to an existing commit which has merged those changes
- come back to superproject and run:
git add submod
to record the above merge or update
- resolve any other conflicts in the superproject
- commit the resulting index in the superproject
Automatic merge failed; fix conflicts and then commit the result.
rm 'submod'
ok 60 - rm of a conflicted unpopulated submodule succeeds
expecting success of 3600.61 'rm of a populated submodule with a .git directory migrates git dir':
git checkout -f main &&
git reset --hard &&
git submodule update &&
(
cd submod &&
rm .git &&
cp -R ../.git/modules/sub .git &&
GIT_WORK_TREE=. git config --unset core.worktree &&
rm -r ../.git/modules/sub
) &&
git rm submod 2>output.err &&
test_path_is_missing submod &&
test_path_is_missing submod/.git &&
git status -s -uno --ignore-submodules=none >actual &&
test_file_not_empty actual &&
test_i18ngrep Migrating output.err
Switched to branch 'main'
HEAD is now at 639dc8a add submodule
Submodule path 'submod': checked out '5a08f409c5f8e886af660c5b2e2d84e5d1021a40'
rm 'submod'
Migrating git directory of 'submod' from
ok 61 - rm of a populated submodule with a .git directory migrates git dir
expecting success of 3600.62 'setup subsubmodule':
test_config_global protocol.file.allow always &&
git reset --hard &&
git submodule update &&
(
cd submod &&
hash=$(git rev-parse HEAD) &&
git update-index --add --cacheinfo 160000 "$hash" subsubmod &&
git config -f .gitmodules submodule.sub.url ../. &&
git config -f .gitmodules submodule.sub.path subsubmod &&
git submodule init &&
git add .gitmodules &&
git commit -m "add subsubmodule" &&
git submodule update subsubmod
) &&
git commit -a -m "added deep submodule"
HEAD is now at 639dc8a add submodule
Submodule path 'submod': checked out '5a08f409c5f8e886af660c5b2e2d84e5d1021a40'
Submodule 'sub' (/<<PKGBUILDDIR>>/t/trash directory.t3600-rm/.) registered for path 'subsubmod'
[detached HEAD b2c2402] add subsubmodule
Author: A U Thor <author@example.com>
2 files changed, 4 insertions(+)
create mode 100644 .gitmodules
create mode 160000 subsubmod
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3600-rm/submod/subsubmod'...
done.
Submodule path 'subsubmod': checked out '5a08f409c5f8e886af660c5b2e2d84e5d1021a40'
[main 3a0be25] added deep submodule
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 62 - setup subsubmodule
expecting success of 3600.63 'rm recursively removes work tree of unmodified submodules':
git rm submod &&
test_path_is_missing submod &&
git status -s -uno --ignore-submodules=none >actual &&
test_cmp expect actual
rm 'submod'
ok 63 - rm recursively removes work tree of unmodified submodules
expecting success of 3600.64 'rm of a populated nested submodule with different nested HEAD fails unless forced':
git reset --hard &&
git submodule update --recursive &&
git -C submod/subsubmod checkout HEAD^ &&
test_must_fail git rm submod &&
test_path_is_dir submod &&
test_path_is_file submod/.git &&
git status -s -uno --ignore-submodules=none >actual &&
test_cmp expect.modified_inside actual &&
git rm -f submod &&
test_path_is_missing submod &&
git status -s -uno --ignore-submodules=none >actual &&
test_cmp expect actual
HEAD is now at 3a0be25 added deep submodule
Submodule path 'submod': checked out 'b2c2402bd19123bf7a3cf2fb2eb6e8c93e95123e'
Submodule path 'submod/subsubmod': checked out '5a08f409c5f8e886af660c5b2e2d84e5d1021a40'
Previous HEAD position was 5a08f40 subdir test
HEAD is now at 308e36c remove file from rm --quiet test
error: the following file has local modifications:
submod
(use --cached to keep the file, or -f to force removal)
rm 'submod'
ok 64 - rm of a populated nested submodule with different nested HEAD fails unless forced
expecting success of 3600.65 'rm of a populated nested submodule with nested modifications fails unless forced':
git reset --hard &&
git submodule update --recursive &&
echo X >submod/subsubmod/empty &&
test_must_fail git rm submod &&
test_path_is_dir submod &&
test_path_is_file submod/.git &&
git status -s -uno --ignore-submodules=none >actual &&
test_cmp expect.modified_inside actual &&
git rm -f submod &&
test_path_is_missing submod &&
git status -s -uno --ignore-submodules=none >actual &&
test_cmp expect actual
HEAD is now at 3a0be25 added deep submodule
Submodule path 'submod': checked out 'b2c2402bd19123bf7a3cf2fb2eb6e8c93e95123e'
Submodule path 'submod/subsubmod': checked out '5a08f409c5f8e886af660c5b2e2d84e5d1021a40'
error: the following file has local modifications:
submod
(use --cached to keep the file, or -f to force removal)
rm 'submod'
ok 65 - rm of a populated nested submodule with nested modifications fails unless forced
expecting success of 3600.66 'rm of a populated nested submodule with nested untracked files fails unless forced':
git reset --hard &&
git submodule update --recursive &&
echo X >submod/subsubmod/untracked &&
test_must_fail git rm submod &&
test_path_is_dir submod &&
test_path_is_file submod/.git &&
git status -s -uno --ignore-submodules=none >actual &&
test_cmp expect.modified_untracked actual &&
git rm -f submod &&
test_path_is_missing submod &&
git status -s -uno --ignore-submodules=none >actual &&
test_cmp expect actual
HEAD is now at 3a0be25 added deep submodule
Submodule path 'submod': checked out 'b2c2402bd19123bf7a3cf2fb2eb6e8c93e95123e'
Submodule path 'submod/subsubmod': checked out '5a08f409c5f8e886af660c5b2e2d84e5d1021a40'
error: the following file has local modifications:
submod
(use --cached to keep the file, or -f to force removal)
rm 'submod'
ok 66 - rm of a populated nested submodule with nested untracked files fails unless forced
expecting success of 3600.67 'rm absorbs submodule's nested .git directory':
git reset --hard &&
git submodule update --recursive &&
(
cd submod/subsubmod &&
rm .git &&
mv ../../.git/modules/sub/modules/sub .git &&
GIT_WORK_TREE=. git config --unset core.worktree
) &&
git rm submod 2>output.err &&
test_path_is_missing submod &&
test_path_is_missing submod/subsubmod/.git &&
git status -s -uno --ignore-submodules=none >actual &&
test_file_not_empty actual &&
test_i18ngrep Migrating output.err
HEAD is now at 3a0be25 added deep submodule
Submodule path 'submod': checked out 'b2c2402bd19123bf7a3cf2fb2eb6e8c93e95123e'
Submodule path 'submod/subsubmod': checked out '5a08f409c5f8e886af660c5b2e2d84e5d1021a40'
rm 'submod'
Migrating git directory of 'submod/subsubmod' from
ok 67 - rm absorbs submodule's nested .git directory
expecting success of 3600.68 'checking out a commit after submodule removal needs manual updates':
git commit -m "submodule removal" submod .gitmodules &&
git checkout HEAD^ &&
git submodule update &&
git checkout -q HEAD^ &&
git checkout -q main 2>actual &&
test_i18ngrep "^warning: unable to rmdir 'submod':" actual &&
git status -s submod >actual &&
echo "?? submod/" >expected &&
test_cmp expected actual &&
rm -rf submod &&
git status -s -uno --ignore-submodules=none >actual &&
test_must_be_empty actual
[main a23000e] submodule removal
Author: A U Thor <author@example.com>
2 files changed, 4 deletions(-)
delete mode 160000 submod
Note: switching to 'HEAD^'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 3a0be25 added deep submodule
Submodule path 'submod': checked out 'b2c2402bd19123bf7a3cf2fb2eb6e8c93e95123e'
warning: unable to rmdir 'submod': Directory not empty
ok 68 - checking out a commit after submodule removal needs manual updates
expecting success of 3600.69 'rm of d/f when d has become a non-directory':
rm -rf d &&
mkdir d &&
>d/f &&
git add d &&
rm -rf d &&
>d &&
git rm d/f &&
test_must_fail git rev-parse --verify :d/f &&
test_path_is_file d
rm 'd/f'
fatal: Needed a single revision
ok 69 - rm of d/f when d has become a non-directory
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
expecting success of 3600.70 'rm of d/f when d has become a dangling symlink':
rm -rf d &&
mkdir d &&
>d/f &&
git add d &&
rm -rf d &&
ln -s nonexistent d &&
git rm d/f &&
test_must_fail git rev-parse --verify :d/f &&
test -h d &&
test_path_is_missing d
rm 'd/f'
fatal: Needed a single revision
ok 70 - rm of d/f when d has become a dangling symlink
expecting success of 3600.71 'rm of file when it has become a directory':
rm -rf d &&
>d &&
git add d &&
rm -f d &&
mkdir d &&
>d/f &&
test_must_fail git rm d &&
git rev-parse --verify :d &&
test_path_is_file d/f
fatal: git rm: 'd': Is a directory
rm 'd'
e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
ok 71 - rm of file when it has become a directory
expecting success of 3600.72 'rm across a symlinked leading path (no index)':
rm -rf d e &&
mkdir e &&
echo content >e/f &&
ln -s e d &&
git add -A e d &&
git commit -m "symlink d to e, e/f exists" &&
test_must_fail git rm d/f &&
git rev-parse --verify :d &&
git rev-parse --verify :e/f &&
test -h d &&
test_path_is_file e/f
[main 15c6bcf] symlink d to e, e/f exists
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 120000 d
create mode 100644 e/f
fatal: pathspec 'd/f' did not match any files
9cbe6ea56f225388ae614c419249bfc6d734cc30
d95f3ad14dee633a758d2e331151e950dd13e4ed
ok 72 - rm across a symlinked leading path (no index)
checking known breakage of 3600.73 'rm across a symlinked leading path (w/ index)':
rm -rf d e &&
mkdir d &&
echo content >d/f &&
git add -A e d &&
git commit -m "d/f exists" &&
mv d e &&
ln -s e d &&
test_must_fail git rm d/f &&
git rev-parse --verify :d/f &&
test -h d &&
test_path_is_file e/f
[main 362fe30] d/f exists
Author: A U Thor <author@example.com>
2 files changed, 1 deletion(-)
delete mode 120000 d
rename {e => d}/f (100%)
rm 'd/f'
test_must_fail: command succeeded: git rm d/f
not ok 73 - rm across a symlinked leading path (w/ index) # TODO known breakage
expecting success of 3600.74 'setup for testing rm messages':
>bar.txt &&
>foo.txt &&
git add bar.txt foo.txt
ok 74 - setup for testing rm messages
expecting success of 3600.75 'rm files with different staged content':
cat >expect <<-\EOF &&
error: the following files have staged content different from both the
file and the HEAD:
bar.txt
foo.txt
(use -f to force removal)
EOF
echo content1 >foo.txt &&
echo content1 >bar.txt &&
test_must_fail git rm foo.txt bar.txt 2>actual &&
test_cmp expect actual
ok 75 - rm files with different staged content
expecting success of 3600.76 'rm files with different staged content without hints':
cat >expect <<-\EOF &&
error: the following files have staged content different from both the
file and the HEAD:
bar.txt
foo.txt
EOF
echo content2 >foo.txt &&
echo content2 >bar.txt &&
test_must_fail git -c advice.rmhints=false rm foo.txt bar.txt 2>actual &&
test_cmp expect actual
ok 76 - rm files with different staged content without hints
expecting success of 3600.77 'rm file with local modification':
cat >expect <<-\EOF &&
error: the following file has local modifications:
foo.txt
(use --cached to keep the file, or -f to force removal)
EOF
git commit -m "testing rm 3" &&
echo content3 >foo.txt &&
test_must_fail git rm foo.txt 2>actual &&
test_cmp expect actual
[main a02d987] testing rm 3
Author: A U Thor <author@example.com>
3 files changed, 1 deletion(-)
create mode 100644 bar.txt
delete mode 100644 d/f
create mode 100644 foo.txt
ok 77 - rm file with local modification
expecting success of 3600.78 'rm file with local modification without hints':
cat >expect <<-\EOF &&
error: the following file has local modifications:
bar.txt
EOF
echo content4 >bar.txt &&
test_must_fail git -c advice.rmhints=false rm bar.txt 2>actual &&
test_cmp expect actual
ok 78 - rm file with local modification without hints
expecting success of 3600.79 'rm file with changes in the index':
cat >expect <<-\EOF &&
error: the following file has changes staged in the index:
foo.txt
(use --cached to keep the file, or -f to force removal)
EOF
git reset --hard &&
echo content5 >foo.txt &&
git add foo.txt &&
test_must_fail git rm foo.txt 2>actual &&
test_cmp expect actual
HEAD is now at a02d987 testing rm 3
ok 79 - rm file with changes in the index
expecting success of 3600.80 'rm file with changes in the index without hints':
cat >expect <<-\EOF &&
error: the following file has changes staged in the index:
foo.txt
EOF
test_must_fail git -c advice.rmhints=false rm foo.txt 2>actual &&
test_cmp expect actual
ok 80 - rm file with changes in the index without hints
expecting success of 3600.81 'rm files with two different errors':
cat >expect <<-\EOF &&
error: the following file has staged content different from both the
file and the HEAD:
foo1.txt
(use -f to force removal)
error: the following file has changes staged in the index:
bar1.txt
(use --cached to keep the file, or -f to force removal)
EOF
echo content >foo1.txt &&
git add foo1.txt &&
echo content6 >foo1.txt &&
echo content6 >bar1.txt &&
git add bar1.txt &&
test_must_fail git rm bar1.txt foo1.txt 2>actual &&
test_cmp expect actual
ok 81 - rm files with two different errors
expecting success of 3600.82 'rm empty string should fail':
test_must_fail git rm -rf ""
fatal: empty string is not a valid pathspec. please use . instead if you meant to match all paths
ok 82 - rm empty string should fail
# still have 1 known breakage(s)
# passed all remaining 81 test(s)
1..82
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3904-stash-patch.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3904-stash-patch/.git/
expecting success of 3904.1 'setup':
mkdir dir &&
echo parent > dir/foo &&
echo dummy > bar &&
echo committed > HEAD &&
git add bar dir/foo HEAD &&
git commit -m initial &&
test_tick &&
test_commit second dir/foo head &&
echo index > dir/foo &&
git add dir/foo &&
set_and_save_state bar bar_work bar_index &&
save_head
[master (root-commit) 797253d] initial
Author: A U Thor <author@example.com>
3 files changed, 3 insertions(+)
create mode 100644 HEAD
create mode 100644 bar
create mode 100644 dir/foo
[master 1f3a67c] second
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 1 - setup
expecting success of 3904.2 'saying "n" does nothing':
set_state HEAD HEADfile_work HEADfile_index &&
set_state dir/foo work index &&
test_write_lines n n n | test_must_fail git stash save -p &&
verify_state HEAD HEADfile_work HEADfile_index &&
verify_saved_state bar &&
verify_state dir/foo work index
diff --git a/HEAD b/HEAD
index d0fe822..e74fca5 100644
--- a/HEAD
+++ b/HEAD
@@ -1 +1 @@
-committed
+HEADfile_work
(1/1) Stash this hunk [y,n,q,a,d,e,?]?
diff --git a/bar b/bar
index 421376d..8c999e6 100644
--- a/bar
+++ b/bar
@@ -1 +1 @@
-dummy
+bar_work
(1/1) Stash this hunk [y,n,q,a,d,e,?]?
diff --git a/dir/foo b/dir/foo
index 564b12f..b8f99f5 100644
--- a/dir/foo
+++ b/dir/foo
@@ -1 +1 @@
-head
+work
(1/1) Stash this hunk [y,n,q,a,d,e,?]?
No changes selected
ok 2 - saying "n" does nothing
expecting success of 3904.3 'git stash -p':
test_write_lines y n y | git stash save -p &&
verify_state HEAD committed HEADfile_index &&
verify_saved_state bar &&
verify_state dir/foo head index &&
git reset --hard &&
git stash apply &&
verify_state HEAD HEADfile_work committed &&
verify_state bar dummy dummy &&
verify_state dir/foo work head
diff --git a/HEAD b/HEAD
index d0fe822..e74fca5 100644
--- a/HEAD
+++ b/HEAD
@@ -1 +1 @@
-committed
+HEADfile_work
(1/1) Stash this hunk [y,n,q,a,d,e,?]?
diff --git a/bar b/bar
index 421376d..8c999e6 100644
--- a/bar
+++ b/bar
@@ -1 +1 @@
-dummy
+bar_work
(1/1) Stash this hunk [y,n,q,a,d,e,?]?
diff --git a/dir/foo b/dir/foo
index 564b12f..b8f99f5 100644
--- a/dir/foo
+++ b/dir/foo
@@ -1 +1 @@
-head
+work
(1/1) Stash this hunk [y,n,q,a,d,e,?]?
Saved working directory and index state WIP on master: 1f3a67c second
HEAD is now at 1f3a67c second
Merging Version stash was based on with Stashed changes
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: HEAD
modified: dir/foo
Untracked files:
(use "git add <file>..." to include in what will be committed)
_head
_index_bar
_worktree_bar
actual
expect
no changes added to commit (use "git add" and/or "git commit -a")
ok 3 - git stash -p
expecting success of 3904.4 'git stash -p --no-keep-index':
set_state HEAD HEADfile_work HEADfile_index &&
set_state bar bar_work bar_index &&
set_state dir/foo work index &&
test_write_lines y n y | git stash save -p --no-keep-index &&
verify_state HEAD committed committed &&
verify_state bar bar_work dummy &&
verify_state dir/foo head head &&
git reset --hard &&
git stash apply --index &&
verify_state HEAD HEADfile_work HEADfile_index &&
verify_state bar dummy bar_index &&
verify_state dir/foo work index
diff --git a/HEAD b/HEAD
index d0fe822..e74fca5 100644
--- a/HEAD
+++ b/HEAD
@@ -1 +1 @@
-committed
+HEADfile_work
(1/1) Stash this hunk [y,n,q,a,d,e,?]?
diff --git a/bar b/bar
index 421376d..8c999e6 100644
--- a/bar
+++ b/bar
@@ -1 +1 @@
-dummy
+bar_work
(1/1) Stash this hunk [y,n,q,a,d,e,?]?
diff --git a/dir/foo b/dir/foo
index 564b12f..b8f99f5 100644
--- a/dir/foo
+++ b/dir/foo
@@ -1 +1 @@
-head
+work
(1/1) Stash this hunk [y,n,q,a,d,e,?]?
Saved working directory and index state WIP on master: 1f3a67c second
HEAD is now at 1f3a67c second
Merging Version stash was based on with Stashed changes
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: HEAD
modified: bar
modified: dir/foo
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: HEAD
modified: bar
modified: dir/foo
Untracked files:
(use "git add <file>..." to include in what will be committed)
_head
_index_bar
_worktree_bar
actual
expect
ok 4 - git stash -p --no-keep-index
expecting success of 3904.5 'git stash --no-keep-index -p':
set_state HEAD HEADfile_work HEADfile_index &&
set_state bar bar_work bar_index &&
set_state dir/foo work index &&
test_write_lines y n y | git stash save --no-keep-index -p &&
verify_state HEAD committed committed &&
verify_state dir/foo head head &&
verify_state bar bar_work dummy &&
git reset --hard &&
git stash apply --index &&
verify_state HEAD HEADfile_work HEADfile_index &&
verify_state bar dummy bar_index &&
verify_state dir/foo work index
diff --git a/HEAD b/HEAD
index d0fe822..e74fca5 100644
--- a/HEAD
+++ b/HEAD
@@ -1 +1 @@
-committed
+HEADfile_work
(1/1) Stash this hunk [y,n,q,a,d,e,?]?
diff --git a/bar b/bar
index 421376d..8c999e6 100644
--- a/bar
+++ b/bar
@@ -1 +1 @@
-dummy
+bar_work
(1/1) Stash this hunk [y,n,q,a,d,e,?]?
diff --git a/dir/foo b/dir/foo
index 564b12f..b8f99f5 100644
--- a/dir/foo
+++ b/dir/foo
@@ -1 +1 @@
-head
+work
(1/1) Stash this hunk [y,n,q,a,d,e,?]?
Saved working directory and index state WIP on master: 1f3a67c second
HEAD is now at 1f3a67c second
Merging Version stash was based on with Stashed changes
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: HEAD
modified: bar
modified: dir/foo
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: HEAD
modified: bar
modified: dir/foo
Untracked files:
(use "git add <file>..." to include in what will be committed)
_head
_index_bar
_worktree_bar
actual
expect
ok 5 - git stash --no-keep-index -p
expecting success of 3904.6 'stash -p --no-keep-index -- <pathspec> does not unstage other files':
set_state HEAD HEADfile_work HEADfile_index &&
set_state dir/foo work index &&
echo y | git stash push -p --no-keep-index -- HEAD &&
verify_state HEAD committed committed &&
verify_state dir/foo work index
diff --git a/HEAD b/HEAD
index d0fe822..e74fca5 100644
--- a/HEAD
+++ b/HEAD
@@ -1 +1 @@
-committed
+HEADfile_work
(1/1) Stash this hunk [y,n,q,a,d,e,?]?
Saved working directory and index state WIP on master: 1f3a67c second
ok 6 - stash -p --no-keep-index -- <pathspec> does not unstage other files
expecting success of 3904.7 'none of this moved HEAD':
verify_saved_head
ok 7 - none of this moved HEAD
expecting success of 3904.8 'stash -p with split hunk':
git reset --hard &&
cat >test <<-\EOF &&
aaa
bbb
ccc
EOF
git add test &&
git commit -m "initial" &&
cat >test <<-\EOF &&
aaa
added line 1
bbb
added line 2
ccc
EOF
printf "%s\n" s n y q |
git stash -p 2>error &&
test_must_be_empty error &&
grep "added line 1" test &&
! grep "added line 2" test
HEAD is now at 1f3a67c second
[master 97cac8f] initial
Author: A U Thor <author@example.com>
1 file changed, 3 insertions(+)
create mode 100644 test
diff --git a/test b/test
index 1802a74..515ff88 100644
--- a/test
+++ b/test
@@ -1,3 +1,5 @@
aaa
+added line 1
bbb
+added line 2
ccc
(1/1) Stash this hunk [y,n,q,a,d,s,e,?]? Split into 2 hunks.
@@ -1,2 +1,3 @@
aaa
+added line 1
bbb
(1/2) Stash this hunk [y,n,q,a,d,j,J,g,/,e,?]? @@ -2,2 +3,3 @@
bbb
+added line 2
ccc
(2/2) Stash this hunk [y,n,q,a,d,K,g,/,e,?]?
Saved working directory and index state WIP on master: 97cac8f initial
added line 1
ok 8 - stash -p with split hunk
# passed all 8 test(s)
1..8
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3907-stash-show-config.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3907-stash-show-config/.git/
expecting success of 3907.1 'setup':
test_commit file
[master (root-commit) 4c1911f] file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file.t
ok 1 - setup
expecting success of 3907.2 'showStat unset showPatch unset':
test_stat_and_patch "<unset>" "<unset>" --stat
Saved working directory and index state WIP on master: 4c1911f file
ok 2 - showStat unset showPatch unset
expecting success of 3907.3 'showStat unset showPatch false':
test_stat_and_patch "<unset>" false --stat
Saved working directory and index state WIP on master: 4c1911f file
ok 3 - showStat unset showPatch false
expecting success of 3907.4 'showStat unset showPatch true':
test_stat_and_patch "<unset>" true --stat -p
Saved working directory and index state WIP on master: 4c1911f file
ok 4 - showStat unset showPatch true
expecting success of 3907.5 'showStat false showPatch unset':
test_stat_and_patch false "<unset>"
Saved working directory and index state WIP on master: 4c1911f file
ok 5 - showStat false showPatch unset
expecting success of 3907.6 'showStat false showPatch false':
test_stat_and_patch false false
Saved working directory and index state WIP on master: 4c1911f file
ok 6 - showStat false showPatch false
expecting success of 3907.7 'showStat false showPatch true':
test_stat_and_patch false true -p
Saved working directory and index state WIP on master: 4c1911f file
ok 7 - showStat false showPatch true
expecting success of 3907.8 'showStat true showPatch unset':
test_stat_and_patch true "<unset>" --stat
Saved working directory and index state WIP on master: 4c1911f file
ok 8 - showStat true showPatch unset
expecting success of 3907.9 'showStat true showPatch false':
test_stat_and_patch true false --stat
Saved working directory and index state WIP on master: 4c1911f file
ok 9 - showStat true showPatch false
expecting success of 3907.10 'showStat true showPatch true':
test_stat_and_patch true true --stat -p
Saved working directory and index state WIP on master: 4c1911f file
ok 10 - showStat true showPatch true
# passed all 10 test(s)
1..10
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3908-stash-in-worktree.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3908-stash-in-worktree/.git/
expecting success of 3908.1 'setup':
test_commit initial &&
git worktree add wt &&
test_commit -C wt in-worktree
[master (root-commit) 24b24cf] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 initial.t
Preparing worktree (new branch 'wt')
HEAD is now at 24b24cf initial
[wt a17e291] in-worktree
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 in-worktree.t
ok 1 - setup
expecting success of 3908.2 'apply in subdirectory':
mkdir wt/subdir &&
(
cd wt/subdir &&
echo modified >../initial.t &&
git stash &&
git stash apply >out
) &&
grep "\.\.\/initial\.t" wt/subdir/out
Saved working directory and index state WIP on wt: a17e291 in-worktree
modified: ../initial.t
ok 2 - apply in subdirectory
# passed all 2 test(s)
1..2
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3909-stash-pathspec-file.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3909-stash-pathspec-file/.git/
expecting success of 3909.1 'setup':
>fileA.t &&
>fileB.t &&
>fileC.t &&
>fileD.t &&
git add fileA.t fileB.t fileC.t fileD.t &&
git commit -m "Files" &&
git tag checkpoint
[master (root-commit) 2d1bb5b] Files
Author: A U Thor <author@example.com>
4 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 fileA.t
create mode 100644 fileB.t
create mode 100644 fileC.t
create mode 100644 fileD.t
ok 1 - setup
expecting success of 3909.2 'simplest':
restore_checkpoint &&
# More files are written to make sure that git didnt ignore
# --pathspec-from-file, stashing everything
echo A >fileA.t &&
echo B >fileB.t &&
echo C >fileC.t &&
echo D >fileD.t &&
cat >expect <<-\EOF &&
M fileA.t
EOF
echo fileA.t | git stash push --pathspec-from-file=- &&
verify_expect
HEAD is now at 2d1bb5b Files
Saved working directory and index state WIP on master: 2d1bb5b Files
ok 2 - simplest
expecting success of 3909.3 '--pathspec-file-nul':
restore_checkpoint &&
# More files are written to make sure that git didnt ignore
# --pathspec-from-file, stashing everything
echo A >fileA.t &&
echo B >fileB.t &&
echo C >fileC.t &&
echo D >fileD.t &&
cat >expect <<-\EOF &&
M fileA.t
M fileB.t
EOF
printf "fileA.t\0fileB.t\0" | git stash push --pathspec-from-file=- --pathspec-file-nul &&
verify_expect
HEAD is now at 2d1bb5b Files
Saved working directory and index state WIP on master: 2d1bb5b Files
ok 3 - --pathspec-file-nul
expecting success of 3909.4 'only touches what was listed':
restore_checkpoint &&
# More files are written to make sure that git didnt ignore
# --pathspec-from-file, stashing everything
echo A >fileA.t &&
echo B >fileB.t &&
echo C >fileC.t &&
echo D >fileD.t &&
cat >expect <<-\EOF &&
M fileB.t
M fileC.t
EOF
printf "fileB.t\nfileC.t\n" | git stash push --pathspec-from-file=- &&
verify_expect
HEAD is now at 2d1bb5b Files
Saved working directory and index state WIP on master: 2d1bb5b Files
ok 4 - only touches what was listed
expecting success of 3909.5 'error conditions':
restore_checkpoint &&
echo A >fileA.t &&
echo fileA.t >list &&
test_must_fail git stash push --pathspec-from-file=list --patch 2>err &&
test_i18ngrep -e "options .--pathspec-from-file. and .--patch. cannot be used together" err &&
test_must_fail git stash push --pathspec-from-file=list -- fileA.t 2>err &&
test_i18ngrep -e ".--pathspec-from-file. and pathspec arguments cannot be used together" err &&
test_must_fail git stash push --pathspec-file-nul 2>err &&
test_i18ngrep -e "the option .--pathspec-file-nul. requires .--pathspec-from-file." err
HEAD is now at 2d1bb5b Files
fatal: options '--pathspec-from-file' and '--patch' cannot be used together
fatal: '--pathspec-from-file' and pathspec arguments cannot be used together
fatal: the option '--pathspec-file-nul' requires '--pathspec-from-file'
ok 5 - error conditions
# passed all 5 test(s)
1..5
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3910-mac-os-precompose.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3910-mac-os-precompose/.git/
checking prerequisite: UTF8_NFD_TO_NFC
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-UTF8_NFD_TO_NFC" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-UTF8_NFD_TO_NFC" &&
# check whether FS converts nfd unicode to nfc
auml=$(printf "\303\244")
aumlcdiar=$(printf "\141\314\210")
>"$auml" &&
test -f "$aumlcdiar"
)
prerequisite UTF8_NFD_TO_NFC not satisfied
1..0 # SKIP filesystem does not corrupt utf-8
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3905-stash-include-untracked.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3905-stash-include-untracked/.git/
expecting success of 3905.1 'stash save --include-untracked some dirty working directory':
echo 1 >file &&
git add file &&
test_tick &&
git commit -m initial &&
echo 2 >file &&
git add file &&
echo 3 >file &&
test_tick &&
echo 1 >file2 &&
echo 1 >HEAD &&
mkdir untracked &&
echo untracked >untracked/untracked &&
git stash --include-untracked &&
git diff-files --quiet &&
git diff-index --cached --quiet HEAD
[master (root-commit) 777c62c] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
Saved working directory and index state WIP on master: 777c62c initial
ok 1 - stash save --include-untracked some dirty working directory
expecting success of 3905.2 'stash save --include-untracked cleaned the untracked files':
cat >expect <<-EOF &&
?? actual
?? expect
EOF
git status --porcelain >actual &&
test_cmp expect actual
ok 2 - stash save --include-untracked cleaned the untracked files
expecting success of 3905.3 'stash save --include-untracked stashed the untracked files':
one_blob=$(echo 1 | git hash-object --stdin) &&
tracked=$(git rev-parse --short "$one_blob") &&
untracked_blob=$(echo untracked | git hash-object --stdin) &&
untracked=$(git rev-parse --short "$untracked_blob") &&
cat >expect.diff <<-EOF &&
diff --git a/HEAD b/HEAD
new file mode 100644
index 0000000..$tracked
--- /dev/null
+++ b/HEAD
@@ -0,0 +1 @@
+1
diff --git a/file2 b/file2
new file mode 100644
index 0000000..$tracked
--- /dev/null
+++ b/file2
@@ -0,0 +1 @@
+1
diff --git a/untracked/untracked b/untracked/untracked
new file mode 100644
index 0000000..$untracked
--- /dev/null
+++ b/untracked/untracked
@@ -0,0 +1 @@
+untracked
EOF
cat >expect.lstree <<-EOF &&
HEAD
file2
untracked
EOF
test_path_is_missing file2 &&
test_path_is_missing untracked &&
test_path_is_missing HEAD &&
git diff HEAD stash^3 -- HEAD file2 untracked >actual &&
test_cmp expect.diff actual &&
git ls-tree --name-only stash^3: >actual &&
test_cmp expect.lstree actual
ok 3 - stash save --include-untracked stashed the untracked files
expecting success of 3905.4 'stash save --patch --include-untracked fails':
test_must_fail git stash --patch --include-untracked
Can't use --patch and --include-untracked or --all at the same time
ok 4 - stash save --patch --include-untracked fails
expecting success of 3905.5 'stash save --patch --all fails':
test_must_fail git stash --patch --all
Can't use --patch and --include-untracked or --all at the same time
ok 5 - stash save --patch --all fails
expecting success of 3905.6 'clean up untracked/untracked file to prepare for next tests':
git clean --force --quiet
ok 6 - clean up untracked/untracked file to prepare for next tests
expecting success of 3905.7 'stash pop after save --include-untracked leaves files untracked again':
cat >expect <<-EOF &&
M file
?? HEAD
?? actual
?? expect
?? file2
?? untracked/
EOF
git stash pop &&
git status --porcelain >actual &&
test_cmp expect actual &&
echo 1 >expect_file2 &&
test_cmp expect_file2 file2 &&
echo untracked >untracked_expect &&
test_cmp untracked_expect untracked/untracked
Merging Version stash was based on with Stashed changes
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: file
Untracked files:
(use "git add <file>..." to include in what will be committed)
HEAD
expect
file2
untracked/
no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (b870f65afe7416482148902ff5b21a724244d053)
ok 7 - stash pop after save --include-untracked leaves files untracked again
expecting success of 3905.8 'clean up untracked/ directory to prepare for next tests':
git clean --force --quiet -d
ok 8 - clean up untracked/ directory to prepare for next tests
expecting success of 3905.9 'stash save -u dirty index':
echo 4 >file3 &&
git add file3 &&
test_tick &&
git stash -u
Saved working directory and index state WIP on master: 777c62c initial
ok 9 - stash save -u dirty index
expecting success of 3905.10 'stash save --include-untracked dirty index got stashed':
four_blob=$(echo 4 | git hash-object --stdin) &&
blob=$(git rev-parse --short "$four_blob") &&
cat >expect <<-EOF &&
diff --git a/file3 b/file3
new file mode 100644
index 0000000..$blob
--- /dev/null
+++ b/file3
@@ -0,0 +1 @@
+4
EOF
git stash pop --index &&
test_when_finished "git reset" &&
git diff --cached >actual &&
test_cmp expect actual
Merging Version stash was based on with Stashed changes
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: file3
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: file
Untracked files:
(use "git add <file>..." to include in what will be committed)
expect
Dropped refs/stash@{0} (6fe995aa91ff10c4e2af89ab165bd888828517d0)
Unstaged changes after reset:
M file
ok 10 - stash save --include-untracked dirty index got stashed
expecting success of 3905.11 'stash save --include-untracked -q is quiet':
echo 1 >file5 &&
git stash save --include-untracked --quiet >.git/stash-output.out 2>&1 &&
test_line_count = 0 .git/stash-output.out &&
rm -f .git/stash-output.out
ok 11 - stash save --include-untracked -q is quiet
expecting success of 3905.12 'stash save --include-untracked removed files':
rm -f file &&
git stash save --include-untracked &&
echo 1 >expect &&
test_when_finished "rm -f expect" &&
test_cmp expect file
Saved working directory and index state WIP on master: 777c62c initial
ok 12 - stash save --include-untracked removed files
expecting success of 3905.13 'stash save --include-untracked removed files got stashed':
git stash pop &&
test_path_is_missing file
Merging Version stash was based on with Stashed changes
On branch master
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
deleted: file
no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (909f7032bbeb8f8ef8a3aa293429dac49a9d18ff)
ok 13 - stash save --include-untracked removed files got stashed
expecting success of 3905.14 'stash save --include-untracked respects .gitignore':
cat >.gitignore <<-EOF &&
.gitignore
ignored
ignored.d/
EOF
echo ignored >ignored &&
mkdir ignored.d &&
echo ignored >ignored.d/untracked &&
git stash -u &&
test_file_not_empty ignored &&
test_file_not_empty ignored.d/untracked &&
test_file_not_empty .gitignore
Saved working directory and index state WIP on master: 777c62c initial
ok 14 - stash save --include-untracked respects .gitignore
expecting success of 3905.15 'stash save -u can stash with only untracked files different':
echo 4 >file4 &&
git stash -u &&
test_path_is_missing file4
Saved working directory and index state WIP on master: 777c62c initial
ok 15 - stash save -u can stash with only untracked files different
expecting success of 3905.16 'stash save --all does not respect .gitignore':
git stash -a &&
test_path_is_missing ignored &&
test_path_is_missing ignored.d &&
test_path_is_missing .gitignore
Saved working directory and index state WIP on master: 777c62c initial
ok 16 - stash save --all does not respect .gitignore
expecting success of 3905.17 'stash save --all is stash poppable':
git stash pop &&
test_file_not_empty ignored &&
test_file_not_empty ignored.d/untracked &&
test_file_not_empty .gitignore
Merging Version stash was based on with Stashed changes
Already up to date.
On branch master
nothing to commit, working tree clean
Dropped refs/stash@{0} (7e729995c69630f26ee14cf7ce02b080da67ecd1)
ok 17 - stash save --all is stash poppable
expecting success of 3905.18 'stash push --include-untracked with pathspec':
>foo &&
>bar &&
git stash push --include-untracked -- foo &&
test_path_is_file bar &&
test_path_is_missing foo &&
git stash pop &&
test_path_is_file bar &&
test_path_is_file foo
Saved working directory and index state WIP on master: 777c62c initial
Merging Version stash was based on with Stashed changes
Already up to date.
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
bar
foo
nothing added to commit but untracked files present (use "git add" to track)
Dropped refs/stash@{0} (8c4436f5c5cee126e0672d6347a425d7e9dcfcdd)
ok 18 - stash push --include-untracked with pathspec
expecting success of 3905.19 'stash push with $IFS character':
>"foo bar" &&
>foo &&
>bar &&
git add foo* &&
git stash push --include-untracked -- "foo b*" &&
test_path_is_missing "foo bar" &&
test_path_is_file foo &&
test_path_is_file bar &&
git stash pop &&
test_path_is_file "foo bar" &&
test_path_is_file foo &&
test_path_is_file bar
Saved working directory and index state WIP on master: 777c62c initial
Merging Updated upstream with Stashed changes
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: foo
new file: foo bar
Untracked files:
(use "git add <file>..." to include in what will be committed)
bar
Dropped refs/stash@{0} (35eb97973117e33f4570df8b356a559959935987)
ok 19 - stash push with $IFS character
expecting success of 3905.20 'stash previously ignored file':
cat >.gitignore <<-EOF &&
ignored
ignored.d/*
EOF
git reset HEAD &&
git add .gitignore &&
git commit -m "Add .gitignore" &&
>ignored.d/foo &&
echo "!ignored.d/foo" >>.gitignore &&
git stash save --include-untracked &&
test_path_is_missing ignored.d/foo &&
git stash pop &&
test_path_is_file ignored.d/foo
[master 14579a4] Add .gitignore
Author: A U Thor <author@example.com>
1 file changed, 2 insertions(+)
create mode 100644 .gitignore
Saved working directory and index state WIP on master: 14579a4 Add .gitignore
Merging Version stash was based on with Stashed changes
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .gitignore
Untracked files:
(use "git add <file>..." to include in what will be committed)
bar
foo
foo bar
ignored.d/
no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (cd3bab6f4eef73edff723219ece7e89ceec0e923)
ok 20 - stash previously ignored file
expecting success of 3905.21 'stash -u -- <untracked> doesnt print error':
>untracked &&
git stash push -u -- untracked 2>actual &&
test_path_is_missing untracked &&
test_line_count = 0 actual
Saved working directory and index state WIP on master: 14579a4 Add .gitignore
ok 21 - stash -u -- <untracked> doesnt print error
expecting success of 3905.22 'stash -u -- <untracked> leaves rest of working tree in place':
>tracked &&
git add tracked &&
>untracked &&
git stash push -u -- untracked &&
test_path_is_missing untracked &&
test_path_is_file tracked
Saved working directory and index state WIP on master: 14579a4 Add .gitignore
ok 22 - stash -u -- <untracked> leaves rest of working tree in place
expecting success of 3905.23 'stash -u -- <tracked> <untracked> clears changes in both':
>tracked &&
git add tracked &&
>untracked &&
git stash push -u -- tracked untracked &&
test_path_is_missing tracked &&
test_path_is_missing untracked
Saved working directory and index state WIP on master: 14579a4 Add .gitignore
ok 23 - stash -u -- <tracked> <untracked> clears changes in both
expecting success of 3905.24 'stash --all -- <ignored> stashes ignored file':
>ignored.d/bar &&
git stash push --all -- ignored.d/bar &&
test_path_is_missing ignored.d/bar
Saved working directory and index state WIP on master: 14579a4 Add .gitignore
ok 24 - stash --all -- <ignored> stashes ignored file
expecting success of 3905.25 'stash --all -- <tracked> <ignored> clears changes in both':
>tracked &&
git add tracked &&
>ignored.d/bar &&
git stash push --all -- tracked ignored.d/bar &&
test_path_is_missing tracked &&
test_path_is_missing ignored.d/bar
Saved working directory and index state WIP on master: 14579a4 Add .gitignore
ok 25 - stash --all -- <tracked> <ignored> clears changes in both
expecting success of 3905.26 'stash -u -- <ignored> leaves ignored file alone':
>ignored.d/bar &&
git stash push -u -- ignored.d/bar &&
test_path_is_file ignored.d/bar
No local changes to save
ok 26 - stash -u -- <ignored> leaves ignored file alone
expecting success of 3905.27 'stash -u -- <non-existent> shows no changes when there are none':
git stash push -u -- non-existent >actual &&
echo "No local changes to save" >expect &&
test_cmp expect actual
ok 27 - stash -u -- <non-existent> shows no changes when there are none
expecting success of 3905.28 'stash -u with globs':
>untracked.txt &&
git stash -u -- ":(glob)**/*.txt" &&
test_path_is_missing untracked.txt
Saved working directory and index state WIP on master: 14579a4 Add .gitignore
ok 28 - stash -u with globs
expecting success of 3905.29 'stash show --include-untracked shows untracked files':
git reset --hard &&
git clean -xf &&
>untracked &&
>tracked &&
git add tracked &&
empty_blob_oid=$(git rev-parse --short :tracked) &&
git stash -u &&
cat >expect <<-EOF &&
tracked | 0
untracked | 0
2 files changed, 0 insertions(+), 0 deletions(-)
EOF
git stash show --include-untracked >actual &&
test_cmp expect actual &&
git stash show -u >actual &&
test_cmp expect actual &&
git stash show --no-include-untracked --include-untracked >actual &&
test_cmp expect actual &&
git stash show --only-untracked --include-untracked >actual &&
test_cmp expect actual &&
git -c stash.showIncludeUntracked=true stash show >actual &&
test_cmp expect actual &&
cat >expect <<-EOF &&
diff --git a/tracked b/tracked
new file mode 100644
index 0000000..$empty_blob_oid
diff --git a/untracked b/untracked
new file mode 100644
index 0000000..$empty_blob_oid
EOF
git stash show -p --include-untracked >actual &&
test_cmp expect actual &&
git stash show --include-untracked -p >actual &&
test_cmp expect actual &&
git -c stash.showIncludeUntracked=true stash show -p >actual &&
test_cmp expect actual
HEAD is now at 14579a4 Add .gitignore
Removing actual
Removing bar
Removing expect
Removing foo
Removing foo bar
Removing ignored
Saved working directory and index state WIP on master: 14579a4 Add .gitignore
ok 29 - stash show --include-untracked shows untracked files
expecting success of 3905.30 'stash show --only-untracked only shows untracked files':
git reset --hard &&
git clean -xf &&
>untracked &&
>tracked &&
git add tracked &&
empty_blob_oid=$(git rev-parse --short :tracked) &&
git stash -u &&
cat >expect <<-EOF &&
untracked | 0
1 file changed, 0 insertions(+), 0 deletions(-)
EOF
git stash show --only-untracked >actual &&
test_cmp expect actual &&
git stash show --no-include-untracked --only-untracked >actual &&
test_cmp expect actual &&
git stash show --include-untracked --only-untracked >actual &&
test_cmp expect actual &&
cat >expect <<-EOF &&
diff --git a/untracked b/untracked
new file mode 100644
index 0000000..$empty_blob_oid
EOF
git stash show -p --only-untracked >actual &&
test_cmp expect actual &&
git stash show --only-untracked -p >actual &&
test_cmp expect actual
HEAD is now at 14579a4 Add .gitignore
Removing actual
Removing expect
Saved working directory and index state WIP on master: 14579a4 Add .gitignore
ok 30 - stash show --only-untracked only shows untracked files
expecting success of 3905.31 'stash show --no-include-untracked cancels --{include,only}-untracked':
git reset --hard &&
git clean -xf &&
>untracked &&
>tracked &&
git add tracked &&
git stash -u &&
cat >expect <<-EOF &&
tracked | 0
1 file changed, 0 insertions(+), 0 deletions(-)
EOF
git stash show --only-untracked --no-include-untracked >actual &&
test_cmp expect actual &&
git stash show --include-untracked --no-include-untracked >actual &&
test_cmp expect actual
HEAD is now at 14579a4 Add .gitignore
Removing actual
Removing expect
Saved working directory and index state WIP on master: 14579a4 Add .gitignore
ok 31 - stash show --no-include-untracked cancels --{include,only}-untracked
expecting success of 3905.32 'stash show --include-untracked errors on duplicate files':
git reset --hard &&
git clean -xf &&
>tracked &&
git add tracked &&
tree=$(git write-tree) &&
i_commit=$(git commit-tree -p HEAD -m "index on any-branch" "$tree") &&
test_when_finished "rm -f untracked_index" &&
u_commit=$(
GIT_INDEX_FILE="untracked_index" &&
export GIT_INDEX_FILE &&
git update-index --add tracked &&
u_tree=$(git write-tree) &&
git commit-tree -m "untracked files on any-branch" "$u_tree"
) &&
w_commit=$(git commit-tree -p HEAD -p "$i_commit" -p "$u_commit" -m "WIP on any-branch" "$tree") &&
test_must_fail git stash show --include-untracked "$w_commit" 2>err &&
test_i18ngrep "worktree and untracked commit have duplicate entries: tracked" err
HEAD is now at 14579a4 Add .gitignore
Removing actual
Removing expect
error: worktree and untracked commit have duplicate entries: tracked
ok 32 - stash show --include-untracked errors on duplicate files
expecting success of 3905.33 'stash show --{include,only}-untracked on stashes without untracked entries':
git reset --hard &&
git clean -xf &&
>tracked &&
git add tracked &&
git stash &&
git stash show >expect &&
git stash show --include-untracked >actual &&
test_cmp expect actual &&
git stash show --only-untracked >actual &&
test_must_be_empty actual
HEAD is now at 14579a4 Add .gitignore
Removing err
Saved working directory and index state WIP on master: 14579a4 Add .gitignore
ok 33 - stash show --{include,only}-untracked on stashes without untracked entries
expecting success of 3905.34 'stash -u ignores sub-repository':
test_when_finished "rm -rf sub-repo" &&
git init sub-repo &&
git stash -u
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3905-stash-include-untracked/sub-repo/.git/
Ignoring path sub-repo/
Saved working directory and index state WIP on master: 14579a4 Add .gitignore
ok 34 - stash -u ignores sub-repository
# passed all 34 test(s)
1..34
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3920-crlf-messages.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3920-crlf-messages/.git/
expecting success of 3920.1 'Setup refs with commit and tag messages using CRLF':
test_commit inital &&
create_crlf_refs
[master (root-commit) b6c1fc7] inital
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 inital.t
ok 1 - Setup refs with commit and tag messages using CRLF
expecting success of 3920.2 'branch: --verbose works with messages using CRLF':
rm -f expect &&
for branch in $LIB_CRLF_BRANCHES
do
printf " " >>expect &&
cat .crlf-subject-${branch}.txt >>expect &&
printf "\n" >>expect || return 1
done &&
git branch -v >tmp &&
# Remove first two columns, and the line for the currently checked out branch
current=$(git branch --show-current) &&
grep -v $current <tmp | awk "{\$1=\$2=\"\"}1" >actual &&
test_cmp expect actual
ok 2 - branch: --verbose works with messages using CRLF
expecting success of 3920.3 'branch: --format='%(contents:subject)' works with messages using CRLF':
rm -f expect &&
for ref in crlf crlf-empty-lines-after-subject crlf-two-line-subject crlf-two-line-subject-no-body crlf-two-line-subject-no-body-trailing-newline
do
cat .crlf-subject-"${ref}".txt >>expect &&
printf "\n" >>expect || return 1
done &&
git branch --list crlf* --format="%(contents:subject)" >actual &&
test_cmp expect actual
ok 3 - branch: --format='%(contents:subject)' works with messages using CRLF
expecting success of 3920.4 'branch: --format='%(contents:body)' works with messages using CRLF':
rm -f expect &&
for ref in crlf crlf-empty-lines-after-subject crlf-two-line-subject crlf-two-line-subject-no-body crlf-two-line-subject-no-body-trailing-newline
do
cat .crlf-body-"${ref}".txt >>expect &&
printf "\n" >>expect || return 1
done &&
git branch --list crlf* --format="%(contents:body)" >actual &&
test_cmp expect actual
ok 4 - branch: --format='%(contents:body)' works with messages using CRLF
expecting success of 3920.5 'branch: --format='%(contents)' works with messages using CRLF':
rm -f expect &&
for ref in crlf crlf-empty-lines-after-subject crlf-two-line-subject crlf-two-line-subject-no-body crlf-two-line-subject-no-body-trailing-newline
do
cat .crlf-message-"${ref}".txt >>expect &&
printf "\n" >>expect || return 1
done &&
git branch --list crlf* --format="%(contents)" >actual &&
test_cmp expect actual
ok 5 - branch: --format='%(contents)' works with messages using CRLF
expecting success of 3920.6 'tag: --format='%(contents:subject)' works with messages using CRLF':
rm -f expect &&
for ref in crlf crlf-empty-lines-after-subject crlf-two-line-subject crlf-two-line-subject-no-body crlf-two-line-subject-no-body-trailing-newline
do
cat .crlf-subject-"${ref}".txt >>expect &&
printf "\n" >>expect || return 1
done &&
git tag --list tag-crlf* --format="%(contents:subject)" >actual &&
test_cmp expect actual
ok 6 - tag: --format='%(contents:subject)' works with messages using CRLF
expecting success of 3920.7 'tag: --format='%(contents:body)' works with messages using CRLF':
rm -f expect &&
for ref in crlf crlf-empty-lines-after-subject crlf-two-line-subject crlf-two-line-subject-no-body crlf-two-line-subject-no-body-trailing-newline
do
cat .crlf-body-"${ref}".txt >>expect &&
printf "\n" >>expect || return 1
done &&
git tag --list tag-crlf* --format="%(contents:body)" >actual &&
test_cmp expect actual
ok 7 - tag: --format='%(contents:body)' works with messages using CRLF
expecting success of 3920.8 'tag: --format='%(contents)' works with messages using CRLF':
rm -f expect &&
for ref in crlf crlf-empty-lines-after-subject crlf-two-line-subject crlf-two-line-subject-no-body crlf-two-line-subject-no-body-trailing-newline
do
cat .crlf-message-"${ref}".txt >>expect &&
printf "\n" >>expect || return 1
done &&
git tag --list tag-crlf* --format="%(contents)" >actual &&
test_cmp expect actual
ok 8 - tag: --format='%(contents)' works with messages using CRLF
expecting success of 3920.9 'for-each-ref: --format='%(contents:subject)' works with messages using CRLF':
rm -f expect &&
for ref in crlf crlf-empty-lines-after-subject crlf-two-line-subject crlf-two-line-subject-no-body crlf-two-line-subject-no-body-trailing-newline
do
cat .crlf-subject-"${ref}".txt >>expect &&
printf "\n" >>expect || return 1
done &&
git for-each-ref refs/heads/crlf* --format="%(contents:subject)" >actual &&
test_cmp expect actual
ok 9 - for-each-ref: --format='%(contents:subject)' works with messages using CRLF
expecting success of 3920.10 'for-each-ref: --format='%(contents:body)' works with messages using CRLF':
rm -f expect &&
for ref in crlf crlf-empty-lines-after-subject crlf-two-line-subject crlf-two-line-subject-no-body crlf-two-line-subject-no-body-trailing-newline
do
cat .crlf-body-"${ref}".txt >>expect &&
printf "\n" >>expect || return 1
done &&
git for-each-ref refs/heads/crlf* --format="%(contents:body)" >actual &&
test_cmp expect actual
ok 10 - for-each-ref: --format='%(contents:body)' works with messages using CRLF
expecting success of 3920.11 'for-each-ref: --format='%(contents)' works with messages using CRLF':
rm -f expect &&
for ref in crlf crlf-empty-lines-after-subject crlf-two-line-subject crlf-two-line-subject-no-body crlf-two-line-subject-no-body-trailing-newline
do
cat .crlf-message-"${ref}".txt >>expect &&
printf "\n" >>expect || return 1
done &&
git for-each-ref refs/heads/crlf* --format="%(contents)" >actual &&
test_cmp expect actual
ok 11 - for-each-ref: --format='%(contents)' works with messages using CRLF
expecting success of 3920.12 'log: --oneline works with messages using CRLF':
for branch in $LIB_CRLF_BRANCHES
do
cat .crlf-subject-${branch}.txt >expect &&
printf "\n" >>expect &&
git log --oneline -1 ${branch} >tmp-branch &&
git log --oneline -1 tag-${branch} >tmp-tag &&
cut -d" " -f2- <tmp-branch >actual-branch &&
cut -d" " -f2- <tmp-tag >actual-tag &&
test_cmp expect actual-branch &&
test_cmp expect actual-tag || return 1
done
ok 12 - log: --oneline works with messages using CRLF
expecting success of 3920.13 'log: --format='%s' works with messages using CRLF':
rm -f expect &&
for ref in crlf crlf-empty-lines-after-subject crlf-two-line-subject crlf-two-line-subject-no-body crlf-two-line-subject-no-body-trailing-newline
do
cat .crlf-subject-"${ref}".txt >>expect &&
printf "\n" >>expect || return 1
done &&
git log --all --reverse --grep Subject --format="%s" >actual &&
test_cmp expect actual
ok 13 - log: --format='%s' works with messages using CRLF
expecting success of 3920.14 'log: --format='%b' works with messages using CRLF':
rm -f expect &&
for ref in crlf crlf-empty-lines-after-subject crlf-two-line-subject crlf-two-line-subject-no-body crlf-two-line-subject-no-body-trailing-newline
do
cat .crlf-body-"${ref}".txt >>expect &&
printf "\n" >>expect || return 1
done &&
git log --all --reverse --grep Subject --format="%b" >actual &&
test_cmp expect actual
ok 14 - log: --format='%b' works with messages using CRLF
expecting success of 3920.15 'log: --format='%B' works with messages using CRLF':
rm -f expect &&
for ref in crlf crlf-empty-lines-after-subject crlf-two-line-subject crlf-two-line-subject-no-body crlf-two-line-subject-no-body-trailing-newline
do
cat .crlf-message-"${ref}".txt >>expect &&
printf "\n" >>expect || return 1
done &&
git log --all --reverse --grep Subject --format="%B" >actual &&
test_cmp expect actual
ok 15 - log: --format='%B' works with messages using CRLF
expecting success of 3920.16 'show: --format='%s' works with messages using CRLF':
rm -f expect &&
for ref in crlf crlf-empty-lines-after-subject crlf-two-line-subject crlf-two-line-subject-no-body crlf-two-line-subject-no-body-trailing-newline
do
cat .crlf-subject-"${ref}".txt >>expect &&
printf "\n" >>expect || return 1
done &&
git show crlf crlf-empty-lines-after-subject crlf-two-line-subject crlf-two-line-subject-no-body crlf-two-line-subject-no-body-trailing-newline --format="%s" >actual &&
test_cmp expect actual
ok 16 - show: --format='%s' works with messages using CRLF
expecting success of 3920.17 'show: --format='%b' works with messages using CRLF':
rm -f expect &&
for ref in crlf crlf-empty-lines-after-subject crlf-two-line-subject crlf-two-line-subject-no-body crlf-two-line-subject-no-body-trailing-newline
do
cat .crlf-body-"${ref}".txt >>expect &&
printf "\n" >>expect || return 1
done &&
git show crlf crlf-empty-lines-after-subject crlf-two-line-subject crlf-two-line-subject-no-body crlf-two-line-subject-no-body-trailing-newline --format="%b" >actual &&
test_cmp expect actual
ok 17 - show: --format='%b' works with messages using CRLF
expecting success of 3920.18 'show: --format='%B' works with messages using CRLF':
rm -f expect &&
for ref in crlf crlf-empty-lines-after-subject crlf-two-line-subject crlf-two-line-subject-no-body crlf-two-line-subject-no-body-trailing-newline
do
cat .crlf-message-"${ref}".txt >>expect &&
printf "\n" >>expect || return 1
done &&
git show crlf crlf-empty-lines-after-subject crlf-two-line-subject crlf-two-line-subject-no-body crlf-two-line-subject-no-body-trailing-newline --format="%B" >actual &&
test_cmp expect actual
ok 18 - show: --format='%B' works with messages using CRLF
# passed all 18 test(s)
1..18
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4000-diff-format.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4000-diff-format/.git/
expecting success of 4000.1 'update-index --add two files with and without +x.':
git update-index --add path0 path1 path2/path3
ok 1 - update-index --add two files with and without +x.
expecting success of 4000.2 'git diff-files -p after editing work tree.':
git diff-files -p >actual
ok 2 - git diff-files -p after editing work tree.
expecting success of 4000.3 'validate git diff-files -p output.':
compare_diff_patch expected actual
ok 3 - validate git diff-files -p output.
expecting success of 4000.4 'git diff-files -s after editing work tree':
git diff-files -s >actual 2>err &&
test_must_be_empty actual &&
test_must_be_empty err
ok 4 - git diff-files -s after editing work tree
expecting success of 4000.5 'git diff-files --no-patch as synonym for -s':
git diff-files --no-patch >actual 2>err &&
test_must_be_empty actual &&
test_must_be_empty err
ok 5 - git diff-files --no-patch as synonym for -s
expecting success of 4000.6 'git diff-files --no-patch --patch shows the patch':
git diff-files --no-patch --patch >actual &&
compare_diff_patch expected actual
ok 6 - git diff-files --no-patch --patch shows the patch
expecting success of 4000.7 'git diff-files --no-patch --patch-with-raw shows the patch and raw data':
git diff-files --no-patch --patch-with-raw >actual &&
grep -q "^:100644 100755 .* $ZERO_OID M path0\$" actual &&
tail -n +4 actual >actual-patch &&
compare_diff_patch expected actual-patch
ok 7 - git diff-files --no-patch --patch-with-raw shows the patch and raw data
expecting success of 4000.8 'git diff-files --patch --no-patch does not show the patch':
git diff-files --patch --no-patch >actual 2>err &&
test_must_be_empty actual &&
test_must_be_empty err
ok 8 - git diff-files --patch --no-patch does not show the patch
expecting success of 4000.9 '--no-patch in 'git diff-files --no-patch --stat' is a no-op':
git diff-files --no-patch "--$format" >actual &&
git diff-files "--$format" >expect &&
test_cmp expect actual
ok 9 - --no-patch in 'git diff-files --no-patch --stat' is a no-op
expecting success of 4000.10 '--no-patch clears all previous ones':
git diff-files --$format -s -p >actual &&
git diff-files -p >expect &&
test_cmp expect actual
ok 10 - --no-patch clears all previous ones
expecting success of 4000.11 '--no-patch in 'git diff --no-patch --stat' is a no-op':
git diff --no-patch "--$format" >actual &&
git diff "--$format" >expect &&
test_cmp expect actual
ok 11 - --no-patch in 'git diff --no-patch --stat' is a no-op
expecting success of 4000.12 '--no-patch in 'git diff-files --no-patch --raw' is a no-op':
git diff-files --no-patch "--$format" >actual &&
git diff-files "--$format" >expect &&
test_cmp expect actual
ok 12 - --no-patch in 'git diff-files --no-patch --raw' is a no-op
expecting success of 4000.13 '--no-patch clears all previous ones':
git diff-files --$format -s -p >actual &&
git diff-files -p >expect &&
test_cmp expect actual
ok 13 - --no-patch clears all previous ones
expecting success of 4000.14 '--no-patch in 'git diff --no-patch --raw' is a no-op':
git diff --no-patch "--$format" >actual &&
git diff "--$format" >expect &&
test_cmp expect actual
ok 14 - --no-patch in 'git diff --no-patch --raw' is a no-op
expecting success of 4000.15 '--no-patch in 'git diff-files --no-patch --numstat' is a no-op':
git diff-files --no-patch "--$format" >actual &&
git diff-files "--$format" >expect &&
test_cmp expect actual
ok 15 - --no-patch in 'git diff-files --no-patch --numstat' is a no-op
expecting success of 4000.16 '--no-patch clears all previous ones':
git diff-files --$format -s -p >actual &&
git diff-files -p >expect &&
test_cmp expect actual
ok 16 - --no-patch clears all previous ones
expecting success of 4000.17 '--no-patch in 'git diff --no-patch --numstat' is a no-op':
git diff --no-patch "--$format" >actual &&
git diff "--$format" >expect &&
test_cmp expect actual
ok 17 - --no-patch in 'git diff --no-patch --numstat' is a no-op
expecting success of 4000.18 '--no-patch in 'git diff-files --no-patch --shortstat' is a no-op':
git diff-files --no-patch "--$format" >actual &&
git diff-files "--$format" >expect &&
test_cmp expect actual
ok 18 - --no-patch in 'git diff-files --no-patch --shortstat' is a no-op
expecting success of 4000.19 '--no-patch clears all previous ones':
git diff-files --$format -s -p >actual &&
git diff-files -p >expect &&
test_cmp expect actual
ok 19 - --no-patch clears all previous ones
expecting success of 4000.20 '--no-patch in 'git diff --no-patch --shortstat' is a no-op':
git diff --no-patch "--$format" >actual &&
git diff "--$format" >expect &&
test_cmp expect actual
ok 20 - --no-patch in 'git diff --no-patch --shortstat' is a no-op
expecting success of 4000.21 '--no-patch in 'git diff-files --no-patch --summary' is a no-op':
git diff-files --no-patch "--$format" >actual &&
git diff-files "--$format" >expect &&
test_cmp expect actual
ok 21 - --no-patch in 'git diff-files --no-patch --summary' is a no-op
expecting success of 4000.22 '--no-patch clears all previous ones':
git diff-files --$format -s -p >actual &&
git diff-files -p >expect &&
test_cmp expect actual
ok 22 - --no-patch clears all previous ones
expecting success of 4000.23 '--no-patch in 'git diff --no-patch --summary' is a no-op':
git diff --no-patch "--$format" >actual &&
git diff "--$format" >expect &&
test_cmp expect actual
ok 23 - --no-patch in 'git diff --no-patch --summary' is a no-op
expecting success of 4000.24 '--no-patch in 'git diff-files --no-patch --dirstat' is a no-op':
git diff-files --no-patch "--$format" >actual &&
git diff-files "--$format" >expect &&
test_cmp expect actual
ok 24 - --no-patch in 'git diff-files --no-patch --dirstat' is a no-op
expecting success of 4000.25 '--no-patch clears all previous ones':
git diff-files --$format -s -p >actual &&
git diff-files -p >expect &&
test_cmp expect actual
ok 25 - --no-patch clears all previous ones
expecting success of 4000.26 '--no-patch in 'git diff --no-patch --dirstat' is a no-op':
git diff --no-patch "--$format" >actual &&
git diff "--$format" >expect &&
test_cmp expect actual
ok 26 - --no-patch in 'git diff --no-patch --dirstat' is a no-op
expecting success of 4000.27 '--no-patch in 'git diff-files --no-patch --cumulative' is a no-op':
git diff-files --no-patch "--$format" >actual &&
git diff-files "--$format" >expect &&
test_cmp expect actual
ok 27 - --no-patch in 'git diff-files --no-patch --cumulative' is a no-op
expecting success of 4000.28 '--no-patch clears all previous ones':
git diff-files --$format -s -p >actual &&
git diff-files -p >expect &&
test_cmp expect actual
ok 28 - --no-patch clears all previous ones
expecting success of 4000.29 '--no-patch in 'git diff --no-patch --cumulative' is a no-op':
git diff --no-patch "--$format" >actual &&
git diff "--$format" >expect &&
test_cmp expect actual
ok 29 - --no-patch in 'git diff --no-patch --cumulative' is a no-op
expecting success of 4000.30 '--no-patch in 'git diff-files --no-patch --dirstat-by-file' is a no-op':
git diff-files --no-patch "--$format" >actual &&
git diff-files "--$format" >expect &&
test_cmp expect actual
ok 30 - --no-patch in 'git diff-files --no-patch --dirstat-by-file' is a no-op
expecting success of 4000.31 '--no-patch clears all previous ones':
git diff-files --$format -s -p >actual &&
git diff-files -p >expect &&
test_cmp expect actual
ok 31 - --no-patch clears all previous ones
expecting success of 4000.32 '--no-patch in 'git diff --no-patch --dirstat-by-file' is a no-op':
git diff --no-patch "--$format" >actual &&
git diff "--$format" >expect &&
test_cmp expect actual
ok 32 - --no-patch in 'git diff --no-patch --dirstat-by-file' is a no-op
expecting success of 4000.33 '--no-patch in 'git diff-files --no-patch --patch-with-raw' is a no-op':
git diff-files --no-patch "--$format" >actual &&
git diff-files "--$format" >expect &&
test_cmp expect actual
ok 33 - --no-patch in 'git diff-files --no-patch --patch-with-raw' is a no-op
expecting success of 4000.34 '--no-patch clears all previous ones':
git diff-files --$format -s -p >actual &&
git diff-files -p >expect &&
test_cmp expect actual
ok 34 - --no-patch clears all previous ones
expecting success of 4000.35 '--no-patch in 'git diff --no-patch --patch-with-raw' is a no-op':
git diff --no-patch "--$format" >actual &&
git diff "--$format" >expect &&
test_cmp expect actual
ok 35 - --no-patch in 'git diff --no-patch --patch-with-raw' is a no-op
expecting success of 4000.36 '--no-patch in 'git diff-files --no-patch --patch-with-stat' is a no-op':
git diff-files --no-patch "--$format" >actual &&
git diff-files "--$format" >expect &&
test_cmp expect actual
ok 36 - --no-patch in 'git diff-files --no-patch --patch-with-stat' is a no-op
expecting success of 4000.37 '--no-patch clears all previous ones':
git diff-files --$format -s -p >actual &&
git diff-files -p >expect &&
test_cmp expect actual
ok 37 - --no-patch clears all previous ones
expecting success of 4000.38 '--no-patch in 'git diff --no-patch --patch-with-stat' is a no-op':
git diff --no-patch "--$format" >actual &&
git diff "--$format" >expect &&
test_cmp expect actual
ok 38 - --no-patch in 'git diff --no-patch --patch-with-stat' is a no-op
expecting success of 4000.39 '--no-patch in 'git diff-files --no-patch --compact-summary' is a no-op':
git diff-files --no-patch "--$format" >actual &&
git diff-files "--$format" >expect &&
test_cmp expect actual
ok 39 - --no-patch in 'git diff-files --no-patch --compact-summary' is a no-op
expecting success of 4000.40 '--no-patch clears all previous ones':
git diff-files --$format -s -p >actual &&
git diff-files -p >expect &&
test_cmp expect actual
ok 40 - --no-patch clears all previous ones
expecting success of 4000.41 '--no-patch in 'git diff --no-patch --compact-summary' is a no-op':
git diff --no-patch "--$format" >actual &&
git diff "--$format" >expect &&
test_cmp expect actual
ok 41 - --no-patch in 'git diff --no-patch --compact-summary' is a no-op
# passed all 41 test(s)
1..41
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4001-diff-rename.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4001-diff-rename/.git/
expecting success of 4001.1 'setup':
cat >path0 <<-\EOF &&
Line 1
Line 2
Line 3
Line 4
Line 5
Line 6
Line 7
Line 8
Line 9
Line 10
line 11
Line 12
Line 13
Line 14
Line 15
EOF
cat >expected <<-\EOF &&
diff --git a/path0 b/path1
rename from path0
rename to path1
--- a/path0
+++ b/path1
@@ -8,7 +8,7 @@ Line 7
Line 8
Line 9
Line 10
-line 11
+Line 11
Line 12
Line 13
Line 14
EOF
cat >no-rename <<-\EOF
diff --git a/path0 b/path0
deleted file mode 100644
index fdbec44..0000000
--- a/path0
+++ /dev/null
@@ -1,15 +0,0 @@
-Line 1
-Line 2
-Line 3
-Line 4
-Line 5
-Line 6
-Line 7
-Line 8
-Line 9
-Line 10
-line 11
-Line 12
-Line 13
-Line 14
-Line 15
diff --git a/path1 b/path1
new file mode 100644
index 0000000..752c50e
--- /dev/null
+++ b/path1
@@ -0,0 +1,15 @@
+Line 1
+Line 2
+Line 3
+Line 4
+Line 5
+Line 6
+Line 7
+Line 8
+Line 9
+Line 10
+Line 11
+Line 12
+Line 13
+Line 14
+Line 15
EOF
ok 1 - setup
expecting success of 4001.2 'update-index --add a file.': git update-index --add path0
ok 2 - update-index --add a file.
expecting success of 4001.3 'write that tree.': tree=$(git write-tree) && echo $tree
ad8378482f032562f72403dd7c5bd607578a3f0e
ok 3 - write that tree.
expecting success of 4001.4 'renamed and edited the file.': git update-index --add --remove path0 path1
ok 4 - renamed and edited the file.
expecting success of 4001.5 'git diff-index -p -M after rename and editing.': git diff-index -p -M $tree >current
ok 5 - git diff-index -p -M after rename and editing.
expecting success of 4001.6 'validate the output.': compare_diff_patch current expected
ok 6 - validate the output.
expecting success of 4001.7 'test diff.renames=true':
git -c diff.renames=true diff --cached $tree >current &&
compare_diff_patch current expected
ok 7 - test diff.renames=true
expecting success of 4001.8 'test diff.renames=false':
git -c diff.renames=false diff --cached $tree >current &&
compare_diff_patch current no-rename
ok 8 - test diff.renames=false
expecting success of 4001.9 'test diff.renames unset':
git diff --cached $tree >current &&
compare_diff_patch current expected
ok 9 - test diff.renames unset
expecting success of 4001.10 'favour same basenames over different ones':
cp path1 another-path &&
git add another-path &&
git commit -m 1 &&
git rm path1 &&
mkdir subdir &&
git mv another-path subdir/path1 &&
git status >out &&
test_i18ngrep "renamed: .*path1 -> subdir/path1" out
[master (root-commit) 7846fdf] 1
Author: A U Thor <author@example.com>
2 files changed, 30 insertions(+)
create mode 100644 another-path
create mode 100644 path1
rm 'path1'
renamed: path1 -> subdir/path1
ok 10 - favour same basenames over different ones
expecting success of 4001.11 'test diff.renames=true for git status':
git -c diff.renames=true status >out &&
test_i18ngrep "renamed: .*path1 -> subdir/path1" out
renamed: path1 -> subdir/path1
ok 11 - test diff.renames=true for git status
expecting success of 4001.12 'test diff.renames=false for git status':
git -c diff.renames=false status >out &&
test_i18ngrep ! "renamed: .*path1 -> subdir/path1" out &&
test_i18ngrep "new file: .*subdir/path1" out &&
test_i18ngrep "deleted: .*[^/]path1" out
new file: subdir/path1
deleted: path1
ok 12 - test diff.renames=false for git status
expecting success of 4001.13 'favour same basenames even with minor differences':
git show HEAD:path1 | sed "s/15/16/" > subdir/path1 &&
git status >out &&
test_i18ngrep "renamed: .*path1 -> subdir/path1" out
renamed: path1 -> subdir/path1
ok 13 - favour same basenames even with minor differences
expecting success of 4001.14 'two files with same basename and same content':
git reset --hard &&
mkdir -p dir/A dir/B &&
cp path1 dir/A/file &&
cp path1 dir/B/file &&
git add dir &&
git commit -m 2 &&
git mv dir other-dir &&
git status >out &&
test_i18ngrep "renamed: .*dir/A/file -> other-dir/A/file" out
HEAD is now at 7846fdf 1
[master 05f0b7a] 2
Author: A U Thor <author@example.com>
2 files changed, 30 insertions(+)
create mode 100644 dir/A/file
create mode 100644 dir/B/file
renamed: dir/A/file -> other-dir/A/file
ok 14 - two files with same basename and same content
expecting success of 4001.15 'setup for many rename source candidates':
git reset --hard &&
for i in 0 1 2 3 4 5 6 7 8 9;
do
for j in 0 1 2 3 4 5 6 7 8 9;
do
echo "$i$j" >"path$i$j" || return 1
done
done &&
git add "path??" &&
test_tick &&
git commit -m "hundred" &&
(cat path1 && echo new) >new-path &&
echo old >>path1 &&
git add new-path path1 &&
git diff -l 4 -C -C --cached --name-status >actual 2>actual.err &&
sed -e "s/^\([CM]\)[0-9]* /\1 /" actual >actual.munged &&
cat >expect <<-EOF &&
C path1 new-path
M path1
EOF
test_cmp expect actual.munged &&
grep warning actual.err
HEAD is now at 05f0b7a 2
[master c0eb1c8] hundred
Author: A U Thor <author@example.com>
100 files changed, 100 insertions(+)
create mode 100644 path00
create mode 100644 path01
create mode 100644 path02
create mode 100644 path03
create mode 100644 path04
create mode 100644 path05
create mode 100644 path06
create mode 100644 path07
create mode 100644 path08
create mode 100644 path09
create mode 100644 path10
create mode 100644 path11
create mode 100644 path12
create mode 100644 path13
create mode 100644 path14
create mode 100644 path15
create mode 100644 path16
create mode 100644 path17
create mode 100644 path18
create mode 100644 path19
create mode 100644 path20
create mode 100644 path21
create mode 100644 path22
create mode 100644 path23
create mode 100644 path24
create mode 100644 path25
create mode 100644 path26
create mode 100644 path27
create mode 100644 path28
create mode 100644 path29
create mode 100644 path30
create mode 100644 path31
create mode 100644 path32
create mode 100644 path33
create mode 100644 path34
create mode 100644 path35
create mode 100644 path36
create mode 100644 path37
create mode 100644 path38
create mode 100644 path39
create mode 100644 path40
create mode 100644 path41
create mode 100644 path42
create mode 100644 path43
create mode 100644 path44
create mode 100644 path45
create mode 100644 path46
create mode 100644 path47
create mode 100644 path48
create mode 100644 path49
create mode 100644 path50
create mode 100644 path51
create mode 100644 path52
create mode 100644 path53
create mode 100644 path54
create mode 100644 path55
create mode 100644 path56
create mode 100644 path57
create mode 100644 path58
create mode 100644 path59
create mode 100644 path60
create mode 100644 path61
create mode 100644 path62
create mode 100644 path63
create mode 100644 path64
create mode 100644 path65
create mode 100644 path66
create mode 100644 path67
create mode 100644 path68
create mode 100644 path69
create mode 100644 path70
create mode 100644 path71
create mode 100644 path72
create mode 100644 path73
create mode 100644 path74
create mode 100644 path75
create mode 100644 path76
create mode 100644 path77
create mode 100644 path78
create mode 100644 path79
create mode 100644 path80
create mode 100644 path81
create mode 100644 path82
create mode 100644 path83
create mode 100644 path84
create mode 100644 path85
create mode 100644 path86
create mode 100644 path87
create mode 100644 path88
create mode 100644 path89
create mode 100644 path90
create mode 100644 path91
create mode 100644 path92
create mode 100644 path93
create mode 100644 path94
create mode 100644 path95
create mode 100644 path96
create mode 100644 path97
create mode 100644 path98
create mode 100644 path99
warning: only found copies from modified paths due to too many files.
warning: you may want to set your diff.renameLimit variable to at least 104 and retry the command.
ok 15 - setup for many rename source candidates
expecting success of 4001.16 'rename pretty print with nothing in common':
mkdir -p a/b/ &&
: >a/b/c &&
git add a/b/c &&
git commit -m "create a/b/c" &&
mkdir -p c/b/ &&
git mv a/b/c c/b/a &&
git commit -m "a/b/c -> c/b/a" &&
git diff -M --summary HEAD^ HEAD >output &&
test_i18ngrep " a/b/c => c/b/a " output &&
git diff -M --stat HEAD^ HEAD >output &&
test_i18ngrep " a/b/c => c/b/a " output
[master 5d0663c] create a/b/c
Author: A U Thor <author@example.com>
3 files changed, 17 insertions(+)
create mode 100644 a/b/c
create mode 100644 new-path
[master 24096e6] a/b/c -> c/b/a
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
rename a/b/c => c/b/a (100%)
rename a/b/c => c/b/a (100%)
a/b/c => c/b/a | 0
ok 16 - rename pretty print with nothing in common
expecting success of 4001.17 'rename pretty print with common prefix':
mkdir -p c/d &&
git mv c/b/a c/d/e &&
git commit -m "c/b/a -> c/d/e" &&
git diff -M --summary HEAD^ HEAD >output &&
test_i18ngrep " c/{b/a => d/e} " output &&
git diff -M --stat HEAD^ HEAD >output &&
test_i18ngrep " c/{b/a => d/e} " output
[master e15a3a1] c/b/a -> c/d/e
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
rename c/{b/a => d/e} (100%)
rename c/{b/a => d/e} (100%)
c/{b/a => d/e} | 0
ok 17 - rename pretty print with common prefix
expecting success of 4001.18 'rename pretty print with common suffix':
mkdir d &&
git mv c/d/e d/e &&
git commit -m "c/d/e -> d/e" &&
git diff -M --summary HEAD^ HEAD >output &&
test_i18ngrep " {c/d => d}/e " output &&
git diff -M --stat HEAD^ HEAD >output &&
test_i18ngrep " {c/d => d}/e " output
[master aafbd77] c/d/e -> d/e
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
rename {c/d => d}/e (100%)
rename {c/d => d}/e (100%)
{c/d => d}/e | 0
ok 18 - rename pretty print with common suffix
expecting success of 4001.19 'rename pretty print with common prefix and suffix':
mkdir d/f &&
git mv d/e d/f/e &&
git commit -m "d/e -> d/f/e" &&
git diff -M --summary HEAD^ HEAD >output &&
test_i18ngrep " d/{ => f}/e " output &&
git diff -M --stat HEAD^ HEAD >output &&
test_i18ngrep " d/{ => f}/e " output
[master 28b412a] d/e -> d/f/e
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
rename d/{ => f}/e (100%)
rename d/{ => f}/e (100%)
d/{ => f}/e | 0
ok 19 - rename pretty print with common prefix and suffix
expecting success of 4001.20 'rename pretty print common prefix and suffix overlap':
mkdir d/f/f &&
git mv d/f/e d/f/f/e &&
git commit -m "d/f/e d/f/f/e" &&
git diff -M --summary HEAD^ HEAD >output &&
test_i18ngrep " d/f/{ => f}/e " output &&
git diff -M --stat HEAD^ HEAD >output &&
test_i18ngrep " d/f/{ => f}/e " output
[master 272fc8d] d/f/e d/f/f/e
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
rename d/f/{ => f}/e (100%)
rename d/f/{ => f}/e (100%)
d/f/{ => f}/e | 0
ok 20 - rename pretty print common prefix and suffix overlap
expecting success of 4001.21 'diff-tree -l0 defaults to a big rename limit, not zero':
test_write_lines line1 line2 line3 >myfile &&
git add myfile &&
git commit -m x &&
test_write_lines line1 line2 line4 >myotherfile &&
git rm myfile &&
git add myotherfile &&
git commit -m x &&
git diff-tree -M -l0 HEAD HEAD^ >actual &&
# Verify that a rename from myotherfile to myfile was detected
grep "myotherfile.*myfile" actual
[master a3d2e59] x
Author: A U Thor <author@example.com>
1 file changed, 3 insertions(+)
create mode 100644 myfile
rm 'myfile'
[master ff4cac0] x
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
rename myfile => myotherfile (66%)
:100644 100644 cc8654bf0610eedacc646edaf4c1cbda59454836 83db48f84ec878fbfb30b46d16630e944e34f205 R066 myotherfile myfile
ok 21 - diff-tree -l0 defaults to a big rename limit, not zero
expecting success of 4001.22 'basename similarity vs best similarity':
mkdir subdir &&
test_write_lines line1 line2 line3 line4 line5 \
line6 line7 line8 line9 line10 >subdir/file.txt &&
git add subdir/file.txt &&
git commit -m "base txt" &&
git rm subdir/file.txt &&
test_write_lines line1 line2 line3 line4 line5 \
line6 line7 line8 >file.txt &&
test_write_lines line1 line2 line3 line4 line5 \
line6 line7 line8 line9 >file.md &&
git add file.txt file.md &&
git commit -a -m "rename" &&
git diff-tree -r -M --name-status HEAD^ HEAD >actual &&
# subdir/file.txt is 88% similar to file.md, 78% similar to file.txt,
# but since same basenames are checked first...
cat >expected <<-\EOF &&
A file.md
R078 subdir/file.txt file.txt
EOF
test_cmp expected actual
[master 09a1aec] base txt
Author: A U Thor <author@example.com>
1 file changed, 10 insertions(+)
create mode 100644 subdir/file.txt
rm 'subdir/file.txt'
[master 72a9c67] rename
Author: A U Thor <author@example.com>
2 files changed, 9 insertions(+), 2 deletions(-)
create mode 100644 file.md
rename subdir/file.txt => file.txt (78%)
ok 22 - basename similarity vs best similarity
# passed all 22 test(s)
1..22
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4003-diff-rename-1.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4003-diff-rename-1/.git/
expecting success of 4003.1 'prepare reference tree':
COPYING_test_data >COPYING &&
echo frotz >rezrov &&
git update-index --add COPYING rezrov &&
tree=$(git write-tree) &&
echo $tree
f7f2b494dd94f6acf05bc19174516b590236eb2d
ok 1 - prepare reference tree
expecting success of 4003.2 'prepare work tree':
sed -e s/HOWEVER/However/ <COPYING >COPYING.1 &&
sed -e s/GPL/G.P.L/g <COPYING >COPYING.2 &&
rm -f COPYING &&
git update-index --add --remove COPYING COPYING.?
ok 2 - prepare work tree
expecting success of 4003.3 'validate output from rename/copy detection (#1)':
compare_diff_patch current expected
ok 3 - validate output from rename/copy detection (#1)
expecting success of 4003.4 'prepare work tree again':
mv COPYING.2 COPYING &&
git update-index --add --remove COPYING COPYING.1 COPYING.2
ok 4 - prepare work tree again
expecting success of 4003.5 'validate output from rename/copy detection (#2)':
compare_diff_patch current expected
ok 5 - validate output from rename/copy detection (#2)
expecting success of 4003.6 'prepare work tree once again':
COPYING_test_data >COPYING &&
git update-index --add --remove COPYING COPYING.1
ok 6 - prepare work tree once again
expecting success of 4003.7 'validate output from rename/copy detection (#3)':
compare_diff_patch current expected
ok 7 - validate output from rename/copy detection (#3)
# passed all 7 test(s)
1..7
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4004-diff-rename-symlink.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4004-diff-rename-symlink/.git/
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
expecting success of 4004.1 'prepare reference tree':
echo xyzzy | tr -d \\012 >yomin &&
ln -s xyzzy frotz &&
git update-index --add frotz yomin &&
tree=$(git write-tree) &&
echo $tree
e8a7292168115b2c189b56bd500aa179ca8d69ba
ok 1 - prepare reference tree
expecting success of 4004.2 'prepare work tree':
mv frotz rezrov &&
rm -f yomin &&
ln -s xyzzy nitfol &&
ln -s xzzzy bozbar &&
git update-index --add --remove frotz rezrov nitfol bozbar yomin
ok 2 - prepare work tree
expecting success of 4004.3 'setup diff output':
GIT_DIFF_OPTS=--unified=0 git diff-index -C -p $tree >current &&
cat >expected <<\EOF
diff --git a/bozbar b/bozbar
new file mode 120000
--- /dev/null
+++ b/bozbar
@@ -0,0 +1 @@
+xzzzy
\ No newline at end of file
diff --git a/frotz b/nitfol
similarity index 100%
copy from frotz
copy to nitfol
diff --git a/frotz b/rezrov
similarity index 100%
rename from frotz
rename to rezrov
diff --git a/yomin b/yomin
deleted file mode 100644
--- a/yomin
+++ /dev/null
@@ -1 +0,0 @@
-xyzzy
\ No newline at end of file
EOF
ok 3 - setup diff output
expecting success of 4004.4 'validate diff output':
compare_diff_patch current expected
ok 4 - validate diff output
# passed all 4 test(s)
1..4
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4002-diff-basic.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4002-diff-basic/.git/
expecting success of 4002.1 'adding test file NN and Z/NN':
git update-index --add $p &&
git update-index --add Z/$p
ok 1 - adding test file NN and Z/NN
expecting success of 4002.2 'adding test file ND and Z/ND':
git update-index --add $p &&
git update-index --add Z/$p
ok 2 - adding test file ND and Z/ND
expecting success of 4002.3 'adding test file NM and Z/NM':
git update-index --add $p &&
git update-index --add Z/$p
ok 3 - adding test file NM and Z/NM
expecting success of 4002.4 'adding test file DN and Z/DN':
git update-index --add $p &&
git update-index --add Z/$p
ok 4 - adding test file DN and Z/DN
expecting success of 4002.5 'adding test file DD and Z/DD':
git update-index --add $p &&
git update-index --add Z/$p
ok 5 - adding test file DD and Z/DD
expecting success of 4002.6 'adding test file DM and Z/DM':
git update-index --add $p &&
git update-index --add Z/$p
ok 6 - adding test file DM and Z/DM
expecting success of 4002.7 'adding test file MN and Z/MN':
git update-index --add $p &&
git update-index --add Z/$p
ok 7 - adding test file MN and Z/MN
expecting success of 4002.8 'adding test file MD and Z/MD':
git update-index --add $p &&
git update-index --add Z/$p
ok 8 - adding test file MD and Z/MD
expecting success of 4002.9 'adding test file MM and Z/MM':
git update-index --add $p &&
git update-index --add Z/$p
ok 9 - adding test file MM and Z/MM
expecting success of 4002.10 'adding test file SS':
git update-index --add SS
ok 10 - adding test file SS
expecting success of 4002.11 'adding test file TT':
git update-index --add TT
ok 11 - adding test file TT
expecting success of 4002.12 'prepare initial tree':
tree_O=$(git write-tree)
ok 12 - prepare initial tree
expecting success of 4002.13 'change in branch A (removal)':
git update-index --remove $to_remove
ok 13 - change in branch A (removal)
expecting success of 4002.14 'change in branch A (modification)':
git update-index $p
ok 14 - change in branch A (modification)
expecting success of 4002.15 'change in branch A (modification)':
git update-index $p
ok 15 - change in branch A (modification)
expecting success of 4002.16 'change in branch A (modification)':
git update-index $p
ok 16 - change in branch A (modification)
expecting success of 4002.17 'change in branch A (modification)':
git update-index $p
ok 17 - change in branch A (modification)
expecting success of 4002.18 'change in branch A (modification)':
git update-index $p
ok 18 - change in branch A (modification)
expecting success of 4002.19 'change in branch A (modification)':
git update-index $p
ok 19 - change in branch A (modification)
expecting success of 4002.20 'change in branch A (addition)':
git update-index --add $p
ok 20 - change in branch A (addition)
expecting success of 4002.21 'change in branch A (addition)':
git update-index --add $p
ok 21 - change in branch A (addition)
expecting success of 4002.22 'change in branch A (addition)':
git update-index --add $p
ok 22 - change in branch A (addition)
expecting success of 4002.23 'change in branch A (addition)':
git update-index --add $p
ok 23 - change in branch A (addition)
expecting success of 4002.24 'change in branch A (addition)':
git update-index --add LL &&
git update-index SS
ok 24 - change in branch A (addition)
expecting success of 4002.25 'change in branch A (edit)':
git update-index TT
ok 25 - change in branch A (edit)
expecting success of 4002.26 'change in branch A (change file to directory)':
git update-index --add DF/DF
ok 26 - change in branch A (change file to directory)
expecting success of 4002.27 'recording branch A tree':
tree_A=$(git write-tree)
ok 27 - recording branch A tree
expecting success of 4002.28 'reading original tree and checking out':
git read-tree $tree_O &&
git checkout-index -a
ok 28 - reading original tree and checking out
expecting success of 4002.29 'change in branch B (removal)':
git update-index --remove $to_remove
ok 29 - change in branch B (removal)
expecting success of 4002.30 'change in branch B (modification)':
git update-index $p
ok 30 - change in branch B (modification)
expecting success of 4002.31 'change in branch B (modification)':
git update-index $p
ok 31 - change in branch B (modification)
expecting success of 4002.32 'change in branch B (modification)':
git update-index $p
ok 32 - change in branch B (modification)
expecting success of 4002.33 'change in branch B (modification)':
git update-index $p
ok 33 - change in branch B (modification)
expecting success of 4002.34 'change in branch B (modification)':
git update-index $p
ok 34 - change in branch B (modification)
expecting success of 4002.35 'change in branch B (modification)':
git update-index $p
ok 35 - change in branch B (modification)
expecting success of 4002.36 'change in branch B (addition)':
git update-index --add $p
ok 36 - change in branch B (addition)
expecting success of 4002.37 'change in branch B (addition)':
git update-index --add $p
ok 37 - change in branch B (addition)
expecting success of 4002.38 'change in branch B (addition)':
git update-index --add $p
ok 38 - change in branch B (addition)
expecting success of 4002.39 'change in branch B (addition)':
git update-index --add $p
ok 39 - change in branch B (addition)
expecting success of 4002.40 'change in branch B (addition and modification)':
git update-index --add LL &&
git update-index SS
ok 40 - change in branch B (addition and modification)
expecting success of 4002.41 'change in branch B (modification)':
git update-index TT
ok 41 - change in branch B (modification)
expecting success of 4002.42 'change in branch B (addition of a file to conflict with directory)':
git update-index --add DF
ok 42 - change in branch B (addition of a file to conflict with directory)
expecting success of 4002.43 'recording branch B tree':
tree_B=$(git write-tree)
ok 43 - recording branch B tree
expecting success of 4002.44 'keep contents of 3 trees for easy access':
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 of 4002.45 'diff-tree of known trees.':
git diff-tree $tree_O $tree_A >.test-a &&
cmp -s .test-a .test-plain-OA
ok 45 - diff-tree of known trees.
expecting success of 4002.46 'diff-tree of known trees.':
git diff-tree -r $tree_O $tree_A >.test-a &&
cmp -s .test-a .test-recursive-OA
ok 46 - diff-tree of known trees.
expecting success of 4002.47 'diff-tree of known trees.':
git diff-tree $tree_O $tree_B >.test-a &&
cmp -s .test-a .test-plain-OB
ok 47 - diff-tree of known trees.
expecting success of 4002.48 'diff-tree of known trees.':
git diff-tree -r $tree_O $tree_B >.test-a &&
cmp -s .test-a .test-recursive-OB
ok 48 - diff-tree of known trees.
expecting success of 4002.49 'diff-tree of known trees.':
git diff-tree $tree_A $tree_B >.test-a &&
cmp -s .test-a .test-plain-AB
ok 49 - diff-tree of known trees.
expecting success of 4002.50 'diff-tree of known trees.':
git diff-tree -r $tree_A $tree_B >.test-a &&
cmp -s .test-a .test-recursive-AB
ok 50 - diff-tree of known trees.
expecting success of 4002.51 'diff-tree --stdin of known trees.':
echo $tree_A $tree_B | git diff-tree --stdin > .test-a &&
echo $tree_A $tree_B > .test-plain-ABx &&
cat .test-plain-AB >> .test-plain-ABx &&
cmp -s .test-a .test-plain-ABx
ok 51 - diff-tree --stdin of known trees.
expecting success of 4002.52 'diff-tree --stdin of known trees.':
echo $tree_A $tree_B | git diff-tree -r --stdin > .test-a &&
echo $tree_A $tree_B > .test-recursive-ABx &&
cat .test-recursive-AB >> .test-recursive-ABx &&
cmp -s .test-a .test-recursive-ABx
ok 52 - diff-tree --stdin of known trees.
expecting success of 4002.53 'diff-cache O with A in cache':
git read-tree $tree_A &&
git diff-index --cached $tree_O >.test-a &&
cmp -s .test-a .test-recursive-OA
ok 53 - diff-cache O with A in cache
expecting success of 4002.54 'diff-cache O with B in cache':
git read-tree $tree_B &&
git diff-index --cached $tree_O >.test-a &&
cmp -s .test-a .test-recursive-OB
ok 54 - diff-cache O with B in cache
expecting success of 4002.55 'diff-cache A with B in cache':
git read-tree $tree_B &&
git diff-index --cached $tree_A >.test-a &&
cmp -s .test-a .test-recursive-AB
ok 55 - diff-cache A with B in cache
expecting success of 4002.56 'diff-files with O in cache and A checked out':
rm -fr Z [A-Z][A-Z] &&
git read-tree $tree_A &&
git checkout-index -f -a &&
git read-tree --reset $tree_O &&
test_must_fail git update-index --refresh -q &&
git diff-files >.test-a &&
cmp_diff_files_output .test-a .test-recursive-OA
DD: needs update
DM: needs update
DN: needs update
MD: needs update
MM: needs update
MN: needs update
SS: needs update
TT: needs update
Z/DD: needs update
Z/DM: needs update
Z/DN: needs update
Z/MD: needs update
Z/MM: needs update
Z/MN: needs update
ok 56 - diff-files with O in cache and A checked out
expecting success of 4002.57 'diff-files with O in cache and B checked out':
rm -fr Z [A-Z][A-Z] &&
git read-tree $tree_B &&
git checkout-index -f -a &&
git read-tree --reset $tree_O &&
test_must_fail git update-index --refresh -q &&
git diff-files >.test-a &&
cmp_diff_files_output .test-a .test-recursive-OB
DD: needs update
DM: needs update
MD: needs update
MM: needs update
ND: needs update
NM: needs update
SS: needs update
TT: needs update
Z/DD: needs update
Z/DM: needs update
Z/MD: needs update
Z/MM: needs update
Z/ND: needs update
Z/NM: needs update
ok 57 - diff-files with O in cache and B checked out
expecting success of 4002.58 'diff-files with A in cache and B checked out':
rm -fr Z [A-Z][A-Z] &&
git read-tree $tree_B &&
git checkout-index -f -a &&
git read-tree --reset $tree_A &&
test_must_fail git update-index --refresh -q &&
git diff-files >.test-a &&
cmp_diff_files_output .test-a .test-recursive-AB
AA: needs update
AN: needs update
DF/DF: needs update
MD: needs update
MM: needs update
MN: needs update
ND: needs update
NM: needs update
TT: needs update
Z/AA: needs update
Z/AN: needs update
Z/MD: needs update
Z/MM: needs update
Z/MN: needs update
Z/ND: needs update
Z/NM: needs update
ok 58 - diff-files with A in cache and B checked out
expecting success of 4002.59 'diff-tree O A == diff-tree -R A O':
git diff-tree $tree_O $tree_A >.test-a &&
git diff-tree -R $tree_A $tree_O >.test-b &&
cmp -s .test-a .test-b
ok 59 - diff-tree O A == diff-tree -R A O
expecting success of 4002.60 'diff-tree -r O A == diff-tree -r -R A O':
git diff-tree -r $tree_O $tree_A >.test-a &&
git diff-tree -r -R $tree_A $tree_O >.test-b &&
cmp -s .test-a .test-b
ok 60 - diff-tree -r O A == diff-tree -r -R A O
expecting success of 4002.61 'diff-tree B A == diff-tree -R A B':
git diff-tree $tree_B $tree_A >.test-a &&
git diff-tree -R $tree_A $tree_B >.test-b &&
cmp -s .test-a .test-b
ok 61 - diff-tree B A == diff-tree -R A B
expecting success of 4002.62 'diff-tree -r B A == diff-tree -r -R A B':
git diff-tree -r $tree_B $tree_A >.test-a &&
git diff-tree -r -R $tree_A $tree_B >.test-b &&
cmp -s .test-a .test-b
ok 62 - diff-tree -r B A == diff-tree -r -R A B
expecting success of 4002.63 'diff can read from stdin':
test_must_fail git diff --no-index -- MN - < NN |
grep -v "^index" | sed "s#/-#/NN#" >.test-a &&
test_must_fail git diff --no-index -- MN NN |
grep -v "^index" >.test-b &&
test_cmp .test-a .test-b
ok 63 - diff can read from stdin
# passed all 63 test(s)
1..63
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4005-diff-rename-2.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4005-diff-rename-2/.git/
expecting success of 4005.1 'setup reference tree':
COPYING_test_data >COPYING &&
echo frotz >rezrov &&
git update-index --add COPYING rezrov &&
tree=$(git write-tree) &&
echo $tree &&
sed -e "s/HOWEVER/However/" <COPYING >COPYING.1 &&
sed -e "s/GPL/G.P.L/g" <COPYING >COPYING.2 &&
origoid=$(git hash-object COPYING) &&
oid1=$(git hash-object COPYING.1) &&
oid2=$(git hash-object COPYING.2)
f7f2b494dd94f6acf05bc19174516b590236eb2d
ok 1 - setup reference tree
expecting success of 4005.2 'validate output from rename/copy detection (#1)':
rm -f COPYING &&
git update-index --add --remove COPYING COPYING.? &&
cat <<-EOF >expected &&
:100644 100644 $origoid $oid1 C1234 COPYING COPYING.1
:100644 100644 $origoid $oid2 R1234 COPYING COPYING.2
EOF
git diff-index -C $tree >current &&
compare_diff_raw expected current
ok 2 - validate output from rename/copy detection (#1)
expecting success of 4005.3 'validate output from rename/copy detection (#2)':
mv COPYING.2 COPYING &&
git update-index --add --remove COPYING COPYING.1 COPYING.2 &&
cat <<-EOF >expected &&
:100644 100644 $origoid $oid2 M COPYING
:100644 100644 $origoid $oid1 C1234 COPYING COPYING.1
EOF
git diff-index -C $tree >current &&
compare_diff_raw current expected
ok 3 - validate output from rename/copy detection (#2)
expecting success of 4005.4 'validate output from rename/copy detection (#3)':
COPYING_test_data >COPYING &&
git update-index --add --remove COPYING COPYING.1 &&
cat <<-EOF >expected &&
:100644 100644 $origoid $oid1 C1234 COPYING COPYING.1
EOF
git diff-index -C --find-copies-harder $tree >current &&
compare_diff_raw current expected
ok 4 - validate output from rename/copy detection (#3)
# passed all 4 test(s)
1..4
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4006-diff-mode.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4006-diff-mode/.git/
expecting success of 4006.1 'setup':
echo frotz >rezrov &&
git update-index --add rezrov &&
tree=$(git write-tree) &&
echo $tree
5189e2f1ba2c164fa2006e4f8f4e4ec56f15291e
ok 1 - setup
expecting success of 4006.2 'chmod':
test_chmod +x rezrov &&
git diff-index $tree >current &&
sed -e "$sed_script" <current >check &&
echo ":100644 100755 X X M rezrov" >expected &&
test_cmp expected check
ok 2 - chmod
expecting success of 4006.3 'prepare binary file':
git commit -m one &&
test_commit --printf two binbin "\00\01\02\03\04\05\06"
[master (root-commit) d232af0] one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100755 rezrov
[master a89ae18] two
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 binbin
ok 3 - prepare binary file
expecting success of 4006.4 '--stat output after text chmod':
test_chmod -x rezrov &&
cat >expect <<-\EOF &&
rezrov | 0
1 file changed, 0 insertions(+), 0 deletions(-)
EOF
git diff HEAD --stat >actual &&
test_cmp expect actual
ok 4 - --stat output after text chmod
expecting success of 4006.5 '--shortstat output after text chmod':
tail -n 1 <expect >expect.short &&
git diff HEAD --shortstat >actual &&
test_cmp expect.short actual
ok 5 - --shortstat output after text chmod
expecting success of 4006.6 '--stat output after binary chmod':
test_chmod +x binbin &&
cat >expect <<-EOF &&
binbin | Bin
rezrov | 0
2 files changed, 0 insertions(+), 0 deletions(-)
EOF
git diff HEAD --stat >actual &&
test_cmp expect actual
ok 6 - --stat output after binary chmod
expecting success of 4006.7 '--shortstat output after binary chmod':
tail -n 1 <expect >expect.short &&
git diff HEAD --shortstat >actual &&
test_cmp expect.short actual
ok 7 - --shortstat output after binary chmod
# passed all 7 test(s)
1..7
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4007-rename-3.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4007-rename-3/.git/
expecting success of 4007.1 'prepare reference tree':
mkdir path0 path1 &&
COPYING_test_data >path0/COPYING &&
git update-index --add path0/COPYING &&
tree=$(git write-tree) &&
blob=$(git rev-parse :path0/COPYING)
ok 1 - prepare reference tree
expecting success of 4007.2 'prepare work tree':
cp path0/COPYING path1/COPYING &&
git update-index --add --remove path0/COPYING path1/COPYING
ok 2 - prepare work tree
expecting success of 4007.3 'copy detection':
git diff-index -C --find-copies-harder $tree >current &&
compare_diff_raw current expected
ok 3 - copy detection
expecting success of 4007.4 'copy detection, cached':
git diff-index -C --find-copies-harder --cached $tree >current &&
compare_diff_raw current expected
ok 4 - copy detection, cached
expecting success of 4007.5 'copy, limited to a subtree':
git diff-index -C --find-copies-harder $tree path1 >current &&
compare_diff_raw current expected
ok 5 - copy, limited to a subtree
expecting success of 4007.6 'tweak work tree':
rm -f path0/COPYING &&
git update-index --remove path0/COPYING
ok 6 - tweak work tree
expecting success of 4007.7 'rename detection':
git diff-index -C --find-copies-harder $tree >current &&
compare_diff_raw current expected
ok 7 - rename detection
expecting success of 4007.8 'rename, limited to a subtree':
git diff-index -C --find-copies-harder $tree path1 >current &&
compare_diff_raw current expected
ok 8 - rename, limited to a subtree
# passed all 8 test(s)
1..8
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4008-diff-break-rewrite.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4008-diff-break-rewrite/.git/
expecting success of 4008.1 'setup':
echo some dissimilar content >file0 &&
COPYING_test_data >file1 &&
blob0_id=$(git hash-object file0) &&
blob1_id=$(git hash-object file1) &&
git update-index --add file0 file1 &&
git tag reference $(git write-tree)
ok 1 - setup
expecting success of 4008.2 'change file1 with copy-edit of file0 and remove file0':
sed -e "s/git/GIT/" file0 >file1 &&
blob2_id=$(git hash-object file1) &&
rm -f file0 &&
git update-index --remove file0 file1
ok 2 - change file1 with copy-edit of file0 and remove file0
expecting success of 4008.3 'run diff with -B (#1)':
git diff-index -B --cached reference >current &&
cat >expect <<-EOF &&
:100644 000000 $blob0_id $ZERO_OID D file0
:100644 100644 $blob1_id $blob2_id M100 file1
EOF
compare_diff_raw expect current
ok 3 - run diff with -B (#1)
expecting success of 4008.4 'run diff with -B and -M (#2)':
git diff-index -B -M reference >current &&
cat >expect <<-EOF &&
:100644 100644 $blob0_id $blob2_id R100 file0 file1
EOF
compare_diff_raw expect current
ok 4 - run diff with -B and -M (#2)
expecting success of 4008.5 'swap file0 and file1':
rm -f file0 file1 &&
git read-tree -m reference &&
git checkout-index -f -u -a &&
mv file0 tmp &&
mv file1 file0 &&
mv tmp file1 &&
git update-index file0 file1
ok 5 - swap file0 and file1
expecting success of 4008.6 'run diff with -B (#3)':
git diff-index -B reference >current &&
cat >expect <<-EOF &&
:100644 100644 $blob0_id $blob1_id M100 file0
:100644 100644 $blob1_id $blob0_id M100 file1
EOF
compare_diff_raw expect current
ok 6 - run diff with -B (#3)
expecting success of 4008.7 'run diff with -B and -M (#4)':
git diff-index -B -M reference >current &&
cat >expect <<-EOF &&
:100644 100644 $blob1_id $blob1_id R100 file1 file0
:100644 100644 $blob0_id $blob0_id R100 file0 file1
EOF
compare_diff_raw expect current
ok 7 - run diff with -B and -M (#4)
expecting success of 4008.8 'make file0 into something completely different':
rm -f file0 &&
test_ln_s_add frotz file0 &&
slink_id=$(printf frotz | git hash-object --stdin) &&
git update-index file1
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
ok 8 - make file0 into something completely different
expecting success of 4008.9 'run diff with -B (#5)':
git diff-index -B reference >current &&
cat >expect <<-EOF &&
:100644 120000 $blob0_id $slink_id T file0
:100644 100644 $blob1_id $blob0_id M100 file1
EOF
compare_diff_raw expect current
ok 9 - run diff with -B (#5)
expecting success of 4008.10 'run diff with -B -M (#6)':
git diff-index -B -M reference >current &&
# file0 changed from regular to symlink. file1 is the same as the preimage
# of file0. Because the change does not make file0 disappear, file1 is
# denoted as a copy of file0
cat >expect <<-EOF &&
:100644 120000 $blob0_id $slink_id T file0
:100644 100644 $blob0_id $blob0_id C file0 file1
EOF
compare_diff_raw expect current
ok 10 - run diff with -B -M (#6)
expecting success of 4008.11 'run diff with -M (#7)':
git diff-index -M reference >current &&
# This should not mistake file0 as the copy source of new file1
# due to type differences.
cat >expect <<-EOF &&
:100644 120000 $blob0_id $slink_id T file0
:100644 100644 $blob1_id $blob0_id M file1
EOF
compare_diff_raw expect current
ok 11 - run diff with -M (#7)
expecting success of 4008.12 'file1 edited to look like file0 and file0 rename-edited to file2':
rm -f file0 file1 &&
git read-tree -m reference &&
git checkout-index -f -u -a &&
sed -e "s/git/GIT/" file0 >file1 &&
sed -e "s/git/GET/" file0 >file2 &&
blob3_id=$(git hash-object file2) &&
rm -f file0 &&
git update-index --add --remove file0 file1 file2
ok 12 - file1 edited to look like file0 and file0 rename-edited to file2
expecting success of 4008.13 'run diff with -B (#8)':
git diff-index -B reference >current &&
cat >expect <<-EOF &&
:100644 000000 $blob0_id $ZERO_OID D file0
:100644 100644 $blob1_id $blob2_id M100 file1
:000000 100644 $ZERO_OID $blob3_id A file2
EOF
compare_diff_raw expect current
ok 13 - run diff with -B (#8)
expecting success of 4008.14 'run diff with -B -C (#9)':
git diff-index -B -C reference >current &&
cat >expect <<-EOF &&
:100644 100644 $blob0_id $blob2_id C095 file0 file1
:100644 100644 $blob0_id $blob3_id R095 file0 file2
EOF
compare_diff_raw expect current
ok 14 - run diff with -B -C (#9)
# passed all 14 test(s)
1..14
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4009-diff-rename-4.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4009-diff-rename-4/.git/
expecting success of 4009.1 'prepare reference tree': COPYING_test_data >COPYING &&
echo frotz >rezrov &&
git update-index --add COPYING rezrov &&
orig=$(git hash-object COPYING) &&
tree=$(git write-tree) &&
echo $tree
f7f2b494dd94f6acf05bc19174516b590236eb2d
ok 1 - prepare reference tree
expecting success of 4009.2 'prepare work tree': sed -e s/HOWEVER/However/ <COPYING >COPYING.1 &&
sed -e s/GPL/G.P.L/g <COPYING >COPYING.2 &&
rm -f COPYING &&
c1=$(git hash-object COPYING.1) &&
c2=$(git hash-object COPYING.2) &&
git update-index --add --remove COPYING COPYING.?
ok 2 - prepare work tree
expecting success of 4009.3 'validate output from rename/copy detection (#1)': compare_diff_raw_z current expected
ok 3 - validate output from rename/copy detection (#1)
expecting success of 4009.4 'prepare work tree again': mv COPYING.2 COPYING &&
git update-index --add --remove COPYING COPYING.1 COPYING.2
ok 4 - prepare work tree again
expecting success of 4009.5 'validate output from rename/copy detection (#2)': compare_diff_raw_z current expected
ok 5 - validate output from rename/copy detection (#2)
expecting success of 4009.6 'prepare work tree once again': COPYING_test_data >COPYING &&
git update-index --add --remove COPYING COPYING.1
ok 6 - prepare work tree once again
expecting success of 4009.7 'validate output from rename/copy detection (#3)': compare_diff_raw_z current expected
ok 7 - validate output from rename/copy detection (#3)
# passed all 7 test(s)
1..7
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4011-diff-symlink.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4011-diff-symlink/.git/
expecting success of 4011.1 'diff new symlink and file':
symlink=$(symlink_oid xyzzy) &&
cat >expected <<-EOF &&
diff --git a/frotz b/frotz
new file mode 120000
index 0000000..$symlink
--- /dev/null
+++ b/frotz
@@ -0,0 +1 @@
+xyzzy
\ No newline at end of file
diff --git a/nitfol b/nitfol
new file mode 100644
index 0000000..$symlink
--- /dev/null
+++ b/nitfol
@@ -0,0 +1 @@
+xyzzy
EOF
# the empty tree
git update-index &&
tree=$(git write-tree) &&
test_ln_s_add xyzzy frotz &&
echo xyzzy >nitfol &&
git update-index --add nitfol &&
GIT_DIFF_OPTS=--unified=0 git diff-index -M -p $tree >current &&
compare_diff_patch expected current
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
ok 1 - diff new symlink and file
expecting success of 4011.2 'diff unchanged symlink and file':
tree=$(git write-tree) &&
git update-index frotz nitfol &&
test -z "$(git diff-index --name-only $tree)"
ok 2 - diff unchanged symlink and file
expecting success of 4011.3 'diff removed symlink and file':
cat >expected <<-EOF &&
diff --git a/frotz b/frotz
deleted file mode 120000
index $symlink..0000000
--- a/frotz
+++ /dev/null
@@ -1 +0,0 @@
-xyzzy
\ No newline at end of file
diff --git a/nitfol b/nitfol
deleted file mode 100644
index $symlink..0000000
--- a/nitfol
+++ /dev/null
@@ -1 +0,0 @@
-xyzzy
EOF
mv frotz frotz2 &&
mv nitfol nitfol2 &&
git diff-index -M -p $tree >current &&
compare_diff_patch expected current
ok 3 - diff removed symlink and file
expecting success of 4011.4 'diff identical, but newly created symlink and file':
>expected &&
rm -f frotz nitfol &&
echo xyzzy >nitfol &&
test-tool chmtime +10 nitfol &&
if test_have_prereq SYMLINKS
then
ln -s xyzzy frotz
else
printf xyzzy >frotz
# the symlink property propagates from the index
fi &&
git diff-index -M -p $tree >current &&
compare_diff_patch expected current &&
>expected &&
git diff-index -M -p -w $tree >current &&
compare_diff_patch expected current
ok 4 - diff identical, but newly created symlink and file
expecting success of 4011.5 'diff different symlink and file':
new=$(symlink_oid yxyyz) &&
cat >expected <<-EOF &&
diff --git a/frotz b/frotz
index $symlink..$new 120000
--- a/frotz
+++ b/frotz
@@ -1 +1 @@
-xyzzy
\ No newline at end of file
+yxyyz
\ No newline at end of file
diff --git a/nitfol b/nitfol
index $symlink..$new 100644
--- a/nitfol
+++ b/nitfol
@@ -1 +1 @@
-xyzzy
+yxyyz
EOF
rm -f frotz &&
if test_have_prereq SYMLINKS
then
ln -s yxyyz frotz
else
printf yxyyz >frotz
# the symlink property propagates from the index
fi &&
echo yxyyz >nitfol &&
git diff-index -M -p $tree >current &&
compare_diff_patch expected current
ok 5 - diff different symlink and file
expecting success of 4011.6 'diff symlinks with non-existing targets':
ln -s narf pinky &&
ln -s take\ over brain &&
test_must_fail git diff --no-index pinky brain >output 2>output.err &&
grep narf output &&
test_must_be_empty output.err
-narf
ok 6 - diff symlinks with non-existing targets
expecting success of 4011.7 'setup symlinks with attributes':
echo "*.bin diff=bin" >>.gitattributes &&
echo content >file.bin &&
ln -s file.bin link.bin &&
git add -N file.bin link.bin
ok 7 - setup symlinks with attributes
expecting success of 4011.8 'symlinks do not respect userdiff config by path':
file=$(short_oid file.bin) &&
link=$(symlink_oid file.bin) &&
cat >expect <<-EOF &&
diff --git a/file.bin b/file.bin
new file mode 100644
index 0000000..$file
Binary files /dev/null and b/file.bin differ
diff --git a/link.bin b/link.bin
new file mode 120000
index 0000000..$link
--- /dev/null
+++ b/link.bin
@@ -0,0 +1 @@
+file.bin
\ No newline at end of file
EOF
git config diff.bin.binary true &&
git diff file.bin link.bin >actual &&
test_cmp expect actual
ok 8 - symlinks do not respect userdiff config by path
# passed all 8 test(s)
1..8
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4010-diff-pathspec.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4010-diff-pathspec/.git/
expecting success of 4010.1 'setup': echo frotz >file0 &&
mkdir path1 &&
echo rezrov >path1/file1 &&
before0=$(git hash-object file0) &&
before1=$(git hash-object path1/file1) &&
git update-index --add file0 path1/file1 &&
tree=$(git write-tree) &&
echo "$tree" &&
echo nitfol >file0 &&
echo yomin >path1/file1 &&
after0=$(git hash-object file0) &&
after1=$(git hash-object path1/file1) &&
git update-index file0 path1/file1
6b4658eda9b6c5385f027bc54abf3276b6effd05
ok 1 - setup
expecting success of 4010.2 'limit to path should show nothing': git diff-index --cached $tree -- path >current &&
compare_diff_raw current expected
ok 2 - limit to path should show nothing
expecting success of 4010.3 'limit to path1 should show path1/file1': git diff-index --cached $tree -- path1 >current &&
compare_diff_raw current expected
ok 3 - limit to path1 should show path1/file1
expecting success of 4010.4 'limit to path1/ should show path1/file1': git diff-index --cached $tree -- path1/ >current &&
compare_diff_raw current expected
ok 4 - limit to path1/ should show path1/file1
expecting success of 4010.5 '"*file1" should show path1/file1': git diff-index --cached $tree -- "*file1" >current &&
compare_diff_raw current expected
ok 5 - "*file1" should show path1/file1
expecting success of 4010.6 'limit to file0 should show file0': git diff-index --cached $tree -- file0 >current &&
compare_diff_raw current expected
ok 6 - limit to file0 should show file0
expecting success of 4010.7 'limit to file0/ should emit nothing.': git diff-index --cached $tree -- file0/ >current &&
compare_diff_raw current expected
ok 7 - limit to file0/ should emit nothing.
expecting success of 4010.8 'diff-tree pathspec':
tree2=$(git write-tree) &&
echo "$tree2" &&
git diff-tree -r --name-only $tree $tree2 -- pa path1/a >current &&
test_must_be_empty current
54d8765b122f32157e847ce3924180cb2ec778fc
ok 8 - diff-tree pathspec
expecting success of 4010.9 'diff-tree with wildcard shows dir also matches':
git diff-tree --name-only $EMPTY_TREE $tree -- "f*" >result &&
echo file0 >expected &&
test_cmp expected result
ok 9 - diff-tree with wildcard shows dir also matches
expecting success of 4010.10 'diff-tree -r with wildcard':
git diff-tree -r --name-only $EMPTY_TREE $tree -- "*file1" >result &&
echo path1/file1 >expected &&
test_cmp expected result
ok 10 - diff-tree -r with wildcard
expecting success of 4010.11 'diff-tree with wildcard shows dir also matches':
git diff-tree --name-only $tree $tree2 -- "path1/f*" >result &&
echo path1 >expected &&
test_cmp expected result
ok 11 - diff-tree with wildcard shows dir also matches
expecting success of 4010.12 'diff-tree -r with wildcard from beginning':
git diff-tree -r --name-only $tree $tree2 -- "path1/*file1" >result &&
echo path1/file1 >expected &&
test_cmp expected result
ok 12 - diff-tree -r with wildcard from beginning
expecting success of 4010.13 'diff-tree -r with wildcard':
git diff-tree -r --name-only $tree $tree2 -- "path1/f*" >result &&
echo path1/file1 >expected &&
test_cmp expected result
ok 13 - diff-tree -r with wildcard
expecting success of 4010.14 'setup submodules':
test_tick &&
git init submod &&
( cd submod && test_commit first ) &&
git add submod &&
git commit -m first &&
( cd submod && test_commit second ) &&
git add submod &&
git commit -m second
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4010-diff-pathspec/submod/.git/
[master (root-commit) 1e96f59] first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 first.t
warning: adding embedded git repository: submod
hint: You've added another git repository inside your current repository.
hint: Clones of the outer repository will not contain the contents of
hint: the embedded repository and will not know how to obtain it.
hint: If you meant to add a submodule, use:
hint:
hint: git submodule add <url> submod
hint:
hint: If you added this path by mistake, you can remove it from the
hint: index with:
hint:
hint: git rm --cached submod
hint:
hint: See "git help submodule" for more information.
[master (root-commit) f9d7654] first
Author: A U Thor <author@example.com>
3 files changed, 3 insertions(+)
create mode 100644 file0
create mode 100644 path1/file1
create mode 160000 submod
[master 1bf6dc5] second
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 second.t
[master f1afec5] second
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 14 - setup submodules
expecting success of 4010.15 'diff-tree ignores trailing slash on submodule path':
git diff --name-only HEAD^ HEAD submod >expect &&
git diff --name-only HEAD^ HEAD submod/ >actual &&
test_cmp expect actual &&
git diff --name-only HEAD^ HEAD -- submod/whatever >actual &&
test_must_be_empty actual
ok 15 - diff-tree ignores trailing slash on submodule path
expecting success of 4010.16 'diff multiple wildcard pathspecs':
mkdir path2 &&
echo rezrov >path2/file1 &&
git update-index --add path2/file1 &&
tree3=$(git write-tree) &&
git diff --name-only $tree $tree3 -- "path2*1" "path1*1" >actual &&
cat <<-\EOF >expect &&
path1/file1
path2/file1
EOF
test_cmp expect actual
ok 16 - diff multiple wildcard pathspecs
expecting success of 4010.17 'diff-cache ignores trailing slash on submodule path':
git diff --name-only HEAD^ submod >expect &&
git diff --name-only HEAD^ submod/ >actual &&
test_cmp expect actual
ok 17 - diff-cache ignores trailing slash on submodule path
# passed all 17 test(s)
1..17
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3906-stash-submodule.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3906-stash-submodule/.git/
expecting success of 3906.1 'git_stash: added submodule creates empty directory':
prolog &&
reset_work_tree_to no_submodule &&
(
cd submodule_update &&
git branch -t add_sub1 origin/add_sub1 &&
$command add_sub1 &&
test_superproject_content origin/add_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/add_sub1
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3906-stash-submodule/submodule_update_sub1/.git/
[master (root-commit) 63c4304] Base inside first submodule
Author: A U Thor <author@example.com>
3 files changed, 4 insertions(+)
create mode 100644 .gitignore
create mode 100644 file1
create mode 100644 file2
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3906-stash-submodule/submodule_update_sub2/.git/
[master (root-commit) 27c5769] nested submodule base
Author: A U Thor <author@example.com>
3 files changed, 4 insertions(+)
create mode 100644 .gitignore
create mode 100644 file1
create mode 100644 file2
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3906-stash-submodule/submodule_update_repo/.git/
[master (root-commit) 27611a5] Base
Author: A U Thor <author@example.com>
3 files changed, 4 insertions(+)
create mode 100644 .gitignore
create mode 100644 file1
create mode 100644 file2
Switched to a new branch 'add_sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3906-stash-submodule/submodule_update_repo/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3906-stash-submodule/submodule_update_repo/uninitialized_sub'...
done.
[add_sub1 09bcf53] Add sub1
Author: A U Thor <author@example.com>
2 files changed, 8 insertions(+)
create mode 100644 .gitmodules
create mode 160000 uninitialized_sub
Switched to a new branch 'remove_sub1'
warning: unable to rmdir 'sub1': Directory not empty
warning: unable to rmdir 'uninitialized_sub': Directory not empty
[remove_sub1 d6ba723] Revert "Add sub1"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
3 files changed, 9 deletions(-)
delete mode 100644 .gitmodules
delete mode 160000 sub1
delete mode 160000 uninitialized_sub
Switched to a new branch 'modify_sub1'
Switched to a new branch 'modifications'
[modifications 03da4ea] modified file2 and added file3
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+), 1 deletion(-)
create mode 100644 file3
To /<<PKGBUILDDIR>>/t/trash directory.t3906-stash-submodule/submodule_update_sub1
* [new branch] modifications -> modifications
[modify_sub1 cb2bda7] Modify sub1
Author: A U Thor <author@example.com>
Switched to a new branch 'add_nested_sub'
Switched to a new branch 'add_nested_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3906-stash-submodule/submodule_update_repo/sub1/sub2'...
done.
[add_nested_sub 8b3b335] add a nested submodule
Author: A U Thor <author@example.com>
2 files changed, 5 insertions(+)
create mode 100644 .gitmodules
create mode 160000 sub2
[add_nested_sub 5bc57bf] update submodule, that updates a nested submodule
Author: A U Thor <author@example.com>
Switched to a new branch 'modify_sub1_recursively'
Switched to a new branch 'modify_sub1_recursively'
Switched to a new branch 'modify_sub1_recursively'
[modify_sub1_recursively c7c4624] make a change in nested sub
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file3
[modify_sub1_recursively 92fc14a] update nested sub
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[modify_sub1_recursively 953e869] update sub1, that updates nested sub
Author: A U Thor <author@example.com>
To /<<PKGBUILDDIR>>/t/trash directory.t3906-stash-submodule/submodule_update_sub1
* [new branch] modify_sub1_recursively -> modify_sub1_recursively
To /<<PKGBUILDDIR>>/t/trash directory.t3906-stash-submodule/submodule_update_sub2
* [new branch] modify_sub1_recursively -> modify_sub1_recursively
Cleared directory 'sub2'
Submodule 'sub2' (../submodule_update_sub2) unregistered for path 'sub2'
Switched to a new branch 'replace_sub1_with_directory'
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Previous HEAD position was 63c4304 Base inside first submodule
Switched to branch 'modifications'
rm 'sub1'
[replace_sub1_with_directory cb28587] Replace sub1 with directory
Author: A U Thor <author@example.com>
5 files changed, 3 insertions(+), 5 deletions(-)
delete mode 160000 sub1
create mode 100644 sub1/file1
create mode 100644 sub1/file2
create mode 100644 sub1/file3
Switched to a new branch 'replace_directory_with_sub1'
[replace_directory_with_sub1 a2e65d5] Revert "Replace sub1 with directory"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
4 files changed, 4 insertions(+), 3 deletions(-)
delete mode 100644 sub1/file1
delete mode 100644 sub1/file2
delete mode 100644 sub1/file3
Switched to a new branch 'replace_sub1_with_file'
rm 'sub1'
[replace_sub1_with_file 2364f5a] Replace sub1 with file
Author: A U Thor <author@example.com>
2 files changed, 1 insertion(+), 5 deletions(-)
mode change 160000 => 100644 sub1
Switched to a new branch 'replace_file_with_sub1'
[replace_file_with_sub1 8b6fdfc] Revert "Replace sub1 with file"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
2 files changed, 5 insertions(+), 1 deletion(-)
mode change 100644 => 160000 sub1
Switched to a new branch 'invalid_sub1'
[invalid_sub1 e6169bf] Invalid sub1 commit
Author: A U Thor <author@example.com>
Switched to a new branch 'valid_sub1'
[valid_sub1 3036e4e] Revert "Invalid sub1 commit"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
warning: unable to rmdir 'uninitialized_sub': Directory not empty
Switched to branch 'master'
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
Saved working directory and index state WIP on no_submodule: 27611a5 Base
Merging Version stash was based on with Stashed changes
On branch no_submodule
Your branch is up to date with 'origin/no_submodule'.
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: .gitmodules
new file: sub1
new file: uninitialized_sub
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3906-stash-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t3906-stash-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3906-stash-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3906-stash-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Submodule path 'uninitialized_sub': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 1 - git_stash: added submodule creates empty directory
checking known breakage of 3906.2 'git_stash: added submodule leaves existing empty directory alone':
prolog &&
reset_work_tree_to no_submodule &&
(
cd submodule_update &&
mkdir sub1 &&
git branch -t add_sub1 origin/add_sub1 &&
$command add_sub1 &&
test_superproject_content origin/add_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
Saved working directory and index state WIP on no_submodule: 27611a5 Base
--- expect 2023-10-09 02:19:34.229130954 +0000
+++ actual 2023-10-09 02:19:34.265130925 +0000
@@ -2,5 +2,3 @@
expect
file1
file2
-
-sub1:
not ok 2 - git_stash: added submodule leaves existing empty directory alone # TODO known breakage
checking known breakage of 3906.3 'git_stash: replace tracked file with submodule creates empty directory':
prolog &&
reset_work_tree_to replace_sub1_with_file &&
(
cd submodule_update &&
git branch -t replace_file_with_sub1 origin/replace_file_with_sub1 &&
$command replace_file_with_sub1 &&
test_superproject_content origin/replace_file_with_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/replace_file_with_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'replace_sub1_with_file'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
fatal: Needed a single revision
branch 'replace_file_with_sub1' set up to track 'origin/replace_file_with_sub1'.
Saved working directory and index state WIP on replace_sub1_with_file: 2364f5a Replace sub1 with file
Merging Version stash was based on with Stashed changes
On branch replace_sub1_with_file
Your branch is up to date with 'origin/replace_sub1_with_file'.
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .gitmodules
deleted: sub1
no changes added to commit (use "git add" and/or "git commit -a")
'actual' is not empty, it contains:
:100644 100644 af3a0c56edfba1a28f50ada5ec2832a7f2f9b907 cf8d5939a67bef46c85d0f50732c37b6fac1d92a M .gitmodules
:160000 100644 63c430421a9604f896526f8a04236bdfe3ac1fc1 d95f3ad14dee633a758d2e331151e950dd13e4ed T sub1
not ok 3 - git_stash: replace tracked file with submodule creates empty directory # TODO known breakage
checking known breakage of 3906.4 'git_stash: replace directory with submodule':
prolog &&
reset_work_tree_to replace_sub1_with_directory &&
(
cd submodule_update &&
git branch -t replace_directory_with_sub1 origin/replace_directory_with_sub1 &&
$command replace_directory_with_sub1 &&
test_superproject_content origin/replace_directory_with_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/replace_directory_with_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'replace_sub1_with_directory'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
fatal: Needed a single revision
branch 'replace_directory_with_sub1' set up to track 'origin/replace_directory_with_sub1'.
Saved working directory and index state WIP on replace_sub1_with_directory: cb28587 Replace sub1 with directory
Merging Version stash was based on with Stashed changes
error: 'sub1/file1' appears as both a file and as a directory
error: 'sub1/file2' appears as both a file and as a directory
error: 'sub1/file3' appears as both a file and as a directory
On branch replace_sub1_with_directory
Your branch is up to date with 'origin/replace_sub1_with_directory'.
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: sub1
deleted: sub1/file1
deleted: sub1/file2
deleted: sub1/file3
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .gitmodules
'actual' is not empty, it contains:
:100644 100644 af3a0c56edfba1a28f50ada5ec2832a7f2f9b907 cf8d5939a67bef46c85d0f50732c37b6fac1d92a M .gitmodules
not ok 4 - git_stash: replace directory with submodule # TODO known breakage
checking known breakage of 3906.5 'git_stash: removed submodule leaves submodule directory and its contents in place':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t remove_sub1 origin/remove_sub1 &&
$command remove_sub1 &&
test_superproject_content origin/remove_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3906-stash-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3906-stash-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'remove_sub1' set up to track 'origin/remove_sub1'.
warning: unable to rmdir 'sub1': Directory not empty
Saved working directory and index state WIP on add_sub1: 09bcf53 Add sub1
warning: unable to rmdir 'sub1': Directory not empty
Merging Version stash was based on with Stashed changes
On branch add_sub1
Your branch is up to date with 'origin/add_sub1'.
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
deleted: sub1
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
deleted: .gitmodules
Untracked files:
(use "git add <file>..." to include in what will be committed)
sub1/
'actual' is not empty, it contains:
:000000 100644 0000000000000000000000000000000000000000 af3a0c56edfba1a28f50ada5ec2832a7f2f9b907 A .gitmodules
:000000 160000 0000000000000000000000000000000000000000 63c430421a9604f896526f8a04236bdfe3ac1fc1 A uninitialized_sub
not ok 5 - git_stash: removed submodule leaves submodule directory and its contents in place # TODO known breakage
checking known breakage of 3906.6 'git_stash: removed submodule leaves submodule containing a .git directory alone':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t remove_sub1 origin/remove_sub1 &&
replace_gitfile_with_git_dir sub1 &&
$command remove_sub1 &&
test_superproject_content origin/remove_sub1 &&
test_git_directory_is_unchanged sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3906-stash-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3906-stash-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'remove_sub1' set up to track 'origin/remove_sub1'.
warning: unable to rmdir 'sub1': Directory not empty
Saved working directory and index state WIP on add_sub1: 09bcf53 Add sub1
warning: unable to rmdir 'sub1': Directory not empty
Merging Version stash was based on with Stashed changes
On branch add_sub1
Your branch is up to date with 'origin/add_sub1'.
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
deleted: sub1
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
deleted: .gitmodules
Untracked files:
(use "git add <file>..." to include in what will be committed)
sub1/
'actual' is not empty, it contains:
:000000 100644 0000000000000000000000000000000000000000 af3a0c56edfba1a28f50ada5ec2832a7f2f9b907 A .gitmodules
:000000 160000 0000000000000000000000000000000000000000 63c430421a9604f896526f8a04236bdfe3ac1fc1 A uninitialized_sub
not ok 6 - git_stash: removed submodule leaves submodule containing a .git directory alone # TODO known breakage
expecting success of 3906.7 'git_stash: replace submodule with a directory must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_directory origin/replace_sub1_with_directory &&
$command replace_sub1_with_directory test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3906-stash-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3906-stash-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
error: Untracked working tree file 'sub1/file1' would be overwritten by merge.
ok 7 - git_stash: replace submodule with a directory must fail
expecting success of 3906.8 'git_stash: replace submodule containing a .git directory with a directory must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_directory origin/replace_sub1_with_directory &&
replace_gitfile_with_git_dir sub1 &&
$command replace_sub1_with_directory test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_git_directory_is_unchanged sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3906-stash-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3906-stash-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
error: Untracked working tree file 'sub1/file1' would be overwritten by merge.
ok 8 - git_stash: replace submodule containing a .git directory with a directory must fail
checking known breakage of 3906.9 'git_stash: replace submodule with a file must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_file origin/replace_sub1_with_file &&
$command replace_sub1_with_file test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3906-stash-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3906-stash-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
test_must_fail: command succeeded: git read-tree -u -m replace_sub1_with_file
not ok 9 - git_stash: replace submodule with a file must fail # TODO known breakage
checking known breakage of 3906.10 'git_stash: replace submodule containing a .git directory with a file must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_file origin/replace_sub1_with_file &&
replace_gitfile_with_git_dir sub1 &&
$command replace_sub1_with_file test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_git_directory_is_unchanged sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3906-stash-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3906-stash-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
test_must_fail: command succeeded: git read-tree -u -m replace_sub1_with_file
not ok 10 - git_stash: replace submodule containing a .git directory with a file must fail # TODO known breakage
checking known breakage of 3906.11 'git_stash: modified submodule does not update submodule work tree':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t modify_sub1 origin/modify_sub1 &&
$command modify_sub1 &&
test_superproject_content origin/modify_sub1 &&
test_submodule_content sub1 origin/add_sub1 &&
git submodule update &&
test_submodule_content sub1 origin/modify_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3906-stash-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3906-stash-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'modify_sub1' set up to track 'origin/modify_sub1'.
No local changes to save
--- expect 2023-10-09 02:19:35.977129563 +0000
+++ actual 2023-10-09 02:19:35.993129550 +0000
@@ -1,3 +1,4 @@
+M sub1
actual
expect
file1
not ok 11 - git_stash: modified submodule does not update submodule work tree # TODO known breakage
checking known breakage of 3906.12 'git_stash: modified submodule does not update submodule work tree to invalid commit':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t invalid_sub1 origin/invalid_sub1 &&
$command invalid_sub1 &&
test_superproject_content origin/invalid_sub1 &&
test_submodule_content sub1 origin/add_sub1 &&
test_must_fail git submodule update &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t3906-stash-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3906-stash-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'invalid_sub1' set up to track 'origin/invalid_sub1'.
No local changes to save
--- expect 2023-10-09 02:19:36.153129421 +0000
+++ actual 2023-10-09 02:19:36.173129405 +0000
@@ -1,3 +1,4 @@
+M sub1
actual
expect
file1
not ok 12 - git_stash: modified submodule does not update submodule work tree to invalid commit # TODO known breakage
checking known breakage of 3906.13 'git_stash: modified submodule does not update submodule work tree from invalid commit':
prolog &&
reset_work_tree_to invalid_sub1 &&
(
cd submodule_update &&
git branch -t valid_sub1 origin/valid_sub1 &&
$command valid_sub1 &&
test_superproject_content origin/valid_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/valid_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'invalid_sub1'
branch 'invalid_sub1' set up to track 'origin/invalid_sub1'.
fatal: Needed a single revision
branch 'valid_sub1' set up to track 'origin/valid_sub1'.
No local changes to save
--- expect 2023-10-09 02:19:36.257129337 +0000
+++ actual 2023-10-09 02:19:36.273129325 +0000
@@ -1,3 +1,4 @@
+M sub1
actual
expect
file1
not ok 13 - git_stash: modified submodule does not update submodule work tree from invalid commit # TODO known breakage
expecting success of 3906.14 'git_stash: added submodule doesn't remove untracked unignored file with same name':
prolog &&
reset_work_tree_to no_submodule &&
(
cd submodule_update &&
git branch -t add_sub1 origin/add_sub1 &&
>sub1 &&
$command add_sub1 test_must_fail &&
test_superproject_content origin/no_submodule &&
test_must_be_empty sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
error: Untracked working tree file 'sub1' would be overwritten by merge.
ok 14 - git_stash: added submodule doesn't remove untracked unignored file with same name
expecting success of 3906.15 'stash push with submodule.recurse=true preserves dirty submodule worktree':
setup_basic &&
(
cd main &&
git config submodule.recurse true &&
echo "x" >main_file.t &&
echo "y" >sub/sub_file.t &&
git stash push &&
test_must_fail git -C sub diff --quiet
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3906-stash-submodule/sub/.git/
[master (root-commit) af789f4] sub_file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 sub_file.t
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3906-stash-submodule/main/.git/
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3906-stash-submodule/main/sub'...
done.
[master (root-commit) d3a5de8] main_file
Author: A U Thor <author@example.com>
3 files changed, 5 insertions(+)
create mode 100644 .gitmodules
create mode 100644 main_file.t
create mode 160000 sub
Saved working directory and index state WIP on master: d3a5de8 main_file
ok 15 - stash push with submodule.recurse=true preserves dirty submodule worktree
expecting success of 3906.16 'stash push and pop with submodule.recurse=true preserves dirty submodule worktree':
setup_basic &&
(
cd main &&
git config submodule.recurse true &&
echo "x" >main_file.t &&
echo "y" >sub/sub_file.t &&
git stash push &&
git stash pop &&
test_must_fail git -C sub diff --quiet
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3906-stash-submodule/sub/.git/
[master (root-commit) af789f4] sub_file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 sub_file.t
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3906-stash-submodule/main/.git/
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t3906-stash-submodule/main/sub'...
done.
[master (root-commit) d3a5de8] main_file
Author: A U Thor <author@example.com>
3 files changed, 5 insertions(+)
create mode 100644 .gitmodules
create mode 100644 main_file.t
create mode 160000 sub
Saved working directory and index state WIP on master: d3a5de8 main_file
Merging Version stash was based on with Stashed changes
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
(commit or discard the untracked or modified content in submodules)
modified: main_file.t
modified: sub (modified content)
no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (ee331cc507c2f3e6ac052edd8b1cc51dc982b38c)
ok 16 - stash push and pop with submodule.recurse=true preserves dirty submodule worktree
# still have 10 known breakage(s)
# passed all remaining 6 test(s)
1..16
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4012-diff-binary.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4012-diff-binary/.git/
expecting success of 4012.1 'prepare repository':
echo AIT >a && echo BIT >b && echo CIT >c && echo DIT >d &&
git update-index --add a b c d &&
echo git >a &&
cat "$TEST_DIRECTORY"/test-binary-1.png >b &&
echo git >c &&
cat b b >d
ok 1 - prepare repository
expecting success of 4012.2 'apply --stat output for binary file change':
git diff >diff &&
git apply --stat --summary <diff >current &&
test_cmp expected current
ok 2 - apply --stat output for binary file change
expecting success of 4012.3 'diff --shortstat output for binary file change':
tail -n 1 expected >expect &&
git diff --shortstat >current &&
test_cmp expect current
ok 3 - diff --shortstat output for binary file change
expecting success of 4012.4 'diff --shortstat output for binary file change only':
echo " 1 file changed, 0 insertions(+), 0 deletions(-)" >expected &&
git diff --shortstat -- b >current &&
test_cmp expected current
ok 4 - diff --shortstat output for binary file change only
expecting success of 4012.5 'apply --numstat notices binary file change':
git diff >diff &&
git apply --numstat <diff >current &&
test_cmp expect.binary-numstat current
ok 5 - apply --numstat notices binary file change
expecting success of 4012.6 'apply --numstat understands diff --binary format':
git diff --binary >diff &&
git apply --numstat <diff >current &&
test_cmp expect.binary-numstat current
ok 6 - apply --numstat understands diff --binary format
expecting success of 4012.7 'apply detecting corrupt patch correctly':
git diff >output &&
sed -e "s/-CIT/xCIT/" <output >broken &&
test_must_fail git apply --stat --summary broken 2>detected &&
detected=$(cat detected) &&
detected=$(expr "$detected" : "error.*at line \\([0-9]*\\)\$") &&
detected=$(sed -ne "${detected}p" broken) &&
test "$detected" = xCIT
ok 7 - apply detecting corrupt patch correctly
expecting success of 4012.8 'apply detecting corrupt patch correctly':
git diff --binary | sed -e "s/-CIT/xCIT/" >broken &&
test_must_fail git apply --stat --summary broken 2>detected &&
detected=$(cat detected) &&
detected=$(expr "$detected" : "error.*at line \\([0-9]*\\)\$") &&
detected=$(sed -ne "${detected}p" broken) &&
test "$detected" = xCIT
ok 8 - apply detecting corrupt patch correctly
expecting success of 4012.9 'initial commit': git commit -a -m initial
[master (root-commit) 4ede773] initial
Author: A U Thor <author@example.com>
4 files changed, 2 insertions(+)
create mode 100644 a
create mode 100644 b
create mode 100644 c
create mode 100644 d
ok 9 - initial commit
expecting success of 4012.10 'diff-index with --binary':
echo AIT >a && mv b e && echo CIT >c && cat e >d &&
git update-index --add --remove a b c d e &&
tree0=$(git write-tree) &&
git diff --cached --binary >current &&
git apply --stat --summary current
a | 2 +-
c | 2 +-
d | Bin
e | 0
4 files changed, 2 insertions(+), 2 deletions(-)
rename b => e (100%)
ok 10 - diff-index with --binary
expecting success of 4012.11 'apply binary patch':
git reset --hard &&
git apply --binary --index <current &&
tree1=$(git write-tree) &&
test "$tree1" = "$tree0"
HEAD is now at 4ede773 initial
ok 11 - apply binary patch
expecting success of 4012.12 'diff --no-index with binary creation':
echo Q | q_to_nul >binary &&
# hide error code from diff, which just indicates differences
test_might_fail git diff --binary --no-index /dev/null binary >current &&
rm binary &&
git apply --binary <current &&
echo Q >expected &&
nul_to_q <binary >actual &&
test_cmp expected actual
ok 12 - diff --no-index with binary creation
expecting success of 4012.13 'diff --stat with binary files and big change count':
printf "\01\00%1024d" 1 >binfilë &&
git add binfilë &&
i=0 &&
while test $i -lt 10000; do
echo $i &&
i=$(($i + 1)) || return 1
done >tëxtfilë &&
git add tëxtfilë &&
git -c core.quotepath=false diff --cached --stat binfilë tëxtfilë >output &&
grep " | " output >actual &&
test_cmp expect actual
ok 13 - diff --stat with binary files and big change count
# passed all 13 test(s)
1..13
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t3903-stash.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3903-stash/.git/
expecting success of 3903.1 'usage on cmd and subcommand invalid option':
test_expect_code 129 git stash --invalid-option 2>usage &&
grep "or: git stash" usage &&
test_expect_code 129 git stash push --invalid-option 2>usage &&
! grep "or: git stash" usage
or: git stash show [-u | --include-untracked | --only-untracked] [<diff-options>] [<stash>]
or: git stash drop [-q | --quiet] [<stash>]
or: git stash pop [--index] [-q | --quiet] [<stash>]
or: git stash apply [--index] [-q | --quiet] [<stash>]
or: git stash branch <branchname> [<stash>]
or: git stash [push [-p | --patch] [-S | --staged] [-k | --[no-]keep-index] [-q | --quiet]
or: git stash save [-p | --patch] [-S | --staged] [-k | --[no-]keep-index] [-q | --quiet]
or: git stash clear
or: git stash create [<message>]
or: git stash store [(-m | --message) <message>] [-q | --quiet] <commit>
ok 1 - usage on cmd and subcommand invalid option
expecting success of 3903.2 'usage on main command -h emits a summary of subcommands':
test_expect_code 129 git stash -h >usage &&
grep -F "usage: git stash list" usage &&
grep -F "or: git stash show" usage
usage: git stash list [<log-options>]
or: git stash show [-u | --include-untracked | --only-untracked] [<diff-options>] [<stash>]
ok 2 - usage on main command -h emits a summary of subcommands
expecting success of 3903.3 'usage for subcommands should emit subcommand usage':
test_expect_code 129 git stash push -h >usage &&
grep -F "usage: git stash [push" usage
usage: git stash [push [-p | --patch] [-S | --staged] [-k | --[no-]keep-index] [-q | --quiet]
ok 3 - usage for subcommands should emit subcommand usage
expecting success of 3903.4 'stash some dirty working directory':
setup_stash
[main (root-commit) fe7e97b] initial
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 file
create mode 100644 other-file
Saved working directory and index state WIP on main: fe7e97b initial
ok 4 - stash some dirty working directory
expecting success of 3903.5 'parents of stash':
test $(git rev-parse stash^) = $(git rev-parse HEAD) &&
git diff stash^2..stash >output &&
diff_cmp expect output
ok 5 - parents of stash
expecting success of 3903.6 'applying bogus stash does nothing':
test_must_fail git stash apply stash@{1} &&
echo 1 >expect &&
test_cmp expect file
fatal: log for 'stash' only has 1 entries
ok 6 - applying bogus stash does nothing
expecting success of 3903.7 'apply does not need clean working directory':
echo 4 >other-file &&
git stash apply &&
echo 3 >expect &&
test_cmp expect file
Merging Version stash was based on with Stashed changes
On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: file
modified: other-file
Untracked files:
(use "git add <file>..." to include in what will be committed)
expect
output
usage
no changes added to commit (use "git add" and/or "git commit -a")
ok 7 - apply does not need clean working directory
expecting success of 3903.8 'apply does not clobber working directory changes':
git reset --hard &&
echo 4 >file &&
test_must_fail git stash apply &&
echo 4 >expect &&
test_cmp expect file
HEAD is now at fe7e97b initial
error: Your local changes to the following files would be overwritten by merge:
file
Please commit your changes or stash them before you merge.
Aborting
Merging Version stash was based on with Stashed changes
On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: file
Untracked files:
(use "git add <file>..." to include in what will be committed)
expect
output
usage
no changes added to commit (use "git add" and/or "git commit -a")
ok 8 - apply does not clobber working directory changes
expecting success of 3903.9 'apply stashed changes':
git reset --hard &&
echo 5 >other-file &&
git add other-file &&
test_tick &&
git commit -m other-file &&
git stash apply &&
test 3 = $(cat file) &&
test 1 = $(git show :file) &&
test 1 = $(git show HEAD:file)
HEAD is now at fe7e97b initial
[main 4db481e] other-file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Merging Updated upstream with Stashed changes
On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: file
Untracked files:
(use "git add <file>..." to include in what will be committed)
expect
output
usage
no changes added to commit (use "git add" and/or "git commit -a")
ok 9 - apply stashed changes
expecting success of 3903.10 'apply stashed changes (including index)':
git reset --hard HEAD^ &&
echo 6 >other-file &&
git add other-file &&
test_tick &&
git commit -m other-file &&
git stash apply --index &&
test 3 = $(cat file) &&
test 2 = $(git show :file) &&
test 1 = $(git show HEAD:file)
HEAD is now at fe7e97b initial
[main da68008] other-file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Merging Updated upstream with Stashed changes
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: file
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: file
Untracked files:
(use "git add <file>..." to include in what will be committed)
expect
output
usage
ok 10 - apply stashed changes (including index)
expecting success of 3903.11 'unstashing in a subdirectory':
git reset --hard HEAD &&
mkdir subdir &&
(
cd subdir &&
git stash apply
)
HEAD is now at da68008 other-file
Merging Updated upstream with Stashed changes
On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: ../file
Untracked files:
(use "git add <file>..." to include in what will be committed)
../expect
../output
../usage
no changes added to commit (use "git add" and/or "git commit -a")
ok 11 - unstashing in a subdirectory
expecting success of 3903.12 'stash drop complains of extra options':
test_must_fail git stash drop --foo
error: unknown option `foo'
usage: git stash drop [-q | --quiet] [<stash>]
-q, --quiet be quiet, only report errors
ok 12 - stash drop complains of extra options
expecting success of 3903.13 'drop top stash':
git reset --hard &&
git stash list >expected &&
echo 7 >file &&
git stash &&
git stash drop &&
git stash list >actual &&
test_cmp expected actual &&
git stash apply &&
test 3 = $(cat file) &&
test 1 = $(git show :file) &&
test 1 = $(git show HEAD:file)
HEAD is now at da68008 other-file
Saved working directory and index state WIP on main: da68008 other-file
Dropped refs/stash@{0} (cb250e8e47ab685a401a9258b861903a94581a26)
Merging Updated upstream with Stashed changes
On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: file
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
expect
expected
output
usage
no changes added to commit (use "git add" and/or "git commit -a")
ok 13 - drop top stash
expecting success of 3903.14 'drop middle stash':
git reset --hard &&
echo 8 >file &&
git stash &&
echo 9 >file &&
git stash &&
git stash drop stash@{1} &&
test 2 = $(git stash list | wc -l) &&
git stash apply &&
test 9 = $(cat file) &&
test 1 = $(git show :file) &&
test 1 = $(git show HEAD:file) &&
git reset --hard &&
git stash drop &&
git stash apply &&
test 3 = $(cat file) &&
test 1 = $(git show :file) &&
test 1 = $(git show HEAD:file)
HEAD is now at da68008 other-file
Saved working directory and index state WIP on main: da68008 other-file
Saved working directory and index state WIP on main: da68008 other-file
Dropped stash@{1} (5b715756e7f660ba9dd1619de9e5a4b24a06b7c3)
Merging Version stash was based on with Stashed changes
On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: file
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
expect
expected
output
usage
no changes added to commit (use "git add" and/or "git commit -a")
HEAD is now at da68008 other-file
Dropped refs/stash@{0} (236c59f58e239e74e90b6832a98fa4b7f4b33647)
Merging Updated upstream with Stashed changes
On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: file
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
expect
expected
output
usage
no changes added to commit (use "git add" and/or "git commit -a")
ok 14 - drop middle stash
expecting success of 3903.15 'drop middle stash by index':
git reset --hard &&
echo 8 >file &&
git stash &&
echo 9 >file &&
git stash &&
git stash drop 1 &&
test 2 = $(git stash list | wc -l) &&
git stash apply &&
test 9 = $(cat file) &&
test 1 = $(git show :file) &&
test 1 = $(git show HEAD:file) &&
git reset --hard &&
git stash drop &&
git stash apply &&
test 3 = $(cat file) &&
test 1 = $(git show :file) &&
test 1 = $(git show HEAD:file)
HEAD is now at da68008 other-file
Saved working directory and index state WIP on main: da68008 other-file
Saved working directory and index state WIP on main: da68008 other-file
Dropped refs/stash@{1} (5b715756e7f660ba9dd1619de9e5a4b24a06b7c3)
Merging Version stash was based on with Stashed changes
On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: file
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
expect
expected
output
usage
no changes added to commit (use "git add" and/or "git commit -a")
HEAD is now at da68008 other-file
Dropped refs/stash@{0} (236c59f58e239e74e90b6832a98fa4b7f4b33647)
Merging Updated upstream with Stashed changes
On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: file
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
expect
expected
output
usage
no changes added to commit (use "git add" and/or "git commit -a")
ok 15 - drop middle stash by index
expecting success of 3903.16 'drop stash reflog updates refs/stash':
git reset --hard &&
git rev-parse refs/stash >expect &&
echo 9 >file &&
git stash &&
git stash drop stash@{0} &&
git rev-parse refs/stash >actual &&
test_cmp expect actual
HEAD is now at da68008 other-file
Saved working directory and index state WIP on main: da68008 other-file
Dropped stash@{0} (236c59f58e239e74e90b6832a98fa4b7f4b33647)
ok 16 - drop stash reflog updates refs/stash
expecting success of 3903.17 'drop stash reflog updates refs/stash with rewrite':
git init repo &&
(
cd repo &&
setup_stash
) &&
echo 9 >repo/file &&
old_oid="$(git -C repo rev-parse stash@{0})" &&
git -C repo stash &&
new_oid="$(git -C repo rev-parse stash@{0})" &&
cat >expect <<-EOF &&
$(test_oid zero) $old_oid
$old_oid $new_oid
EOF
cut -d" " -f1-2 repo/.git/logs/refs/stash >actual &&
test_cmp expect actual &&
git -C repo stash drop stash@{1} &&
cut -d" " -f1-2 repo/.git/logs/refs/stash >actual &&
cat >expect <<-EOF &&
$(test_oid zero) $new_oid
EOF
test_cmp expect actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3903-stash/repo/.git/
[main (root-commit) c512db6] initial
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 file
create mode 100644 other-file
Saved working directory and index state WIP on main: c512db6 initial
Saved working directory and index state WIP on main: c512db6 initial
Dropped stash@{1} (886689bbf0687da9299458a427fd23c435bce4b1)
ok 17 - drop stash reflog updates refs/stash with rewrite
expecting success of 3903.18 'stash pop':
git reset --hard &&
git stash pop &&
test 3 = $(cat file) &&
test 1 = $(git show :file) &&
test 1 = $(git show HEAD:file) &&
test 0 = $(git stash list | wc -l)
HEAD is now at da68008 other-file
Merging Updated upstream with Stashed changes
On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: file
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
expect
expected
output
repo/
usage
no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (5c6ad4ca28e71ae3a007e6c77043d04bc42fa9ee)
ok 18 - stash pop
expecting success of 3903.19 'stash branch':
echo foo >file &&
git commit file -m first &&
echo bar >file &&
echo bar2 >file2 &&
git add file2 &&
git stash &&
echo baz >file &&
git commit file -m second &&
git stash branch stashbranch &&
test refs/heads/stashbranch = $(git symbolic-ref HEAD) &&
test $(git rev-parse HEAD) = $(git rev-parse main^) &&
git diff --cached >output &&
diff_cmp expect output &&
git diff >output &&
diff_cmp expect1 output &&
git add file &&
git commit -m alternate\ second &&
git diff main..stashbranch >output &&
diff_cmp output expect2 &&
test 0 = $(git stash list | wc -l)
[main ce675cf] first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Saved working directory and index state WIP on main: ce675cf first
[main 662e8e5] second
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to a new branch 'stashbranch'
Merging Version stash was based on with Stashed changes
On branch stashbranch
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: file2
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: file
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
expect
expect1
expect2
expected
output
repo/
usage
Dropped refs/stash@{0} (cdadb37dcdb15029c2bcf635107de6d696bb3ad3)
[stashbranch d3a23d9] alternate second
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+), 1 deletion(-)
create mode 100644 file2
ok 19 - stash branch
expecting success of 3903.20 'apply -q is quiet':
echo foo >file &&
git stash &&
git stash apply -q >output.out 2>&1 &&
test_must_be_empty output.out
Saved working directory and index state WIP on stashbranch: d3a23d9 alternate second
ok 20 - apply -q is quiet
expecting success of 3903.21 'apply --index -q is quiet':
# Added file, deleted file, modified file all staged for commit
echo foo >new-file &&
echo test >file &&
git add new-file file &&
git rm other-file &&
git stash &&
git stash apply --index -q >output.out 2>&1 &&
test_must_be_empty output.out
rm 'other-file'
Saved working directory and index state WIP on stashbranch: d3a23d9 alternate second
ok 21 - apply --index -q is quiet
expecting success of 3903.22 'save -q is quiet':
git stash save --quiet >output.out 2>&1 &&
test_must_be_empty output.out
ok 22 - save -q is quiet
expecting success of 3903.23 'pop -q works and is quiet':
git stash pop -q >output.out 2>&1 &&
echo bar >expect &&
git show :file >actual &&
test_cmp expect actual &&
test_must_be_empty output.out
ok 23 - pop -q works and is quiet
expecting success of 3903.24 'pop -q --index works and is quiet':
echo foo >file &&
git add file &&
git stash save --quiet &&
git stash pop -q --index >output.out 2>&1 &&
git diff-files file2 >file2.diff &&
test_must_be_empty file2.diff &&
test foo = "$(git show :file)" &&
test_must_be_empty output.out
ok 24 - pop -q --index works and is quiet
expecting success of 3903.25 'drop -q is quiet':
git stash &&
git stash drop -q >output.out 2>&1 &&
test_must_be_empty output.out
Saved working directory and index state WIP on stashbranch: d3a23d9 alternate second
ok 25 - drop -q is quiet
expecting success of 3903.26 'stash push -q --staged refreshes the index':
git reset --hard &&
echo test >file &&
git add file &&
git stash push -q --staged &&
git diff-files >output.out &&
test_must_be_empty output.out
HEAD is now at d3a23d9 alternate second
ok 26 - stash push -q --staged refreshes the index
expecting success of 3903.27 'stash apply -q --index refreshes the index':
echo test >other-file &&
git add other-file &&
echo another-change >other-file &&
git diff-files >expect &&
git stash &&
git stash apply -q --index &&
git diff-files >actual &&
test_cmp expect actual
Saved working directory and index state WIP on stashbranch: d3a23d9 alternate second
ok 27 - stash apply -q --index refreshes the index
expecting success of 3903.28 'stash -k':
echo bar3 >file &&
echo bar4 >file2 &&
git add file2 &&
git stash -k &&
test bar,bar4 = $(cat file),$(cat file2)
Saved working directory and index state WIP on stashbranch: d3a23d9 alternate second
ok 28 - stash -k
expecting success of 3903.29 'stash --no-keep-index':
echo bar33 >file &&
echo bar44 >file2 &&
git add file2 &&
git stash --no-keep-index &&
test bar,bar2 = $(cat file),$(cat file2)
Saved working directory and index state WIP on stashbranch: d3a23d9 alternate second
ok 29 - stash --no-keep-index
expecting success of 3903.30 'stash --staged':
echo bar3 >file &&
echo bar4 >file2 &&
git add file2 &&
git stash --staged &&
test bar3,bar2 = $(cat file),$(cat file2) &&
git reset --hard &&
git stash pop &&
test bar,bar4 = $(cat file),$(cat file2)
Saved working directory and index state WIP on stashbranch: d3a23d9 alternate second
HEAD is now at d3a23d9 alternate second
Merging Version stash was based on with Stashed changes
On branch stashbranch
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: file2
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
expect
expect1
expect2
expected
file2.diff
output
output.out
repo/
usage
no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (87589b9806264bae268601f80dfb73d1e02c4fa4)
ok 30 - stash --staged
expecting success of 3903.31 'dont assume push with non-option args':
test_must_fail git stash -q drop 2>err &&
test_i18ngrep -e "subcommand wasn't specified; 'push' can't be assumed due to unexpected token 'drop'" err
fatal: subcommand wasn't specified; 'push' can't be assumed due to unexpected token 'drop'
ok 31 - dont assume push with non-option args
expecting success of 3903.32 'stash --invalid-option':
echo bar5 >file &&
echo bar6 >file2 &&
git add file2 &&
test_must_fail git stash --invalid-option &&
test_must_fail git stash save --invalid-option &&
test bar5,bar6 = $(cat file),$(cat file2)
error: unknown option `invalid-option'
usage: git stash list [<log-options>]
or: git stash show [-u | --include-untracked | --only-untracked] [<diff-options>] [<stash>]
or: git stash drop [-q | --quiet] [<stash>]
or: git stash pop [--index] [-q | --quiet] [<stash>]
or: git stash apply [--index] [-q | --quiet] [<stash>]
or: git stash branch <branchname> [<stash>]
or: git stash [push [-p | --patch] [-S | --staged] [-k | --[no-]keep-index] [-q | --quiet]
[-u | --include-untracked] [-a | --all] [(-m | --message) <message>]
[--pathspec-from-file=<file> [--pathspec-file-nul]]
[--] [<pathspec>...]]
or: git stash save [-p | --patch] [-S | --staged] [-k | --[no-]keep-index] [-q | --quiet]
[-u | --include-untracked] [-a | --all] [<message>]
or: git stash clear
or: git stash create [<message>]
or: git stash store [(-m | --message) <message>] [-q | --quiet] <commit>
-k, --keep-index keep index
-S, --staged stash staged changes only
-p, --patch stash in patch mode
-q, --quiet quiet mode
-u, --include-untracked
include untracked files in stash
-a, --all include ignore files
-m, --message <message>
stash message
--pathspec-from-file <file>
read pathspec from file
--pathspec-file-nul with --pathspec-from-file, pathspec elements are separated with NUL character
error: unknown option `invalid-option'
usage: git stash save [-p | --patch] [-S | --staged] [-k | --[no-]keep-index] [-q | --quiet]
[-u | --include-untracked] [-a | --all] [<message>]
-k, --keep-index keep index
-S, --staged stash staged changes only
-p, --patch stash in patch mode
-q, --quiet quiet mode
-u, --include-untracked
include untracked files in stash
-a, --all include ignore files
-m, --message <message>
stash message
ok 32 - stash --invalid-option
expecting success of 3903.33 'stash an added file':
git reset --hard &&
echo new >file3 &&
git add file3 &&
git stash save "added file" &&
! test -r file3 &&
git stash apply &&
test new = "$(cat file3)"
HEAD is now at d3a23d9 alternate second
Saved working directory and index state On stashbranch: added file
Merging Version stash was based on with Stashed changes
On branch stashbranch
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: file3
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
err
expect
expect1
expect2
expected
file2.diff
output
output.out
repo/
usage
ok 33 - stash an added file
expecting success of 3903.34 'stash --intent-to-add file':
git reset --hard &&
echo new >file4 &&
git add --intent-to-add file4 &&
test_when_finished "git rm -f file4" &&
test_must_fail git stash
HEAD is now at d3a23d9 alternate second
error: Entry 'file4' not uptodate. Cannot merge.
Cannot save the current worktree state
rm 'file4'
ok 34 - stash --intent-to-add file
expecting success of 3903.35 'stash rm then recreate':
git reset --hard &&
git rm file &&
echo bar7 >file &&
git stash save "rm then recreate" &&
test bar = "$(cat file)" &&
git stash apply &&
test bar7 = "$(cat file)"
HEAD is now at d3a23d9 alternate second
rm 'file'
Saved working directory and index state On stashbranch: rm then recreate
Merging Version stash was based on with Stashed changes
On branch stashbranch
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: file
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
err
expect
expect1
expect2
expected
file2.diff
output
output.out
repo/
usage
no changes added to commit (use "git add" and/or "git commit -a")
ok 35 - stash rm then recreate
expecting success of 3903.36 'stash rm and ignore':
git reset --hard &&
git rm file &&
echo file >.gitignore &&
git stash save "rm and ignore" &&
test bar = "$(cat file)" &&
test file = "$(cat .gitignore)" &&
git stash apply &&
! test -r file &&
test file = "$(cat .gitignore)"
HEAD is now at d3a23d9 alternate second
rm 'file'
Saved working directory and index state On stashbranch: rm and ignore
Merging Version stash was based on with Stashed changes
On branch stashbranch
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
deleted: file
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitignore
actual
err
expect
expect1
expect2
expected
file2.diff
output
output.out
repo/
usage
no changes added to commit (use "git add" and/or "git commit -a")
ok 36 - stash rm and ignore
expecting success of 3903.37 'stash rm and ignore (stage .gitignore)':
git reset --hard &&
git rm file &&
echo file >.gitignore &&
git add .gitignore &&
git stash save "rm and ignore (stage .gitignore)" &&
test bar = "$(cat file)" &&
! test -r .gitignore &&
git stash apply &&
! test -r file &&
test file = "$(cat .gitignore)"
HEAD is now at d3a23d9 alternate second
rm 'file'
Saved working directory and index state On stashbranch: rm and ignore (stage .gitignore)
Merging Version stash was based on with Stashed changes
On branch stashbranch
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: .gitignore
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
deleted: file
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
err
expect
expect1
expect2
expected
file2.diff
output
output.out
repo/
usage
ok 37 - stash rm and ignore (stage .gitignore)
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
expecting success of 3903.38 'stash file to symlink':
git reset --hard &&
rm file &&
ln -s file2 file &&
git stash save "file to symlink" &&
test_path_is_file_not_symlink file &&
test bar = "$(cat file)" &&
git stash apply &&
test_path_is_symlink file &&
test "$(test_readlink file)" = file2
HEAD is now at d3a23d9 alternate second
Saved working directory and index state On stashbranch: file to symlink
Merging Version stash was based on with Stashed changes
On branch stashbranch
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
typechange: file
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
err
expect
expect1
expect2
expected
file2.diff
output
output.out
repo/
usage
no changes added to commit (use "git add" and/or "git commit -a")
ok 38 - stash file to symlink
expecting success of 3903.39 'stash file to symlink (stage rm)':
git reset --hard &&
git rm file &&
ln -s file2 file &&
git stash save "file to symlink (stage rm)" &&
test_path_is_file_not_symlink file &&
test bar = "$(cat file)" &&
git stash apply &&
test_path_is_symlink file &&
test "$(test_readlink file)" = file2
HEAD is now at d3a23d9 alternate second
rm 'file'
Saved working directory and index state On stashbranch: file to symlink (stage rm)
Merging Version stash was based on with Stashed changes
On branch stashbranch
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
typechange: file
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
err
expect
expect1
expect2
expected
file2.diff
output
output.out
repo/
usage
no changes added to commit (use "git add" and/or "git commit -a")
ok 39 - stash file to symlink (stage rm)
expecting success of 3903.40 'stash file to symlink (full stage)':
git reset --hard &&
rm file &&
ln -s file2 file &&
git add file &&
git stash save "file to symlink (full stage)" &&
test_path_is_file_not_symlink file &&
test bar = "$(cat file)" &&
git stash apply &&
test_path_is_symlink file &&
test "$(test_readlink file)" = file2
HEAD is now at d3a23d9 alternate second
Saved working directory and index state On stashbranch: file to symlink (full stage)
Merging Version stash was based on with Stashed changes
On branch stashbranch
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
typechange: file
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
err
expect
expect1
expect2
expected
file2.diff
output
output.out
repo/
usage
no changes added to commit (use "git add" and/or "git commit -a")
ok 40 - stash file to symlink (full stage)
expecting success of 3903.41 'stash symlink to file':
git reset --hard &&
test_ln_s_add file filelink &&
git commit -m "Add symlink" &&
rm filelink &&
cp file filelink &&
git stash save "symlink to file"
HEAD is now at d3a23d9 alternate second
[stashbranch f202a25] Add symlink
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 120000 filelink
Saved working directory and index state On stashbranch: symlink to file
ok 41 - stash symlink to file
expecting success of 3903.42 'this must have re-created the symlink':
test -h filelink &&
case "$(ls -l filelink)" in *" filelink -> file") :;; *) false;; esac
ok 42 - this must have re-created the symlink
expecting success of 3903.43 'unstash must re-create the file':
git stash apply &&
! test -h filelink &&
test bar = "$(cat file)"
Merging Version stash was based on with Stashed changes
On branch stashbranch
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
typechange: filelink
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
err
expect
expect1
expect2
expected
file2.diff
output
output.out
repo/
usage
no changes added to commit (use "git add" and/or "git commit -a")
ok 43 - unstash must re-create the file
expecting success of 3903.44 'stash symlink to file (stage rm)':
git reset --hard &&
git rm filelink &&
cp file filelink &&
git stash save "symlink to file (stage rm)"
HEAD is now at f202a25 Add symlink
rm 'filelink'
Saved working directory and index state On stashbranch: symlink to file (stage rm)
ok 44 - stash symlink to file (stage rm)
expecting success of 3903.45 'this must have re-created the symlink':
test -h filelink &&
case "$(ls -l filelink)" in *" filelink -> file") :;; *) false;; esac
ok 45 - this must have re-created the symlink
expecting success of 3903.46 'unstash must re-create the file':
git stash apply &&
! test -h filelink &&
test bar = "$(cat file)"
Merging Version stash was based on with Stashed changes
On branch stashbranch
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
typechange: filelink
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
err
expect
expect1
expect2
expected
file2.diff
output
output.out
repo/
usage
no changes added to commit (use "git add" and/or "git commit -a")
ok 46 - unstash must re-create the file
expecting success of 3903.47 'stash symlink to file (full stage)':
git reset --hard &&
rm filelink &&
cp file filelink &&
git add filelink &&
git stash save "symlink to file (full stage)"
HEAD is now at f202a25 Add symlink
Saved working directory and index state On stashbranch: symlink to file (full stage)
ok 47 - stash symlink to file (full stage)
expecting success of 3903.48 'this must have re-created the symlink':
test -h filelink &&
case "$(ls -l filelink)" in *" filelink -> file") :;; *) false;; esac
ok 48 - this must have re-created the symlink
expecting success of 3903.49 'unstash must re-create the file':
git stash apply &&
! test -h filelink &&
test bar = "$(cat file)"
Merging Version stash was based on with Stashed changes
On branch stashbranch
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
typechange: filelink
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
err
expect
expect1
expect2
expected
file2.diff
output
output.out
repo/
usage
no changes added to commit (use "git add" and/or "git commit -a")
ok 49 - unstash must re-create the file
checking known breakage of 3903.50 'stash directory to file':
git reset --hard &&
mkdir dir &&
echo foo >dir/file &&
git add dir/file &&
git commit -m "Add file in dir" &&
rm -fr dir &&
echo bar >dir &&
git stash save "directory to file" &&
test_path_is_dir dir &&
test foo = "$(cat dir/file)" &&
test_must_fail git stash apply &&
test bar = "$(cat dir)" &&
git reset --soft HEAD^
HEAD is now at f202a25 Add symlink
[stashbranch 36c53af] Add file in dir
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 dir/file
Saved working directory and index state On stashbranch: directory to file
Merging Version stash was based on with Stashed changes
On branch stashbranch
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
deleted: dir/file
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
err
expect
expect1
expect2
expected
file2.diff
output
output.out
repo/
usage
no changes added to commit (use "git add" and/or "git commit -a")
test_must_fail: command succeeded: git stash apply
not ok 50 - stash directory to file # TODO known breakage
checking known breakage of 3903.51 'stash file to directory':
git reset --hard &&
rm file &&
mkdir file &&
echo foo >file/file &&
git stash save "file to directory" &&
test_path_is_file file &&
test bar = "$(cat file)" &&
git stash apply &&
test_path_is_file file/file &&
test foo = "$(cat file/file)"
HEAD is now at 36c53af Add file in dir
Saved working directory and index state On stashbranch: file to directory
Merging Version stash was based on with Stashed changes
Already up to date.
On branch stashbranch
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
err
expect
expect1
expect2
expected
file2.diff
output
output.out
repo/
usage
nothing added to commit but untracked files present (use "git add" to track)
File file/file doesn't exist
not ok 51 - stash file to directory # TODO known breakage
expecting success of 3903.52 'giving too many ref arguments does not modify files':
git stash clear &&
test_when_finished "git reset --hard HEAD" &&
echo foo >file2 &&
git stash &&
echo bar >file2 &&
git stash &&
test-tool chmtime =123456789 file2 &&
for type in apply pop "branch stash-branch"
do
test_must_fail git stash $type stash@{0} stash@{1} 2>err &&
test_i18ngrep "Too many revisions" err &&
test 123456789 = $(test-tool chmtime -g file2) || return 1
done
Saved working directory and index state WIP on stashbranch: 36c53af Add file in dir
Saved working directory and index state WIP on stashbranch: 36c53af Add file in dir
Too many revisions specified: 'stash@{0}' 'stash@{1}'
Too many revisions specified: 'stash@{0}' 'stash@{1}'
Too many revisions specified: 'stash@{0}' 'stash@{1}'
HEAD is now at 36c53af Add file in dir
ok 52 - giving too many ref arguments does not modify files
expecting success of 3903.53 'drop: too many arguments errors out (does nothing)':
git stash list >expect &&
test_must_fail git stash drop stash@{0} stash@{1} 2>err &&
test_i18ngrep "Too many revisions" err &&
git stash list >actual &&
test_cmp expect actual
Too many revisions specified: 'stash@{0}' 'stash@{1}'
ok 53 - drop: too many arguments errors out (does nothing)
expecting success of 3903.54 'show: too many arguments errors out (does nothing)':
test_must_fail git stash show stash@{0} stash@{1} 2>err 1>out &&
test_i18ngrep "Too many revisions" err &&
test_must_be_empty out
Too many revisions specified: 'stash@{0}' 'stash@{1}'
ok 54 - show: too many arguments errors out (does nothing)
expecting success of 3903.55 'stash create - no changes':
git stash clear &&
test_when_finished "git reset --hard HEAD" &&
git reset --hard &&
git stash create >actual &&
test_must_be_empty actual
HEAD is now at 36c53af Add file in dir
HEAD is now at 36c53af Add file in dir
ok 55 - stash create - no changes
expecting success of 3903.56 'stash branch - no stashes on stack, stash-like argument':
git stash clear &&
test_when_finished "git reset --hard HEAD" &&
git reset --hard &&
echo foo >>file &&
STASH_ID=$(git stash create) &&
git reset --hard &&
git stash branch stash-branch ${STASH_ID} &&
test_when_finished "git reset --hard HEAD && git checkout main &&
git branch -D stash-branch" &&
test $(git ls-files --modified | wc -l) -eq 1
HEAD is now at 36c53af Add file in dir
HEAD is now at 36c53af Add file in dir
Switched to a new branch 'stash-branch'
Merging Version stash was based on with Stashed changes
On branch stash-branch
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: file
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
err
expect
expect1
expect2
expected
file2.diff
out
output
output.out
repo/
usage
no changes added to commit (use "git add" and/or "git commit -a")
HEAD is now at 36c53af Add file in dir
Switched to branch 'main'
Deleted branch stash-branch (was 36c53af).
HEAD is now at 662e8e5 second
ok 56 - stash branch - no stashes on stack, stash-like argument
expecting success of 3903.57 'stash branch - stashes on stack, stash-like argument':
git stash clear &&
test_when_finished "git reset --hard HEAD" &&
git reset --hard &&
echo foo >>file &&
git stash &&
test_when_finished "git stash drop" &&
echo bar >>file &&
STASH_ID=$(git stash create) &&
git reset --hard &&
git stash branch stash-branch ${STASH_ID} &&
test_when_finished "git reset --hard HEAD && git checkout main &&
git branch -D stash-branch" &&
test $(git ls-files --modified | wc -l) -eq 1
HEAD is now at 662e8e5 second
Saved working directory and index state WIP on main: 662e8e5 second
HEAD is now at 662e8e5 second
Switched to a new branch 'stash-branch'
Merging Version stash was based on with Stashed changes
On branch stash-branch
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: file
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
err
expect
expect1
expect2
expected
file2.diff
out
output
output.out
repo/
usage
no changes added to commit (use "git add" and/or "git commit -a")
HEAD is now at 662e8e5 second
Switched to branch 'main'
Deleted branch stash-branch (was 662e8e5).
Dropped refs/stash@{0} (52fc03a924a3ab4b9767c1a1db630e729e81e22d)
HEAD is now at 662e8e5 second
ok 57 - stash branch - stashes on stack, stash-like argument
expecting success of 3903.58 'stash branch complains with no arguments':
test_must_fail git stash branch 2>err &&
test_i18ngrep "No branch name specified" err
No branch name specified
ok 58 - stash branch complains with no arguments
expecting success of 3903.59 'stash show format defaults to --stat':
git stash clear &&
test_when_finished "git reset --hard HEAD" &&
git reset --hard &&
echo foo >>file &&
git stash &&
test_when_finished "git stash drop" &&
echo bar >>file &&
STASH_ID=$(git stash create) &&
git reset --hard &&
cat >expected <<-EOF &&
file | 1 +
1 file changed, 1 insertion(+)
EOF
git stash show ${STASH_ID} >actual &&
test_cmp expected actual
HEAD is now at 662e8e5 second
Saved working directory and index state WIP on main: 662e8e5 second
HEAD is now at 662e8e5 second
Dropped refs/stash@{0} (52fc03a924a3ab4b9767c1a1db630e729e81e22d)
HEAD is now at 662e8e5 second
ok 59 - stash show format defaults to --stat
expecting success of 3903.60 'stash show - stashes on stack, stash-like argument':
git stash clear &&
test_when_finished "git reset --hard HEAD" &&
git reset --hard &&
echo foo >>file &&
git stash &&
test_when_finished "git stash drop" &&
echo bar >>file &&
STASH_ID=$(git stash create) &&
git reset --hard &&
echo "1 0 file" >expected &&
git stash show --numstat ${STASH_ID} >actual &&
test_cmp expected actual
HEAD is now at 662e8e5 second
Saved working directory and index state WIP on main: 662e8e5 second
HEAD is now at 662e8e5 second
Dropped refs/stash@{0} (52fc03a924a3ab4b9767c1a1db630e729e81e22d)
HEAD is now at 662e8e5 second
ok 60 - stash show - stashes on stack, stash-like argument
expecting success of 3903.61 'stash show -p - stashes on stack, stash-like argument':
git stash clear &&
test_when_finished "git reset --hard HEAD" &&
git reset --hard &&
echo foo >>file &&
git stash &&
test_when_finished "git stash drop" &&
echo bar >>file &&
STASH_ID=$(git stash create) &&
git reset --hard &&
cat >expected <<-EOF &&
diff --git a/file b/file
index 7601807..935fbd3 100644
--- a/file
+++ b/file
@@ -1 +1,2 @@
baz
+bar
EOF
git stash show -p ${STASH_ID} >actual &&
diff_cmp expected actual
HEAD is now at 662e8e5 second
Saved working directory and index state WIP on main: 662e8e5 second
HEAD is now at 662e8e5 second
Dropped refs/stash@{0} (52fc03a924a3ab4b9767c1a1db630e729e81e22d)
HEAD is now at 662e8e5 second
ok 61 - stash show -p - stashes on stack, stash-like argument
expecting success of 3903.62 'stash show - no stashes on stack, stash-like argument':
git stash clear &&
test_when_finished "git reset --hard HEAD" &&
git reset --hard &&
echo foo >>file &&
STASH_ID=$(git stash create) &&
git reset --hard &&
echo "1 0 file" >expected &&
git stash show --numstat ${STASH_ID} >actual &&
test_cmp expected actual
HEAD is now at 662e8e5 second
HEAD is now at 662e8e5 second
HEAD is now at 662e8e5 second
ok 62 - stash show - no stashes on stack, stash-like argument
expecting success of 3903.63 'stash show -p - no stashes on stack, stash-like argument':
git stash clear &&
test_when_finished "git reset --hard HEAD" &&
git reset --hard &&
echo foo >>file &&
STASH_ID=$(git stash create) &&
git reset --hard &&
cat >expected <<-EOF &&
diff --git a/file b/file
index 7601807..71b52c4 100644
--- a/file
+++ b/file
@@ -1 +1,2 @@
baz
+foo
EOF
git stash show -p ${STASH_ID} >actual &&
diff_cmp expected actual
HEAD is now at 662e8e5 second
HEAD is now at 662e8e5 second
HEAD is now at 662e8e5 second
ok 63 - stash show -p - no stashes on stack, stash-like argument
expecting success of 3903.64 'stash show --patience shows diff':
git reset --hard &&
echo foo >>file &&
STASH_ID=$(git stash create) &&
git reset --hard &&
cat >expected <<-EOF &&
diff --git a/file b/file
index 7601807..71b52c4 100644
--- a/file
+++ b/file
@@ -1 +1,2 @@
baz
+foo
EOF
git stash show --patience ${STASH_ID} >actual &&
diff_cmp expected actual
HEAD is now at 662e8e5 second
HEAD is now at 662e8e5 second
ok 64 - stash show --patience shows diff
expecting success of 3903.65 'drop: fail early if specified stash is not a stash ref':
git stash clear &&
test_when_finished "git reset --hard HEAD && git stash clear" &&
git reset --hard &&
echo foo >file &&
git stash &&
echo bar >file &&
git stash &&
test_must_fail git stash drop $(git rev-parse stash@{0}) &&
git stash pop &&
test bar = "$(cat file)" &&
git reset --hard HEAD
HEAD is now at 662e8e5 second
Saved working directory and index state WIP on main: 662e8e5 second
Saved working directory and index state WIP on main: 662e8e5 second
error: 'b5efee99e793dd7b06ac07318a9440c7e09b097f' is not a stash reference
Merging Version stash was based on with Stashed changes
On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: file
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
err
expect
expect1
expect2
expected
file2.diff
out
output
output.out
repo/
usage
no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (b5efee99e793dd7b06ac07318a9440c7e09b097f)
HEAD is now at 662e8e5 second
HEAD is now at 662e8e5 second
ok 65 - drop: fail early if specified stash is not a stash ref
expecting success of 3903.66 'pop: fail early if specified stash is not a stash ref':
git stash clear &&
test_when_finished "git reset --hard HEAD && git stash clear" &&
git reset --hard &&
echo foo >file &&
git stash &&
echo bar >file &&
git stash &&
test_must_fail git stash pop $(git rev-parse stash@{0}) &&
git stash pop &&
test bar = "$(cat file)" &&
git reset --hard HEAD
HEAD is now at 662e8e5 second
Saved working directory and index state WIP on main: 662e8e5 second
Saved working directory and index state WIP on main: 662e8e5 second
error: 'b5efee99e793dd7b06ac07318a9440c7e09b097f' is not a stash reference
Merging Version stash was based on with Stashed changes
On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: file
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
err
expect
expect1
expect2
expected
file2.diff
out
output
output.out
repo/
usage
no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (b5efee99e793dd7b06ac07318a9440c7e09b097f)
HEAD is now at 662e8e5 second
HEAD is now at 662e8e5 second
ok 66 - pop: fail early if specified stash is not a stash ref
expecting success of 3903.67 'ref with non-existent reflog':
git stash clear &&
echo bar5 >file &&
echo bar6 >file2 &&
git add file2 &&
git stash &&
test_must_fail git rev-parse --quiet --verify does-not-exist &&
test_must_fail git stash drop does-not-exist &&
test_must_fail git stash drop does-not-exist@{0} &&
test_must_fail git stash pop does-not-exist &&
test_must_fail git stash pop does-not-exist@{0} &&
test_must_fail git stash apply does-not-exist &&
test_must_fail git stash apply does-not-exist@{0} &&
test_must_fail git stash show does-not-exist &&
test_must_fail git stash show does-not-exist@{0} &&
test_must_fail git stash branch tmp does-not-exist &&
test_must_fail git stash branch tmp does-not-exist@{0} &&
git stash drop
Saved working directory and index state WIP on main: 662e8e5 second
error: does-not-exist is not a valid reference
error: does-not-exist@{0} is not a valid reference
error: does-not-exist is not a valid reference
error: does-not-exist@{0} is not a valid reference
error: does-not-exist is not a valid reference
error: does-not-exist@{0} is not a valid reference
error: does-not-exist is not a valid reference
error: does-not-exist@{0} is not a valid reference
error: does-not-exist is not a valid reference
error: does-not-exist@{0} is not a valid reference
Dropped refs/stash@{0} (2292019e7bba9714c78c4046916c8d2872d65209)
ok 67 - ref with non-existent reflog
expecting success of 3903.68 'invalid ref of the form stash@{n}, n >= N':
git stash clear &&
test_must_fail git stash drop stash@{0} &&
echo bar5 >file &&
echo bar6 >file2 &&
git add file2 &&
git stash &&
test_must_fail git stash drop stash@{1} &&
test_must_fail git stash pop stash@{1} &&
test_must_fail git stash apply stash@{1} &&
test_must_fail git stash show stash@{1} &&
test_must_fail git stash branch tmp stash@{1} &&
git stash drop
error: stash@{0} is not a valid reference
Saved working directory and index state WIP on main: 662e8e5 second
fatal: log for 'stash' only has 1 entries
fatal: log for 'stash' only has 1 entries
fatal: log for 'stash' only has 1 entries
fatal: log for 'stash' only has 1 entries
fatal: log for 'stash' only has 1 entries
Dropped refs/stash@{0} (2292019e7bba9714c78c4046916c8d2872d65209)
ok 68 - invalid ref of the form stash@{n}, n >= N
expecting success of 3903.69 'invalid ref of the form "n", n >= N':
git stash clear &&
test_must_fail git stash drop 0 &&
echo bar5 >file &&
echo bar6 >file2 &&
git add file2 &&
git stash &&
test_must_fail git stash drop 1 &&
test_must_fail git stash pop 1 &&
test_must_fail git stash apply 1 &&
test_must_fail git stash show 1 &&
test_must_fail git stash branch tmp 1 &&
git stash drop
error: refs/stash@{0} is not a valid reference
Saved working directory and index state WIP on main: 662e8e5 second
fatal: log for 'refs/stash' only has 1 entries
fatal: log for 'refs/stash' only has 1 entries
fatal: log for 'refs/stash' only has 1 entries
fatal: log for 'refs/stash' only has 1 entries
fatal: log for 'refs/stash' only has 1 entries
Dropped refs/stash@{0} (2292019e7bba9714c78c4046916c8d2872d65209)
ok 69 - invalid ref of the form "n", n >= N
expecting success of 3903.70 'valid ref of the form "n", n < N':
git stash clear &&
echo bar5 >file &&
echo bar6 >file2 &&
git add file2 &&
git stash &&
git stash show 0 &&
git stash branch tmp 0 &&
git checkout main &&
git stash &&
git stash apply 0 &&
git reset --hard &&
git stash pop 0 &&
git stash &&
git stash drop 0 &&
test_must_fail git stash drop
Saved working directory and index state WIP on main: 662e8e5 second
file | 2 +-
file2 | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
Switched to a new branch 'tmp'
Merging Version stash was based on with Stashed changes
On branch tmp
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: file2
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: file
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
err
expect
expect1
expect2
expected
file2.diff
out
output
output.out
repo/
usage
Dropped refs/stash@{0} (2292019e7bba9714c78c4046916c8d2872d65209)
Switched to branch 'main'
M file
A file2
Saved working directory and index state WIP on main: 662e8e5 second
Merging Version stash was based on with Stashed changes
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: file2
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: file
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
err
expect
expect1
expect2
expected
file2.diff
out
output
output.out
repo/
usage
HEAD is now at 662e8e5 second
Merging Version stash was based on with Stashed changes
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: file2
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: file
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
err
expect
expect1
expect2
expected
file2.diff
out
output
output.out
repo/
usage
Dropped refs/stash@{0} (2292019e7bba9714c78c4046916c8d2872d65209)
Saved working directory and index state WIP on main: 662e8e5 second
Dropped refs/stash@{0} (2292019e7bba9714c78c4046916c8d2872d65209)
No stash entries found.
ok 70 - valid ref of the form "n", n < N
expecting success of 3903.71 'branch: do not drop the stash if the branch exists':
git stash clear &&
echo foo >file &&
git add file &&
git commit -m initial &&
echo bar >file &&
git stash &&
test_must_fail git stash branch main stash@{0} &&
git rev-parse stash@{0} --
[main 47d5e0e] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Saved working directory and index state WIP on main: 47d5e0e initial
fatal: a branch named 'main' already exists
68902b50f26eb6fc30df10f888c7728c286038c7
--
ok 71 - branch: do not drop the stash if the branch exists
expecting success of 3903.72 'branch: should not drop the stash if the apply fails':
git stash clear &&
git reset HEAD~1 --hard &&
echo foo >file &&
git add file &&
git commit -m initial &&
echo bar >file &&
git stash &&
echo baz >file &&
test_when_finished "git checkout main" &&
test_must_fail git stash branch new_branch stash@{0} &&
git rev-parse stash@{0} --
HEAD is now at 662e8e5 second
[main 47d5e0e] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Saved working directory and index state WIP on main: 47d5e0e initial
Switched to a new branch 'new_branch'
M file
error: Your local changes to the following files would be overwritten by merge:
file
Please commit your changes or stash them before you merge.
Aborting
Index was not unstashed.
Merging Version stash was based on with Stashed changes
On branch new_branch
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: file
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
err
expect
expect1
expect2
expected
file2.diff
out
output
output.out
repo/
usage
no changes added to commit (use "git add" and/or "git commit -a")
68902b50f26eb6fc30df10f888c7728c286038c7
--
Switched to branch 'main'
M file
ok 72 - branch: should not drop the stash if the apply fails
expecting success of 3903.73 'apply: show same status as git status (relative to ./)':
git stash clear &&
echo 1 >subdir/subfile1 &&
echo 2 >subdir/subfile2 &&
git add subdir/subfile1 &&
git commit -m subdir &&
(
cd subdir &&
echo x >subfile1 &&
echo x >../file &&
git status >../expect &&
git stash &&
sane_unset GIT_MERGE_VERBOSITY &&
git stash apply
) |
sed -e 1d >actual && # drop "Saved..."
test_cmp expect actual
[main 307367e] subdir
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 subdir/subfile1
ok 73 - apply: show same status as git status (relative to ./)
expecting success of 3903.74 'stash where working directory contains "HEAD" file':
git stash clear &&
git reset --hard &&
echo file-not-a-ref >HEAD &&
git add HEAD &&
test_tick &&
git stash &&
git diff-files --quiet &&
git diff-index --cached --quiet HEAD &&
test "$(git rev-parse stash^)" = "$(git rev-parse HEAD)" &&
git diff stash^..stash >output &&
diff_cmp expect output
HEAD is now at 307367e subdir
Saved working directory and index state WIP on main: 307367e subdir
ok 74 - stash where working directory contains "HEAD" file
expecting success of 3903.75 'store called with invalid commit':
test_must_fail git stash store foo
Cannot update refs/stash with foo
ok 75 - store called with invalid commit
expecting success of 3903.76 'store updates stash ref and reflog':
git stash clear &&
git reset --hard &&
echo quux >bazzy &&
git add bazzy &&
STASH_ID=$(git stash create) &&
git reset --hard &&
test_path_is_missing bazzy &&
git stash store -m quuxery $STASH_ID &&
test $(git rev-parse stash) = $STASH_ID &&
git reflog --format=%H stash| grep $STASH_ID &&
git stash pop &&
grep quux bazzy
HEAD is now at 307367e subdir
HEAD is now at 307367e subdir
47ce57b251b2eb978437ea9bbc89e32969254a93
Merging Version stash was based on with Stashed changes
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: bazzy
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
err
expect
expect1
expect2
expected
file2.diff
out
output
output.out
repo/
subdir/subfile2
usage
Dropped refs/stash@{0} (47ce57b251b2eb978437ea9bbc89e32969254a93)
quux
ok 76 - store updates stash ref and reflog
expecting success of 3903.77 'handle stash specification with spaces':
git stash clear &&
echo pig >file &&
git stash &&
stamp=$(git log -g --format="%cd" -1 refs/stash) &&
test_tick &&
echo cow >file &&
git stash &&
git stash apply "stash@{$stamp}" &&
grep pig file
Saved working directory and index state WIP on main: 307367e subdir
Saved working directory and index state WIP on main: 307367e subdir
Merging Version stash was based on with Stashed changes
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: bazzy
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: file
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
err
expect
expect1
expect2
expected
file2.diff
out
output
output.out
repo/
subdir/subfile2
usage
pig
ok 77 - handle stash specification with spaces
expecting success of 3903.78 'setup stash with index and worktree changes':
git stash clear &&
git reset --hard &&
echo index >file &&
git add file &&
echo working >file &&
git stash
HEAD is now at 307367e subdir
Saved working directory and index state WIP on main: 307367e subdir
ok 78 - setup stash with index and worktree changes
expecting success of 3903.79 'stash list -p shows simple diff':
cat >expect <<-EOF &&
stash@{0}
diff --git a/file b/file
index 257cc56..d26b33d 100644
--- a/file
+++ b/file
@@ -1 +1 @@
-foo
+working
EOF
git stash list --format=%gd -p >actual &&
diff_cmp expect actual
ok 79 - stash list -p shows simple diff
expecting success of 3903.80 'stash list --cc shows combined diff':
cat >expect <<-\EOF &&
stash@{0}
diff --cc file
index 257cc56,9015a7a..d26b33d
--- a/file
+++ b/file
@@@ -1,1 -1,1 +1,1 @@@
- foo
-index
++working
EOF
git stash list --format=%gd -p --cc >actual &&
diff_cmp expect actual
ok 80 - stash list --cc shows combined diff
expecting success of 3903.81 'stash is not confused by partial renames':
mv file renamed &&
git add renamed &&
git stash &&
git stash apply &&
test_path_is_file renamed &&
test_path_is_missing file
Saved working directory and index state WIP on main: 307367e subdir
Merging Version stash was based on with Stashed changes
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: renamed
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
deleted: file
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
err
expect
expect1
expect2
expected
file2.diff
out
output
output.out
repo/
subdir/subfile2
usage
ok 81 - stash is not confused by partial renames
expecting success of 3903.82 'push -m shows right message':
>foo &&
git add foo &&
git stash push -m "test message" &&
echo "stash@{0}: On main: test message" >expect &&
git stash list -1 >actual &&
test_cmp expect actual
Saved working directory and index state On main: test message
ok 82 - push -m shows right message
expecting success of 3903.83 'push -m also works without space':
>foo &&
git add foo &&
git stash push -m"unspaced test message" &&
echo "stash@{0}: On main: unspaced test message" >expect &&
git stash list -1 >actual &&
test_cmp expect actual
Saved working directory and index state On main: unspaced test message
ok 83 - push -m also works without space
expecting success of 3903.84 'store -m foo shows right message':
git stash clear &&
git reset --hard &&
echo quux >bazzy &&
git add bazzy &&
STASH_ID=$(git stash create) &&
git stash store -m "store m" $STASH_ID &&
echo "stash@{0}: store m" >expect &&
git stash list -1 >actual &&
test_cmp expect actual
HEAD is now at 307367e subdir
ok 84 - store -m foo shows right message
expecting success of 3903.85 'store -mfoo shows right message':
git stash clear &&
git reset --hard &&
echo quux >bazzy &&
git add bazzy &&
STASH_ID=$(git stash create) &&
git stash store -m"store mfoo" $STASH_ID &&
echo "stash@{0}: store mfoo" >expect &&
git stash list -1 >actual &&
test_cmp expect actual
HEAD is now at 307367e subdir
ok 85 - store -mfoo shows right message
expecting success of 3903.86 'store --message=foo shows right message':
git stash clear &&
git reset --hard &&
echo quux >bazzy &&
git add bazzy &&
STASH_ID=$(git stash create) &&
git stash store --message="store message=foo" $STASH_ID &&
echo "stash@{0}: store message=foo" >expect &&
git stash list -1 >actual &&
test_cmp expect actual
HEAD is now at 307367e subdir
ok 86 - store --message=foo shows right message
expecting success of 3903.87 'store --message foo shows right message':
git stash clear &&
git reset --hard &&
echo quux >bazzy &&
git add bazzy &&
STASH_ID=$(git stash create) &&
git stash store --message "store message foo" $STASH_ID &&
echo "stash@{0}: store message foo" >expect &&
git stash list -1 >actual &&
test_cmp expect actual
HEAD is now at 307367e subdir
ok 87 - store --message foo shows right message
expecting success of 3903.88 'push -mfoo uses right message':
>foo &&
git add foo &&
git stash push -m"test mfoo" &&
echo "stash@{0}: On main: test mfoo" >expect &&
git stash list -1 >actual &&
test_cmp expect actual
Saved working directory and index state On main: test mfoo
ok 88 - push -mfoo uses right message
expecting success of 3903.89 'push --message foo is synonym for -mfoo':
>foo &&
git add foo &&
git stash push --message "test message foo" &&
echo "stash@{0}: On main: test message foo" >expect &&
git stash list -1 >actual &&
test_cmp expect actual
Saved working directory and index state On main: test message foo
ok 89 - push --message foo is synonym for -mfoo
expecting success of 3903.90 'push --message=foo is synonym for -mfoo':
>foo &&
git add foo &&
git stash push --message="test message=foo" &&
echo "stash@{0}: On main: test message=foo" >expect &&
git stash list -1 >actual &&
test_cmp expect actual
Saved working directory and index state On main: test message=foo
ok 90 - push --message=foo is synonym for -mfoo
expecting success of 3903.91 'push -m shows right message':
>foo &&
git add foo &&
git stash push -m "test m foo" &&
echo "stash@{0}: On main: test m foo" >expect &&
git stash list -1 >actual &&
test_cmp expect actual
Saved working directory and index state On main: test m foo
ok 91 - push -m shows right message
expecting success of 3903.92 'create stores correct message':
>foo &&
git add foo &&
STASH_ID=$(git stash create "create test message") &&
echo "On main: create test message" >expect &&
git show --pretty=%s -s ${STASH_ID} >actual &&
test_cmp expect actual
ok 92 - create stores correct message
expecting success of 3903.93 'create when branch name has /':
test_when_finished "git checkout main" &&
git checkout -b some/topic &&
>foo &&
git add foo &&
STASH_ID=$(git stash create "create test message") &&
echo "On some/topic: create test message" >expect &&
git show --pretty=%s -s ${STASH_ID} >actual &&
test_cmp expect actual
Switched to a new branch 'some/topic'
Switched to branch 'main'
A foo
ok 93 - create when branch name has /
expecting success of 3903.94 'create with multiple arguments for the message':
>foo &&
git add foo &&
STASH_ID=$(git stash create test untracked) &&
echo "On main: test untracked" >expect &&
git show --pretty=%s -s ${STASH_ID} >actual &&
test_cmp expect actual
ok 94 - create with multiple arguments for the message
expecting success of 3903.95 'create in a detached state':
test_when_finished "git checkout main" &&
git checkout HEAD~1 &&
>foo &&
git add foo &&
STASH_ID=$(git stash create) &&
HEAD_ID=$(git rev-parse --short HEAD) &&
echo "WIP on (no branch): ${HEAD_ID} initial" >expect &&
git show --pretty=%s -s ${STASH_ID} >actual &&
test_cmp expect actual
Note: switching to 'HEAD~1'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 47d5e0e initial
A foo
Previous HEAD position was 47d5e0e initial
Switched to branch 'main'
A foo
ok 95 - create in a detached state
expecting success of 3903.96 'stash -- <pathspec> stashes and restores the file':
>foo &&
>bar &&
git add foo bar &&
git stash push -- foo &&
test_path_is_file bar &&
test_path_is_missing foo &&
git stash pop &&
test_path_is_file foo &&
test_path_is_file bar
Saved working directory and index state WIP on main: 307367e subdir
Merging Updated upstream with Stashed changes
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: bar
new file: foo
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
err
expect
expect1
expect2
expected
file2.diff
out
output
output.out
repo/
subdir/subfile2
usage
Dropped refs/stash@{0} (77cde497b79c4bf69eca6c6f66d3d5d913caa5d5)
ok 96 - stash -- <pathspec> stashes and restores the file
expecting success of 3903.97 'stash -- <pathspec> stashes in subdirectory':
mkdir sub &&
>foo &&
>bar &&
git add foo bar &&
(
cd sub &&
git stash push -- ../foo
) &&
test_path_is_file bar &&
test_path_is_missing foo &&
git stash pop &&
test_path_is_file foo &&
test_path_is_file bar
Saved working directory and index state WIP on main: 307367e subdir
Merging Updated upstream with Stashed changes
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: bar
new file: foo
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
err
expect
expect1
expect2
expected
file2.diff
out
output
output.out
repo/
subdir/subfile2
usage
Dropped refs/stash@{0} (77cde497b79c4bf69eca6c6f66d3d5d913caa5d5)
ok 97 - stash -- <pathspec> stashes in subdirectory
expecting success of 3903.98 'stash with multiple pathspec arguments':
>foo &&
>bar &&
>extra &&
git add foo bar extra &&
git stash push -- foo bar &&
test_path_is_missing bar &&
test_path_is_missing foo &&
test_path_is_file extra &&
git stash pop &&
test_path_is_file foo &&
test_path_is_file bar &&
test_path_is_file extra
Saved working directory and index state WIP on main: 307367e subdir
Merging Updated upstream with Stashed changes
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: bar
new file: extra
new file: foo
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
err
expect
expect1
expect2
expected
file2.diff
out
output
output.out
repo/
subdir/subfile2
usage
Dropped refs/stash@{0} (39084c1f0c9f714051bc864ea9bde5fe251804e7)
ok 98 - stash with multiple pathspec arguments
expecting success of 3903.99 'stash with file including $IFS character':
>"foo bar" &&
>foo &&
>bar &&
git add foo* &&
git stash push -- "foo b*" &&
test_path_is_missing "foo bar" &&
test_path_is_file foo &&
test_path_is_file bar &&
git stash pop &&
test_path_is_file "foo bar" &&
test_path_is_file foo &&
test_path_is_file bar
Saved working directory and index state WIP on main: 307367e subdir
Merging Updated upstream with Stashed changes
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: bar
new file: extra
new file: foo
new file: foo bar
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
err
expect
expect1
expect2
expected
file2.diff
out
output
output.out
repo/
subdir/subfile2
usage
Dropped refs/stash@{0} (a0eb395f4ba4b07852ce751bcb1e058bceeddcd6)
ok 99 - stash with file including $IFS character
expecting success of 3903.100 'stash with pathspec matching multiple paths':
echo original >file &&
echo original >other-file &&
git commit -m "two" file other-file &&
echo modified >file &&
echo modified >other-file &&
git stash push -- "*file" &&
echo original >expect &&
test_cmp expect file &&
test_cmp expect other-file &&
git stash pop &&
echo modified >expect &&
test_cmp expect file &&
test_cmp expect other-file
[main 7a1ff97] two
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+), 2 deletions(-)
Saved working directory and index state WIP on main: 7a1ff97 two
Merging Updated upstream with Stashed changes
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: bar
new file: extra
new file: foo
new file: foo bar
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: file
modified: other-file
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
err
expect
expect1
expect2
expected
file2.diff
out
output
output.out
repo/
subdir/subfile2
usage
Dropped refs/stash@{0} (a99e49675f8b387c63ffade2c2dafb4b31242b77)
ok 100 - stash with pathspec matching multiple paths
expecting success of 3903.101 'stash push -p with pathspec shows no changes only once':
>foo &&
git add foo &&
git commit -m "tmp" &&
git stash push -p foo >actual &&
echo "No local changes to save" >expect &&
git reset --hard HEAD~ &&
test_cmp expect actual
[main 9c8fc7b] tmp
Author: A U Thor <author@example.com>
4 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 bar
create mode 100644 extra
create mode 100644 foo
create mode 100644 foo bar
HEAD is now at 7a1ff97 two
ok 101 - stash push -p with pathspec shows no changes only once
expecting success of 3903.102 'push <pathspec>: show no changes when there are none':
>foo &&
git add foo &&
git commit -m "tmp" &&
git stash push foo >actual &&
echo "No local changes to save" >expect &&
git reset --hard HEAD~ &&
test_cmp expect actual
[main a73bcf2] tmp
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 foo
HEAD is now at 7a1ff97 two
ok 102 - push <pathspec>: show no changes when there are none
expecting success of 3903.103 'push: <pathspec> not in the repository errors out':
>untracked &&
test_must_fail git stash push untracked &&
test_path_is_file untracked
error: pathspec ':(,prefix:0)untracked' did not match any file(s) known to git
Did you forget to 'git add'?
ok 103 - push: <pathspec> not in the repository errors out
expecting success of 3903.104 'push: -q is quiet with changes':
>foo &&
git add foo &&
git stash push -q >output 2>&1 &&
test_must_be_empty output
ok 104 - push: -q is quiet with changes
expecting success of 3903.105 'push: -q is quiet with no changes':
git stash push -q >output 2>&1 &&
test_must_be_empty output
ok 105 - push: -q is quiet with no changes
expecting success of 3903.106 'push: -q is quiet even if there is no initial commit':
git init foo_dir &&
test_when_finished rm -rf foo_dir &&
(
cd foo_dir &&
>bar &&
test_must_fail git stash push -q >output 2>&1 &&
test_must_be_empty output
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3903-stash/foo_dir/.git/
ok 106 - push: -q is quiet even if there is no initial commit
expecting success of 3903.107 'untracked files are left in place when -u is not given':
>file &&
git add file &&
>untracked &&
git stash push file &&
test_path_is_file untracked
Saved working directory and index state WIP on main: 7a1ff97 two
ok 107 - untracked files are left in place when -u is not given
expecting success of 3903.108 'stash without verb with pathspec':
>"foo bar" &&
>foo &&
>bar &&
git add foo* &&
git stash -- "foo b*" &&
test_path_is_missing "foo bar" &&
test_path_is_file foo &&
test_path_is_file bar &&
git stash pop &&
test_path_is_file "foo bar" &&
test_path_is_file foo &&
test_path_is_file bar
Saved working directory and index state WIP on main: 7a1ff97 two
Merging Updated upstream with Stashed changes
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: foo
new file: foo bar
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
bar
err
expect
expect1
expect2
expected
file2.diff
out
output
output.out
repo/
subdir/subfile2
untracked
usage
Dropped refs/stash@{0} (ee2f40a7fbffdfcabacf51aaa804cdfb77cbd5cc)
ok 108 - stash without verb with pathspec
expecting success of 3903.109 'stash -k -- <pathspec> leaves unstaged files intact':
git reset &&
>foo &&
>bar &&
git add foo bar &&
git commit -m "test" &&
echo "foo" >foo &&
echo "bar" >bar &&
git stash -k -- foo &&
test "",bar = $(cat foo),$(cat bar) &&
git stash pop &&
test foo,bar = $(cat foo),$(cat bar)
[main f03eb4e] test
Author: A U Thor <author@example.com>
2 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 bar
create mode 100644 foo
Saved working directory and index state WIP on main: f03eb4e test
Merging Version stash was based on with Stashed changes
On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: bar
modified: foo
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
err
expect
expect1
expect2
expected
file2.diff
foo bar
out
output
output.out
repo/
subdir/subfile2
untracked
usage
no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (ba2404f46c158deabdec1768576a3ec717c3bd0e)
ok 109 - stash -k -- <pathspec> leaves unstaged files intact
expecting success of 3903.110 'stash -- <subdir> leaves untracked files in subdir intact':
git reset &&
>subdir/untracked &&
>subdir/tracked1 &&
>subdir/tracked2 &&
git add subdir/tracked* &&
git stash -- subdir/ &&
test_path_is_missing subdir/tracked1 &&
test_path_is_missing subdir/tracked2 &&
test_path_is_file subdir/untracked &&
git stash pop &&
test_path_is_file subdir/tracked1 &&
test_path_is_file subdir/tracked2 &&
test_path_is_file subdir/untracked
Unstaged changes after reset:
M bar
M foo
Saved working directory and index state WIP on main: f03eb4e test
Merging Version stash was based on with Stashed changes
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: subdir/tracked1
new file: subdir/tracked2
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: bar
modified: foo
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
err
expect
expect1
expect2
expected
file2.diff
foo bar
out
output
output.out
repo/
subdir/subfile2
subdir/untracked
untracked
usage
Dropped refs/stash@{0} (2749eb7e55d7636b47e46aaec96ad1ff54f3d24c)
ok 110 - stash -- <subdir> leaves untracked files in subdir intact
expecting success of 3903.111 'stash -- <subdir> works with binary files':
git reset &&
>subdir/untracked &&
>subdir/tracked &&
cp "$TEST_DIRECTORY"/test-binary-1.png subdir/tracked-binary &&
git add subdir/tracked* &&
git stash -- subdir/ &&
test_path_is_missing subdir/tracked &&
test_path_is_missing subdir/tracked-binary &&
test_path_is_file subdir/untracked &&
git stash pop &&
test_path_is_file subdir/tracked &&
test_path_is_file subdir/tracked-binary &&
test_path_is_file subdir/untracked
Unstaged changes after reset:
M bar
M foo
Saved working directory and index state WIP on main: f03eb4e test
Merging Version stash was based on with Stashed changes
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: subdir/tracked
new file: subdir/tracked-binary
new file: subdir/tracked1
new file: subdir/tracked2
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: bar
modified: foo
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
err
expect
expect1
expect2
expected
file2.diff
foo bar
out
output
output.out
repo/
subdir/subfile2
subdir/untracked
untracked
usage
Dropped refs/stash@{0} (e57a3ec7bcb89795529c05afe9c1d3759e31605b)
ok 111 - stash -- <subdir> works with binary files
expecting success of 3903.112 'stash with user.name and user.email set works':
test_config user.name "A U Thor" &&
test_config user.email "a.u@thor" &&
git stash
Saved working directory and index state WIP on main: f03eb4e test
ok 112 - stash with user.name and user.email set works
expecting success of 3903.113 'stash works when user.name and user.email are not set':
git reset &&
>1 &&
git add 1 &&
echo "$GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL>" >expect &&
git stash &&
git show -s --format="%an <%ae>" refs/stash >actual &&
test_cmp expect actual &&
>2 &&
git add 2 &&
test_config user.useconfigonly true &&
(
sane_unset GIT_AUTHOR_NAME &&
sane_unset GIT_AUTHOR_EMAIL &&
sane_unset GIT_COMMITTER_NAME &&
sane_unset GIT_COMMITTER_EMAIL &&
test_unconfig user.email &&
test_unconfig user.name &&
test_must_fail git commit -m "should fail" &&
echo "git stash <git@stash>" >expect &&
>2 &&
git stash &&
git show -s --format="%an <%ae>" refs/stash >actual &&
test_cmp expect actual
)
Saved working directory and index state WIP on main: f03eb4e test
Author identity unknown
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
fatal: no email was given and auto-detection is disabled
Saved working directory and index state WIP on main: f03eb4e test
ok 113 - stash works when user.name and user.email are not set
expecting success of 3903.114 'stash --keep-index with file deleted in index does not resurrect it on disk':
test_commit to-remove to-remove &&
git rm to-remove &&
git stash --keep-index &&
test_path_is_missing to-remove
[main ebe821f] to-remove
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 to-remove
rm 'to-remove'
Saved working directory and index state WIP on main: ebe821f to-remove
ok 114 - stash --keep-index with file deleted in index does not resurrect it on disk
expecting success of 3903.115 'stash apply should succeed with unmodified file':
echo base >file &&
git add file &&
git commit -m base &&
# now stash a modification
echo modified >file &&
git stash &&
# make the file stat dirty
cp file other &&
mv other file &&
git stash apply
[main 618e8ea] base
Author: A U Thor <author@example.com>
2 files changed, 1 insertion(+), 2 deletions(-)
delete mode 100644 to-remove
Saved working directory and index state WIP on main: 618e8ea base
Merging Version stash was based on with Stashed changes
On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: file
Untracked files:
(use "git add <file>..." to include in what will be committed)
actual
err
expect
expect1
expect2
expected
file2.diff
foo bar
out
output
output.out
repo/
subdir/subfile2
subdir/untracked
untracked
usage
no changes added to commit (use "git add" and/or "git commit -a")
ok 115 - stash apply should succeed with unmodified file
expecting success of 3903.116 'stash handles skip-worktree entries nicely':
test_commit A &&
echo changed >A.t &&
git add A.t &&
git update-index --skip-worktree A.t &&
rm A.t &&
git stash &&
git rev-parse --verify refs/stash:A.t
[main 3d10817] A
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 A.t
Saved working directory and index state WIP on main: 3d10817 A
5ea2ed416fbd4a4cbe227b75fe255dd7fa6bd4d6
ok 116 - stash handles skip-worktree entries nicely
expecting success of 3903.117 'stash with core.fsyncmethod=batch':
test_create_unique_files 2 4 files_base_dir &&
GIT_TEST_FSYNC=1 git -c core.fsync=loose-object -c core.fsyncmethod=batch stash push -u -- ./files_base_dir/ &&
# The files were untracked, so use the third parent,
# which contains the untracked files
git ls-tree -r stash^3 -- ./files_base_dir/ |
test_parse_ls_tree_oids >stashed_files_oids &&
# We created 2 dirs with 4 files each (8 files total) above
test_line_count = 8 stashed_files_oids &&
git cat-file --batch-check='%(objectname)' <stashed_files_oids >stashed_files_actual &&
test_cmp stashed_files_oids stashed_files_actual
Saved working directory and index state WIP on main: 3d10817 A
ok 117 - stash with core.fsyncmethod=batch
expecting success of 3903.118 'git stash succeeds despite directory/file change':
test_create_repo directory_file_switch_v1 &&
(
cd directory_file_switch_v1 &&
test_commit init &&
test_write_lines this file has some words >filler &&
git add filler &&
git commit -m filler &&
git rm filler &&
mkdir filler &&
echo contents >filler/file &&
git stash push
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3903-stash/directory_file_switch_v1/.git/
[main (root-commit) 23406b7] init
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 init.t
[main 90d1f39] filler
Author: A U Thor <author@example.com>
1 file changed, 5 insertions(+)
create mode 100644 filler
rm 'filler'
Saved working directory and index state WIP on main: 90d1f39 filler
ok 118 - git stash succeeds despite directory/file change
expecting success of 3903.119 'git stash can pop file -> directory saved changes':
test_create_repo directory_file_switch_v2 &&
(
cd directory_file_switch_v2 &&
test_commit init &&
test_write_lines this file has some words >filler &&
git add filler &&
git commit -m filler &&
git rm filler &&
mkdir filler &&
echo contents >filler/file &&
cp filler/file expect &&
git stash push --include-untracked &&
git stash apply --index &&
test_cmp expect filler/file
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3903-stash/directory_file_switch_v2/.git/
[main (root-commit) 23406b7] init
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 init.t
[main 90d1f39] filler
Author: A U Thor <author@example.com>
1 file changed, 5 insertions(+)
create mode 100644 filler
rm 'filler'
Saved working directory and index state WIP on main: 90d1f39 filler
Merging Version stash was based on with Stashed changes
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
deleted: filler
Untracked files:
(use "git add <file>..." to include in what will be committed)
expect
filler/
ok 119 - git stash can pop file -> directory saved changes
expecting success of 3903.120 'git stash can pop directory -> file saved changes':
test_create_repo directory_file_switch_v3 &&
(
cd directory_file_switch_v3 &&
test_commit init &&
mkdir filler &&
test_write_lines some words >filler/file1 &&
test_write_lines and stuff >filler/file2 &&
git add filler &&
git commit -m filler &&
git rm -rf filler &&
echo contents >filler &&
cp filler expect &&
git stash push --include-untracked &&
git stash apply --index &&
test_cmp expect filler
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3903-stash/directory_file_switch_v3/.git/
[main (root-commit) 23406b7] init
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 init.t
[main 7b72c0a] filler
Author: A U Thor <author@example.com>
2 files changed, 4 insertions(+)
create mode 100644 filler/file1
create mode 100644 filler/file2
rm 'filler/file1'
rm 'filler/file2'
Saved working directory and index state WIP on main: 7b72c0a filler
Merging Version stash was based on with Stashed changes
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
deleted: filler/file1
deleted: filler/file2
Untracked files:
(use "git add <file>..." to include in what will be committed)
expect
filler
ok 120 - git stash can pop directory -> file saved changes
expecting success of 3903.121 'restore untracked files even when we hit conflicts':
git init restore_untracked_after_conflict &&
(
cd restore_untracked_after_conflict &&
echo hi >a &&
echo there >b &&
git add . &&
git commit -m first &&
echo hello >a &&
echo something >c &&
git stash push --include-untracked &&
echo conflict >a &&
git add a &&
git commit -m second &&
test_must_fail git stash pop &&
test_path_is_file c
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t3903-stash/restore_untracked_after_conflict/.git/
[main (root-commit) fab7b0e] first
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 a
create mode 100644 b
Saved working directory and index state WIP on main: fab7b0e first
[main 3101a13] second
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Merging Updated upstream with Stashed changes
Auto-merging a
CONFLICT (content): Merge conflict in a
On branch main
Unmerged paths:
(use "git restore --staged <file>..." to unstage)
(use "git add <file>..." to mark resolution)
both modified: a
Untracked files:
(use "git add <file>..." to include in what will be committed)
c
no changes added to commit (use "git add" and/or "git commit -a")
The stash entry is kept in case you need it again.
ok 121 - restore untracked files even when we hit conflicts
# still have 2 known breakage(s)
# passed all remaining 119 test(s)
1..121
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4016-diff-quote.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4016-diff-quote/.git/
expecting success of 4016.1 'setup':
echo P0.0 >"$P0.0" &&
echo P0.1 >"$P0.1" &&
echo P0.2 >"$P0.2" &&
echo P0.3 >"$P0.3" &&
echo P1.0 >"$P1.0" &&
echo P1.2 >"$P1.2" &&
echo P1.3 >"$P1.3" &&
git add . &&
git commit -m initial &&
git mv "$P0.0" "R$P0.0" &&
git mv "$P0.1" "R$P1.0" &&
git mv "$P0.2" "R$P2.0" &&
git mv "$P0.3" "R$P3.0" &&
git mv "$P1.0" "R$P0.1" &&
git mv "$P1.2" "R$P2.1" &&
git mv "$P1.3" "R$P3.1" &&
:
[master (root-commit) ab09c26] initial
Author: A U Thor <author@example.com>
7 files changed, 7 insertions(+)
create mode 100644 "pathname\twith HT.0"
create mode 100644 "pathname\twith HT.2"
create mode 100644 "pathname\twith HT.3"
create mode 100644 pathname.0
create mode 100644 pathname.1
create mode 100644 pathname.2
create mode 100644 pathname.3
ok 1 - setup
expecting success of 4016.2 'setup expected files':
cat >expect <<\EOF
rename pathname.1 => "Rpathname\twith HT.0" (100%)
rename pathname.3 => "Rpathname\nwith LF.0" (100%)
rename "pathname\twith HT.3" => "Rpathname\nwith LF.1" (100%)
rename pathname.2 => Rpathname with SP.0 (100%)
rename "pathname\twith HT.2" => Rpathname with SP.1 (100%)
rename pathname.0 => Rpathname.0 (100%)
rename "pathname\twith HT.0" => Rpathname.1 (100%)
EOF
ok 2 - setup expected files
expecting success of 4016.3 'git diff --summary -M HEAD':
git diff --summary -M HEAD >actual &&
test_cmp expect actual
ok 3 - git diff --summary -M HEAD
expecting success of 4016.4 'git diff --numstat -M HEAD':
cat >expect <<-\EOF &&
0 0 pathname.1 => "Rpathname\twith HT.0"
0 0 pathname.3 => "Rpathname\nwith LF.0"
0 0 "pathname\twith HT.3" => "Rpathname\nwith LF.1"
0 0 pathname.2 => Rpathname with SP.0
0 0 "pathname\twith HT.2" => Rpathname with SP.1
0 0 pathname.0 => Rpathname.0
0 0 "pathname\twith HT.0" => Rpathname.1
EOF
git diff --numstat -M HEAD >actual &&
test_cmp expect actual
ok 4 - git diff --numstat -M HEAD
expecting success of 4016.5 'git diff --stat -M HEAD':
cat >expect <<-\EOF &&
pathname.1 => "Rpathname\twith HT.0" | 0
pathname.3 => "Rpathname\nwith LF.0" | 0
"pathname\twith HT.3" => "Rpathname\nwith LF.1" | 0
pathname.2 => Rpathname with SP.0 | 0
"pathname\twith HT.2" => Rpathname with SP.1 | 0
pathname.0 => Rpathname.0 | 0
"pathname\twith HT.0" => Rpathname.1 | 0
7 files changed, 0 insertions(+), 0 deletions(-)
EOF
git diff --stat -M HEAD >actual &&
test_cmp expect actual
ok 5 - git diff --stat -M HEAD
# passed all 5 test(s)
1..5
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4017-diff-retval.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4017-diff-retval/.git/
expecting success of 4017.1 'setup':
echo "1 " >a &&
git add . &&
git commit -m zeroth &&
echo 1 >a &&
git add . &&
git commit -m first &&
echo 2 >b &&
git add . &&
git commit -a -m second
[main (root-commit) 3122812] zeroth
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 a
[main 569c22f] first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[main 21e8d0a] second
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 b
ok 1 - setup
expecting success of 4017.2 'git diff --quiet -w HEAD^^ HEAD^':
git diff --quiet -w HEAD^^ HEAD^
ok 2 - git diff --quiet -w HEAD^^ HEAD^
expecting success of 4017.3 'git diff --quiet HEAD^^ HEAD^':
test_must_fail git diff --quiet HEAD^^ HEAD^
ok 3 - git diff --quiet HEAD^^ HEAD^
expecting success of 4017.4 'git diff --quiet -w HEAD^ HEAD':
test_must_fail git diff --quiet -w HEAD^ HEAD
ok 4 - git diff --quiet -w HEAD^ HEAD
expecting success of 4017.5 'git diff-tree HEAD^ HEAD':
test_expect_code 1 git diff-tree --exit-code HEAD^ HEAD
:000000 100644 0000000000000000000000000000000000000000 0cfbf08886fca9a91cb753ec8734c84fcbe52c9f A b
ok 5 - git diff-tree HEAD^ HEAD
expecting success of 4017.6 'git diff-tree HEAD^ HEAD -- a':
git diff-tree --exit-code HEAD^ HEAD -- a
ok 6 - git diff-tree HEAD^ HEAD -- a
expecting success of 4017.7 'git diff-tree HEAD^ HEAD -- b':
test_expect_code 1 git diff-tree --exit-code HEAD^ HEAD -- b
:000000 100644 0000000000000000000000000000000000000000 0cfbf08886fca9a91cb753ec8734c84fcbe52c9f A b
ok 7 - git diff-tree HEAD^ HEAD -- b
expecting success of 4017.8 'echo HEAD | git diff-tree --stdin':
echo $(git rev-parse HEAD) | test_expect_code 1 git diff-tree --exit-code --stdin
21e8d0a2c6c9e76377a32feaec217a4295c3fd39
:000000 100644 0000000000000000000000000000000000000000 0cfbf08886fca9a91cb753ec8734c84fcbe52c9f A b
ok 8 - echo HEAD | git diff-tree --stdin
expecting success of 4017.9 'git diff-tree HEAD HEAD':
git diff-tree --exit-code HEAD HEAD
ok 9 - git diff-tree HEAD HEAD
expecting success of 4017.10 'git diff-files':
git diff-files --exit-code
ok 10 - git diff-files
expecting success of 4017.11 'git diff-index --cached HEAD':
git diff-index --exit-code --cached HEAD
ok 11 - git diff-index --cached HEAD
expecting success of 4017.12 'git diff-index --cached HEAD^':
test_expect_code 1 git diff-index --exit-code --cached HEAD^
:000000 100644 0000000000000000000000000000000000000000 0cfbf08886fca9a91cb753ec8734c84fcbe52c9f A b
ok 12 - git diff-index --cached HEAD^
expecting success of 4017.13 'git diff-index --cached HEAD^':
echo text >>b &&
echo 3 >c &&
git add . &&
test_expect_code 1 git diff-index --exit-code --cached HEAD^
:000000 100644 0000000000000000000000000000000000000000 6ba94de6433d6530a0fb55e5e6da01023a4bc9e3 A b
:000000 100644 0000000000000000000000000000000000000000 00750edc07d6415dcc07ae0351e9397b0222b7ba A c
ok 13 - git diff-index --cached HEAD^
expecting success of 4017.14 'git diff-tree -Stext HEAD^ HEAD -- b':
git commit -m "text in b" &&
test_expect_code 1 git diff-tree -p --exit-code -Stext HEAD^ HEAD -- b
[main afb69a2] text in b
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 c
diff --git a/b b/b
index 0cfbf08..6ba94de 100644
--- a/b
+++ b/b
@@ -1 +1,2 @@
2
+text
ok 14 - git diff-tree -Stext HEAD^ HEAD -- b
expecting success of 4017.15 'git diff-tree -Snot-found HEAD^ HEAD -- b':
git diff-tree -p --exit-code -Snot-found HEAD^ HEAD -- b
ok 15 - git diff-tree -Snot-found HEAD^ HEAD -- b
expecting success of 4017.16 'git diff-files':
echo 3 >>c &&
test_expect_code 1 git diff-files --exit-code
:100644 100644 00750edc07d6415dcc07ae0351e9397b0222b7ba 0000000000000000000000000000000000000000 M c
ok 16 - git diff-files
expecting success of 4017.17 'git diff-index --cached HEAD':
git update-index c &&
test_expect_code 1 git diff-index --exit-code --cached HEAD
:100644 100644 00750edc07d6415dcc07ae0351e9397b0222b7ba a5c8806279fa7d6b7d04418a47e21b7e89ab18f8 M c
ok 17 - git diff-index --cached HEAD
expecting success of 4017.18 '--check --exit-code returns 0 for no difference':
git diff --check --exit-code
ok 18 - --check --exit-code returns 0 for no difference
expecting success of 4017.19 '--check --exit-code returns 1 for a clean difference':
echo "good" > a &&
test_expect_code 1 git diff --check --exit-code
ok 19 - --check --exit-code returns 1 for a clean difference
expecting success of 4017.20 '--check --exit-code returns 3 for a dirty difference':
echo "bad " >> a &&
test_expect_code 3 git diff --check --exit-code
a:2: trailing whitespace.
+bad
ok 20 - --check --exit-code returns 3 for a dirty difference
expecting success of 4017.21 '--check with --no-pager returns 2 for dirty difference':
test_expect_code 2 git --no-pager diff --check
a:2: trailing whitespace.
+bad
ok 21 - --check with --no-pager returns 2 for dirty difference
expecting success of 4017.22 'check should test not just the last line':
echo "" >>a &&
test_expect_code 2 git --no-pager diff --check
a:2: trailing whitespace.
+bad
a:3: new blank line at EOF.
ok 22 - check should test not just the last line
expecting success of 4017.23 'check detects leftover conflict markers':
git reset --hard &&
git checkout HEAD^ &&
echo binary >>b &&
git commit -m "side" b &&
test_must_fail git merge main &&
git add b &&
test_expect_code 2 git --no-pager diff --cached --check >test.out &&
test 3 = $(grep "conflict marker" test.out | wc -l) &&
git reset --hard
HEAD is now at afb69a2 text in b
Note: switching to 'HEAD^'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 21e8d0a second
[detached HEAD f89b959] side
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
Auto-merging b
CONFLICT (content): Merge conflict in b
Automatic merge failed; fix conflicts and then commit the result.
HEAD is now at f89b959 side
ok 23 - check detects leftover conflict markers
expecting success of 4017.24 'check honors conflict marker length':
git reset --hard &&
echo ">>>>>>> boo" >>b &&
echo "======" >>a &&
git diff --check a &&
test_expect_code 2 git diff --check b &&
git reset --hard &&
echo ">>>>>>>> boo" >>b &&
echo "========" >>a &&
git diff --check &&
echo "b conflict-marker-size=8" >.gitattributes &&
test_expect_code 2 git diff --check b &&
git diff --check a &&
git reset --hard
HEAD is now at f89b959 side
b:3: leftover conflict marker
HEAD is now at f89b959 side
b:3: leftover conflict marker
HEAD is now at f89b959 side
ok 24 - check honors conflict marker length
# passed all 24 test(s)
1..24
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4015-diff-whitespace.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4015-diff-whitespace/.git/
expecting success of 4015.1 'Ray Lehtiniemi's example':
cat <<-\EOF >x &&
do {
nothing;
} while (0);
EOF
git update-index --add x &&
old_hash_x=$(git hash-object x) &&
before=$(git rev-parse --short "$old_hash_x") &&
cat <<-\EOF >x &&
do
{
nothing;
}
while (0);
EOF
new_hash_x=$(git hash-object x) &&
after=$(git rev-parse --short "$new_hash_x") &&
cat <<-EOF >expect &&
diff --git a/x b/x
index $before..$after 100644
--- a/x
+++ b/x
@@ -1,3 +1,5 @@
-do {
+do
+{
nothing;
-} while (0);
+}
+while (0);
EOF
git diff >out &&
test_cmp expect out &&
git diff -w >out &&
test_cmp expect out &&
git diff -b >out &&
test_cmp expect out
ok 1 - Ray Lehtiniemi's example
expecting success of 4015.2 'another test, without options':
tr Q "\015" <<-\EOF >x &&
whitespace at beginning
whitespace change
whitespace in the middle
whitespace at end
unchanged line
CR at endQ
EOF
git update-index x &&
old_hash_x=$(git hash-object x) &&
before=$(git rev-parse --short "$old_hash_x") &&
tr "_" " " <<-\EOF >x &&
_ whitespace at beginning
whitespace change
white space in the middle
whitespace at end__
unchanged line
CR at end
EOF
new_hash_x=$(git hash-object x) &&
after=$(git rev-parse --short "$new_hash_x") &&
tr "Q_" "\015 " <<-EOF >expect &&
diff --git a/x b/x
index $before..$after 100644
--- a/x
+++ b/x
@@ -1,6 +1,6 @@
-whitespace at beginning
-whitespace change
-whitespace in the middle
-whitespace at end
+ whitespace at beginning
+whitespace change
+white space in the middle
+whitespace at end__
unchanged line
-CR at endQ
+CR at end
EOF
git diff >out &&
test_cmp expect out &&
git diff -w >out &&
test_must_be_empty out &&
git diff -w -b >out &&
test_must_be_empty out &&
git diff -w --ignore-space-at-eol >out &&
test_must_be_empty out &&
git diff -w -b --ignore-space-at-eol >out &&
test_must_be_empty out &&
git diff -w --ignore-cr-at-eol >out &&
test_must_be_empty out &&
tr "Q_" "\015 " <<-EOF >expect &&
diff --git a/x b/x
index $before..$after 100644
--- a/x
+++ b/x
@@ -1,6 +1,6 @@
-whitespace at beginning
+_ whitespace at beginning
whitespace change
-whitespace in the middle
+white space in the middle
whitespace at end__
unchanged line
CR at end
EOF
git diff -b >out &&
test_cmp expect out &&
git diff -b --ignore-space-at-eol >out &&
test_cmp expect out &&
git diff -b --ignore-cr-at-eol >out &&
test_cmp expect out &&
tr "Q_" "\015 " <<-EOF >expect &&
diff --git a/x b/x
index $before..$after 100644
--- a/x
+++ b/x
@@ -1,6 +1,6 @@
-whitespace at beginning
-whitespace change
-whitespace in the middle
+_ whitespace at beginning
+whitespace change
+white space in the middle
whitespace at end__
unchanged line
CR at end
EOF
git diff --ignore-space-at-eol >out &&
test_cmp expect out &&
git diff --ignore-space-at-eol --ignore-cr-at-eol >out &&
test_cmp expect out &&
tr "Q_" "\015 " <<-EOF >expect &&
diff --git a/x b/x
index_$before..$after 100644
--- a/x
+++ b/x
@@ -1,6 +1,6 @@
-whitespace at beginning
-whitespace change
-whitespace in the middle
-whitespace at end
+_ whitespace at beginning
+whitespace_ _change
+white space in the middle
+whitespace at end__
unchanged line
CR at end
EOF
git diff --ignore-cr-at-eol >out &&
test_cmp expect out
ok 2 - another test, without options
expecting success of 4015.3 'ignore-blank-lines: only new lines':
test_seq 5 >x &&
git update-index x &&
test_seq 5 | sed "/3/i\\
" >x &&
git diff --ignore-blank-lines >out &&
test_must_be_empty out
ok 3 - ignore-blank-lines: only new lines
expecting success of 4015.4 'ignore-blank-lines: only new lines with space':
test_seq 5 >x &&
git update-index x &&
test_seq 5 | sed "/3/i\\
" >x &&
git diff -w --ignore-blank-lines >out &&
test_must_be_empty out
ok 4 - ignore-blank-lines: only new lines with space
expecting success of 4015.5 'ignore-blank-lines: after change':
cat <<-\EOF >x &&
1
2
3
4
5
6
7
EOF
git update-index x &&
cat <<-\EOF >x &&
change
1
2
3
4
5
6
7
EOF
git diff --inter-hunk-context=100 --ignore-blank-lines >out.tmp &&
cat <<-\EOF >expected &&
diff --git a/x b/x
--- a/x
+++ b/x
@@ -1,6 +1,7 @@
+change
+
1
2
-
3
4
5
EOF
compare_diff_patch expected out.tmp
ok 5 - ignore-blank-lines: after change
expecting success of 4015.6 'ignore-blank-lines: before change':
cat <<-\EOF >x &&
1
2
3
4
5
6
7
EOF
git update-index x &&
cat <<-\EOF >x &&
1
2
3
4
5
6
7
change
EOF
git diff --inter-hunk-context=100 --ignore-blank-lines >out.tmp &&
cat <<-\EOF >expected &&
diff --git a/x b/x
--- a/x
+++ b/x
@@ -4,5 +4,7 @@
3
4
5
+
6
7
+change
EOF
compare_diff_patch expected out.tmp
ok 6 - ignore-blank-lines: before change
expecting success of 4015.7 'ignore-blank-lines: between changes':
cat <<-\EOF >x &&
1
2
3
4
5
6
7
8
9
10
EOF
git update-index x &&
cat <<-\EOF >x &&
change
1
2
3
4
5
6
7
8
9
10
change
EOF
git diff --ignore-blank-lines >out.tmp &&
cat <<-\EOF >expected &&
diff --git a/x b/x
--- a/x
+++ b/x
@@ -1,5 +1,7 @@
+change
1
2
+
3
4
5
@@ -8,5 +8,7 @@
6
7
8
+
9
10
+change
EOF
compare_diff_patch expected out.tmp
ok 7 - ignore-blank-lines: between changes
expecting success of 4015.8 'ignore-blank-lines: between changes (with interhunkctx)':
test_seq 10 >x &&
git update-index x &&
cat <<-\EOF >x &&
change
1
2
3
4
5
6
7
8
9
10
change
EOF
git diff --inter-hunk-context=2 --ignore-blank-lines >out.tmp &&
cat <<-\EOF >expected &&
diff --git a/x b/x
--- a/x
+++ b/x
@@ -1,10 +1,15 @@
+change
1
2
+
3
4
5
+
6
7
8
9
+
10
+change
EOF
compare_diff_patch expected out.tmp
ok 8 - ignore-blank-lines: between changes (with interhunkctx)
expecting success of 4015.9 'ignore-blank-lines: scattered spaces':
test_seq 10 >x &&
git update-index x &&
cat <<-\EOF >x &&
change
1
2
3
4
5
6
7
8
9
10
change
EOF
git diff --inter-hunk-context=4 --ignore-blank-lines >out.tmp &&
cat <<-\EOF >expected &&
diff --git a/x b/x
--- a/x
+++ b/x
@@ -1,3 +1,4 @@
+change
1
2
3
@@ -8,3 +15,4 @@
8
9
10
+change
EOF
compare_diff_patch expected out.tmp
ok 9 - ignore-blank-lines: scattered spaces
expecting success of 4015.10 'ignore-blank-lines: spaces coalesce':
test_seq 6 >x &&
git update-index x &&
cat <<-\EOF >x &&
change
1
2
3
4
5
6
change
EOF
git diff --inter-hunk-context=4 --ignore-blank-lines >out.tmp &&
cat <<-\EOF >expected &&
diff --git a/x b/x
--- a/x
+++ b/x
@@ -1,6 +1,11 @@
+change
1
2
3
+
4
+
5
+
6
+change
EOF
compare_diff_patch expected out.tmp
ok 10 - ignore-blank-lines: spaces coalesce
expecting success of 4015.11 'ignore-blank-lines: mix changes and blank lines':
test_seq 16 >x &&
git update-index x &&
cat <<-\EOF >x &&
change
1
2
3
4
5
change
6
7
8
9
10
11
change
12
13
14
15
16
change
EOF
git diff --ignore-blank-lines >out.tmp &&
cat <<-\EOF >expected &&
diff --git a/x b/x
--- a/x
+++ b/x
@@ -1,8 +1,11 @@
+change
1
2
+
3
4
5
+change
6
7
8
@@ -9,8 +13,11 @@
9
10
11
+change
12
13
14
+
15
16
+change
EOF
compare_diff_patch expected out.tmp
ok 11 - ignore-blank-lines: mix changes and blank lines
expecting success of 4015.12 'check mixed spaces and tabs in indent':
# This is indented with SP HT SP.
echo " foo();" >x &&
test_must_fail git diff --check >check &&
grep "space before tab in indent" check
x:1: space before tab in indent.
ok 12 - check mixed spaces and tabs in indent
expecting success of 4015.13 'check mixed tabs and spaces in indent':
# This is indented with HT SP HT.
echo " foo();" >x &&
test_must_fail git diff --check >check &&
grep "space before tab in indent" check
x:1: space before tab in indent.
ok 13 - check mixed tabs and spaces in indent
expecting success of 4015.14 'check with no whitespace errors':
git commit -m "snapshot" &&
echo "foo();" >x &&
git diff --check
[master (root-commit) e1e82b5] snapshot
Author: A U Thor <author@example.com>
1 file changed, 16 insertions(+)
create mode 100644 x
ok 14 - check with no whitespace errors
expecting success of 4015.15 'check with trailing whitespace':
echo "foo(); " >x &&
test_must_fail git diff --check
x:1: trailing whitespace.
+foo();
ok 15 - check with trailing whitespace
expecting success of 4015.16 'check with space before tab in indent':
# indent has space followed by hard tab
echo " foo();" >x &&
test_must_fail git diff --check
x:1: space before tab in indent.
+ foo();
ok 16 - check with space before tab in indent
expecting success of 4015.17 '--check and --exit-code are not exclusive':
git checkout x &&
git diff --check --exit-code
Updated 1 path from the index
ok 17 - --check and --exit-code are not exclusive
expecting success of 4015.18 '--check and --quiet are not exclusive':
git diff --check --quiet
ok 18 - --check and --quiet are not exclusive
expecting success of 4015.19 '-w and --exit-code interact sensibly':
test_when_finished "git checkout x" &&
{
test_seq 15 &&
echo " 16"
} >x &&
test_must_fail git diff --exit-code &&
git diff -w >actual &&
test_must_be_empty actual &&
git diff -w --exit-code
diff --git a/x b/x
index 469c856..bd0db19 100644
--- a/x
+++ b/x
@@ -13,4 +13,4 @@
13
14
15
-16
+ 16
Updated 1 path from the index
ok 19 - -w and --exit-code interact sensibly
expecting success of 4015.20 '-I and --exit-code interact sensibly':
test_when_finished "git checkout x" &&
{
test_seq 15 &&
echo " 16"
} >x &&
test_must_fail git diff --exit-code &&
git diff -I. >actual &&
test_must_be_empty actual &&
git diff -I. --exit-code
diff --git a/x b/x
index 469c856..bd0db19 100644
--- a/x
+++ b/x
@@ -13,4 +13,4 @@
13
14
15
-16
+ 16
Updated 1 path from the index
ok 20 - -I and --exit-code interact sensibly
expecting success of 4015.21 'check staged with no whitespace errors':
echo "foo();" >x &&
git add x &&
git diff --cached --check
ok 21 - check staged with no whitespace errors
expecting success of 4015.22 'check staged with trailing whitespace':
echo "foo(); " >x &&
git add x &&
test_must_fail git diff --cached --check
x:1: trailing whitespace.
+foo();
ok 22 - check staged with trailing whitespace
expecting success of 4015.23 'check staged with space before tab in indent':
# indent has space followed by hard tab
echo " foo();" >x &&
git add x &&
test_must_fail git diff --cached --check
x:1: space before tab in indent.
+ foo();
ok 23 - check staged with space before tab in indent
expecting success of 4015.24 'check with no whitespace errors (diff-index)':
echo "foo();" >x &&
git add x &&
git diff-index --check HEAD
ok 24 - check with no whitespace errors (diff-index)
expecting success of 4015.25 'check with trailing whitespace (diff-index)':
echo "foo(); " >x &&
git add x &&
test_must_fail git diff-index --check HEAD
x:1: trailing whitespace.
+foo();
ok 25 - check with trailing whitespace (diff-index)
expecting success of 4015.26 'check with space before tab in indent (diff-index)':
# indent has space followed by hard tab
echo " foo();" >x &&
git add x &&
test_must_fail git diff-index --check HEAD
x:1: space before tab in indent.
+ foo();
ok 26 - check with space before tab in indent (diff-index)
expecting success of 4015.27 'check staged with no whitespace errors (diff-index)':
echo "foo();" >x &&
git add x &&
git diff-index --cached --check HEAD
ok 27 - check staged with no whitespace errors (diff-index)
expecting success of 4015.28 'check staged with trailing whitespace (diff-index)':
echo "foo(); " >x &&
git add x &&
test_must_fail git diff-index --cached --check HEAD
x:1: trailing whitespace.
+foo();
ok 28 - check staged with trailing whitespace (diff-index)
expecting success of 4015.29 'check staged with space before tab in indent (diff-index)':
# indent has space followed by hard tab
echo " foo();" >x &&
git add x &&
test_must_fail git diff-index --cached --check HEAD
x:1: space before tab in indent.
+ foo();
ok 29 - check staged with space before tab in indent (diff-index)
expecting success of 4015.30 'check with no whitespace errors (diff-tree)':
echo "foo();" >x &&
git commit -m "new commit" x &&
git diff-tree --check HEAD^ HEAD
[master 8a0c590] new commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 16 deletions(-)
ok 30 - check with no whitespace errors (diff-tree)
expecting success of 4015.31 'check with trailing whitespace (diff-tree)':
echo "foo(); " >x &&
git commit -m "another commit" x &&
test_must_fail git diff-tree --check HEAD^ HEAD
[master e1bfb27] another commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
x:1: trailing whitespace.
+foo();
ok 31 - check with trailing whitespace (diff-tree)
expecting success of 4015.32 'check with space before tab in indent (diff-tree)':
# indent has space followed by hard tab
echo " foo();" >x &&
git commit -m "yet another" x &&
test_must_fail git diff-tree --check HEAD^ HEAD
[master 59fa0e9] yet another
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
x:1: space before tab in indent.
+ foo();
ok 32 - check with space before tab in indent (diff-tree)
expecting success of 4015.33 'check with ignored trailing whitespace attr (diff-tree)':
test_when_finished "git reset --hard HEAD^" &&
# create a whitespace error that should be ignored
echo "* -whitespace" >.gitattributes &&
git add .gitattributes &&
echo "foo(); " >x &&
git add x &&
git commit -m "add trailing space" &&
# with a worktree diff-tree ignores the whitespace error
git diff-tree --root --check HEAD &&
# without a worktree diff-tree still ignores the whitespace error
git -C .git diff-tree --root --check HEAD
[master fd6b52c] add trailing space
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+), 1 deletion(-)
create mode 100644 .gitattributes
fd6b52cef13aeb6b7f1885c9b07026c3aa5a1035
fd6b52cef13aeb6b7f1885c9b07026c3aa5a1035
HEAD is now at 59fa0e9 yet another
ok 33 - check with ignored trailing whitespace attr (diff-tree)
expecting success of 4015.34 'check trailing whitespace (trailing-space: off)':
git config core.whitespace "-trailing-space" &&
echo "foo (); " >x &&
git diff --check
ok 34 - check trailing whitespace (trailing-space: off)
expecting success of 4015.35 'check trailing whitespace (trailing-space: on)':
git config core.whitespace "trailing-space" &&
echo "foo (); " >x &&
test_must_fail git diff --check
x:1: trailing whitespace.
+foo ();
ok 35 - check trailing whitespace (trailing-space: on)
expecting success of 4015.36 'check space before tab in indent (space-before-tab: off)':
# indent contains space followed by HT
git config core.whitespace "-space-before-tab" &&
echo " foo ();" >x &&
git diff --check
ok 36 - check space before tab in indent (space-before-tab: off)
expecting success of 4015.37 'check space before tab in indent (space-before-tab: on)':
# indent contains space followed by HT
git config core.whitespace "space-before-tab" &&
echo " foo (); " >x &&
test_must_fail git diff --check
x:1: trailing whitespace, space before tab in indent.
+ foo ();
ok 37 - check space before tab in indent (space-before-tab: on)
expecting success of 4015.38 'check spaces as indentation (indent-with-non-tab: off)':
git config core.whitespace "-indent-with-non-tab" &&
echo " foo ();" >x &&
git diff --check
ok 38 - check spaces as indentation (indent-with-non-tab: off)
expecting success of 4015.39 'check spaces as indentation (indent-with-non-tab: on)':
git config core.whitespace "indent-with-non-tab" &&
echo " foo ();" >x &&
test_must_fail git diff --check
x:1: indent with spaces.
+ foo ();
ok 39 - check spaces as indentation (indent-with-non-tab: on)
expecting success of 4015.40 'ditto, but tabwidth=9':
git config core.whitespace "indent-with-non-tab,tabwidth=9" &&
git diff --check
ok 40 - ditto, but tabwidth=9
expecting success of 4015.41 'check tabs and spaces as indentation (indent-with-non-tab: on)':
git config core.whitespace "indent-with-non-tab" &&
echo " foo ();" >x &&
test_must_fail git diff --check
x:1: indent with spaces.
+ foo ();
ok 41 - check tabs and spaces as indentation (indent-with-non-tab: on)
expecting success of 4015.42 'ditto, but tabwidth=10':
git config core.whitespace "indent-with-non-tab,tabwidth=10" &&
test_must_fail git diff --check
x:1: indent with spaces.
+ foo ();
ok 42 - ditto, but tabwidth=10
expecting success of 4015.43 'ditto, but tabwidth=20':
git config core.whitespace "indent-with-non-tab,tabwidth=20" &&
git diff --check
ok 43 - ditto, but tabwidth=20
expecting success of 4015.44 'check tabs as indentation (tab-in-indent: off)':
git config core.whitespace "-tab-in-indent" &&
echo " foo ();" >x &&
git diff --check
ok 44 - check tabs as indentation (tab-in-indent: off)
expecting success of 4015.45 'check tabs as indentation (tab-in-indent: on)':
git config core.whitespace "tab-in-indent" &&
echo " foo ();" >x &&
test_must_fail git diff --check
x:1: tab in indent.
+ foo ();
ok 45 - check tabs as indentation (tab-in-indent: on)
expecting success of 4015.46 'check tabs and spaces as indentation (tab-in-indent: on)':
git config core.whitespace "tab-in-indent" &&
echo " foo ();" >x &&
test_must_fail git diff --check
x:1: tab in indent.
+ foo ();
ok 46 - check tabs and spaces as indentation (tab-in-indent: on)
expecting success of 4015.47 'ditto, but tabwidth=1 (must be irrelevant)':
git config core.whitespace "tab-in-indent,tabwidth=1" &&
test_must_fail git diff --check
x:1: tab in indent.
+ foo ();
ok 47 - ditto, but tabwidth=1 (must be irrelevant)
expecting success of 4015.48 'check tab-in-indent and indent-with-non-tab conflict':
git config core.whitespace "tab-in-indent,indent-with-non-tab" &&
echo "foo ();" >x &&
test_must_fail git diff --check
fatal: cannot enforce both tab-in-indent and indent-with-non-tab
ok 48 - check tab-in-indent and indent-with-non-tab conflict
expecting success of 4015.49 'check tab-in-indent excluded from wildcard whitespace attribute':
git config --unset core.whitespace &&
echo "x whitespace" >.gitattributes &&
echo " foo ();" >x &&
git diff --check &&
rm -f .gitattributes
ok 49 - check tab-in-indent excluded from wildcard whitespace attribute
expecting success of 4015.50 'line numbers in --check output are correct':
echo "" >x &&
echo "foo(); " >>x &&
test_must_fail git diff --check >check &&
grep "x:2:" check
x:2: trailing whitespace.
ok 50 - line numbers in --check output are correct
expecting success of 4015.51 'checkdiff detects new trailing blank lines (1)':
echo "foo();" >x &&
echo "" >>x &&
test_must_fail git diff --check >check &&
grep "new blank line" check
x:2: new blank line at EOF.
ok 51 - checkdiff detects new trailing blank lines (1)
expecting success of 4015.52 'checkdiff detects new trailing blank lines (2)':
test_write_lines a b "" "" >x &&
git add x &&
test_write_lines a "" "" "" "" >x &&
test_must_fail git diff --check >check &&
grep "new blank line" check
x:2: new blank line at EOF.
ok 52 - checkdiff detects new trailing blank lines (2)
expecting success of 4015.53 'checkdiff allows new blank lines':
git checkout x &&
mv x y &&
(
echo "/* This is new */" &&
echo "" &&
cat y
) >x &&
git diff --check
Updated 1 path from the index
ok 53 - checkdiff allows new blank lines
expecting success of 4015.54 'whitespace-only changes not reported (diff)':
git reset --hard &&
echo >x "hello world" &&
git add x &&
git commit -m "hello 1" &&
echo >x "hello world" &&
git diff -b >actual &&
test_must_be_empty actual
HEAD is now at 59fa0e9 yet another
[master 5a2317e] hello 1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 54 - whitespace-only changes not reported (diff)
expecting success of 4015.55 'whitespace-only changes not reported (diffstat)':
# reuse state from previous test
git diff --stat -b >actual &&
test_must_be_empty actual
ok 55 - whitespace-only changes not reported (diffstat)
expecting success of 4015.56 'whitespace changes with modification reported (diffstat)':
git reset --hard &&
echo >x "hello world" &&
git update-index --chmod=+x x &&
git diff --stat --cached -b >actual &&
cat <<-EOF >expect &&
x | 0
1 file changed, 0 insertions(+), 0 deletions(-)
EOF
test_cmp expect actual
HEAD is now at 5a2317e hello 1
ok 56 - whitespace changes with modification reported (diffstat)
expecting success of 4015.57 'whitespace-only changes reported across renames (diffstat)':
git reset --hard &&
for i in 1 2 3 4 5 6 7 8 9; do echo "$i$i$i$i$i$i" || return 1; done >x &&
git add x &&
git commit -m "base" &&
sed -e "5s/^/ /" x >z &&
git rm x &&
git add z &&
git diff -w -M --cached --stat >actual &&
cat <<-EOF >expect &&
x => z | 0
1 file changed, 0 insertions(+), 0 deletions(-)
EOF
test_cmp expect actual
HEAD is now at 5a2317e hello 1
[master bb02800] base
Author: A U Thor <author@example.com>
1 file changed, 9 insertions(+), 1 deletion(-)
rm 'x'
ok 57 - whitespace-only changes reported across renames (diffstat)
expecting success of 4015.58 'whitespace-only changes reported across renames':
git reset --hard HEAD~1 &&
for i in 1 2 3 4 5 6 7 8 9; do echo "$i$i$i$i$i$i" || return 1; done >x &&
git add x &&
hash_x=$(git hash-object x) &&
before=$(git rev-parse --short "$hash_x") &&
git commit -m "base" &&
sed -e "5s/^/ /" x >z &&
git rm x &&
git add z &&
hash_z=$(git hash-object z) &&
after=$(git rev-parse --short "$hash_z") &&
git diff -w -M --cached >actual.raw &&
sed -e "/^similarity index /s/[0-9][0-9]*/NUM/" actual.raw >actual &&
cat <<-EOF >expect &&
diff --git a/x b/z
similarity index NUM%
rename from x
rename to z
index $before..$after 100644
EOF
test_cmp expect actual
HEAD is now at 5a2317e hello 1
[master bb02800] base
Author: A U Thor <author@example.com>
1 file changed, 9 insertions(+), 1 deletion(-)
rm 'x'
ok 58 - whitespace-only changes reported across renames
expecting success of 4015.59 'rename empty':
git reset --hard &&
>empty &&
git add empty &&
git commit -m empty &&
git mv empty void &&
git diff -w --cached -M >current &&
test_cmp expected current
HEAD is now at bb02800 base
[master c4f276a] empty
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 empty
ok 59 - rename empty
expecting success of 4015.60 'combined diff with autocrlf conversion':
git reset --hard &&
test_commit "one side" x hello one-side &&
git checkout HEAD^ &&
echo >x goodbye &&
git commit -m "the other side" x &&
git config core.autocrlf true &&
test_must_fail git merge one-side >actual &&
test_i18ngrep "Automatic merge failed" actual &&
git diff >actual.raw &&
sed -e "1,/^@@@/d" actual.raw >actual &&
! grep "^-" actual
HEAD is now at c4f276a empty
[master daf548d] one side
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 9 deletions(-)
Note: switching to 'HEAD^'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at c4f276a empty
[detached HEAD fbb6449] the other side
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 9 deletions(-)
Automatic merge failed; fix conflicts and then commit the result.
ok 60 - combined diff with autocrlf conversion
expecting success of 4015.61 'setup diff colors':
git config color.diff.plain normal &&
git config color.diff.meta bold &&
git config color.diff.frag cyan &&
git config color.diff.func normal &&
git config color.diff.old red &&
git config color.diff.new green &&
git config color.diff.commit yellow &&
git config color.diff.whitespace blue &&
git config core.autocrlf false
ok 61 - setup diff colors
expecting success of 4015.62 'diff that introduces a line with only tabs':
git config core.whitespace blank-at-eol &&
git reset --hard &&
echo "test" >x &&
old_hash_x=$(git hash-object x) &&
before=$(git rev-parse --short "$old_hash_x") &&
git commit -m "initial" x &&
echo "{NTN}" | tr "NT" "\n\t" >>x &&
new_hash_x=$(git hash-object x) &&
after=$(git rev-parse --short "$new_hash_x") &&
git diff --color >current.raw &&
test_decode_color <current.raw >current &&
cat >expected <<-EOF &&
<BOLD>diff --git a/x b/x<RESET>
<BOLD>index $before..$after 100644<RESET>
<BOLD>--- a/x<RESET>
<BOLD>+++ b/x<RESET>
<CYAN>@@ -1 +1,4 @@<RESET>
test<RESET>
<GREEN>+<RESET><GREEN>{<RESET>
<GREEN>+<RESET><BLUE> <RESET>
<GREEN>+<RESET><GREEN>}<RESET>
EOF
test_cmp expected current
HEAD is now at fbb6449 the other side
[detached HEAD b654c4d] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 62 - diff that introduces a line with only tabs
expecting success of 4015.63 'diff that introduces and removes ws breakages':
git reset --hard &&
{
echo "0. blank-at-eol " &&
echo "1. blank-at-eol "
} >x &&
old_hash_x=$(git hash-object x) &&
before=$(git rev-parse --short "$old_hash_x") &&
git commit -a --allow-empty -m preimage &&
{
echo "0. blank-at-eol " &&
echo "1. still-blank-at-eol " &&
echo "2. and a new line "
} >x &&
new_hash_x=$(git hash-object x) &&
after=$(git rev-parse --short "$new_hash_x") &&
git diff --color >current.raw &&
test_decode_color <current.raw >current &&
cat >expected <<-EOF &&
<BOLD>diff --git a/x b/x<RESET>
<BOLD>index $before..$after 100644<RESET>
<BOLD>--- a/x<RESET>
<BOLD>+++ b/x<RESET>
<CYAN>@@ -1,2 +1,3 @@<RESET>
0. blank-at-eol <RESET>
<RED>-1. blank-at-eol <RESET>
<GREEN>+<RESET><GREEN>1. still-blank-at-eol<RESET><BLUE> <RESET>
<GREEN>+<RESET><GREEN>2. and a new line<RESET><BLUE> <RESET>
EOF
test_cmp expected current
HEAD is now at b654c4d initial
[detached HEAD a8a97bc] preimage
Author: A U Thor <author@example.com>
1 file changed, 2 insertions(+), 1 deletion(-)
ok 63 - diff that introduces and removes ws breakages
expecting success of 4015.64 'ws-error-highlight test setup':
git reset --hard &&
{
echo "0. blank-at-eol " &&
echo "1. blank-at-eol "
} >x &&
old_hash_x=$(git hash-object x) &&
before=$(git rev-parse --short "$old_hash_x") &&
git commit -a --allow-empty -m preimage &&
{
echo "0. blank-at-eol " &&
echo "1. still-blank-at-eol " &&
echo "2. and a new line "
} >x &&
new_hash_x=$(git hash-object x) &&
after=$(git rev-parse --short "$new_hash_x") &&
cat >expect.default-old <<-EOF &&
<BOLD>diff --git a/x b/x<RESET>
<BOLD>index $before..$after 100644<RESET>
<BOLD>--- a/x<RESET>
<BOLD>+++ b/x<RESET>
<CYAN>@@ -1,2 +1,3 @@<RESET>
0. blank-at-eol <RESET>
<RED>-<RESET><RED>1. blank-at-eol<RESET><BLUE> <RESET>
<GREEN>+<RESET><GREEN>1. still-blank-at-eol<RESET><BLUE> <RESET>
<GREEN>+<RESET><GREEN>2. and a new line<RESET><BLUE> <RESET>
EOF
cat >expect.all <<-EOF &&
<BOLD>diff --git a/x b/x<RESET>
<BOLD>index $before..$after 100644<RESET>
<BOLD>--- a/x<RESET>
<BOLD>+++ b/x<RESET>
<CYAN>@@ -1,2 +1,3 @@<RESET>
<RESET>0. blank-at-eol<RESET><BLUE> <RESET>
<RED>-<RESET><RED>1. blank-at-eol<RESET><BLUE> <RESET>
<GREEN>+<RESET><GREEN>1. still-blank-at-eol<RESET><BLUE> <RESET>
<GREEN>+<RESET><GREEN>2. and a new line<RESET><BLUE> <RESET>
EOF
cat >expect.none <<-EOF
<BOLD>diff --git a/x b/x<RESET>
<BOLD>index $before..$after 100644<RESET>
<BOLD>--- a/x<RESET>
<BOLD>+++ b/x<RESET>
<CYAN>@@ -1,2 +1,3 @@<RESET>
0. blank-at-eol <RESET>
<RED>-1. blank-at-eol <RESET>
<GREEN>+1. still-blank-at-eol <RESET>
<GREEN>+2. and a new line <RESET>
EOF
HEAD is now at a8a97bc preimage
[detached HEAD 641766e] preimage
Author: A U Thor <author@example.com>
ok 64 - ws-error-highlight test setup
expecting success of 4015.65 'test --ws-error-highlight option':
git diff --color --ws-error-highlight=default,old >current.raw &&
test_decode_color <current.raw >current &&
test_cmp expect.default-old current &&
git diff --color --ws-error-highlight=all >current.raw &&
test_decode_color <current.raw >current &&
test_cmp expect.all current &&
git diff --color --ws-error-highlight=none >current.raw &&
test_decode_color <current.raw >current &&
test_cmp expect.none current
ok 65 - test --ws-error-highlight option
expecting success of 4015.66 'test diff.wsErrorHighlight config':
git -c diff.wsErrorHighlight=default,old diff --color >current.raw &&
test_decode_color <current.raw >current &&
test_cmp expect.default-old current &&
git -c diff.wsErrorHighlight=all diff --color >current.raw &&
test_decode_color <current.raw >current &&
test_cmp expect.all current &&
git -c diff.wsErrorHighlight=none diff --color >current.raw &&
test_decode_color <current.raw >current &&
test_cmp expect.none current
ok 66 - test diff.wsErrorHighlight config
expecting success of 4015.67 'option overrides diff.wsErrorHighlight':
git -c diff.wsErrorHighlight=none \
diff --color --ws-error-highlight=default,old >current.raw &&
test_decode_color <current.raw >current &&
test_cmp expect.default-old current &&
git -c diff.wsErrorHighlight=default \
diff --color --ws-error-highlight=all >current.raw &&
test_decode_color <current.raw >current &&
test_cmp expect.all current &&
git -c diff.wsErrorHighlight=all \
diff --color --ws-error-highlight=none >current.raw &&
test_decode_color <current.raw >current &&
test_cmp expect.none current
ok 67 - option overrides diff.wsErrorHighlight
expecting success of 4015.68 'detect moved code, complete file':
git reset --hard &&
cat <<-\EOF >test.c &&
#include<stdio.h>
main()
{
printf("Hello World");
}
EOF
git add test.c &&
git commit -m "add main function" &&
file=$(git rev-parse --short HEAD:test.c) &&
git mv test.c main.c &&
test_config color.diff.oldMoved "normal red" &&
test_config color.diff.newMoved "normal green" &&
git diff HEAD --color-moved=zebra --color --no-renames >actual.raw &&
test_decode_color <actual.raw >actual &&
cat >expected <<-EOF &&
<BOLD>diff --git a/main.c b/main.c<RESET>
<BOLD>new file mode 100644<RESET>
<BOLD>index 0000000..$file<RESET>
<BOLD>--- /dev/null<RESET>
<BOLD>+++ b/main.c<RESET>
<CYAN>@@ -0,0 +1,5 @@<RESET>
<BGREEN>+<RESET><BGREEN>#include<stdio.h><RESET>
<BGREEN>+<RESET><BGREEN>main()<RESET>
<BGREEN>+<RESET><BGREEN>{<RESET>
<BGREEN>+<RESET><BGREEN>printf("Hello World");<RESET>
<BGREEN>+<RESET><BGREEN>}<RESET>
<BOLD>diff --git a/test.c b/test.c<RESET>
<BOLD>deleted file mode 100644<RESET>
<BOLD>index $file..0000000<RESET>
<BOLD>--- a/test.c<RESET>
<BOLD>+++ /dev/null<RESET>
<CYAN>@@ -1,5 +0,0 @@<RESET>
<BRED>-#include<stdio.h><RESET>
<BRED>-main()<RESET>
<BRED>-{<RESET>
<BRED>-printf("Hello World");<RESET>
<BRED>-}<RESET>
EOF
test_cmp expected actual
HEAD is now at 641766e preimage
[detached HEAD 36350aa] add main function
Author: A U Thor <author@example.com>
1 file changed, 5 insertions(+)
create mode 100644 test.c
ok 68 - detect moved code, complete file
expecting success of 4015.69 'detect malicious moved code, inside file':
test_config color.diff.oldMoved "normal red" &&
test_config color.diff.newMoved "normal green" &&
test_config color.diff.oldMovedAlternative "blue" &&
test_config color.diff.newMovedAlternative "yellow" &&
git reset --hard &&
cat <<-\EOF >main.c &&
#include<stdio.h>
int stuff()
{
printf("Hello ");
printf("World\n");
}
int secure_foo(struct user *u)
{
if (!u->is_allowed_foo)
return;
foo(u);
}
int main()
{
foo();
}
EOF
cat <<-\EOF >test.c &&
#include<stdio.h>
int bar()
{
printf("Hello World, but different\n");
}
int another_function()
{
bar();
}
EOF
git add main.c test.c &&
git commit -m "add main and test file" &&
before_main=$(git rev-parse --short HEAD:main.c) &&
before_test=$(git rev-parse --short HEAD:test.c) &&
cat <<-\EOF >main.c &&
#include<stdio.h>
int stuff()
{
printf("Hello ");
printf("World\n");
}
int main()
{
foo();
}
EOF
cat <<-\EOF >test.c &&
#include<stdio.h>
int bar()
{
printf("Hello World, but different\n");
}
int secure_foo(struct user *u)
{
foo(u);
if (!u->is_allowed_foo)
return;
}
int another_function()
{
bar();
}
EOF
hash_main=$(git hash-object main.c) &&
after_main=$(git rev-parse --short "$hash_main") &&
hash_test=$(git hash-object test.c) &&
after_test=$(git rev-parse --short "$hash_test") &&
git diff HEAD --no-renames --color-moved=zebra --color >actual.raw &&
test_decode_color <actual.raw >actual &&
cat <<-EOF >expected &&
<BOLD>diff --git a/main.c b/main.c<RESET>
<BOLD>index $before_main..$after_main 100644<RESET>
<BOLD>--- a/main.c<RESET>
<BOLD>+++ b/main.c<RESET>
<CYAN>@@ -5,13 +5,6 @@<RESET> <RESET>printf("Hello ");<RESET>
printf("World\n");<RESET>
}<RESET>
<RESET>
<BRED>-int secure_foo(struct user *u)<RESET>
<BRED>-{<RESET>
<BLUE>-if (!u->is_allowed_foo)<RESET>
<BLUE>-return;<RESET>
<RED>-foo(u);<RESET>
<RED>-}<RESET>
<RED>-<RESET>
int main()<RESET>
{<RESET>
foo();<RESET>
<BOLD>diff --git a/test.c b/test.c<RESET>
<BOLD>index $before_test..$after_test 100644<RESET>
<BOLD>--- a/test.c<RESET>
<BOLD>+++ b/test.c<RESET>
<CYAN>@@ -4,6 +4,13 @@<RESET> <RESET>int bar()<RESET>
printf("Hello World, but different\n");<RESET>
}<RESET>
<RESET>
<BGREEN>+<RESET><BGREEN>int secure_foo(struct user *u)<RESET>
<BGREEN>+<RESET><BGREEN>{<RESET>
<GREEN>+<RESET><GREEN>foo(u);<RESET>
<BGREEN>+<RESET><BGREEN>if (!u->is_allowed_foo)<RESET>
<BGREEN>+<RESET><BGREEN>return;<RESET>
<GREEN>+<RESET><GREEN>}<RESET>
<GREEN>+<RESET>
int another_function()<RESET>
{<RESET>
bar();<RESET>
EOF
test_cmp expected actual
HEAD is now at 36350aa add main function
[detached HEAD 727fc3d] add main and test file
Author: A U Thor <author@example.com>
2 files changed, 25 insertions(+), 2 deletions(-)
create mode 100644 main.c
ok 69 - detect malicious moved code, inside file
expecting success of 4015.70 'plain moved code, inside file':
test_config color.diff.oldMoved "normal red" &&
test_config color.diff.newMoved "normal green" &&
test_config color.diff.oldMovedAlternative "blue" &&
test_config color.diff.newMovedAlternative "yellow" &&
# needs previous test as setup
git diff HEAD --no-renames --color-moved=plain --color >actual.raw &&
test_decode_color <actual.raw >actual &&
cat <<-EOF >expected &&
<BOLD>diff --git a/main.c b/main.c<RESET>
<BOLD>index $before_main..$after_main 100644<RESET>
<BOLD>--- a/main.c<RESET>
<BOLD>+++ b/main.c<RESET>
<CYAN>@@ -5,13 +5,6 @@<RESET> <RESET>printf("Hello ");<RESET>
printf("World\n");<RESET>
}<RESET>
<RESET>
<BRED>-int secure_foo(struct user *u)<RESET>
<BRED>-{<RESET>
<BRED>-if (!u->is_allowed_foo)<RESET>
<BRED>-return;<RESET>
<BRED>-foo(u);<RESET>
<BRED>-}<RESET>
<BRED>-<RESET>
int main()<RESET>
{<RESET>
foo();<RESET>
<BOLD>diff --git a/test.c b/test.c<RESET>
<BOLD>index $before_test..$after_test 100644<RESET>
<BOLD>--- a/test.c<RESET>
<BOLD>+++ b/test.c<RESET>
<CYAN>@@ -4,6 +4,13 @@<RESET> <RESET>int bar()<RESET>
printf("Hello World, but different\n");<RESET>
}<RESET>
<RESET>
<BGREEN>+<RESET><BGREEN>int secure_foo(struct user *u)<RESET>
<BGREEN>+<RESET><BGREEN>{<RESET>
<BGREEN>+<RESET><BGREEN>foo(u);<RESET>
<BGREEN>+<RESET><BGREEN>if (!u->is_allowed_foo)<RESET>
<BGREEN>+<RESET><BGREEN>return;<RESET>
<BGREEN>+<RESET><BGREEN>}<RESET>
<BGREEN>+<RESET>
int another_function()<RESET>
{<RESET>
bar();<RESET>
EOF
test_cmp expected actual
ok 70 - plain moved code, inside file
expecting success of 4015.71 'detect blocks of moved code':
git reset --hard &&
cat <<-\EOF >lines.txt &&
long line 1
long line 2
long line 3
line 4
line 5
line 6
line 7
line 8
line 9
line 10
line 11
line 12
line 13
long line 14
long line 15
long line 16
EOF
git add lines.txt &&
git commit -m "add poetry" &&
cat <<-\EOF >lines.txt &&
line 4
line 5
line 6
line 7
line 8
line 9
long line 1
long line 2
long line 3
long line 14
long line 15
long line 16
line 10
line 11
line 12
line 13
EOF
test_config color.diff.oldMoved "magenta" &&
test_config color.diff.newMoved "cyan" &&
test_config color.diff.oldMovedAlternative "blue" &&
test_config color.diff.newMovedAlternative "yellow" &&
test_config color.diff.oldMovedDimmed "normal magenta" &&
test_config color.diff.newMovedDimmed "normal cyan" &&
test_config color.diff.oldMovedAlternativeDimmed "normal blue" &&
test_config color.diff.newMovedAlternativeDimmed "normal yellow" &&
git diff HEAD --no-renames --color-moved=blocks --color >actual.raw &&
grep -v "index" actual.raw | test_decode_color >actual &&
cat <<-\EOF >expected &&
<BOLD>diff --git a/lines.txt b/lines.txt<RESET>
<BOLD>--- a/lines.txt<RESET>
<BOLD>+++ b/lines.txt<RESET>
<CYAN>@@ -1,16 +1,16 @@<RESET>
<MAGENTA>-long line 1<RESET>
<MAGENTA>-long line 2<RESET>
<MAGENTA>-long line 3<RESET>
line 4<RESET>
line 5<RESET>
line 6<RESET>
line 7<RESET>
line 8<RESET>
line 9<RESET>
<CYAN>+<RESET><CYAN>long line 1<RESET>
<CYAN>+<RESET><CYAN>long line 2<RESET>
<CYAN>+<RESET><CYAN>long line 3<RESET>
<CYAN>+<RESET><CYAN>long line 14<RESET>
<CYAN>+<RESET><CYAN>long line 15<RESET>
<CYAN>+<RESET><CYAN>long line 16<RESET>
line 10<RESET>
line 11<RESET>
line 12<RESET>
line 13<RESET>
<MAGENTA>-long line 14<RESET>
<MAGENTA>-long line 15<RESET>
<MAGENTA>-long line 16<RESET>
EOF
test_cmp expected actual
HEAD is now at 727fc3d add main and test file
[detached HEAD 0f7fe07] add poetry
Author: A U Thor <author@example.com>
1 file changed, 16 insertions(+)
create mode 100644 lines.txt
ok 71 - detect blocks of moved code
expecting success of 4015.72 'detect permutations inside moved code -- dimmed-zebra':
# reuse setup from test before!
test_config color.diff.oldMoved "magenta" &&
test_config color.diff.newMoved "cyan" &&
test_config color.diff.oldMovedAlternative "blue" &&
test_config color.diff.newMovedAlternative "yellow" &&
test_config color.diff.oldMovedDimmed "normal magenta" &&
test_config color.diff.newMovedDimmed "normal cyan" &&
test_config color.diff.oldMovedAlternativeDimmed "normal blue" &&
test_config color.diff.newMovedAlternativeDimmed "normal yellow" &&
git diff HEAD --no-renames --color-moved=dimmed-zebra --color >actual.raw &&
grep -v "index" actual.raw | test_decode_color >actual &&
cat <<-\EOF >expected &&
<BOLD>diff --git a/lines.txt b/lines.txt<RESET>
<BOLD>--- a/lines.txt<RESET>
<BOLD>+++ b/lines.txt<RESET>
<CYAN>@@ -1,16 +1,16 @@<RESET>
<BMAGENTA>-long line 1<RESET>
<BMAGENTA>-long line 2<RESET>
<BMAGENTA>-long line 3<RESET>
line 4<RESET>
line 5<RESET>
line 6<RESET>
line 7<RESET>
line 8<RESET>
line 9<RESET>
<BCYAN>+<RESET><BCYAN>long line 1<RESET>
<BCYAN>+<RESET><BCYAN>long line 2<RESET>
<CYAN>+<RESET><CYAN>long line 3<RESET>
<YELLOW>+<RESET><YELLOW>long line 14<RESET>
<BYELLOW>+<RESET><BYELLOW>long line 15<RESET>
<BYELLOW>+<RESET><BYELLOW>long line 16<RESET>
line 10<RESET>
line 11<RESET>
line 12<RESET>
line 13<RESET>
<BMAGENTA>-long line 14<RESET>
<BMAGENTA>-long line 15<RESET>
<BMAGENTA>-long line 16<RESET>
EOF
test_cmp expected actual
ok 72 - detect permutations inside moved code -- dimmed-zebra
expecting success of 4015.73 'zebra alternate color is only used when necessary':
cat >old.txt <<-\EOF &&
line 1A should be marked as oldMoved newMovedAlternate
line 1B should be marked as oldMoved newMovedAlternate
unchanged
line 2A should be marked as oldMoved newMovedAlternate
line 2B should be marked as oldMoved newMovedAlternate
line 3A should be marked as oldMovedAlternate newMoved
line 3B should be marked as oldMovedAlternate newMoved
unchanged
line 4A should be marked as oldMoved newMovedAlternate
line 4B should be marked as oldMoved newMovedAlternate
line 5A should be marked as oldMovedAlternate newMoved
line 5B should be marked as oldMovedAlternate newMoved
line 6A should be marked as oldMoved newMoved
line 6B should be marked as oldMoved newMoved
EOF
cat >new.txt <<-\EOF &&
line 1A should be marked as oldMoved newMovedAlternate
line 1B should be marked as oldMoved newMovedAlternate
unchanged
line 3A should be marked as oldMovedAlternate newMoved
line 3B should be marked as oldMovedAlternate newMoved
line 2A should be marked as oldMoved newMovedAlternate
line 2B should be marked as oldMoved newMovedAlternate
unchanged
line 6A should be marked as oldMoved newMoved
line 6B should be marked as oldMoved newMoved
line 4A should be marked as oldMoved newMovedAlternate
line 4B should be marked as oldMoved newMovedAlternate
line 5A should be marked as oldMovedAlternate newMoved
line 5B should be marked as oldMovedAlternate newMoved
EOF
test_expect_code 1 git diff --no-index --color --color-moved=zebra \
--color-moved-ws=allow-indentation-change \
old.txt new.txt >output &&
grep -v index output | test_decode_color >actual &&
cat >expected <<-\EOF &&
<BOLD>diff --git a/old.txt b/new.txt<RESET>
<BOLD>--- a/old.txt<RESET>
<BOLD>+++ b/new.txt<RESET>
<CYAN>@@ -1,14 +1,14 @@<RESET>
<BOLD;MAGENTA>-line 1A should be marked as oldMoved newMovedAlternate<RESET>
<BOLD;MAGENTA>-line 1B should be marked as oldMoved newMovedAlternate<RESET>
<BOLD;CYAN>+<RESET><BOLD;CYAN> line 1A should be marked as oldMoved newMovedAlternate<RESET>
<BOLD;CYAN>+<RESET><BOLD;CYAN> line 1B should be marked as oldMoved newMovedAlternate<RESET>
unchanged<RESET>
<BOLD;MAGENTA>-line 2A should be marked as oldMoved newMovedAlternate<RESET>
<BOLD;MAGENTA>-line 2B should be marked as oldMoved newMovedAlternate<RESET>
<BOLD;BLUE>-line 3A should be marked as oldMovedAlternate newMoved<RESET>
<BOLD;BLUE>-line 3B should be marked as oldMovedAlternate newMoved<RESET>
<BOLD;CYAN>+<RESET><BOLD;CYAN> line 3A should be marked as oldMovedAlternate newMoved<RESET>
<BOLD;CYAN>+<RESET><BOLD;CYAN> line 3B should be marked as oldMovedAlternate newMoved<RESET>
<BOLD;YELLOW>+<RESET><BOLD;YELLOW> line 2A should be marked as oldMoved newMovedAlternate<RESET>
<BOLD;YELLOW>+<RESET><BOLD;YELLOW> line 2B should be marked as oldMoved newMovedAlternate<RESET>
unchanged<RESET>
<BOLD;MAGENTA>-line 4A should be marked as oldMoved newMovedAlternate<RESET>
<BOLD;MAGENTA>-line 4B should be marked as oldMoved newMovedAlternate<RESET>
<BOLD;BLUE>-line 5A should be marked as oldMovedAlternate newMoved<RESET>
<BOLD;BLUE>-line 5B should be marked as oldMovedAlternate newMoved<RESET>
<BOLD;MAGENTA>-line 6A should be marked as oldMoved newMoved<RESET>
<BOLD;MAGENTA>-line 6B should be marked as oldMoved newMoved<RESET>
<BOLD;CYAN>+<RESET><BOLD;CYAN> line 6A should be marked as oldMoved newMoved<RESET>
<BOLD;CYAN>+<RESET><BOLD;CYAN> line 6B should be marked as oldMoved newMoved<RESET>
<BOLD;YELLOW>+<RESET><BOLD;YELLOW> line 4A should be marked as oldMoved newMovedAlternate<RESET>
<BOLD;YELLOW>+<RESET><BOLD;YELLOW> line 4B should be marked as oldMoved newMovedAlternate<RESET>
<BOLD;CYAN>+<RESET><BOLD;CYAN> line 5A should be marked as oldMovedAlternate newMoved<RESET>
<BOLD;CYAN>+<RESET><BOLD;CYAN> line 5B should be marked as oldMovedAlternate newMoved<RESET>
EOF
test_cmp expected actual
ok 73 - zebra alternate color is only used when necessary
expecting success of 4015.74 'short lines of opposite sign do not get marked as moved':
cat >old.txt <<-\EOF &&
this line should be marked as moved
unchanged
unchanged
unchanged
unchanged
too short
this line should be marked as oldMoved newMoved
this line should be marked as oldMovedAlternate newMoved
unchanged 1
unchanged 2
unchanged 3
unchanged 4
this line should be marked as oldMoved newMoved/newMovedAlternate
EOF
cat >new.txt <<-\EOF &&
too short
unchanged
unchanged
this line should be marked as moved
too short
unchanged
unchanged
this line should be marked as oldMoved newMoved/newMovedAlternate
unchanged 1
unchanged 2
this line should be marked as oldMovedAlternate newMoved
this line should be marked as oldMoved newMoved/newMovedAlternate
unchanged 3
this line should be marked as oldMoved newMoved
unchanged 4
EOF
test_expect_code 1 git diff --no-index --color --color-moved=zebra \
old.txt new.txt >output && cat output &&
grep -v index output | test_decode_color >actual &&
cat >expect <<-\EOF &&
<BOLD>diff --git a/old.txt b/new.txt<RESET>
<BOLD>--- a/old.txt<RESET>
<BOLD>+++ b/new.txt<RESET>
<CYAN>@@ -1,13 +1,15 @@<RESET>
<BOLD;MAGENTA>-this line should be marked as moved<RESET>
<GREEN>+<RESET><GREEN>too short<RESET>
unchanged<RESET>
unchanged<RESET>
<BOLD;CYAN>+<RESET><BOLD;CYAN>this line should be marked as moved<RESET>
<GREEN>+<RESET><GREEN>too short<RESET>
unchanged<RESET>
unchanged<RESET>
<RED>-too short<RESET>
<BOLD;MAGENTA>-this line should be marked as oldMoved newMoved<RESET>
<BOLD;BLUE>-this line should be marked as oldMovedAlternate newMoved<RESET>
<BOLD;CYAN>+<RESET><BOLD;CYAN>this line should be marked as oldMoved newMoved/newMovedAlternate<RESET>
unchanged 1<RESET>
unchanged 2<RESET>
<BOLD;CYAN>+<RESET><BOLD;CYAN>this line should be marked as oldMovedAlternate newMoved<RESET>
<BOLD;YELLOW>+<RESET><BOLD;YELLOW>this line should be marked as oldMoved newMoved/newMovedAlternate<RESET>
unchanged 3<RESET>
<BOLD;CYAN>+<RESET><BOLD;CYAN>this line should be marked as oldMoved newMoved<RESET>
unchanged 4<RESET>
<BOLD;MAGENTA>-this line should be marked as oldMoved newMoved/newMovedAlternate<RESET>
EOF
test_cmp expect actual
[1mdiff --git a/old.txt b/new.txt[m
[1mindex b69be6f..7db2c55 100644[m
[1m--- a/old.txt[m
[1m+++ b/new.txt[m
[36m@@ -1,13 +1,15 @@[m
[1;35m-this line should be marked as moved[m
[32m+[m[32mtoo short[m
unchanged[m
unchanged[m
[1;36m+[m[1;36mthis line should be marked as moved[m
[32m+[m[32mtoo short[m
unchanged[m
unchanged[m
[31m-too short[m
[1;35m-this line should be marked as oldMoved newMoved[m
[1;34m-this line should be marked as oldMovedAlternate newMoved[m
[1;36m+[m[1;36mthis line should be marked as oldMoved newMoved/newMovedAlternate[m
unchanged 1[m
unchanged 2[m
[1;36m+[m[1;36mthis line should be marked as oldMovedAlternate newMoved[m
[1;33m+[m[1;33mthis line should be marked as oldMoved newMoved/newMovedAlternate[m
unchanged 3[m
[1;36m+[m[1;36mthis line should be marked as oldMoved newMoved[m
unchanged 4[m
[1;35m-this line should be marked as oldMoved newMoved/newMovedAlternate[m
ok 74 - short lines of opposite sign do not get marked as moved
expecting success of 4015.75 'cmd option assumes configured colored-moved':
test_config color.diff.oldMoved "magenta" &&
test_config color.diff.newMoved "cyan" &&
test_config color.diff.oldMovedAlternative "blue" &&
test_config color.diff.newMovedAlternative "yellow" &&
test_config color.diff.oldMovedDimmed "normal magenta" &&
test_config color.diff.newMovedDimmed "normal cyan" &&
test_config color.diff.oldMovedAlternativeDimmed "normal blue" &&
test_config color.diff.newMovedAlternativeDimmed "normal yellow" &&
test_config diff.colorMoved zebra &&
git diff HEAD --no-renames --color-moved --color >actual.raw &&
grep -v "index" actual.raw | test_decode_color >actual &&
cat <<-\EOF >expected &&
<BOLD>diff --git a/lines.txt b/lines.txt<RESET>
<BOLD>--- a/lines.txt<RESET>
<BOLD>+++ b/lines.txt<RESET>
<CYAN>@@ -1,16 +1,16 @@<RESET>
<MAGENTA>-long line 1<RESET>
<MAGENTA>-long line 2<RESET>
<MAGENTA>-long line 3<RESET>
line 4<RESET>
line 5<RESET>
line 6<RESET>
line 7<RESET>
line 8<RESET>
line 9<RESET>
<CYAN>+<RESET><CYAN>long line 1<RESET>
<CYAN>+<RESET><CYAN>long line 2<RESET>
<CYAN>+<RESET><CYAN>long line 3<RESET>
<YELLOW>+<RESET><YELLOW>long line 14<RESET>
<YELLOW>+<RESET><YELLOW>long line 15<RESET>
<YELLOW>+<RESET><YELLOW>long line 16<RESET>
line 10<RESET>
line 11<RESET>
line 12<RESET>
line 13<RESET>
<MAGENTA>-long line 14<RESET>
<MAGENTA>-long line 15<RESET>
<MAGENTA>-long line 16<RESET>
EOF
test_cmp expected actual
ok 75 - cmd option assumes configured colored-moved
expecting success of 4015.76 'no effect on diff from --color-moved with --word-diff':
cat <<-\EOF >text.txt &&
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
EOF
git add text.txt &&
git commit -a -m "clean state" &&
cat <<-\EOF >text.txt &&
simply Lorem Ipsum dummy is text of the typesetting and printing industry.
EOF
git diff --color-moved --word-diff >actual &&
git diff --word-diff >expect &&
test_cmp expect actual
[detached HEAD 17804c5] clean state
Author: A U Thor <author@example.com>
2 files changed, 7 insertions(+), 6 deletions(-)
create mode 100644 text.txt
ok 76 - no effect on diff from --color-moved with --word-diff
expecting success of 4015.77 'no effect on show from --color-moved with --word-diff':
git show --color-moved --word-diff >actual &&
git show --word-diff >expect &&
test_cmp expect actual
ok 77 - no effect on show from --color-moved with --word-diff
expecting success of 4015.78 'set up whitespace tests':
git reset --hard &&
# Note that these lines have no leading or trailing whitespace.
cat <<-\EOF >lines.txt &&
line 1
line 2
line 3
line 4
line 5
long line 6
long line 7
long line 8
long line 9
EOF
git add lines.txt &&
git commit -m "add poetry" &&
git config color.diff.oldMoved "magenta" &&
git config color.diff.newMoved "cyan"
HEAD is now at 17804c5 clean state
[detached HEAD 20118d6] add poetry
Author: A U Thor <author@example.com>
1 file changed, 7 insertions(+), 14 deletions(-)
ok 78 - set up whitespace tests
expecting success of 4015.79 'move detection ignoring whitespace ':
q_to_tab <<-\EOF >lines.txt &&
Qlong line 6
Qlong line 7
Qlong line 8
Qchanged long line 9
line 1
line 2
line 3
line 4
line 5
EOF
git diff HEAD --no-renames --color-moved --color >actual.raw &&
grep -v "index" actual.raw | test_decode_color >actual &&
cat <<-\EOF >expected &&
<BOLD>diff --git a/lines.txt b/lines.txt<RESET>
<BOLD>--- a/lines.txt<RESET>
<BOLD>+++ b/lines.txt<RESET>
<CYAN>@@ -1,9 +1,9 @@<RESET>
<GREEN>+<RESET> <GREEN>long line 6<RESET>
<GREEN>+<RESET> <GREEN>long line 7<RESET>
<GREEN>+<RESET> <GREEN>long line 8<RESET>
<GREEN>+<RESET> <GREEN>changed long line 9<RESET>
line 1<RESET>
line 2<RESET>
line 3<RESET>
line 4<RESET>
line 5<RESET>
<RED>-long line 6<RESET>
<RED>-long line 7<RESET>
<RED>-long line 8<RESET>
<RED>-long line 9<RESET>
EOF
test_cmp expected actual &&
git diff HEAD --no-renames --color-moved --color \
--color-moved-ws=ignore-all-space >actual.raw &&
grep -v "index" actual.raw | test_decode_color >actual &&
cat <<-\EOF >expected &&
<BOLD>diff --git a/lines.txt b/lines.txt<RESET>
<BOLD>--- a/lines.txt<RESET>
<BOLD>+++ b/lines.txt<RESET>
<CYAN>@@ -1,9 +1,9 @@<RESET>
<CYAN>+<RESET> <CYAN>long line 6<RESET>
<CYAN>+<RESET> <CYAN>long line 7<RESET>
<CYAN>+<RESET> <CYAN>long line 8<RESET>
<GREEN>+<RESET> <GREEN>changed long line 9<RESET>
line 1<RESET>
line 2<RESET>
line 3<RESET>
line 4<RESET>
line 5<RESET>
<MAGENTA>-long line 6<RESET>
<MAGENTA>-long line 7<RESET>
<MAGENTA>-long line 8<RESET>
<RED>-long line 9<RESET>
EOF
test_cmp expected actual
ok 79 - move detection ignoring whitespace
expecting success of 4015.80 'move detection ignoring whitespace changes':
git reset --hard &&
# Lines 6-8 have a space change, but 9 is new whitespace
q_to_tab <<-\EOF >lines.txt &&
longQline 6
longQline 7
longQline 8
long liQne 9
line 1
line 2
line 3
line 4
line 5
EOF
git diff HEAD --no-renames --color-moved --color >actual.raw &&
grep -v "index" actual.raw | test_decode_color >actual &&
cat <<-\EOF >expected &&
<BOLD>diff --git a/lines.txt b/lines.txt<RESET>
<BOLD>--- a/lines.txt<RESET>
<BOLD>+++ b/lines.txt<RESET>
<CYAN>@@ -1,9 +1,9 @@<RESET>
<GREEN>+<RESET><GREEN>long line 6<RESET>
<GREEN>+<RESET><GREEN>long line 7<RESET>
<GREEN>+<RESET><GREEN>long line 8<RESET>
<GREEN>+<RESET><GREEN>long li ne 9<RESET>
line 1<RESET>
line 2<RESET>
line 3<RESET>
line 4<RESET>
line 5<RESET>
<RED>-long line 6<RESET>
<RED>-long line 7<RESET>
<RED>-long line 8<RESET>
<RED>-long line 9<RESET>
EOF
test_cmp expected actual &&
git diff HEAD --no-renames --color-moved --color \
--color-moved-ws=ignore-space-change >actual.raw &&
grep -v "index" actual.raw | test_decode_color >actual &&
cat <<-\EOF >expected &&
<BOLD>diff --git a/lines.txt b/lines.txt<RESET>
<BOLD>--- a/lines.txt<RESET>
<BOLD>+++ b/lines.txt<RESET>
<CYAN>@@ -1,9 +1,9 @@<RESET>
<CYAN>+<RESET><CYAN>long line 6<RESET>
<CYAN>+<RESET><CYAN>long line 7<RESET>
<CYAN>+<RESET><CYAN>long line 8<RESET>
<GREEN>+<RESET><GREEN>long li ne 9<RESET>
line 1<RESET>
line 2<RESET>
line 3<RESET>
line 4<RESET>
line 5<RESET>
<MAGENTA>-long line 6<RESET>
<MAGENTA>-long line 7<RESET>
<MAGENTA>-long line 8<RESET>
<RED>-long line 9<RESET>
EOF
test_cmp expected actual
HEAD is now at 20118d6 add poetry
ok 80 - move detection ignoring whitespace changes
expecting success of 4015.81 'move detection ignoring whitespace at eol':
git reset --hard &&
# Lines 6-9 have new eol whitespace, but 9 also has it in the middle
q_to_tab <<-\EOF >lines.txt &&
long line 6Q
long line 7Q
long line 8Q
longQline 9Q
line 1
line 2
line 3
line 4
line 5
EOF
# avoid cluttering the output with complaints about our eol whitespace
test_config core.whitespace -blank-at-eol &&
git diff HEAD --no-renames --color-moved --color >actual.raw &&
grep -v "index" actual.raw | test_decode_color >actual &&
cat <<-\EOF >expected &&
<BOLD>diff --git a/lines.txt b/lines.txt<RESET>
<BOLD>--- a/lines.txt<RESET>
<BOLD>+++ b/lines.txt<RESET>
<CYAN>@@ -1,9 +1,9 @@<RESET>
<GREEN>+<RESET><GREEN>long line 6 <RESET>
<GREEN>+<RESET><GREEN>long line 7 <RESET>
<GREEN>+<RESET><GREEN>long line 8 <RESET>
<GREEN>+<RESET><GREEN>long line 9 <RESET>
line 1<RESET>
line 2<RESET>
line 3<RESET>
line 4<RESET>
line 5<RESET>
<RED>-long line 6<RESET>
<RED>-long line 7<RESET>
<RED>-long line 8<RESET>
<RED>-long line 9<RESET>
EOF
test_cmp expected actual &&
git diff HEAD --no-renames --color-moved --color \
--color-moved-ws=ignore-space-at-eol >actual.raw &&
grep -v "index" actual.raw | test_decode_color >actual &&
cat <<-\EOF >expected &&
<BOLD>diff --git a/lines.txt b/lines.txt<RESET>
<BOLD>--- a/lines.txt<RESET>
<BOLD>+++ b/lines.txt<RESET>
<CYAN>@@ -1,9 +1,9 @@<RESET>
<CYAN>+<RESET><CYAN>long line 6 <RESET>
<CYAN>+<RESET><CYAN>long line 7 <RESET>
<CYAN>+<RESET><CYAN>long line 8 <RESET>
<GREEN>+<RESET><GREEN>long line 9 <RESET>
line 1<RESET>
line 2<RESET>
line 3<RESET>
line 4<RESET>
line 5<RESET>
<MAGENTA>-long line 6<RESET>
<MAGENTA>-long line 7<RESET>
<MAGENTA>-long line 8<RESET>
<RED>-long line 9<RESET>
EOF
test_cmp expected actual
HEAD is now at 20118d6 add poetry
ok 81 - move detection ignoring whitespace at eol
expecting success of 4015.82 'clean up whitespace-test colors':
git config --unset color.diff.oldMoved &&
git config --unset color.diff.newMoved
ok 82 - clean up whitespace-test colors
expecting success of 4015.83 '--color-moved block at end of diff output respects MIN_ALNUM_COUNT':
git reset --hard &&
>bar &&
cat <<-\EOF >foo &&
irrelevant_line
line1
EOF
git add foo bar &&
git commit -m x &&
cat <<-\EOF >bar &&
line1
EOF
cat <<-\EOF >foo &&
irrelevant_line
EOF
git diff HEAD --color-moved=zebra --color --no-renames >actual.raw &&
grep -v "index" actual.raw | test_decode_color >actual &&
cat >expected <<-\EOF &&
<BOLD>diff --git a/bar b/bar<RESET>
<BOLD>--- a/bar<RESET>
<BOLD>+++ b/bar<RESET>
<CYAN>@@ -0,0 +1 @@<RESET>
<GREEN>+<RESET><GREEN>line1<RESET>
<BOLD>diff --git a/foo b/foo<RESET>
<BOLD>--- a/foo<RESET>
<BOLD>+++ b/foo<RESET>
<CYAN>@@ -1,2 +1 @@<RESET>
irrelevant_line<RESET>
<RED>-line1<RESET>
EOF
test_cmp expected actual
HEAD is now at 20118d6 add poetry
[detached HEAD 3843ae4] x
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 bar
create mode 100644 foo
ok 83 - --color-moved block at end of diff output respects MIN_ALNUM_COUNT
expecting success of 4015.84 '--color-moved respects MIN_ALNUM_COUNT':
git reset --hard &&
cat <<-\EOF >foo &&
nineteen chars 456789
irrelevant_line
twenty chars 234567890
EOF
>bar &&
git add foo bar &&
git commit -m x &&
cat <<-\EOF >foo &&
irrelevant_line
EOF
cat <<-\EOF >bar &&
twenty chars 234567890
nineteen chars 456789
EOF
git diff HEAD --color-moved=zebra --color --no-renames >actual.raw &&
grep -v "index" actual.raw | test_decode_color >actual &&
cat >expected <<-\EOF &&
<BOLD>diff --git a/bar b/bar<RESET>
<BOLD>--- a/bar<RESET>
<BOLD>+++ b/bar<RESET>
<CYAN>@@ -0,0 +1,2 @@<RESET>
<BOLD;CYAN>+<RESET><BOLD;CYAN>twenty chars 234567890<RESET>
<GREEN>+<RESET><GREEN>nineteen chars 456789<RESET>
<BOLD>diff --git a/foo b/foo<RESET>
<BOLD>--- a/foo<RESET>
<BOLD>+++ b/foo<RESET>
<CYAN>@@ -1,3 +1 @@<RESET>
<RED>-nineteen chars 456789<RESET>
irrelevant_line<RESET>
<BOLD;MAGENTA>-twenty chars 234567890<RESET>
EOF
test_cmp expected actual
HEAD is now at 3843ae4 x
[detached HEAD 2380d1c] x
Author: A U Thor <author@example.com>
1 file changed, 2 insertions(+), 1 deletion(-)
ok 84 - --color-moved respects MIN_ALNUM_COUNT
expecting success of 4015.85 '--color-moved treats adjacent blocks as separate for MIN_ALNUM_COUNT':
git reset --hard &&
cat <<-\EOF >foo &&
7charsA
irrelevant_line
7charsB
7charsC
EOF
>bar &&
git add foo bar &&
git commit -m x &&
cat <<-\EOF >foo &&
irrelevant_line
EOF
cat <<-\EOF >bar &&
7charsB
7charsC
7charsA
EOF
git diff HEAD --color-moved=zebra --color --no-renames >actual.raw &&
grep -v "index" actual.raw | test_decode_color >actual &&
cat >expected <<-\EOF &&
<BOLD>diff --git a/bar b/bar<RESET>
<BOLD>--- a/bar<RESET>
<BOLD>+++ b/bar<RESET>
<CYAN>@@ -0,0 +1,3 @@<RESET>
<GREEN>+<RESET><GREEN>7charsB<RESET>
<GREEN>+<RESET><GREEN>7charsC<RESET>
<GREEN>+<RESET><GREEN>7charsA<RESET>
<BOLD>diff --git a/foo b/foo<RESET>
<BOLD>--- a/foo<RESET>
<BOLD>+++ b/foo<RESET>
<CYAN>@@ -1,4 +1 @@<RESET>
<RED>-7charsA<RESET>
irrelevant_line<RESET>
<RED>-7charsB<RESET>
<RED>-7charsC<RESET>
EOF
test_cmp expected actual
HEAD is now at 2380d1c x
[detached HEAD df13bcb] x
Author: A U Thor <author@example.com>
1 file changed, 3 insertions(+), 2 deletions(-)
ok 85 - --color-moved treats adjacent blocks as separate for MIN_ALNUM_COUNT
expecting success of 4015.86 '--color-moved rewinds for MIN_ALNUM_COUNT':
git reset --hard &&
test_write_lines >file \
A B C one two three four five six seven D E F G H I J &&
git add file &&
test_write_lines >file \
one two A B C D E F G H I J two three four five six seven &&
git diff --color-moved=zebra -- file &&
git diff --color-moved=zebra --color -- file >actual.raw &&
grep -v "index" actual.raw | test_decode_color >actual &&
cat >expected <<-\EOF &&
<BOLD>diff --git a/file b/file<RESET>
<BOLD>--- a/file<RESET>
<BOLD>+++ b/file<RESET>
<CYAN>@@ -1,13 +1,8 @@<RESET>
<GREEN>+<RESET><GREEN>one<RESET>
<GREEN>+<RESET><GREEN>two<RESET>
A<RESET>
B<RESET>
C<RESET>
<RED>-one<RESET>
<BOLD;MAGENTA>-two<RESET>
<BOLD;MAGENTA>-three<RESET>
<BOLD;MAGENTA>-four<RESET>
<BOLD;MAGENTA>-five<RESET>
<BOLD;MAGENTA>-six<RESET>
<BOLD;MAGENTA>-seven<RESET>
D<RESET>
E<RESET>
F<RESET>
<CYAN>@@ -15,3 +10,9 @@<RESET> <RESET>G<RESET>
H<RESET>
I<RESET>
J<RESET>
<BOLD;CYAN>+<RESET><BOLD;CYAN>two<RESET>
<BOLD;CYAN>+<RESET><BOLD;CYAN>three<RESET>
<BOLD;CYAN>+<RESET><BOLD;CYAN>four<RESET>
<BOLD;CYAN>+<RESET><BOLD;CYAN>five<RESET>
<BOLD;CYAN>+<RESET><BOLD;CYAN>six<RESET>
<BOLD;CYAN>+<RESET><BOLD;CYAN>seven<RESET>
EOF
test_cmp expected actual
HEAD is now at df13bcb x
diff --git a/file b/file
index 9c6a1c7..fa3558c 100644
--- a/file
+++ b/file
@@ -1,13 +1,8 @@
+one
+two
A
B
C
-one
-two
-three
-four
-five
-six
-seven
D
E
F
@@ -15,3 +10,9 @@ G
H
I
J
+two
+three
+four
+five
+six
+seven
ok 86 - --color-moved rewinds for MIN_ALNUM_COUNT
expecting success of 4015.87 'move detection with submodules':
test_create_repo bananas &&
echo ripe >bananas/recipe &&
git -C bananas add recipe &&
test_commit fruit &&
test_commit -C bananas recipe &&
git submodule add ./bananas &&
git add bananas &&
git commit -a -m "bananas are like a heavy library?" &&
echo foul >bananas/recipe &&
echo ripe >fruit.t &&
git diff --submodule=diff --color-moved --color >actual &&
# no move detection as the moved line is across repository boundaries.
test_decode_color <actual >decoded_actual &&
! grep BGREEN decoded_actual &&
! grep BRED decoded_actual &&
# nor did we mess with it another way
git diff --submodule=diff --color >expect.raw &&
test_decode_color <expect.raw >expect &&
test_cmp expect decoded_actual &&
rm -rf bananas &&
git submodule deinit bananas
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4015-diff-whitespace/bananas/.git/
[detached HEAD a5c8711] fruit
Author: A U Thor <author@example.com>
2 files changed, 18 insertions(+)
create mode 100644 file
create mode 100644 fruit.t
[master (root-commit) 9469881] recipe
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 recipe
create mode 100644 recipe.t
Adding existing repo at 'bananas' to the index
[detached HEAD 82f96c4] bananas are like a heavy library?
Author: A U Thor <author@example.com>
3 files changed, 12 insertions(+), 7 deletions(-)
create mode 100644 .gitmodules
create mode 160000 bananas
Submodule 'bananas' (./bananas) unregistered for path 'bananas'
ok 87 - move detection with submodules
expecting success of 4015.88 'only move detection ignores white spaces':
git reset --hard &&
q_to_tab <<-\EOF >text.txt &&
a long line to exceed per-line minimum
another long line to exceed per-line minimum
original file
EOF
git add text.txt &&
git commit -m "add text" &&
q_to_tab <<-\EOF >text.txt &&
Qa long line to exceed per-line minimum
Qanother long line to exceed per-line minimum
new file
EOF
# Make sure we get a different diff using -w
git diff --color --color-moved -w >actual.raw &&
grep -v "index" actual.raw | test_decode_color >actual &&
q_to_tab <<-\EOF >expected &&
<BOLD>diff --git a/text.txt b/text.txt<RESET>
<BOLD>--- a/text.txt<RESET>
<BOLD>+++ b/text.txt<RESET>
<CYAN>@@ -1,3 +1,3 @@<RESET>
Qa long line to exceed per-line minimum<RESET>
Qanother long line to exceed per-line minimum<RESET>
<RED>-original file<RESET>
<GREEN>+<RESET><GREEN>new file<RESET>
EOF
test_cmp expected actual &&
# And now ignoring white space only in the move detection
git diff --color --color-moved \
--color-moved-ws=ignore-all-space,ignore-space-change,ignore-space-at-eol >actual.raw &&
grep -v "index" actual.raw | test_decode_color >actual &&
q_to_tab <<-\EOF >expected &&
<BOLD>diff --git a/text.txt b/text.txt<RESET>
<BOLD>--- a/text.txt<RESET>
<BOLD>+++ b/text.txt<RESET>
<CYAN>@@ -1,3 +1,3 @@<RESET>
<BOLD;MAGENTA>-a long line to exceed per-line minimum<RESET>
<BOLD;MAGENTA>-another long line to exceed per-line minimum<RESET>
<RED>-original file<RESET>
<BOLD;CYAN>+<RESET>Q<BOLD;CYAN>a long line to exceed per-line minimum<RESET>
<BOLD;CYAN>+<RESET>Q<BOLD;CYAN>another long line to exceed per-line minimum<RESET>
<GREEN>+<RESET><GREEN>new file<RESET>
EOF
test_cmp expected actual
HEAD is now at 82f96c4 bananas are like a heavy library?
[detached HEAD 3bfc51e] add text
Author: A U Thor <author@example.com>
1 file changed, 3 insertions(+), 1 deletion(-)
ok 88 - only move detection ignores white spaces
expecting success of 4015.89 'compare whitespace delta across moved blocks':
git reset --hard &&
q_to_tab <<-\EOF >text.txt &&
QIndented
QText across
Qsome lines
QBut! <- this stands out
QAdjusting with
QQdifferent starting
Qwhite spaces
QAnother outlier
QQQIndented
QQQText across
QQQfive lines
QQQthat has similar lines
QQQto previous blocks, but with different indent
QQQYetQAnotherQoutlierQ
QLine with internal w h i t e s p a c e change
EOF
git add text.txt &&
git commit -m "add text.txt" &&
q_to_tab <<-\EOF >text.txt &&
QQIndented
QQText across
QQsome lines
QQQBut! <- this stands out
Adjusting with
Qdifferent starting
white spaces
AnotherQoutlier
QQIndented
QQText across
QQfive lines
QQthat has similar lines
QQto previous blocks, but with different indent
QQYetQAnotherQoutlier
QLine with internal whitespace change
EOF
git diff --color --color-moved --color-moved-ws=allow-indentation-change >actual.raw &&
grep -v "index" actual.raw | test_decode_color >actual &&
q_to_tab <<-\EOF >expected &&
<BOLD>diff --git a/text.txt b/text.txt<RESET>
<BOLD>--- a/text.txt<RESET>
<BOLD>+++ b/text.txt<RESET>
<CYAN>@@ -1,15 +1,15 @@<RESET>
<BOLD;MAGENTA>-QIndented<RESET>
<BOLD;MAGENTA>-QText across<RESET>
<BOLD;MAGENTA>-Qsome lines<RESET>
<RED>-QBut! <- this stands out<RESET>
<BOLD;MAGENTA>-QAdjusting with<RESET>
<BOLD;MAGENTA>-QQdifferent starting<RESET>
<BOLD;MAGENTA>-Qwhite spaces<RESET>
<RED>-QAnother outlier<RESET>
<BOLD;MAGENTA>-QQQIndented<RESET>
<BOLD;MAGENTA>-QQQText across<RESET>
<BOLD;MAGENTA>-QQQfive lines<RESET>
<BOLD;MAGENTA>-QQQthat has similar lines<RESET>
<BOLD;MAGENTA>-QQQto previous blocks, but with different indent<RESET>
<RED>-QQQYetQAnotherQoutlierQ<RESET>
<RED>-QLine with internal w h i t e s p a c e change<RESET>
<BOLD;CYAN>+<RESET>QQ<BOLD;CYAN>Indented<RESET>
<BOLD;CYAN>+<RESET>QQ<BOLD;CYAN>Text across<RESET>
<BOLD;CYAN>+<RESET>QQ<BOLD;CYAN>some lines<RESET>
<GREEN>+<RESET>QQQ<GREEN>But! <- this stands out<RESET>
<BOLD;CYAN>+<RESET><BOLD;CYAN>Adjusting with<RESET>
<BOLD;CYAN>+<RESET>Q<BOLD;CYAN>different starting<RESET>
<BOLD;CYAN>+<RESET><BOLD;CYAN>white spaces<RESET>
<GREEN>+<RESET><GREEN>AnotherQoutlier<RESET>
<BOLD;CYAN>+<RESET>QQ<BOLD;CYAN>Indented<RESET>
<BOLD;CYAN>+<RESET>QQ<BOLD;CYAN>Text across<RESET>
<BOLD;CYAN>+<RESET>QQ<BOLD;CYAN>five lines<RESET>
<BOLD;CYAN>+<RESET>QQ<BOLD;CYAN>that has similar lines<RESET>
<BOLD;CYAN>+<RESET>QQ<BOLD;CYAN>to previous blocks, but with different indent<RESET>
<GREEN>+<RESET>QQ<GREEN>YetQAnotherQoutlier<RESET>
<GREEN>+<RESET>Q<GREEN>Line with internal whitespace change<RESET>
EOF
test_cmp expected actual
HEAD is now at 3bfc51e add text
[detached HEAD 7dd9671] add text.txt
Author: A U Thor <author@example.com>
1 file changed, 15 insertions(+), 3 deletions(-)
ok 89 - compare whitespace delta across moved blocks
expecting success of 4015.90 'bogus settings in move detection erroring out':
test_must_fail git diff --color-moved=bogus 2>err &&
test_i18ngrep "must be one of" err &&
test_i18ngrep bogus err &&
test_must_fail git -c diff.colormoved=bogus diff 2>err &&
test_i18ngrep "must be one of" err &&
test_i18ngrep "from command-line config" err &&
test_must_fail git diff --color-moved-ws=bogus 2>err &&
test_i18ngrep "possible values" err &&
test_i18ngrep bogus err &&
test_must_fail git -c diff.colormovedws=bogus diff 2>err &&
test_i18ngrep "possible values" err &&
test_i18ngrep "from command-line config" err
error: color moved setting must be one of 'no', 'default', 'blocks', 'zebra', 'dimmed-zebra', 'plain'
error: bad --color-moved argument: bogus
error: color moved setting must be one of 'no', 'default', 'blocks', 'zebra', 'dimmed-zebra', 'plain'
fatal: unable to parse 'diff.colormoved' from command-line config
error: unknown color-moved-ws mode 'bogus', possible values are 'ignore-space-change', 'ignore-space-at-eol', 'ignore-all-space', 'allow-indentation-change'
error: unknown color-moved-ws mode 'bogus', possible values are 'ignore-space-change', 'ignore-space-at-eol', 'ignore-all-space', 'allow-indentation-change'
error: invalid mode 'bogus' in --color-moved-ws
error: unknown color-moved-ws mode 'bogus', possible values are 'ignore-space-change', 'ignore-space-at-eol', 'ignore-all-space', 'allow-indentation-change'
fatal: unable to parse 'diff.colormovedws' from command-line config
ok 90 - bogus settings in move detection erroring out
expecting success of 4015.91 'compare whitespace delta incompatible with other space options':
test_must_fail git diff \
--color-moved-ws=allow-indentation-change,ignore-all-space \
2>err &&
test_i18ngrep allow-indentation-change err
error: color-moved-ws: allow-indentation-change cannot be combined with other whitespace modes
error: invalid mode 'allow-indentation-change,ignore-all-space' in --color-moved-ws
ok 91 - compare whitespace delta incompatible with other space options
expecting success of 4015.92 'compare mixed whitespace delta across moved blocks':
git reset --hard &&
tr "^|Q_" "\f\v\t " <<-EOF >text.txt &&
^__
|____too short without
^
___being grouped across blank line
${EMPTY}
context
lines
to
anchor
____Indented text to
_Q____be further indented by four spaces across
____Qseveral lines
QQ____These two lines have had their
____indentation reduced by four spaces
Qdifferent indentation change
____too short
EOF
git add text.txt &&
git commit -m "add text.txt" &&
tr "^|Q_" "\f\v\t " <<-EOF >text.txt &&
context
lines
to
anchor
QIndented text to
QQbe further indented by four spaces across
Q____several lines
${EMPTY}
QQtoo short without
${EMPTY}
^Q_______being grouped across blank line
${EMPTY}
Q_QThese two lines have had their
indentation reduced by four spaces
QQdifferent indentation change
__Qtoo short
EOF
git -c color.diff.whitespace="normal red" \
-c core.whitespace=space-before-tab \
diff --color --color-moved --ws-error-highlight=all \
--color-moved-ws=allow-indentation-change >actual.raw &&
grep -v "index" actual.raw | tr "\f\v" "^|" | test_decode_color >actual &&
cat <<-\EOF >expected &&
<BOLD>diff --git a/text.txt b/text.txt<RESET>
<BOLD>--- a/text.txt<RESET>
<BOLD>+++ b/text.txt<RESET>
<CYAN>@@ -1,16 +1,16 @@<RESET>
<BOLD;MAGENTA>-<RESET><BOLD;MAGENTA>^<RESET><BRED> <RESET>
<BOLD;MAGENTA>-<RESET><BOLD;MAGENTA>| too short without<RESET>
<BOLD;MAGENTA>-<RESET><BOLD;MAGENTA>^<RESET>
<BOLD;MAGENTA>-<RESET><BOLD;MAGENTA> being grouped across blank line<RESET>
<BOLD;MAGENTA>-<RESET>
<RESET>context<RESET>
<RESET>lines<RESET>
<RESET>to<RESET>
<RESET>anchor<RESET>
<BOLD;MAGENTA>-<RESET><BOLD;MAGENTA> Indented text to<RESET>
<BOLD;MAGENTA>-<RESET><BRED> <RESET> <BOLD;MAGENTA> be further indented by four spaces across<RESET>
<BOLD;MAGENTA>-<RESET><BRED> <RESET> <BOLD;MAGENTA>several lines<RESET>
<BOLD;BLUE>-<RESET> <BOLD;BLUE> These two lines have had their<RESET>
<BOLD;BLUE>-<RESET><BOLD;BLUE> indentation reduced by four spaces<RESET>
<BOLD;MAGENTA>-<RESET> <BOLD;MAGENTA>different indentation change<RESET>
<RED>-<RESET><RED> too short<RESET>
<BOLD;CYAN>+<RESET> <BOLD;CYAN>Indented text to<RESET>
<BOLD;CYAN>+<RESET> <BOLD;CYAN>be further indented by four spaces across<RESET>
<BOLD;CYAN>+<RESET> <BOLD;CYAN> several lines<RESET>
<BOLD;YELLOW>+<RESET>
<BOLD;YELLOW>+<RESET> <BOLD;YELLOW>too short without<RESET>
<BOLD;YELLOW>+<RESET>
<BOLD;YELLOW>+<RESET><BOLD;YELLOW>^ being grouped across blank line<RESET>
<BOLD;YELLOW>+<RESET>
<BOLD;CYAN>+<RESET> <BRED> <RESET> <BOLD;CYAN>These two lines have had their<RESET>
<BOLD;CYAN>+<RESET><BOLD;CYAN>indentation reduced by four spaces<RESET>
<BOLD;YELLOW>+<RESET> <BOLD;YELLOW>different indentation change<RESET>
<GREEN>+<RESET><BRED> <RESET> <GREEN>too short<RESET>
EOF
test_cmp expected actual
HEAD is now at 7dd9671 add text.txt
[detached HEAD 9fe2176] add text.txt
Author: A U Thor <author@example.com>
1 file changed, 16 insertions(+), 15 deletions(-)
ok 92 - compare mixed whitespace delta across moved blocks
expecting success of 4015.93 'combine --ignore-blank-lines with --function-context':
test_write_lines 1 "" 2 3 4 5 >a &&
test_write_lines 1 2 3 4 >b &&
test_must_fail git diff --no-index \
--ignore-blank-lines --function-context a b >actual.raw &&
sed -n "/@@/,\$p" <actual.raw >actual &&
cat <<-\EOF >expect &&
@@ -1,6 +1,4 @@
1
-
2
3
4
-5
EOF
test_cmp expect actual
ok 93 - combine --ignore-blank-lines with --function-context
expecting success of 4015.94 'combine --ignore-blank-lines with --function-context 2':
test_write_lines a b c "" function 1 2 3 4 5 "" 6 7 8 9 >a &&
test_write_lines "" a b c "" function 1 2 3 4 5 6 7 8 >b &&
test_must_fail git diff --no-index \
--ignore-blank-lines --function-context a b >actual.raw &&
sed -n "/@@/,\$p" <actual.raw >actual &&
cat <<-\EOF >expect &&
@@ -5,11 +6,9 @@ c
function
1
2
3
4
5
-
6
7
8
-9
EOF
test_cmp expect actual
ok 94 - combine --ignore-blank-lines with --function-context 2
# passed all 94 test(s)
1..94
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4019-diff-wserror.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4019-diff-wserror/.git/
expecting success of 4019.1 'setup':
git config diff.color.whitespace "blue reverse" &&
>F &&
git add F &&
echo " Eight SP indent" >>F &&
echo " HT and SP indent" >>F &&
echo "With trailing SP " >>F &&
echo "Carriage ReturnQ" | tr Q "\015" >>F &&
echo "No problem" >>F &&
echo >>F
ok 1 - setup
expecting success of 4019.2 'default':
prepare_output &&
grep Eight normal >/dev/null &&
grep HT error >/dev/null &&
grep With error >/dev/null &&
grep Return error >/dev/null &&
grep No normal >/dev/null
ok 2 - default
expecting success of 4019.3 'default (attribute)':
test_might_fail git config --unset core.whitespace &&
echo "F whitespace" >.gitattributes &&
prepare_output &&
grep Eight error >/dev/null &&
grep HT error >/dev/null &&
grep With error >/dev/null &&
grep Return error >/dev/null &&
grep No normal >/dev/null
ok 3 - default (attribute)
expecting success of 4019.4 'default, tabwidth=10 (attribute)':
git config core.whitespace "tabwidth=10" &&
echo "F whitespace" >.gitattributes &&
prepare_output &&
grep Eight normal >/dev/null &&
grep HT error >/dev/null &&
grep With error >/dev/null &&
grep Return error >/dev/null &&
grep No normal >/dev/null
ok 4 - default, tabwidth=10 (attribute)
expecting success of 4019.5 'no check (attribute)':
test_might_fail git config --unset core.whitespace &&
echo "F -whitespace" >.gitattributes &&
prepare_output &&
grep Eight normal >/dev/null &&
grep HT normal >/dev/null &&
grep With normal >/dev/null &&
grep Return normal >/dev/null &&
grep No normal >/dev/null
ok 5 - no check (attribute)
expecting success of 4019.6 'no check, tabwidth=10 (attribute), must be irrelevant':
git config core.whitespace "tabwidth=10" &&
echo "F -whitespace" >.gitattributes &&
prepare_output &&
grep Eight normal >/dev/null &&
grep HT normal >/dev/null &&
grep With normal >/dev/null &&
grep Return normal >/dev/null &&
grep No normal >/dev/null
ok 6 - no check, tabwidth=10 (attribute), must be irrelevant
expecting success of 4019.7 'without -trail':
rm -f .gitattributes &&
git config core.whitespace -trail &&
prepare_output &&
grep Eight normal >/dev/null &&
grep HT error >/dev/null &&
grep With normal >/dev/null &&
grep Return normal >/dev/null &&
grep No normal >/dev/null
ok 7 - without -trail
expecting success of 4019.8 'without -trail (attribute)':
test_might_fail git config --unset core.whitespace &&
echo "F whitespace=-trail" >.gitattributes &&
prepare_output &&
grep Eight normal >/dev/null &&
grep HT error >/dev/null &&
grep With normal >/dev/null &&
grep Return normal >/dev/null &&
grep No normal >/dev/null
ok 8 - without -trail (attribute)
expecting success of 4019.9 'without -space':
rm -f .gitattributes &&
git config core.whitespace -space &&
prepare_output &&
grep Eight normal >/dev/null &&
grep HT normal >/dev/null &&
grep With error >/dev/null &&
grep Return error >/dev/null &&
grep No normal >/dev/null
ok 9 - without -space
expecting success of 4019.10 'without -space (attribute)':
test_might_fail git config --unset core.whitespace &&
echo "F whitespace=-space" >.gitattributes &&
prepare_output &&
grep Eight normal >/dev/null &&
grep HT normal >/dev/null &&
grep With error >/dev/null &&
grep Return error >/dev/null &&
grep No normal >/dev/null
ok 10 - without -space (attribute)
expecting success of 4019.11 'with indent-non-tab only':
rm -f .gitattributes &&
git config core.whitespace indent,-trailing,-space &&
prepare_output &&
grep Eight error >/dev/null &&
grep HT normal >/dev/null &&
grep With normal >/dev/null &&
grep Return normal >/dev/null &&
grep No normal >/dev/null
ok 11 - with indent-non-tab only
expecting success of 4019.12 'with indent-non-tab only (attribute)':
test_might_fail git config --unset core.whitespace &&
echo "F whitespace=indent,-trailing,-space" >.gitattributes &&
prepare_output &&
grep Eight error >/dev/null &&
grep HT normal >/dev/null &&
grep With normal >/dev/null &&
grep Return normal >/dev/null &&
grep No normal >/dev/null
ok 12 - with indent-non-tab only (attribute)
expecting success of 4019.13 'with indent-non-tab only, tabwidth=10':
rm -f .gitattributes &&
git config core.whitespace indent,tabwidth=10,-trailing,-space &&
prepare_output &&
grep Eight normal >/dev/null &&
grep HT normal >/dev/null &&
grep With normal >/dev/null &&
grep Return normal >/dev/null &&
grep No normal >/dev/null
ok 13 - with indent-non-tab only, tabwidth=10
expecting success of 4019.14 'with indent-non-tab only, tabwidth=10 (attribute)':
test_might_fail git config --unset core.whitespace &&
echo "F whitespace=indent,-trailing,-space,tabwidth=10" >.gitattributes &&
prepare_output &&
grep Eight normal >/dev/null &&
grep HT normal >/dev/null &&
grep With normal >/dev/null &&
grep Return normal >/dev/null &&
grep No normal >/dev/null
ok 14 - with indent-non-tab only, tabwidth=10 (attribute)
expecting success of 4019.15 'with cr-at-eol':
rm -f .gitattributes &&
git config core.whitespace cr-at-eol &&
prepare_output &&
grep Eight normal >/dev/null &&
grep HT error >/dev/null &&
grep With error >/dev/null &&
grep Return normal >/dev/null &&
grep No normal >/dev/null
ok 15 - with cr-at-eol
expecting success of 4019.16 'with cr-at-eol (attribute)':
test_might_fail git config --unset core.whitespace &&
echo "F whitespace=trailing,cr-at-eol" >.gitattributes &&
prepare_output &&
grep Eight normal >/dev/null &&
grep HT error >/dev/null &&
grep With error >/dev/null &&
grep Return normal >/dev/null &&
grep No normal >/dev/null
ok 16 - with cr-at-eol (attribute)
expecting success of 4019.17 'trailing empty lines (1)':
rm -f .gitattributes &&
test_must_fail git diff --check >output &&
grep "new blank line at" output &&
grep "trailing whitespace" output
F:6: new blank line at EOF.
F:3: trailing whitespace.
F:4: trailing whitespace.
ok 17 - trailing empty lines (1)
expecting success of 4019.18 'trailing empty lines (2)':
echo "F -whitespace" >.gitattributes &&
git diff --check >output &&
test_must_be_empty output
ok 18 - trailing empty lines (2)
expecting success of 4019.19 'checkdiff shows correct line number for trailing blank lines':
printf "a\nb\n" > G &&
git add G &&
printf "x\nx\nx\na\nb\nc\n\n" > G &&
[ "$(git diff --check -- G)" = "G:7: new blank line at EOF." ]
ok 19 - checkdiff shows correct line number for trailing blank lines
expecting success of 4019.20 'do not color trailing cr in context':
test_might_fail git config --unset core.whitespace &&
rm -f .gitattributes &&
echo AAAQ | tr Q "\015" >G &&
git add G &&
echo BBBQ | tr Q "\015" >>G &&
git diff --color G | tr "\015" Q >output &&
grep "BBB.*${blue_grep}Q" output &&
grep "AAA.*\[mQ" output
[32m+[m[32mBBB[m[7;34mQ[m
AAA[mQ
ok 20 - do not color trailing cr in context
expecting success of 4019.21 'color new trailing blank lines':
test_write_lines a b "" "" >x &&
git add x &&
test_write_lines a "" "" "" c "" "" "" "" >x &&
git diff --color x >output &&
cnt=$($grep_a "${blue_grep}" output | wc -l) &&
test $cnt = 2
ok 21 - color new trailing blank lines
# passed all 21 test(s)
1..21
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4020-diff-external.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4020-diff-external/.git/
expecting success of 4020.1 'setup':
test_tick &&
echo initial >file &&
git add file &&
git commit -m initial &&
test_tick &&
echo second >file &&
before=$(git hash-object file) &&
before=$(git rev-parse --short $before) &&
git add file &&
git commit -m second &&
test_tick &&
echo third >file
[master (root-commit) b6d2089] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
[master f3562cd] second
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 1 - setup
expecting success of 4020.2 'GIT_EXTERNAL_DIFF environment':
cat >expect <<-EOF &&
file $(git rev-parse --verify HEAD:file) 100644 file $(test_oid zero) 100644
EOF
GIT_EXTERNAL_DIFF=echo git diff >out &&
cut -d" " -f1,3- <out >actual &&
test_cmp expect actual
ok 2 - GIT_EXTERNAL_DIFF environment
expecting success of 4020.3 'GIT_EXTERNAL_DIFF environment should apply only to diff':
GIT_EXTERNAL_DIFF=echo git log -p -1 HEAD >out &&
grep "^diff --git a/file b/file" out
diff --git a/file b/file
ok 3 - GIT_EXTERNAL_DIFF environment should apply only to diff
expecting success of 4020.4 'GIT_EXTERNAL_DIFF environment and --no-ext-diff':
GIT_EXTERNAL_DIFF=echo git diff --no-ext-diff >out &&
grep "^diff --git a/file b/file" out
diff --git a/file b/file
ok 4 - GIT_EXTERNAL_DIFF environment and --no-ext-diff
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
expecting success of 4020.5 'typechange diff':
rm -f file &&
ln -s elif file &&
cat >expect <<-EOF &&
file $(git rev-parse --verify HEAD:file) 100644 $(test_oid zero) 120000
EOF
GIT_EXTERNAL_DIFF=echo git diff >out &&
cut -d" " -f1,3-4,6- <out >actual &&
test_cmp expect actual &&
GIT_EXTERNAL_DIFF=echo git diff --no-ext-diff >actual &&
git diff >expect &&
test_cmp expect actual
ok 5 - typechange diff
expecting success of 4020.6 'diff.external':
git reset --hard &&
echo third >file &&
test_config diff.external echo &&
cat >expect <<-EOF &&
file $(git rev-parse --verify HEAD:file) 100644 $(test_oid zero) 100644
EOF
git diff >out &&
cut -d" " -f1,3-4,6- <out >actual &&
test_cmp expect actual
HEAD is now at f3562cd second
ok 6 - diff.external
expecting success of 4020.7 'diff.external should apply only to diff':
test_config diff.external echo &&
git log -p -1 HEAD >out &&
grep "^diff --git a/file b/file" out
diff --git a/file b/file
ok 7 - diff.external should apply only to diff
expecting success of 4020.8 'diff.external and --no-ext-diff':
test_config diff.external echo &&
git diff --no-ext-diff >out &&
grep "^diff --git a/file b/file" out
diff --git a/file b/file
ok 8 - diff.external and --no-ext-diff
expecting success of 4020.9 'diff attribute':
git reset --hard &&
echo third >file &&
git config diff.parrot.command echo &&
echo >.gitattributes "file diff=parrot" &&
cat >expect <<-EOF &&
file $(git rev-parse --verify HEAD:file) 100644 $(test_oid zero) 100644
EOF
git diff >out &&
cut -d" " -f1,3-4,6- <out >actual &&
test_cmp expect actual
HEAD is now at f3562cd second
ok 9 - diff attribute
expecting success of 4020.10 'diff attribute should apply only to diff':
git log -p -1 HEAD >out &&
grep "^diff --git a/file b/file" out
diff --git a/file b/file
ok 10 - diff attribute should apply only to diff
expecting success of 4020.11 'diff attribute and --no-ext-diff':
git diff --no-ext-diff >out &&
grep "^diff --git a/file b/file" out
diff --git a/file b/file
ok 11 - diff attribute and --no-ext-diff
expecting success of 4020.12 'diff attribute':
git config --unset diff.parrot.command &&
git config diff.color.command echo &&
echo >.gitattributes "file diff=color" &&
cat >expect <<-EOF &&
file $(git rev-parse --verify HEAD:file) 100644 $(test_oid zero) 100644
EOF
git diff >out &&
cut -d" " -f1,3-4,6- <out >actual &&
test_cmp expect actual
ok 12 - diff attribute
expecting success of 4020.13 'diff attribute should apply only to diff':
git log -p -1 HEAD >out &&
grep "^diff --git a/file b/file" out
diff --git a/file b/file
ok 13 - diff attribute should apply only to diff
expecting success of 4020.14 'diff attribute and --no-ext-diff':
git diff --no-ext-diff >out &&
grep "^diff --git a/file b/file" out
diff --git a/file b/file
ok 14 - diff attribute and --no-ext-diff
expecting success of 4020.15 'GIT_EXTERNAL_DIFF trumps diff.external':
>.gitattributes &&
test_config diff.external "echo ext-global" &&
cat >expect <<-EOF &&
ext-env file $(git rev-parse --verify HEAD:file) 100644 file $(test_oid zero) 100644
EOF
GIT_EXTERNAL_DIFF="echo ext-env" git diff >out &&
cut -d" " -f1-2,4- <out >actual &&
test_cmp expect actual
ok 15 - GIT_EXTERNAL_DIFF trumps diff.external
expecting success of 4020.16 'attributes trump GIT_EXTERNAL_DIFF and diff.external':
test_config diff.foo.command "echo ext-attribute" &&
test_config diff.external "echo ext-global" &&
echo "file diff=foo" >.gitattributes &&
cat >expect <<-EOF &&
ext-attribute file $(git rev-parse --verify HEAD:file) 100644 file $(test_oid zero) 100644
EOF
GIT_EXTERNAL_DIFF="echo ext-env" git diff >out &&
cut -d" " -f1-2,4- <out >actual &&
test_cmp expect actual
ok 16 - attributes trump GIT_EXTERNAL_DIFF and diff.external
expecting success of 4020.17 'no diff with -diff':
echo >.gitattributes "file -diff" &&
git diff >out &&
grep Binary out
Binary files a/file and b/file differ
ok 17 - no diff with -diff
expecting success of 4020.18 'force diff with "diff"':
after=$(git hash-object file) &&
after=$(git rev-parse --short $after) &&
echo >.gitattributes "file diff" &&
git diff >actual &&
sed -e "s/^index .*/index $before..$after 100644/" \
"$TEST_DIRECTORY"/t4020/diff.NUL >expected-diff &&
test_cmp expected-diff actual
ok 18 - force diff with "diff"
expecting success of 4020.19 'GIT_EXTERNAL_DIFF with more than one changed files':
echo anotherfile > file2 &&
git add file2 &&
git commit -m "added 2nd file" &&
echo modified >file2 &&
GIT_EXTERNAL_DIFF=echo git diff
[master 314ec38] added 2nd file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file2
file /tmp/git-blob-iAbkBd/file e019be006cf33489e2d0177a3837a2384eddebc5 100644 file 0000000000000000000000000000000000000000 100644
file2 /tmp/git-blob-X5VcFa/file2 abc9fa522731419e7eaa3d472e3cb3d99e475c49 100644 file2 0000000000000000000000000000000000000000 100644
ok 19 - GIT_EXTERNAL_DIFF with more than one changed files
expecting success of 4020.20 'GIT_EXTERNAL_DIFF path counter/total':
write_script external-diff.sh <<-\EOF &&
echo $GIT_DIFF_PATH_COUNTER of $GIT_DIFF_PATH_TOTAL >>counter.txt
EOF
>counter.txt &&
cat >expect <<-\EOF &&
1 of 2
2 of 2
EOF
GIT_EXTERNAL_DIFF=./external-diff.sh git diff &&
test_cmp expect counter.txt
ok 20 - GIT_EXTERNAL_DIFF path counter/total
expecting success of 4020.21 'GIT_EXTERNAL_DIFF generates pretty paths':
test_when_finished "git rm -f file.ext" &&
touch file.ext &&
git add file.ext &&
echo with extension > file.ext &&
cat >expect <<-EOF &&
file.ext
EOF
GIT_EXTERNAL_DIFF=echo git diff file.ext >out &&
basename $(cut -d" " -f2 <out) >actual &&
test_cmp expect actual
rm 'file.ext'
ok 21 - GIT_EXTERNAL_DIFF generates pretty paths
expecting success of 4020.22 'external diff with autocrlf = true':
test_config core.autocrlf true &&
GIT_EXTERNAL_DIFF=./fake-diff.sh git diff &&
test $(wc -l < crlfed.txt) = $(cat crlfed.txt | keep_only_cr | wc -c)
warning: in the working copy of 'file2', LF will be replaced by CRLF the next time Git touches it
ok 22 - external diff with autocrlf = true
expecting success of 4020.23 'diff --cached':
test_config core.autocrlf true &&
git add file &&
git update-index --assume-unchanged file &&
echo second >file &&
git diff --cached >actual &&
test_cmp expected-diff actual
ok 23 - diff --cached
expecting success of 4020.24 'clean up crlf leftovers':
git update-index --no-assume-unchanged file &&
rm -f file* &&
git reset --hard
HEAD is now at 314ec38 added 2nd file
ok 24 - clean up crlf leftovers
expecting success of 4020.25 'submodule diff':
git init sub &&
( cd sub && test_commit sub1 ) &&
git add sub &&
test_tick &&
git commit -m "add submodule" &&
( cd sub && test_commit sub2 ) &&
write_script gather_pre_post.sh <<-\EOF &&
echo "$1 $4" # path, mode
cat "$2" # old file
cat "$5" # new file
EOF
GIT_EXTERNAL_DIFF=./gather_pre_post.sh git diff >actual &&
cat >expected <<-EOF &&
sub 160000
Subproject commit $(git rev-parse HEAD:sub)
Subproject commit $(cd sub && git rev-parse HEAD)
EOF
test_cmp expected actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4020-diff-external/sub/.git/
[master (root-commit) e2fb92c] sub1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 sub1.t
warning: adding embedded git repository: sub
hint: You've added another git repository inside your current repository.
hint: Clones of the outer repository will not contain the contents of
hint: the embedded repository and will not know how to obtain it.
hint: If you meant to add a submodule, use:
hint:
hint: git submodule add <url> sub
hint:
hint: If you added this path by mistake, you can remove it from the
hint: index with:
hint:
hint: git rm --cached sub
hint:
hint: See "git help submodule" for more information.
[master bcd8781] add submodule
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 160000 sub
[master 6a9164c] sub2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 sub2.t
ok 25 - submodule diff
# passed all 25 test(s)
1..25
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4021-format-patch-numbered.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4021-format-patch-numbered/.git/
expecting success of 4021.1 'setup':
echo A > file &&
git add file &&
git commit -m First &&
echo B >> file &&
git commit -a -m Second &&
echo C >> file &&
git commit -a -m Third
[master (root-commit) c3fa1f8] First
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
[master e967d08] Second
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[master 20641e9] Third
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
ok 1 - setup
expecting success of 4021.2 'single patch defaults to no numbers':
git format-patch --stdout HEAD~1 >patch0.single &&
test_single_no_numbered patch0.single
ok 2 - single patch defaults to no numbers
expecting success of 4021.3 'multiple patch defaults to numbered':
git format-patch --stdout HEAD~2 >patch0.multiple &&
test_numbered patch0.multiple
Subject: [PATCH 1/2] Second
Subject: [PATCH 2/2] Third
ok 3 - multiple patch defaults to numbered
expecting success of 4021.4 'Use --numbered':
git format-patch --numbered --stdout HEAD~1 >patch1 &&
test_single_numbered patch1
Subject: [PATCH 1/1] Third
ok 4 - Use --numbered
expecting success of 4021.5 'format.numbered = true':
git config format.numbered true &&
git format-patch --stdout HEAD~2 >patch2 &&
test_numbered patch2
Subject: [PATCH 1/2] Second
Subject: [PATCH 2/2] Third
ok 5 - format.numbered = true
expecting success of 4021.6 'format.numbered && single patch':
git format-patch --stdout HEAD^ > patch3 &&
test_single_numbered patch3
Subject: [PATCH 1/1] Third
ok 6 - format.numbered && single patch
expecting success of 4021.7 'format.numbered && --no-numbered':
git format-patch --no-numbered --stdout HEAD~2 >patch4 &&
test_no_numbered patch4
ok 7 - format.numbered && --no-numbered
expecting success of 4021.8 'format.numbered && --keep-subject':
git format-patch --keep-subject --stdout HEAD^ >patch4a &&
grep "^Subject: Third" patch4a
Subject: Third
ok 8 - format.numbered && --keep-subject
expecting success of 4021.9 'format.numbered = auto':
git config format.numbered auto &&
git format-patch --stdout HEAD~2 > patch5 &&
test_numbered patch5
Subject: [PATCH 1/2] Second
Subject: [PATCH 2/2] Third
ok 9 - format.numbered = auto
expecting success of 4021.10 'format.numbered = auto && single patch':
git format-patch --stdout HEAD^ > patch6 &&
test_single_no_numbered patch6
ok 10 - format.numbered = auto && single patch
expecting success of 4021.11 'format.numbered = auto && --no-numbered':
git format-patch --no-numbered --stdout HEAD~2 > patch7 &&
test_no_numbered patch7
ok 11 - format.numbered = auto && --no-numbered
expecting success of 4021.12 '--start-number && --numbered':
git format-patch --start-number 3 --numbered --stdout HEAD~1 > patch8 &&
grep "^Subject: \[PATCH 3/3\]" patch8
Subject: [PATCH 3/3] Third
ok 12 - --start-number && --numbered
expecting success of 4021.13 'single patch with cover-letter defaults to numbers':
git format-patch --cover-letter --stdout HEAD~1 >patch9.single &&
test_single_cover_letter_numbered patch9.single
Subject: [PATCH 0/1] *** SUBJECT HERE ***
Subject: [PATCH 1/1] Third
ok 13 - single patch with cover-letter defaults to numbers
expecting success of 4021.14 'Use --no-numbered and --cover-letter single patch':
git format-patch --no-numbered --stdout --cover-letter HEAD~1 >patch10 &&
test_no_numbered patch10
ok 14 - Use --no-numbered and --cover-letter single patch
# passed all 14 test(s)
1..14
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4022-diff-rewrite.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4022-diff-rewrite/.git/
expecting success of 4022.1 'setup':
COPYING_test_data >test.data &&
cp test.data test &&
git add test &&
tr \
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" \
"nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM" \
<test.data >test &&
echo "to be deleted" >test2 &&
blob=$(git hash-object test2) &&
blob=$(git rev-parse --short $blob) &&
git add test2
ok 1 - setup
expecting success of 4022.2 'detect rewrite':
actual=$(git diff-files -B --summary test) &&
expr "$actual" : " rewrite test ([0-9]*%)$"
19
ok 2 - detect rewrite
expecting success of 4022.3 'show deletion diff without -D':
rm test2 &&
git diff -- test2 >actual &&
test_cmp expect actual
ok 3 - show deletion diff without -D
expecting success of 4022.4 'suppress deletion diff with -D':
git diff -D -- test2 >actual &&
test_cmp expect actual
ok 4 - suppress deletion diff with -D
expecting success of 4022.5 'show deletion diff with -B':
git diff -B -- test >actual &&
grep "Linus Torvalds" actual
- Linus Torvalds
ok 5 - show deletion diff with -B
expecting success of 4022.6 'suppress deletion diff with -B -D':
git diff -B -D -- test >actual &&
grep -v "Linus Torvalds" actual
diff --git a/test b/test
dissimilarity index 99%
index 27063eb..f1f2e4d 100644
--- a/test
+++ b/test
@@ -?,? +1,18 @@
+
+ Abgr gung gur bayl inyvq irefvba bs gur TCY nf sne nf guvf cebwrpg
+ vf pbaprearq vf _guvf_ cnegvphyne irefvba bs gur yvprafr (vr i2, abg
+ i2.2 be i3.k be jungrire), hayrff rkcyvpvgyl bgurejvfr fgngrq.
+
+ UBJRIRE, va beqre gb nyybj n zvtengvba gb TCYi3 vs gung frrzf yvxr
+ n tbbq vqrn, V nyfb nfx gung crbcyr vaibyirq jvgu gur cebwrpg znxr
+ gurve cersreraprf xabja. Va cnegvphyne, vs lbh gehfg zr gb znxr gung
+ qrpvfvba, lbh zvtug abgr fb va lbhe pbclevtug zrffntr, vr fbzrguvat
+ yvxr
+
+ Guvf svyr vf yvprafrq haqre gur TCY i2, be n yngre irefvba
+ ng gur qvfpergvba bs Yvahf.
+
+ zvtug nibvq vffhrf. Ohg jr pna nyfb whfg qrpvqr gb flapuebavmr naq
+ pbagnpg nyy pbclevtug ubyqref ba erpbeq vs/jura gur bppnfvba nevfrf.
+
+ Yvahf Gbeinyqf
ok 6 - suppress deletion diff with -B -D
expecting success of 4022.7 'prepare a file that ends with an incomplete line':
test_seq 1 99 >seq &&
printf 100 >>seq &&
git add seq &&
git commit seq -m seq
[master (root-commit) 2d6607f] seq
Author: A U Thor <author@example.com>
1 file changed, 100 insertions(+)
create mode 100644 seq
ok 7 - prepare a file that ends with an incomplete line
expecting success of 4022.8 'rewrite the middle 90% of sequence file and terminate with newline':
test_seq 1 5 >seq &&
test_seq 9331 9420 >>seq &&
test_seq 96 100 >>seq
ok 8 - rewrite the middle 90% of sequence file and terminate with newline
expecting success of 4022.9 'confirm that sequence file is considered a rewrite':
git diff -B seq >res &&
grep "dissimilarity index" res
dissimilarity index 92%
ok 9 - confirm that sequence file is considered a rewrite
expecting success of 4022.10 'no newline at eof is on its own line without -B':
git diff seq >res &&
grep "^\\\\ " res &&
! grep "^..*\\\\ " res
\ No newline at end of file
ok 10 - no newline at eof is on its own line without -B
expecting success of 4022.11 'no newline at eof is on its own line with -B':
git diff -B seq >res &&
grep "^\\\\ " res &&
! grep "^..*\\\\ " res
\ No newline at end of file
ok 11 - no newline at eof is on its own line with -B
# passed all 11 test(s)
1..11
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4023-diff-rename-typechange.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4023-diff-rename-typechange/.git/
expecting success of 4023.1 'setup':
rm -f foo bar &&
COPYING_test_data >foo &&
test_ln_s_add linklink bar &&
git add foo &&
git commit -a -m Initial &&
git tag one &&
git rm -f foo bar &&
COPYING_test_data >bar &&
test_ln_s_add linklink foo &&
git add bar &&
git commit -a -m Second &&
git tag two &&
git rm -f foo bar &&
COPYING_test_data >foo &&
git add foo &&
git commit -a -m Third &&
git tag three &&
mv foo bar &&
test_ln_s_add linklink foo &&
git add bar &&
git commit -a -m Fourth &&
git tag four &&
# This is purely for sanity check
git rm -f foo bar &&
COPYING_test_data >foo &&
cat "$TEST_DIRECTORY"/../Makefile >bar &&
git add foo bar &&
git commit -a -m Fifth &&
git tag five &&
git rm -f foo bar &&
cat "$TEST_DIRECTORY"/../Makefile >foo &&
COPYING_test_data >bar &&
git add foo bar &&
git commit -a -m Sixth &&
git tag six
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
[master (root-commit) beceffd] Initial
Author: A U Thor <author@example.com>
2 files changed, 19 insertions(+)
create mode 120000 bar
create mode 100644 foo
rm 'bar'
rm 'foo'
[master b5f6de4] Second
Author: A U Thor <author@example.com>
2 files changed, 19 insertions(+), 19 deletions(-)
mode change 120000 => 100644 bar
mode change 100644 => 120000 foo
rm 'bar'
rm 'foo'
[master 0e10201] Third
Author: A U Thor <author@example.com>
2 files changed, 18 insertions(+), 19 deletions(-)
delete mode 100644 bar
mode change 120000 => 100644 foo
[master b788843] Fourth
Author: A U Thor <author@example.com>
2 files changed, 19 insertions(+), 18 deletions(-)
create mode 100644 bar
mode change 100644 => 120000 foo
rm 'bar'
rm 'foo'
[master 2ad4210] Fifth
Author: A U Thor <author@example.com>
2 files changed, 3862 insertions(+), 14 deletions(-)
mode change 120000 => 100644 foo
rm 'bar'
rm 'foo'
[master 2a1fff3] Sixth
Author: A U Thor <author@example.com>
2 files changed, 3857 insertions(+), 3857 deletions(-)
ok 1 - setup
expecting success of 4023.2 'cross renames to be detected for regular files':
git diff-tree five six -r --name-status -B -M >out &&
sort out >actual &&
{
echo "R100 foo bar" &&
echo "R100 bar foo"
} | sort >expect &&
test_cmp expect actual
ok 2 - cross renames to be detected for regular files
expecting success of 4023.3 'cross renames to be detected for typechange':
git diff-tree one two -r --name-status -B -M >out &&
sort out >actual &&
{
echo "R100 foo bar" &&
echo "R100 bar foo"
} | sort >expect &&
test_cmp expect actual
ok 3 - cross renames to be detected for typechange
expecting success of 4023.4 'moves and renames':
git diff-tree three four -r --name-status -B -M >out &&
sort out >actual &&
{
# see -B -M (#6) in t4008
echo "C100 foo bar" &&
echo "T100 foo"
} | sort >expect &&
test_cmp expect actual
ok 4 - moves and renames
# passed all 4 test(s)
1..4
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4024-diff-optimize-common.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4024-diff-optimize-common/.git/
expecting success of 4024.1 'setup':
for n in $sample
do
( zs $n && echo a ) >file-a$n &&
( echo b && zs $n && echo ) >file-b$n &&
( printf c && zs $n ) >file-c$n &&
( echo d && zs $n ) >file-d$n &&
git add file-a$n file-b$n file-c$n file-d$n &&
( zs $n && echo A ) >file-a$n &&
( echo B && zs $n && echo ) >file-b$n &&
( printf C && zs $n ) >file-c$n &&
( echo D && zs $n ) >file-d$n &&
expect_pattern $n || return 1
done >expect
ok 1 - setup
expecting success of 4024.2 'diff -U0':
for n in $sample
do
git diff -U0 file-?$n || return 1
done | zc >actual &&
test_cmp expect actual
ok 2 - diff -U0
# passed all 2 test(s)
1..2
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4025-hunk-header.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4025-hunk-header/.git/
expecting success of 4025.1 'setup':
(
echo "A $NS" &&
printf " %s\n" B C D E F G H I J K &&
echo "L $NS" &&
printf " %s\n" M N O P Q R S T U V
) >file &&
git add file &&
sed -e "/^ [EP]/s/$/ modified/" <file >file+ &&
mv file+ file
ok 1 - setup
expecting success of 4025.2 'hunk header truncation with an overly long line':
git diff | sed -n -e "s/^.*@@//p" >actual &&
(
echo " A $N$N$N$N$N$N$N$N$N2" &&
echo " L $N$N$N$N$N$N$N$N$N1"
) >expected &&
test_cmp expected actual
ok 2 - hunk header truncation with an overly long line
# passed all 2 test(s)
1..2
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4013-diff-various.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4013-diff-various/.git/
expecting success of 4013.1 'setup':
GIT_AUTHOR_DATE="2006-06-26 00:00:00 +0000" &&
GIT_COMMITTER_DATE="2006-06-26 00:00:00 +0000" &&
export GIT_AUTHOR_DATE GIT_COMMITTER_DATE &&
mkdir dir &&
mkdir dir2 &&
test_write_lines 1 2 3 >file0 &&
test_write_lines A B >dir/sub &&
cat file0 >file2 &&
git add file0 file2 dir/sub &&
git commit -m Initial &&
git branch initial &&
git branch side &&
GIT_AUTHOR_DATE="2006-06-26 00:01:00 +0000" &&
GIT_COMMITTER_DATE="2006-06-26 00:01:00 +0000" &&
export GIT_AUTHOR_DATE GIT_COMMITTER_DATE &&
test_write_lines 4 5 6 >>file0 &&
test_write_lines C D >>dir/sub &&
rm -f file2 &&
git update-index --remove file0 file2 dir/sub &&
git commit -m "Second${LF}${LF}This is the second commit." &&
GIT_AUTHOR_DATE="2006-06-26 00:02:00 +0000" &&
GIT_COMMITTER_DATE="2006-06-26 00:02:00 +0000" &&
export GIT_AUTHOR_DATE GIT_COMMITTER_DATE &&
test_write_lines A B C >file1 &&
git add file1 &&
test_write_lines E F >>dir/sub &&
git update-index dir/sub &&
git commit -m Third &&
GIT_AUTHOR_DATE="2006-06-26 00:03:00 +0000" &&
GIT_COMMITTER_DATE="2006-06-26 00:03:00 +0000" &&
export GIT_AUTHOR_DATE GIT_COMMITTER_DATE &&
git checkout side &&
test_write_lines A B C >>file0 &&
test_write_lines 1 2 >>dir/sub &&
cat dir/sub >file3 &&
git add file3 &&
git update-index file0 dir/sub &&
git commit -m Side &&
GIT_AUTHOR_DATE="2006-06-26 00:04:00 +0000" &&
GIT_COMMITTER_DATE="2006-06-26 00:04:00 +0000" &&
export GIT_AUTHOR_DATE GIT_COMMITTER_DATE &&
git checkout master &&
git pull -s ours --no-rebase . side &&
GIT_AUTHOR_DATE="2006-06-26 00:05:00 +0000" &&
GIT_COMMITTER_DATE="2006-06-26 00:05:00 +0000" &&
export GIT_AUTHOR_DATE GIT_COMMITTER_DATE &&
test_write_lines A B C >>file0 &&
test_write_lines 1 2 >>dir/sub &&
git update-index file0 dir/sub &&
mkdir dir3 &&
cp dir/sub dir3/sub &&
test-tool chmtime +1 dir3/sub &&
git config log.showroot false &&
git commit --amend &&
GIT_AUTHOR_DATE="2006-06-26 00:06:00 +0000" &&
GIT_COMMITTER_DATE="2006-06-26 00:06:00 +0000" &&
export GIT_AUTHOR_DATE GIT_COMMITTER_DATE &&
git checkout -b rearrange initial &&
test_write_lines B A >dir/sub &&
git add dir/sub &&
git commit -m "Rearranged lines in dir/sub" &&
git checkout master &&
GIT_AUTHOR_DATE="2006-06-26 00:06:00 +0000" &&
GIT_COMMITTER_DATE="2006-06-26 00:06:00 +0000" &&
export GIT_AUTHOR_DATE GIT_COMMITTER_DATE &&
git checkout -b mode initial &&
git update-index --chmod=+x file0 &&
git commit -m "update mode" &&
git checkout -f master &&
GIT_AUTHOR_DATE="2006-06-26 00:06:00 +0000" &&
GIT_COMMITTER_DATE="2006-06-26 00:06:00 +0000" &&
export GIT_AUTHOR_DATE GIT_COMMITTER_DATE &&
git checkout -b note initial &&
git update-index --chmod=+x file2 &&
git commit -m "update mode (file2)" &&
git notes add -m "note" &&
git checkout -f master &&
# Same merge as master, but with parents reversed. Hide it in a
# pseudo-ref to avoid impacting tests with --all.
commit=$(echo reverse |
git commit-tree -p master^2 -p master^1 master^{tree}) &&
git update-ref REVERSE $commit &&
git config diff.renames false &&
git show-branch
[master (root-commit) 444ac55] Initial
Author: A U Thor <author@example.com>
3 files changed, 8 insertions(+)
create mode 100644 dir/sub
create mode 100644 file0
create mode 100644 file2
[master 1bde4ae] Second
Author: A U Thor <author@example.com>
3 files changed, 5 insertions(+), 3 deletions(-)
delete mode 100644 file2
[master 9a6d494] Third
Author: A U Thor <author@example.com>
2 files changed, 5 insertions(+)
create mode 100644 file1
Switched to branch 'side'
[side c7a2ab9] Side
Author: A U Thor <author@example.com>
3 files changed, 9 insertions(+)
create mode 100644 file3
Switched to branch 'master'
From .
* branch side -> FETCH_HEAD
Merge made by the 'ours' strategy.
[master 59d314a] Merge branch 'side'
Author: A U Thor <author@example.com>
Date: Mon Jun 26 00:04:00 2006 +0000
Switched to a new branch 'rearrange'
[rearrange cd4e72f] Rearranged lines in dir/sub
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to branch 'master'
Switched to a new branch 'mode'
[mode b7e0bc6] update mode
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
mode change 100644 => 100755 file0
Switched to branch 'master'
Switched to a new branch 'note'
[note a6f3643] update mode (file2)
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
mode change 100644 => 100755 file2
Switched to branch 'master'
! [initial] Initial
* [master] Merge branch 'side'
! [mode] update mode
! [note] update mode (file2)
! [rearrange] Rearranged lines in dir/sub
! [side] Side
------
+ [rearrange] Rearranged lines in dir/sub
+ [note] update mode (file2)
+ [mode] update mode
- [master] Merge branch 'side'
* + [side] Side
* [master^] Third
* [master~2] Second
+*++++ [initial] Initial
ok 1 - setup
expecting success of 4013.2 'git diff-tree initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 2 - git diff-tree initial # magic is (not used)
expecting success of 4013.3 'git diff-tree -r initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 3 - git diff-tree -r initial # magic is (not used)
expecting success of 4013.4 'git diff-tree -r --abbrev initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 4 - git diff-tree -r --abbrev initial # magic is (not used)
expecting success of 4013.5 'git diff-tree -r --abbrev=4 initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 5 - git diff-tree -r --abbrev=4 initial # magic is (not used)
expecting success of 4013.6 'git diff-tree --root initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 6 - git diff-tree --root initial # magic is (not used)
expecting success of 4013.7 'git diff-tree --root --abbrev initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 7 - git diff-tree --root --abbrev initial # magic is (not used)
expecting success of 4013.8 'git diff-tree --root --abbrev initial # magic is noellipses':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 8 - git diff-tree --root --abbrev initial # magic is noellipses
expecting success of 4013.9 'git diff-tree --root -r initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 9 - git diff-tree --root -r initial # magic is (not used)
expecting success of 4013.10 'git diff-tree --root -r --abbrev initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 10 - git diff-tree --root -r --abbrev initial # magic is (not used)
expecting success of 4013.11 'git diff-tree --root -r --abbrev initial # magic is noellipses':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 11 - git diff-tree --root -r --abbrev initial # magic is noellipses
expecting success of 4013.12 'git diff-tree --root -r --abbrev=4 initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 12 - git diff-tree --root -r --abbrev=4 initial # magic is (not used)
expecting success of 4013.13 'git diff-tree --root -r --abbrev=4 initial # magic is noellipses':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 13 - git diff-tree --root -r --abbrev=4 initial # magic is noellipses
expecting success of 4013.14 'git diff-tree -p initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 14 - git diff-tree -p initial # magic is (not used)
expecting success of 4013.15 'git diff-tree --root -p initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 15 - git diff-tree --root -p initial # magic is (not used)
expecting success of 4013.16 'git diff-tree --root -p --abbrev=10 initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 16 - git diff-tree --root -p --abbrev=10 initial # magic is (not used)
expecting success of 4013.17 'git diff-tree --root -p --full-index initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 17 - git diff-tree --root -p --full-index initial # magic is (not used)
expecting success of 4013.18 'git diff-tree --root -p --full-index --abbrev=10 initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 18 - git diff-tree --root -p --full-index --abbrev=10 initial # magic is (not used)
expecting success of 4013.19 'git diff-tree --patch-with-stat initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 19 - git diff-tree --patch-with-stat initial # magic is (not used)
expecting success of 4013.20 'git diff-tree --root --patch-with-stat initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 20 - git diff-tree --root --patch-with-stat initial # magic is (not used)
expecting success of 4013.21 'git diff-tree --patch-with-raw initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 21 - git diff-tree --patch-with-raw initial # magic is (not used)
expecting success of 4013.22 'git diff-tree --root --patch-with-raw initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 22 - git diff-tree --root --patch-with-raw initial # magic is (not used)
expecting success of 4013.23 'git diff-tree --pretty initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 23 - git diff-tree --pretty initial # magic is (not used)
expecting success of 4013.24 'git diff-tree --pretty --root initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 24 - git diff-tree --pretty --root initial # magic is (not used)
expecting success of 4013.25 'git diff-tree --pretty -p initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 25 - git diff-tree --pretty -p initial # magic is (not used)
expecting success of 4013.26 'git diff-tree --pretty --stat initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 26 - git diff-tree --pretty --stat initial # magic is (not used)
expecting success of 4013.27 'git diff-tree --pretty --summary initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 27 - git diff-tree --pretty --summary initial # magic is (not used)
expecting success of 4013.28 'git diff-tree --pretty --stat --summary initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 28 - git diff-tree --pretty --stat --summary initial # magic is (not used)
expecting success of 4013.29 'git diff-tree --pretty --root -p initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 29 - git diff-tree --pretty --root -p initial # magic is (not used)
expecting success of 4013.30 'git diff-tree --pretty --root --stat initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 30 - git diff-tree --pretty --root --stat initial # magic is (not used)
expecting success of 4013.31 'git diff-tree --pretty --root --summary initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 31 - git diff-tree --pretty --root --summary initial # magic is (not used)
expecting success of 4013.32 'git diff-tree --pretty --root --summary -r initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 32 - git diff-tree --pretty --root --summary -r initial # magic is (not used)
expecting success of 4013.33 'git diff-tree --pretty --root --stat --summary initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 33 - git diff-tree --pretty --root --stat --summary initial # magic is (not used)
expecting success of 4013.34 'git diff-tree --pretty --patch-with-stat initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 34 - git diff-tree --pretty --patch-with-stat initial # magic is (not used)
expecting success of 4013.35 'git diff-tree --pretty --root --patch-with-stat initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 35 - git diff-tree --pretty --root --patch-with-stat initial # magic is (not used)
expecting success of 4013.36 'git diff-tree --pretty --patch-with-raw initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 36 - git diff-tree --pretty --patch-with-raw initial # magic is (not used)
expecting success of 4013.37 'git diff-tree --pretty --root --patch-with-raw initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 37 - git diff-tree --pretty --root --patch-with-raw initial # magic is (not used)
expecting success of 4013.38 'git diff-tree --pretty=oneline initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 38 - git diff-tree --pretty=oneline initial # magic is (not used)
expecting success of 4013.39 'git diff-tree --pretty=oneline --root initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 39 - git diff-tree --pretty=oneline --root initial # magic is (not used)
expecting success of 4013.40 'git diff-tree --pretty=oneline -p initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 40 - git diff-tree --pretty=oneline -p initial # magic is (not used)
expecting success of 4013.41 'git diff-tree --pretty=oneline --root -p initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 41 - git diff-tree --pretty=oneline --root -p initial # magic is (not used)
expecting success of 4013.42 'git diff-tree --pretty=oneline --patch-with-stat initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 42 - git diff-tree --pretty=oneline --patch-with-stat initial # magic is (not used)
expecting success of 4013.43 'git diff-tree --pretty=oneline --root --patch-with-stat initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 43 - git diff-tree --pretty=oneline --root --patch-with-stat initial # magic is (not used)
expecting success of 4013.44 'git diff-tree --pretty=oneline --patch-with-raw initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 44 - git diff-tree --pretty=oneline --patch-with-raw initial # magic is (not used)
expecting success of 4013.45 'git diff-tree --pretty=oneline --root --patch-with-raw initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 45 - git diff-tree --pretty=oneline --root --patch-with-raw initial # magic is (not used)
expecting success of 4013.46 'git diff-tree --pretty side # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 46 - git diff-tree --pretty side # magic is (not used)
expecting success of 4013.47 'git diff-tree --pretty -p side # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 47 - git diff-tree --pretty -p side # magic is (not used)
expecting success of 4013.48 'git diff-tree --pretty --patch-with-stat side # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 48 - git diff-tree --pretty --patch-with-stat side # magic is (not used)
expecting success of 4013.49 'git diff-tree initial mode # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 49 - git diff-tree initial mode # magic is (not used)
expecting success of 4013.50 'git diff-tree --stat initial mode # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 50 - git diff-tree --stat initial mode # magic is (not used)
expecting success of 4013.51 'git diff-tree --summary initial mode # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 51 - git diff-tree --summary initial mode # magic is (not used)
expecting success of 4013.52 'git diff-tree master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 52 - git diff-tree master # magic is (not used)
expecting success of 4013.53 'git diff-tree -m master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 53 - git diff-tree -m master # magic is (not used)
expecting success of 4013.54 'git diff-tree -p master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 54 - git diff-tree -p master # magic is (not used)
expecting success of 4013.55 'git diff-tree -p -m master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 55 - git diff-tree -p -m master # magic is (not used)
expecting success of 4013.56 'git diff-tree -c master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 56 - git diff-tree -c master # magic is (not used)
expecting success of 4013.57 'git diff-tree -c --abbrev master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 57 - git diff-tree -c --abbrev master # magic is (not used)
expecting success of 4013.58 'git diff-tree -c --abbrev master # magic is noellipses':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 58 - git diff-tree -c --abbrev master # magic is noellipses
expecting success of 4013.59 'git diff-tree --cc master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 59 - git diff-tree --cc master # magic is (not used)
expecting success of 4013.60 'git diff-tree -c --stat master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 60 - git diff-tree -c --stat master # magic is (not used)
expecting success of 4013.61 'git diff-tree --cc --stat master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 61 - git diff-tree --cc --stat master # magic is (not used)
expecting success of 4013.62 'git diff-tree -c --stat --summary master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 62 - git diff-tree -c --stat --summary master # magic is (not used)
expecting success of 4013.63 'git diff-tree --cc --stat --summary master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 63 - git diff-tree --cc --stat --summary master # magic is (not used)
expecting success of 4013.64 'git diff-tree -c --stat --summary side # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 64 - git diff-tree -c --stat --summary side # magic is (not used)
expecting success of 4013.65 'git diff-tree --cc --stat --summary side # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 65 - git diff-tree --cc --stat --summary side # magic is (not used)
expecting success of 4013.66 'git diff-tree --cc --shortstat master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 66 - git diff-tree --cc --shortstat master # magic is (not used)
expecting success of 4013.67 'git diff-tree --cc --summary REVERSE # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 67 - git diff-tree --cc --summary REVERSE # magic is (not used)
expecting success of 4013.68 'git diff-tree --cc --patch-with-stat master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 68 - git diff-tree --cc --patch-with-stat master # magic is (not used)
expecting success of 4013.69 'git diff-tree --cc --patch-with-stat --summary master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 69 - git diff-tree --cc --patch-with-stat --summary master # magic is (not used)
expecting success of 4013.70 'git diff-tree --cc --patch-with-stat --summary side # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 70 - git diff-tree --cc --patch-with-stat --summary side # magic is (not used)
expecting success of 4013.71 'git log master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 71 - git log master # magic is (not used)
expecting success of 4013.72 'git log -p master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 72 - git log -p master # magic is (not used)
expecting success of 4013.73 'git log --root master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 73 - git log --root master # magic is (not used)
expecting success of 4013.74 'git log --root -p master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 74 - git log --root -p master # magic is (not used)
expecting success of 4013.75 'git log --patch-with-stat master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 75 - git log --patch-with-stat master # magic is (not used)
expecting success of 4013.76 'git log --root --patch-with-stat master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 76 - git log --root --patch-with-stat master # magic is (not used)
expecting success of 4013.77 'git log --root --patch-with-stat --summary master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 77 - git log --root --patch-with-stat --summary master # magic is (not used)
expecting success of 4013.78 'git log --root -c --patch-with-stat --summary master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 78 - git log --root -c --patch-with-stat --summary master # magic is (not used)
expecting success of 4013.79 'git log --root --cc --patch-with-stat --summary master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 79 - git log --root --cc --patch-with-stat --summary master # magic is (not used)
expecting success of 4013.80 'git log --no-diff-merges -p --first-parent master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 80 - git log --no-diff-merges -p --first-parent master # magic is (not used)
expecting success of 4013.81 'git log --diff-merges=off -p --first-parent master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 81 - git log --diff-merges=off -p --first-parent master # magic is (not used)
expecting success of 4013.82 'git log --first-parent --diff-merges=off -p master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 82 - git log --first-parent --diff-merges=off -p master # magic is (not used)
expecting success of 4013.83 'git log -p --first-parent master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 83 - git log -p --first-parent master # magic is (not used)
expecting success of 4013.84 'git log -p --diff-merges=first-parent master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 84 - git log -p --diff-merges=first-parent master # magic is (not used)
expecting success of 4013.85 'git log --diff-merges=first-parent master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 85 - git log --diff-merges=first-parent master # magic is (not used)
expecting success of 4013.86 'git log -m -p --first-parent master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 86 - git log -m -p --first-parent master # magic is (not used)
expecting success of 4013.87 'git log -m -p master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 87 - git log -m -p master # magic is (not used)
expecting success of 4013.88 'git log --cc -m -p master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 88 - git log --cc -m -p master # magic is (not used)
expecting success of 4013.89 'git log -c -m -p master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 89 - git log -c -m -p master # magic is (not used)
expecting success of 4013.90 'git log -m --raw master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 90 - git log -m --raw master # magic is (not used)
expecting success of 4013.91 'git log -m --stat master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 91 - git log -m --stat master # magic is (not used)
expecting success of 4013.92 'git log -SF master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 92 - git log -SF master # magic is (not used)
expecting success of 4013.93 'git log -S F master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 93 - git log -S F master # magic is (not used)
expecting success of 4013.94 'git log -SF -p master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 94 - git log -SF -p master # magic is (not used)
expecting success of 4013.95 'git log -SF master --max-count=0 # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 95 - git log -SF master --max-count=0 # magic is (not used)
expecting success of 4013.96 'git log -SF master --max-count=1 # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 96 - git log -SF master --max-count=1 # magic is (not used)
expecting success of 4013.97 'git log -SF master --max-count=2 # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 97 - git log -SF master --max-count=2 # magic is (not used)
expecting success of 4013.98 'git log -GF master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 98 - git log -GF master # magic is (not used)
expecting success of 4013.99 'git log -GF -p master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 99 - git log -GF -p master # magic is (not used)
expecting success of 4013.100 'git log -GF -p --pickaxe-all master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 100 - git log -GF -p --pickaxe-all master # magic is (not used)
expecting success of 4013.101 'git log -IA -IB -I1 -I2 -p master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 101 - git log -IA -IB -I1 -I2 -p master # magic is (not used)
expecting success of 4013.102 'git log --decorate --all # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 102 - git log --decorate --all # magic is (not used)
expecting success of 4013.103 'git log --decorate=full --all # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 103 - git log --decorate=full --all # magic is (not used)
expecting success of 4013.104 'git log --decorate --clear-decorations --all # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 104 - git log --decorate --clear-decorations --all # magic is (not used)
expecting success of 4013.105 'git log --decorate=full --clear-decorations --all # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 105 - git log --decorate=full --clear-decorations --all # magic is (not used)
expecting success of 4013.106 'git rev-list --parents HEAD # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 106 - git rev-list --parents HEAD # magic is (not used)
expecting success of 4013.107 'git rev-list --children HEAD # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 107 - git rev-list --children HEAD # magic is (not used)
expecting success of 4013.108 'git whatchanged master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 108 - git whatchanged master # magic is (not used)
expecting success of 4013.109 'git whatchanged master # magic is noellipses':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 109 - git whatchanged master # magic is noellipses
expecting success of 4013.110 'git whatchanged -p master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 110 - git whatchanged -p master # magic is (not used)
expecting success of 4013.111 'git whatchanged --root master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 111 - git whatchanged --root master # magic is (not used)
expecting success of 4013.112 'git whatchanged --root master # magic is noellipses':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 112 - git whatchanged --root master # magic is noellipses
expecting success of 4013.113 'git whatchanged --root -p master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 113 - git whatchanged --root -p master # magic is (not used)
expecting success of 4013.114 'git whatchanged --patch-with-stat master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 114 - git whatchanged --patch-with-stat master # magic is (not used)
expecting success of 4013.115 'git whatchanged --root --patch-with-stat master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 115 - git whatchanged --root --patch-with-stat master # magic is (not used)
expecting success of 4013.116 'git whatchanged --root --patch-with-stat --summary master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 116 - git whatchanged --root --patch-with-stat --summary master # magic is (not used)
expecting success of 4013.117 'git whatchanged --root -c --patch-with-stat --summary master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 117 - git whatchanged --root -c --patch-with-stat --summary master # magic is (not used)
expecting success of 4013.118 'git whatchanged --root --cc --patch-with-stat --summary master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 118 - git whatchanged --root --cc --patch-with-stat --summary master # magic is (not used)
expecting success of 4013.119 'git whatchanged -SF master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 119 - git whatchanged -SF master # magic is (not used)
expecting success of 4013.120 'git whatchanged -SF master # magic is noellipses':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 120 - git whatchanged -SF master # magic is noellipses
expecting success of 4013.121 'git whatchanged -SF -p master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 121 - git whatchanged -SF -p master # magic is (not used)
expecting success of 4013.122 'git log --patch-with-stat master -- dir/ # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 122 - git log --patch-with-stat master -- dir/ # magic is (not used)
expecting success of 4013.123 'git whatchanged --patch-with-stat master -- dir/ # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 123 - git whatchanged --patch-with-stat master -- dir/ # magic is (not used)
expecting success of 4013.124 'git log --patch-with-stat --summary master -- dir/ # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 124 - git log --patch-with-stat --summary master -- dir/ # magic is (not used)
expecting success of 4013.125 'git whatchanged --patch-with-stat --summary master -- dir/ # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 125 - git whatchanged --patch-with-stat --summary master -- dir/ # magic is (not used)
expecting success of 4013.126 'git show initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 126 - git show initial # magic is (not used)
expecting success of 4013.127 'git show --root initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 127 - git show --root initial # magic is (not used)
expecting success of 4013.128 'git show side # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 128 - git show side # magic is (not used)
expecting success of 4013.129 'git show master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 129 - git show master # magic is (not used)
expecting success of 4013.130 'git show -c master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 130 - git show -c master # magic is (not used)
expecting success of 4013.131 'git show -m master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 131 - git show -m master # magic is (not used)
expecting success of 4013.132 'git show --first-parent master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 132 - git show --first-parent master # magic is (not used)
expecting success of 4013.133 'git show --stat side # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 133 - git show --stat side # magic is (not used)
expecting success of 4013.134 'git show --stat --summary side # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 134 - git show --stat --summary side # magic is (not used)
expecting success of 4013.135 'git show --patch-with-stat side # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 135 - git show --patch-with-stat side # magic is (not used)
expecting success of 4013.136 'git show --patch-with-raw side # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 136 - git show --patch-with-raw side # magic is (not used)
expecting success of 4013.137 'git show --patch-with-raw side # magic is noellipses':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 137 - git show --patch-with-raw side # magic is noellipses
expecting success of 4013.138 'git show --patch-with-stat --summary side # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 138 - git show --patch-with-stat --summary side # magic is (not used)
expecting success of 4013.139 'git format-patch --stdout initial..side # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 139 - git format-patch --stdout initial..side # magic is (not used)
expecting success of 4013.140 'git format-patch --stdout initial..master^ # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 140 - git format-patch --stdout initial..master^ # magic is (not used)
expecting success of 4013.141 'git format-patch --stdout initial..master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 141 - git format-patch --stdout initial..master # magic is (not used)
expecting success of 4013.142 'git format-patch --stdout --no-numbered initial..master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 142 - git format-patch --stdout --no-numbered initial..master # magic is (not used)
expecting success of 4013.143 'git format-patch --stdout --numbered initial..master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 143 - git format-patch --stdout --numbered initial..master # magic is (not used)
expecting success of 4013.144 'git format-patch --attach --stdout initial..side # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 144 - git format-patch --attach --stdout initial..side # magic is (not used)
expecting success of 4013.145 'git format-patch --attach --stdout --suffix=.diff initial..side # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 145 - git format-patch --attach --stdout --suffix=.diff initial..side # magic is (not used)
expecting success of 4013.146 'git format-patch --attach --stdout initial..master^ # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 146 - git format-patch --attach --stdout initial..master^ # magic is (not used)
expecting success of 4013.147 'git format-patch --attach --stdout initial..master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 147 - git format-patch --attach --stdout initial..master # magic is (not used)
expecting success of 4013.148 'git format-patch --inline --stdout initial..side # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 148 - git format-patch --inline --stdout initial..side # magic is (not used)
expecting success of 4013.149 'git format-patch --inline --stdout initial..master^ # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 149 - git format-patch --inline --stdout initial..master^ # magic is (not used)
expecting success of 4013.150 'git format-patch --inline --stdout --numbered-files initial..master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 150 - git format-patch --inline --stdout --numbered-files initial..master # magic is (not used)
expecting success of 4013.151 'git format-patch --inline --stdout initial..master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 151 - git format-patch --inline --stdout initial..master # magic is (not used)
expecting success of 4013.152 'git format-patch --inline --stdout --subject-prefix=TESTCASE initial..master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 152 - git format-patch --inline --stdout --subject-prefix=TESTCASE initial..master # magic is (not used)
expecting success of 4013.153 'git config format.subjectprefix DIFFERENT_PREFIX # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 153 - git config format.subjectprefix DIFFERENT_PREFIX # magic is (not used)
expecting success of 4013.154 'git format-patch --inline --stdout initial..master^^ # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 154 - git format-patch --inline --stdout initial..master^^ # magic is (not used)
expecting success of 4013.155 'git format-patch --stdout --cover-letter -n initial..master^ # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 155 - git format-patch --stdout --cover-letter -n initial..master^ # magic is (not used)
expecting success of 4013.156 'git diff --abbrev initial..side # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 156 - git diff --abbrev initial..side # magic is (not used)
expecting success of 4013.157 'git diff -U initial..side # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 157 - git diff -U initial..side # magic is (not used)
expecting success of 4013.158 'git diff -U1 initial..side # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 158 - git diff -U1 initial..side # magic is (not used)
expecting success of 4013.159 'git diff -r initial..side # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 159 - git diff -r initial..side # magic is (not used)
expecting success of 4013.160 'git diff --stat initial..side # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 160 - git diff --stat initial..side # magic is (not used)
expecting success of 4013.161 'git diff -r --stat initial..side # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 161 - git diff -r --stat initial..side # magic is (not used)
expecting success of 4013.162 'git diff initial..side # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 162 - git diff initial..side # magic is (not used)
expecting success of 4013.163 'git diff --patch-with-stat initial..side # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 163 - git diff --patch-with-stat initial..side # magic is (not used)
expecting success of 4013.164 'git diff --patch-with-raw initial..side # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 164 - git diff --patch-with-raw initial..side # magic is (not used)
expecting success of 4013.165 'git diff --patch-with-raw initial..side # magic is noellipses':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 165 - git diff --patch-with-raw initial..side # magic is noellipses
expecting success of 4013.166 'git diff --patch-with-stat -r initial..side # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 166 - git diff --patch-with-stat -r initial..side # magic is (not used)
expecting success of 4013.167 'git diff --patch-with-raw -r initial..side # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 167 - git diff --patch-with-raw -r initial..side # magic is (not used)
expecting success of 4013.168 'git diff --patch-with-raw -r initial..side # magic is noellipses':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 168 - git diff --patch-with-raw -r initial..side # magic is noellipses
expecting success of 4013.169 'git diff --name-status dir2 dir # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 169 - git diff --name-status dir2 dir # magic is (not used)
expecting success of 4013.170 'git diff --no-index --name-status dir2 dir # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 170 - git diff --no-index --name-status dir2 dir # magic is (not used)
expecting success of 4013.171 'git diff --no-index --name-status -- dir2 dir # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 171 - git diff --no-index --name-status -- dir2 dir # magic is (not used)
expecting success of 4013.172 'git diff --no-index dir dir3 # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 172 - git diff --no-index dir dir3 # magic is (not used)
expecting success of 4013.173 'git diff master master^ side # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 173 - git diff master master^ side # magic is (not used)
expecting success of 4013.174 'git diff --line-prefix=abc master master^ side # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 174 - git diff --line-prefix=abc master master^ side # magic is (not used)
expecting success of 4013.175 'git diff --dirstat master~1 master~2 # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 175 - git diff --dirstat master~1 master~2 # magic is (not used)
expecting success of 4013.176 'git diff --dirstat initial rearrange # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 176 - git diff --dirstat initial rearrange # magic is (not used)
expecting success of 4013.177 'git diff --dirstat-by-file initial rearrange # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 177 - git diff --dirstat-by-file initial rearrange # magic is (not used)
expecting success of 4013.178 'git diff --dirstat --cc master~1 master # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 178 - git diff --dirstat --cc master~1 master # magic is (not used)
expecting success of 4013.179 'git diff --raw initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 179 - git diff --raw initial # magic is (not used)
expecting success of 4013.180 'git diff --raw initial # magic is noellipses':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 180 - git diff --raw initial # magic is noellipses
expecting success of 4013.181 'git diff --raw --abbrev=4 initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 181 - git diff --raw --abbrev=4 initial # magic is (not used)
expecting success of 4013.182 'git diff --raw --abbrev=4 initial # magic is noellipses':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 182 - git diff --raw --abbrev=4 initial # magic is noellipses
expecting success of 4013.183 'git diff --raw --no-abbrev initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 183 - git diff --raw --no-abbrev initial # magic is (not used)
expecting success of 4013.184 'git diff --no-index --raw dir2 dir # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 184 - git diff --no-index --raw dir2 dir # magic is (not used)
expecting success of 4013.185 'git diff --no-index --raw dir2 dir # magic is noellipses':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 185 - git diff --no-index --raw dir2 dir # magic is noellipses
expecting success of 4013.186 'git diff --no-index --raw --abbrev=4 dir2 dir # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 186 - git diff --no-index --raw --abbrev=4 dir2 dir # magic is (not used)
expecting success of 4013.187 'git diff --no-index --raw --abbrev=4 dir2 dir # magic is noellipses':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 187 - git diff --no-index --raw --abbrev=4 dir2 dir # magic is noellipses
expecting success of 4013.188 'git diff --no-index --raw --no-abbrev dir2 dir # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 188 - git diff --no-index --raw --no-abbrev dir2 dir # magic is (not used)
expecting success of 4013.189 'git diff-tree --pretty --root --stat --compact-summary initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 189 - git diff-tree --pretty --root --stat --compact-summary initial # magic is (not used)
expecting success of 4013.190 'git diff-tree --pretty -R --root --stat --compact-summary initial # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 190 - git diff-tree --pretty -R --root --stat --compact-summary initial # magic is (not used)
expecting success of 4013.191 'git diff-tree --pretty note # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 191 - git diff-tree --pretty note # magic is (not used)
expecting success of 4013.192 'git diff-tree --pretty --notes note # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 192 - git diff-tree --pretty --notes note # magic is (not used)
expecting success of 4013.193 'git diff-tree --format=%N note # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 193 - git diff-tree --format=%N note # magic is (not used)
expecting success of 4013.194 'git diff-tree --stat --compact-summary initial mode # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 194 - git diff-tree --stat --compact-summary initial mode # magic is (not used)
expecting success of 4013.195 'git diff-tree -R --stat --compact-summary initial mode # magic is (not used)':
{
echo "$ git $cmd"
case "$magic" in
"")
GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
noellipses)
git $cmd ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
echo "\$"
} >"$actual" &&
if test -f "$expect"
then
process_diffs "$actual" >actual &&
process_diffs "$expect" >expect &&
case $cmd in
*format-patch* | *-stat*)
test_cmp expect actual;;
*)
test_cmp expect actual;;
esac &&
rm -f "$actual" actual expect
else
# this is to help developing new tests.
cp "$actual" "$expect"
false
fi
ok 195 - git diff-tree -R --stat --compact-summary initial mode # magic is (not used)
expecting success of 4013.196 'log -m matches pure log':
git log master >result &&
process_diffs result >expected &&
git log -m >result &&
process_diffs result >actual &&
test_cmp expected actual
ok 196 - log -m matches pure log
expecting success of 4013.197 'log --diff-merges=on matches --diff-merges=separate':
git log -p --diff-merges=separate master >result &&
process_diffs result >expected &&
git log -p --diff-merges=on master >result &&
process_diffs result >actual &&
test_cmp expected actual
ok 197 - log --diff-merges=on matches --diff-merges=separate
expecting success of 4013.198 'deny wrong log.diffMerges config':
test_config log.diffMerges wrong-value &&
test_expect_code 128 git log
fatal: bad config variable 'log.diffmerges' in file '.git/config' at line 8
ok 198 - deny wrong log.diffMerges config
expecting success of 4013.199 'git config log.diffMerges first-parent':
git log -p --diff-merges=first-parent master >result &&
process_diffs result >expected &&
test_config log.diffMerges first-parent &&
git log -p --diff-merges=on master >result &&
process_diffs result >actual &&
test_cmp expected actual
ok 199 - git config log.diffMerges first-parent
expecting success of 4013.200 'git config log.diffMerges first-parent vs -m':
git log -p --diff-merges=first-parent master >result &&
process_diffs result >expected &&
test_config log.diffMerges first-parent &&
git log -p -m master >result &&
process_diffs result >actual &&
test_cmp expected actual
ok 200 - git config log.diffMerges first-parent vs -m
expecting success of 4013.201 'git diff-index -m':
rm -f file1 &&
git diff-index HEAD >without-m &&
lines_count=$(wc -l <without-m) &&
git diff-index -m HEAD >with-m &&
git restore file1 &&
test_line_count = $((lines_count - 1)) with-m
ok 201 - git diff-index -m
expecting success of 4013.202 'log -S requires an argument':
test_must_fail git log -S
error: switch `S' requires a value
ok 202 - log -S requires an argument
expecting success of 4013.203 'diff --cached on unborn branch':
echo ref: refs/heads/unborn >.git/HEAD &&
git diff --cached >result &&
process_diffs result >actual &&
process_diffs "$TEST_DIRECTORY/t4013/diff.diff_--cached" >expected &&
test_cmp expected actual
ok 203 - diff --cached on unborn branch
expecting success of 4013.204 'diff --cached -- file on unborn branch':
git diff --cached -- file0 >result &&
process_diffs result >actual &&
process_diffs "$TEST_DIRECTORY/t4013/diff.diff_--cached_--_file0" >expected &&
test_cmp expected actual
ok 204 - diff --cached -- file on unborn branch
expecting success of 4013.205 'diff --line-prefix with spaces':
git diff --line-prefix="| | | " --cached -- file0 >result &&
process_diffs result >actual &&
process_diffs "$TEST_DIRECTORY/t4013/diff.diff_--line-prefix_--cached_--_file0" >expected &&
test_cmp expected actual
ok 205 - diff --line-prefix with spaces
expecting success of 4013.206 'diff-tree --stdin with log formatting':
cat >expect <<-\EOF &&
Side
Third
Second
EOF
git rev-list master | git diff-tree --stdin --format=%s -s >actual &&
test_cmp expect actual
ok 206 - diff-tree --stdin with log formatting
expecting success of 4013.207 'diff-tree --stdin with pathspec':
cat >expect <<-EOF &&
Third
dir/sub
Second
dir/sub
EOF
git rev-list master^ |
git diff-tree -r --stdin --name-only --format=%s dir >actual &&
test_cmp expect actual
ok 207 - diff-tree --stdin with pathspec
expecting success of 4013.208 'show A B ... -- <pathspec>':
# side touches dir/sub, file0, and file3
# master^ touches dir/sub, and file1
# master^^ touches dir/sub, file0, and file2
git show --name-only --format="<%s>" side master^ master^^ -- dir >actual &&
cat >expect <<-\EOF &&
<Side>
dir/sub
<Third>
dir/sub
<Second>
dir/sub
EOF
test_cmp expect actual
ok 208 - show A B ... -- <pathspec>
expecting success of 4013.209 'diff -I<regex>: setup':
git checkout master &&
test_seq 50 >file0 &&
git commit -m "Set up -I<regex> test file" file0 &&
test_seq 50 | sed -e "s/13/ten and three/" -e "/7\$/d" >file0 &&
echo >>file0
Switched to branch 'master'
[master 4362559] Set up -I<regex> test file
Author: A U Thor <author@example.com>
1 file changed, 44 insertions(+), 3 deletions(-)
ok 209 - diff -I<regex>: setup
expecting success of 4013.210 'diff -I<regex>':
git diff --ignore-blank-lines -I"ten.*e" -I"^[124-9]" >actual &&
cat >expect <<-\EOF &&
diff --git a/file0 b/file0
--- a/file0
+++ b/file0
@@ -34,7 +31,6 @@
34
35
36
-37
38
39
40
EOF
compare_diff_patch expect actual
ok 210 - diff -I<regex>
expecting success of 4013.211 'diff -I<regex> --stat':
git diff --stat --ignore-blank-lines -I"ten.*e" -I"^[124-9]" >actual &&
cat >expect <<-\EOF &&
file0 | 1 -
1 file changed, 1 deletion(-)
EOF
test_cmp expect actual
ok 211 - diff -I<regex> --stat
expecting success of 4013.212 'diff -I<regex>: detect malformed regex':
test_expect_code 129 git diff --ignore-matching-lines="^[124-9" 2>error &&
test_i18ngrep "invalid regex given to -I: " error
error: invalid regex given to -I: '^[124-9'
ok 212 - diff -I<regex>: detect malformed regex
expecting success of 4013.213 'diff-files does not respect diff.noprefix':
git -c diff.noprefix diff-files -p >actual &&
check_prefix actual a/file0 b/file0
ok 213 - diff-files does not respect diff.noprefix
expecting success of 4013.214 'diff-files respects --no-prefix':
git diff-files -p --no-prefix >actual &&
check_prefix actual file0 file0
ok 214 - diff-files respects --no-prefix
expecting success of 4013.215 'diff respects diff.noprefix':
git -c diff.noprefix diff >actual &&
check_prefix actual file0 file0
ok 215 - diff respects diff.noprefix
expecting success of 4013.216 'diff --default-prefix overrides diff.noprefix':
git -c diff.noprefix diff --default-prefix >actual &&
check_prefix actual a/file0 b/file0
ok 216 - diff --default-prefix overrides diff.noprefix
expecting success of 4013.217 'diff respects diff.mnemonicprefix':
git -c diff.mnemonicprefix diff >actual &&
check_prefix actual i/file0 w/file0
ok 217 - diff respects diff.mnemonicprefix
expecting success of 4013.218 'diff --default-prefix overrides diff.mnemonicprefix':
git -c diff.mnemonicprefix diff --default-prefix >actual &&
check_prefix actual a/file0 b/file0
ok 218 - diff --default-prefix overrides diff.mnemonicprefix
# passed all 218 test(s)
1..218
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4026-color.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4026-color/.git/
expecting success of 4026.1 'reset':
color "reset" "[m"
ok 1 - reset
expecting success of 4026.2 'empty color is empty':
color "" ""
ok 2 - empty color is empty
expecting success of 4026.3 'attribute before color name':
color "bold red" "[1;31m"
ok 3 - attribute before color name
expecting success of 4026.4 'aixterm bright fg color':
color "brightred" "[91m"
ok 4 - aixterm bright fg color
expecting success of 4026.5 'aixterm bright bg color':
color "green brightblue" "[32;104m"
ok 5 - aixterm bright bg color
expecting success of 4026.6 'color name before attribute':
color "red bold" "[1;31m"
ok 6 - color name before attribute
expecting success of 4026.7 'attr fg bg':
color "ul blue red" "[4;34;41m"
ok 7 - attr fg bg
expecting success of 4026.8 'fg attr bg':
color "blue ul red" "[4;34;41m"
ok 8 - fg attr bg
expecting success of 4026.9 'fg bg attr':
color "blue red ul" "[4;34;41m"
ok 9 - fg bg attr
expecting success of 4026.10 'fg bg attr...':
color "blue bold dim ul blink reverse" "[1;2;4;5;7;34m"
ok 10 - fg bg attr...
expecting success of 4026.11 'reset fg bg attr...':
color "reset blue bold dim ul blink reverse" "[;1;2;4;5;7;34m"
ok 11 - reset fg bg attr...
expecting success of 4026.12 'attr negation':
color "nobold nodim noul noblink noreverse" "[22;24;25;27m"
ok 12 - attr negation
expecting success of 4026.13 '"no-" variant of negation':
color "no-bold no-blink" "[22;25m"
ok 13 - "no-" variant of negation
expecting success of 4026.14 'long color specification':
color "254 255 bold dim ul blink reverse" "[1;2;4;5;7;38;5;254;48;5;255m"
ok 14 - long color specification
expecting success of 4026.15 'absurdly long color specification':
color \
"#ffffff #ffffff bold nobold dim nodim italic noitalic
ul noul blink noblink reverse noreverse strike nostrike" \
"[1;2;3;4;5;7;9;22;23;24;25;27;29;38;2;255;255;255;48;2;255;255;255m"
ok 15 - absurdly long color specification
expecting success of 4026.16 '0-7 are aliases for basic ANSI color names':
color "0 7" "[30;47m"
ok 16 - 0-7 are aliases for basic ANSI color names
expecting success of 4026.17 '8-15 are aliases for aixterm color names':
color "12 13" "[94;105m"
ok 17 - 8-15 are aliases for aixterm color names
expecting success of 4026.18 '256 colors':
color "254 bold 255" "[1;38;5;254;48;5;255m"
ok 18 - 256 colors
expecting success of 4026.19 '24-bit colors':
color "#ff00ff black" "[38;2;255;0;255;40m"
ok 19 - 24-bit colors
expecting success of 4026.20 '"default" foreground':
color "default" "[39m"
ok 20 - "default" foreground
expecting success of 4026.21 '"normal default" to clear background':
color "normal default" "[49m"
ok 21 - "normal default" to clear background
expecting success of 4026.22 '"default" can be combined with attributes':
color "default default no-reverse bold" "[1;27;39;49m"
ok 22 - "default" can be combined with attributes
expecting success of 4026.23 '"normal" yields no color at all"':
color "normal black" "[40m"
ok 23 - "normal" yields no color at all"
expecting success of 4026.24 '-1 is a synonym for "normal"':
color "-1 black" "[40m"
ok 24 - -1 is a synonym for "normal"
expecting success of 4026.25 'color too small':
invalid_color "-2"
error: invalid color value: -2
fatal: unable to parse default color value
ok 25 - color too small
expecting success of 4026.26 'color too big':
invalid_color "256"
error: invalid color value: 256
fatal: unable to parse default color value
ok 26 - color too big
expecting success of 4026.27 'extra character after color number':
invalid_color "3X"
error: invalid color value: 3X
fatal: unable to parse default color value
ok 27 - extra character after color number
expecting success of 4026.28 'extra character after color name':
invalid_color "redX"
error: invalid color value: redX
fatal: unable to parse default color value
ok 28 - extra character after color name
expecting success of 4026.29 'extra character after attribute':
invalid_color "dimX"
error: invalid color value: dimX
fatal: unable to parse default color value
ok 29 - extra character after attribute
expecting success of 4026.30 'unknown color slots are ignored (diff)':
git config color.diff.nosuchslotwilleverbedefined white &&
git diff --color
ok 30 - unknown color slots are ignored (diff)
expecting success of 4026.31 'unknown color slots are ignored (branch)':
git config color.branch.nosuchslotwilleverbedefined white &&
git branch -a
ok 31 - unknown color slots are ignored (branch)
expecting success of 4026.32 'unknown color slots are ignored (status)':
git config color.status.nosuchslotwilleverbedefined white &&
{ git status; ret=$?; } &&
case $ret in 0|1) : ok ;; *) false ;; esac
On branch master
No commits yet
nothing to commit (create/copy files and use "git add" to track)
ok 32 - unknown color slots are ignored (status)
# passed all 32 test(s)
1..32
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4028-format-patch-mime-headers.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4028-format-patch-mime-headers/.git/
expecting success of 4028.1 'create commit with utf-8 body':
echo content >file &&
git add file &&
git commit -m one &&
echo more >>file &&
git commit -a -m "two
utf-8 body: ñ"
[master (root-commit) f39a923] one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
[master 219a3c6] two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
ok 1 - create commit with utf-8 body
expecting success of 4028.2 'patch has mime headers':
rm -f 0001-two.patch &&
git format-patch HEAD^ &&
grep -i "content-type: text/plain; charset=utf-8" 0001-two.patch
0001-two.patch
Content-Type: text/plain; charset=UTF-8
ok 2 - patch has mime headers
expecting success of 4028.3 'patch has mime and extra headers':
rm -f 0001-two.patch &&
git config format.headers "x-foo: bar" &&
git format-patch HEAD^ &&
grep -i "x-foo: bar" 0001-two.patch &&
grep -i "content-type: text/plain; charset=utf-8" 0001-two.patch
0001-two.patch
x-foo: bar
Content-Type: text/plain; charset=UTF-8
ok 3 - patch has mime and extra headers
# passed all 3 test(s)
1..3
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4029-diff-trailing-space.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4029-diff-trailing-space/.git/
expecting success of 4029.1 'diff honors config option, diff.suppressBlankEmpty':
printf "\nx\n" > f &&
before=$(git hash-object f) &&
before=$(git rev-parse --short $before) &&
git add f &&
git commit -q -m. f &&
printf "\ny\n" > f &&
after=$(git hash-object f) &&
after=$(git rev-parse --short $after) &&
sed -e "s/^index .*/index $before..$after 100644/" expected >exp &&
git config --bool diff.suppressBlankEmpty true &&
git diff f > actual &&
test_cmp exp actual &&
perl -i.bak -p -e "s/^\$/ /" exp &&
git config --bool diff.suppressBlankEmpty false &&
git diff f > actual &&
test_cmp exp actual &&
git config --bool --unset diff.suppressBlankEmpty &&
git diff f > actual &&
test_cmp exp actual
ok 1 - diff honors config option, diff.suppressBlankEmpty
# passed all 1 test(s)
1..1
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4014-format-patch.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4014-format-patch/.git/
expecting success of 4014.1 'setup':
test_write_lines 1 2 3 4 5 6 7 8 9 10 >file &&
cat file >elif &&
git add file elif &&
test_tick &&
git commit -m Initial &&
git checkout -b side &&
test_write_lines 1 2 5 6 A B C 7 8 9 10 >file &&
test_chmod +x elif &&
test_tick &&
git commit -m "Side changes #1" &&
test_write_lines D E F >>file &&
git update-index file &&
test_tick &&
git commit -m "Side changes #2" &&
git tag C2 &&
test_write_lines 5 6 1 2 3 A 4 B C 7 8 9 10 D E F >file &&
git update-index file &&
test_tick &&
git commit -m "Side changes #3 with \\n backslash-n in it." &&
git checkout main &&
git diff-tree -p C2 >patch &&
git apply --index <patch &&
test_tick &&
git commit -m "Main accepts moral equivalent of #2" &&
git checkout side &&
git checkout -b patchid &&
test_write_lines 5 6 1 2 3 A 4 B C 7 8 9 10 D E F >file2 &&
test_write_lines 1 2 3 A 4 B C 7 8 9 10 D E F 5 6 >file3 &&
test_write_lines 8 9 10 >file &&
git add file file2 file3 &&
test_tick &&
git commit -m "patchid 1" &&
test_write_lines 4 A B 7 8 9 10 >file2 &&
test_write_lines 8 9 10 5 6 >file3 &&
git add file2 file3 &&
test_tick &&
git commit -m "patchid 2" &&
test_write_lines 10 5 6 >file &&
git add file &&
test_tick &&
git commit -m "patchid 3" &&
git checkout -b empty main &&
test_tick &&
git commit --allow-empty -m "empty commit" &&
git checkout main
[main (root-commit) e27066e] Initial
Author: A U Thor <author@example.com>
2 files changed, 20 insertions(+)
create mode 100644 elif
create mode 100644 file
Switched to a new branch 'side'
[side 1135adf] Side changes #1
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
mode change 100644 => 100755 elif
[side fd00575] Side changes #2
Author: A U Thor <author@example.com>
1 file changed, 6 insertions(+), 2 deletions(-)
[side 18ed22a] Side changes #3 with \n backslash-n in it.
Author: A U Thor <author@example.com>
1 file changed, 4 insertions(+), 2 deletions(-)
Switched to branch 'main'
[main 333d5cb] Main accepts moral equivalent of #2
Author: A U Thor <author@example.com>
1 file changed, 6 insertions(+), 2 deletions(-)
Switched to branch 'side'
Switched to a new branch 'patchid'
[patchid 866b619] patchid 1
Author: A U Thor <author@example.com>
3 files changed, 32 insertions(+), 13 deletions(-)
create mode 100644 file2
create mode 100644 file3
[patchid b0e76a3] patchid 2
Author: A U Thor <author@example.com>
2 files changed, 1 insertion(+), 21 deletions(-)
[patchid e905b62] patchid 3
Author: A U Thor <author@example.com>
1 file changed, 2 insertions(+), 2 deletions(-)
Switched to a new branch 'empty'
[empty 289be11] empty commit
Author: A U Thor <author@example.com>
Switched to branch 'main'
ok 1 - setup
expecting success of 4014.2 'format-patch --ignore-if-in-upstream':
git format-patch --stdout main..side >patch0 &&
grep "^From " patch0 >from0 &&
test_line_count = 3 from0
ok 2 - format-patch --ignore-if-in-upstream
expecting success of 4014.3 'format-patch --ignore-if-in-upstream':
git format-patch --stdout \
--ignore-if-in-upstream main..side >patch1 &&
grep "^From " patch1 >from1 &&
test_line_count = 2 from1
ok 3 - format-patch --ignore-if-in-upstream
expecting success of 4014.4 'format-patch --ignore-if-in-upstream handles tags':
git tag -a v1 -m tag side &&
git tag -a v2 -m tag main &&
git format-patch --stdout --ignore-if-in-upstream v2..v1 >patch1 &&
grep "^From " patch1 >from1 &&
test_line_count = 2 from1
ok 4 - format-patch --ignore-if-in-upstream handles tags
expecting success of 4014.5 'format-patch doesn't consider merge commits':
git checkout -b feature main &&
echo "Another line" >>file &&
test_tick &&
git commit -am "Feature branch change #1" &&
echo "Yet another line" >>file &&
test_tick &&
git commit -am "Feature branch change #2" &&
git checkout -b merger main &&
test_tick &&
git merge --no-ff feature &&
git format-patch -3 --stdout >patch &&
grep "^From " patch >from &&
test_line_count = 3 from
Switched to a new branch 'feature'
[feature a59b7ab] Feature branch change #1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[feature 099a2d9] Feature branch change #2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
Switched to a new branch 'merger'
Merge made by the 'ort' strategy.
file | 2 ++
1 file changed, 2 insertions(+)
ok 5 - format-patch doesn't consider merge commits
expecting success of 4014.6 'format-patch result applies':
git checkout -b rebuild-0 main &&
git am -3 patch0 &&
git rev-list main.. >list &&
test_line_count = 2 list
Switched to a new branch 'rebuild-0'
Applying: Side changes #1
Applying: Side changes #2
Using index info to reconstruct a base tree...
M file
Falling back to patching base and 3-way merge...
Merging:
670fb98 Side changes #1
virtual Side changes #2
found 1 common ancestor:
virtual 8359489d93991065cdaa748bd96dcb831b3d60ca
No changes -- Patch already applied.
Applying: Side changes #3 with \n backslash-n in it.
ok 6 - format-patch result applies
expecting success of 4014.7 'format-patch --ignore-if-in-upstream result applies':
git checkout -b rebuild-1 main &&
git am -3 patch1 &&
git rev-list main.. >list &&
test_line_count = 2 list
Switched to a new branch 'rebuild-1'
Applying: Side changes #1
Applying: Side changes #3 with \n backslash-n in it.
ok 7 - format-patch --ignore-if-in-upstream result applies
expecting success of 4014.8 'commit did not screw up the log message':
git cat-file commit side >actual &&
grep "^Side .* with .* backslash-n" actual
Side changes #3 with \n backslash-n in it.
ok 8 - commit did not screw up the log message
expecting success of 4014.9 'format-patch did not screw up the log message':
grep "^Subject: .*Side changes #3 with .* backslash-n" patch0 &&
grep "^Subject: .*Side changes #3 with .* backslash-n" patch1
Subject: [PATCH 3/3] Side changes #3 with \n backslash-n in it.
Subject: [PATCH 2/2] Side changes #3 with \n backslash-n in it.
ok 9 - format-patch did not screw up the log message
expecting success of 4014.10 'replay did not screw up the log message':
git cat-file commit rebuild-1 >actual &&
grep "^Side .* with .* backslash-n" actual
Side changes #3 with \n backslash-n in it.
ok 10 - replay did not screw up the log message
expecting success of 4014.11 'format-patch empty commit':
git format-patch --stdout main..empty >empty &&
grep "^From " empty >from &&
test_line_count = 1 from
ok 11 - format-patch empty commit
expecting success of 4014.12 'extra headers':
git config format.headers "To: R E Cipient <rcipient@example.com>
" &&
git config --add format.headers "Cc: S E Cipient <scipient@example.com>
" &&
git format-patch --stdout main..side >patch2 &&
sed -e "/^\$/q" patch2 >hdrs2 &&
grep "^To: R E Cipient <rcipient@example.com>\$" hdrs2 &&
grep "^Cc: S E Cipient <scipient@example.com>\$" hdrs2
To: R E Cipient <rcipient@example.com>
Cc: S E Cipient <scipient@example.com>
ok 12 - extra headers
expecting success of 4014.13 'extra headers without newlines':
git config --replace-all format.headers "To: R E Cipient <rcipient@example.com>" &&
git config --add format.headers "Cc: S E Cipient <scipient@example.com>" &&
git format-patch --stdout main..side >patch3 &&
sed -e "/^\$/q" patch3 >hdrs3 &&
grep "^To: R E Cipient <rcipient@example.com>\$" hdrs3 &&
grep "^Cc: S E Cipient <scipient@example.com>\$" hdrs3
To: R E Cipient <rcipient@example.com>
Cc: S E Cipient <scipient@example.com>
ok 13 - extra headers without newlines
expecting success of 4014.14 'extra headers with multiple To:s':
git config --replace-all format.headers "To: R E Cipient <rcipient@example.com>" &&
git config --add format.headers "To: S E Cipient <scipient@example.com>" &&
git format-patch --stdout main..side >patch4 &&
sed -e "/^\$/q" patch4 >hdrs4 &&
grep "^To: R E Cipient <rcipient@example.com>,\$" hdrs4 &&
grep "^ *S E Cipient <scipient@example.com>\$" hdrs4
To: R E Cipient <rcipient@example.com>,
S E Cipient <scipient@example.com>
ok 14 - extra headers with multiple To:s
expecting success of 4014.15 'additional command line cc (ascii)':
git config --replace-all format.headers "Cc: R E Cipient <rcipient@example.com>" &&
git format-patch --cc="S E Cipient <scipient@example.com>" --stdout main..side >patch5 &&
sed -e "/^\$/q" patch5 >hdrs5 &&
grep "^Cc: R E Cipient <rcipient@example.com>,\$" hdrs5 &&
grep "^ *S E Cipient <scipient@example.com>\$" hdrs5
Cc: R E Cipient <rcipient@example.com>,
S E Cipient <scipient@example.com>
ok 15 - additional command line cc (ascii)
checking known breakage of 4014.16 'additional command line cc (rfc822)':
git config --replace-all format.headers "Cc: R E Cipient <rcipient@example.com>" &&
git format-patch --cc="S. E. Cipient <scipient@example.com>" --stdout main..side >patch5 &&
sed -e "/^\$/q" patch5 >hdrs5 &&
grep "^Cc: R E Cipient <rcipient@example.com>,\$" hdrs5 &&
grep "^ *\"S. E. Cipient\" <scipient@example.com>\$" hdrs5
Cc: R E Cipient <rcipient@example.com>,
not ok 16 - additional command line cc (rfc822) # TODO known breakage
expecting success of 4014.17 'command line headers':
git config --unset-all format.headers &&
git format-patch --add-header="Cc: R E Cipient <rcipient@example.com>" --stdout main..side >patch6 &&
sed -e "/^\$/q" patch6 >hdrs6 &&
grep "^Cc: R E Cipient <rcipient@example.com>\$" hdrs6
Cc: R E Cipient <rcipient@example.com>
ok 17 - command line headers
expecting success of 4014.18 'configuration headers and command line headers':
git config --replace-all format.headers "Cc: R E Cipient <rcipient@example.com>" &&
git format-patch --add-header="Cc: S E Cipient <scipient@example.com>" --stdout main..side >patch7 &&
sed -e "/^\$/q" patch7 >hdrs7 &&
grep "^Cc: R E Cipient <rcipient@example.com>,\$" hdrs7 &&
grep "^ *S E Cipient <scipient@example.com>\$" hdrs7
Cc: R E Cipient <rcipient@example.com>,
S E Cipient <scipient@example.com>
ok 18 - configuration headers and command line headers
expecting success of 4014.19 'command line To: header (ascii)':
git config --unset-all format.headers &&
git format-patch --to="R E Cipient <rcipient@example.com>" --stdout main..side >patch8 &&
sed -e "/^\$/q" patch8 >hdrs8 &&
grep "^To: R E Cipient <rcipient@example.com>\$" hdrs8
To: R E Cipient <rcipient@example.com>
ok 19 - command line To: header (ascii)
checking known breakage of 4014.20 'command line To: header (rfc822)':
git format-patch --to="R. E. Cipient <rcipient@example.com>" --stdout main..side >patch8 &&
sed -e "/^\$/q" patch8 >hdrs8 &&
grep "^To: \"R. E. Cipient\" <rcipient@example.com>\$" hdrs8
not ok 20 - command line To: header (rfc822) # TODO known breakage
checking known breakage of 4014.21 'command line To: header (rfc2047)':
git format-patch --to="R Ä Cipient <rcipient@example.com>" --stdout main..side >patch8 &&
sed -e "/^\$/q" patch8 >hdrs8 &&
grep "^To: =?UTF-8?q?R=20=C3=84=20Cipient?= <rcipient@example.com>\$" hdrs8
not ok 21 - command line To: header (rfc2047) # TODO known breakage
expecting success of 4014.22 'configuration To: header (ascii)':
git config format.to "R E Cipient <rcipient@example.com>" &&
git format-patch --stdout main..side >patch9 &&
sed -e "/^\$/q" patch9 >hdrs9 &&
grep "^To: R E Cipient <rcipient@example.com>\$" hdrs9
To: R E Cipient <rcipient@example.com>
ok 22 - configuration To: header (ascii)
checking known breakage of 4014.23 'configuration To: header (rfc822)':
git config format.to "R. E. Cipient <rcipient@example.com>" &&
git format-patch --stdout main..side >patch9 &&
sed -e "/^\$/q" patch9 >hdrs9 &&
grep "^To: \"R. E. Cipient\" <rcipient@example.com>\$" hdrs9
not ok 23 - configuration To: header (rfc822) # TODO known breakage
checking known breakage of 4014.24 'configuration To: header (rfc2047)':
git config format.to "R Ä Cipient <rcipient@example.com>" &&
git format-patch --stdout main..side >patch9 &&
sed -e "/^\$/q" patch9 >hdrs9 &&
grep "^To: =?UTF-8?q?R=20=C3=84=20Cipient?= <rcipient@example.com>\$" hdrs9
not ok 24 - configuration To: header (rfc2047) # TODO known breakage
expecting success of 4014.25 'format.from=false':
git -c format.from=false format-patch --stdout main..side >patch &&
sed -e "/^\$/q" patch >hdrs &&
check_patch patch &&
! grep "^From: C O Mitter <committer@example.com>\$" hdrs
From: A U Thor <author@example.com>
From: A U Thor <author@example.com>
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:14:13 -0700
Date: Thu, 7 Apr 2005 15:15:13 -0700
Date: Thu, 7 Apr 2005 15:16:13 -0700
Subject: [PATCH 1/3] Side changes #1
Subject: [PATCH 2/3] Side changes #2
Subject: [PATCH 3/3] Side changes #3 with \n backslash-n in it.
ok 25 - format.from=false
expecting success of 4014.26 'format.from=true':
git -c format.from=true format-patch --stdout main..side >patch &&
sed -e "/^\$/q" patch >hdrs &&
check_patch hdrs &&
grep "^From: C O Mitter <committer@example.com>\$" hdrs
From: C O Mitter <committer@example.com>
Date: Thu, 7 Apr 2005 15:14:13 -0700
Subject: [PATCH 1/3] Side changes #1
From: C O Mitter <committer@example.com>
ok 26 - format.from=true
expecting success of 4014.27 'format.from with address':
git -c format.from="F R Om <from@example.com>" format-patch --stdout main..side >patch &&
sed -e "/^\$/q" patch >hdrs &&
check_patch hdrs &&
grep "^From: F R Om <from@example.com>\$" hdrs
From: F R Om <from@example.com>
Date: Thu, 7 Apr 2005 15:14:13 -0700
Subject: [PATCH 1/3] Side changes #1
From: F R Om <from@example.com>
ok 27 - format.from with address
expecting success of 4014.28 '--no-from overrides format.from':
git -c format.from="F R Om <from@example.com>" format-patch --no-from --stdout main..side >patch &&
sed -e "/^\$/q" patch >hdrs &&
check_patch hdrs &&
! grep "^From: F R Om <from@example.com>\$" hdrs
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:14:13 -0700
Subject: [PATCH 1/3] Side changes #1
ok 28 - --no-from overrides format.from
expecting success of 4014.29 '--from overrides format.from':
git -c format.from="F R Om <from@example.com>" format-patch --from --stdout main..side >patch &&
sed -e "/^\$/q" patch >hdrs &&
check_patch hdrs &&
! grep "^From: F R Om <from@example.com>\$" hdrs
From: C O Mitter <committer@example.com>
Date: Thu, 7 Apr 2005 15:14:13 -0700
Subject: [PATCH 1/3] Side changes #1
ok 29 - --from overrides format.from
expecting success of 4014.30 '--no-to overrides config.to':
git config --replace-all format.to \
"R E Cipient <rcipient@example.com>" &&
git format-patch --no-to --stdout main..side >patch10 &&
sed -e "/^\$/q" patch10 >hdrs10 &&
check_patch hdrs10 &&
! grep "^To: R E Cipient <rcipient@example.com>\$" hdrs10
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:14:13 -0700
Subject: [PATCH 1/3] Side changes #1
ok 30 - --no-to overrides config.to
expecting success of 4014.31 '--no-to and --to replaces config.to':
git config --replace-all format.to \
"Someone <someone@out.there>" &&
git format-patch --no-to --to="Someone Else <else@out.there>" \
--stdout main..side >patch11 &&
sed -e "/^\$/q" patch11 >hdrs11 &&
check_patch hdrs11 &&
! grep "^To: Someone <someone@out.there>\$" hdrs11 &&
grep "^To: Someone Else <else@out.there>\$" hdrs11
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:14:13 -0700
Subject: [PATCH 1/3] Side changes #1
To: Someone Else <else@out.there>
ok 31 - --no-to and --to replaces config.to
expecting success of 4014.32 '--no-cc overrides config.cc':
git config --replace-all format.cc \
"C E Cipient <rcipient@example.com>" &&
git format-patch --no-cc --stdout main..side >patch12 &&
sed -e "/^\$/q" patch12 >hdrs12 &&
check_patch hdrs12 &&
! grep "^Cc: C E Cipient <rcipient@example.com>\$" hdrs12
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:14:13 -0700
Subject: [PATCH 1/3] Side changes #1
ok 32 - --no-cc overrides config.cc
expecting success of 4014.33 '--no-add-header overrides config.headers':
git config --replace-all format.headers \
"Header1: B E Cipient <rcipient@example.com>" &&
git format-patch --no-add-header --stdout main..side >patch13 &&
sed -e "/^\$/q" patch13 >hdrs13 &&
check_patch hdrs13 &&
! grep "^Header1: B E Cipient <rcipient@example.com>\$" hdrs13
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:14:13 -0700
Subject: [PATCH 1/3] Side changes #1
ok 33 - --no-add-header overrides config.headers
expecting success of 4014.34 'multiple files':
rm -rf patches/ &&
git checkout side &&
git format-patch -o patches/ main &&
ls patches/0001-Side-changes-1.patch patches/0002-Side-changes-2.patch patches/0003-Side-changes-3-with-n-backslash-n-in-it.patch
Switched to branch 'side'
patches/0001-Side-changes-1.patch
patches/0002-Side-changes-2.patch
patches/0003-Side-changes-3-with-n-backslash-n-in-it.patch
patches/0001-Side-changes-1.patch
patches/0002-Side-changes-2.patch
patches/0003-Side-changes-3-with-n-backslash-n-in-it.patch
ok 34 - multiple files
expecting success of 4014.35 'filename length limit':
test_when_finished "rm -f 000*" &&
rm -rf 000[1-9]-*.patch &&
for len in 15 25 35
do
git format-patch --filename-max-length=$len -3 side &&
max=$(
for patch in 000[1-9]-*.patch
do
echo "$patch" | wc -c || exit 1
done |
sort -nr |
head -n 1
) &&
test $max -le $len || return 1
done
0001-Sid.patch
0002-Sid.patch
0003-Sid.patch
0001-Side-changes-.patch
0002-Side-changes-.patch
0003-Side-changes-.patch
0001-Side-changes-1.patch
0002-Side-changes-2.patch
0003-Side-changes-3-with-n-b.patch
ok 35 - filename length limit
expecting success of 4014.36 'filename length limit from config':
test_when_finished "rm -f 000*" &&
rm -rf 000[1-9]-*.patch &&
for len in 15 25 35
do
git -c format.filenameMaxLength=$len format-patch -3 side &&
max=$(
for patch in 000[1-9]-*.patch
do
echo "$patch" | wc -c || exit 1
done |
sort -nr |
head -n 1
) &&
test $max -le $len || return 1
done
0001-Sid.patch
0002-Sid.patch
0003-Sid.patch
0001-Side-changes-.patch
0002-Side-changes-.patch
0003-Side-changes-.patch
0001-Side-changes-1.patch
0002-Side-changes-2.patch
0003-Side-changes-3-with-n-b.patch
ok 36 - filename length limit from config
expecting success of 4014.37 'filename limit applies only to basename':
test_when_finished "rm -rf patches/" &&
rm -rf patches/ &&
for len in 15 25 35
do
git format-patch -o patches --filename-max-length=$len -3 side &&
max=$(
for patch in patches/000[1-9]-*.patch
do
echo "${patch#patches/}" | wc -c || exit 1
done |
sort -nr |
head -n 1
) &&
test $max -le $len || return 1
done
patches/0001-Sid.patch
patches/0002-Sid.patch
patches/0003-Sid.patch
patches/0001-Side-changes-.patch
patches/0002-Side-changes-.patch
patches/0003-Side-changes-.patch
patches/0001-Side-changes-1.patch
patches/0002-Side-changes-2.patch
patches/0003-Side-changes-3-with-n-b.patch
ok 37 - filename limit applies only to basename
expecting success of 4014.38 'reroll count':
rm -fr patches &&
git format-patch -o patches --cover-letter --reroll-count 4 main..side >list &&
! grep -v "^patches/v4-000[0-3]-" list &&
sed -n -e "/^Subject: /p" $(cat list) >subjects &&
! grep -v "^Subject: \[PATCH v4 [0-3]/3\] " subjects
ok 38 - reroll count
expecting success of 4014.39 'reroll count (-v)':
rm -fr patches &&
git format-patch -o patches --cover-letter -v4 main..side >list &&
! grep -v "^patches/v4-000[0-3]-" list &&
sed -n -e "/^Subject: /p" $(cat list) >subjects &&
! grep -v "^Subject: \[PATCH v4 [0-3]/3\] " subjects
ok 39 - reroll count (-v)
expecting success of 4014.40 'reroll count (-v) with a fractional number':
rm -fr patches &&
git format-patch -o patches --cover-letter -v4.4 main..side >list &&
! grep -v "^patches/v4.4-000[0-3]-" list &&
sed -n -e "/^Subject: /p" $(cat list) >subjects &&
! grep -v "^Subject: \[PATCH v4.4 [0-3]/3\] " subjects
ok 40 - reroll count (-v) with a fractional number
expecting success of 4014.41 'reroll (-v) count with a non number':
rm -fr patches &&
git format-patch -o patches --cover-letter -v4rev2 main..side >list &&
! grep -v "^patches/v4rev2-000[0-3]-" list &&
sed -n -e "/^Subject: /p" $(cat list) >subjects &&
! grep -v "^Subject: \[PATCH v4rev2 [0-3]/3\] " subjects
ok 41 - reroll (-v) count with a non number
expecting success of 4014.42 'reroll (-v) count with a non-pathname character':
rm -fr patches &&
git format-patch -o patches --cover-letter -v4---..././../--1/.2// main..side >list &&
! grep -v "patches/v4-\.-\.-\.-1-\.2-000[0-3]-" list &&
sed -n -e "/^Subject: /p" $(cat list) >subjects &&
! grep -v "^Subject: \[PATCH v4---\.\.\./\./\.\./--1/\.2// [0-3]/3\] " subjects
ok 42 - reroll (-v) count with a non-pathname character
expecting success of 4014.43 'no threading':
git checkout side &&
check_threading expect.no-threading main
Already on 'side'
ok 43 - no threading
expecting success of 4014.44 'thread':
check_threading expect.thread --thread main
ok 44 - thread
expecting success of 4014.45 '--thread overrides format.thread=deep':
test_config format.thread deep &&
check_threading expect.thread --thread main
ok 45 - --thread overrides format.thread=deep
expecting success of 4014.46 'thread in-reply-to':
check_threading expect.in-reply-to --in-reply-to="<test.message>" \
--thread main
ok 46 - thread in-reply-to
expecting success of 4014.47 'thread cover-letter':
check_threading expect.cover-letter --cover-letter --thread main
ok 47 - thread cover-letter
expecting success of 4014.48 'thread cover-letter in-reply-to':
check_threading expect.cl-irt --cover-letter \
--in-reply-to="<test.message>" --thread main
ok 48 - thread cover-letter in-reply-to
expecting success of 4014.49 'thread explicit shallow':
check_threading expect.cl-irt --cover-letter \
--in-reply-to="<test.message>" --thread=shallow main
ok 49 - thread explicit shallow
expecting success of 4014.50 'thread deep':
check_threading expect.deep --thread=deep main
ok 50 - thread deep
expecting success of 4014.51 'thread deep in-reply-to':
check_threading expect.deep-irt --thread=deep \
--in-reply-to="<test.message>" main
ok 51 - thread deep in-reply-to
expecting success of 4014.52 'thread deep cover-letter':
check_threading expect.deep-cl --cover-letter --thread=deep main
ok 52 - thread deep cover-letter
expecting success of 4014.53 'thread deep cover-letter in-reply-to':
check_threading expect.deep-cl-irt --cover-letter \
--in-reply-to="<test.message>" --thread=deep main
ok 53 - thread deep cover-letter in-reply-to
expecting success of 4014.54 'thread via config':
test_config format.thread true &&
check_threading expect.thread main
ok 54 - thread via config
expecting success of 4014.55 'thread deep via config':
test_config format.thread deep &&
check_threading expect.deep main
ok 55 - thread deep via config
expecting success of 4014.56 'thread config + override':
test_config format.thread deep &&
check_threading expect.thread --thread main
ok 56 - thread config + override
expecting success of 4014.57 'thread config + --no-thread':
test_config format.thread deep &&
check_threading expect.no-threading --no-thread main
ok 57 - thread config + --no-thread
expecting success of 4014.58 'excessive subject':
rm -rf patches/ &&
git checkout side &&
before=$(git hash-object file) &&
before=$(git rev-parse --short $before) &&
test_write_lines 5 6 1 2 3 A 4 B C 7 8 9 10 D E F >>file &&
after=$(git hash-object file) &&
after=$(git rev-parse --short $after) &&
git update-index file &&
git commit -m "This is an excessively long subject line for a message due to the habit some projects have of not having a short, one-line subject at the start of the commit message, but rather sticking a whole paragraph right at the start as the only thing in the commit message. It had better not become the filename for the patch." &&
git format-patch -o patches/ main..side &&
ls patches/0004-This-is-an-excessively-long-subject-line-for-a-messa.patch
Already on 'side'
[side 2a7e73c] This is an excessively long subject line for a message due to the habit some projects have of not having a short, one-line subject at the start of the commit message, but rather sticking a whole paragraph right at the start as the only thing in the commit message. It had better not become the filename for the patch.
Author: A U Thor <author@example.com>
1 file changed, 16 insertions(+)
patches/0001-Side-changes-1.patch
patches/0002-Side-changes-2.patch
patches/0003-Side-changes-3-with-n-backslash-n-in-it.patch
patches/0004-This-is-an-excessively-long-subject-line-for-a-messa.patch
patches/0004-This-is-an-excessively-long-subject-line-for-a-messa.patch
ok 58 - excessive subject
expecting success of 4014.59 'failure to write cover-letter aborts gracefully':
test_when_finished "rmdir 0000-cover-letter.patch" &&
mkdir 0000-cover-letter.patch &&
test_must_fail git format-patch --no-renames --cover-letter -1
error: cannot open patch file ./0000-cover-letter.patch: Is a directory
fatal: failed to create cover-letter file
0000-cover-letter.patch
ok 59 - failure to write cover-letter aborts gracefully
expecting success of 4014.60 'cover-letter inherits diff options':
git mv file foo &&
git commit -m foo &&
git format-patch --no-renames --cover-letter -1 &&
check_patch 0000-cover-letter.patch &&
! grep "file => foo .* 0 *\$" 0000-cover-letter.patch &&
git format-patch --cover-letter -1 -M &&
grep "file => foo .* 0 *\$" 0000-cover-letter.patch
[side b90b9c2] foo
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
rename file => foo (100%)
0000-cover-letter.patch
0001-foo.patch
From: C O Mitter <committer@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH 0/1] *** SUBJECT HERE ***
0000-cover-letter.patch
0001-foo.patch
file => foo | 0
ok 60 - cover-letter inherits diff options
expecting success of 4014.61 'shortlog of cover-letter wraps overly-long onelines':
git format-patch --cover-letter -2 &&
sed -e "1,/A U Thor/d" -e "/^\$/q" 0000-cover-letter.patch >output &&
test_cmp expect output
0000-cover-letter.patch
0001-This-is-an-excessively-long-subject-line-for-a-messa.patch
0002-foo.patch
ok 61 - shortlog of cover-letter wraps overly-long onelines
expecting success of 4014.62 'format-patch respects -U':
git format-patch -U4 -2 &&
sed -e "1,/^diff/d" -e "/^+5/q" \
<0001-This-is-an-excessively-long-subject-line-for-a-messa.patch \
>output &&
test_cmp expect output
0001-This-is-an-excessively-long-subject-line-for-a-messa.patch
0002-foo.patch
ok 62 - format-patch respects -U
expecting success of 4014.63 'format-patch -p suppresses stat':
git format-patch -p -2 &&
sed -e "1,/^\$/d" -e "/^+5/q" 0001-This-is-an-excessively-long-subject-line-for-a-messa.patch >output &&
test_cmp expect output
0001-This-is-an-excessively-long-subject-line-for-a-messa.patch
0002-foo.patch
ok 63 - format-patch -p suppresses stat
expecting success of 4014.64 'format-patch from a subdirectory (1)':
filename=$(
rm -rf sub &&
mkdir -p sub/dir &&
cd sub/dir &&
git format-patch -1
) &&
case "$filename" in
0*)
;; # ok
*)
echo "Oops? $filename"
false
;;
esac &&
test -f "$filename"
ok 64 - format-patch from a subdirectory (1)
expecting success of 4014.65 'format-patch from a subdirectory (2)':
filename=$(
rm -rf sub &&
mkdir -p sub/dir &&
cd sub/dir &&
git format-patch -1 -o ..
) &&
case "$filename" in
../0*)
;; # ok
*)
echo "Oops? $filename"
false
;;
esac &&
basename=$(expr "$filename" : ".*/\(.*\)") &&
test -f "sub/$basename"
ok 65 - format-patch from a subdirectory (2)
expecting success of 4014.66 'format-patch from a subdirectory (3)':
rm -f 0* &&
filename=$(
rm -rf sub &&
mkdir -p sub/dir &&
cd sub/dir &&
git format-patch -1 -o "$TRASH_DIRECTORY"
) &&
basename=$(expr "$filename" : ".*/\(.*\)") &&
test -f "$basename"
ok 66 - format-patch from a subdirectory (3)
expecting success of 4014.67 'format-patch --in-reply-to':
git format-patch -1 --stdout --in-reply-to "baz@foo.bar" >patch8 &&
grep "^In-Reply-To: <baz@foo.bar>" patch8 &&
grep "^References: <baz@foo.bar>" patch8
In-Reply-To: <baz@foo.bar>
References: <baz@foo.bar>
ok 67 - format-patch --in-reply-to
expecting success of 4014.68 'format-patch --signoff':
git format-patch -1 --signoff --stdout >out &&
grep "^Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>" out
Signed-off-by: C O Mitter <committer@example.com>
ok 68 - format-patch --signoff
expecting success of 4014.69 'format-patch --notes --signoff':
git notes --ref test add -m "test message" HEAD &&
git format-patch -1 --signoff --stdout --notes=test >out &&
# Three dashes must come after S-o-b
! sed "/^Signed-off-by: /q" out | grep "test message" &&
sed "1,/^Signed-off-by: /d" out | grep "test message" &&
# Notes message must come after three dashes
! sed "/^---$/q" out | grep "test message" &&
sed "1,/^---$/d" out | grep "test message"
test message
test message
ok 69 - format-patch --notes --signoff
expecting success of 4014.70 'format-patch notes output control':
git notes add -m "notes config message" HEAD &&
test_when_finished git notes remove HEAD &&
git format-patch -1 --stdout >out &&
! grep "notes config message" out &&
git format-patch -1 --stdout --notes >out &&
grep "notes config message" out &&
git format-patch -1 --stdout --no-notes >out &&
! grep "notes config message" out &&
git format-patch -1 --stdout --notes --no-notes >out &&
! grep "notes config message" out &&
git format-patch -1 --stdout --no-notes --notes >out &&
grep "notes config message" out &&
test_config format.notes true &&
git format-patch -1 --stdout >out &&
grep "notes config message" out &&
git format-patch -1 --stdout --notes >out &&
grep "notes config message" out &&
git format-patch -1 --stdout --no-notes >out &&
! grep "notes config message" out &&
git format-patch -1 --stdout --notes --no-notes >out &&
! grep "notes config message" out &&
git format-patch -1 --stdout --no-notes --notes >out &&
grep "notes config message" out
notes config message
notes config message
notes config message
notes config message
notes config message
Removing note for object HEAD
ok 70 - format-patch notes output control
expecting success of 4014.71 'format-patch with multiple notes refs':
git notes --ref note1 add -m "this is note 1" HEAD &&
test_when_finished git notes --ref note1 remove HEAD &&
git notes --ref note2 add -m "this is note 2" HEAD &&
test_when_finished git notes --ref note2 remove HEAD &&
git format-patch -1 --stdout >out &&
! grep "this is note 1" out &&
! grep "this is note 2" out &&
git format-patch -1 --stdout --notes=note1 >out &&
grep "this is note 1" out &&
! grep "this is note 2" out &&
git format-patch -1 --stdout --notes=note2 >out &&
! grep "this is note 1" out &&
grep "this is note 2" out &&
git format-patch -1 --stdout --notes=note1 --notes=note2 >out &&
grep "this is note 1" out &&
grep "this is note 2" out &&
test_config format.notes note1 &&
git format-patch -1 --stdout >out &&
grep "this is note 1" out &&
! grep "this is note 2" out &&
git format-patch -1 --stdout --no-notes >out &&
! grep "this is note 1" out &&
! grep "this is note 2" out &&
git format-patch -1 --stdout --notes=note2 >out &&
grep "this is note 1" out &&
grep "this is note 2" out &&
git format-patch -1 --stdout --no-notes --notes=note2 >out &&
! grep "this is note 1" out &&
grep "this is note 2" out &&
git config --add format.notes note2 &&
git format-patch -1 --stdout >out &&
grep "this is note 1" out &&
grep "this is note 2" out &&
git format-patch -1 --stdout --no-notes >out &&
! grep "this is note 1" out &&
! grep "this is note 2" out
this is note 1
this is note 2
this is note 1
this is note 2
this is note 1
this is note 1
this is note 2
this is note 2
this is note 1
this is note 2
Removing note for object HEAD
Removing note for object HEAD
ok 71 - format-patch with multiple notes refs
expecting success of 4014.72 'format-patch with multiple notes refs in config':
test_when_finished "test_unconfig format.notes" &&
git notes --ref note1 add -m "this is note 1" HEAD &&
test_when_finished git notes --ref note1 remove HEAD &&
git notes --ref note2 add -m "this is note 2" HEAD &&
test_when_finished git notes --ref note2 remove HEAD &&
git config format.notes note1 &&
git format-patch -1 --stdout >out &&
grep "this is note 1" out &&
! grep "this is note 2" out &&
git config format.notes note2 &&
git format-patch -1 --stdout >out &&
! grep "this is note 1" out &&
grep "this is note 2" out &&
git config --add format.notes note1 &&
git format-patch -1 --stdout >out &&
grep "this is note 1" out &&
grep "this is note 2" out &&
git config --replace-all format.notes note1 &&
git config --add format.notes false &&
git format-patch -1 --stdout >out &&
! grep "this is note 1" out &&
! grep "this is note 2" out &&
git config --add format.notes note2 &&
git format-patch -1 --stdout >out &&
! grep "this is note 1" out &&
grep "this is note 2" out
this is note 1
this is note 2
this is note 1
this is note 2
this is note 2
Removing note for object HEAD
Removing note for object HEAD
ok 72 - format-patch with multiple notes refs in config
expecting success of 4014.73 'options no longer allowed for format-patch':
test_must_fail git format-patch --name-only 2>output &&
test_cmp expect.name-only output &&
test_must_fail git format-patch --name-status 2>output &&
test_cmp expect.name-status output &&
test_must_fail git format-patch --check 2>output &&
test_cmp expect.check output
ok 73 - options no longer allowed for format-patch
expecting success of 4014.74 'format-patch --numstat should produce a patch':
git format-patch --numstat --stdout main..side >output &&
grep "^diff --git a/" output >diff &&
test_line_count = 5 diff
ok 74 - format-patch --numstat should produce a patch
expecting success of 4014.75 'format-patch -- <path>':
rm -f *.patch &&
git checkout -b pathspec main &&
echo file_a 1 >file_a &&
echo file_b 1 >file_b &&
git add file_a file_b &&
git commit -m pathspec_initial &&
echo file_a 2 >>file_a &&
git add file_a &&
git commit -m pathspec_a &&
echo file_b 2 >>file_b &&
git add file_b &&
git commit -m pathspec_b &&
echo file_a 3 >>file_a &&
echo file_b 3 >>file_b &&
git add file_a file_b &&
git commit -m pathspec_ab &&
cat >expect <<-\EOF &&
0001-pathspec_initial.patch
0002-pathspec_a.patch
0003-pathspec_ab.patch
EOF
git format-patch main..pathspec -- file_a >output &&
test_cmp expect output &&
! grep file_b *.patch
Switched to a new branch 'pathspec'
[pathspec d52bb05] pathspec_initial
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 file_a
create mode 100644 file_b
[pathspec b3666cb] pathspec_a
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[pathspec a150355] pathspec_b
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[pathspec 32e34ab] pathspec_ab
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
ok 75 - format-patch -- <path>
expecting success of 4014.76 'format-patch --ignore-if-in-upstream HEAD':
git checkout side &&
git format-patch --ignore-if-in-upstream HEAD
Switched to branch 'side'
ok 76 - format-patch --ignore-if-in-upstream HEAD
expecting success of 4014.77 'get git version':
git_version=$(git --version) &&
git_version=${git_version##* }
ok 77 - get git version
expecting success of 4014.78 'format-patch default signature':
git format-patch --stdout -1 >patch &&
tail -n 3 patch >output &&
signature >expect &&
test_cmp expect output
ok 78 - format-patch default signature
expecting success of 4014.79 'format-patch --signature':
git format-patch --stdout --signature="my sig" -1 >patch &&
tail -n 3 patch >output &&
signature "my sig" >expect &&
test_cmp expect output
ok 79 - format-patch --signature
expecting success of 4014.80 'format-patch with format.signature config':
git config format.signature "config sig" &&
git format-patch --stdout -1 >output &&
grep "config sig" output
config sig
ok 80 - format-patch with format.signature config
expecting success of 4014.81 'format-patch --signature overrides format.signature':
git config format.signature "config sig" &&
git format-patch --stdout --signature="overrides" -1 >output &&
! grep "config sig" output &&
grep "overrides" output
overrides
ok 81 - format-patch --signature overrides format.signature
expecting success of 4014.82 'format-patch --no-signature ignores format.signature':
git config format.signature "config sig" &&
git format-patch --stdout --signature="my sig" --no-signature \
-1 >output &&
check_patch output &&
! grep "config sig" output &&
! grep "my sig" output &&
! grep "^-- \$" output
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH] foo
ok 82 - format-patch --no-signature ignores format.signature
expecting success of 4014.83 'format-patch --signature --cover-letter':
git config --unset-all format.signature &&
git format-patch --stdout --signature="my sig" --cover-letter \
-1 >output &&
grep "my sig" output >sig &&
test_line_count = 2 sig
ok 83 - format-patch --signature --cover-letter
expecting success of 4014.84 'format.signature="" suppresses signatures':
git config format.signature "" &&
git format-patch --stdout -1 >output &&
check_patch output &&
! grep "^-- \$" output
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH] foo
ok 84 - format.signature="" suppresses signatures
expecting success of 4014.85 'format-patch --no-signature suppresses signatures':
git config --unset-all format.signature &&
git format-patch --stdout --no-signature -1 >output &&
check_patch output &&
! grep "^-- \$" output
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH] foo
ok 85 - format-patch --no-signature suppresses signatures
expecting success of 4014.86 'format-patch --signature="" suppresses signatures':
git format-patch --stdout --signature="" -1 >output &&
check_patch output &&
! grep "^-- \$" output
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH] foo
ok 86 - format-patch --signature="" suppresses signatures
expecting success of 4014.87 'prepare mail-signature input':
cat >mail-signature <<-\EOF
Test User <test.email@kernel.org>
http://git.kernel.org/cgit/git/git.git
git.kernel.org/?p=git/git.git;a=summary
EOF
ok 87 - prepare mail-signature input
expecting success of 4014.88 '--signature-file=file works':
git format-patch --stdout --signature-file=mail-signature -1 >output &&
check_patch output &&
sed -e "1,/^-- \$/d" output >actual &&
{
cat mail-signature && echo
} >expect &&
test_cmp expect actual
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH] foo
ok 88 - --signature-file=file works
expecting success of 4014.89 'format.signaturefile works':
test_config format.signaturefile mail-signature &&
git format-patch --stdout -1 >output &&
check_patch output &&
sed -e "1,/^-- \$/d" output >actual &&
{
cat mail-signature && echo
} >expect &&
test_cmp expect actual
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH] foo
ok 89 - format.signaturefile works
expecting success of 4014.90 '--no-signature suppresses format.signaturefile ':
test_config format.signaturefile mail-signature &&
git format-patch --stdout --no-signature -1 >output &&
check_patch output &&
! grep "^-- \$" output
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH] foo
ok 90 - --no-signature suppresses format.signaturefile
expecting success of 4014.91 '--signature-file overrides format.signaturefile':
cat >other-mail-signature <<-\EOF &&
Use this other signature instead of mail-signature.
EOF
test_config format.signaturefile mail-signature &&
git format-patch --stdout \
--signature-file=other-mail-signature -1 >output &&
check_patch output &&
sed -e "1,/^-- \$/d" output >actual &&
{
cat other-mail-signature && echo
} >expect &&
test_cmp expect actual
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH] foo
ok 91 - --signature-file overrides format.signaturefile
expecting success of 4014.92 '--signature overrides format.signaturefile':
test_config format.signaturefile mail-signature &&
git format-patch --stdout --signature="my sig" -1 >output &&
check_patch output &&
grep "my sig" output
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH] foo
my sig
ok 92 - --signature overrides format.signaturefile
checking prerequisite: TTY
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-TTY" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-TTY" &&
test_have_prereq PERL &&
# Reading from the pty master seems to get stuck _sometimes_
# on Mac OS X 10.5.0, using Perl 5.10.0 or 5.8.9.
#
# Reproduction recipe: run
#
# i=0
# while ./test-terminal.perl echo hi $i
# do
# : $((i = $i + 1))
# done
#
# After 2000 iterations or so it hangs.
# https://rt.cpan.org/Ticket/Display.html?id=65692
#
test "$(uname -s)" != Darwin &&
perl "$TEST_DIRECTORY"/test-terminal.perl \
sh -c "test -t 1 && test -t 2"
)
prerequisite TTY ok
expecting success of 4014.93 'format-patch --stdout paginates':
rm -f pager_used &&
test_terminal env GIT_PAGER="wc >pager_used" git format-patch --stdout --all &&
test_path_is_file pager_used
ok 93 - format-patch --stdout paginates
expecting success of 4014.94 'format-patch --stdout pagination can be disabled':
rm -f pager_used &&
test_terminal env GIT_PAGER="wc >pager_used" git --no-pager format-patch --stdout --all &&
test_terminal env GIT_PAGER="wc >pager_used" git -c "pager.format-patch=false" format-patch --stdout --all &&
test_path_is_missing pager_used &&
test_path_is_missing .git/pager_used
From e27066e74e2522a272f220d17767ef6cab999734 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:13:13 -0700
Subject: [PATCH 01/30] Initial
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
elif | 10 [32m++++++++++[m
file | 10 [32m++++++++++[m
2 files changed, 20 insertions(+)
create mode 100644 elif
create mode 100644 file
[1mdiff --git a/elif b/elif[m
[1mnew file mode 100644[m
[1mindex 0000000..f00c965[m
[1m--- /dev/null[m
[1m+++ b/elif[m
[36m@@ -0,0 +1,10 @@[m
[32m+[m[32m1[m
[32m+[m[32m2[m
[32m+[m[32m3[m
[32m+[m[32m4[m
[32m+[m[32m5[m
[32m+[m[32m6[m
[32m+[m[32m7[m
[32m+[m[32m8[m
[32m+[m[32m9[m
[32m+[m[32m10[m
[1mdiff --git a/file b/file[m
[1mnew file mode 100644[m
[1mindex 0000000..f00c965[m
[1m--- /dev/null[m
[1m+++ b/file[m
[36m@@ -0,0 +1,10 @@[m
[32m+[m[32m1[m
[32m+[m[32m2[m
[32m+[m[32m3[m
[32m+[m[32m4[m
[32m+[m[32m5[m
[32m+[m[32m6[m
[32m+[m[32m7[m
[32m+[m[32m8[m
[32m+[m[32m9[m
[32m+[m[32m10[m
--
2.42.0
From 1135adfeed86678c55e1aad7c568046ee8215660 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:14:13 -0700
Subject: [PATCH 02/30] Side changes #1
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
elif | 0
1 file changed, 0 insertions(+), 0 deletions(-)
mode change 100644 => 100755 elif
[1mdiff --git a/elif b/elif[m
[1mold mode 100644[m
[1mnew mode 100755[m
--
2.42.0
From fd00575a8382ce27c62b83730a40bcff1dc2f25f Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:15:13 -0700
Subject: [PATCH 03/30] Side changes #2
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
file | 8 [32m++++++[m[31m--[m
1 file changed, 6 insertions(+), 2 deletions(-)
[1mdiff --git a/file b/file[m
[1mindex f00c965..e5895ff 100644[m
[1m--- a/file[m
[1m+++ b/file[m
[36m@@ -1,10 +1,14 @@[m
1[m
2[m
[31m-3[m
[31m-4[m
5[m
6[m
[32m+[m[32mA[m
[32m+[m[32mB[m
[32m+[m[32mC[m
7[m
8[m
9[m
10[m
[32m+[m[32mD[m
[32m+[m[32mE[m
[32m+[m[32mF[m
--
2.42.0
From 18ed22aae56367787c36a882bd61281e07994f11 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:16:13 -0700
Subject: [PATCH 04/30] Side changes #3 with \n backslash-n in it.
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
file | 6 [32m++++[m[31m--[m
1 file changed, 4 insertions(+), 2 deletions(-)
[1mdiff --git a/file b/file[m
[1mindex e5895ff..40f36c6 100644[m
[1m--- a/file[m
[1m+++ b/file[m
[36m@@ -1,8 +1,10 @@[m
[31m-1[m
[31m-2[m
5[m
6[m
[32m+[m[32m1[m
[32m+[m[32m2[m
[32m+[m[32m3[m
A[m
[32m+[m[32m4[m
B[m
C[m
7[m
--
2.42.0
From 333d5cbbd01bc8841a452d443caa9913971d4ffb Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:17:13 -0700
Subject: [PATCH 05/30] Main accepts moral equivalent of #2
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
file | 8 [32m++++++[m[31m--[m
1 file changed, 6 insertions(+), 2 deletions(-)
[1mdiff --git a/file b/file[m
[1mindex f00c965..e5895ff 100644[m
[1m--- a/file[m
[1m+++ b/file[m
[36m@@ -1,10 +1,14 @@[m
1[m
2[m
[31m-3[m
[31m-4[m
5[m
6[m
[32m+[m[32mA[m
[32m+[m[32mB[m
[32m+[m[32mC[m
7[m
8[m
9[m
10[m
[32m+[m[32mD[m
[32m+[m[32mE[m
[32m+[m[32mF[m
--
2.42.0
From 866b6195304ada3156f0f8c97696b6f862ce5312 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:18:13 -0700
Subject: [PATCH 06/30] patchid 1
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
file | 13 [31m-------------[m
file2 | 16 [32m++++++++++++++++[m
file3 | 16 [32m++++++++++++++++[m
3 files changed, 32 insertions(+), 13 deletions(-)
create mode 100644 file2
create mode 100644 file3
[1mdiff --git a/file b/file[m
[1mindex 40f36c6..236483f 100644[m
[1m--- a/file[m
[1m+++ b/file[m
[36m@@ -1,16 +1,3 @@[m
[31m-5[m
[31m-6[m
[31m-1[m
[31m-2[m
[31m-3[m
[31m-A[m
[31m-4[m
[31m-B[m
[31m-C[m
[31m-7[m
8[m
9[m
10[m
[31m-D[m
[31m-E[m
[31m-F[m
[1mdiff --git a/file2 b/file2[m
[1mnew file mode 100644[m
[1mindex 0000000..40f36c6[m
[1m--- /dev/null[m
[1m+++ b/file2[m
[36m@@ -0,0 +1,16 @@[m
[32m+[m[32m5[m
[32m+[m[32m6[m
[32m+[m[32m1[m
[32m+[m[32m2[m
[32m+[m[32m3[m
[32m+[m[32mA[m
[32m+[m[32m4[m
[32m+[m[32mB[m
[32m+[m[32mC[m
[32m+[m[32m7[m
[32m+[m[32m8[m
[32m+[m[32m9[m
[32m+[m[32m10[m
[32m+[m[32mD[m
[32m+[m[32mE[m
[32m+[m[32mF[m
[1mdiff --git a/file3 b/file3[m
[1mnew file mode 100644[m
[1mindex 0000000..281fa8c[m
[1m--- /dev/null[m
[1m+++ b/file3[m
[36m@@ -0,0 +1,16 @@[m
[32m+[m[32m1[m
[32m+[m[32m2[m
[32m+[m[32m3[m
[32m+[m[32mA[m
[32m+[m[32m4[m
[32m+[m[32mB[m
[32m+[m[32mC[m
[32m+[m[32m7[m
[32m+[m[32m8[m
[32m+[m[32m9[m
[32m+[m[32m10[m
[32m+[m[32mD[m
[32m+[m[32mE[m
[32m+[m[32mF[m
[32m+[m[32m5[m
[32m+[m[32m6[m
--
2.42.0
From b0e76a38f7c5ec2ee722c28a446dbba613e87da4 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:19:13 -0700
Subject: [PATCH 07/30] patchid 2
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
file2 | 11 [32m+[m[31m----------[m
file3 | 11 [31m-----------[m
2 files changed, 1 insertion(+), 21 deletions(-)
[1mdiff --git a/file2 b/file2[m
[1mindex 40f36c6..d082389 100644[m
[1m--- a/file2[m
[1m+++ b/file2[m
[36m@@ -1,16 +1,7 @@[m
[31m-5[m
[31m-6[m
[31m-1[m
[31m-2[m
[31m-3[m
[31m-A[m
4[m
[32m+[m[32mA[m
B[m
[31m-C[m
7[m
8[m
9[m
10[m
[31m-D[m
[31m-E[m
[31m-F[m
[1mdiff --git a/file3 b/file3[m
[1mindex 281fa8c..eb411a6 100644[m
[1m--- a/file3[m
[1m+++ b/file3[m
[36m@@ -1,16 +1,5 @@[m
[31m-1[m
[31m-2[m
[31m-3[m
[31m-A[m
[31m-4[m
[31m-B[m
[31m-C[m
[31m-7[m
8[m
9[m
10[m
[31m-D[m
[31m-E[m
[31m-F[m
5[m
6[m
--
2.42.0
From e905b623a7eaecf172d0a5e51615566d7c1343c2 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:20:13 -0700
Subject: [PATCH 08/30] patchid 3
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
file | 4 [32m++[m[31m--[m
1 file changed, 2 insertions(+), 2 deletions(-)
[1mdiff --git a/file b/file[m
[1mindex 236483f..478d49a 100644[m
[1m--- a/file[m
[1m+++ b/file[m
[36m@@ -1,3 +1,3 @@[m
[31m-8[m
[31m-9[m
10[m
[32m+[m[32m5[m
[32m+[m[32m6[m
--
2.42.0
From 289be112e33a41491aad62fa3df2ba34eef65c7b Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:21:13 -0700
Subject: [PATCH 09/30] empty commit
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
--
2.42.0
From a59b7abc7125e1ae9086ad0e2bb18e7aeb3892f8 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:22:13 -0700
Subject: [PATCH 10/30] Feature branch change #1
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
file | 1 [32m+[m
1 file changed, 1 insertion(+)
[1mdiff --git a/file b/file[m
[1mindex e5895ff..3cb93e8 100644[m
[1m--- a/file[m
[1m+++ b/file[m
[36m@@ -12,3 +12,4 @@[m [mC[m
D[m
E[m
F[m
[32m+[m[32mAnother line[m
--
2.42.0
From 099a2d98b92b3120885ae3cb404eb5bd1589a993 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:23:13 -0700
Subject: [PATCH 11/30] Feature branch change #2
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
file | 1 [32m+[m
1 file changed, 1 insertion(+)
[1mdiff --git a/file b/file[m
[1mindex 3cb93e8..b43af10 100644[m
[1m--- a/file[m
[1m+++ b/file[m
[36m@@ -13,3 +13,4 @@[m [mD[m
E[m
F[m
Another line[m
[32m+[m[32mYet another line[m
--
2.42.0
From 3f3c468bfe7d646f0fe648fe73447c928ea9f263 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH 12/30] Notes added by 'git notes add'
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
b90b9c23c70534c70a59983c62d93ab2061d77db | 1 [32m+[m
1 file changed, 1 insertion(+)
create mode 100644 b90b9c23c70534c70a59983c62d93ab2061d77db
[1mdiff --git a/b90b9c23c70534c70a59983c62d93ab2061d77db b/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[1mnew file mode 100644[m
[1mindex 0000000..a117704[m
[1m--- /dev/null[m
[1m+++ b/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[36m@@ -0,0 +1 @@[m
[32m+[m[32mthis is note 2[m
--
2.42.0
From 5ffb44224ddede33e133bb3247046b7205ce395e Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH 13/30] Notes added by 'git notes add'
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
b90b9c23c70534c70a59983c62d93ab2061d77db | 1 [32m+[m
1 file changed, 1 insertion(+)
create mode 100644 b90b9c23c70534c70a59983c62d93ab2061d77db
[1mdiff --git a/b90b9c23c70534c70a59983c62d93ab2061d77db b/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[1mnew file mode 100644[m
[1mindex 0000000..e9404d1[m
[1m--- /dev/null[m
[1m+++ b/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[36m@@ -0,0 +1 @@[m
[32m+[m[32mthis is note 1[m
--
2.42.0
From d52bb05e62b70ce6791a2dfe8771f1fc15cb0f30 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH 14/30] pathspec_initial
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
file_a | 1 [32m+[m
file_b | 1 [32m+[m
2 files changed, 2 insertions(+)
create mode 100644 file_a
create mode 100644 file_b
[1mdiff --git a/file_a b/file_a[m
[1mnew file mode 100644[m
[1mindex 0000000..fa8d3ba[m
[1m--- /dev/null[m
[1m+++ b/file_a[m
[36m@@ -0,0 +1 @@[m
[32m+[m[32mfile_a 1[m
[1mdiff --git a/file_b b/file_b[m
[1mnew file mode 100644[m
[1mindex 0000000..ce75531[m
[1m--- /dev/null[m
[1m+++ b/file_b[m
[36m@@ -0,0 +1 @@[m
[32m+[m[32mfile_b 1[m
--
2.42.0
From 41b2a365155179ca3afaf5ef24f8fe3620ed2ece Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH 15/30] Notes removed by 'git notes remove'
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
b90b9c23c70534c70a59983c62d93ab2061d77db | 1 [31m-[m
1 file changed, 1 deletion(-)
delete mode 100644 b90b9c23c70534c70a59983c62d93ab2061d77db
[1mdiff --git a/b90b9c23c70534c70a59983c62d93ab2061d77db b/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[1mdeleted file mode 100644[m
[1mindex a117704..0000000[m
[1m--- a/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[1m+++ /dev/null[m
[36m@@ -1 +0,0 @@[m
[31m-this is note 2[m
--
2.42.0
From 4f00d6da4df555156261fca80f4fe1a712c3355e Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH 16/30] Notes removed by 'git notes remove'
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
b90b9c23c70534c70a59983c62d93ab2061d77db | 1 [31m-[m
1 file changed, 1 deletion(-)
delete mode 100644 b90b9c23c70534c70a59983c62d93ab2061d77db
[1mdiff --git a/b90b9c23c70534c70a59983c62d93ab2061d77db b/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[1mdeleted file mode 100644[m
[1mindex e9404d1..0000000[m
[1m--- a/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[1m+++ /dev/null[m
[36m@@ -1 +0,0 @@[m
[31m-this is note 1[m
--
2.42.0
From b3666cba140ea95784970b480fd8dc43c9ecab34 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH 17/30] pathspec_a
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
file_a | 1 [32m+[m
1 file changed, 1 insertion(+)
[1mdiff --git a/file_a b/file_a[m
[1mindex fa8d3ba..2cab2d9 100644[m
[1m--- a/file_a[m
[1m+++ b/file_a[m
[36m@@ -1 +1,2 @@[m
file_a 1[m
[32m+[m[32mfile_a 2[m
--
2.42.0
From f6a869f96d107d7e3fb6e594d23bd2e3d0bdb6a9 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH 18/30] Notes added by 'git notes add'
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
b90b9c23c70534c70a59983c62d93ab2061d77db | 1 [32m+[m
1 file changed, 1 insertion(+)
create mode 100644 b90b9c23c70534c70a59983c62d93ab2061d77db
[1mdiff --git a/b90b9c23c70534c70a59983c62d93ab2061d77db b/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[1mnew file mode 100644[m
[1mindex 0000000..a117704[m
[1m--- /dev/null[m
[1m+++ b/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[36m@@ -0,0 +1 @@[m
[32m+[m[32mthis is note 2[m
--
2.42.0
From c438ac80cdffb61bcb91633982253b61fec6df8d Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH 19/30] Notes added by 'git notes add'
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
b90b9c23c70534c70a59983c62d93ab2061d77db | 1 [32m+[m
1 file changed, 1 insertion(+)
create mode 100644 b90b9c23c70534c70a59983c62d93ab2061d77db
[1mdiff --git a/b90b9c23c70534c70a59983c62d93ab2061d77db b/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[1mnew file mode 100644[m
[1mindex 0000000..e9404d1[m
[1m--- /dev/null[m
[1m+++ b/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[36m@@ -0,0 +1 @@[m
[32m+[m[32mthis is note 1[m
--
2.42.0
From 98f42947e0ce149e0f5d64b53bd16d59a4157451 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH 20/30] Notes added by 'git notes add'
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
b90b9c23c70534c70a59983c62d93ab2061d77db | 1 [32m+[m
1 file changed, 1 insertion(+)
create mode 100644 b90b9c23c70534c70a59983c62d93ab2061d77db
[1mdiff --git a/b90b9c23c70534c70a59983c62d93ab2061d77db b/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[1mnew file mode 100644[m
[1mindex 0000000..b1bf3b6[m
[1m--- /dev/null[m
[1m+++ b/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[36m@@ -0,0 +1 @@[m
[32m+[m[32mnotes config message[m
--
2.42.0
From 2a7e73cc10cd91e47b5a5b0edc7652d31eb54003 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH 21/30] This is an excessively long subject line for a message
due to the habit some projects have of not having a short, one-line subject
at the start of the commit message, but rather sticking a whole paragraph
right at the start as the only thing in the commit message. It had better not
become the filename for the patch.
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
file | 16 [32m++++++++++++++++[m
1 file changed, 16 insertions(+)
[1mdiff --git a/file b/file[m
[1mindex 40f36c6..2dc5c23 100644[m
[1m--- a/file[m
[1m+++ b/file[m
[36m@@ -14,3 +14,19 @@[m [mC[m
D[m
E[m
F[m
[32m+[m[32m5[m
[32m+[m[32m6[m
[32m+[m[32m1[m
[32m+[m[32m2[m
[32m+[m[32m3[m
[32m+[m[32mA[m
[32m+[m[32m4[m
[32m+[m[32mB[m
[32m+[m[32mC[m
[32m+[m[32m7[m
[32m+[m[32m8[m
[32m+[m[32m9[m
[32m+[m[32m10[m
[32m+[m[32mD[m
[32m+[m[32mE[m
[32m+[m[32mF[m
--
2.42.0
From 670fb985b43c91b09477f4b496cc41d19da79985 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:14:13 -0700
Subject: [PATCH 22/30] Side changes #1
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
elif | 0
1 file changed, 0 insertions(+), 0 deletions(-)
mode change 100644 => 100755 elif
[1mdiff --git a/elif b/elif[m
[1mold mode 100644[m
[1mnew mode 100755[m
--
2.42.0
From a150355cf0ae81cbc9348966b0deadf810a58912 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH 23/30] pathspec_b
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
file_b | 1 [32m+[m
1 file changed, 1 insertion(+)
[1mdiff --git a/file_b b/file_b[m
[1mindex ce75531..4b46764 100644[m
[1m--- a/file_b[m
[1m+++ b/file_b[m
[36m@@ -1 +1,2 @@[m
file_b 1[m
[32m+[m[32mfile_b 2[m
--
2.42.0
From 7b899ae8dea3b2bba021d4dd6890cb68c705f1f1 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH 24/30] Notes added by 'git notes add'
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
b90b9c23c70534c70a59983c62d93ab2061d77db | 1 [32m+[m
1 file changed, 1 insertion(+)
create mode 100644 b90b9c23c70534c70a59983c62d93ab2061d77db
[1mdiff --git a/b90b9c23c70534c70a59983c62d93ab2061d77db b/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[1mnew file mode 100644[m
[1mindex 0000000..da5a1d5[m
[1m--- /dev/null[m
[1m+++ b/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[36m@@ -0,0 +1 @@[m
[32m+[m[32mtest message[m
--
2.42.0
From 74ec0928a6dadbff80d85127103ae7887528b54c Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH 25/30] Notes removed by 'git notes remove'
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
b90b9c23c70534c70a59983c62d93ab2061d77db | 1 [31m-[m
1 file changed, 1 deletion(-)
delete mode 100644 b90b9c23c70534c70a59983c62d93ab2061d77db
[1mdiff --git a/b90b9c23c70534c70a59983c62d93ab2061d77db b/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[1mdeleted file mode 100644[m
[1mindex a117704..0000000[m
[1m--- a/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[1m+++ /dev/null[m
[36m@@ -1 +0,0 @@[m
[31m-this is note 2[m
--
2.42.0
From 569fa67c3cb8f7bd1a952c35e478584c28fd1b7b Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH 26/30] Notes removed by 'git notes remove'
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
b90b9c23c70534c70a59983c62d93ab2061d77db | 1 [31m-[m
1 file changed, 1 deletion(-)
delete mode 100644 b90b9c23c70534c70a59983c62d93ab2061d77db
[1mdiff --git a/b90b9c23c70534c70a59983c62d93ab2061d77db b/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[1mdeleted file mode 100644[m
[1mindex e9404d1..0000000[m
[1m--- a/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[1m+++ /dev/null[m
[36m@@ -1 +0,0 @@[m
[31m-this is note 1[m
--
2.42.0
From 3bced63a7bc9eaa09cbbf4c6e8154341cc0f33b4 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH 27/30] Notes removed by 'git notes remove'
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
b90b9c23c70534c70a59983c62d93ab2061d77db | 1 [31m-[m
1 file changed, 1 deletion(-)
delete mode 100644 b90b9c23c70534c70a59983c62d93ab2061d77db
[1mdiff --git a/b90b9c23c70534c70a59983c62d93ab2061d77db b/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[1mdeleted file mode 100644[m
[1mindex b1bf3b6..0000000[m
[1m--- a/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[1m+++ /dev/null[m
[36m@@ -1 +0,0 @@[m
[31m-notes config message[m
--
2.42.0
From b90b9c23c70534c70a59983c62d93ab2061d77db Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH 28/30] foo
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
file => foo | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename file => foo (100%)
[1mdiff --git a/file b/foo[m
[1msimilarity index 100%[m
[1mrename from file[m
[1mrename to foo[m
--
2.42.0
From 7b10a919520d93d73715076684d729589ac4925a Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:16:13 -0700
Subject: [PATCH 29/30] Side changes #3 with \n backslash-n in it.
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
file | 6 [32m++++[m[31m--[m
1 file changed, 4 insertions(+), 2 deletions(-)
[1mdiff --git a/file b/file[m
[1mindex e5895ff..40f36c6 100644[m
[1m--- a/file[m
[1m+++ b/file[m
[36m@@ -1,8 +1,10 @@[m
[31m-1[m
[31m-2[m
5[m
6[m
[32m+[m[32m1[m
[32m+[m[32m2[m
[32m+[m[32m3[m
A[m
[32m+[m[32m4[m
B[m
C[m
7[m
--
2.42.0
From 32e34aba86c71477afd9157c4f6df9b787bde881 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH 30/30] pathspec_ab
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
file_a | 1 [32m+[m
file_b | 1 [32m+[m
2 files changed, 2 insertions(+)
[1mdiff --git a/file_a b/file_a[m
[1mindex 2cab2d9..81f70dc 100644[m
[1m--- a/file_a[m
[1m+++ b/file_a[m
[36m@@ -1,2 +1,3 @@[m
file_a 1[m
file_a 2[m
[32m+[m[32mfile_a 3[m
[1mdiff --git a/file_b b/file_b[m
[1mindex 4b46764..3d9874d 100644[m
[1m--- a/file_b[m
[1m+++ b/file_b[m
[36m@@ -1,2 +1,3 @@[m
file_b 1[m
file_b 2[m
[32m+[m[32mfile_b 3[m
--
2.42.0
From e27066e74e2522a272f220d17767ef6cab999734 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:13:13 -0700
Subject: [PATCH 01/30] Initial
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
elif | 10 [32m++++++++++[m
file | 10 [32m++++++++++[m
2 files changed, 20 insertions(+)
create mode 100644 elif
create mode 100644 file
[1mdiff --git a/elif b/elif[m
[1mnew file mode 100644[m
[1mindex 0000000..f00c965[m
[1m--- /dev/null[m
[1m+++ b/elif[m
[36m@@ -0,0 +1,10 @@[m
[32m+[m[32m1[m
[32m+[m[32m2[m
[32m+[m[32m3[m
[32m+[m[32m4[m
[32m+[m[32m5[m
[32m+[m[32m6[m
[32m+[m[32m7[m
[32m+[m[32m8[m
[32m+[m[32m9[m
[32m+[m[32m10[m
[1mdiff --git a/file b/file[m
[1mnew file mode 100644[m
[1mindex 0000000..f00c965[m
[1m--- /dev/null[m
[1m+++ b/file[m
[36m@@ -0,0 +1,10 @@[m
[32m+[m[32m1[m
[32m+[m[32m2[m
[32m+[m[32m3[m
[32m+[m[32m4[m
[32m+[m[32m5[m
[32m+[m[32m6[m
[32m+[m[32m7[m
[32m+[m[32m8[m
[32m+[m[32m9[m
[32m+[m[32m10[m
--
2.42.0
From 1135adfeed86678c55e1aad7c568046ee8215660 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:14:13 -0700
Subject: [PATCH 02/30] Side changes #1
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
elif | 0
1 file changed, 0 insertions(+), 0 deletions(-)
mode change 100644 => 100755 elif
[1mdiff --git a/elif b/elif[m
[1mold mode 100644[m
[1mnew mode 100755[m
--
2.42.0
From fd00575a8382ce27c62b83730a40bcff1dc2f25f Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:15:13 -0700
Subject: [PATCH 03/30] Side changes #2
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
file | 8 [32m++++++[m[31m--[m
1 file changed, 6 insertions(+), 2 deletions(-)
[1mdiff --git a/file b/file[m
[1mindex f00c965..e5895ff 100644[m
[1m--- a/file[m
[1m+++ b/file[m
[36m@@ -1,10 +1,14 @@[m
1[m
2[m
[31m-3[m
[31m-4[m
5[m
6[m
[32m+[m[32mA[m
[32m+[m[32mB[m
[32m+[m[32mC[m
7[m
8[m
9[m
10[m
[32m+[m[32mD[m
[32m+[m[32mE[m
[32m+[m[32mF[m
--
2.42.0
From 18ed22aae56367787c36a882bd61281e07994f11 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:16:13 -0700
Subject: [PATCH 04/30] Side changes #3 with \n backslash-n in it.
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
file | 6 [32m++++[m[31m--[m
1 file changed, 4 insertions(+), 2 deletions(-)
[1mdiff --git a/file b/file[m
[1mindex e5895ff..40f36c6 100644[m
[1m--- a/file[m
[1m+++ b/file[m
[36m@@ -1,8 +1,10 @@[m
[31m-1[m
[31m-2[m
5[m
6[m
[32m+[m[32m1[m
[32m+[m[32m2[m
[32m+[m[32m3[m
A[m
[32m+[m[32m4[m
B[m
C[m
7[m
--
2.42.0
From 333d5cbbd01bc8841a452d443caa9913971d4ffb Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:17:13 -0700
Subject: [PATCH 05/30] Main accepts moral equivalent of #2
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
file | 8 [32m++++++[m[31m--[m
1 file changed, 6 insertions(+), 2 deletions(-)
[1mdiff --git a/file b/file[m
[1mindex f00c965..e5895ff 100644[m
[1m--- a/file[m
[1m+++ b/file[m
[36m@@ -1,10 +1,14 @@[m
1[m
2[m
[31m-3[m
[31m-4[m
5[m
6[m
[32m+[m[32mA[m
[32m+[m[32mB[m
[32m+[m[32mC[m
7[m
8[m
9[m
10[m
[32m+[m[32mD[m
[32m+[m[32mE[m
[32m+[m[32mF[m
--
2.42.0
From 866b6195304ada3156f0f8c97696b6f862ce5312 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:18:13 -0700
Subject: [PATCH 06/30] patchid 1
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
file | 13 [31m-------------[m
file2 | 16 [32m++++++++++++++++[m
file3 | 16 [32m++++++++++++++++[m
3 files changed, 32 insertions(+), 13 deletions(-)
create mode 100644 file2
create mode 100644 file3
[1mdiff --git a/file b/file[m
[1mindex 40f36c6..236483f 100644[m
[1m--- a/file[m
[1m+++ b/file[m
[36m@@ -1,16 +1,3 @@[m
[31m-5[m
[31m-6[m
[31m-1[m
[31m-2[m
[31m-3[m
[31m-A[m
[31m-4[m
[31m-B[m
[31m-C[m
[31m-7[m
8[m
9[m
10[m
[31m-D[m
[31m-E[m
[31m-F[m
[1mdiff --git a/file2 b/file2[m
[1mnew file mode 100644[m
[1mindex 0000000..40f36c6[m
[1m--- /dev/null[m
[1m+++ b/file2[m
[36m@@ -0,0 +1,16 @@[m
[32m+[m[32m5[m
[32m+[m[32m6[m
[32m+[m[32m1[m
[32m+[m[32m2[m
[32m+[m[32m3[m
[32m+[m[32mA[m
[32m+[m[32m4[m
[32m+[m[32mB[m
[32m+[m[32mC[m
[32m+[m[32m7[m
[32m+[m[32m8[m
[32m+[m[32m9[m
[32m+[m[32m10[m
[32m+[m[32mD[m
[32m+[m[32mE[m
[32m+[m[32mF[m
[1mdiff --git a/file3 b/file3[m
[1mnew file mode 100644[m
[1mindex 0000000..281fa8c[m
[1m--- /dev/null[m
[1m+++ b/file3[m
[36m@@ -0,0 +1,16 @@[m
[32m+[m[32m1[m
[32m+[m[32m2[m
[32m+[m[32m3[m
[32m+[m[32mA[m
[32m+[m[32m4[m
[32m+[m[32mB[m
[32m+[m[32mC[m
[32m+[m[32m7[m
[32m+[m[32m8[m
[32m+[m[32m9[m
[32m+[m[32m10[m
[32m+[m[32mD[m
[32m+[m[32mE[m
[32m+[m[32mF[m
[32m+[m[32m5[m
[32m+[m[32m6[m
--
2.42.0
From b0e76a38f7c5ec2ee722c28a446dbba613e87da4 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:19:13 -0700
Subject: [PATCH 07/30] patchid 2
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
file2 | 11 [32m+[m[31m----------[m
file3 | 11 [31m-----------[m
2 files changed, 1 insertion(+), 21 deletions(-)
[1mdiff --git a/file2 b/file2[m
[1mindex 40f36c6..d082389 100644[m
[1m--- a/file2[m
[1m+++ b/file2[m
[36m@@ -1,16 +1,7 @@[m
[31m-5[m
[31m-6[m
[31m-1[m
[31m-2[m
[31m-3[m
[31m-A[m
4[m
[32m+[m[32mA[m
B[m
[31m-C[m
7[m
8[m
9[m
10[m
[31m-D[m
[31m-E[m
[31m-F[m
[1mdiff --git a/file3 b/file3[m
[1mindex 281fa8c..eb411a6 100644[m
[1m--- a/file3[m
[1m+++ b/file3[m
[36m@@ -1,16 +1,5 @@[m
[31m-1[m
[31m-2[m
[31m-3[m
[31m-A[m
[31m-4[m
[31m-B[m
[31m-C[m
[31m-7[m
8[m
9[m
10[m
[31m-D[m
[31m-E[m
[31m-F[m
5[m
6[m
--
2.42.0
From e905b623a7eaecf172d0a5e51615566d7c1343c2 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:20:13 -0700
Subject: [PATCH 08/30] patchid 3
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
file | 4 [32m++[m[31m--[m
1 file changed, 2 insertions(+), 2 deletions(-)
[1mdiff --git a/file b/file[m
[1mindex 236483f..478d49a 100644[m
[1m--- a/file[m
[1m+++ b/file[m
[36m@@ -1,3 +1,3 @@[m
[31m-8[m
[31m-9[m
10[m
[32m+[m[32m5[m
[32m+[m[32m6[m
--
2.42.0
From 289be112e33a41491aad62fa3df2ba34eef65c7b Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:21:13 -0700
Subject: [PATCH 09/30] empty commit
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
--
2.42.0
From a59b7abc7125e1ae9086ad0e2bb18e7aeb3892f8 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:22:13 -0700
Subject: [PATCH 10/30] Feature branch change #1
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
file | 1 [32m+[m
1 file changed, 1 insertion(+)
[1mdiff --git a/file b/file[m
[1mindex e5895ff..3cb93e8 100644[m
[1m--- a/file[m
[1m+++ b/file[m
[36m@@ -12,3 +12,4 @@[m [mC[m
D[m
E[m
F[m
[32m+[m[32mAnother line[m
--
2.42.0
From 099a2d98b92b3120885ae3cb404eb5bd1589a993 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:23:13 -0700
Subject: [PATCH 11/30] Feature branch change #2
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
file | 1 [32m+[m
1 file changed, 1 insertion(+)
[1mdiff --git a/file b/file[m
[1mindex 3cb93e8..b43af10 100644[m
[1m--- a/file[m
[1m+++ b/file[m
[36m@@ -13,3 +13,4 @@[m [mD[m
E[m
F[m
Another line[m
[32m+[m[32mYet another line[m
--
2.42.0
From 3f3c468bfe7d646f0fe648fe73447c928ea9f263 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH 12/30] Notes added by 'git notes add'
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
b90b9c23c70534c70a59983c62d93ab2061d77db | 1 [32m+[m
1 file changed, 1 insertion(+)
create mode 100644 b90b9c23c70534c70a59983c62d93ab2061d77db
[1mdiff --git a/b90b9c23c70534c70a59983c62d93ab2061d77db b/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[1mnew file mode 100644[m
[1mindex 0000000..a117704[m
[1m--- /dev/null[m
[1m+++ b/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[36m@@ -0,0 +1 @@[m
[32m+[m[32mthis is note 2[m
--
2.42.0
From 5ffb44224ddede33e133bb3247046b7205ce395e Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH 13/30] Notes added by 'git notes add'
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
b90b9c23c70534c70a59983c62d93ab2061d77db | 1 [32m+[m
1 file changed, 1 insertion(+)
create mode 100644 b90b9c23c70534c70a59983c62d93ab2061d77db
[1mdiff --git a/b90b9c23c70534c70a59983c62d93ab2061d77db b/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[1mnew file mode 100644[m
[1mindex 0000000..e9404d1[m
[1m--- /dev/null[m
[1m+++ b/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[36m@@ -0,0 +1 @@[m
[32m+[m[32mthis is note 1[m
--
2.42.0
From d52bb05e62b70ce6791a2dfe8771f1fc15cb0f30 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH 14/30] pathspec_initial
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
file_a | 1 [32m+[m
file_b | 1 [32m+[m
2 files changed, 2 insertions(+)
create mode 100644 file_a
create mode 100644 file_b
[1mdiff --git a/file_a b/file_a[m
[1mnew file mode 100644[m
[1mindex 0000000..fa8d3ba[m
[1m--- /dev/null[m
[1m+++ b/file_a[m
[36m@@ -0,0 +1 @@[m
[32m+[m[32mfile_a 1[m
[1mdiff --git a/file_b b/file_b[m
[1mnew file mode 100644[m
[1mindex 0000000..ce75531[m
[1m--- /dev/null[m
[1m+++ b/file_b[m
[36m@@ -0,0 +1 @@[m
[32m+[m[32mfile_b 1[m
--
2.42.0
From 41b2a365155179ca3afaf5ef24f8fe3620ed2ece Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH 15/30] Notes removed by 'git notes remove'
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
b90b9c23c70534c70a59983c62d93ab2061d77db | 1 [31m-[m
1 file changed, 1 deletion(-)
delete mode 100644 b90b9c23c70534c70a59983c62d93ab2061d77db
[1mdiff --git a/b90b9c23c70534c70a59983c62d93ab2061d77db b/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[1mdeleted file mode 100644[m
[1mindex a117704..0000000[m
[1m--- a/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[1m+++ /dev/null[m
[36m@@ -1 +0,0 @@[m
[31m-this is note 2[m
--
2.42.0
From 4f00d6da4df555156261fca80f4fe1a712c3355e Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH 16/30] Notes removed by 'git notes remove'
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
b90b9c23c70534c70a59983c62d93ab2061d77db | 1 [31m-[m
1 file changed, 1 deletion(-)
delete mode 100644 b90b9c23c70534c70a59983c62d93ab2061d77db
[1mdiff --git a/b90b9c23c70534c70a59983c62d93ab2061d77db b/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[1mdeleted file mode 100644[m
[1mindex e9404d1..0000000[m
[1m--- a/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[1m+++ /dev/null[m
[36m@@ -1 +0,0 @@[m
[31m-this is note 1[m
--
2.42.0
From b3666cba140ea95784970b480fd8dc43c9ecab34 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH 17/30] pathspec_a
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
file_a | 1 [32m+[m
1 file changed, 1 insertion(+)
[1mdiff --git a/file_a b/file_a[m
[1mindex fa8d3ba..2cab2d9 100644[m
[1m--- a/file_a[m
[1m+++ b/file_a[m
[36m@@ -1 +1,2 @@[m
file_a 1[m
[32m+[m[32mfile_a 2[m
--
2.42.0
From f6a869f96d107d7e3fb6e594d23bd2e3d0bdb6a9 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH 18/30] Notes added by 'git notes add'
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
b90b9c23c70534c70a59983c62d93ab2061d77db | 1 [32m+[m
1 file changed, 1 insertion(+)
create mode 100644 b90b9c23c70534c70a59983c62d93ab2061d77db
[1mdiff --git a/b90b9c23c70534c70a59983c62d93ab2061d77db b/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[1mnew file mode 100644[m
[1mindex 0000000..a117704[m
[1m--- /dev/null[m
[1m+++ b/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[36m@@ -0,0 +1 @@[m
[32m+[m[32mthis is note 2[m
--
2.42.0
From c438ac80cdffb61bcb91633982253b61fec6df8d Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH 19/30] Notes added by 'git notes add'
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
b90b9c23c70534c70a59983c62d93ab2061d77db | 1 [32m+[m
1 file changed, 1 insertion(+)
create mode 100644 b90b9c23c70534c70a59983c62d93ab2061d77db
[1mdiff --git a/b90b9c23c70534c70a59983c62d93ab2061d77db b/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[1mnew file mode 100644[m
[1mindex 0000000..e9404d1[m
[1m--- /dev/null[m
[1m+++ b/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[36m@@ -0,0 +1 @@[m
[32m+[m[32mthis is note 1[m
--
2.42.0
From 98f42947e0ce149e0f5d64b53bd16d59a4157451 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH 20/30] Notes added by 'git notes add'
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
b90b9c23c70534c70a59983c62d93ab2061d77db | 1 [32m+[m
1 file changed, 1 insertion(+)
create mode 100644 b90b9c23c70534c70a59983c62d93ab2061d77db
[1mdiff --git a/b90b9c23c70534c70a59983c62d93ab2061d77db b/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[1mnew file mode 100644[m
[1mindex 0000000..b1bf3b6[m
[1m--- /dev/null[m
[1m+++ b/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[36m@@ -0,0 +1 @@[m
[32m+[m[32mnotes config message[m
--
2.42.0
From 2a7e73cc10cd91e47b5a5b0edc7652d31eb54003 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH 21/30] This is an excessively long subject line for a message
due to the habit some projects have of not having a short, one-line subject
at the start of the commit message, but rather sticking a whole paragraph
right at the start as the only thing in the commit message. It had better not
become the filename for the patch.
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
file | 16 [32m++++++++++++++++[m
1 file changed, 16 insertions(+)
[1mdiff --git a/file b/file[m
[1mindex 40f36c6..2dc5c23 100644[m
[1m--- a/file[m
[1m+++ b/file[m
[36m@@ -14,3 +14,19 @@[m [mC[m
D[m
E[m
F[m
[32m+[m[32m5[m
[32m+[m[32m6[m
[32m+[m[32m1[m
[32m+[m[32m2[m
[32m+[m[32m3[m
[32m+[m[32mA[m
[32m+[m[32m4[m
[32m+[m[32mB[m
[32m+[m[32mC[m
[32m+[m[32m7[m
[32m+[m[32m8[m
[32m+[m[32m9[m
[32m+[m[32m10[m
[32m+[m[32mD[m
[32m+[m[32mE[m
[32m+[m[32mF[m
--
2.42.0
From 670fb985b43c91b09477f4b496cc41d19da79985 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:14:13 -0700
Subject: [PATCH 22/30] Side changes #1
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
elif | 0
1 file changed, 0 insertions(+), 0 deletions(-)
mode change 100644 => 100755 elif
[1mdiff --git a/elif b/elif[m
[1mold mode 100644[m
[1mnew mode 100755[m
--
2.42.0
From a150355cf0ae81cbc9348966b0deadf810a58912 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH 23/30] pathspec_b
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
file_b | 1 [32m+[m
1 file changed, 1 insertion(+)
[1mdiff --git a/file_b b/file_b[m
[1mindex ce75531..4b46764 100644[m
[1m--- a/file_b[m
[1m+++ b/file_b[m
[36m@@ -1 +1,2 @@[m
file_b 1[m
[32m+[m[32mfile_b 2[m
--
2.42.0
From 7b899ae8dea3b2bba021d4dd6890cb68c705f1f1 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH 24/30] Notes added by 'git notes add'
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
b90b9c23c70534c70a59983c62d93ab2061d77db | 1 [32m+[m
1 file changed, 1 insertion(+)
create mode 100644 b90b9c23c70534c70a59983c62d93ab2061d77db
[1mdiff --git a/b90b9c23c70534c70a59983c62d93ab2061d77db b/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[1mnew file mode 100644[m
[1mindex 0000000..da5a1d5[m
[1m--- /dev/null[m
[1m+++ b/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[36m@@ -0,0 +1 @@[m
[32m+[m[32mtest message[m
--
2.42.0
From 74ec0928a6dadbff80d85127103ae7887528b54c Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH 25/30] Notes removed by 'git notes remove'
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
b90b9c23c70534c70a59983c62d93ab2061d77db | 1 [31m-[m
1 file changed, 1 deletion(-)
delete mode 100644 b90b9c23c70534c70a59983c62d93ab2061d77db
[1mdiff --git a/b90b9c23c70534c70a59983c62d93ab2061d77db b/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[1mdeleted file mode 100644[m
[1mindex a117704..0000000[m
[1m--- a/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[1m+++ /dev/null[m
[36m@@ -1 +0,0 @@[m
[31m-this is note 2[m
--
2.42.0
From 569fa67c3cb8f7bd1a952c35e478584c28fd1b7b Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH 26/30] Notes removed by 'git notes remove'
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
b90b9c23c70534c70a59983c62d93ab2061d77db | 1 [31m-[m
1 file changed, 1 deletion(-)
delete mode 100644 b90b9c23c70534c70a59983c62d93ab2061d77db
[1mdiff --git a/b90b9c23c70534c70a59983c62d93ab2061d77db b/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[1mdeleted file mode 100644[m
[1mindex e9404d1..0000000[m
[1m--- a/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[1m+++ /dev/null[m
[36m@@ -1 +0,0 @@[m
[31m-this is note 1[m
--
2.42.0
From 3bced63a7bc9eaa09cbbf4c6e8154341cc0f33b4 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH 27/30] Notes removed by 'git notes remove'
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
b90b9c23c70534c70a59983c62d93ab2061d77db | 1 [31m-[m
1 file changed, 1 deletion(-)
delete mode 100644 b90b9c23c70534c70a59983c62d93ab2061d77db
[1mdiff --git a/b90b9c23c70534c70a59983c62d93ab2061d77db b/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[1mdeleted file mode 100644[m
[1mindex b1bf3b6..0000000[m
[1m--- a/b90b9c23c70534c70a59983c62d93ab2061d77db[m
[1m+++ /dev/null[m
[36m@@ -1 +0,0 @@[m
[31m-notes config message[m
--
2.42.0
From b90b9c23c70534c70a59983c62d93ab2061d77db Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH 28/30] foo
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
file => foo | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename file => foo (100%)
[1mdiff --git a/file b/foo[m
[1msimilarity index 100%[m
[1mrename from file[m
[1mrename to foo[m
--
2.42.0
From 7b10a919520d93d73715076684d729589ac4925a Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:16:13 -0700
Subject: [PATCH 29/30] Side changes #3 with \n backslash-n in it.
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
file | 6 [32m++++[m[31m--[m
1 file changed, 4 insertions(+), 2 deletions(-)
[1mdiff --git a/file b/file[m
[1mindex e5895ff..40f36c6 100644[m
[1m--- a/file[m
[1m+++ b/file[m
[36m@@ -1,8 +1,10 @@[m
[31m-1[m
[31m-2[m
5[m
6[m
[32m+[m[32m1[m
[32m+[m[32m2[m
[32m+[m[32m3[m
A[m
[32m+[m[32m4[m
B[m
C[m
7[m
--
2.42.0
From 32e34aba86c71477afd9157c4f6df9b787bde881 Mon Sep 17 00:00:00 2001
From: A U Thor <author@example.com>
Date: Thu, 7 Apr 2005 15:24:13 -0700
Subject: [PATCH 30/30] pathspec_ab
Header1: B E Cipient <rcipient@example.com>
To: Someone <someone@out.there>
Cc: C E Cipient <rcipient@example.com>
---
file_a | 1 [32m+[m
file_b | 1 [32m+[m
2 files changed, 2 insertions(+)
[1mdiff --git a/file_a b/file_a[m
[1mindex 2cab2d9..81f70dc 100644[m
[1m--- a/file_a[m
[1m+++ b/file_a[m
[36m@@ -1,2 +1,3 @@[m
file_a 1[m
file_a 2[m
[32m+[m[32mfile_a 3[m
[1mdiff --git a/file_b b/file_b[m
[1mindex 4b46764..3d9874d 100644[m
[1m--- a/file_b[m
[1m+++ b/file_b[m
[36m@@ -1,2 +1,3 @@[m
file_b 1[m
file_b 2[m
[32m+[m[32mfile_b 3[m
--
2.42.0
ok 94 - format-patch --stdout pagination can be disabled
expecting success of 4014.95 'format-patch handles multi-line subjects':
rm -rf patches/ &&
echo content >>file &&
test_write_lines one two three >msg &&
git add file &&
git commit -F msg &&
git format-patch -o patches -1 &&
grep ^Subject: patches/0001-one.patch >actual &&
echo "Subject: [PATCH] one two three" >expect &&
test_cmp expect actual
[side 17e47ba] one two three
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
patches/0001-one.patch
ok 95 - format-patch handles multi-line subjects
expecting success of 4014.96 'format-patch handles multi-line encoded subjects':
rm -rf patches/ &&
echo content >>file &&
test_write_lines en två tre >msg &&
git add file &&
git commit -F msg &&
git format-patch -o patches -1 &&
grep ^Subject: patches/0001-en.patch >actual &&
echo "Subject: [PATCH] =?UTF-8?q?en=20tv=C3=A5=20tre?=" >expect &&
test_cmp expect actual
[side 1ba0afd] en två tre
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
patches/0001-en.patch
ok 96 - format-patch handles multi-line encoded subjects
expecting success of 4014.97 'format-patch wraps extremely long subject (ascii)':
echo content >>file &&
git add file &&
git commit -m "$M512" &&
git format-patch --stdout -1 >patch &&
sed -n "/^Subject/p; /^ /p; /^$/q" patch >subject &&
test_cmp expect subject
[side d8c94d2] foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
ok 97 - format-patch wraps extremely long subject (ascii)
expecting success of 4014.98 'format-patch wraps extremely long subject (rfc2047)':
rm -rf patches/ &&
echo content >>file &&
git add file &&
git commit -m "$M512" &&
git format-patch --stdout -1 >patch &&
sed -n "/^Subject/p; /^ /p; /^$/q" patch >subject &&
test_cmp expect subject
[side 47388bc] föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar föö bar
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
ok 98 - format-patch wraps extremely long subject (rfc2047)
expecting success of 4014.99 'format-patch quotes dot in from-headers':
check_author "Foo B. Bar"
[side 5de4424] author-check
Author: Foo B. Bar <author@example.com>
1 file changed, 1 insertion(+)
ok 99 - format-patch quotes dot in from-headers
expecting success of 4014.100 'format-patch quotes double-quote in from-headers':
check_author "Foo \"The Baz\" Bar"
[side d2402b7] author-check
Author: Foo "The Baz" Bar <author@example.com>
1 file changed, 1 insertion(+)
ok 100 - format-patch quotes double-quote in from-headers
expecting success of 4014.101 'format-patch uses rfc2047-encoded from-headers when necessary':
check_author "Föo Bar"
[side 7d733d4] author-check
Author: Föo Bar <author@example.com>
1 file changed, 1 insertion(+)
ok 101 - format-patch uses rfc2047-encoded from-headers when necessary
expecting success of 4014.102 'rfc2047-encoded from-headers leave no rfc822 specials':
check_author "Föo B. Bar"
[side 0fb2487] author-check
Author: Föo B. Bar <author@example.com>
1 file changed, 1 insertion(+)
ok 102 - rfc2047-encoded from-headers leave no rfc822 specials
expecting success of 4014.103 'format-patch wraps moderately long from-header (ascii)':
check_author "foo_bar_foo_bar_foo_bar_foo_bar_foo_bar_foo_bar_foo_bar_foo_bar_"
[side 6a7ec41] author-check
Author: foo_bar_foo_bar_foo_bar_foo_bar_foo_bar_foo_bar_foo_bar_foo_bar_ <author@example.com>
1 file changed, 1 insertion(+)
ok 103 - format-patch wraps moderately long from-header (ascii)
expecting success of 4014.104 'format-patch wraps extremely long from-header (ascii)':
check_author "Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar"
[side bfcd2fb] author-check
Author: Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar <author@example.com>
1 file changed, 1 insertion(+)
ok 104 - format-patch wraps extremely long from-header (ascii)
expecting success of 4014.105 'format-patch wraps extremely long from-header (rfc822)':
check_author "Foo.Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar"
[side eac30c8] author-check
Author: Foo.Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar <author@example.com>
1 file changed, 1 insertion(+)
ok 105 - format-patch wraps extremely long from-header (rfc822)
expecting success of 4014.106 'format-patch wraps extremely long from-header (rfc2047)':
check_author "Foö Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar"
[side 58493a9] author-check
Author: Foö Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar <author@example.com>
1 file changed, 1 insertion(+)
ok 106 - format-patch wraps extremely long from-header (rfc2047)
expecting success of 4014.107 'format-patch wraps extremely long from-header (non-ASCII without Q-encoding)':
echo content >>file &&
git add file &&
GIT_AUTHOR_NAME="Foö Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar" \
git commit -m author-check &&
git format-patch --no-encode-email-headers --stdout -1 >patch &&
sed -n "/^From: /p; /^ /p; /^$/q" patch >actual &&
test_cmp expect actual
[side dff849b] author-check
Author: Foö Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar <author@example.com>
1 file changed, 1 insertion(+)
ok 107 - format-patch wraps extremely long from-header (non-ASCII without Q-encoding)
expecting success of 4014.108 'subject lines are unencoded with --no-encode-email-headers':
echo content >>file &&
git add file &&
git commit -m "Foö" &&
git format-patch --no-encode-email-headers -1 --stdout >patch &&
grep ^Subject: patch >actual &&
test_cmp expect actual
[side 8072171] Foö
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
ok 108 - subject lines are unencoded with --no-encode-email-headers
expecting success of 4014.109 'subject lines are unencoded with format.encodeEmailHeaders=false':
echo content >>file &&
git add file &&
git commit -m "Foö" &&
git config format.encodeEmailHeaders false &&
git format-patch -1 --stdout >patch &&
grep ^Subject: patch >actual &&
test_cmp expect actual
[side 9a61d52] Foö
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
ok 109 - subject lines are unencoded with format.encodeEmailHeaders=false
expecting success of 4014.110 '--encode-email-headers overrides format.encodeEmailHeaders':
echo content >>file &&
git add file &&
git commit -m "Foö" &&
git config format.encodeEmailHeaders false &&
git format-patch --encode-email-headers -1 --stdout >patch &&
grep ^Subject: patch >actual &&
test_cmp expect actual
[side 752f4f4] Foö
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
ok 110 - --encode-email-headers overrides format.encodeEmailHeaders
expecting success of 4014.111 'subject lines do not have 822 atom-quoting':
echo content >>file &&
git add file &&
git commit -m "header with . in it" &&
git format-patch -k -1 --stdout >patch &&
grep ^Subject: patch >actual &&
test_cmp expect actual
[side 1dbf506] header with . in it
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
ok 111 - subject lines do not have 822 atom-quoting
expecting success of 4014.112 'subject prefixes have space prepended':
git format-patch -n -1 --stdout --subject-prefix=PREFIX >patch &&
grep ^Subject: patch >actual &&
test_cmp expect actual
ok 112 - subject prefixes have space prepended
expecting success of 4014.113 'empty subject prefix does not have extra space':
git format-patch -n -1 --stdout --subject-prefix= >patch &&
grep ^Subject: patch >actual &&
test_cmp expect actual
ok 113 - empty subject prefix does not have extra space
expecting success of 4014.114 '--rfc':
cat >expect <<-\EOF &&
Subject: [RFC PATCH 1/1] header with . in it
EOF
git format-patch -n -1 --stdout --rfc >patch &&
grep ^Subject: patch >actual &&
test_cmp expect actual
ok 114 - --rfc
expecting success of 4014.115 '--from=ident notices bogus ident':
test_must_fail git format-patch -1 --stdout --from=foo >patch
fatal: invalid ident line: foo
ok 115 - --from=ident notices bogus ident
expecting success of 4014.116 '--from=ident replaces author':
git format-patch -1 --stdout --from="Me <me@example.com>" >patch &&
cat >expect <<-\EOF &&
From: Me <me@example.com>
From: A U Thor <author@example.com>
EOF
sed -ne "/^From:/p; /^$/p; /^---$/q" patch >patch.head &&
test_cmp expect patch.head
ok 116 - --from=ident replaces author
expecting success of 4014.117 '--from uses committer ident':
git format-patch -1 --stdout --from >patch &&
cat >expect <<-\EOF &&
From: C O Mitter <committer@example.com>
From: A U Thor <author@example.com>
EOF
sed -ne "/^From:/p; /^$/p; /^---$/q" patch >patch.head &&
test_cmp expect patch.head
ok 117 - --from uses committer ident
expecting success of 4014.118 '--from omits redundant in-body header':
git format-patch -1 --stdout --from="A U Thor <author@example.com>" >patch &&
cat >expect <<-\EOF &&
From: A U Thor <author@example.com>
EOF
sed -ne "/^From:/p; /^$/p; /^---$/q" patch >patch.head &&
test_cmp expect patch.head
ok 118 - --from omits redundant in-body header
expecting success of 4014.119 'with --force-in-body-from, redundant in-body from is kept':
git format-patch --force-in-body-from \
-1 --stdout --from="A U Thor <author@example.com>" >patch &&
cat >expect <<-\EOF &&
From: A U Thor <author@example.com>
From: A U Thor <author@example.com>
EOF
sed -ne "/^From:/p; /^$/p; /^---$/q" patch >patch.head &&
test_cmp expect patch.head
ok 119 - with --force-in-body-from, redundant in-body from is kept
expecting success of 4014.120 'format.forceInBodyFrom, equivalent to --force-in-body-from':
git -c format.forceInBodyFrom=yes format-patch \
-1 --stdout --from="A U Thor <author@example.com>" >patch &&
cat >expect <<-\EOF &&
From: A U Thor <author@example.com>
From: A U Thor <author@example.com>
EOF
sed -ne "/^From:/p; /^$/p; /^---$/q" patch >patch.head &&
test_cmp expect patch.head
ok 120 - format.forceInBodyFrom, equivalent to --force-in-body-from
expecting success of 4014.121 'format.forceInBodyFrom, equivalent to --force-in-body-from':
git -c format.forceInBodyFrom=yes format-patch --no-force-in-body-from \
-1 --stdout --from="A U Thor <author@example.com>" >patch &&
cat >expect <<-\EOF &&
From: A U Thor <author@example.com>
EOF
sed -ne "/^From:/p; /^$/p; /^---$/q" patch >patch.head &&
test_cmp expect patch.head
ok 121 - format.forceInBodyFrom, equivalent to --force-in-body-from
expecting success of 4014.122 'in-body headers trigger content encoding':
test_env GIT_AUTHOR_NAME="éxötìc" test_commit exotic &&
test_when_finished "git reset --hard HEAD^" &&
git format-patch -1 --stdout --from >patch &&
cat >expect <<-\EOF &&
From: C O Mitter <committer@example.com>
Content-Type: text/plain; charset=UTF-8
From: éxötìc <author@example.com>
EOF
sed -ne "/^From:/p; /^$/p; /^Content-Type/p; /^---$/q" patch >patch.head &&
test_cmp expect patch.head
[side 5d5f14e] exotic
Author: éxötìc <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 exotic.t
HEAD is now at 1dbf506 header with . in it
ok 122 - in-body headers trigger content encoding
expecting success of 4014.123 'signoff: commit with no body':
append_signoff </dev/null >actual &&
cat <<-\EOF | sed "s/EOL$//" >expect &&
4:Subject: [PATCH] EOL
8:
9:Signed-off-by: C O Mitter <committer@example.com>
EOF
test_cmp expect actual
ok 123 - signoff: commit with no body
expecting success of 4014.124 'signoff: commit with only subject':
echo subject | append_signoff >actual &&
cat >expect <<-\EOF &&
4:Subject: [PATCH] subject
8:
9:Signed-off-by: C O Mitter <committer@example.com>
EOF
test_cmp expect actual
ok 124 - signoff: commit with only subject
expecting success of 4014.125 'signoff: commit with only subject that does not end with NL':
printf subject | append_signoff >actual &&
cat >expect <<-\EOF &&
4:Subject: [PATCH] subject
8:
9:Signed-off-by: C O Mitter <committer@example.com>
EOF
test_cmp expect actual
ok 125 - signoff: commit with only subject that does not end with NL
expecting success of 4014.126 'signoff: no existing signoffs':
append_signoff <<-\EOF >actual &&
subject
body
EOF
cat >expect <<-\EOF &&
4:Subject: [PATCH] subject
8:
10:
11:Signed-off-by: C O Mitter <committer@example.com>
EOF
test_cmp expect actual
ok 126 - signoff: no existing signoffs
expecting success of 4014.127 'signoff: no existing signoffs and no trailing NL':
printf "subject\n\nbody" | append_signoff >actual &&
cat >expect <<-\EOF &&
4:Subject: [PATCH] subject
8:
10:
11:Signed-off-by: C O Mitter <committer@example.com>
EOF
test_cmp expect actual
ok 127 - signoff: no existing signoffs and no trailing NL
expecting success of 4014.128 'signoff: some random signoff':
append_signoff <<-\EOF >actual &&
subject
body
Signed-off-by: my@house
EOF
cat >expect <<-\EOF &&
4:Subject: [PATCH] subject
8:
10:
11:Signed-off-by: my@house
12:Signed-off-by: C O Mitter <committer@example.com>
EOF
test_cmp expect actual
ok 128 - signoff: some random signoff
expecting success of 4014.129 'signoff: misc conforming footer elements':
append_signoff <<-\EOF >actual &&
subject
body
Signed-off-by: my@house
(cherry picked from commit da39a3ee5e6b4b0d3255bfef95601890afd80709)
Tested-by: Some One <someone@example.com>
Bug: 1234
EOF
cat >expect <<-\EOF &&
4:Subject: [PATCH] subject
8:
10:
11:Signed-off-by: my@house
15:Signed-off-by: C O Mitter <committer@example.com>
EOF
test_cmp expect actual
ok 129 - signoff: misc conforming footer elements
expecting success of 4014.130 'signoff: some random signoff-alike':
append_signoff <<-\EOF >actual &&
subject
body
Fooled-by-me: my@house
EOF
cat >expect <<-\EOF &&
4:Subject: [PATCH] subject
8:
11:
12:Signed-off-by: C O Mitter <committer@example.com>
EOF
test_cmp expect actual
ok 130 - signoff: some random signoff-alike
expecting success of 4014.131 'signoff: not really a signoff':
append_signoff <<-\EOF >actual &&
subject
I want to mention about Signed-off-by: here.
EOF
cat >expect <<-\EOF &&
4:Subject: [PATCH] subject
8:
9:I want to mention about Signed-off-by: here.
10:
11:Signed-off-by: C O Mitter <committer@example.com>
EOF
test_cmp expect actual
ok 131 - signoff: not really a signoff
expecting success of 4014.132 'signoff: not really a signoff (2)':
append_signoff <<-\EOF >actual &&
subject
My unfortunate
Signed-off-by: example happens to be wrapped here.
EOF
cat >expect <<-\EOF &&
4:Subject: [PATCH] subject
8:
10:Signed-off-by: example happens to be wrapped here.
11:Signed-off-by: C O Mitter <committer@example.com>
EOF
test_cmp expect actual
ok 132 - signoff: not really a signoff (2)
expecting success of 4014.133 'signoff: valid S-o-b paragraph in the middle':
append_signoff <<-\EOF >actual &&
subject
Signed-off-by: my@house
Signed-off-by: your@house
A lot of houses.
EOF
cat >expect <<-\EOF &&
4:Subject: [PATCH] subject
8:
9:Signed-off-by: my@house
10:Signed-off-by: your@house
11:
13:
14:Signed-off-by: C O Mitter <committer@example.com>
EOF
test_cmp expect actual
ok 133 - signoff: valid S-o-b paragraph in the middle
expecting success of 4014.134 'signoff: the same signoff at the end':
append_signoff <<-\EOF >actual &&
subject
body
Signed-off-by: C O Mitter <committer@example.com>
EOF
cat >expect <<-\EOF &&
4:Subject: [PATCH] subject
8:
10:
11:Signed-off-by: C O Mitter <committer@example.com>
EOF
test_cmp expect actual
ok 134 - signoff: the same signoff at the end
expecting success of 4014.135 'signoff: the same signoff at the end, no trailing NL':
printf "subject\n\nSigned-off-by: C O Mitter <committer@example.com>" |
append_signoff >actual &&
cat >expect <<-\EOF &&
4:Subject: [PATCH] subject
8:
9:Signed-off-by: C O Mitter <committer@example.com>
EOF
test_cmp expect actual
ok 135 - signoff: the same signoff at the end, no trailing NL
expecting success of 4014.136 'signoff: the same signoff NOT at the end':
append_signoff <<-\EOF >actual &&
subject
body
Signed-off-by: C O Mitter <committer@example.com>
Signed-off-by: my@house
EOF
cat >expect <<-\EOF &&
4:Subject: [PATCH] subject
8:
10:
11:Signed-off-by: C O Mitter <committer@example.com>
12:Signed-off-by: my@house
EOF
test_cmp expect actual
ok 136 - signoff: the same signoff NOT at the end
expecting success of 4014.137 'signoff: tolerate garbage in conforming footer':
append_signoff <<-\EOF >actual &&
subject
body
Tested-by: my@house
Some Trash
Signed-off-by: C O Mitter <committer@example.com>
EOF
cat >expect <<-\EOF &&
4:Subject: [PATCH] subject
8:
10:
13:Signed-off-by: C O Mitter <committer@example.com>
EOF
test_cmp expect actual
ok 137 - signoff: tolerate garbage in conforming footer
expecting success of 4014.138 'signoff: respect trailer config':
append_signoff <<-\EOF >actual &&
subject
Myfooter: x
Some Trash
EOF
cat >expect <<-\EOF &&
4:Subject: [PATCH] subject
8:
11:
12:Signed-off-by: C O Mitter <committer@example.com>
EOF
test_cmp expect actual &&
test_config trailer.Myfooter.ifexists add &&
append_signoff <<-\EOF >actual &&
subject
Myfooter: x
Some Trash
EOF
cat >expect <<-\EOF &&
4:Subject: [PATCH] subject
8:
11:Signed-off-by: C O Mitter <committer@example.com>
EOF
test_cmp expect actual
ok 138 - signoff: respect trailer config
expecting success of 4014.139 'signoff: footer begins with non-signoff without @ sign':
append_signoff <<-\EOF >actual &&
subject
body
Reviewed-id: Noone
Tested-by: my@house
Change-id: Ideadbeef
Signed-off-by: C O Mitter <committer@example.com>
Bug: 1234
EOF
cat >expect <<-\EOF &&
4:Subject: [PATCH] subject
8:
10:
14:Signed-off-by: C O Mitter <committer@example.com>
EOF
test_cmp expect actual
ok 139 - signoff: footer begins with non-signoff without @ sign
expecting success of 4014.140 'format patch ignores color.ui':
test_unconfig color.ui &&
git format-patch --stdout -1 >expect &&
test_config color.ui always &&
git format-patch --stdout -1 >actual &&
test_cmp expect actual
ok 140 - format patch ignores color.ui
expecting success of 4014.141 'format patch respects diff.relative':
rm -rf subdir &&
mkdir subdir &&
echo other content >subdir/file2 &&
git add subdir/file2 &&
git commit -F msg &&
test_unconfig diff.relative &&
git format-patch --relative=subdir --stdout -1 >expect &&
test_config diff.relative true &&
git -C subdir format-patch --stdout -1 >actual &&
test_cmp expect actual
[side 961662c] en två tre
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 subdir/file2
ok 141 - format patch respects diff.relative
expecting success of 4014.142 'cover letter with invalid --cover-from-description and config':
test_config branch.rebuild-1.description "config subject
body" &&
test_must_fail git format-patch --cover-letter --cover-from-description garbage main &&
test_config format.coverFromDescription garbage &&
test_must_fail git format-patch --cover-letter main
fatal: garbage: invalid cover from description mode
fatal: garbage: invalid cover from description mode
ok 142 - cover letter with invalid --cover-from-description and config
expecting success of 4014.143 'cover letter with format.coverFromDescription = default':
test_config branch.rebuild-1.description "config subject
body" &&
test_config format.coverFromDescription default &&
git checkout rebuild-1 &&
git format-patch --stdout --cover-letter main >actual &&
grep "^Subject: \[PATCH 0/2\] \*\*\* SUBJECT HERE \*\*\*$" actual &&
! grep "^\*\*\* BLURB HERE \*\*\*$" actual &&
grep "^config subject$" actual &&
grep "^body$" actual
Switched to branch 'rebuild-1'
Subject: [PATCH 0/2] *** SUBJECT HERE ***
config subject
body
ok 143 - cover letter with format.coverFromDescription = default
expecting success of 4014.144 'cover letter with --cover-from-description default':
test_config branch.rebuild-1.description "config subject
body" &&
git checkout rebuild-1 &&
git format-patch --stdout --cover-letter --cover-from-description default main >actual &&
grep "^Subject: \[PATCH 0/2\] \*\*\* SUBJECT HERE \*\*\*$" actual &&
! grep "^\*\*\* BLURB HERE \*\*\*$" actual &&
grep "^config subject$" actual &&
grep "^body$" actual
Already on 'rebuild-1'
Subject: [PATCH 0/2] *** SUBJECT HERE ***
config subject
body
ok 144 - cover letter with --cover-from-description default
expecting success of 4014.145 'cover letter with format.coverFromDescription = none':
test_config branch.rebuild-1.description "config subject
body" &&
test_config format.coverFromDescription none &&
git checkout rebuild-1 &&
git format-patch --stdout --cover-letter main >actual &&
grep "^Subject: \[PATCH 0/2\] \*\*\* SUBJECT HERE \*\*\*$" actual &&
grep "^\*\*\* BLURB HERE \*\*\*$" actual &&
! grep "^config subject$" actual &&
! grep "^body$" actual
Already on 'rebuild-1'
Subject: [PATCH 0/2] *** SUBJECT HERE ***
*** BLURB HERE ***
ok 145 - cover letter with format.coverFromDescription = none
expecting success of 4014.146 'cover letter with --cover-from-description none':
test_config branch.rebuild-1.description "config subject
body" &&
git checkout rebuild-1 &&
git format-patch --stdout --cover-letter --cover-from-description none main >actual &&
grep "^Subject: \[PATCH 0/2\] \*\*\* SUBJECT HERE \*\*\*$" actual &&
grep "^\*\*\* BLURB HERE \*\*\*$" actual &&
! grep "^config subject$" actual &&
! grep "^body$" actual
Already on 'rebuild-1'
Subject: [PATCH 0/2] *** SUBJECT HERE ***
*** BLURB HERE ***
ok 146 - cover letter with --cover-from-description none
expecting success of 4014.147 'cover letter with format.coverFromDescription = message':
test_config branch.rebuild-1.description "config subject
body" &&
test_config format.coverFromDescription message &&
git checkout rebuild-1 &&
git format-patch --stdout --cover-letter main >actual &&
grep "^Subject: \[PATCH 0/2\] \*\*\* SUBJECT HERE \*\*\*$" actual &&
! grep "^\*\*\* BLURB HERE \*\*\*$" actual &&
grep "^config subject$" actual &&
grep "^body$" actual
Already on 'rebuild-1'
Subject: [PATCH 0/2] *** SUBJECT HERE ***
config subject
body
ok 147 - cover letter with format.coverFromDescription = message
expecting success of 4014.148 'cover letter with --cover-from-description message':
test_config branch.rebuild-1.description "config subject
body" &&
git checkout rebuild-1 &&
git format-patch --stdout --cover-letter --cover-from-description message main >actual &&
grep "^Subject: \[PATCH 0/2\] \*\*\* SUBJECT HERE \*\*\*$" actual &&
! grep "^\*\*\* BLURB HERE \*\*\*$" actual &&
grep "^config subject$" actual &&
grep "^body$" actual
Already on 'rebuild-1'
Subject: [PATCH 0/2] *** SUBJECT HERE ***
config subject
body
ok 148 - cover letter with --cover-from-description message
expecting success of 4014.149 'cover letter with format.coverFromDescription = subject':
test_config branch.rebuild-1.description "config subject
body" &&
test_config format.coverFromDescription subject &&
git checkout rebuild-1 &&
git format-patch --stdout --cover-letter main >actual &&
grep "^Subject: \[PATCH 0/2\] config subject$" actual &&
! grep "^\*\*\* BLURB HERE \*\*\*$" actual &&
! grep "^config subject$" actual &&
grep "^body$" actual
Already on 'rebuild-1'
Subject: [PATCH 0/2] config subject
body
ok 149 - cover letter with format.coverFromDescription = subject
expecting success of 4014.150 'cover letter with --cover-from-description subject':
test_config branch.rebuild-1.description "config subject
body" &&
git checkout rebuild-1 &&
git format-patch --stdout --cover-letter --cover-from-description subject main >actual &&
grep "^Subject: \[PATCH 0/2\] config subject$" actual &&
! grep "^\*\*\* BLURB HERE \*\*\*$" actual &&
! grep "^config subject$" actual &&
grep "^body$" actual
Already on 'rebuild-1'
Subject: [PATCH 0/2] config subject
body
ok 150 - cover letter with --cover-from-description subject
expecting success of 4014.151 'cover letter with format.coverFromDescription = auto (short subject line)':
test_config branch.rebuild-1.description "config subject
body" &&
test_config format.coverFromDescription auto &&
git checkout rebuild-1 &&
git format-patch --stdout --cover-letter main >actual &&
grep "^Subject: \[PATCH 0/2\] config subject$" actual &&
! grep "^\*\*\* BLURB HERE \*\*\*$" actual &&
! grep "^config subject$" actual &&
grep "^body$" actual
Already on 'rebuild-1'
Subject: [PATCH 0/2] config subject
body
ok 151 - cover letter with format.coverFromDescription = auto (short subject line)
expecting success of 4014.152 'cover letter with --cover-from-description auto (short subject line)':
test_config branch.rebuild-1.description "config subject
body" &&
git checkout rebuild-1 &&
git format-patch --stdout --cover-letter --cover-from-description auto main >actual &&
grep "^Subject: \[PATCH 0/2\] config subject$" actual &&
! grep "^\*\*\* BLURB HERE \*\*\*$" actual &&
! grep "^config subject$" actual &&
grep "^body$" actual
Already on 'rebuild-1'
Subject: [PATCH 0/2] config subject
body
ok 152 - cover letter with --cover-from-description auto (short subject line)
expecting success of 4014.153 'cover letter with format.coverFromDescription = auto (long subject line)':
test_config branch.rebuild-1.description "this is a really long first line and it is over 100 characters long which is the threshold for long subjects
body" &&
test_config format.coverFromDescription auto &&
git checkout rebuild-1 &&
git format-patch --stdout --cover-letter main >actual &&
grep "^Subject: \[PATCH 0/2\] \*\*\* SUBJECT HERE \*\*\*$" actual &&
! grep "^\*\*\* BLURB HERE \*\*\*$" actual &&
grep "^this is a really long first line and it is over 100 characters long which is the threshold for long subjects$" actual &&
grep "^body$" actual
Already on 'rebuild-1'
Subject: [PATCH 0/2] *** SUBJECT HERE ***
this is a really long first line and it is over 100 characters long which is the threshold for long subjects
body
ok 153 - cover letter with format.coverFromDescription = auto (long subject line)
expecting success of 4014.154 'cover letter with --cover-from-description auto (long subject line)':
test_config branch.rebuild-1.description "this is a really long first line and it is over 100 characters long which is the threshold for long subjects
body" &&
git checkout rebuild-1 &&
git format-patch --stdout --cover-letter --cover-from-description auto main >actual &&
grep "^Subject: \[PATCH 0/2\] \*\*\* SUBJECT HERE \*\*\*$" actual &&
! grep "^\*\*\* BLURB HERE \*\*\*$" actual &&
grep "^this is a really long first line and it is over 100 characters long which is the threshold for long subjects$" actual &&
grep "^body$" actual
Already on 'rebuild-1'
Subject: [PATCH 0/2] *** SUBJECT HERE ***
this is a really long first line and it is over 100 characters long which is the threshold for long subjects
body
ok 154 - cover letter with --cover-from-description auto (long subject line)
expecting success of 4014.155 'cover letter with command-line --cover-from-description overrides config':
test_config branch.rebuild-1.description "config subject
body" &&
test_config format.coverFromDescription none &&
git checkout rebuild-1 &&
git format-patch --stdout --cover-letter --cover-from-description subject main >actual &&
grep "^Subject: \[PATCH 0/2\] config subject$" actual &&
! grep "^\*\*\* BLURB HERE \*\*\*$" actual &&
! grep "^config subject$" actual &&
grep "^body$" actual
Already on 'rebuild-1'
Subject: [PATCH 0/2] config subject
body
ok 155 - cover letter with command-line --cover-from-description overrides config
expecting success of 4014.156 'cover letter using branch description (1)':
git checkout rebuild-1 &&
test_config branch.rebuild-1.description hello &&
git format-patch --stdout --cover-letter main >actual &&
grep hello actual
Already on 'rebuild-1'
hello
ok 156 - cover letter using branch description (1)
expecting success of 4014.157 'cover letter using branch description (2)':
git checkout rebuild-1 &&
test_config branch.rebuild-1.description hello &&
git format-patch --stdout --cover-letter rebuild-1~2..rebuild-1 >actual &&
grep hello actual
Already on 'rebuild-1'
hello
ok 157 - cover letter using branch description (2)
expecting success of 4014.158 'cover letter using branch description (3)':
git checkout rebuild-1 &&
test_config branch.rebuild-1.description hello &&
git format-patch --stdout --cover-letter ^main rebuild-1 >actual &&
grep hello actual
Already on 'rebuild-1'
hello
ok 158 - cover letter using branch description (3)
expecting success of 4014.159 'cover letter using branch description (4)':
git checkout rebuild-1 &&
test_config branch.rebuild-1.description hello &&
git format-patch --stdout --cover-letter main.. >actual &&
grep hello actual
Already on 'rebuild-1'
hello
ok 159 - cover letter using branch description (4)
expecting success of 4014.160 'cover letter using branch description (5)':
git checkout rebuild-1 &&
test_config branch.rebuild-1.description hello &&
git format-patch --stdout --cover-letter -2 HEAD >actual &&
grep hello actual
Already on 'rebuild-1'
hello
ok 160 - cover letter using branch description (5)
expecting success of 4014.161 'cover letter using branch description (6)':
git checkout rebuild-1 &&
test_config branch.rebuild-1.description hello &&
git format-patch --stdout --cover-letter -2 >actual &&
grep hello actual
Already on 'rebuild-1'
hello
ok 161 - cover letter using branch description (6)
expecting success of 4014.162 'cover letter with nothing':
git format-patch --stdout --cover-letter >actual &&
test_line_count = 0 actual
ok 162 - cover letter with nothing
expecting success of 4014.163 'cover letter auto':
mkdir -p tmp &&
test_when_finished "rm -rf tmp;
git config --unset format.coverletter" &&
git config format.coverletter auto &&
git format-patch -o tmp -1 >list &&
test_line_count = 1 list &&
git format-patch -o tmp -2 >list &&
test_line_count = 3 list
ok 163 - cover letter auto
expecting success of 4014.164 'cover letter auto user override':
mkdir -p tmp &&
test_when_finished "rm -rf tmp;
git config --unset format.coverletter" &&
git config format.coverletter auto &&
git format-patch -o tmp --cover-letter -1 >list &&
test_line_count = 2 list &&
git format-patch -o tmp --cover-letter -2 >list &&
test_line_count = 3 list &&
git format-patch -o tmp --no-cover-letter -1 >list &&
test_line_count = 1 list &&
git format-patch -o tmp --no-cover-letter -2 >list &&
test_line_count = 2 list
ok 164 - cover letter auto user override
expecting success of 4014.165 'format-patch --zero-commit':
git format-patch --zero-commit --stdout v2..v1 >patch2 &&
grep "^From " patch2 | sort | uniq >actual &&
echo "From $ZERO_OID Mon Sep 17 00:00:00 2001" >expect &&
test_cmp expect actual
ok 165 - format-patch --zero-commit
expecting success of 4014.166 'From line has expected format':
git format-patch --stdout v2..v1 >patch2 &&
grep "^From " patch2 >from &&
grep "^From $OID_REGEX Mon Sep 17 00:00:00 2001$" patch2 >filtered &&
test_cmp from filtered
ok 166 - From line has expected format
expecting success of 4014.167 'format-patch -o with no leading directories':
rm -fr patches &&
git format-patch -o patches main..side &&
count=$(git rev-list --count main..side) &&
ls patches >list &&
test_line_count = $count list
patches/0001-Side-changes-1.patch
patches/0002-Side-changes-2.patch
patches/0003-Side-changes-3-with-n-backslash-n-in-it.patch
patches/0004-This-is-an-excessively-long-subject-line-for-a-messa.patch
patches/0005-foo.patch
patches/0006-one.patch
patches/0007-en.patch
patches/0008-foo-bar-foo-bar-foo-bar-foo-bar-foo-bar-foo-bar-foo-.patch
patches/0009-f-bar-f-bar-f-bar-f-bar-f-bar-f-bar-f-bar-f-bar-f-ba.patch
patches/0010-author-check.patch
patches/0011-author-check.patch
patches/0012-author-check.patch
patches/0013-author-check.patch
patches/0014-author-check.patch
patches/0015-author-check.patch
patches/0016-author-check.patch
patches/0017-author-check.patch
patches/0018-author-check.patch
patches/0019-Fo.patch
patches/0020-Fo.patch
patches/0021-Fo.patch
patches/0022-header-with-.-in-it.patch
patches/0023-en.patch
ok 167 - format-patch -o with no leading directories
expecting success of 4014.168 'format-patch -o with leading existing directories':
rm -rf existing-dir &&
mkdir existing-dir &&
git format-patch -o existing-dir/patches main..side &&
count=$(git rev-list --count main..side) &&
ls existing-dir/patches >list &&
test_line_count = $count list
existing-dir/patches/0001-Side-changes-1.patch
existing-dir/patches/0002-Side-changes-2.patch
existing-dir/patches/0003-Side-changes-3-with-n-backslash-n-in-it.patch
existing-dir/patches/0004-This-is-an-excessively-long-subject-line-for-a-messa.patch
existing-dir/patches/0005-foo.patch
existing-dir/patches/0006-one.patch
existing-dir/patches/0007-en.patch
existing-dir/patches/0008-foo-bar-foo-bar-foo-bar-foo-bar-foo-bar-foo-bar-foo-.patch
existing-dir/patches/0009-f-bar-f-bar-f-bar-f-bar-f-bar-f-bar-f-bar-f-bar-f-ba.patch
existing-dir/patches/0010-author-check.patch
existing-dir/patches/0011-author-check.patch
existing-dir/patches/0012-author-check.patch
existing-dir/patches/0013-author-check.patch
existing-dir/patches/0014-author-check.patch
existing-dir/patches/0015-author-check.patch
existing-dir/patches/0016-author-check.patch
existing-dir/patches/0017-author-check.patch
existing-dir/patches/0018-author-check.patch
existing-dir/patches/0019-Fo.patch
existing-dir/patches/0020-Fo.patch
existing-dir/patches/0021-Fo.patch
existing-dir/patches/0022-header-with-.-in-it.patch
existing-dir/patches/0023-en.patch
ok 168 - format-patch -o with leading existing directories
expecting success of 4014.169 'format-patch -o with leading non-existing directories':
rm -rf non-existing-dir &&
git format-patch -o non-existing-dir/patches main..side &&
count=$(git rev-list --count main..side) &&
test_path_is_dir non-existing-dir &&
ls non-existing-dir/patches >list &&
test_line_count = $count list
non-existing-dir/patches/0001-Side-changes-1.patch
non-existing-dir/patches/0002-Side-changes-2.patch
non-existing-dir/patches/0003-Side-changes-3-with-n-backslash-n-in-it.patch
non-existing-dir/patches/0004-This-is-an-excessively-long-subject-line-for-a-messa.patch
non-existing-dir/patches/0005-foo.patch
non-existing-dir/patches/0006-one.patch
non-existing-dir/patches/0007-en.patch
non-existing-dir/patches/0008-foo-bar-foo-bar-foo-bar-foo-bar-foo-bar-foo-bar-foo-.patch
non-existing-dir/patches/0009-f-bar-f-bar-f-bar-f-bar-f-bar-f-bar-f-bar-f-bar-f-ba.patch
non-existing-dir/patches/0010-author-check.patch
non-existing-dir/patches/0011-author-check.patch
non-existing-dir/patches/0012-author-check.patch
non-existing-dir/patches/0013-author-check.patch
non-existing-dir/patches/0014-author-check.patch
non-existing-dir/patches/0015-author-check.patch
non-existing-dir/patches/0016-author-check.patch
non-existing-dir/patches/0017-author-check.patch
non-existing-dir/patches/0018-author-check.patch
non-existing-dir/patches/0019-Fo.patch
non-existing-dir/patches/0020-Fo.patch
non-existing-dir/patches/0021-Fo.patch
non-existing-dir/patches/0022-header-with-.-in-it.patch
non-existing-dir/patches/0023-en.patch
ok 169 - format-patch -o with leading non-existing directories
expecting success of 4014.170 'format-patch format.outputDirectory option':
test_config format.outputDirectory patches &&
rm -fr patches &&
git format-patch main..side &&
count=$(git rev-list --count main..side) &&
ls patches >list &&
test_line_count = $count list
patches/0001-Side-changes-1.patch
patches/0002-Side-changes-2.patch
patches/0003-Side-changes-3-with-n-backslash-n-in-it.patch
patches/0004-This-is-an-excessively-long-subject-line-for-a-messa.patch
patches/0005-foo.patch
patches/0006-one.patch
patches/0007-en.patch
patches/0008-foo-bar-foo-bar-foo-bar-foo-bar-foo-bar-foo-bar-foo-.patch
patches/0009-f-bar-f-bar-f-bar-f-bar-f-bar-f-bar-f-bar-f-bar-f-ba.patch
patches/0010-author-check.patch
patches/0011-author-check.patch
patches/0012-author-check.patch
patches/0013-author-check.patch
patches/0014-author-check.patch
patches/0015-author-check.patch
patches/0016-author-check.patch
patches/0017-author-check.patch
patches/0018-author-check.patch
patches/0019-Fo.patch
patches/0020-Fo.patch
patches/0021-Fo.patch
patches/0022-header-with-.-in-it.patch
patches/0023-en.patch
ok 170 - format-patch format.outputDirectory option
expecting success of 4014.171 'format-patch -o overrides format.outputDirectory':
test_config format.outputDirectory patches &&
rm -fr patches patchset &&
git format-patch main..side -o patchset &&
test_path_is_missing patches &&
test_path_is_dir patchset
patchset/0001-Side-changes-1.patch
patchset/0002-Side-changes-2.patch
patchset/0003-Side-changes-3-with-n-backslash-n-in-it.patch
patchset/0004-This-is-an-excessively-long-subject-line-for-a-messa.patch
patchset/0005-foo.patch
patchset/0006-one.patch
patchset/0007-en.patch
patchset/0008-foo-bar-foo-bar-foo-bar-foo-bar-foo-bar-foo-bar-foo-.patch
patchset/0009-f-bar-f-bar-f-bar-f-bar-f-bar-f-bar-f-bar-f-bar-f-ba.patch
patchset/0010-author-check.patch
patchset/0011-author-check.patch
patchset/0012-author-check.patch
patchset/0013-author-check.patch
patchset/0014-author-check.patch
patchset/0015-author-check.patch
patchset/0016-author-check.patch
patchset/0017-author-check.patch
patchset/0018-author-check.patch
patchset/0019-Fo.patch
patchset/0020-Fo.patch
patchset/0021-Fo.patch
patchset/0022-header-with-.-in-it.patch
patchset/0023-en.patch
ok 171 - format-patch -o overrides format.outputDirectory
expecting success of 4014.172 'format-patch forbids multiple outputs':
rm -fr outfile outdir &&
test_must_fail \
git format-patch --stdout --output-directory=outdir &&
test_must_fail \
git format-patch --stdout --output=outfile &&
test_must_fail \
git format-patch --output=outfile --output-directory=outdir
fatal: options '--stdout' and '--output-directory' cannot be used together
fatal: options '--stdout' and '--output' cannot be used together
fatal: options '--output' and '--output-directory' cannot be used together
ok 172 - format-patch forbids multiple outputs
expecting success of 4014.173 'configured outdir does not conflict with output options':
rm -fr outfile outdir &&
test_config format.outputDirectory outdir &&
git format-patch --stdout &&
test_path_is_missing outdir &&
git format-patch --output=outfile &&
test_path_is_missing outdir
ok 173 - configured outdir does not conflict with output options
expecting success of 4014.174 'format-patch --output':
rm -fr outfile &&
git format-patch -3 --stdout HEAD >expect &&
git format-patch -3 --output=outfile HEAD &&
test_cmp expect outfile
ok 174 - format-patch --output
expecting success of 4014.175 'format-patch --cover-letter --output':
rm -fr outfile &&
git format-patch --cover-letter -3 --stdout HEAD >expect &&
git format-patch --cover-letter -3 --output=outfile HEAD &&
test_cmp expect outfile
ok 175 - format-patch --cover-letter --output
expecting success of 4014.176 'format-patch --base':
git checkout patchid &&
git format-patch --stdout --base=HEAD~3 -1 >patch &&
tail -n 7 patch >actual1 &&
git format-patch --stdout --base=HEAD~3 HEAD~.. >patch &&
tail -n 7 patch >actual2 &&
echo >expect &&
git rev-parse HEAD~3 >commit-id-base &&
echo "base-commit: $(cat commit-id-base)" >>expect &&
git show --patch HEAD~2 >patch &&
git patch-id --stable <patch >patch.id.raw &&
awk "{print \"prerequisite-patch-id:\", \$1}" <patch.id.raw >>expect &&
git show --patch HEAD~1 >patch &&
git patch-id --stable <patch >patch.id.raw &&
awk "{print \"prerequisite-patch-id:\", \$1}" <patch.id.raw >>expect &&
signature >>expect &&
test_cmp expect actual1 &&
test_cmp expect actual2 &&
echo >fail &&
echo "base-commit: $(cat commit-id-base)" >>fail &&
git show --patch HEAD~2 >patch &&
git patch-id --unstable <patch >patch.id.raw &&
awk "{print \"prerequisite-patch-id:\", \$1}" <patch.id.raw >>fail &&
git show --patch HEAD~1 >patch &&
git patch-id --unstable <patch >patch.id.raw &&
awk "{print \"prerequisite-patch-id:\", \$1}" <patch.id.raw >>fail &&
signature >>fail &&
! test_cmp fail actual1 &&
! test_cmp fail actual2
Switched to branch 'patchid'
--- fail 2023-10-09 02:19:41.749124801 +0000
+++ actual1 2023-10-09 02:19:41.689124852 +0000
@@ -1,7 +1,7 @@
base-commit: 18ed22aae56367787c36a882bd61281e07994f11
-prerequisite-patch-id: 28427b5266de797837da09880f31c6774f1acddd
-prerequisite-patch-id: e6bf335459a53de8c1f2e3f7fcfa7f52b48e8a34
+prerequisite-patch-id: f7afebea9c46bbd99ee80c7d77c4ea784d8c29e4
+prerequisite-patch-id: 2617b88e9c5376b5aa36597467a68844063a7501
--
2.42.0
--- fail 2023-10-09 02:19:41.749124801 +0000
+++ actual2 2023-10-09 02:19:41.701124841 +0000
@@ -1,7 +1,7 @@
base-commit: 18ed22aae56367787c36a882bd61281e07994f11
-prerequisite-patch-id: 28427b5266de797837da09880f31c6774f1acddd
-prerequisite-patch-id: e6bf335459a53de8c1f2e3f7fcfa7f52b48e8a34
+prerequisite-patch-id: f7afebea9c46bbd99ee80c7d77c4ea784d8c29e4
+prerequisite-patch-id: 2617b88e9c5376b5aa36597467a68844063a7501
--
2.42.0
ok 176 - format-patch --base
expecting success of 4014.177 'format-patch --base errors out when base commit is in revision list':
test_must_fail git format-patch --base=HEAD -2 &&
test_must_fail git format-patch --base=HEAD~1 -2 &&
git format-patch --stdout --base=HEAD~2 -2 >patch &&
grep "^base-commit:" patch >actual &&
git rev-parse HEAD~2 >commit-id-base &&
echo "base-commit: $(cat commit-id-base)" >expect &&
test_cmp expect actual
fatal: base commit should be the ancestor of revision list
fatal: base commit shouldn't be in revision list
ok 177 - format-patch --base errors out when base commit is in revision list
expecting success of 4014.178 'format-patch --base errors out when base commit is not ancestor of revision list':
# For history as below:
#
# ---Q---P---Z---Y---*---X
# \ /
# ------------W
#
# If "format-patch Z..X" is given, P and Z can not be specified as the base commit
git checkout -b topic1 main &&
git rev-parse HEAD >commit-id-base &&
test_commit P &&
git rev-parse HEAD >commit-id-P &&
test_commit Z &&
git rev-parse HEAD >commit-id-Z &&
test_commit Y &&
git checkout -b topic2 main &&
test_commit W &&
git merge topic1 &&
test_commit X &&
test_must_fail git format-patch --base=$(cat commit-id-P) -3 &&
test_must_fail git format-patch --base=$(cat commit-id-Z) -3 &&
git format-patch --stdout --base=$(cat commit-id-base) -3 >patch &&
grep "^base-commit:" patch >actual &&
echo "base-commit: $(cat commit-id-base)" >expect &&
test_cmp expect actual
Switched to a new branch 'topic1'
[topic1 1475cb4] P
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 P.t
[topic1 b544364] Z
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 Z.t
[topic1 93f1071] Y
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 Y.t
Switched to a new branch 'topic2'
[topic2 90e4a2d] W
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 W.t
Merge made by the 'ort' strategy.
P.t | 1 +
Y.t | 1 +
Z.t | 1 +
3 files changed, 3 insertions(+)
create mode 100644 P.t
create mode 100644 Y.t
create mode 100644 Z.t
[topic2 fcd940f] X
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 X.t
fatal: base commit should be the ancestor of revision list
fatal: base commit should be the ancestor of revision list
ok 178 - format-patch --base errors out when base commit is not ancestor of revision list
expecting success of 4014.179 'format-patch --base=auto':
git checkout -b upstream main &&
git checkout -b local upstream &&
git branch --set-upstream-to=upstream &&
test_commit N1 &&
test_commit N2 &&
git format-patch --stdout --base=auto -2 >patch &&
grep "^base-commit:" patch >actual &&
git rev-parse upstream >commit-id-base &&
echo "base-commit: $(cat commit-id-base)" >expect &&
test_cmp expect actual
Switched to a new branch 'upstream'
Switched to a new branch 'local'
branch 'local' set up to track 'upstream'.
[local 58a2c1a] N1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 N1.t
[local 2092f1c] N2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 N2.t
ok 179 - format-patch --base=auto
expecting success of 4014.180 'format-patch errors out when history involves criss-cross':
# setup criss-cross history
#
# B---M1---D
# / \ /
# A X
# \ / \
# C---M2---E
#
git checkout main &&
test_commit A &&
git checkout -b xb main &&
test_commit B &&
git checkout -b xc main &&
test_commit C &&
git checkout -b xbc xb -- &&
git merge xc &&
git checkout -b xcb xc -- &&
git branch --set-upstream-to=xbc &&
git merge xb &&
git checkout xbc &&
test_commit D &&
git checkout xcb &&
test_commit E &&
test_must_fail git format-patch --base=auto -1
Switched to branch 'main'
[main d0903cd] A
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 A.t
Switched to a new branch 'xb'
[xb 5339a31] B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 B.t
Switched to a new branch 'xc'
[xc 1a9241d] C
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 C.t
Switched to a new branch 'xbc'
Merge made by the 'ort' strategy.
C.t | 1 +
1 file changed, 1 insertion(+)
create mode 100644 C.t
Switched to a new branch 'xcb'
branch 'xcb' set up to track 'xbc'.
Merge made by the 'ort' strategy.
B.t | 1 +
1 file changed, 1 insertion(+)
create mode 100644 B.t
Switched to branch 'xbc'
[xbc 475ff64] D
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 D.t
Switched to branch 'xcb'
Your branch and 'xbc' have diverged,
and have 1 and 2 different commits each, respectively.
(use "git pull" if you want to integrate the remote branch with yours)
[xcb 425fa6a] E
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 E.t
fatal: could not find exact merge base
ok 180 - format-patch errors out when history involves criss-cross
expecting success of 4014.181 'format-patch format.useAutoBase whenAble history involves criss-cross':
test_config format.useAutoBase whenAble &&
git format-patch -1 >patch &&
! grep "^base-commit:" patch
ok 181 - format-patch format.useAutoBase whenAble history involves criss-cross
expecting success of 4014.182 'format-patch format.useAutoBase option':
git checkout local &&
test_config format.useAutoBase true &&
git format-patch --stdout -1 >patch &&
grep "^base-commit:" patch >actual &&
git rev-parse upstream >commit-id-base &&
echo "base-commit: $(cat commit-id-base)" >expect &&
test_cmp expect actual
Switched to branch 'local'
Your branch is ahead of 'upstream' by 2 commits.
(use "git push" to publish your local commits)
ok 182 - format-patch format.useAutoBase option
expecting success of 4014.183 'format-patch format.useAutoBase option with whenAble':
git checkout local &&
test_config format.useAutoBase whenAble &&
git format-patch --stdout -1 >patch &&
grep "^base-commit:" patch >actual &&
git rev-parse upstream >commit-id-base &&
echo "base-commit: $(cat commit-id-base)" >expect &&
test_cmp expect actual
Already on 'local'
Your branch is ahead of 'upstream' by 2 commits.
(use "git push" to publish your local commits)
ok 183 - format-patch format.useAutoBase option with whenAble
expecting success of 4014.184 'format-patch --base overrides format.useAutoBase':
test_config format.useAutoBase true &&
git format-patch --stdout --base=HEAD~1 -1 >patch &&
grep "^base-commit:" patch >actual &&
git rev-parse HEAD~1 >commit-id-base &&
echo "base-commit: $(cat commit-id-base)" >expect &&
test_cmp expect actual
ok 184 - format-patch --base overrides format.useAutoBase
expecting success of 4014.185 'format-patch --no-base overrides format.useAutoBase':
test_config format.useAutoBase true &&
git format-patch --stdout --no-base -1 >patch &&
! grep "^base-commit:" patch
ok 185 - format-patch --no-base overrides format.useAutoBase
expecting success of 4014.186 'format-patch --no-base overrides format.useAutoBase whenAble':
test_config format.useAutoBase whenAble &&
git format-patch --stdout --no-base -1 >patch &&
! grep "^base-commit:" patch
ok 186 - format-patch --no-base overrides format.useAutoBase whenAble
expecting success of 4014.187 'format-patch --base with --attach':
git format-patch --attach=mimemime --stdout --base=HEAD~ -1 >patch &&
sed -n -e "/^base-commit:/s/.*/1/p" -e "/^---*mimemime--$/s/.*/2/p" \
patch >actual &&
test_write_lines 1 2 >expect &&
test_cmp expect actual
ok 187 - format-patch --base with --attach
expecting success of 4014.188 'format-patch --attach cover-letter only is non-multipart':
test_when_finished "rm -fr patches" &&
git format-patch -o patches --cover-letter --attach=mimemime --base=HEAD~ -1 &&
! grep -E "^--+mimemime" patches/0000*.patch &&
grep -E "^--+mimemime$" patches/0001*.patch >output &&
test_line_count = 2 output &&
grep -E "^--+mimemime--$" patches/0001*.patch >output &&
test_line_count = 1 output
patches/0000-cover-letter.patch
patches/0001-N2.patch
ok 188 - format-patch --attach cover-letter only is non-multipart
expecting success of 4014.189 'format-patch with format.attach':
test_when_finished "rm -fr patches" &&
separator=attachment-separator &&
test_config format.attach "$separator" &&
filename=$(git format-patch -o patches -1) &&
grep "^Content-Type: multipart/.*$separator" "$filename"
Content-Type: multipart/mixed; boundary="------------attachment-separator"
ok 189 - format-patch with format.attach
expecting success of 4014.190 'format-patch with format.attach=disabled':
test_when_finished "rm -fr patches" &&
separator=attachment-separator &&
test_config_global format.attach "$separator" &&
test_config format.attach "" &&
filename=$(git format-patch -o patches -1) &&
# The output should not even declare content type for text/plain.
! grep "^Content-Type: multipart/" "$filename"
ok 190 - format-patch with format.attach=disabled
expecting success of 4014.191 '-c format.mboxrd format-patch':
sp=" " &&
cat >msg <<-INPUT_END &&
mboxrd should escape the body
From could trip up a loose mbox parser
>From extra escape for reversibility
>>From extra escape for reversibility 2
from lower case not escaped
Fromm bad speling not escaped
From with leading space not escaped
F
From
From$sp
From $sp
From $sp
INPUT_END
cat >expect <<-INPUT_END &&
>From could trip up a loose mbox parser
>>From extra escape for reversibility
>>>From extra escape for reversibility 2
from lower case not escaped
Fromm bad speling not escaped
From with leading space not escaped
F
From
From
From
From
INPUT_END
C=$(git commit-tree HEAD^^{tree} -p HEAD <msg) &&
git -c format.mboxrd format-patch --stdout -1 $C~1..$C >patch &&
git format-patch --pretty=mboxrd --stdout -1 $C~1..$C >compat &&
test_cmp patch compat &&
git grep -h --no-index -A11 \
"^>From could trip up a loose mbox parser" patch >actual &&
test_cmp expect actual
ok 191 - -c format.mboxrd format-patch
expecting success of 4014.192 'interdiff: setup':
git checkout -b boop main &&
test_commit fnorp blorp &&
test_commit fleep blorp
Switched to a new branch 'boop'
[boop afed659] fnorp
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 blorp
[boop 15bea9f] fleep
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 192 - interdiff: setup
expecting success of 4014.193 'interdiff: cover-letter':
sed "y/q/ /" >expect <<-\EOF &&
+fleep
--q
EOF
git format-patch --cover-letter --interdiff=boop~2 -1 boop &&
test_i18ngrep "^Interdiff:$" 0000-cover-letter.patch &&
test_i18ngrep ! "^Interdiff:$" 0001-fleep.patch &&
sed "1,/^@@ /d; /^-- $/q" 0000-cover-letter.patch >actual &&
test_cmp expect actual
0000-cover-letter.patch
0001-fleep.patch
Interdiff:
ok 193 - interdiff: cover-letter
expecting success of 4014.194 'interdiff: reroll-count':
git format-patch --cover-letter --interdiff=boop~2 -v2 -1 boop &&
test_i18ngrep "^Interdiff ..* v1:$" v2-0000-cover-letter.patch
v2-0000-cover-letter.patch
v2-0001-fleep.patch
Interdiff against v1:
ok 194 - interdiff: reroll-count
expecting success of 4014.195 'interdiff: reroll-count with a non-integer':
git format-patch --cover-letter --interdiff=boop~2 -v2.2 -1 boop &&
test_i18ngrep "^Interdiff:$" v2.2-0000-cover-letter.patch
v2.2-0000-cover-letter.patch
v2.2-0001-fleep.patch
Interdiff:
ok 195 - interdiff: reroll-count with a non-integer
expecting success of 4014.196 'interdiff: reroll-count with a integer':
git format-patch --cover-letter --interdiff=boop~2 -v2 -1 boop &&
test_i18ngrep "^Interdiff ..* v1:$" v2-0000-cover-letter.patch
v2-0000-cover-letter.patch
v2-0001-fleep.patch
Interdiff against v1:
ok 196 - interdiff: reroll-count with a integer
expecting success of 4014.197 'interdiff: solo-patch':
cat >expect <<-\EOF &&
+fleep
EOF
git format-patch --interdiff=boop~2 -1 boop &&
test_i18ngrep "^Interdiff:$" 0001-fleep.patch &&
sed "1,/^ @@ /d; /^$/q" 0001-fleep.patch >actual &&
test_cmp expect actual
0001-fleep.patch
Interdiff:
ok 197 - interdiff: solo-patch
expecting success of 4014.198 'format-patch does not respect diff.noprefix':
git -c diff.noprefix format-patch -1 --stdout >actual &&
grep "^--- a/blorp" actual
--- a/blorp
ok 198 - format-patch does not respect diff.noprefix
expecting success of 4014.199 'format-patch respects format.noprefix':
git -c format.noprefix format-patch -1 --stdout >actual &&
grep "^--- blorp" actual
--- blorp
ok 199 - format-patch respects format.noprefix
expecting success of 4014.200 'format-patch --default-prefix overrides format.noprefix':
git -c format.noprefix \
format-patch -1 --default-prefix --stdout >actual &&
grep "^--- a/blorp" actual
--- a/blorp
ok 200 - format-patch --default-prefix overrides format.noprefix
# still have 5 known breakage(s)
# passed all remaining 195 test(s)
1..200
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4031-diff-rewrite-binary.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4031-diff-rewrite-binary/.git/
expecting success of 4031.1 'create binary file with changes':
make_file "\\0" &&
git add file &&
make_file "\\01"
ok 1 - create binary file with changes
expecting success of 4031.2 'vanilla diff is binary':
git diff >diff &&
grep "Binary files a/file and b/file differ" diff
Binary files a/file and b/file differ
ok 2 - vanilla diff is binary
expecting success of 4031.3 'rewrite diff is binary':
git diff -B >diff &&
grep "dissimilarity index" diff &&
grep "Binary files a/file and b/file differ" diff
dissimilarity index 99%
Binary files a/file and b/file differ
ok 3 - rewrite diff is binary
expecting success of 4031.4 'rewrite diff can show binary patch':
git diff -B --binary >diff &&
grep "dissimilarity index" diff &&
grep "GIT binary patch" diff
dissimilarity index 99%
GIT binary patch
ok 4 - rewrite diff can show binary patch
expecting success of 4031.5 'rewrite diff --numstat shows binary changes':
git diff -B --numstat --summary >diff &&
grep -e "- - " diff &&
grep " rewrite file" diff
- - file
rewrite file (99%)
ok 5 - rewrite diff --numstat shows binary changes
expecting success of 4031.6 'diff --stat counts binary rewrite as 0 lines':
git diff -B --stat --summary >diff &&
grep "Bin" diff &&
test_i18ngrep "0 insertions.*0 deletions" diff &&
grep " rewrite file" diff
file | Bin 902 -> 902 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
rewrite file (99%)
ok 6 - diff --stat counts binary rewrite as 0 lines
expecting success of 4031.7 'setup textconv':
echo file diff=foo >.gitattributes &&
git config diff.foo.textconv "\"$(pwd)\""/dump
ok 7 - setup textconv
expecting success of 4031.8 'rewrite diff respects textconv':
git diff -B >diff &&
grep "dissimilarity index" diff &&
grep "^-61" diff &&
grep "^-0" diff
dissimilarity index 99%
-61
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
-0
ok 8 - rewrite diff respects textconv
# passed all 8 test(s)
1..8
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4027-diff-submodule.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4027-diff-submodule/.git/
expecting success of 4027.1 'setup':
test_tick &&
test_create_repo sub &&
(
cd sub &&
echo hello >world &&
git add world &&
git commit -m submodule
) &&
test_tick &&
echo frotz >nitfol &&
git add nitfol sub &&
git commit -m superproject &&
(
cd sub &&
echo goodbye >world &&
git add world &&
git commit -m "submodule #2"
) &&
git -C sub rev-list HEAD >revs &&
set x $(cat revs) &&
echo ":160000 160000 $3 $ZERO_OID M sub" >expect &&
subtip=$3 subprev=$2
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4027-diff-submodule/sub/.git/
[master (root-commit) 4431e0b] submodule
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 world
warning: adding embedded git repository: sub
hint: You've added another git repository inside your current repository.
hint: Clones of the outer repository will not contain the contents of
hint: the embedded repository and will not know how to obtain it.
hint: If you meant to add a submodule, use:
hint:
hint: git submodule add <url> sub
hint:
hint: If you added this path by mistake, you can remove it from the
hint: index with:
hint:
hint: git rm --cached sub
hint:
hint: See "git help submodule" for more information.
[master (root-commit) 5b035b6] superproject
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 nitfol
create mode 160000 sub
[master 2dd69d6] submodule #2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 1 - setup
expecting success of 4027.2 'git diff --raw HEAD':
hexsz=$(test_oid hexsz) &&
git diff --raw --abbrev=$hexsz HEAD >actual &&
test_cmp expect actual
ok 2 - git diff --raw HEAD
expecting success of 4027.3 'git diff-index --raw HEAD':
git diff-index --raw HEAD >actual.index &&
test_cmp expect actual.index
ok 3 - git diff-index --raw HEAD
expecting success of 4027.4 'git diff-files --raw':
git diff-files --raw >actual.files &&
test_cmp expect actual.files
ok 4 - git diff-files --raw
expecting success of 4027.5 'git diff HEAD':
git diff HEAD >actual &&
sed -e "1,/^@@/d" actual >actual.body &&
expect_from_to >expect.body $subtip $subprev &&
test_cmp expect.body actual.body
ok 5 - git diff HEAD
expecting success of 4027.6 'git diff HEAD with dirty submodule (work tree)':
echo >>sub/world &&
git diff HEAD >actual &&
sed -e "1,/^@@/d" actual >actual.body &&
expect_from_to >expect.body $subtip $subprev-dirty &&
test_cmp expect.body actual.body
ok 6 - git diff HEAD with dirty submodule (work tree)
expecting success of 4027.7 'git diff HEAD with dirty submodule (index)':
(
cd sub &&
git reset --hard &&
echo >>world &&
git add world
) &&
git diff HEAD >actual &&
sed -e "1,/^@@/d" actual >actual.body &&
expect_from_to >expect.body $subtip $subprev-dirty &&
test_cmp expect.body actual.body
HEAD is now at 2dd69d6 submodule #2
ok 7 - git diff HEAD with dirty submodule (index)
expecting success of 4027.8 'git diff HEAD with dirty submodule (untracked)':
(
cd sub &&
git reset --hard &&
git clean -qfdx &&
>cruft
) &&
git diff HEAD >actual &&
sed -e "1,/^@@/d" actual >actual.body &&
expect_from_to >expect.body $subtip $subprev &&
test_cmp expect.body actual.body
HEAD is now at 2dd69d6 submodule #2
ok 8 - git diff HEAD with dirty submodule (untracked)
expecting success of 4027.9 'git diff HEAD with dirty submodule (untracked) (none ignored)':
test_config diff.ignoreSubmodules none &&
git diff HEAD >actual &&
sed -e "1,/^@@/d" actual >actual.body &&
expect_from_to >expect.body $subtip $subprev-dirty &&
test_cmp expect.body actual.body
ok 9 - git diff HEAD with dirty submodule (untracked) (none ignored)
expecting success of 4027.10 'git diff HEAD with dirty submodule (work tree, refs match)':
git commit -m "x" sub &&
echo >>sub/world &&
git diff HEAD >actual &&
sed -e "1,/^@@/d" actual >actual.body &&
expect_from_to >expect.body $subprev $subprev-dirty &&
test_cmp expect.body actual.body &&
git diff --ignore-submodules HEAD >actual2 &&
test_must_be_empty actual2 &&
git diff --ignore-submodules=untracked HEAD >actual3 &&
sed -e "1,/^@@/d" actual3 >actual3.body &&
expect_from_to >expect.body $subprev $subprev-dirty &&
test_cmp expect.body actual3.body &&
git diff --ignore-submodules=dirty HEAD >actual4 &&
test_must_be_empty actual4
[master e6ee575] x
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 10 - git diff HEAD with dirty submodule (work tree, refs match)
expecting success of 4027.11 'git diff HEAD with dirty submodule (work tree, refs match) [.gitmodules]':
git config diff.ignoreSubmodules dirty &&
git diff HEAD >actual &&
test_must_be_empty actual &&
git config --add -f .gitmodules submodule.subname.ignore none &&
git config --add -f .gitmodules submodule.subname.path sub &&
git diff HEAD >actual &&
sed -e "1,/^@@/d" actual >actual.body &&
expect_from_to >expect.body $subprev $subprev-dirty &&
test_cmp expect.body actual.body &&
git config -f .gitmodules submodule.subname.ignore all &&
git config -f .gitmodules submodule.subname.path sub &&
git diff HEAD >actual2 &&
test_must_be_empty actual2 &&
git config -f .gitmodules submodule.subname.ignore untracked &&
git diff HEAD >actual3 &&
sed -e "1,/^@@/d" actual3 >actual3.body &&
expect_from_to >expect.body $subprev $subprev-dirty &&
test_cmp expect.body actual3.body &&
git config -f .gitmodules submodule.subname.ignore dirty &&
git diff HEAD >actual4 &&
test_must_be_empty actual4 &&
git config submodule.subname.ignore none &&
git config submodule.subname.path sub &&
git diff HEAD >actual &&
sed -e "1,/^@@/d" actual >actual.body &&
expect_from_to >expect.body $subprev $subprev-dirty &&
test_cmp expect.body actual.body &&
git config --remove-section submodule.subname &&
git config --remove-section -f .gitmodules submodule.subname &&
git config --unset diff.ignoreSubmodules &&
rm .gitmodules
ok 11 - git diff HEAD with dirty submodule (work tree, refs match) [.gitmodules]
expecting success of 4027.12 'git diff HEAD with dirty submodule (index, refs match)':
(
cd sub &&
git reset --hard &&
echo >>world &&
git add world
) &&
git diff HEAD >actual &&
sed -e "1,/^@@/d" actual >actual.body &&
expect_from_to >expect.body $subprev $subprev-dirty &&
test_cmp expect.body actual.body
HEAD is now at 2dd69d6 submodule #2
ok 12 - git diff HEAD with dirty submodule (index, refs match)
expecting success of 4027.13 'git diff HEAD with dirty submodule (untracked, refs match)':
(
cd sub &&
git reset --hard &&
git clean -qfdx &&
>cruft
) &&
git diff --ignore-submodules=none HEAD >actual &&
sed -e "1,/^@@/d" actual >actual.body &&
expect_from_to >expect.body $subprev $subprev-dirty &&
test_cmp expect.body actual.body &&
git diff --ignore-submodules=all HEAD >actual2 &&
test_must_be_empty actual2 &&
git diff HEAD >actual3 &&
test_must_be_empty actual3 &&
git diff --ignore-submodules=dirty HEAD >actual4 &&
test_must_be_empty actual4
HEAD is now at 2dd69d6 submodule #2
ok 13 - git diff HEAD with dirty submodule (untracked, refs match)
expecting success of 4027.14 'git diff HEAD with dirty submodule (untracked, refs match) [.gitmodules]':
git config --add -f .gitmodules submodule.subname.ignore all &&
git config --add -f .gitmodules submodule.subname.path sub &&
git diff HEAD >actual2 &&
test_must_be_empty actual2 &&
git config -f .gitmodules submodule.subname.ignore untracked &&
git diff HEAD >actual3 &&
test_must_be_empty actual3 &&
git config -f .gitmodules submodule.subname.ignore dirty &&
git diff HEAD >actual4 &&
test_must_be_empty actual4 &&
git config submodule.subname.ignore none &&
git config submodule.subname.path sub &&
git diff HEAD >actual &&
sed -e "1,/^@@/d" actual >actual.body &&
expect_from_to >expect.body $subprev $subprev-dirty &&
test_cmp expect.body actual.body &&
git config --remove-section submodule.subname &&
git config --remove-section -f .gitmodules submodule.subname &&
rm .gitmodules
ok 14 - git diff HEAD with dirty submodule (untracked, refs match) [.gitmodules]
expecting success of 4027.15 'git diff between submodule commits':
git diff HEAD^..HEAD >actual &&
sed -e "1,/^@@/d" actual >actual.body &&
expect_from_to >expect.body $subtip $subprev &&
test_cmp expect.body actual.body &&
git diff --ignore-submodules=dirty HEAD^..HEAD >actual &&
sed -e "1,/^@@/d" actual >actual.body &&
expect_from_to >expect.body $subtip $subprev &&
test_cmp expect.body actual.body &&
git diff --ignore-submodules HEAD^..HEAD >actual &&
test_must_be_empty actual
ok 15 - git diff between submodule commits
expecting success of 4027.16 'git diff between submodule commits [.gitmodules]':
git diff HEAD^..HEAD >actual &&
sed -e "1,/^@@/d" actual >actual.body &&
expect_from_to >expect.body $subtip $subprev &&
test_cmp expect.body actual.body &&
git config --add -f .gitmodules submodule.subname.ignore dirty &&
git config --add -f .gitmodules submodule.subname.path sub &&
git diff HEAD^..HEAD >actual &&
sed -e "1,/^@@/d" actual >actual.body &&
expect_from_to >expect.body $subtip $subprev &&
test_cmp expect.body actual.body &&
git config -f .gitmodules submodule.subname.ignore all &&
git diff HEAD^..HEAD >actual &&
test_must_be_empty actual &&
git config submodule.subname.ignore dirty &&
git config submodule.subname.path sub &&
git diff HEAD^..HEAD >actual &&
sed -e "1,/^@@/d" actual >actual.body &&
expect_from_to >expect.body $subtip $subprev &&
git config --remove-section submodule.subname &&
git config --remove-section -f .gitmodules submodule.subname &&
rm .gitmodules
ok 16 - git diff between submodule commits [.gitmodules]
expecting success of 4027.17 'git diff (empty submodule dir)':
rm -rf sub/* sub/.git &&
git diff > actual.empty &&
test_must_be_empty actual.empty
ok 17 - git diff (empty submodule dir)
expecting success of 4027.18 'conflicted submodule setup':
c=$(test_oid ff_1) &&
(
echo "000000 $ZERO_OID 0 sub" &&
echo "160000 1$c 1 sub" &&
echo "160000 2$c 2 sub" &&
echo "160000 3$c 3 sub"
) | git update-index --index-info &&
echo >expect.nosub "diff --cc sub
index 2ffffff,3ffffff..0000000
--- a/sub
+++ b/sub
@@@ -1,1 -1,1 +1,1 @@@
- Subproject commit 2$c
-Subproject commit 3$c
++Subproject commit $ZERO_OID" &&
hh=$(git rev-parse HEAD) &&
sed -e "s/$ZERO_OID/$hh/" expect.nosub >expect.withsub
ok 18 - conflicted submodule setup
expecting success of 4027.19 'combined (empty submodule)':
rm -fr sub && mkdir sub &&
git diff >actual &&
test_cmp expect.nosub actual
ok 19 - combined (empty submodule)
expecting success of 4027.20 'combined (with submodule)':
rm -fr sub &&
git clone --no-checkout . sub &&
git diff >actual &&
test_cmp expect.withsub actual
Cloning into 'sub'...
done.
ok 20 - combined (with submodule)
# passed all 20 test(s)
1..20
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4033-diff-patience.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4033-diff-patience/.git/
expecting success of 4033.1 '--ignore-space-at-eol with a single appended character':
printf "a\nb\nc\n" >pre &&
printf "a\nbX\nc\n" >post &&
test_must_fail git diff --no-index \
--patience --ignore-space-at-eol pre post >diff &&
grep "^+.*X" diff
+bX
ok 1 - --ignore-space-at-eol with a single appended character
expecting success of 4033.2 'setup attributes files for tests with patience':
git checkout -b master &&
echo "file* diff=driver" >.gitattributes &&
git add file1 file2 .gitattributes &&
git commit -m "adding files" &&
git checkout -b branchA &&
echo "file* diff=driverA" >.gitattributes &&
git add .gitattributes &&
git commit -m "adding driverA as diff driver" &&
git checkout master &&
git clone --bare --no-local . bare.git
Switched to a new branch 'master'
[master (root-commit) 946e965] adding files
Author: A U Thor <author@example.com>
3 files changed, 52 insertions(+)
create mode 100644 .gitattributes
create mode 100644 file1
create mode 100644 file2
Switched to a new branch 'branchA'
[branchA 7cbc84d] adding driverA as diff driver
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to branch 'master'
Cloning into bare repository 'bare.git'...
ok 2 - setup attributes files for tests with patience
expecting success of 4033.3 'patience diff from attributes':
test_must_fail git -c diff.driver.algorithm=$STRATEGY diff --no-index file1 file2 > output &&
test_cmp expect output
ok 3 - patience diff from attributes
expecting success of 4033.4 'diff from attributes with bare repo with source':
git -C bare.git --attr-source=branchA -c diff.driver.algorithm=myers \
-c diff.driverA.algorithm=$STRATEGY \
diff HEAD:file1 HEAD:file2 >output &&
test_cmp expect output
ok 4 - diff from attributes with bare repo with source
expecting success of 4033.5 'diff from attributes with bare repo with invalid source':
test_must_fail git -C bare.git --attr-source=invalid-branch diff \
HEAD:file1 HEAD:file2
fatal: bad --attr-source or GIT_ATTR_SOURCE
ok 5 - diff from attributes with bare repo with invalid source
expecting success of 4033.6 'patience diff from attributes has valid diffstat':
echo "file* diff=driver" >.gitattributes &&
git config diff.driver.algorithm "$STRATEGY" &&
test_must_fail git diff --stat --no-index file1 file2 > output &&
test_cmp expect_diffstat output
ok 6 - patience diff from attributes has valid diffstat
expecting success of 4033.7 'patience diff':
test_must_fail git diff --no-index "--diff-algorithm=$STRATEGY" file1 file2 > output &&
test_cmp expect output
ok 7 - patience diff
expecting success of 4033.8 'patience diff command line precedence before attributes':
echo "file* diff=driver" >.gitattributes &&
git config diff.driver.algorithm myers &&
test_must_fail git diff --no-index "--diff-algorithm=$STRATEGY" file1 file2 > output &&
test_cmp expect output
ok 8 - patience diff command line precedence before attributes
expecting success of 4033.9 'patience diff attributes precedence before config':
git config diff.algorithm default &&
echo "file* diff=driver" >.gitattributes &&
git config diff.driver.algorithm "$STRATEGY" &&
test_must_fail git diff --no-index file1 file2 > output &&
test_cmp expect output
ok 9 - patience diff attributes precedence before config
expecting success of 4033.10 'patience diff output is valid':
mv file2 expect &&
git apply < output &&
test_cmp expect file2
ok 10 - patience diff output is valid
expecting success of 4033.11 'completely different files':
test_must_fail git diff --no-index "--$STRATEGY" uniq1 uniq2 > output &&
test_cmp expect output
ok 11 - completely different files
# passed all 11 test(s)
1..11
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4030-diff-textconv.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4030-diff-textconv/.git/
expecting success of 4030.1 'setup binary file with history':
test_commit --printf one file "\\0\\n" &&
test_commit --printf --append two file "\\01\\n"
[master (root-commit) f1b27dd] one
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file
[master e1c09e5] two
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
ok 1 - setup binary file with history
expecting success of 4030.2 'file is considered binary by porcelain':
git diff HEAD^ HEAD >diff &&
find_diff <diff >actual &&
test_cmp expect.binary actual
ok 2 - file is considered binary by porcelain
expecting success of 4030.3 'file is considered binary by plumbing':
git diff-tree -p HEAD^ HEAD >diff &&
find_diff <diff >actual &&
test_cmp expect.binary actual
ok 3 - file is considered binary by plumbing
expecting success of 4030.4 'setup textconv filters':
echo file diff=foo >.gitattributes &&
git config diff.foo.textconv "\"$(pwd)\""/hexdump &&
git config diff.fail.textconv false
ok 4 - setup textconv filters
expecting success of 4030.5 'diff produces text':
git diff HEAD^ HEAD >diff &&
find_diff <diff >actual &&
test_cmp expect.text actual
ok 5 - diff produces text
expecting success of 4030.6 'show commit produces text':
git show HEAD >diff &&
find_diff <diff >actual &&
test_cmp expect.text actual
ok 6 - show commit produces text
expecting success of 4030.7 'diff-tree produces binary':
git diff-tree -p HEAD^ HEAD >diff &&
find_diff <diff >actual &&
test_cmp expect.binary actual
ok 7 - diff-tree produces binary
expecting success of 4030.8 'log produces text':
git log -1 -p >log &&
find_diff <log >actual &&
test_cmp expect.text actual
ok 8 - log produces text
expecting success of 4030.9 'format-patch produces binary':
git format-patch --no-binary --stdout HEAD^ >patch &&
find_diff <patch >actual &&
test_cmp expect.binary actual
ok 9 - format-patch produces binary
expecting success of 4030.10 'status -v produces text':
git reset --soft HEAD^ &&
git status -v >diff &&
find_diff <diff >actual &&
test_cmp expect.text actual &&
git reset --soft HEAD@{1}
ok 10 - status -v produces text
expecting success of 4030.11 'show blob produces binary':
git show HEAD:file >actual &&
printf "\\0\\n\\01\\n" >expect &&
test_cmp expect actual
ok 11 - show blob produces binary
expecting success of 4030.12 'show --textconv blob produces text':
git show --textconv HEAD:file >actual &&
printf "0\\n1\\n" >expect &&
test_cmp expect actual
ok 12 - show --textconv blob produces text
expecting success of 4030.13 'show --no-textconv blob produces binary':
git show --no-textconv HEAD:file >actual &&
printf "\\0\\n\\01\\n" >expect &&
test_cmp expect actual
ok 13 - show --no-textconv blob produces binary
expecting success of 4030.14 'grep-diff (-G) operates on textconv data (add)':
echo one >expect &&
git log --root --format=%s -G0 >actual &&
test_cmp expect actual
ok 14 - grep-diff (-G) operates on textconv data (add)
expecting success of 4030.15 'grep-diff (-G) operates on textconv data (modification)':
echo two >expect &&
git log --root --format=%s -G1 >actual &&
test_cmp expect actual
ok 15 - grep-diff (-G) operates on textconv data (modification)
expecting success of 4030.16 'pickaxe (-S) operates on textconv data (add)':
echo one >expect &&
git log --root --format=%s -S0 >actual &&
test_cmp expect actual
ok 16 - pickaxe (-S) operates on textconv data (add)
expecting success of 4030.17 'pickaxe (-S) operates on textconv data (modification)':
echo two >expect &&
git log --root --format=%s -S1 >actual &&
test_cmp expect actual
ok 17 - pickaxe (-S) operates on textconv data (modification)
expecting success of 4030.18 'diffstat does not run textconv':
echo file diff=fail >.gitattributes &&
git diff --stat HEAD^ HEAD >actual &&
test_cmp expect.stat actual &&
head -n1 <expect.stat >expect.line1 &&
head -n1 <actual >actual.line1 &&
test_cmp expect.line1 actual.line1
ok 18 - diffstat does not run textconv
expecting success of 4030.19 'textconv does not act on symlinks':
rm -f file &&
test_ln_s_add frotz file &&
git commit -m typechange &&
git show >diff &&
find_diff <diff >actual &&
test_cmp expect.typechange actual
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
[master 552bf47] typechange
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
mode change 100644 => 120000 file
ok 19 - textconv does not act on symlinks
# passed all 19 test(s)
1..19
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4032-diff-inter-hunk-context.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4032-diff-inter-hunk-context/.git/
expecting success of 4032.1 'diff -U0, 1 common line: count hunks (2)':
test 2 = 2
ok 1 - diff -U0, 1 common line: count hunks (2)
expecting success of 4032.2 'diff -U0, 1 common line: check output':
git diff -U0 f1 | grep -v '^index ' >actual &&
test_cmp expected.f1.0.2 actual
ok 2 - diff -U0, 1 common line: check output
expecting success of 4032.3 'diff -U0 --inter-hunk-context=0, 1 common line: count hunks (2)':
test 2 = 2
ok 3 - diff -U0 --inter-hunk-context=0, 1 common line: count hunks (2)
expecting success of 4032.4 'diff -U0 --inter-hunk-context=0, 1 common line: check output':
git diff -U0 --inter-hunk-context=0 f1 | grep -v '^index ' >actual &&
test_cmp expected.f1.0.2 actual
ok 4 - diff -U0 --inter-hunk-context=0, 1 common line: check output
expecting success of 4032.5 'diff -U0 --inter-hunk-context=1, 1 common line: count hunks (1)':
test 1 = 1
ok 5 - diff -U0 --inter-hunk-context=1, 1 common line: count hunks (1)
expecting success of 4032.6 'diff -U0 --inter-hunk-context=1, 1 common line: check output':
git diff -U0 --inter-hunk-context=1 f1 | grep -v '^index ' >actual &&
test_cmp expected.f1.0.1 actual
ok 6 - diff -U0 --inter-hunk-context=1, 1 common line: check output
expecting success of 4032.7 'diff -U0 --inter-hunk-context=2, 1 common line: count hunks (1)':
test 1 = 1
ok 7 - diff -U0 --inter-hunk-context=2, 1 common line: count hunks (1)
expecting success of 4032.8 'diff -U0 --inter-hunk-context=2, 1 common line: check output':
git diff -U0 --inter-hunk-context=2 f1 | grep -v '^index ' >actual &&
test_cmp expected.f1.0.1 actual
ok 8 - diff -U0 --inter-hunk-context=2, 1 common line: check output
expecting success of 4032.9 'diff -U1, 1 common line: count hunks (1)':
test 1 = 1
ok 9 - diff -U1, 1 common line: count hunks (1)
expecting success of 4032.10 'diff -U0, 2 common lines: count hunks (2)':
test 2 = 2
ok 10 - diff -U0, 2 common lines: count hunks (2)
expecting success of 4032.11 'diff -U0 --inter-hunk-context=0, 2 common lines: count hunks (2)':
test 2 = 2
ok 11 - diff -U0 --inter-hunk-context=0, 2 common lines: count hunks (2)
expecting success of 4032.12 'diff -U0 --inter-hunk-context=1, 2 common lines: count hunks (2)':
test 2 = 2
ok 12 - diff -U0 --inter-hunk-context=1, 2 common lines: count hunks (2)
expecting success of 4032.13 'diff -U0 --inter-hunk-context=2, 2 common lines: count hunks (1)':
test 1 = 1
ok 13 - diff -U0 --inter-hunk-context=2, 2 common lines: count hunks (1)
expecting success of 4032.14 'diff -U1, 2 common lines: count hunks (1)':
test 1 = 1
ok 14 - diff -U1, 2 common lines: count hunks (1)
expecting success of 4032.15 'diff -U1, 3 common lines: count hunks (2)':
test 2 = 2
ok 15 - diff -U1, 3 common lines: count hunks (2)
expecting success of 4032.16 'diff -U1 --inter-hunk-context=0, 3 common lines: count hunks (2)':
test 2 = 2
ok 16 - diff -U1 --inter-hunk-context=0, 3 common lines: count hunks (2)
expecting success of 4032.17 'diff -U1 --inter-hunk-context=1, 3 common lines: count hunks (1)':
test 1 = 1
ok 17 - diff -U1 --inter-hunk-context=1, 3 common lines: count hunks (1)
expecting success of 4032.18 'diff -U1 --inter-hunk-context=2, 3 common lines: count hunks (1)':
test 1 = 1
ok 18 - diff -U1 --inter-hunk-context=2, 3 common lines: count hunks (1)
expecting success of 4032.19 'diff -U3, 9 common lines: count hunks (2)':
test 2 = 2
ok 19 - diff -U3, 9 common lines: count hunks (2)
expecting success of 4032.20 'diff -U3 --inter-hunk-context=2, 9 common lines: count hunks (2)':
test 2 = 2
ok 20 - diff -U3 --inter-hunk-context=2, 9 common lines: count hunks (2)
expecting success of 4032.21 'diff -U3 --inter-hunk-context=3, 9 common lines: count hunks (1)':
test 1 = 1
ok 21 - diff -U3 --inter-hunk-context=3, 9 common lines: count hunks (1)
expecting success of 4032.22 '(diff.interHunkContext=0) diff -U0, 1 common line: count hunks (2)':
test 2 = 2
ok 22 - (diff.interHunkContext=0) diff -U0, 1 common line: count hunks (2)
expecting success of 4032.23 '(diff.interHunkContext=0) diff -U0, 1 common line: check output':
git diff -U0 f1 | grep -v '^index ' >actual &&
test_cmp expected.f1.0.2 actual
ok 23 - (diff.interHunkContext=0) diff -U0, 1 common line: check output
expecting success of 4032.24 '(diff.interHunkContext=1) diff -U0, 1 common line: count hunks (1)':
test 1 = 1
ok 24 - (diff.interHunkContext=1) diff -U0, 1 common line: count hunks (1)
expecting success of 4032.25 '(diff.interHunkContext=1) diff -U0, 1 common line: check output':
git diff -U0 f1 | grep -v '^index ' >actual &&
test_cmp expected.f1.0.1 actual
ok 25 - (diff.interHunkContext=1) diff -U0, 1 common line: check output
expecting success of 4032.26 '(diff.interHunkContext=2) diff -U0, 1 common line: count hunks (1)':
test 1 = 1
ok 26 - (diff.interHunkContext=2) diff -U0, 1 common line: count hunks (1)
expecting success of 4032.27 '(diff.interHunkContext=2) diff -U0, 1 common line: check output':
git diff -U0 f1 | grep -v '^index ' >actual &&
test_cmp expected.f1.0.1 actual
ok 27 - (diff.interHunkContext=2) diff -U0, 1 common line: check output
expecting success of 4032.28 '(diff.interHunkContext=3) diff -U3, 9 common lines: count hunks (1)':
test 1 = 1
ok 28 - (diff.interHunkContext=3) diff -U3, 9 common lines: count hunks (1)
expecting success of 4032.29 '(diff.interHunkContext=0) diff -U0, 2 common lines: count hunks (2)':
test 2 = 2
ok 29 - (diff.interHunkContext=0) diff -U0, 2 common lines: count hunks (2)
expecting success of 4032.30 '(diff.interHunkContext=1) diff -U0, 2 common lines: count hunks (2)':
test 2 = 2
ok 30 - (diff.interHunkContext=1) diff -U0, 2 common lines: count hunks (2)
expecting success of 4032.31 '(diff.interHunkContext=2) diff -U0, 2 common lines: count hunks (1)':
test 1 = 1
ok 31 - (diff.interHunkContext=2) diff -U0, 2 common lines: count hunks (1)
expecting success of 4032.32 '(diff.interHunkContext=0) diff -U1, 3 common lines: count hunks (2)':
test 2 = 2
ok 32 - (diff.interHunkContext=0) diff -U1, 3 common lines: count hunks (2)
expecting success of 4032.33 '(diff.interHunkContext=1) diff -U1, 3 common lines: count hunks (1)':
test 1 = 1
ok 33 - (diff.interHunkContext=1) diff -U1, 3 common lines: count hunks (1)
expecting success of 4032.34 '(diff.interHunkContext=2) diff -U1, 3 common lines: count hunks (1)':
test 1 = 1
ok 34 - (diff.interHunkContext=2) diff -U1, 3 common lines: count hunks (1)
expecting success of 4032.35 '(diff.interHunkContext=2) diff -U3, 9 common lines: count hunks (2)':
test 2 = 2
ok 35 - (diff.interHunkContext=2) diff -U3, 9 common lines: count hunks (2)
expecting success of 4032.36 '(diff.interHunkContext=3) diff -U3, 9 common lines: count hunks (1)':
test 1 = 1
ok 36 - (diff.interHunkContext=3) diff -U3, 9 common lines: count hunks (1)
expecting success of 4032.37 'diff.interHunkContext invalid':
git config diff.interHunkContext asdf &&
test_must_fail git diff &&
git config diff.interHunkContext -1 &&
test_must_fail git diff
fatal: bad numeric config value 'asdf' for 'diff.interhunkcontext' in file .git/config: invalid unit
fatal: bad config variable 'diff.interhunkcontext' in file '.git/config' at line 7
ok 37 - diff.interHunkContext invalid
# passed all 37 test(s)
1..37
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4036-format-patch-signer-mime.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4036-format-patch-signer-mime/.git/
expecting success of 4036.1 'setup':
>F &&
git add F &&
git commit -m initial &&
echo new line >F &&
test_tick &&
git commit -m "This adds some lines to F" F
[master (root-commit) bf01fa7] initial
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 F
[master dc5bbb5] This adds some lines to F
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
ok 1 - setup
expecting success of 4036.2 'format normally':
git format-patch --stdout -1 >output &&
! grep Content-Type output
ok 2 - format normally
expecting success of 4036.3 'format with signoff without funny signer name':
git format-patch -s --stdout -1 >output &&
! grep Content-Type output
ok 3 - format with signoff without funny signer name
expecting success of 4036.4 'format with non ASCII signer name':
GIT_COMMITTER_NAME="はまの ふにおう" \
git format-patch -s --stdout -1 >output &&
grep Content-Type output
Content-Type: text/plain; charset=UTF-8
ok 4 - format with non ASCII signer name
expecting success of 4036.5 'attach and signoff do not duplicate mime headers':
GIT_COMMITTER_NAME="はまの ふにおう" \
git format-patch -s --stdout -1 --attach >output &&
test $(grep -ci ^MIME-Version: output) = 1
ok 5 - attach and signoff do not duplicate mime headers
# passed all 5 test(s)
1..5
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4035-diff-quiet.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4035-diff-quiet/.git/
expecting success of 4035.1 'setup':
echo 1 >a &&
git add . &&
git commit -m first &&
echo 2 >b &&
git add . &&
git commit -a -m second &&
mkdir -p test-outside/repo && (
cd test-outside/repo &&
git init &&
echo "1 1" >a &&
git add . &&
git commit -m 1
) &&
mkdir -p test-outside/non/git && (
cd test-outside/non/git &&
echo "1 1" >a &&
echo "1 1" >matching-file &&
echo "1 1 " >trailing-space &&
echo "1 1" >extra-space &&
echo "2" >never-match
)
[master (root-commit) 703ec9e] first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 a
[master 3476b69] second
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 b
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4035-diff-quiet/test-outside/repo/.git/
[master (root-commit) f9eeef1] 1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 a
ok 1 - setup
expecting success of 4035.2 'git diff-tree HEAD^ HEAD':
test_expect_code 1 git diff-tree --quiet HEAD^ HEAD >cnt &&
test_line_count = 0 cnt
ok 2 - git diff-tree HEAD^ HEAD
expecting success of 4035.3 'git diff-tree HEAD^ HEAD -- a':
test_expect_code 0 git diff-tree --quiet HEAD^ HEAD -- a >cnt &&
test_line_count = 0 cnt
ok 3 - git diff-tree HEAD^ HEAD -- a
expecting success of 4035.4 'git diff-tree HEAD^ HEAD -- b':
test_expect_code 1 git diff-tree --quiet HEAD^ HEAD -- b >cnt &&
test_line_count = 0 cnt
ok 4 - git diff-tree HEAD^ HEAD -- b
expecting success of 4035.5 'echo HEAD | git diff-tree --stdin':
echo $(git rev-parse HEAD) |
test_expect_code 1 git diff-tree --quiet --stdin >cnt &&
test_line_count = 1 cnt
ok 5 - echo HEAD | git diff-tree --stdin
expecting success of 4035.6 'git diff-tree HEAD HEAD':
test_expect_code 0 git diff-tree --quiet HEAD HEAD >cnt &&
test_line_count = 0 cnt
ok 6 - git diff-tree HEAD HEAD
expecting success of 4035.7 'git diff-files':
test_expect_code 0 git diff-files --quiet >cnt &&
test_line_count = 0 cnt
ok 7 - git diff-files
expecting success of 4035.8 'git diff-index --cached HEAD':
test_expect_code 0 git diff-index --quiet --cached HEAD >cnt &&
test_line_count = 0 cnt
ok 8 - git diff-index --cached HEAD
expecting success of 4035.9 'git diff-index --cached HEAD^':
test_expect_code 1 git diff-index --quiet --cached HEAD^ >cnt &&
test_line_count = 0 cnt
ok 9 - git diff-index --cached HEAD^
expecting success of 4035.10 'git diff-index --cached HEAD^':
echo text >>b &&
echo 3 >c &&
git add . &&
test_expect_code 1 git diff-index --quiet --cached HEAD^ >cnt &&
test_line_count = 0 cnt
warning: adding embedded git repository: test-outside/repo
hint: You've added another git repository inside your current repository.
hint: Clones of the outer repository will not contain the contents of
hint: the embedded repository and will not know how to obtain it.
hint: If you meant to add a submodule, use:
hint:
hint: git submodule add <url> test-outside/repo
hint:
hint: If you added this path by mistake, you can remove it from the
hint: index with:
hint:
hint: git rm --cached test-outside/repo
hint:
hint: See "git help submodule" for more information.
ok 10 - git diff-index --cached HEAD^
expecting success of 4035.11 'git diff-tree -Stext HEAD^ HEAD -- b':
git commit -m "text in b" &&
test_expect_code 1 git diff-tree --quiet -Stext HEAD^ HEAD -- b >cnt &&
test_line_count = 0 cnt
[master b583ee2] text in b
Author: A U Thor <author@example.com>
9 files changed, 8 insertions(+)
create mode 100644 c
create mode 100644 cnt
create mode 100644 test-outside/non/git/a
create mode 100644 test-outside/non/git/extra-space
create mode 100644 test-outside/non/git/matching-file
create mode 100644 test-outside/non/git/never-match
create mode 100644 test-outside/non/git/trailing-space
create mode 160000 test-outside/repo
ok 11 - git diff-tree -Stext HEAD^ HEAD -- b
expecting success of 4035.12 'git diff-tree -Snot-found HEAD^ HEAD -- b':
test_expect_code 0 git diff-tree --quiet -Snot-found HEAD^ HEAD -- b >cnt &&
test_line_count = 0 cnt
ok 12 - git diff-tree -Snot-found HEAD^ HEAD -- b
expecting success of 4035.13 'git diff-files':
echo 3 >>c &&
test_expect_code 1 git diff-files --quiet >cnt &&
test_line_count = 0 cnt
ok 13 - git diff-files
expecting success of 4035.14 'git diff-index --cached HEAD':
git update-index c &&
test_expect_code 1 git diff-index --quiet --cached HEAD >cnt &&
test_line_count = 0 cnt
ok 14 - git diff-index --cached HEAD
expecting success of 4035.15 'git diff, one file outside repo':
(
cd test-outside/repo &&
test_expect_code 0 git diff --quiet a ../non/git/matching-file &&
test_expect_code 1 git diff --quiet a ../non/git/extra-space
)
ok 15 - git diff, one file outside repo
expecting success of 4035.16 'git diff, both files outside repo':
(
GIT_CEILING_DIRECTORIES="$TRASH_DIRECTORY/test-outside" &&
export GIT_CEILING_DIRECTORIES &&
cd test-outside/non/git &&
test_expect_code 0 git diff --quiet a matching-file &&
test_expect_code 1 git diff --quiet a extra-space
)
ok 16 - git diff, both files outside repo
expecting success of 4035.17 'git diff --ignore-space-at-eol, one file outside repo':
(
cd test-outside/repo &&
test_expect_code 0 git diff --quiet --ignore-space-at-eol a ../non/git/trailing-space &&
test_expect_code 1 git diff --quiet --ignore-space-at-eol a ../non/git/extra-space
)
ok 17 - git diff --ignore-space-at-eol, one file outside repo
expecting success of 4035.18 'git diff --ignore-space-at-eol, both files outside repo':
(
GIT_CEILING_DIRECTORIES="$TRASH_DIRECTORY/test-outside" &&
export GIT_CEILING_DIRECTORIES &&
cd test-outside/non/git &&
test_expect_code 0 git diff --quiet --ignore-space-at-eol a trailing-space &&
test_expect_code 1 git diff --quiet --ignore-space-at-eol a extra-space
)
ok 18 - git diff --ignore-space-at-eol, both files outside repo
expecting success of 4035.19 'git diff --ignore-all-space, one file outside repo':
(
cd test-outside/repo &&
test_expect_code 0 git diff --quiet --ignore-all-space a ../non/git/trailing-space &&
test_expect_code 0 git diff --quiet --ignore-all-space a ../non/git/extra-space &&
test_expect_code 1 git diff --quiet --ignore-all-space a ../non/git/never-match
)
ok 19 - git diff --ignore-all-space, one file outside repo
expecting success of 4035.20 'git diff --ignore-all-space, both files outside repo':
(
GIT_CEILING_DIRECTORIES="$TRASH_DIRECTORY/test-outside" &&
export GIT_CEILING_DIRECTORIES &&
cd test-outside/non/git &&
test_expect_code 0 git diff --quiet --ignore-all-space a trailing-space &&
test_expect_code 0 git diff --quiet --ignore-all-space a extra-space &&
test_expect_code 1 git diff --quiet --ignore-all-space a never-match
)
ok 20 - git diff --ignore-all-space, both files outside repo
expecting success of 4035.21 'git diff --quiet ignores stat-change only entries':
test-tool chmtime +10 a &&
echo modified >>b &&
test_expect_code 1 git diff --quiet
ok 21 - git diff --quiet ignores stat-change only entries
expecting success of 4035.22 'git diff --quiet on a path that need conversion':
echo "crlf.txt text=auto" >.gitattributes &&
printf "Hello\r\nWorld\r\n" >crlf.txt &&
git add .gitattributes crlf.txt &&
printf "Hello\r\nWorld\n" >crlf.txt &&
git diff --quiet crlf.txt
warning: in the working copy of 'crlf.txt', CRLF will be replaced by LF the next time Git touches it
warning: in the working copy of 'crlf.txt', CRLF will be replaced by LF the next time Git touches it
ok 22 - git diff --quiet on a path that need conversion
# passed all 22 test(s)
1..22
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4037-diff-r-t-dirs.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4037-diff-r-t-dirs/.git/
expecting success of 4037.1 'setup':
mkdir dc dr dt &&
>dc/1 &&
>dr/2 &&
>dt/3 &&
>fc &&
>fr &&
>ft &&
git add . &&
test_tick &&
git commit -m initial &&
rm -fr dt dr ft fr &&
mkdir da ft &&
for p in dc/1 da/4 dt ft/5 fc
do
echo hello >$p || exit
done &&
git add -u &&
git add . &&
test_tick &&
git commit -m second
[master (root-commit) 26fc746] initial
Author: A U Thor <author@example.com>
6 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 dc/1
create mode 100644 dr/2
create mode 100644 dt/3
create mode 100644 fc
create mode 100644 fr
create mode 100644 ft
[master 25e238e] second
Author: A U Thor <author@example.com>
9 files changed, 5 insertions(+)
create mode 100644 da/4
delete mode 100644 dr/2
create mode 100644 dt
delete mode 100644 dt/3
delete mode 100644 fr
delete mode 100644 ft
create mode 100644 ft/5
ok 1 - setup
expecting success of 4037.2 'verify':
git diff-tree -r -t --name-status HEAD^ HEAD >actual &&
test_cmp expect actual
ok 2 - verify
# passed all 2 test(s)
1..2
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4039-diff-assume-unchanged.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4039-diff-assume-unchanged/.git/
expecting success of 4039.1 'setup':
echo zero > zero &&
git add zero &&
git commit -m zero &&
echo one > one &&
echo two > two &&
blob=$(git hash-object one) &&
git add one two &&
git commit -m onetwo &&
git update-index --assume-unchanged one &&
echo borked >> one &&
test "$(git ls-files -v one)" = "h one"
[master (root-commit) fbf511c] zero
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 zero
[master 3144717] onetwo
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 one
create mode 100644 two
ok 1 - setup
expecting success of 4039.2 'diff-index does not examine assume-unchanged entries':
git diff-index HEAD^ -- one | grep -q $blob
ok 2 - diff-index does not examine assume-unchanged entries
expecting success of 4039.3 'diff-files does not examine assume-unchanged entries':
rm one &&
test -z "$(git diff-files -- one)"
ok 3 - diff-files does not examine assume-unchanged entries
expecting success of 4039.4 'find-copies-harder is not confused by mode bits':
echo content >exec &&
chmod +x exec &&
git add exec &&
git commit -m exec &&
git update-index --assume-unchanged exec &&
git diff-files --find-copies-harder -- exec >actual &&
test_must_be_empty actual
[master 4cf4df7] exec
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100755 exec
ok 4 - find-copies-harder is not confused by mode bits
# passed all 4 test(s)
1..4
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4040-whitespace-status.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4040-whitespace-status/.git/
expecting success of 4040.1 'setup':
mkdir a b &&
echo >c &&
echo >a/d &&
echo >b/e &&
git add . &&
test_tick &&
git commit -m initial &&
echo " " >a/d &&
test_tick &&
git commit -a -m second &&
echo " " >a/d &&
echo " " >b/e &&
git add a/d
[master (root-commit) b80f2e3] initial
Author: A U Thor <author@example.com>
3 files changed, 3 insertions(+)
create mode 100644 a/d
create mode 100644 b/e
create mode 100644 c
[master 13a0478] second
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 1 - setup
expecting success of 4040.2 'diff-tree --exit-code':
test_must_fail git diff --exit-code HEAD^ HEAD &&
test_must_fail git diff-tree --exit-code HEAD^ HEAD
diff --git a/a/d b/a/d
index 8b13789..8d1c8b6 100644
--- a/a/d
+++ b/a/d
@@ -1 +1 @@
-
+
:040000 040000 13061aad4970f02b314943ec46981e9ef332cae2 ac592974c686387705f2617b895d6585cc0a0d46 M a
ok 2 - diff-tree --exit-code
expecting success of 4040.3 'diff-tree -b --exit-code':
git diff -b --exit-code HEAD^ HEAD &&
git diff-tree -b -p --exit-code HEAD^ HEAD &&
git diff-tree -b --exit-code HEAD^ HEAD
:040000 040000 13061aad4970f02b314943ec46981e9ef332cae2 ac592974c686387705f2617b895d6585cc0a0d46 M a
ok 3 - diff-tree -b --exit-code
expecting success of 4040.4 'diff-index --cached --exit-code':
test_must_fail git diff --cached --exit-code HEAD &&
test_must_fail git diff-index --cached --exit-code HEAD
diff --git a/a/d b/a/d
index 8d1c8b6..1a4baf5 100644
--- a/a/d
+++ b/a/d
@@ -1 +1 @@
-
+
:100644 100644 8d1c8b69c3fce7bea45c73efd06983e3c419a92f 1a4baf536d705b9c814847cb7a708a0e63d5b976 M a/d
ok 4 - diff-index --cached --exit-code
expecting success of 4040.5 'diff-index -b -p --cached --exit-code':
git diff -b --cached --exit-code HEAD &&
git diff-index -b -p --cached --exit-code HEAD
ok 5 - diff-index -b -p --cached --exit-code
expecting success of 4040.6 'diff-index --exit-code':
test_must_fail git diff --exit-code HEAD &&
test_must_fail git diff-index --exit-code HEAD
diff --git a/a/d b/a/d
index 8d1c8b6..1a4baf5 100644
--- a/a/d
+++ b/a/d
@@ -1 +1 @@
-
+
diff --git a/b/e b/b/e
index 8b13789..8d1c8b6 100644
--- a/b/e
+++ b/b/e
@@ -1 +1 @@
-
+
:100644 100644 8d1c8b69c3fce7bea45c73efd06983e3c419a92f 1a4baf536d705b9c814847cb7a708a0e63d5b976 M a/d
:100644 100644 8b137891791fe96927ad78e64b0aad7bded08bdc 0000000000000000000000000000000000000000 M b/e
ok 6 - diff-index --exit-code
expecting success of 4040.7 'diff-index -b -p --exit-code':
git diff -b --exit-code HEAD &&
git diff-index -b -p --exit-code HEAD
ok 7 - diff-index -b -p --exit-code
expecting success of 4040.8 'diff-files --exit-code':
test_must_fail git diff --exit-code &&
test_must_fail git diff-files --exit-code
diff --git a/b/e b/b/e
index 8b13789..8d1c8b6 100644
--- a/b/e
+++ b/b/e
@@ -1 +1 @@
-
+
:100644 100644 8b137891791fe96927ad78e64b0aad7bded08bdc 0000000000000000000000000000000000000000 M b/e
ok 8 - diff-files --exit-code
expecting success of 4040.9 'diff-files -b -p --exit-code':
git diff -b --exit-code &&
git diff-files -b -p --exit-code
ok 9 - diff-files -b -p --exit-code
expecting success of 4040.10 'diff-files --diff-filter --quiet':
git reset --hard &&
rm a/d &&
echo x >>b/e &&
test_must_fail git diff-files --diff-filter=M --quiet
HEAD is now at 13a0478 second
ok 10 - diff-files --diff-filter --quiet
expecting success of 4040.11 'diff-tree --diff-filter --quiet':
git commit -a -m "worktree state" &&
test_must_fail git diff-tree --diff-filter=M --quiet HEAD^ HEAD
[master c0a31dc] worktree state
Author: A U Thor <author@example.com>
2 files changed, 1 insertion(+), 1 deletion(-)
delete mode 100644 a/d
ok 11 - diff-tree --diff-filter --quiet
# passed all 11 test(s)
1..11
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4018-diff-funcname.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4018-diff-funcname/.git/
expecting success of 4018.1 'setup':
# a non-trivial custom pattern
git config diff.custom1.funcname "!static
!String
[^ ].*s.*" &&
# a custom pattern which matches to end of line
git config diff.custom2.funcname "......Beer\$" &&
# alternation in pattern
git config diff.custom3.funcname "Beer$" &&
git config diff.custom3.xfuncname "^[ ]*((public|static).*)$" &&
# for regexp compilation tests
echo A >A.java &&
echo B >B.java
ok 1 - setup
expecting success of 4018.2 'setup: test-tool userdiff':
# Make sure additions to builtin_drivers are sorted
test_when_finished "rm builtin-drivers.sorted" &&
test-tool userdiff list-builtin-drivers >builtin-drivers &&
test_file_not_empty builtin-drivers &&
sort <builtin-drivers >builtin-drivers.sorted &&
test_cmp builtin-drivers.sorted builtin-drivers &&
# Ditto, but "custom" requires the .git directory and config
# to be setup and read.
test_when_finished "rm custom-drivers.sorted" &&
test-tool userdiff list-custom-drivers >custom-drivers &&
test_file_not_empty custom-drivers &&
sort <custom-drivers >custom-drivers.sorted &&
test_cmp custom-drivers.sorted custom-drivers
ok 2 - setup: test-tool userdiff
expecting success of 4018.3 'builtin ada pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 3 - builtin ada pattern compiles
expecting success of 4018.4 'builtin ada wordRegex pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index --word-diff \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
[-A-]{+B+}
ok 4 - builtin ada wordRegex pattern compiles
expecting success of 4018.5 'builtin ada pattern compiles on bare repo with --attr-source':
test_when_finished "rm -rf bare.git" &&
git checkout -B master &&
git add . &&
echo "*.java diff=notexist" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git checkout -B branchA &&
echo "*.java diff=$p" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git clone --bare --no-local . bare.git &&
git -C bare.git symbolic-ref HEAD refs/heads/master &&
test_expect_code 1 git -C bare.git --attr-source=branchA \
diff --exit-code HEAD:A.java HEAD:B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
Switched to a new branch 'master'
[master (root-commit) 09f480a] changing gitattributes
Author: A U Thor <author@example.com>
6 files changed, 31 insertions(+)
create mode 100644 .gitattributes
create mode 100644 A.java
create mode 100644 B.java
create mode 100644 builtin-drivers
create mode 100644 custom-drivers
create mode 100644 msg
Switched to a new branch 'branchA'
[branchA d2d1668] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Cloning into bare repository 'bare.git'...
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 5 - builtin ada pattern compiles on bare repo with --attr-source
expecting success of 4018.6 'builtin bash pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 6 - builtin bash pattern compiles
expecting success of 4018.7 'builtin bash wordRegex pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index --word-diff \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
[-A-]{+B+}
ok 7 - builtin bash wordRegex pattern compiles
expecting success of 4018.8 'builtin bash pattern compiles on bare repo with --attr-source':
test_when_finished "rm -rf bare.git" &&
git checkout -B master &&
git add . &&
echo "*.java diff=notexist" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git checkout -B branchA &&
echo "*.java diff=$p" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git clone --bare --no-local . bare.git &&
git -C bare.git symbolic-ref HEAD refs/heads/master &&
test_expect_code 1 git -C bare.git --attr-source=branchA \
diff --exit-code HEAD:A.java HEAD:B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
Switched to and reset branch 'master'
M .gitattributes
[master 76aba7f] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to and reset branch 'branchA'
[branchA 2a04301] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Cloning into bare repository 'bare.git'...
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 8 - builtin bash pattern compiles on bare repo with --attr-source
expecting success of 4018.9 'builtin bibtex pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 9 - builtin bibtex pattern compiles
expecting success of 4018.10 'builtin bibtex wordRegex pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index --word-diff \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
[-A-]{+B+}
ok 10 - builtin bibtex wordRegex pattern compiles
expecting success of 4018.11 'builtin bibtex pattern compiles on bare repo with --attr-source':
test_when_finished "rm -rf bare.git" &&
git checkout -B master &&
git add . &&
echo "*.java diff=notexist" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git checkout -B branchA &&
echo "*.java diff=$p" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git clone --bare --no-local . bare.git &&
git -C bare.git symbolic-ref HEAD refs/heads/master &&
test_expect_code 1 git -C bare.git --attr-source=branchA \
diff --exit-code HEAD:A.java HEAD:B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
Switched to and reset branch 'master'
M .gitattributes
[master 07560b6] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to and reset branch 'branchA'
[branchA 3d6becf] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Cloning into bare repository 'bare.git'...
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 11 - builtin bibtex pattern compiles on bare repo with --attr-source
expecting success of 4018.12 'builtin cpp pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 12 - builtin cpp pattern compiles
expecting success of 4018.13 'builtin cpp wordRegex pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index --word-diff \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
[-A-]{+B+}
ok 13 - builtin cpp wordRegex pattern compiles
expecting success of 4018.14 'builtin cpp pattern compiles on bare repo with --attr-source':
test_when_finished "rm -rf bare.git" &&
git checkout -B master &&
git add . &&
echo "*.java diff=notexist" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git checkout -B branchA &&
echo "*.java diff=$p" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git clone --bare --no-local . bare.git &&
git -C bare.git symbolic-ref HEAD refs/heads/master &&
test_expect_code 1 git -C bare.git --attr-source=branchA \
diff --exit-code HEAD:A.java HEAD:B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
Switched to and reset branch 'master'
M .gitattributes
[master 421387d] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to and reset branch 'branchA'
[branchA 41525d0] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Cloning into bare repository 'bare.git'...
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 14 - builtin cpp pattern compiles on bare repo with --attr-source
expecting success of 4018.15 'builtin csharp pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 15 - builtin csharp pattern compiles
expecting success of 4018.16 'builtin csharp wordRegex pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index --word-diff \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
[-A-]{+B+}
ok 16 - builtin csharp wordRegex pattern compiles
expecting success of 4018.17 'builtin csharp pattern compiles on bare repo with --attr-source':
test_when_finished "rm -rf bare.git" &&
git checkout -B master &&
git add . &&
echo "*.java diff=notexist" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git checkout -B branchA &&
echo "*.java diff=$p" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git clone --bare --no-local . bare.git &&
git -C bare.git symbolic-ref HEAD refs/heads/master &&
test_expect_code 1 git -C bare.git --attr-source=branchA \
diff --exit-code HEAD:A.java HEAD:B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
Switched to and reset branch 'master'
M .gitattributes
[master 1baa7f2] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to and reset branch 'branchA'
[branchA c0f2914] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Cloning into bare repository 'bare.git'...
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 17 - builtin csharp pattern compiles on bare repo with --attr-source
expecting success of 4018.18 'builtin css pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 18 - builtin css pattern compiles
expecting success of 4018.19 'builtin css wordRegex pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index --word-diff \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
[-A-]{+B+}
ok 19 - builtin css wordRegex pattern compiles
expecting success of 4018.20 'builtin css pattern compiles on bare repo with --attr-source':
test_when_finished "rm -rf bare.git" &&
git checkout -B master &&
git add . &&
echo "*.java diff=notexist" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git checkout -B branchA &&
echo "*.java diff=$p" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git clone --bare --no-local . bare.git &&
git -C bare.git symbolic-ref HEAD refs/heads/master &&
test_expect_code 1 git -C bare.git --attr-source=branchA \
diff --exit-code HEAD:A.java HEAD:B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
Switched to and reset branch 'master'
M .gitattributes
[master 5bdd255] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to and reset branch 'branchA'
[branchA 54fe80d] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Cloning into bare repository 'bare.git'...
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 20 - builtin css pattern compiles on bare repo with --attr-source
expecting success of 4018.21 'builtin dts pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 21 - builtin dts pattern compiles
expecting success of 4018.22 'builtin dts wordRegex pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index --word-diff \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
[-A-]{+B+}
ok 22 - builtin dts wordRegex pattern compiles
expecting success of 4018.23 'builtin dts pattern compiles on bare repo with --attr-source':
test_when_finished "rm -rf bare.git" &&
git checkout -B master &&
git add . &&
echo "*.java diff=notexist" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git checkout -B branchA &&
echo "*.java diff=$p" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git clone --bare --no-local . bare.git &&
git -C bare.git symbolic-ref HEAD refs/heads/master &&
test_expect_code 1 git -C bare.git --attr-source=branchA \
diff --exit-code HEAD:A.java HEAD:B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
Switched to and reset branch 'master'
M .gitattributes
[master aa94590] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to and reset branch 'branchA'
[branchA 0284640] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Cloning into bare repository 'bare.git'...
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 23 - builtin dts pattern compiles on bare repo with --attr-source
expecting success of 4018.24 'builtin elixir pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 24 - builtin elixir pattern compiles
expecting success of 4018.25 'builtin elixir wordRegex pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index --word-diff \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
[-A-]{+B+}
ok 25 - builtin elixir wordRegex pattern compiles
expecting success of 4018.26 'builtin elixir pattern compiles on bare repo with --attr-source':
test_when_finished "rm -rf bare.git" &&
git checkout -B master &&
git add . &&
echo "*.java diff=notexist" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git checkout -B branchA &&
echo "*.java diff=$p" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git clone --bare --no-local . bare.git &&
git -C bare.git symbolic-ref HEAD refs/heads/master &&
test_expect_code 1 git -C bare.git --attr-source=branchA \
diff --exit-code HEAD:A.java HEAD:B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
Switched to and reset branch 'master'
M .gitattributes
[master 91672cc] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to and reset branch 'branchA'
[branchA b439317] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Cloning into bare repository 'bare.git'...
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 26 - builtin elixir pattern compiles on bare repo with --attr-source
expecting success of 4018.27 'builtin fortran pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 27 - builtin fortran pattern compiles
expecting success of 4018.28 'builtin fortran wordRegex pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index --word-diff \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
[-A-]{+B+}
ok 28 - builtin fortran wordRegex pattern compiles
expecting success of 4018.29 'builtin fortran pattern compiles on bare repo with --attr-source':
test_when_finished "rm -rf bare.git" &&
git checkout -B master &&
git add . &&
echo "*.java diff=notexist" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git checkout -B branchA &&
echo "*.java diff=$p" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git clone --bare --no-local . bare.git &&
git -C bare.git symbolic-ref HEAD refs/heads/master &&
test_expect_code 1 git -C bare.git --attr-source=branchA \
diff --exit-code HEAD:A.java HEAD:B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
Switched to and reset branch 'master'
M .gitattributes
[master 07df8aa] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to and reset branch 'branchA'
[branchA d0563d5] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Cloning into bare repository 'bare.git'...
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 29 - builtin fortran pattern compiles on bare repo with --attr-source
expecting success of 4018.30 'builtin fountain pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 30 - builtin fountain pattern compiles
expecting success of 4018.31 'builtin fountain wordRegex pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index --word-diff \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
[-A-]{+B+}
ok 31 - builtin fountain wordRegex pattern compiles
expecting success of 4018.32 'builtin fountain pattern compiles on bare repo with --attr-source':
test_when_finished "rm -rf bare.git" &&
git checkout -B master &&
git add . &&
echo "*.java diff=notexist" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git checkout -B branchA &&
echo "*.java diff=$p" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git clone --bare --no-local . bare.git &&
git -C bare.git symbolic-ref HEAD refs/heads/master &&
test_expect_code 1 git -C bare.git --attr-source=branchA \
diff --exit-code HEAD:A.java HEAD:B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
Switched to and reset branch 'master'
M .gitattributes
[master fe25a8f] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to and reset branch 'branchA'
[branchA 9c43ead] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Cloning into bare repository 'bare.git'...
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 32 - builtin fountain pattern compiles on bare repo with --attr-source
expecting success of 4018.33 'builtin golang pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 33 - builtin golang pattern compiles
expecting success of 4018.34 'builtin golang wordRegex pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index --word-diff \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
[-A-]{+B+}
ok 34 - builtin golang wordRegex pattern compiles
expecting success of 4018.35 'builtin golang pattern compiles on bare repo with --attr-source':
test_when_finished "rm -rf bare.git" &&
git checkout -B master &&
git add . &&
echo "*.java diff=notexist" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git checkout -B branchA &&
echo "*.java diff=$p" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git clone --bare --no-local . bare.git &&
git -C bare.git symbolic-ref HEAD refs/heads/master &&
test_expect_code 1 git -C bare.git --attr-source=branchA \
diff --exit-code HEAD:A.java HEAD:B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
Switched to and reset branch 'master'
M .gitattributes
[master 4856536] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to and reset branch 'branchA'
[branchA e93a5a9] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Cloning into bare repository 'bare.git'...
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 35 - builtin golang pattern compiles on bare repo with --attr-source
expecting success of 4018.36 'builtin html pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 36 - builtin html pattern compiles
expecting success of 4018.37 'builtin html wordRegex pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index --word-diff \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
[-A-]{+B+}
ok 37 - builtin html wordRegex pattern compiles
expecting success of 4018.38 'builtin html pattern compiles on bare repo with --attr-source':
test_when_finished "rm -rf bare.git" &&
git checkout -B master &&
git add . &&
echo "*.java diff=notexist" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git checkout -B branchA &&
echo "*.java diff=$p" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git clone --bare --no-local . bare.git &&
git -C bare.git symbolic-ref HEAD refs/heads/master &&
test_expect_code 1 git -C bare.git --attr-source=branchA \
diff --exit-code HEAD:A.java HEAD:B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
Switched to and reset branch 'master'
M .gitattributes
[master da316a7] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to and reset branch 'branchA'
[branchA 0c6bd19] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Cloning into bare repository 'bare.git'...
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 38 - builtin html pattern compiles on bare repo with --attr-source
expecting success of 4018.39 'builtin java pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 39 - builtin java pattern compiles
expecting success of 4018.40 'builtin java wordRegex pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index --word-diff \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
[-A-]{+B+}
ok 40 - builtin java wordRegex pattern compiles
expecting success of 4018.41 'builtin java pattern compiles on bare repo with --attr-source':
test_when_finished "rm -rf bare.git" &&
git checkout -B master &&
git add . &&
echo "*.java diff=notexist" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git checkout -B branchA &&
echo "*.java diff=$p" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git clone --bare --no-local . bare.git &&
git -C bare.git symbolic-ref HEAD refs/heads/master &&
test_expect_code 1 git -C bare.git --attr-source=branchA \
diff --exit-code HEAD:A.java HEAD:B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
Switched to and reset branch 'master'
M .gitattributes
[master c684627] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to and reset branch 'branchA'
[branchA dc9d6db] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Cloning into bare repository 'bare.git'...
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 41 - builtin java pattern compiles on bare repo with --attr-source
expecting success of 4018.42 'builtin kotlin pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 42 - builtin kotlin pattern compiles
expecting success of 4018.43 'builtin kotlin wordRegex pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index --word-diff \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
[-A-]{+B+}
ok 43 - builtin kotlin wordRegex pattern compiles
expecting success of 4018.44 'builtin kotlin pattern compiles on bare repo with --attr-source':
test_when_finished "rm -rf bare.git" &&
git checkout -B master &&
git add . &&
echo "*.java diff=notexist" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git checkout -B branchA &&
echo "*.java diff=$p" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git clone --bare --no-local . bare.git &&
git -C bare.git symbolic-ref HEAD refs/heads/master &&
test_expect_code 1 git -C bare.git --attr-source=branchA \
diff --exit-code HEAD:A.java HEAD:B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
Switched to and reset branch 'master'
M .gitattributes
[master fba906f] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to and reset branch 'branchA'
[branchA 411b675] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Cloning into bare repository 'bare.git'...
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 44 - builtin kotlin pattern compiles on bare repo with --attr-source
expecting success of 4018.45 'builtin markdown pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 45 - builtin markdown pattern compiles
expecting success of 4018.46 'builtin markdown wordRegex pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index --word-diff \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
[-A-]{+B+}
ok 46 - builtin markdown wordRegex pattern compiles
expecting success of 4018.47 'builtin markdown pattern compiles on bare repo with --attr-source':
test_when_finished "rm -rf bare.git" &&
git checkout -B master &&
git add . &&
echo "*.java diff=notexist" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git checkout -B branchA &&
echo "*.java diff=$p" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git clone --bare --no-local . bare.git &&
git -C bare.git symbolic-ref HEAD refs/heads/master &&
test_expect_code 1 git -C bare.git --attr-source=branchA \
diff --exit-code HEAD:A.java HEAD:B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
Switched to and reset branch 'master'
M .gitattributes
[master a36ac80] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to and reset branch 'branchA'
[branchA b175325] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Cloning into bare repository 'bare.git'...
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 47 - builtin markdown pattern compiles on bare repo with --attr-source
expecting success of 4018.48 'builtin matlab pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 48 - builtin matlab pattern compiles
expecting success of 4018.49 'builtin matlab wordRegex pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index --word-diff \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
[-A-]{+B+}
ok 49 - builtin matlab wordRegex pattern compiles
expecting success of 4018.50 'builtin matlab pattern compiles on bare repo with --attr-source':
test_when_finished "rm -rf bare.git" &&
git checkout -B master &&
git add . &&
echo "*.java diff=notexist" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git checkout -B branchA &&
echo "*.java diff=$p" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git clone --bare --no-local . bare.git &&
git -C bare.git symbolic-ref HEAD refs/heads/master &&
test_expect_code 1 git -C bare.git --attr-source=branchA \
diff --exit-code HEAD:A.java HEAD:B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
Switched to and reset branch 'master'
M .gitattributes
[master 4125614] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to and reset branch 'branchA'
[branchA 96677f0] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Cloning into bare repository 'bare.git'...
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 50 - builtin matlab pattern compiles on bare repo with --attr-source
expecting success of 4018.51 'builtin objc pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 51 - builtin objc pattern compiles
expecting success of 4018.52 'builtin objc wordRegex pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index --word-diff \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
[-A-]{+B+}
ok 52 - builtin objc wordRegex pattern compiles
expecting success of 4018.53 'builtin objc pattern compiles on bare repo with --attr-source':
test_when_finished "rm -rf bare.git" &&
git checkout -B master &&
git add . &&
echo "*.java diff=notexist" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git checkout -B branchA &&
echo "*.java diff=$p" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git clone --bare --no-local . bare.git &&
git -C bare.git symbolic-ref HEAD refs/heads/master &&
test_expect_code 1 git -C bare.git --attr-source=branchA \
diff --exit-code HEAD:A.java HEAD:B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
Switched to and reset branch 'master'
M .gitattributes
[master 542b906] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to and reset branch 'branchA'
[branchA 40e9567] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Cloning into bare repository 'bare.git'...
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 53 - builtin objc pattern compiles on bare repo with --attr-source
expecting success of 4018.54 'builtin pascal pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 54 - builtin pascal pattern compiles
expecting success of 4018.55 'builtin pascal wordRegex pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index --word-diff \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
[-A-]{+B+}
ok 55 - builtin pascal wordRegex pattern compiles
expecting success of 4018.56 'builtin pascal pattern compiles on bare repo with --attr-source':
test_when_finished "rm -rf bare.git" &&
git checkout -B master &&
git add . &&
echo "*.java diff=notexist" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git checkout -B branchA &&
echo "*.java diff=$p" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git clone --bare --no-local . bare.git &&
git -C bare.git symbolic-ref HEAD refs/heads/master &&
test_expect_code 1 git -C bare.git --attr-source=branchA \
diff --exit-code HEAD:A.java HEAD:B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
Switched to and reset branch 'master'
M .gitattributes
[master 0e8818e] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to and reset branch 'branchA'
[branchA 7f3b5d9] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Cloning into bare repository 'bare.git'...
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 56 - builtin pascal pattern compiles on bare repo with --attr-source
expecting success of 4018.57 'builtin perl pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 57 - builtin perl pattern compiles
expecting success of 4018.58 'builtin perl wordRegex pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index --word-diff \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
[-A-]{+B+}
ok 58 - builtin perl wordRegex pattern compiles
expecting success of 4018.59 'builtin perl pattern compiles on bare repo with --attr-source':
test_when_finished "rm -rf bare.git" &&
git checkout -B master &&
git add . &&
echo "*.java diff=notexist" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git checkout -B branchA &&
echo "*.java diff=$p" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git clone --bare --no-local . bare.git &&
git -C bare.git symbolic-ref HEAD refs/heads/master &&
test_expect_code 1 git -C bare.git --attr-source=branchA \
diff --exit-code HEAD:A.java HEAD:B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
Switched to and reset branch 'master'
M .gitattributes
[master ada864b] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to and reset branch 'branchA'
[branchA 6fd3d2c] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Cloning into bare repository 'bare.git'...
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 59 - builtin perl pattern compiles on bare repo with --attr-source
expecting success of 4018.60 'builtin php pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 60 - builtin php pattern compiles
expecting success of 4018.61 'builtin php wordRegex pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index --word-diff \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
[-A-]{+B+}
ok 61 - builtin php wordRegex pattern compiles
expecting success of 4018.62 'builtin php pattern compiles on bare repo with --attr-source':
test_when_finished "rm -rf bare.git" &&
git checkout -B master &&
git add . &&
echo "*.java diff=notexist" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git checkout -B branchA &&
echo "*.java diff=$p" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git clone --bare --no-local . bare.git &&
git -C bare.git symbolic-ref HEAD refs/heads/master &&
test_expect_code 1 git -C bare.git --attr-source=branchA \
diff --exit-code HEAD:A.java HEAD:B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
Switched to and reset branch 'master'
M .gitattributes
[master a9c476a] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to and reset branch 'branchA'
[branchA 9141fd7] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Cloning into bare repository 'bare.git'...
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 62 - builtin php pattern compiles on bare repo with --attr-source
expecting success of 4018.63 'builtin python pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 63 - builtin python pattern compiles
expecting success of 4018.64 'builtin python wordRegex pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index --word-diff \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
[-A-]{+B+}
ok 64 - builtin python wordRegex pattern compiles
expecting success of 4018.65 'builtin python pattern compiles on bare repo with --attr-source':
test_when_finished "rm -rf bare.git" &&
git checkout -B master &&
git add . &&
echo "*.java diff=notexist" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git checkout -B branchA &&
echo "*.java diff=$p" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git clone --bare --no-local . bare.git &&
git -C bare.git symbolic-ref HEAD refs/heads/master &&
test_expect_code 1 git -C bare.git --attr-source=branchA \
diff --exit-code HEAD:A.java HEAD:B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
Switched to and reset branch 'master'
M .gitattributes
[master ad7b0c8] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to and reset branch 'branchA'
[branchA 9820662] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Cloning into bare repository 'bare.git'...
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 65 - builtin python pattern compiles on bare repo with --attr-source
expecting success of 4018.66 'builtin ruby pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 66 - builtin ruby pattern compiles
expecting success of 4018.67 'builtin ruby wordRegex pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index --word-diff \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
[-A-]{+B+}
ok 67 - builtin ruby wordRegex pattern compiles
expecting success of 4018.68 'builtin ruby pattern compiles on bare repo with --attr-source':
test_when_finished "rm -rf bare.git" &&
git checkout -B master &&
git add . &&
echo "*.java diff=notexist" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git checkout -B branchA &&
echo "*.java diff=$p" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git clone --bare --no-local . bare.git &&
git -C bare.git symbolic-ref HEAD refs/heads/master &&
test_expect_code 1 git -C bare.git --attr-source=branchA \
diff --exit-code HEAD:A.java HEAD:B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
Switched to and reset branch 'master'
M .gitattributes
[master 41412bb] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to and reset branch 'branchA'
[branchA 6cd7147] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Cloning into bare repository 'bare.git'...
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 68 - builtin ruby pattern compiles on bare repo with --attr-source
expecting success of 4018.69 'builtin rust pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 69 - builtin rust pattern compiles
expecting success of 4018.70 'builtin rust wordRegex pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index --word-diff \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
[-A-]{+B+}
ok 70 - builtin rust wordRegex pattern compiles
expecting success of 4018.71 'builtin rust pattern compiles on bare repo with --attr-source':
test_when_finished "rm -rf bare.git" &&
git checkout -B master &&
git add . &&
echo "*.java diff=notexist" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git checkout -B branchA &&
echo "*.java diff=$p" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git clone --bare --no-local . bare.git &&
git -C bare.git symbolic-ref HEAD refs/heads/master &&
test_expect_code 1 git -C bare.git --attr-source=branchA \
diff --exit-code HEAD:A.java HEAD:B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
Switched to and reset branch 'master'
M .gitattributes
[master 26ff60e] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to and reset branch 'branchA'
[branchA d9df4e2] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Cloning into bare repository 'bare.git'...
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 71 - builtin rust pattern compiles on bare repo with --attr-source
expecting success of 4018.72 'builtin scheme pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 72 - builtin scheme pattern compiles
expecting success of 4018.73 'builtin scheme wordRegex pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index --word-diff \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
[-A-]{+B+}
ok 73 - builtin scheme wordRegex pattern compiles
expecting success of 4018.74 'builtin scheme pattern compiles on bare repo with --attr-source':
test_when_finished "rm -rf bare.git" &&
git checkout -B master &&
git add . &&
echo "*.java diff=notexist" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git checkout -B branchA &&
echo "*.java diff=$p" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git clone --bare --no-local . bare.git &&
git -C bare.git symbolic-ref HEAD refs/heads/master &&
test_expect_code 1 git -C bare.git --attr-source=branchA \
diff --exit-code HEAD:A.java HEAD:B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
Switched to and reset branch 'master'
M .gitattributes
[master 1b524cd] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to and reset branch 'branchA'
[branchA a0d1221] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Cloning into bare repository 'bare.git'...
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 74 - builtin scheme pattern compiles on bare repo with --attr-source
expecting success of 4018.75 'builtin tex pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 75 - builtin tex pattern compiles
expecting success of 4018.76 'builtin tex wordRegex pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index --word-diff \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
[-A-]{+B+}
ok 76 - builtin tex wordRegex pattern compiles
expecting success of 4018.77 'builtin tex pattern compiles on bare repo with --attr-source':
test_when_finished "rm -rf bare.git" &&
git checkout -B master &&
git add . &&
echo "*.java diff=notexist" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git checkout -B branchA &&
echo "*.java diff=$p" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git clone --bare --no-local . bare.git &&
git -C bare.git symbolic-ref HEAD refs/heads/master &&
test_expect_code 1 git -C bare.git --attr-source=branchA \
diff --exit-code HEAD:A.java HEAD:B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
Switched to and reset branch 'master'
M .gitattributes
[master de4ccc4] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to and reset branch 'branchA'
[branchA 6368b67] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Cloning into bare repository 'bare.git'...
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 77 - builtin tex pattern compiles on bare repo with --attr-source
expecting success of 4018.78 'builtin custom1 pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 78 - builtin custom1 pattern compiles
expecting success of 4018.79 'builtin custom1 wordRegex pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index --word-diff \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
[-A-]{+B+}
ok 79 - builtin custom1 wordRegex pattern compiles
expecting success of 4018.80 'builtin custom1 pattern compiles on bare repo with --attr-source':
test_when_finished "rm -rf bare.git" &&
git checkout -B master &&
git add . &&
echo "*.java diff=notexist" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git checkout -B branchA &&
echo "*.java diff=$p" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git clone --bare --no-local . bare.git &&
git -C bare.git symbolic-ref HEAD refs/heads/master &&
test_expect_code 1 git -C bare.git --attr-source=branchA \
diff --exit-code HEAD:A.java HEAD:B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
Switched to and reset branch 'master'
M .gitattributes
[master 633ec55] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to and reset branch 'branchA'
[branchA 5cb29de] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Cloning into bare repository 'bare.git'...
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 80 - builtin custom1 pattern compiles on bare repo with --attr-source
expecting success of 4018.81 'builtin custom2 pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 81 - builtin custom2 pattern compiles
expecting success of 4018.82 'builtin custom2 wordRegex pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index --word-diff \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
[-A-]{+B+}
ok 82 - builtin custom2 wordRegex pattern compiles
expecting success of 4018.83 'builtin custom2 pattern compiles on bare repo with --attr-source':
test_when_finished "rm -rf bare.git" &&
git checkout -B master &&
git add . &&
echo "*.java diff=notexist" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git checkout -B branchA &&
echo "*.java diff=$p" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git clone --bare --no-local . bare.git &&
git -C bare.git symbolic-ref HEAD refs/heads/master &&
test_expect_code 1 git -C bare.git --attr-source=branchA \
diff --exit-code HEAD:A.java HEAD:B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
Switched to and reset branch 'master'
M .gitattributes
[master 399f11a] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to and reset branch 'branchA'
[branchA 3432bdd] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Cloning into bare repository 'bare.git'...
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 83 - builtin custom2 pattern compiles on bare repo with --attr-source
expecting success of 4018.84 'builtin custom3 pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 84 - builtin custom3 pattern compiles
expecting success of 4018.85 'builtin custom3 wordRegex pattern compiles':
echo "*.java diff=$p" >.gitattributes &&
test_expect_code 1 git diff --no-index --word-diff \
A.java B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
[-A-]{+B+}
ok 85 - builtin custom3 wordRegex pattern compiles
expecting success of 4018.86 'builtin custom3 pattern compiles on bare repo with --attr-source':
test_when_finished "rm -rf bare.git" &&
git checkout -B master &&
git add . &&
echo "*.java diff=notexist" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git checkout -B branchA &&
echo "*.java diff=$p" >.gitattributes &&
git add .gitattributes &&
git commit -am "changing gitattributes" &&
git clone --bare --no-local . bare.git &&
git -C bare.git symbolic-ref HEAD refs/heads/master &&
test_expect_code 1 git -C bare.git --attr-source=branchA \
diff --exit-code HEAD:A.java HEAD:B.java 2>msg &&
test_i18ngrep ! fatal msg &&
test_i18ngrep ! error msg
Switched to and reset branch 'master'
M .gitattributes
[master 2a95308] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to and reset branch 'branchA'
[branchA 90fa73a] changing gitattributes
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Cloning into bare repository 'bare.git'...
diff --git a/A.java b/B.java
index f70f10e..223b783 100644
--- a/A.java
+++ b/B.java
@@ -1 +1 @@
-A
+B
ok 86 - builtin custom3 pattern compiles on bare repo with --attr-source
expecting success of 4018.87 'last regexp must not be negated':
echo "*.java diff=java" >.gitattributes &&
test_config diff.java.funcname "!static" &&
test_expect_code 128 git diff --no-index A.java B.java 2>msg &&
test_i18ngrep ": Last expression must not be negated:" msg
fatal: Last expression must not be negated: !static
ok 87 - last regexp must not be negated
expecting success of 4018.88 'setup hunk header tests':
for i in $diffpatterns
do
echo "$i-* diff=$i" || return 1
done > .gitattributes &&
# add all test files to the index
(
cd "$TEST_DIRECTORY"/t4018 &&
git --git-dir="$TRASH_DIRECTORY/.git" add .
) &&
# place modified files in the worktree
for i in $(git ls-files)
do
sed -e "s/ChangeMe/IWasChanged/" <"$TEST_DIRECTORY/t4018/$i" >"$i" || return 1
done
ok 88 - setup hunk header tests
expecting success of 4018.89 'hunk header: README':
git diff -U1 README >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -3,3 +3,3 @@ How to write RIGHT test cases
ok 89 - hunk header: README
expecting success of 4018.90 'hunk header: bash-arithmetic-function':
git diff -U1 bash-arithmetic-function >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ RIGHT()
ok 90 - hunk header: bash-arithmetic-function
expecting success of 4018.91 'hunk header: bash-bashism-style-compact':
git diff -U1 bash-bashism-style-compact >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -3,3 +3,3 @@ function RIGHT {
ok 91 - hunk header: bash-bashism-style-compact
expecting success of 4018.92 'hunk header: bash-bashism-style-function':
git diff -U1 bash-bashism-style-function >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ function RIGHT {
ok 92 - hunk header: bash-bashism-style-function
expecting success of 4018.93 'hunk header: bash-bashism-style-whitespace':
git diff -U1 bash-bashism-style-whitespace >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ function RIGHT ( ) {
ok 93 - hunk header: bash-bashism-style-whitespace
expecting success of 4018.94 'hunk header: bash-conditional-function':
git diff -U1 bash-conditional-function >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ RIGHT()
ok 94 - hunk header: bash-conditional-function
expecting success of 4018.95 'hunk header: bash-missing-parentheses':
git diff -U1 bash-missing-parentheses >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -3,3 +3,3 @@ function RIGHT {
ok 95 - hunk header: bash-missing-parentheses
expecting success of 4018.96 'hunk header: bash-mixed-style-compact':
git diff -U1 bash-mixed-style-compact >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ function RIGHT(){
ok 96 - hunk header: bash-mixed-style-compact
expecting success of 4018.97 'hunk header: bash-mixed-style-function':
git diff -U1 bash-mixed-style-function >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ function RIGHT() {
ok 97 - hunk header: bash-mixed-style-function
expecting success of 4018.98 'hunk header: bash-nested-functions':
git diff -U1 bash-nested-functions >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -3,3 +3,3 @@ RIGHT()
ok 98 - hunk header: bash-nested-functions
expecting success of 4018.99 'hunk header: bash-other-characters':
git diff -U1 bash-other-characters >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ _RIGHT_0n()
ok 99 - hunk header: bash-other-characters
expecting success of 4018.100 'hunk header: bash-posix-style-compact':
git diff -U1 bash-posix-style-compact >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ RIGHT()
ok 100 - hunk header: bash-posix-style-compact
expecting success of 4018.101 'hunk header: bash-posix-style-function':
git diff -U1 bash-posix-style-function >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ RIGHT()
ok 101 - hunk header: bash-posix-style-function
expecting success of 4018.102 'hunk header: bash-posix-style-whitespace':
git diff -U1 bash-posix-style-whitespace >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ RIGHT ( )
ok 102 - hunk header: bash-posix-style-whitespace
expecting success of 4018.103 'hunk header: bash-subshell-function':
git diff -U1 bash-subshell-function >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ RIGHT()
ok 103 - hunk header: bash-subshell-function
expecting success of 4018.104 'hunk header: bash-trailing-comment':
git diff -U1 bash-trailing-comment >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ RIGHT()
ok 104 - hunk header: bash-trailing-comment
expecting success of 4018.105 'hunk header: cpp-c++-function':
git diff -U1 cpp-c++-function >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ Item RIGHT::DoSomething( Args with_spaces )
ok 105 - hunk header: cpp-c++-function
expecting success of 4018.106 'hunk header: cpp-class-constructor':
git diff -U1 cpp-class-constructor >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ Item::Item(int RIGHT)
ok 106 - hunk header: cpp-class-constructor
expecting success of 4018.107 'hunk header: cpp-class-constructor-mem-init':
git diff -U1 cpp-class-constructor-mem-init >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -3,3 +3,3 @@ Item::Item(int RIGHT) :
ok 107 - hunk header: cpp-class-constructor-mem-init
expecting success of 4018.108 'hunk header: cpp-class-definition':
git diff -U1 cpp-class-definition >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ class RIGHT
ok 108 - hunk header: cpp-class-definition
expecting success of 4018.109 'hunk header: cpp-class-definition-derived':
git diff -U1 cpp-class-definition-derived >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -3,3 +3,3 @@ class RIGHT :
ok 109 - hunk header: cpp-class-definition-derived
expecting success of 4018.110 'hunk header: cpp-class-destructor':
git diff -U1 cpp-class-destructor >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ RIGHT::~RIGHT()
ok 110 - hunk header: cpp-class-destructor
expecting success of 4018.111 'hunk header: cpp-function-returning-global-type':
git diff -U1 cpp-function-returning-global-type >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ ::Item get::it::RIGHT()
ok 111 - hunk header: cpp-function-returning-global-type
expecting success of 4018.112 'hunk header: cpp-function-returning-nested':
git diff -U1 cpp-function-returning-nested >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ get::Item get::it::RIGHT()
ok 112 - hunk header: cpp-function-returning-nested
expecting success of 4018.113 'hunk header: cpp-function-returning-pointer':
git diff -U1 cpp-function-returning-pointer >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ const char *get_it_RIGHT(char *ptr)
ok 113 - hunk header: cpp-function-returning-pointer
expecting success of 4018.114 'hunk header: cpp-function-returning-reference':
git diff -U1 cpp-function-returning-reference >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ string& get::it::RIGHT(char *ptr)
ok 114 - hunk header: cpp-function-returning-reference
expecting success of 4018.115 'hunk header: cpp-gnu-style-function':
git diff -U1 cpp-gnu-style-function >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -3,3 +3,3 @@ RIGHT(int arg)
ok 115 - hunk header: cpp-gnu-style-function
expecting success of 4018.116 'hunk header: cpp-namespace-definition':
git diff -U1 cpp-namespace-definition >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ namespace RIGHT
ok 116 - hunk header: cpp-namespace-definition
expecting success of 4018.117 'hunk header: cpp-operator-definition':
git diff -U1 cpp-operator-definition >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ Value operator+(Value LEFT, Value RIGHT)
ok 117 - hunk header: cpp-operator-definition
expecting success of 4018.118 'hunk header: cpp-skip-access-specifiers':
git diff -U1 cpp-skip-access-specifiers >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -6,3 +6,3 @@ class RIGHT : public Baseclass
ok 118 - hunk header: cpp-skip-access-specifiers
expecting success of 4018.119 'hunk header: cpp-skip-comment-block':
git diff -U1 cpp-skip-comment-block >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -7,3 +7,3 @@ struct item RIGHT(int i)
ok 119 - hunk header: cpp-skip-comment-block
expecting success of 4018.120 'hunk header: cpp-skip-labels':
git diff -U1 cpp-skip-labels >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -6,3 +6,3 @@ void RIGHT (void)
ok 120 - hunk header: cpp-skip-labels
expecting success of 4018.121 'hunk header: cpp-struct-definition':
git diff -U1 cpp-struct-definition >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -7,3 +7,3 @@ struct RIGHT {
ok 121 - hunk header: cpp-struct-definition
expecting success of 4018.122 'hunk header: cpp-struct-single-line':
git diff -U1 cpp-struct-single-line >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -6,2 +6,2 @@ struct RIGHT_iterator_tag {};
ok 122 - hunk header: cpp-struct-single-line
expecting success of 4018.123 'hunk header: cpp-template-function-definition':
git diff -U1 cpp-template-function-definition >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ template<class T> int RIGHT(T arg)
ok 123 - hunk header: cpp-template-function-definition
expecting success of 4018.124 'hunk header: cpp-union-definition':
git diff -U1 cpp-union-definition >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ union RIGHT {
ok 124 - hunk header: cpp-union-definition
expecting success of 4018.125 'hunk header: cpp-void-c-function':
git diff -U1 cpp-void-c-function >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ void RIGHT (void)
ok 125 - hunk header: cpp-void-c-function
expecting success of 4018.126 'hunk header: css-attribute-value-selector':
git diff -U1 css-attribute-value-selector >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ [class*="RIGHT"] {
ok 126 - hunk header: css-attribute-value-selector
expecting success of 4018.127 'hunk header: css-block-level-@-statements':
git diff -U1 css-block-level-@-statements >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -3,3 +3,3 @@ @keyframes RIGHT {
ok 127 - hunk header: css-block-level-@-statements
expecting success of 4018.128 'hunk header: css-brace-in-col-1':
git diff -U1 css-brace-in-col-1 >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -3,3 +3,3 @@ RIGHT label.control-label
ok 128 - hunk header: css-brace-in-col-1
expecting success of 4018.129 'hunk header: css-class-selector':
git diff -U1 css-class-selector >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ .RIGHT {
ok 129 - hunk header: css-class-selector
expecting success of 4018.130 'hunk header: css-colon-eol':
git diff -U1 css-colon-eol >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ RIGHT h1 {
ok 130 - hunk header: css-colon-eol
expecting success of 4018.131 'hunk header: css-colon-selector':
git diff -U1 css-colon-selector >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -3,3 +3,3 @@ RIGHT a:hover {
ok 131 - hunk header: css-colon-selector
expecting success of 4018.132 'hunk header: css-common':
git diff -U1 css-common >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ RIGHT label.control-label {
ok 132 - hunk header: css-common
expecting success of 4018.133 'hunk header: css-id-selector':
git diff -U1 css-id-selector >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ #RIGHT {
ok 133 - hunk header: css-id-selector
expecting success of 4018.134 'hunk header: css-long-selector-list':
git diff -U1 css-long-selector-list >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -4,3 +4,3 @@ div ul#RIGHT {
ok 134 - hunk header: css-long-selector-list
expecting success of 4018.135 'hunk header: css-prop-sans-indent':
git diff -U1 css-prop-sans-indent >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -3,3 +3,3 @@ RIGHT, label.control-label {
ok 135 - hunk header: css-prop-sans-indent
expecting success of 4018.136 'hunk header: css-root-selector':
git diff -U1 css-root-selector >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ :RIGHT {
ok 136 - hunk header: css-root-selector
expecting success of 4018.137 'hunk header: css-short-selector-list':
git diff -U1 css-short-selector-list >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ label.control, div ul#RIGHT {
ok 137 - hunk header: css-short-selector-list
expecting success of 4018.138 'hunk header: css-trailing-space':
git diff -U1 css-trailing-space >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -3,3 +3,3 @@ RIGHT label.control-label {
ok 138 - hunk header: css-trailing-space
expecting success of 4018.139 'hunk header: custom1-pattern':
git diff -U1 custom1-pattern >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -9,3 +9,3 @@ int special, RIGHT;
ok 139 - hunk header: custom1-pattern
expecting success of 4018.140 'hunk header: custom2-match-to-end-of-line':
git diff -U1 custom2-match-to-end-of-line >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -5,3 +5,3 @@ RIGHT_Beer
ok 140 - hunk header: custom2-match-to-end-of-line
expecting success of 4018.141 'hunk header: custom3-alternation-in-pattern':
git diff -U1 custom3-alternation-in-pattern >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -9,3 +9,3 @@ public static void main(String RIGHT[])
ok 141 - hunk header: custom3-alternation-in-pattern
expecting success of 4018.142 'hunk header: dts-labels':
git diff -U1 dts-labels >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -5,3 +5,3 @@ label2: RIGHT {
ok 142 - hunk header: dts-labels
expecting success of 4018.143 'hunk header: dts-node-unitless':
git diff -U1 dts-node-unitless >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -4,3 +4,3 @@ RIGHT {
ok 143 - hunk header: dts-node-unitless
expecting success of 4018.144 'hunk header: dts-nodes':
git diff -U1 dts-nodes >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -4,3 +4,3 @@ RIGHT@deadf00,4000 {
ok 144 - hunk header: dts-nodes
expecting success of 4018.145 'hunk header: dts-nodes-boolean-prop':
git diff -U1 dts-nodes-boolean-prop >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -5,3 +5,3 @@ RIGHT@deadf00,4000 {
ok 145 - hunk header: dts-nodes-boolean-prop
expecting success of 4018.146 'hunk header: dts-nodes-comment1':
git diff -U1 dts-nodes-comment1 >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -4,3 +4,3 @@ RIGHT@deadf00,4000 /* &a comment */ {
ok 146 - hunk header: dts-nodes-comment1
expecting success of 4018.147 'hunk header: dts-nodes-comment2':
git diff -U1 dts-nodes-comment2 >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -4,3 +4,3 @@ RIGHT@deadf00,4000 { /* a trailing comment */
ok 147 - hunk header: dts-nodes-comment2
expecting success of 4018.148 'hunk header: dts-nodes-multiline-prop':
git diff -U1 dts-nodes-multiline-prop >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -9,3 +9,3 @@ RIGHT@deadf00,4000 {
ok 148 - hunk header: dts-nodes-multiline-prop
expecting success of 4018.149 'hunk header: dts-reference':
git diff -U1 dts-reference >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -7,3 +7,3 @@ &RIGHT {
ok 149 - hunk header: dts-reference
expecting success of 4018.150 'hunk header: dts-root':
git diff -U1 dts-root >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -3,3 +3,3 @@ / { RIGHT /* Technically just supposed to be a slash and brace */
ok 150 - hunk header: dts-root
expecting success of 4018.151 'hunk header: dts-root-comment':
git diff -U1 dts-root-comment >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -6,3 +6,3 @@ / { RIGHT /* Technically just supposed to be a slash and brace */
ok 151 - hunk header: dts-root-comment
expecting success of 4018.152 'hunk header: elixir-do-not-pick-end':
git diff -U1 elixir-do-not-pick-end >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -4,2 +4,2 @@ defmodule RIGHT do
ok 152 - hunk header: elixir-do-not-pick-end
expecting success of 4018.153 'hunk header: elixir-ex-unit-test':
git diff -U1 elixir-ex-unit-test >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -3,3 +3,3 @@ test "RIGHT" do
ok 153 - hunk header: elixir-ex-unit-test
expecting success of 4018.154 'hunk header: elixir-function':
git diff -U1 elixir-function >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -3,3 +3,3 @@ def function(RIGHT, arg) do
ok 154 - hunk header: elixir-function
expecting success of 4018.155 'hunk header: elixir-macro':
git diff -U1 elixir-macro >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -3,3 +3,3 @@ defmacro foo(RIGHT) do
ok 155 - hunk header: elixir-macro
expecting success of 4018.156 'hunk header: elixir-module':
git diff -U1 elixir-module >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -5,3 +5,3 @@ defmodule RIGHT do
ok 156 - hunk header: elixir-module
expecting success of 4018.157 'hunk header: elixir-module-func':
git diff -U1 elixir-module-func >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -5,3 +5,3 @@ def fun(RIGHT) do
ok 157 - hunk header: elixir-module-func
expecting success of 4018.158 'hunk header: elixir-nested-module':
git diff -U1 elixir-nested-module >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -5,3 +5,3 @@ defmodule MyApp.RIGHT do
ok 158 - hunk header: elixir-nested-module
expecting success of 4018.159 'hunk header: elixir-private-function':
git diff -U1 elixir-private-function >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -3,3 +3,3 @@ defp function(RIGHT, arg) do
ok 159 - hunk header: elixir-private-function
expecting success of 4018.160 'hunk header: elixir-protocol':
git diff -U1 elixir-protocol >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -4,3 +4,3 @@ defprotocol RIGHT do
ok 160 - hunk header: elixir-protocol
expecting success of 4018.161 'hunk header: elixir-protocol-implementation':
git diff -U1 elixir-protocol-implementation >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -3,3 +3,3 @@ defimpl RIGHT do
ok 161 - hunk header: elixir-protocol-implementation
expecting success of 4018.162 'hunk header: fortran-block-data':
git diff -U1 fortran-block-data >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,4 +2,4 @@ BLOCK DATA RIGHT
ok 162 - hunk header: fortran-block-data
expecting success of 4018.163 'hunk header: fortran-comment':
git diff -U1 fortran-comment >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -8,3 +8,3 @@ subroutine RIGHT
ok 163 - hunk header: fortran-comment
expecting success of 4018.164 'hunk header: fortran-comment-keyword':
git diff -U1 fortran-comment-keyword >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -9,3 +9,3 @@ subroutine RIGHT (funcA, funcB)
ok 164 - hunk header: fortran-comment-keyword
expecting success of 4018.165 'hunk header: fortran-comment-legacy':
git diff -U1 fortran-comment-legacy >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -8,3 +8,3 @@ subroutine RIGHT
ok 165 - hunk header: fortran-comment-legacy
expecting success of 4018.166 'hunk header: fortran-comment-legacy-star':
git diff -U1 fortran-comment-legacy-star >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -8,3 +8,3 @@ subroutine RIGHT
ok 166 - hunk header: fortran-comment-legacy-star
expecting success of 4018.167 'hunk header: fortran-external-function':
git diff -U1 fortran-external-function >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ function RIGHT(a, b) result(c)
ok 167 - hunk header: fortran-external-function
expecting success of 4018.168 'hunk header: fortran-external-subroutine':
git diff -U1 fortran-external-subroutine >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ subroutine RIGHT
ok 168 - hunk header: fortran-external-subroutine
expecting success of 4018.169 'hunk header: fortran-module':
git diff -U1 fortran-module >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ module RIGHT
ok 169 - hunk header: fortran-module
expecting success of 4018.170 'hunk header: fortran-module-procedure':
git diff -U1 fortran-module-procedure >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -8,3 +8,3 @@ module RIGHT
ok 170 - hunk header: fortran-module-procedure
expecting success of 4018.171 'hunk header: fortran-program':
git diff -U1 fortran-program >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ program RIGHT
ok 171 - hunk header: fortran-program
expecting success of 4018.172 'hunk header: fountain-scene':
git diff -U1 fountain-scene >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -3,2 +3,2 @@ EXT. STREET RIGHT OUTSIDE - DAY
ok 172 - hunk header: fountain-scene
expecting success of 4018.173 'hunk header: golang-complex-function':
git diff -U1 golang-complex-function >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -6,3 +6,3 @@ func (t *Test) RIGHT(a Type) (Type, error) {
ok 173 - hunk header: golang-complex-function
expecting success of 4018.174 'hunk header: golang-func':
git diff -U1 golang-func >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ func RIGHT() {
ok 174 - hunk header: golang-func
expecting success of 4018.175 'hunk header: golang-interface':
git diff -U1 golang-interface >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ type RIGHT interface {
ok 175 - hunk header: golang-interface
expecting success of 4018.176 'hunk header: golang-long-func':
git diff -U1 golang-long-func >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -3,3 +3,3 @@ func RIGHT(aVeryVeryVeryLongVariableName AVeryVeryVeryLongType,
ok 176 - hunk header: golang-long-func
expecting success of 4018.177 'hunk header: golang-struct':
git diff -U1 golang-struct >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ type RIGHT struct {
ok 177 - hunk header: golang-struct
expecting success of 4018.178 'hunk header: java-class-brace-on-separate-line':
git diff -U1 java-class-brace-on-separate-line >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -4,3 +4,3 @@ class RIGHT
ok 178 - hunk header: java-class-brace-on-separate-line
expecting success of 4018.179 'hunk header: java-class-member-function':
git diff -U1 java-class-member-function >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -9,3 +9,3 @@ public static void main(String RIGHT[])
ok 179 - hunk header: java-class-member-function
expecting success of 4018.180 'hunk header: java-class-space-before-type-parameters':
git diff -U1 java-class-space-before-type-parameters >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -4,3 +4,3 @@ class RIGHT <TYPE, PARAMS, AFTER, SPACE> {
ok 180 - hunk header: java-class-space-before-type-parameters
expecting success of 4018.181 'hunk header: java-class-type-parameters':
git diff -U1 java-class-type-parameters >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -4,3 +4,3 @@ class RIGHT<A, B> {
ok 181 - hunk header: java-class-type-parameters
expecting success of 4018.182 'hunk header: java-class-type-parameters-implements':
git diff -U1 java-class-type-parameters-implements >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -4,3 +4,3 @@ class RIGHT<A, B> implements List<A> {
ok 182 - hunk header: java-class-type-parameters-implements
expecting success of 4018.183 'hunk header: java-enum-constant':
git diff -U1 java-enum-constant >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -4,3 +4,3 @@ private enum RIGHT {
ok 183 - hunk header: java-enum-constant
expecting success of 4018.184 'hunk header: java-interface-type-parameters':
git diff -U1 java-interface-type-parameters >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -4,3 +4,3 @@ interface RIGHT<A, B> {
ok 184 - hunk header: java-interface-type-parameters
expecting success of 4018.185 'hunk header: java-interface-type-parameters-extends':
git diff -U1 java-interface-type-parameters-extends >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -4,3 +4,3 @@ interface RIGHT<A, B> extends Function<A, B> {
ok 185 - hunk header: java-interface-type-parameters-extends
expecting success of 4018.186 'hunk header: java-method-return-generic-bounded':
git diff -U1 java-method-return-generic-bounded >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -6,3 +6,3 @@ public <T extends Bar & Foo<T>, R> Map<T, R[]> foo(String[] RIGHT) {
ok 186 - hunk header: java-method-return-generic-bounded
expecting success of 4018.187 'hunk header: java-method-return-generic-wildcard':
git diff -U1 java-method-return-generic-wildcard >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -6,3 +6,3 @@ public List<? extends Comparable> foo(String[] RIGHT) {
ok 187 - hunk header: java-method-return-generic-wildcard
expecting success of 4018.188 'hunk header: java-nested-field':
git diff -U1 java-nested-field >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -3,3 +3,3 @@ private static class RIGHT {
ok 188 - hunk header: java-nested-field
expecting success of 4018.189 'hunk header: java-non-sealed':
git diff -U1 java-non-sealed >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -5,3 +5,3 @@ public static non-sealed class RIGHT extends SealedClass {
ok 189 - hunk header: java-non-sealed
expecting success of 4018.190 'hunk header: java-record':
git diff -U1 java-record >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -4,3 +4,3 @@ public record RIGHT(int comp1, double comp2, String comp3) {
ok 190 - hunk header: java-record
expecting success of 4018.191 'hunk header: java-record-space-before-components':
git diff -U1 java-record-space-before-components >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -4,3 +4,3 @@ public record RIGHT (String components, String after, String space) {
ok 191 - hunk header: java-record-space-before-components
expecting success of 4018.192 'hunk header: java-record-type-parameters':
git diff -U1 java-record-type-parameters >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -4,3 +4,3 @@ public record RIGHT<A, N extends Number>(A comp1, N comp2, int comp3) {
ok 192 - hunk header: java-record-type-parameters
expecting success of 4018.193 'hunk header: java-sealed':
git diff -U1 java-sealed >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -4,3 +4,3 @@ public abstract sealed class Sealed { // RIGHT
ok 193 - hunk header: java-sealed
expecting success of 4018.194 'hunk header: java-sealed-permits':
git diff -U1 java-sealed-permits >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -4,3 +4,3 @@ public abstract sealed class RIGHT permits PermittedA, PermittedB {
ok 194 - hunk header: java-sealed-permits
expecting success of 4018.195 'hunk header: java-sealed-type-parameters':
git diff -U1 java-sealed-type-parameters >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -4,3 +4,3 @@ public abstract sealed class RIGHT<A, B> {
ok 195 - hunk header: java-sealed-type-parameters
expecting success of 4018.196 'hunk header: java-sealed-type-parameters-implements-permits':
git diff -U1 java-sealed-type-parameters-implements-permits >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -4,3 +4,3 @@ public abstract sealed class RIGHT<A, B> implements List<A> permits PermittedA,
ok 196 - hunk header: java-sealed-type-parameters-implements-permits
expecting success of 4018.197 'hunk header: java-sealed-type-parameters-permits':
git diff -U1 java-sealed-type-parameters-permits >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -4,3 +4,3 @@ public abstract sealed class RIGHT<A, B> permits PermittedA, PermittedB {
ok 197 - hunk header: java-sealed-type-parameters-permits
expecting success of 4018.198 'hunk header: kotlin-class':
git diff -U1 kotlin-class >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -3,3 +3,3 @@ class RIGHT {
ok 198 - hunk header: kotlin-class
expecting success of 4018.199 'hunk header: kotlin-enum-class':
git diff -U1 kotlin-enum-class >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -3,3 +3,3 @@ enum class RIGHT{
ok 199 - hunk header: kotlin-enum-class
expecting success of 4018.200 'hunk header: kotlin-fun':
git diff -U1 kotlin-fun >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -3,3 +3,3 @@ fun RIGHT(){
ok 200 - hunk header: kotlin-fun
expecting success of 4018.201 'hunk header: kotlin-inheritace-class':
git diff -U1 kotlin-inheritace-class >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -3,3 +3,3 @@ open class RIGHT{
ok 201 - hunk header: kotlin-inheritace-class
expecting success of 4018.202 'hunk header: kotlin-inline-class':
git diff -U1 kotlin-inline-class >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -3,3 +3,3 @@ value class RIGHT(Args){
ok 202 - hunk header: kotlin-inline-class
expecting success of 4018.203 'hunk header: kotlin-interface':
git diff -U1 kotlin-interface >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -3,3 +3,3 @@ interface RIGHT{
ok 203 - hunk header: kotlin-interface
expecting success of 4018.204 'hunk header: kotlin-nested-fun':
git diff -U1 kotlin-nested-fun >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -5,3 +5,3 @@ fun RIGHT( a:Int){
ok 204 - hunk header: kotlin-nested-fun
expecting success of 4018.205 'hunk header: kotlin-public-class':
git diff -U1 kotlin-public-class >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -3,3 +3,3 @@ public class RIGHT{
ok 205 - hunk header: kotlin-public-class
expecting success of 4018.206 'hunk header: kotlin-sealed-class':
git diff -U1 kotlin-sealed-class >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -3,3 +3,3 @@ sealed class RIGHT {
ok 206 - hunk header: kotlin-sealed-class
expecting success of 4018.207 'hunk header: markdown-heading-indented':
git diff -U1 markdown-heading-indented >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -5,2 +5,2 @@ ### RIGHT
ok 207 - hunk header: markdown-heading-indented
expecting success of 4018.208 'hunk header: markdown-heading-non-headings':
git diff -U1 markdown-heading-non-headings >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -16,2 +16,2 @@ # RIGHT
ok 208 - hunk header: markdown-heading-non-headings
expecting success of 4018.209 'hunk header: matlab-class-definition':
git diff -U1 matlab-class-definition >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ classdef RIGHT
ok 209 - hunk header: matlab-class-definition
expecting success of 4018.210 'hunk header: matlab-function':
git diff -U1 matlab-function >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ function y = RIGHT()
ok 210 - hunk header: matlab-function
expecting success of 4018.211 'hunk header: matlab-octave-section-1':
git diff -U1 matlab-octave-section-1 >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,2 +2,2 @@ %%% RIGHT section
ok 211 - hunk header: matlab-octave-section-1
expecting success of 4018.212 'hunk header: matlab-octave-section-2':
git diff -U1 matlab-octave-section-2 >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,2 +2,2 @@ ## RIGHT section
ok 212 - hunk header: matlab-octave-section-2
expecting success of 4018.213 'hunk header: matlab-section':
git diff -U1 matlab-section >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,2 +2,2 @@ %% RIGHT section
ok 213 - hunk header: matlab-section
expecting success of 4018.214 'hunk header: perl-skip-end-of-heredoc':
git diff -U1 perl-skip-end-of-heredoc >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -6,3 +6,3 @@ sub RIGHTwithheredocument {
ok 214 - hunk header: perl-skip-end-of-heredoc
expecting success of 4018.215 'hunk header: perl-skip-forward-decl':
git diff -U1 perl-skip-forward-decl >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -9,2 +9,2 @@ package RIGHT;
ok 215 - hunk header: perl-skip-forward-decl
expecting success of 4018.216 'hunk header: perl-skip-sub-in-pod':
git diff -U1 perl-skip-sub-in-pod >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -15,3 +15,3 @@ =head1 SYNOPSIS_RIGHT
ok 216 - hunk header: perl-skip-sub-in-pod
expecting success of 4018.217 'hunk header: perl-sub-definition':
git diff -U1 perl-sub-definition >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ sub RIGHT {
ok 217 - hunk header: perl-sub-definition
expecting success of 4018.218 'hunk header: perl-sub-definition-kr-brace':
git diff -U1 perl-sub-definition-kr-brace >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ sub RIGHT
ok 218 - hunk header: perl-sub-definition-kr-brace
expecting success of 4018.219 'hunk header: php-abstract-class':
git diff -U1 php-abstract-class >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ abstract class RIGHT
ok 219 - hunk header: php-abstract-class
expecting success of 4018.220 'hunk header: php-abstract-method':
git diff -U1 php-abstract-method >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -4,3 +4,3 @@ abstract public function RIGHT(): ?string
ok 220 - hunk header: php-abstract-method
expecting success of 4018.221 'hunk header: php-class':
git diff -U1 php-class >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ class RIGHT
ok 221 - hunk header: php-class
expecting success of 4018.222 'hunk header: php-enum':
git diff -U1 php-enum >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ enum RIGHT: string
ok 222 - hunk header: php-enum
expecting success of 4018.223 'hunk header: php-final-class':
git diff -U1 php-final-class >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ final class RIGHT
ok 223 - hunk header: php-final-class
expecting success of 4018.224 'hunk header: php-final-method':
git diff -U1 php-final-method >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -4,3 +4,3 @@ final public function RIGHT(): string
ok 224 - hunk header: php-final-method
expecting success of 4018.225 'hunk header: php-function':
git diff -U1 php-function >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ function RIGHT()
ok 225 - hunk header: php-function
expecting success of 4018.226 'hunk header: php-interface':
git diff -U1 php-interface >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ interface RIGHT
ok 226 - hunk header: php-interface
expecting success of 4018.227 'hunk header: php-method':
git diff -U1 php-method >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -4,3 +4,3 @@ public static function RIGHT()
ok 227 - hunk header: php-method
expecting success of 4018.228 'hunk header: php-trait':
git diff -U1 php-trait >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ trait RIGHT
ok 228 - hunk header: php-trait
expecting success of 4018.229 'hunk header: python-async-def':
git diff -U1 python-async-def >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -3,2 +3,2 @@ async def RIGHT(pi: int = 3.14):
ok 229 - hunk header: python-async-def
expecting success of 4018.230 'hunk header: python-class':
git diff -U1 python-class >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -3,2 +3,2 @@ class RIGHT(int, str):
ok 230 - hunk header: python-class
expecting success of 4018.231 'hunk header: python-def':
git diff -U1 python-def >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -3,2 +3,2 @@ def RIGHT(pi: int = 3.14):
ok 231 - hunk header: python-def
expecting success of 4018.232 'hunk header: python-indented-async-def':
git diff -U1 python-indented-async-def >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -5,3 +5,3 @@ async def RIGHT(self, x: int):
ok 232 - hunk header: python-indented-async-def
expecting success of 4018.233 'hunk header: python-indented-class':
git diff -U1 python-indented-class >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -4,2 +4,2 @@ class RIGHT:
ok 233 - hunk header: python-indented-class
expecting success of 4018.234 'hunk header: python-indented-def':
git diff -U1 python-indented-def >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -5,3 +5,3 @@ def RIGHT(self, x: int):
ok 234 - hunk header: python-indented-def
expecting success of 4018.235 'hunk header: rust-fn':
git diff -U1 rust-fn >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -3,3 +3,3 @@ pub(self) fn RIGHT<T>(x: &[T]) where T: Debug {
ok 235 - hunk header: rust-fn
expecting success of 4018.236 'hunk header: rust-impl':
git diff -U1 rust-impl >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ impl<'a, T: AsRef<[u8]>> std::RIGHT for Git<'a> {
ok 236 - hunk header: rust-impl
expecting success of 4018.237 'hunk header: rust-macro-rules':
git diff -U1 rust-macro-rules >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -3,3 +3,3 @@ macro_rules! RIGHT {
ok 237 - hunk header: rust-macro-rules
expecting success of 4018.238 'hunk header: rust-struct':
git diff -U1 rust-struct >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -3,3 +3,3 @@ pub(super) struct RIGHT<'a> {
ok 238 - hunk header: rust-struct
expecting success of 4018.239 'hunk header: rust-trait':
git diff -U1 rust-trait >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ unsafe trait RIGHT<T> {
ok 239 - hunk header: rust-trait
expecting success of 4018.240 'hunk header: scheme-class':
git diff -U1 scheme-class >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -3,3 +3,3 @@ (class* () object% RIGHT
ok 240 - hunk header: scheme-class
expecting success of 4018.241 'hunk header: scheme-def':
git diff -U1 scheme-def >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -3,2 +3,2 @@ (def (some-func x y z) RIGHT
ok 241 - hunk header: scheme-def
expecting success of 4018.242 'hunk header: scheme-def-variant':
git diff -U1 scheme-def-variant >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -3,2 +3,2 @@ (defmethod {print point} RIGHT
ok 242 - hunk header: scheme-def-variant
expecting success of 4018.243 'hunk header: scheme-define-slash-public':
git diff -U1 scheme-define-slash-public >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -5,3 +5,3 @@ (define/public (foo) RIGHT
ok 243 - hunk header: scheme-define-slash-public
expecting success of 4018.244 'hunk header: scheme-define-syntax':
git diff -U1 scheme-define-syntax >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ (define-syntax define-test-suite RIGHT
ok 244 - hunk header: scheme-define-syntax
expecting success of 4018.245 'hunk header: scheme-define-variant':
git diff -U1 scheme-define-variant >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -3,2 +3,2 @@ (define* (some-func x y z) RIGHT
ok 245 - hunk header: scheme-define-variant
expecting success of 4018.246 'hunk header: scheme-library':
git diff -U1 scheme-library >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ (library (my-helpers id-stuff) RIGHT
ok 246 - hunk header: scheme-library
expecting success of 4018.247 'hunk header: scheme-local-define':
git diff -U1 scheme-local-define >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -3,2 +3,2 @@ (define local-function RIGHT
ok 247 - hunk header: scheme-local-define
expecting success of 4018.248 'hunk header: scheme-module':
git diff -U1 scheme-module >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -2,3 +2,3 @@ (module A RIGHT
ok 248 - hunk header: scheme-module
expecting success of 4018.249 'hunk header: scheme-top-level-define':
git diff -U1 scheme-top-level-define >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -3,2 +3,2 @@ (define (some-func x y z) RIGHT
ok 249 - hunk header: scheme-top-level-define
expecting success of 4018.250 'hunk header: scheme-user-defined-define':
git diff -U1 scheme-user-defined-define >actual &&
grep '@@ .* @@.*RIGHT' actual
@@ -4,3 +4,3 @@ (define-test-suite record\ case-tests RIGHT
ok 250 - hunk header: scheme-user-defined-define
# passed all 250 test(s)
1..250
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4042-diff-textconv-caching.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4042-diff-textconv-caching/.git/
expecting success of 4042.1 'setup':
echo foo content 1 >foo.bin &&
echo bar content 1 >bar.bin &&
git add . &&
git commit -m one &&
foo1=$(git rev-parse --short HEAD:foo.bin) &&
bar1=$(git rev-parse --short HEAD:bar.bin) &&
echo foo content 2 >foo.bin &&
echo bar content 2 >bar.bin &&
git commit -a -m two &&
foo2=$(git rev-parse --short HEAD:foo.bin) &&
bar2=$(git rev-parse --short HEAD:bar.bin) &&
echo "*.bin diff=magic" >.gitattributes &&
git config diff.magic.textconv ./helper &&
git config diff.magic.cachetextconv true
[master (root-commit) e62c20e] one
Author: A U Thor <author@example.com>
3 files changed, 5 insertions(+)
create mode 100644 bar.bin
create mode 100644 foo.bin
create mode 100755 helper
[master ea2ff12] two
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+), 2 deletions(-)
ok 1 - setup
expecting success of 4042.2 'first textconv works':
git diff HEAD^ HEAD >actual &&
test_cmp expect actual
ok 2 - first textconv works
expecting success of 4042.3 'cached textconv produces same output':
git diff HEAD^ HEAD >actual &&
test_cmp expect actual
ok 3 - cached textconv produces same output
expecting success of 4042.4 'cached textconv does not run helper':
rm -f helper.out &&
git diff HEAD^ HEAD >actual &&
test_cmp expect actual &&
! test -r helper.out
ok 4 - cached textconv does not run helper
expecting success of 4042.5 'changing textconv invalidates cache':
echo other >other &&
git config diff.magic.textconv "./helper other" &&
git diff HEAD^ HEAD >actual &&
test_cmp expect actual
ok 5 - changing textconv invalidates cache
expecting success of 4042.6 'switching diff driver produces correct results':
git config diff.moremagic.textconv ./helper &&
echo foo.bin diff=moremagic >>.gitattributes &&
git diff HEAD^ HEAD >actual &&
test_cmp expect actual
ok 6 - switching diff driver produces correct results
expecting success of 4042.7 'log notes cache and still use cache for -p':
git log --no-walk -p refs/notes/textconv/magic HEAD
commit 9c639377525bb0485f64e3a844123312ec98541e
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
./helper other
diff --git a/1345db2c9189a61ef9932f66b656afc986bee58f b/1345db2c9189a61ef9932f66b656afc986bee58f
new file mode 100644
index 0000000..01b25c5
--- /dev/null
+++ b/1345db2c9189a61ef9932f66b656afc986bee58f
@@ -0,0 +1,2 @@
+converted: other
+converted: foo content 2
diff --git a/28283d51eeb71548ff81d02404b90103b494b983 b/28283d51eeb71548ff81d02404b90103b494b983
new file mode 100644
index 0000000..dcd63a4
--- /dev/null
+++ b/28283d51eeb71548ff81d02404b90103b494b983
@@ -0,0 +1,2 @@
+converted: other
+converted: bar content 2
diff --git a/d5b9fe314e6004caf906e730045d20689167b3fb b/d5b9fe314e6004caf906e730045d20689167b3fb
new file mode 100644
index 0000000..7ef0353
--- /dev/null
+++ b/d5b9fe314e6004caf906e730045d20689167b3fb
@@ -0,0 +1,2 @@
+converted: other
+converted: foo content 1
diff --git a/fcf91668044fda4a569b9374589b26dada7adc49 b/fcf91668044fda4a569b9374589b26dada7adc49
new file mode 100644
index 0000000..5ead606
--- /dev/null
+++ b/fcf91668044fda4a569b9374589b26dada7adc49
@@ -0,0 +1,2 @@
+converted: other
+converted: bar content 1
commit ea2ff12718498fa427bb0f1e263e2ba2e26a440d
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
two
diff --git a/bar.bin b/bar.bin
index fcf9166..28283d5 100644
--- a/bar.bin
+++ b/bar.bin
@@ -1,2 +1,2 @@
converted: other
-converted: bar content 1
+converted: bar content 2
diff --git a/foo.bin b/foo.bin
index d5b9fe3..1345db2 100644
--- a/foo.bin
+++ b/foo.bin
@@ -1 +1 @@
-converted: foo content 1
+converted: foo content 2
ok 7 - log notes cache and still use cache for -p
# passed all 7 test(s)
1..7
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4034-diff-words.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4034-diff-words/.git/
expecting success of 4034.1 'setup':
git config diff.color.old red &&
git config diff.color.new green &&
git config diff.color.func magenta
ok 1 - setup
expecting success of 4034.2 'set up pre and post with runs of whitespace':
cp pre.simple pre &&
cp post.simple post
ok 2 - set up pre and post with runs of whitespace
expecting success of 4034.3 'word diff with runs of whitespace':
cat >expect <<-EOF &&
<BOLD>diff --git a/pre b/post<RESET>
<BOLD>index $pre..$post 100644<RESET>
<BOLD>--- a/pre<RESET>
<BOLD>+++ b/post<RESET>
<CYAN>@@ -1,3 +1,7 @@<RESET>
<RED>h(4)<RESET><GREEN>h(4),hh[44]<RESET>
a = b + c<RESET>
<GREEN>aa = a<RESET>
<GREEN>aeff = aeff * ( aaa )<RESET>
EOF
word_diff --color-words &&
word_diff --word-diff=color &&
word_diff --color --word-diff=color
ok 3 - word diff with runs of whitespace
expecting success of 4034.4 '--word-diff=porcelain':
sed "s/#.*$//" >expect <<-EOF &&
diff --git a/pre b/post
index $pre..$post 100644
--- a/pre
+++ b/post
@@ -1,3 +1,7 @@
-h(4)
+h(4),hh[44]
~
# significant space
~
a = b + c
~
~
+aa = a
~
~
+aeff = aeff * ( aaa )
~
EOF
word_diff --word-diff=porcelain
ok 4 - --word-diff=porcelain
expecting success of 4034.5 '--word-diff=plain':
cat >expect <<-EOF &&
diff --git a/pre b/post
index $pre..$post 100644
--- a/pre
+++ b/post
@@ -1,3 +1,7 @@
[-h(4)-]{+h(4),hh[44]+}
a = b + c
{+aa = a+}
{+aeff = aeff * ( aaa )+}
EOF
word_diff --word-diff=plain &&
word_diff --word-diff=plain --no-color
ok 5 - --word-diff=plain
expecting success of 4034.6 '--word-diff=plain --color':
cat >expect <<-EOF &&
<BOLD>diff --git a/pre b/post<RESET>
<BOLD>index $pre..$post 100644<RESET>
<BOLD>--- a/pre<RESET>
<BOLD>+++ b/post<RESET>
<CYAN>@@ -1,3 +1,7 @@<RESET>
<RED>[-h(4)-]<RESET><GREEN>{+h(4),hh[44]+}<RESET>
a = b + c<RESET>
<GREEN>{+aa = a+}<RESET>
<GREEN>{+aeff = aeff * ( aaa )+}<RESET>
EOF
word_diff --word-diff=plain --color
ok 6 - --word-diff=plain --color
expecting success of 4034.7 'word diff without context':
cat >expect <<-EOF &&
<BOLD>diff --git a/pre b/post<RESET>
<BOLD>index $pre..$post 100644<RESET>
<BOLD>--- a/pre<RESET>
<BOLD>+++ b/post<RESET>
<CYAN>@@ -1 +1 @@<RESET>
<RED>h(4)<RESET><GREEN>h(4),hh[44]<RESET>
<CYAN>@@ -3,0 +4,4 @@<RESET> <RESET><MAGENTA>a = b + c<RESET>
<GREEN>aa = a<RESET>
<GREEN>aeff = aeff * ( aaa )<RESET>
EOF
word_diff --color-words --unified=0
ok 7 - word diff without context
expecting success of 4034.8 'word diff with a regular expression':
cp expect.letter-runs-are-words expect &&
word_diff --color-words="[a-z]+"
ok 8 - word diff with a regular expression
expecting success of 4034.9 'word diff with zero length matches':
cp expect.letter-runs-are-words expect &&
word_diff --color-words="[a-z${LF}]*"
ok 9 - word diff with zero length matches
expecting success of 4034.10 'set up a diff driver':
git config diff.testdriver.wordRegex "[^[:space:]]" &&
cat <<-\EOF >.gitattributes
pre diff=testdriver
post diff=testdriver
EOF
ok 10 - set up a diff driver
expecting success of 4034.11 'option overrides .gitattributes':
cp expect.letter-runs-are-words expect &&
word_diff --color-words="[a-z]+"
ok 11 - option overrides .gitattributes
expecting success of 4034.12 'use regex supplied by driver':
cp expect.non-whitespace-is-word expect &&
word_diff --color-words
ok 12 - use regex supplied by driver
expecting success of 4034.13 'set up diff.wordRegex option':
git config diff.wordRegex "[[:alnum:]]+"
ok 13 - set up diff.wordRegex option
expecting success of 4034.14 'command-line overrides config':
cp expect.letter-runs-are-words expect &&
word_diff --color-words="[a-z]+"
ok 14 - command-line overrides config
expecting success of 4034.15 'command-line overrides config: --word-diff-regex':
cat >expect <<-EOF &&
<BOLD>diff --git a/pre b/post<RESET>
<BOLD>index $pre..$post 100644<RESET>
<BOLD>--- a/pre<RESET>
<BOLD>+++ b/post<RESET>
<CYAN>@@ -1,3 +1,7 @@<RESET>
h(4),<GREEN>{+hh+}<RESET>[44]
a = b + c<RESET>
<GREEN>{+aa = a+}<RESET>
<GREEN>{+aeff = aeff * ( aaa+}<RESET> )
EOF
word_diff --color --word-diff-regex="[a-z]+"
ok 15 - command-line overrides config: --word-diff-regex
expecting success of 4034.16 '.gitattributes override config':
cp expect.non-whitespace-is-word expect &&
word_diff --color-words
ok 16 - .gitattributes override config
expecting success of 4034.17 'setup: remove diff driver regex':
test_unconfig diff.testdriver.wordRegex
ok 17 - setup: remove diff driver regex
expecting success of 4034.18 'use configured regex':
cat >expect <<-EOF &&
<BOLD>diff --git a/pre b/post<RESET>
<BOLD>index $pre..$post 100644<RESET>
<BOLD>--- a/pre<RESET>
<BOLD>+++ b/post<RESET>
<CYAN>@@ -1,3 +1,7 @@<RESET>
h(4),<GREEN>hh[44<RESET>]
a = b + c<RESET>
<GREEN>aa = a<RESET>
<GREEN>aeff = aeff * ( aaa<RESET> )
EOF
word_diff --color-words
ok 18 - use configured regex
expecting success of 4034.19 'test parsing words for newline':
echo "aaa (aaa)" >pre &&
echo "aaa (aaa) aaa" >post &&
pre=$(git rev-parse --short $(git hash-object pre)) &&
post=$(git rev-parse --short $(git hash-object post)) &&
cat >expect <<-EOF &&
<BOLD>diff --git a/pre b/post<RESET>
<BOLD>index $pre..$post 100644<RESET>
<BOLD>--- a/pre<RESET>
<BOLD>+++ b/post<RESET>
<CYAN>@@ -1 +1 @@<RESET>
aaa (aaa) <GREEN>aaa<RESET>
EOF
word_diff --color-words="a+"
ok 19 - test parsing words for newline
expecting success of 4034.20 'test when words are only removed at the end':
echo "(:" >pre &&
echo "(" >post &&
pre=$(git rev-parse --short $(git hash-object pre)) &&
post=$(git rev-parse --short $(git hash-object post)) &&
cat >expect <<-EOF &&
<BOLD>diff --git a/pre b/post<RESET>
<BOLD>index $pre..$post 100644<RESET>
<BOLD>--- a/pre<RESET>
<BOLD>+++ b/post<RESET>
<CYAN>@@ -1 +1 @@<RESET>
(<RED>:<RESET>
EOF
word_diff --color-words=.
ok 20 - test when words are only removed at the end
expecting success of 4034.21 '--word-diff=none':
echo "(:" >pre &&
echo "(" >post &&
pre=$(git rev-parse --short $(git hash-object pre)) &&
post=$(git rev-parse --short $(git hash-object post)) &&
cat >expect <<-EOF &&
diff --git a/pre b/post
index $pre..$post 100644
--- a/pre
+++ b/post
@@ -1 +1 @@
-(:
+(
EOF
word_diff --word-diff=plain --word-diff=none
ok 21 - --word-diff=none
expecting success of 4034.22 'unset default driver':
test_unconfig diff.wordregex
ok 22 - unset default driver
expecting success of 4034.23 'diff driver 'ada'':
cp "$TEST_DIRECTORY/t4034/ada/pre" \
"$TEST_DIRECTORY/t4034/ada/post" \
"$TEST_DIRECTORY/t4034/ada/expect" . &&
echo "* diff=ada" >.gitattributes &&
word_diff --color-words
ok 23 - diff driver 'ada'
expecting success of 4034.24 'diff driver 'ada' in Islandic':
LANG=is_IS.UTF-8 LANGUAGE=is LC_ALL="$is_IS_locale" \
word_diff --color-words
ok 24 - diff driver 'ada' in Islandic
expecting success of 4034.25 'diff driver 'bibtex'':
cp "$TEST_DIRECTORY/t4034/bibtex/pre" \
"$TEST_DIRECTORY/t4034/bibtex/post" \
"$TEST_DIRECTORY/t4034/bibtex/expect" . &&
echo "* diff=bibtex" >.gitattributes &&
word_diff --color-words
ok 25 - diff driver 'bibtex'
expecting success of 4034.26 'diff driver 'bibtex' in Islandic':
LANG=is_IS.UTF-8 LANGUAGE=is LC_ALL="$is_IS_locale" \
word_diff --color-words
ok 26 - diff driver 'bibtex' in Islandic
expecting success of 4034.27 'diff driver 'cpp'':
cp "$TEST_DIRECTORY/t4034/cpp/pre" \
"$TEST_DIRECTORY/t4034/cpp/post" \
"$TEST_DIRECTORY/t4034/cpp/expect" . &&
echo "* diff=cpp" >.gitattributes &&
word_diff --color-words
ok 27 - diff driver 'cpp'
expecting success of 4034.28 'diff driver 'cpp' in Islandic':
LANG=is_IS.UTF-8 LANGUAGE=is LC_ALL="$is_IS_locale" \
word_diff --color-words
ok 28 - diff driver 'cpp' in Islandic
expecting success of 4034.29 'diff driver 'csharp'':
cp "$TEST_DIRECTORY/t4034/csharp/pre" \
"$TEST_DIRECTORY/t4034/csharp/post" \
"$TEST_DIRECTORY/t4034/csharp/expect" . &&
echo "* diff=csharp" >.gitattributes &&
word_diff --color-words
ok 29 - diff driver 'csharp'
expecting success of 4034.30 'diff driver 'csharp' in Islandic':
LANG=is_IS.UTF-8 LANGUAGE=is LC_ALL="$is_IS_locale" \
word_diff --color-words
ok 30 - diff driver 'csharp' in Islandic
expecting success of 4034.31 'diff driver 'css'':
cp "$TEST_DIRECTORY/t4034/css/pre" \
"$TEST_DIRECTORY/t4034/css/post" \
"$TEST_DIRECTORY/t4034/css/expect" . &&
echo "* diff=css" >.gitattributes &&
word_diff --color-words
ok 31 - diff driver 'css'
expecting success of 4034.32 'diff driver 'css' in Islandic':
LANG=is_IS.UTF-8 LANGUAGE=is LC_ALL="$is_IS_locale" \
word_diff --color-words
ok 32 - diff driver 'css' in Islandic
expecting success of 4034.33 'diff driver 'dts'':
cp "$TEST_DIRECTORY/t4034/dts/pre" \
"$TEST_DIRECTORY/t4034/dts/post" \
"$TEST_DIRECTORY/t4034/dts/expect" . &&
echo "* diff=dts" >.gitattributes &&
word_diff --color-words
ok 33 - diff driver 'dts'
expecting success of 4034.34 'diff driver 'dts' in Islandic':
LANG=is_IS.UTF-8 LANGUAGE=is LC_ALL="$is_IS_locale" \
word_diff --color-words
ok 34 - diff driver 'dts' in Islandic
expecting success of 4034.35 'diff driver 'fortran'':
cp "$TEST_DIRECTORY/t4034/fortran/pre" \
"$TEST_DIRECTORY/t4034/fortran/post" \
"$TEST_DIRECTORY/t4034/fortran/expect" . &&
echo "* diff=fortran" >.gitattributes &&
word_diff --color-words
ok 35 - diff driver 'fortran'
expecting success of 4034.36 'diff driver 'fortran' in Islandic':
LANG=is_IS.UTF-8 LANGUAGE=is LC_ALL="$is_IS_locale" \
word_diff --color-words
ok 36 - diff driver 'fortran' in Islandic
expecting success of 4034.37 'diff driver 'html'':
cp "$TEST_DIRECTORY/t4034/html/pre" \
"$TEST_DIRECTORY/t4034/html/post" \
"$TEST_DIRECTORY/t4034/html/expect" . &&
echo "* diff=html" >.gitattributes &&
word_diff --color-words
ok 37 - diff driver 'html'
expecting success of 4034.38 'diff driver 'html' in Islandic':
LANG=is_IS.UTF-8 LANGUAGE=is LC_ALL="$is_IS_locale" \
word_diff --color-words
ok 38 - diff driver 'html' in Islandic
expecting success of 4034.39 'diff driver 'java'':
cp "$TEST_DIRECTORY/t4034/java/pre" \
"$TEST_DIRECTORY/t4034/java/post" \
"$TEST_DIRECTORY/t4034/java/expect" . &&
echo "* diff=java" >.gitattributes &&
word_diff --color-words
ok 39 - diff driver 'java'
expecting success of 4034.40 'diff driver 'java' in Islandic':
LANG=is_IS.UTF-8 LANGUAGE=is LC_ALL="$is_IS_locale" \
word_diff --color-words
ok 40 - diff driver 'java' in Islandic
expecting success of 4034.41 'diff driver 'kotlin'':
cp "$TEST_DIRECTORY/t4034/kotlin/pre" \
"$TEST_DIRECTORY/t4034/kotlin/post" \
"$TEST_DIRECTORY/t4034/kotlin/expect" . &&
echo "* diff=kotlin" >.gitattributes &&
word_diff --color-words
ok 41 - diff driver 'kotlin'
expecting success of 4034.42 'diff driver 'kotlin' in Islandic':
LANG=is_IS.UTF-8 LANGUAGE=is LC_ALL="$is_IS_locale" \
word_diff --color-words
ok 42 - diff driver 'kotlin' in Islandic
expecting success of 4034.43 'diff driver 'matlab'':
cp "$TEST_DIRECTORY/t4034/matlab/pre" \
"$TEST_DIRECTORY/t4034/matlab/post" \
"$TEST_DIRECTORY/t4034/matlab/expect" . &&
echo "* diff=matlab" >.gitattributes &&
word_diff --color-words
ok 43 - diff driver 'matlab'
expecting success of 4034.44 'diff driver 'matlab' in Islandic':
LANG=is_IS.UTF-8 LANGUAGE=is LC_ALL="$is_IS_locale" \
word_diff --color-words
ok 44 - diff driver 'matlab' in Islandic
expecting success of 4034.45 'diff driver 'objc'':
cp "$TEST_DIRECTORY/t4034/objc/pre" \
"$TEST_DIRECTORY/t4034/objc/post" \
"$TEST_DIRECTORY/t4034/objc/expect" . &&
echo "* diff=objc" >.gitattributes &&
word_diff --color-words
ok 45 - diff driver 'objc'
expecting success of 4034.46 'diff driver 'objc' in Islandic':
LANG=is_IS.UTF-8 LANGUAGE=is LC_ALL="$is_IS_locale" \
word_diff --color-words
ok 46 - diff driver 'objc' in Islandic
expecting success of 4034.47 'diff driver 'pascal'':
cp "$TEST_DIRECTORY/t4034/pascal/pre" \
"$TEST_DIRECTORY/t4034/pascal/post" \
"$TEST_DIRECTORY/t4034/pascal/expect" . &&
echo "* diff=pascal" >.gitattributes &&
word_diff --color-words
ok 47 - diff driver 'pascal'
expecting success of 4034.48 'diff driver 'pascal' in Islandic':
LANG=is_IS.UTF-8 LANGUAGE=is LC_ALL="$is_IS_locale" \
word_diff --color-words
ok 48 - diff driver 'pascal' in Islandic
expecting success of 4034.49 'diff driver 'perl'':
cp "$TEST_DIRECTORY/t4034/perl/pre" \
"$TEST_DIRECTORY/t4034/perl/post" \
"$TEST_DIRECTORY/t4034/perl/expect" . &&
echo "* diff=perl" >.gitattributes &&
word_diff --color-words
ok 49 - diff driver 'perl'
expecting success of 4034.50 'diff driver 'perl' in Islandic':
LANG=is_IS.UTF-8 LANGUAGE=is LC_ALL="$is_IS_locale" \
word_diff --color-words
ok 50 - diff driver 'perl' in Islandic
expecting success of 4034.51 'diff driver 'php'':
cp "$TEST_DIRECTORY/t4034/php/pre" \
"$TEST_DIRECTORY/t4034/php/post" \
"$TEST_DIRECTORY/t4034/php/expect" . &&
echo "* diff=php" >.gitattributes &&
word_diff --color-words
ok 51 - diff driver 'php'
expecting success of 4034.52 'diff driver 'php' in Islandic':
LANG=is_IS.UTF-8 LANGUAGE=is LC_ALL="$is_IS_locale" \
word_diff --color-words
ok 52 - diff driver 'php' in Islandic
expecting success of 4034.53 'diff driver 'python'':
cp "$TEST_DIRECTORY/t4034/python/pre" \
"$TEST_DIRECTORY/t4034/python/post" \
"$TEST_DIRECTORY/t4034/python/expect" . &&
echo "* diff=python" >.gitattributes &&
word_diff --color-words
ok 53 - diff driver 'python'
expecting success of 4034.54 'diff driver 'python' in Islandic':
LANG=is_IS.UTF-8 LANGUAGE=is LC_ALL="$is_IS_locale" \
word_diff --color-words
ok 54 - diff driver 'python' in Islandic
expecting success of 4034.55 'diff driver 'ruby'':
cp "$TEST_DIRECTORY/t4034/ruby/pre" \
"$TEST_DIRECTORY/t4034/ruby/post" \
"$TEST_DIRECTORY/t4034/ruby/expect" . &&
echo "* diff=ruby" >.gitattributes &&
word_diff --color-words
ok 55 - diff driver 'ruby'
expecting success of 4034.56 'diff driver 'ruby' in Islandic':
LANG=is_IS.UTF-8 LANGUAGE=is LC_ALL="$is_IS_locale" \
word_diff --color-words
ok 56 - diff driver 'ruby' in Islandic
expecting success of 4034.57 'diff driver 'scheme'':
cp "$TEST_DIRECTORY/t4034/scheme/pre" \
"$TEST_DIRECTORY/t4034/scheme/post" \
"$TEST_DIRECTORY/t4034/scheme/expect" . &&
echo "* diff=scheme" >.gitattributes &&
word_diff --color-words
ok 57 - diff driver 'scheme'
expecting success of 4034.58 'diff driver 'scheme' in Islandic':
LANG=is_IS.UTF-8 LANGUAGE=is LC_ALL="$is_IS_locale" \
word_diff --color-words
ok 58 - diff driver 'scheme' in Islandic
expecting success of 4034.59 'diff driver 'tex'':
cp "$TEST_DIRECTORY/t4034/tex/pre" \
"$TEST_DIRECTORY/t4034/tex/post" \
"$TEST_DIRECTORY/t4034/tex/expect" . &&
echo "* diff=tex" >.gitattributes &&
word_diff --color-words
ok 59 - diff driver 'tex'
expecting success of 4034.60 'diff driver 'tex' in Islandic':
LANG=is_IS.UTF-8 LANGUAGE=is LC_ALL="$is_IS_locale" \
word_diff --color-words
ok 60 - diff driver 'tex' in Islandic
expecting success of 4034.61 'word-diff with diff.sbe':
cat >pre <<-\EOF &&
a
b
EOF
cat >post <<-\EOF &&
a
c
EOF
pre=$(git rev-parse --short $(git hash-object pre)) &&
post=$(git rev-parse --short $(git hash-object post)) &&
cat >expect <<-EOF &&
diff --git a/pre b/post
index $pre..$post 100644
--- a/pre
+++ b/post
@@ -1,3 +1,3 @@
a
[-b-]{+c+}
EOF
test_config diff.suppress-blank-empty true &&
word_diff --word-diff=plain
ok 61 - word-diff with diff.sbe
expecting success of 4034.62 'word-diff with no newline at EOF':
printf "%s" "a a a a a" >pre &&
printf "%s" "a a ab a a" >post &&
pre=$(git rev-parse --short $(git hash-object pre)) &&
post=$(git rev-parse --short $(git hash-object post)) &&
cat >expect <<-EOF &&
diff --git a/pre b/post
index $pre..$post 100644
--- a/pre
+++ b/post
@@ -1 +1 @@
a a [-a-]{+ab+} a a
EOF
word_diff --word-diff=plain
ok 62 - word-diff with no newline at EOF
expecting success of 4034.63 'setup history with two files':
echo "a b; c" >a.tex &&
echo "a b; c" >z.txt &&
git add a.tex z.txt &&
git commit -minitial &&
# modify both
echo "a bx; c" >a.tex &&
echo "a bx; c" >z.txt &&
git commit -mmodified -a
[master (root-commit) ec761f8] initial
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 a.tex
create mode 100644 z.txt
[master 475cd11] modified
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+), 2 deletions(-)
ok 63 - setup history with two files
expecting success of 4034.64 'wordRegex for the first file does not apply to the second':
echo "*.tex diff=tex" >.gitattributes &&
test_config diff.tex.wordRegex "[a-z]+|." &&
cat >expect <<-\EOF &&
diff --git a/a.tex b/a.tex
--- a/a.tex
+++ b/a.tex
@@ -1 +1 @@
a [-b-]{+bx+}; c
diff --git a/z.txt b/z.txt
--- a/z.txt
+++ b/z.txt
@@ -1 +1 @@
a [-b;-]{+bx;+} c
EOF
git diff --word-diff HEAD~ >actual &&
compare_diff_patch expect actual
ok 64 - wordRegex for the first file does not apply to the second
# passed all 64 test(s)
1..64
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4043-diff-rename-binary.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4043-diff-rename-binary/.git/
expecting success of 4043.1 'prepare repository':
git init &&
echo foo > foo &&
echo "barQ" | q_to_nul > bar &&
git add . &&
git commit -m "Initial commit"
Reinitialized existing Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4043-diff-rename-binary/.git/
[master (root-commit) 07508f6] Initial commit
Author: A U Thor <author@example.com>
2 files changed, 1 insertion(+)
create mode 100644 bar
create mode 100644 foo
ok 1 - prepare repository
expecting success of 4043.2 'move the files into a "sub" directory':
mkdir sub &&
git mv bar foo sub/ &&
git commit -m "Moved to sub/"
[master ebc8afa] Moved to sub/
Author: A U Thor <author@example.com>
2 files changed, 0 insertions(+), 0 deletions(-)
rename bar => sub/bar (100%)
rename foo => sub/foo (100%)
ok 2 - move the files into a "sub" directory
expecting success of 4043.3 'git show -C -C report renames':
git show -C -C --raw --binary --numstat >patch-with-stat &&
tail -n 11 patch-with-stat >current &&
test_cmp expected current
ok 3 - git show -C -C report renames
# passed all 3 test(s)
1..3
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4044-diff-index-unique-abbrev.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4044-diff-index-unique-abbrev/.git/
expecting success of 4044.1 'setup':
test_oid_cache <<-EOF &&
val1 sha1:4827
val1 sha256:5664
val2 sha1:11742
val2 sha256:10625
hash1 sha1:51d2738463ea4ca66f8691c91e33ce64b7d41bb1
hash1 sha256:ae31dfff0af93b2c62b0098a039b38569c43b0a7e97b873000ca42d128f27350
hasht1 sha1:51d27384
hasht1 sha256:ae31dfff
hash2 sha1:51d2738efb4ad8a1e40bed839ab8e116f0a15e47
hash2 sha256:ae31dffada88a46fd5f53c7ed5aa25a7a8951f1d5e88456c317c8d5484d263e5
hasht2 sha1:51d2738e
hasht2 sha256:ae31dffa
EOF
cat >expect_initial <<-EOF &&
100644 blob $(test_oid hash1) foo
EOF
cat >expect_update <<-EOF &&
100644 blob $(test_oid hash2) foo
EOF
test_oid val1 > foo &&
git add foo &&
git commit -m "initial" &&
git cat-file -p HEAD: > actual &&
test_cmp expect_initial actual &&
test_oid val2 > foo &&
git commit -a -m "update" &&
git cat-file -p HEAD: > actual &&
test_cmp expect_update actual
[master (root-commit) eaa2693] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo
[master 90cb371] update
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 1 - setup
expecting success of 4044.2 'diff does not produce ambiguous index line':
git diff HEAD^..HEAD | grep index > actual &&
test_cmp expect actual
ok 2 - diff does not produce ambiguous index line
# passed all 2 test(s)
1..2
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4046-diff-unmerged.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4046-diff-unmerged/.git/
expecting success of 4046.1 'setup':
for i in 0 1 2 3
do
blob=$(echo $i | git hash-object --stdin) &&
eval "blob$i=$blob" &&
eval "m$i=\"100644 \$blob$i $i\"" || return 1
done &&
paths= &&
for b in o x
do
for o in o x
do
for t in o x
do
path="$b$o$t" &&
case "$path" in ooo) continue ;; esac &&
paths="$paths$path " &&
p=" $path" &&
case "$b" in x) echo "$m1$p" ;; esac &&
case "$o" in x) echo "$m2$p" ;; esac &&
case "$t" in x) echo "$m3$p" ;; esac ||
return 1
done
done
done >ls-files-s.expect &&
git update-index --index-info <ls-files-s.expect &&
git ls-files -s >ls-files-s.actual &&
test_cmp ls-files-s.expect ls-files-s.actual
ok 1 - setup
expecting success of 4046.2 'diff-files -0':
for path in $paths
do
>"$path" &&
echo ":000000 100644 $ZERO_OID $ZERO_OID U $path" || return 1
done >diff-files-0.expect &&
git diff-files -0 >diff-files-0.actual &&
test_cmp diff-files-0.expect diff-files-0.actual
ok 2 - diff-files -0
expecting success of 4046.3 'diff-files -1':
for path in $paths
do
>"$path" &&
echo ":000000 100644 $ZERO_OID $ZERO_OID U $path" &&
case "$path" in
x??) echo ":100644 100644 $blob1 $ZERO_OID M $path"
esac || return 1
done >diff-files-1.expect &&
git diff-files -1 >diff-files-1.actual &&
test_cmp diff-files-1.expect diff-files-1.actual
ok 3 - diff-files -1
expecting success of 4046.4 'diff-files -2':
for path in $paths
do
>"$path" &&
echo ":000000 100644 $ZERO_OID $ZERO_OID U $path" &&
case "$path" in
?x?) echo ":100644 100644 $blob2 $ZERO_OID M $path"
esac || return 1
done >diff-files-2.expect &&
git diff-files -2 >diff-files-2.actual &&
test_cmp diff-files-2.expect diff-files-2.actual &&
git diff-files >diff-files-default-2.actual &&
test_cmp diff-files-2.expect diff-files-default-2.actual
ok 4 - diff-files -2
expecting success of 4046.5 'diff-files -3':
for path in $paths
do
>"$path" &&
echo ":000000 100644 $ZERO_OID $ZERO_OID U $path" &&
case "$path" in
??x) echo ":100644 100644 $blob3 $ZERO_OID M $path"
esac || return 1
done >diff-files-3.expect &&
git diff-files -3 >diff-files-3.actual &&
test_cmp diff-files-3.expect diff-files-3.actual
ok 5 - diff-files -3
expecting success of 4046.6 'diff --stat':
for path in $paths
do
echo " $path | Unmerged" || return 1
done >diff-stat.expect &&
echo " 0 files changed" >>diff-stat.expect &&
git diff --cached --stat >diff-stat.actual &&
test_cmp diff-stat.expect diff-stat.actual
ok 6 - diff --stat
# passed all 6 test(s)
1..6
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4041-diff-submodule-option.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4041-diff-submodule-option/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4041-diff-submodule-option/sm1/.git/
expecting success of 4041.1 'added submodule':
git add sm1 &&
git diff-index -p --submodule=log HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 0000000...$head1 (new submodule)
EOF
test_cmp expected actual
warning: adding embedded git repository: sm1
hint: You've added another git repository inside your current repository.
hint: Clones of the outer repository will not contain the contents of
hint: the embedded repository and will not know how to obtain it.
hint: If you meant to add a submodule, use:
hint:
hint: git submodule add <url> sm1
hint:
hint: If you added this path by mistake, you can remove it from the
hint: index with:
hint:
hint: git rm --cached sm1
hint:
hint: See "git help submodule" for more information.
ok 1 - added submodule
expecting success of 4041.2 'added submodule, set diff.submodule':
git config diff.submodule log &&
git add sm1 &&
git diff --cached >actual &&
cat >expected <<-EOF &&
Submodule sm1 0000000...$head1 (new submodule)
EOF
git config --unset diff.submodule &&
test_cmp expected actual
ok 2 - added submodule, set diff.submodule
expecting success of 4041.3 '--submodule=short overrides diff.submodule':
test_config diff.submodule log &&
git add sm1 &&
git diff --submodule=short --cached >actual &&
cat >expected <<-EOF &&
diff --git a/sm1 b/sm1
new file mode 160000
index 0000000..$head1
--- /dev/null
+++ b/sm1
@@ -0,0 +1 @@
+Subproject commit $fullhead1
EOF
test_cmp expected actual
ok 3 - --submodule=short overrides diff.submodule
expecting success of 4041.4 'diff.submodule does not affect plumbing':
test_config diff.submodule log &&
git diff-index -p HEAD >actual &&
cat >expected <<-EOF &&
diff --git a/sm1 b/sm1
new file mode 160000
index 0000000..$head1
--- /dev/null
+++ b/sm1
@@ -0,0 +1 @@
+Subproject commit $fullhead1
EOF
test_cmp expected actual
ok 4 - diff.submodule does not affect plumbing
expecting success of 4041.5 'modified submodule(forward)':
git diff-index -p --submodule=log HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 $head1..$head2:
> Add foo3 ($added foo3)
EOF
test_cmp expected actual
ok 5 - modified submodule(forward)
expecting success of 4041.6 'modified submodule(forward)':
git diff --submodule=log >actual &&
cat >expected <<-EOF &&
Submodule sm1 $head1..$head2:
> Add foo3 ($added foo3)
EOF
test_cmp expected actual
ok 6 - modified submodule(forward)
expecting success of 4041.7 'modified submodule(forward) --submodule':
git diff --submodule >actual &&
cat >expected <<-EOF &&
Submodule sm1 $head1..$head2:
> Add foo3 ($added foo3)
EOF
test_cmp expected actual
ok 7 - modified submodule(forward) --submodule
expecting success of 4041.8 'modified submodule(forward) --submodule=short':
git diff --submodule=short >actual &&
cat >expected <<-EOF &&
diff --git a/sm1 b/sm1
index $head1..$head2 160000
--- a/sm1
+++ b/sm1
@@ -1 +1 @@
-Subproject commit $fullhead1
+Subproject commit $fullhead2
EOF
test_cmp expected actual
ok 8 - modified submodule(forward) --submodule=short
expecting success of 4041.9 'modified submodule(backward)':
git diff-index -p --submodule=log HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 $head2..$head3 (rewind):
< Add foo3 ($added foo3)
< Add foo2 ($added foo2)
EOF
test_cmp expected actual
ok 9 - modified submodule(backward)
expecting success of 4041.10 'modified submodule(backward and forward)':
git diff-index -p --submodule=log HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 $head2...$head4:
> Add foo5 ($added foo5)
> Add foo4 ($added foo4)
< Add foo3 ($added foo3)
< Add foo2 ($added foo2)
EOF
test_cmp expected actual
ok 10 - modified submodule(backward and forward)
expecting success of 4041.11 'typechanged submodule(submodule->blob), --cached':
git diff --submodule=log --cached >actual &&
cat >expected <<-EOF &&
Submodule sm1 $head4...0000000 (submodule deleted)
diff --git a/sm1 b/sm1
new file mode 100644
index 0000000..$head5
--- /dev/null
+++ b/sm1
@@ -0,0 +1 @@
+sm1
EOF
test_cmp expected actual
ok 11 - typechanged submodule(submodule->blob), --cached
expecting success of 4041.12 'typechanged submodule(submodule->blob)':
git diff --submodule=log >actual &&
cat >expected <<-EOF &&
diff --git a/sm1 b/sm1
deleted file mode 100644
index $head5..0000000
--- a/sm1
+++ /dev/null
@@ -1 +0,0 @@
-sm1
Submodule sm1 0000000...$head4 (new submodule)
EOF
test_cmp expected actual
ok 12 - typechanged submodule(submodule->blob)
expecting success of 4041.13 'typechanged submodule(submodule->blob)':
git diff-index -p --submodule=log HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 $head4...0000000 (submodule deleted)
diff --git a/sm1 b/sm1
new file mode 100644
index 0000000..$head5
--- /dev/null
+++ b/sm1
@@ -0,0 +1 @@
+sm1
EOF
test_cmp expected actual
ok 13 - typechanged submodule(submodule->blob)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4041-diff-submodule-option/sm1/.git/
expecting success of 4041.14 'nonexistent commit':
git diff-index -p --submodule=log HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 $head4...$head6 (commits not present)
EOF
test_cmp expected actual
ok 14 - nonexistent commit
expecting success of 4041.15 'typechanged submodule(blob->submodule)':
git diff-index -p --submodule=log HEAD >actual &&
cat >expected <<-EOF &&
diff --git a/sm1 b/sm1
deleted file mode 100644
index $head5..0000000
--- a/sm1
+++ /dev/null
@@ -1 +0,0 @@
-sm1
Submodule sm1 0000000...$head6 (new submodule)
EOF
test_cmp expected actual
ok 15 - typechanged submodule(blob->submodule)
expecting success of 4041.16 'submodule is up to date':
git diff-index -p --submodule=log HEAD >actual &&
test_must_be_empty actual
ok 16 - submodule is up to date
expecting success of 4041.17 'submodule contains untracked content':
echo new > sm1/new-file &&
git diff-index -p --ignore-submodules=none --submodule=log HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 contains untracked content
EOF
test_cmp expected actual
ok 17 - submodule contains untracked content
expecting success of 4041.18 'submodule contains untracked content (untracked ignored)':
git diff-index -p --submodule=log HEAD >actual &&
test_must_be_empty actual
ok 18 - submodule contains untracked content (untracked ignored)
expecting success of 4041.19 'submodule contains untracked content (dirty ignored)':
git diff-index -p --ignore-submodules=dirty --submodule=log HEAD >actual &&
test_must_be_empty actual
ok 19 - submodule contains untracked content (dirty ignored)
expecting success of 4041.20 'submodule contains untracked content (all ignored)':
git diff-index -p --ignore-submodules=all --submodule=log HEAD >actual &&
test_must_be_empty actual
ok 20 - submodule contains untracked content (all ignored)
expecting success of 4041.21 'submodule contains untracked and modified content':
echo new > sm1/foo6 &&
git diff-index -p --ignore-submodules=none --submodule=log HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 contains untracked content
Submodule sm1 contains modified content
EOF
test_cmp expected actual
ok 21 - submodule contains untracked and modified content
expecting success of 4041.22 'submodule contains untracked and modified content (untracked ignored)':
echo new > sm1/foo6 &&
git diff-index -p --submodule=log HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 contains modified content
EOF
test_cmp expected actual
ok 22 - submodule contains untracked and modified content (untracked ignored)
expecting success of 4041.23 'submodule contains untracked and modified content (dirty ignored)':
echo new > sm1/foo6 &&
git diff-index -p --ignore-submodules=dirty --submodule=log HEAD >actual &&
test_must_be_empty actual
ok 23 - submodule contains untracked and modified content (dirty ignored)
expecting success of 4041.24 'submodule contains untracked and modified content (all ignored)':
echo new > sm1/foo6 &&
git diff-index -p --ignore-submodules --submodule=log HEAD >actual &&
test_must_be_empty actual
ok 24 - submodule contains untracked and modified content (all ignored)
expecting success of 4041.25 'submodule contains modified content':
rm -f sm1/new-file &&
git diff-index -p --submodule=log HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 contains modified content
EOF
test_cmp expected actual
ok 25 - submodule contains modified content
expecting success of 4041.26 'submodule is modified':
git diff-index -p --submodule=log HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 $head6..$head8:
> change
EOF
test_cmp expected actual
ok 26 - submodule is modified
expecting success of 4041.27 'modified submodule contains untracked content':
echo new > sm1/new-file &&
git diff-index -p --ignore-submodules=none --submodule=log HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 contains untracked content
Submodule sm1 $head6..$head8:
> change
EOF
test_cmp expected actual
ok 27 - modified submodule contains untracked content
expecting success of 4041.28 'modified submodule contains untracked content (untracked ignored)':
git diff-index -p --submodule=log HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 $head6..$head8:
> change
EOF
test_cmp expected actual
ok 28 - modified submodule contains untracked content (untracked ignored)
expecting success of 4041.29 'modified submodule contains untracked content (dirty ignored)':
git diff-index -p --ignore-submodules=dirty --submodule=log HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 $head6..$head8:
> change
EOF
test_cmp expected actual
ok 29 - modified submodule contains untracked content (dirty ignored)
expecting success of 4041.30 'modified submodule contains untracked content (all ignored)':
git diff-index -p --ignore-submodules=all --submodule=log HEAD >actual &&
test_must_be_empty actual
ok 30 - modified submodule contains untracked content (all ignored)
expecting success of 4041.31 'modified submodule contains untracked and modified content':
echo modification >> sm1/foo6 &&
git diff-index -p --ignore-submodules=none --submodule=log HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 contains untracked content
Submodule sm1 contains modified content
Submodule sm1 $head6..$head8:
> change
EOF
test_cmp expected actual
ok 31 - modified submodule contains untracked and modified content
expecting success of 4041.32 'modified submodule contains untracked and modified content (untracked ignored)':
echo modification >> sm1/foo6 &&
git diff-index -p --submodule=log HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 contains modified content
Submodule sm1 $head6..$head8:
> change
EOF
test_cmp expected actual
ok 32 - modified submodule contains untracked and modified content (untracked ignored)
expecting success of 4041.33 'modified submodule contains untracked and modified content (dirty ignored)':
echo modification >> sm1/foo6 &&
git diff-index -p --ignore-submodules=dirty --submodule=log HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 $head6..$head8:
> change
EOF
test_cmp expected actual
ok 33 - modified submodule contains untracked and modified content (dirty ignored)
expecting success of 4041.34 'modified submodule contains untracked and modified content (all ignored)':
echo modification >> sm1/foo6 &&
git diff-index -p --ignore-submodules --submodule=log HEAD >actual &&
test_must_be_empty actual
ok 34 - modified submodule contains untracked and modified content (all ignored)
expecting success of 4041.35 'modified submodule contains modified content':
rm -f sm1/new-file &&
git diff-index -p --submodule=log HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 contains modified content
Submodule sm1 $head6..$head8:
> change
EOF
test_cmp expected actual
ok 35 - modified submodule contains modified content
expecting success of 4041.36 'deleted submodule':
git diff-index -p --submodule=log HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 $head6...0000000 (submodule deleted)
EOF
test_cmp expected actual
ok 36 - deleted submodule
expecting success of 4041.37 'create second submodule':
test_create_repo sm2 &&
head7=$(add_file sm2 foo8 foo9) &&
git add sm2
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4041-diff-submodule-option/sm2/.git/
warning: adding embedded git repository: sm2
hint: You've added another git repository inside your current repository.
hint: Clones of the outer repository will not contain the contents of
hint: the embedded repository and will not know how to obtain it.
hint: If you meant to add a submodule, use:
hint:
hint: git submodule add <url> sm2
hint:
hint: If you added this path by mistake, you can remove it from the
hint: index with:
hint:
hint: git rm --cached sm2
hint:
hint: See "git help submodule" for more information.
ok 37 - create second submodule
expecting success of 4041.38 'multiple submodules':
git diff-index -p --submodule=log HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 $head6...0000000 (submodule deleted)
Submodule sm2 0000000...$head7 (new submodule)
EOF
test_cmp expected actual
ok 38 - multiple submodules
expecting success of 4041.39 'path filter':
git diff-index -p --submodule=log HEAD sm2 >actual &&
cat >expected <<-EOF &&
Submodule sm2 0000000...$head7 (new submodule)
EOF
test_cmp expected actual
ok 39 - path filter
expecting success of 4041.40 'given commit':
git diff-index -p --submodule=log HEAD^ >actual &&
cat >expected <<-EOF &&
Submodule sm1 $head6...0000000 (submodule deleted)
Submodule sm2 0000000...$head7 (new submodule)
EOF
test_cmp expected actual
ok 40 - given commit
expecting success of 4041.41 'given commit --submodule':
git diff-index -p --submodule HEAD^ >actual &&
cat >expected <<-EOF &&
Submodule sm1 $head6...0000000 (submodule deleted)
Submodule sm2 0000000...$head7 (new submodule)
EOF
test_cmp expected actual
ok 41 - given commit --submodule
expecting success of 4041.42 'given commit --submodule=short':
git diff-index -p --submodule=short HEAD^ >actual &&
cat >expected <<-EOF &&
diff --git a/sm1 b/sm1
deleted file mode 160000
index $head6..0000000
--- a/sm1
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit $fullhead6
diff --git a/sm2 b/sm2
new file mode 160000
index 0000000..$head7
--- /dev/null
+++ b/sm2
@@ -0,0 +1 @@
+Subproject commit $fullhead7
EOF
test_cmp expected actual
ok 42 - given commit --submodule=short
expecting success of 4041.43 'setup .git file for sm2':
(cd sm2 &&
REAL="$(pwd)/../.real" &&
mv .git "$REAL" &&
echo "gitdir: $REAL" >.git)
ok 43 - setup .git file for sm2
expecting success of 4041.44 'diff --submodule with .git file':
git diff --submodule HEAD^ >actual &&
cat >expected <<-EOF &&
Submodule sm1 $head6...0000000 (submodule deleted)
Submodule sm2 0000000...$head7 (new submodule)
EOF
test_cmp expected actual
ok 44 - diff --submodule with .git file
expecting success of 4041.45 'diff --submodule with objects referenced by alternates':
mkdir sub_alt &&
(cd sub_alt &&
git init &&
echo a >a &&
git add a &&
git commit -m a
) &&
mkdir super &&
(cd super &&
git clone -s ../sub_alt sub &&
git init &&
git add sub &&
git commit -m "sub a"
) &&
(cd sub_alt &&
sha1_before=$(git rev-parse --short HEAD) &&
echo b >b &&
git add b &&
git commit -m b &&
sha1_after=$(git rev-parse --short HEAD) &&
{
echo "Submodule sub $sha1_before..$sha1_after:" &&
echo " > b"
} >../expected
) &&
(cd super &&
(cd sub &&
git fetch &&
git checkout origin/main
) &&
git diff --submodule > ../actual
) &&
test_cmp expected actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4041-diff-submodule-option/sub_alt/.git/
[main (root-commit) b7442a0] a
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 a
Cloning into 'sub'...
done.
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4041-diff-submodule-option/super/.git/
warning: adding embedded git repository: sub
hint: You've added another git repository inside your current repository.
hint: Clones of the outer repository will not contain the contents of
hint: the embedded repository and will not know how to obtain it.
hint: If you meant to add a submodule, use:
hint:
hint: git submodule add <url> sub
hint:
hint: If you added this path by mistake, you can remove it from the
hint: index with:
hint:
hint: git rm --cached sub
hint:
hint: See "git help submodule" for more information.
[main (root-commit) d9c5753] sub a
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 160000 sub
[main 8e02ef5] b
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 b
From /<<PKGBUILDDIR>>/t/trash directory.t4041-diff-submodule-option/super/../sub_alt
b7442a0..8e02ef5 main -> origin/main
Note: switching to 'origin/main'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 8e02ef5 b
ok 45 - diff --submodule with objects referenced by alternates
# passed all 45 test(s)
1..45
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4038-diff-combined.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4038-diff-combined/.git/
expecting success of 4038.1 'setup':
>file &&
git add file &&
test_tick &&
git commit -m initial &&
git branch withone &&
git branch sansone &&
git checkout withone &&
setup_helper one withone sidewithone &&
git checkout sansone &&
setup_helper "" sansone sidesansone
[main (root-commit) 1bd44cb] initial
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file
Switched to branch 'withone'
[withone 61ad3a5] withone
Author: A U Thor <author@example.com>
1 file changed, 4 insertions(+)
Switched to branch 'sidewithone'
[sidewithone 04e7a65] sidewithone
Author: A U Thor <author@example.com>
1 file changed, 4 insertions(+)
Auto-merging file
CONFLICT (content): Merge conflict in file
Automatic merge failed; fix conflicts and then commit the result.
[sidewithone 70465e9] merge withone into sidewithone
Author: A U Thor <author@example.com>
Switched to branch 'sansone'
[sansone e4cdba2] sansone
Author: A U Thor <author@example.com>
1 file changed, 3 insertions(+)
Switched to branch 'sidesansone'
[sidesansone d31bb1b] sidesansone
Author: A U Thor <author@example.com>
1 file changed, 3 insertions(+)
Auto-merging file
CONFLICT (content): Merge conflict in file
Automatic merge failed; fix conflicts and then commit the result.
[sidesansone a02eb57] merge sansone into sidesansone
Author: A U Thor <author@example.com>
ok 1 - setup
expecting success of 4038.2 'check combined output (1)':
git show sidewithone -- >sidewithone &&
verify_helper sidewithone
ok 2 - check combined output (1)
expecting success of 4038.3 'check combined output (1) with git diff <rev>^!':
git diff sidewithone^! -- >sidewithone &&
verify_helper sidewithone
ok 3 - check combined output (1) with git diff <rev>^!
expecting success of 4038.4 'check combined output (2)':
git show sidesansone -- >sidesansone &&
verify_helper sidesansone
ok 4 - check combined output (2)
expecting success of 4038.5 'check combined output (2) with git diff <rev>^!':
git diff sidesansone^! -- >sidesansone &&
verify_helper sidesansone
ok 5 - check combined output (2) with git diff <rev>^!
expecting success of 4038.6 'diagnose truncated file':
>file &&
git add file &&
git commit --amend -C HEAD &&
git show >out &&
grep "diff --cc file" out
[sidesansone 3fd518e] merge sansone into sidesansone
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:19:13 2005 -0700
diff --cc file
ok 6 - diagnose truncated file
expecting success of 4038.7 'setup for --cc --raw':
blob=$(echo file | git hash-object --stdin -w) &&
base_tree=$(echo "100644 blob $blob file" | git mktree) &&
trees= &&
for i in $(test_seq 1 40)
do
blob=$(echo file$i | git hash-object --stdin -w) &&
trees="$trees$(echo "100644 blob $blob file" | git mktree)$LF" || return 1
done
ok 7 - setup for --cc --raw
expecting success of 4038.8 'check --cc --raw with four trees':
four_trees=$(echo "$trees" | sed -e 4q) &&
git diff --cc --raw $four_trees $base_tree >out &&
# Check for four leading colons in the output:
grep "^::::[^:]" out
::::100644 100644 100644 100644 100644 6c493ff 7c8ac2f bfd6a65 f73f309 e212970 MMMM file
ok 8 - check --cc --raw with four trees
expecting success of 4038.9 'check --cc --raw with forty trees':
git diff --cc --raw $trees $base_tree >out &&
# Check for forty leading colons in the output:
grep "^::::::::::::::::::::::::::::::::::::::::[^:]" out
::::::::::::::::::::::::::::::::::::::::100644 100644 100644 100644 100644 100644 100644 100644 100644 100644 100644 100644 100644 100644 100644 100644 100644 100644 100644 100644 100644 100644 100644 100644 100644 100644 100644 100644 100644 100644 100644 100644 100644 100644 100644 100644 100644 100644 100644 100644 100644 6c493ff 7c8ac2f bfd6a65 4806cb9 8d80099 c52d680 efe3974 2050b92 07205b5 e1aa36f dd63810 d7a00d8 b5ac9e5 c76bce1 1d22d08 1b22815 10a5e40 e78cb60 1b9d597 e4c0bb4 536442d 9e692b7 02e835e 4bed7f0 ae12143 7202624 4c12e08 33b3d68 a633d0e a1d5983 c1288dc eb6edd8 769381d 9089a6c 83be741 3a76ef8 67335ff 834f228 62e8e47 f73f309 e212970 MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM file
ok 9 - check --cc --raw with forty trees
expecting success of 4038.10 'setup combined ignore spaces':
git checkout main &&
>test &&
git add test &&
git commit -m initial &&
tr -d Q <<-\EOF >test &&
always coalesce
eol space coalesce Q
space change coalesce
all spa ces coalesce
eol spaces Q
space change
all spa ces
EOF
git commit -m "test space change" -a &&
git checkout -b side HEAD^ &&
tr -d Q <<-\EOF >test &&
always coalesce
eol space coalesce
space change coalesce
all spaces coalesce
eol spaces
space change
all spaces
EOF
git commit -m "test other space changes" -a &&
test_must_fail git merge main &&
tr -d Q <<-\EOF >test &&
eol spaces Q
space change
all spa ces
EOF
git commit -m merged -a
Switched to branch 'main'
[main ac9d179] initial
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 test
[main c5936ee] test space change
Author: A U Thor <author@example.com>
1 file changed, 7 insertions(+)
Switched to a new branch 'side'
[side 29c6253] test other space changes
Author: A U Thor <author@example.com>
1 file changed, 7 insertions(+)
Auto-merging test
CONFLICT (content): Merge conflict in test
Automatic merge failed; fix conflicts and then commit the result.
[side 373c494] merged
Author: A U Thor <author@example.com>
ok 10 - setup combined ignore spaces
expecting success of 4038.11 'check combined output (no ignore space)':
git show >actual.tmp &&
sed -e "1,/^@@@/d" < actual.tmp >actual &&
tr -d Q <<-\EOF >expected &&
--always coalesce
- eol space coalesce
- space change coalesce
- all spaces coalesce
- eol spaces
- space change
- all spaces
-eol space coalesce Q
-space change coalesce
-all spa ces coalesce
+ eol spaces Q
+ space change
+ all spa ces
EOF
compare_diff_patch expected actual
ok 11 - check combined output (no ignore space)
expecting success of 4038.12 'check combined output (ignore space at eol)':
git show --ignore-space-at-eol >actual.tmp &&
sed -e "1,/^@@@/d" < actual.tmp >actual &&
tr -d Q <<-\EOF >expected &&
--always coalesce
--eol space coalesce
- space change coalesce
- all spaces coalesce
-space change coalesce
-all spa ces coalesce
eol spaces Q
- space change
- all spaces
+ space change
+ all spa ces
EOF
compare_diff_patch expected actual
ok 12 - check combined output (ignore space at eol)
expecting success of 4038.13 'check combined output (ignore space change)':
git show -b >actual.tmp &&
sed -e "1,/^@@@/d" < actual.tmp >actual &&
tr -d Q <<-\EOF >expected &&
--always coalesce
--eol space coalesce
--space change coalesce
- all spaces coalesce
-all spa ces coalesce
eol spaces Q
space change
- all spaces
+ all spa ces
EOF
compare_diff_patch expected actual
ok 13 - check combined output (ignore space change)
expecting success of 4038.14 'check combined output (ignore all spaces)':
git show -w >actual.tmp &&
sed -e "1,/^@@@/d" < actual.tmp >actual &&
tr -d Q <<-\EOF >expected &&
--always coalesce
--eol space coalesce
--space change coalesce
--all spaces coalesce
eol spaces Q
space change
all spa ces
EOF
compare_diff_patch expected actual
ok 14 - check combined output (ignore all spaces)
expecting success of 4038.15 'combine diff coalesce simple':
>test &&
git add test &&
git commit -m initial &&
test_seq 4 >test &&
git commit -a -m empty1 &&
git branch side1 &&
git checkout HEAD^ &&
test_seq 5 >test &&
git commit -a -m empty2 &&
test_must_fail git merge side1 &&
>test &&
git commit -a -m merge &&
git show >actual.tmp &&
sed -e "1,/^@@@/d" < actual.tmp >actual &&
tr -d Q <<-\EOF >expected &&
--1
--2
--3
--4
- 5
EOF
compare_diff_patch expected actual
[side ca25ef5] initial
Author: A U Thor <author@example.com>
1 file changed, 3 deletions(-)
[side 2f38b7d] empty1
Author: A U Thor <author@example.com>
1 file changed, 4 insertions(+)
Note: switching to 'HEAD^'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at ca25ef5 initial
[detached HEAD a65ae3c] empty2
Author: A U Thor <author@example.com>
1 file changed, 5 insertions(+)
Auto-merging test
CONFLICT (content): Merge conflict in test
Automatic merge failed; fix conflicts and then commit the result.
[detached HEAD 8ab2551] merge
Author: A U Thor <author@example.com>
ok 15 - combine diff coalesce simple
expecting success of 4038.16 'combine diff coalesce tricky':
>test &&
git add test &&
git commit -m initial --allow-empty &&
cat <<-\EOF >test &&
3
1
2
3
4
EOF
git commit -a -m empty1 &&
git branch -f side1 &&
git checkout HEAD^ &&
cat <<-\EOF >test &&
1
3
5
4
EOF
git commit -a -m empty2 &&
git branch -f side2 &&
test_must_fail git merge side1 &&
>test &&
git commit -a -m merge &&
git show >actual.tmp &&
sed -e "1,/^@@@/d" < actual.tmp >actual &&
tr -d Q <<-\EOF >expected &&
-3
--1
-2
--3
- 5
--4
EOF
compare_diff_patch expected actual &&
git checkout -f side1 &&
test_must_fail git merge side2 &&
>test &&
git commit -a -m merge &&
git show >actual.tmp &&
sed -e "1,/^@@@/d" < actual.tmp >actual &&
tr -d Q <<-\EOF >expected &&
- 3
--1
- 2
--3
-5
--4
EOF
compare_diff_patch expected actual
[detached HEAD 567514d] initial
Author: A U Thor <author@example.com>
[detached HEAD edcd94a] empty1
Author: A U Thor <author@example.com>
1 file changed, 5 insertions(+)
Previous HEAD position was edcd94a empty1
HEAD is now at 567514d initial
[detached HEAD 4e10910] empty2
Author: A U Thor <author@example.com>
1 file changed, 4 insertions(+)
Auto-merging test
CONFLICT (content): Merge conflict in test
Automatic merge failed; fix conflicts and then commit the result.
[detached HEAD 2f37ae9] merge
Author: A U Thor <author@example.com>
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
2f37ae9 merge
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 2f37ae9
Switched to branch 'side1'
Auto-merging test
CONFLICT (content): Merge conflict in test
Automatic merge failed; fix conflicts and then commit the result.
[side1 33886e5] merge
Author: A U Thor <author@example.com>
ok 16 - combine diff coalesce tricky
checking known breakage of 4038.17 'combine diff coalesce three parents':
>test &&
git add test &&
git commit -m initial --allow-empty &&
cat <<-\EOF >test &&
3
1
2
3
4
EOF
git commit -a -m empty1 &&
git checkout -B side1 &&
git checkout HEAD^ &&
cat <<-\EOF >test &&
1
3
7
5
4
EOF
git commit -a -m empty2 &&
git branch -f side2 &&
git checkout HEAD^ &&
cat <<-\EOF >test &&
3
1
6
5
4
EOF
git commit -a -m empty3 &&
>test &&
git add test &&
TREE=$(git write-tree) &&
COMMIT=$(git commit-tree -p HEAD -p side1 -p side2 -m merge $TREE) &&
git show $COMMIT >actual.tmp &&
sed -e "1,/^@@@/d" < actual.tmp >actual &&
tr -d Q <<-\EOF >expected &&
-- 3
---1
- 6
- 2
--3
-7
- -5
---4
EOF
compare_diff_patch expected actual
[side1 562f35c] initial
Author: A U Thor <author@example.com>
[side1 f31b6a2] empty1
Author: A U Thor <author@example.com>
1 file changed, 5 insertions(+)
Reset branch 'side1'
Note: switching to 'HEAD^'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 562f35c initial
[detached HEAD 0cc2d14] empty2
Author: A U Thor <author@example.com>
1 file changed, 5 insertions(+)
Previous HEAD position was 0cc2d14 empty2
HEAD is now at 562f35c initial
[detached HEAD 22de592] empty3
Author: A U Thor <author@example.com>
1 file changed, 5 insertions(+)
--- .tmp-1 2023-10-09 02:19:44.849122138 +0000
+++ .tmp-2 2023-10-09 02:19:44.853122134 +0000
@@ -1,8 +1,9 @@
-- 3
---1
- 6
+- 5
- 2
--3
-7
-- -5
+ -5
---4
not ok 17 - combine diff coalesce three parents # TODO known breakage
expecting success of 4038.18 'combine diff missing delete bug':
git commit -m initial --allow-empty &&
cat <<-\EOF >test &&
1
2
3
4
EOF
git add test &&
git commit -a -m side1 &&
git checkout -B side1 &&
git checkout HEAD^ &&
cat <<-\EOF >test &&
0
1
2
3
4modified
EOF
git add test &&
git commit -m side2 &&
git branch -f side2 &&
test_must_fail git merge --no-commit side1 &&
cat <<-\EOF >test &&
1
2
3
4modified
EOF
git add test &&
git commit -a -m merge &&
git diff-tree -c -p HEAD >actual.tmp &&
sed -e "1,/^@@@/d" < actual.tmp >actual &&
tr -d Q <<-\EOF >expected &&
- 0
1
2
3
-4
+4modified
EOF
compare_diff_patch expected actual
[detached HEAD 78a948b] initial
Author: A U Thor <author@example.com>
1 file changed, 5 deletions(-)
[detached HEAD dd67d51] side1
Author: A U Thor <author@example.com>
1 file changed, 4 insertions(+)
Switched to and reset branch 'side1'
Note: switching to 'HEAD^'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 78a948b initial
[detached HEAD bb8b62e] side2
Author: A U Thor <author@example.com>
1 file changed, 5 insertions(+)
Auto-merging test
CONFLICT (content): Merge conflict in test
Automatic merge failed; fix conflicts and then commit the result.
[detached HEAD 9dfd023] merge
Author: A U Thor <author@example.com>
ok 18 - combine diff missing delete bug
expecting success of 4038.19 'combine diff gets tree sorting right':
# create a directory and a file that sort differently in trees
# versus byte-wise (implied "/" sorts after ".")
git checkout -f main &&
mkdir foo &&
echo base >foo/one &&
echo base >foo/two &&
echo base >foo.ext &&
git add foo foo.ext &&
git commit -m base &&
# one side modifies a file in the directory, along with the root
# file...
echo main >foo/one &&
echo main >foo.ext &&
git commit -a -m main &&
# the other side modifies the other file in the directory
git checkout -b other HEAD^ &&
echo other >foo/two &&
git commit -a -m other &&
# And now we merge. The files in the subdirectory will resolve cleanly,
# meaning that a combined diff will not find them interesting. But it
# will find the tree itself interesting, because it had to be merged.
git checkout main &&
git merge other &&
printf "MM\tfoo\n" >expect &&
git diff-tree -c --name-status -t HEAD >actual.tmp &&
sed 1d <actual.tmp >actual &&
test_cmp expect actual
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
9dfd023 merge
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 9dfd023
Switched to branch 'main'
[main eeef54b] base
Author: A U Thor <author@example.com>
3 files changed, 3 insertions(+)
create mode 100644 foo.ext
create mode 100644 foo/one
create mode 100644 foo/two
[main 181761f] main
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+), 2 deletions(-)
Switched to a new branch 'other'
[other 387c20f] other
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to branch 'main'
Merge made by the 'ort' strategy.
foo/two | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
ok 19 - combine diff gets tree sorting right
expecting success of 4038.20 'setup for --combined-all-paths':
git branch side1c &&
git branch side2c &&
git checkout side1c &&
test_seq 1 10 >filename-side1c &&
side1cf=$(git hash-object filename-side1c) &&
git add filename-side1c &&
git commit -m with &&
git checkout side2c &&
test_seq 1 9 >filename-side2c &&
echo ten >>filename-side2c &&
side2cf=$(git hash-object filename-side2c) &&
git add filename-side2c &&
git commit -m iam &&
git checkout -b mergery side1c &&
git merge --no-commit side2c &&
git rm filename-side1c &&
echo eleven >>filename-side2c &&
git mv filename-side2c filename-merged &&
mergedf=$(git hash-object filename-merged) &&
git add filename-merged &&
git commit
Switched to branch 'side1c'
[side1c 7d5dd18] with
Author: A U Thor <author@example.com>
1 file changed, 10 insertions(+)
create mode 100644 filename-side1c
Switched to branch 'side2c'
[side2c aa5d645] iam
Author: A U Thor <author@example.com>
1 file changed, 10 insertions(+)
create mode 100644 filename-side2c
Switched to a new branch 'mergery'
Automatic merge went well; stopped before committing as requested
rm 'filename-side1c'
[mergery 187df53] Merge branch 'side2c' into mergery
Author: A U Thor <author@example.com>
ok 20 - setup for --combined-all-paths
expecting success of 4038.21 '--combined-all-paths and --raw':
cat <<-EOF >expect &&
::100644 100644 100644 $side1cf $side2cf $mergedf RR filename-side1c filename-side2c filename-merged
EOF
git diff-tree -c -M --raw --combined-all-paths HEAD >actual.tmp &&
sed 1d <actual.tmp >actual &&
test_cmp expect actual
ok 21 - --combined-all-paths and --raw
expecting success of 4038.22 '--combined-all-paths and --cc':
cat <<-\EOF >expect &&
--- a/filename-side1c
--- a/filename-side2c
+++ b/filename-merged
EOF
git diff-tree --cc -M --combined-all-paths HEAD >actual.tmp &&
grep ^[-+][-+][-+] <actual.tmp >actual &&
test_cmp expect actual
ok 22 - --combined-all-paths and --cc
checking prerequisite: FUNNYNAMES
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-FUNNYNAMES" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-FUNNYNAMES" &&
test_have_prereq !MINGW &&
touch -- \
"FUNNYNAMES tab embedded" \
"FUNNYNAMES \"quote embedded\"" \
"FUNNYNAMES newline
embedded" 2>/dev/null &&
rm -- \
"FUNNYNAMES tab embedded" \
"FUNNYNAMES \"quote embedded\"" \
"FUNNYNAMES newline
embedded" 2>/dev/null
)
prerequisite FUNNYNAMES ok
expecting success of 4038.23 'setup for --combined-all-paths with funny names':
git branch side1d &&
git branch side2d &&
git checkout side1d &&
test_seq 1 10 >"$(printf "file\twith\ttabs")" &&
git add file* &&
side1df=$(git hash-object *tabs) &&
git commit -m with &&
git checkout side2d &&
test_seq 1 9 >"$(printf "i\tam\ttabbed")" &&
echo ten >>"$(printf "i\tam\ttabbed")" &&
git add *tabbed &&
side2df=$(git hash-object *tabbed) &&
git commit -m iam &&
git checkout -b funny-names-mergery side1d &&
git merge --no-commit side2d &&
git rm *tabs &&
echo eleven >>"$(printf "i\tam\ttabbed")" &&
git mv "$(printf "i\tam\ttabbed")" "$(printf "fickle\tnaming")" &&
git add fickle* &&
headf=$(git hash-object fickle*) &&
git commit &&
head=$(git rev-parse HEAD)
Switched to branch 'side1d'
[side1d 5a91728] with
Author: A U Thor <author@example.com>
1 file changed, 10 insertions(+)
create mode 100644 "file\twith\ttabs"
Switched to branch 'side2d'
[side2d 794a3e3] iam
Author: A U Thor <author@example.com>
1 file changed, 10 insertions(+)
create mode 100644 "i\tam\ttabbed"
Switched to a new branch 'funny-names-mergery'
Automatic merge went well; stopped before committing as requested
rm 'file with tabs'
[funny-names-mergery 371ce66] Merge branch 'side2d' into funny-names-mergery
Author: A U Thor <author@example.com>
ok 23 - setup for --combined-all-paths with funny names
expecting success of 4038.24 '--combined-all-paths and --raw and funny names':
cat <<-EOF >expect &&
::100644 100644 100644 $side1df $side2df $headf RR "file\twith\ttabs" "i\tam\ttabbed" "fickle\tnaming"
EOF
git diff-tree -c -M --raw --combined-all-paths HEAD >actual.tmp &&
sed 1d <actual.tmp >actual &&
test_cmp expect actual
ok 24 - --combined-all-paths and --raw and funny names
expecting success of 4038.25 '--combined-all-paths and --raw -and -z and funny names':
printf "$head\0::100644 100644 100644 $side1df $side2df $headf RR\0file\twith\ttabs\0i\tam\ttabbed\0fickle\tnaming\0" >expect &&
git diff-tree -c -M --raw --combined-all-paths -z HEAD >actual &&
test_cmp expect actual
ok 25 - --combined-all-paths and --raw -and -z and funny names
expecting success of 4038.26 '--combined-all-paths and --cc and funny names':
cat <<-\EOF >expect &&
--- "a/file\twith\ttabs"
--- "a/i\tam\ttabbed"
+++ "b/fickle\tnaming"
EOF
git diff-tree --cc -M --combined-all-paths HEAD >actual.tmp &&
grep ^[-+][-+][-+] <actual.tmp >actual &&
test_cmp expect actual
ok 26 - --combined-all-paths and --cc and funny names
# still have 1 known breakage(s)
# passed all remaining 25 test(s)
1..26
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4049-diff-stat-count.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4049-diff-stat-count/.git/
expecting success of 4049.1 'setup':
>a &&
>b &&
>c &&
>d &&
git add a b c d &&
git commit -m initial
[master (root-commit) 000d1c1] initial
Author: A U Thor <author@example.com>
4 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 a
create mode 100644 b
create mode 100644 c
create mode 100644 d
ok 1 - setup
expecting success of 4049.2 'mode-only change show as a 0-line change':
git reset --hard &&
test_chmod +x b d &&
echo a >a &&
echo c >c &&
cat >expect <<-\EOF &&
a | 1 +
b | 0
...
4 files changed, 2 insertions(+)
EOF
git diff --stat --stat-count=2 HEAD >actual &&
test_cmp expect actual
HEAD is now at 000d1c1 initial
ok 2 - mode-only change show as a 0-line change
expecting success of 4049.3 'binary changes do not count in lines':
git reset --hard &&
echo a >a &&
echo c >c &&
cat "$TEST_DIRECTORY"/test-binary-1.png >d &&
cat >expect <<-\EOF &&
a | 1 +
c | 1 +
...
3 files changed, 2 insertions(+)
EOF
git diff --stat --stat-count=2 >actual &&
test_cmp expect actual
HEAD is now at 000d1c1 initial
ok 3 - binary changes do not count in lines
expecting success of 4049.4 'exclude unmerged entries from total file count':
git reset --hard &&
echo a >a &&
echo b >b &&
git ls-files -s a >x &&
git rm -f d &&
for stage in 1 2 3
do
sed -e "s/ 0 a/ $stage d/" x || return 1
done |
git update-index --index-info &&
echo d >d &&
cat >expect <<-\EOF &&
a | 1 +
b | 1 +
...
3 files changed, 3 insertions(+)
EOF
git diff --stat --stat-count=2 >actual &&
test_cmp expect actual
HEAD is now at 000d1c1 initial
rm 'd'
ok 4 - exclude unmerged entries from total file count
# passed all 4 test(s)
1..4
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4048-diff-combined-binary.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4048-diff-combined-binary/.git/
expecting success of 4048.1 'setup binary merge conflict':
echo oneQ1 | q_to_nul >binary &&
git add binary &&
git commit -m one &&
echo twoQ2 | q_to_nul >binary &&
git commit -a -m two &&
two=$(git rev-parse --short HEAD:binary) &&
git checkout -b branch-binary HEAD^ &&
echo threeQ3 | q_to_nul >binary &&
git commit -a -m three &&
three=$(git rev-parse --short HEAD:binary) &&
test_must_fail git merge main &&
echo resolvedQhooray | q_to_nul >binary &&
git commit -a -m resolved &&
res=$(git rev-parse --short HEAD:binary)
[main (root-commit) 4aaee60] one
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 binary
[main 37524dd] two
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
Switched to a new branch 'branch-binary'
[branch-binary f388a1d] three
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
warning: Cannot merge binary files: binary (HEAD vs. main)
Auto-merging binary
CONFLICT (content): Merge conflict in binary
Automatic merge failed; fix conflicts and then commit the result.
[branch-binary bc3cee3] resolved
Author: A U Thor <author@example.com>
ok 1 - setup binary merge conflict
expecting success of 4048.2 'diff -m indicates binary-ness':
git show --format=%s -m >actual &&
test_cmp expect actual
ok 2 - diff -m indicates binary-ness
expecting success of 4048.3 'diff -c indicates binary-ness':
git show --format=%s -c >actual &&
test_cmp expect actual
ok 3 - diff -c indicates binary-ness
expecting success of 4048.4 'diff --cc indicates binary-ness':
git show --format=%s --cc >actual &&
test_cmp expect actual
ok 4 - diff --cc indicates binary-ness
expecting success of 4048.5 'setup non-binary with binary attribute':
git checkout main &&
test_commit one text &&
test_commit two text &&
two=$(git rev-parse --short HEAD:text) &&
git checkout -b branch-text HEAD^ &&
test_commit three text &&
three=$(git rev-parse --short HEAD:text) &&
test_must_fail git merge main &&
test_commit resolved text &&
res=$(git rev-parse --short HEAD:text) &&
echo text -diff >.gitattributes
Switched to branch 'main'
[main faa5b8e] one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 text
[main 84c76a1] two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to a new branch 'branch-text'
[branch-text 9b74371] three
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Auto-merging text
CONFLICT (content): Merge conflict in text
Automatic merge failed; fix conflicts and then commit the result.
[branch-text c916fed] resolved
Author: A U Thor <author@example.com>
ok 5 - setup non-binary with binary attribute
expecting success of 4048.6 'diff -m respects binary attribute':
git show --format=%s -m >actual &&
test_cmp expect actual
ok 6 - diff -m respects binary attribute
expecting success of 4048.7 'diff -c respects binary attribute':
git show --format=%s -c >actual &&
test_cmp expect actual
ok 7 - diff -c respects binary attribute
expecting success of 4048.8 'diff --cc respects binary attribute':
git show --format=%s --cc >actual &&
test_cmp expect actual
ok 8 - diff --cc respects binary attribute
expecting success of 4048.9 'setup textconv attribute':
echo "text diff=upcase" >.gitattributes &&
git config diff.upcase.textconv "tr a-z A-Z <"
ok 9 - setup textconv attribute
expecting success of 4048.10 'diff -m respects textconv attribute':
git show --format=%s -m >actual &&
test_cmp expect actual
ok 10 - diff -m respects textconv attribute
expecting success of 4048.11 'diff -c respects textconv attribute':
git show --format=%s -c >actual &&
test_cmp expect actual
ok 11 - diff -c respects textconv attribute
expecting success of 4048.12 'diff --cc respects textconv attribute':
git show --format=%s --cc >actual &&
test_cmp expect actual
ok 12 - diff --cc respects textconv attribute
expecting success of 4048.13 'diff-tree plumbing does not respect textconv':
git diff-tree HEAD -c -p >full &&
tail -n +2 full >actual &&
test_cmp expect actual
ok 13 - diff-tree plumbing does not respect textconv
expecting success of 4048.14 'diff --cc respects textconv on worktree file':
git reset --hard HEAD^ &&
test_must_fail git merge main &&
git diff >actual &&
test_cmp expect actual
HEAD is now at 9b74371 three
Auto-merging text
CONFLICT (content): Merge conflict in text
Automatic merge failed; fix conflicts and then commit the result.
ok 14 - diff --cc respects textconv on worktree file
# passed all 14 test(s)
1..14
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4045-diff-relative.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4045-diff-relative/.git/
expecting success of 4045.1 'setup':
git commit --allow-empty -m empty &&
echo content >file1 &&
mkdir subdir &&
echo other content >subdir/file2 &&
blob_file1=$(git hash-object file1) &&
blob_file2=$(git hash-object subdir/file2) &&
git add . &&
git commit -m one
[master (root-commit) f4030cd] empty
Author: A U Thor <author@example.com>
[master e528d0d] one
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 file1
create mode 100644 subdir/file2
ok 1 - setup
expecting success of 4045.2 '-p --relative=subdir/':
git -C '.' diff -p --relative=subdir/ HEAD^ >actual &&
test_cmp expected actual
ok 2 - -p --relative=subdir/
expecting success of 4045.3 '-p --relative=subdir':
git -C '.' diff -p --relative=subdir HEAD^ >actual &&
test_cmp expected actual
ok 3 - -p --relative=subdir
expecting success of 4045.4 '-p --relative':
git -C 'subdir' diff -p --relative HEAD^ >actual &&
test_cmp expected actual
ok 4 - -p --relative
expecting success of 4045.5 '-p --relative=sub':
git -C '.' diff -p --relative=sub HEAD^ >actual &&
test_cmp expected actual
ok 5 - -p --relative=sub
expecting success of 4045.6 '--numstat --relative=subdir/':
echo '1 0 file2' >expected &&
git -C '.' diff --numstat --relative=subdir/ HEAD^ >actual &&
test_cmp expected actual
ok 6 - --numstat --relative=subdir/
expecting success of 4045.7 '--numstat --relative=subdir':
echo '1 0 file2' >expected &&
git -C '.' diff --numstat --relative=subdir HEAD^ >actual &&
test_cmp expected actual
ok 7 - --numstat --relative=subdir
expecting success of 4045.8 '--numstat --relative':
echo '1 0 file2' >expected &&
git -C 'subdir' diff --numstat --relative HEAD^ >actual &&
test_cmp expected actual
ok 8 - --numstat --relative
expecting success of 4045.9 '--numstat --relative=sub':
echo '1 0 dir/file2' >expected &&
git -C '.' diff --numstat --relative=sub HEAD^ >actual &&
test_cmp expected actual
ok 9 - --numstat --relative=sub
expecting success of 4045.10 '--stat --relative=subdir/':
git -C '.' diff --stat --relative=subdir/ HEAD^ >actual &&
test_cmp expected actual
ok 10 - --stat --relative=subdir/
expecting success of 4045.11 '--stat --relative=subdir':
git -C '.' diff --stat --relative=subdir HEAD^ >actual &&
test_cmp expected actual
ok 11 - --stat --relative=subdir
expecting success of 4045.12 '--stat --relative':
git -C 'subdir' diff --stat --relative HEAD^ >actual &&
test_cmp expected actual
ok 12 - --stat --relative
expecting success of 4045.13 '--stat --relative=sub':
git -C '.' diff --stat --relative=sub HEAD^ >actual &&
test_cmp expected actual
ok 13 - --stat --relative=sub
expecting success of 4045.14 '--raw --relative=subdir/':
git -C '.' diff --no-abbrev --raw --relative=subdir/ HEAD^ >actual &&
test_cmp expected actual
ok 14 - --raw --relative=subdir/
expecting success of 4045.15 '--raw --relative=subdir':
git -C '.' diff --no-abbrev --raw --relative=subdir HEAD^ >actual &&
test_cmp expected actual
ok 15 - --raw --relative=subdir
expecting success of 4045.16 '--raw --relative':
git -C 'subdir' diff --no-abbrev --raw --relative HEAD^ >actual &&
test_cmp expected actual
ok 16 - --raw --relative
expecting success of 4045.17 '--raw --relative=sub':
git -C '.' diff --no-abbrev --raw --relative=sub HEAD^ >actual &&
test_cmp expected actual
ok 17 - --raw --relative=sub
expecting success of 4045.18 'config diff.relative false -p ':
short_blob_file1=$(git rev-parse --short d95f3ad14dee633a758d2e331151e950dd13e4ed) &&
short_blob_file2=$(git rev-parse --short 25c05ef3639d2d270e7fe765a67668f098092bc5) &&
cat >expected <<-EOF &&
diff --git a/file1 b/file1
new file mode 100644
index 0000000..$short_blob_file1
--- /dev/null
+++ b/file1
@@ -0,0 +1 @@
+content
diff --git a/subdir/file2 b/subdir/file2
new file mode 100644
index 0000000..$short_blob_file2
--- /dev/null
+++ b/subdir/file2
@@ -0,0 +1 @@
+other content
EOF
test_config -C . diff.relative false &&
git -C '.' diff -p HEAD^ >actual &&
test_cmp expected actual
ok 18 - config diff.relative false -p
expecting success of 4045.19 'config diff.relative true -p --no-relative':
short_blob_file1=$(git rev-parse --short d95f3ad14dee633a758d2e331151e950dd13e4ed) &&
short_blob_file2=$(git rev-parse --short 25c05ef3639d2d270e7fe765a67668f098092bc5) &&
cat >expected <<-EOF &&
diff --git a/file1 b/file1
new file mode 100644
index 0000000..$short_blob_file1
--- /dev/null
+++ b/file1
@@ -0,0 +1 @@
+content
diff --git a/subdir/file2 b/subdir/file2
new file mode 100644
index 0000000..$short_blob_file2
--- /dev/null
+++ b/subdir/file2
@@ -0,0 +1 @@
+other content
EOF
test_config -C . diff.relative true &&
git -C '.' diff -p --no-relative HEAD^ >actual &&
test_cmp expected actual
ok 19 - config diff.relative true -p --no-relative
expecting success of 4045.20 'config diff.relative false -p --no-relative':
short_blob_file1=$(git rev-parse --short d95f3ad14dee633a758d2e331151e950dd13e4ed) &&
short_blob_file2=$(git rev-parse --short 25c05ef3639d2d270e7fe765a67668f098092bc5) &&
cat >expected <<-EOF &&
diff --git a/file1 b/file1
new file mode 100644
index 0000000..$short_blob_file1
--- /dev/null
+++ b/file1
@@ -0,0 +1 @@
+content
diff --git a/subdir/file2 b/subdir/file2
new file mode 100644
index 0000000..$short_blob_file2
--- /dev/null
+++ b/subdir/file2
@@ -0,0 +1 @@
+other content
EOF
test_config -C . diff.relative false &&
git -C '.' diff -p --no-relative HEAD^ >actual &&
test_cmp expected actual
ok 20 - config diff.relative false -p --no-relative
expecting success of 4045.21 'config diff.relative false -p ':
short_blob_file1=$(git rev-parse --short d95f3ad14dee633a758d2e331151e950dd13e4ed) &&
short_blob_file2=$(git rev-parse --short 25c05ef3639d2d270e7fe765a67668f098092bc5) &&
cat >expected <<-EOF &&
diff --git a/file1 b/file1
new file mode 100644
index 0000000..$short_blob_file1
--- /dev/null
+++ b/file1
@@ -0,0 +1 @@
+content
diff --git a/subdir/file2 b/subdir/file2
new file mode 100644
index 0000000..$short_blob_file2
--- /dev/null
+++ b/subdir/file2
@@ -0,0 +1 @@
+other content
EOF
test_config -C subdir diff.relative false &&
git -C 'subdir' diff -p HEAD^ >actual &&
test_cmp expected actual
ok 21 - config diff.relative false -p
expecting success of 4045.22 'config diff.relative true -p --no-relative':
short_blob_file1=$(git rev-parse --short d95f3ad14dee633a758d2e331151e950dd13e4ed) &&
short_blob_file2=$(git rev-parse --short 25c05ef3639d2d270e7fe765a67668f098092bc5) &&
cat >expected <<-EOF &&
diff --git a/file1 b/file1
new file mode 100644
index 0000000..$short_blob_file1
--- /dev/null
+++ b/file1
@@ -0,0 +1 @@
+content
diff --git a/subdir/file2 b/subdir/file2
new file mode 100644
index 0000000..$short_blob_file2
--- /dev/null
+++ b/subdir/file2
@@ -0,0 +1 @@
+other content
EOF
test_config -C subdir diff.relative true &&
git -C 'subdir' diff -p --no-relative HEAD^ >actual &&
test_cmp expected actual
ok 22 - config diff.relative true -p --no-relative
expecting success of 4045.23 'config diff.relative false -p --no-relative':
short_blob_file1=$(git rev-parse --short d95f3ad14dee633a758d2e331151e950dd13e4ed) &&
short_blob_file2=$(git rev-parse --short 25c05ef3639d2d270e7fe765a67668f098092bc5) &&
cat >expected <<-EOF &&
diff --git a/file1 b/file1
new file mode 100644
index 0000000..$short_blob_file1
--- /dev/null
+++ b/file1
@@ -0,0 +1 @@
+content
diff --git a/subdir/file2 b/subdir/file2
new file mode 100644
index 0000000..$short_blob_file2
--- /dev/null
+++ b/subdir/file2
@@ -0,0 +1 @@
+other content
EOF
test_config -C subdir diff.relative false &&
git -C 'subdir' diff -p --no-relative HEAD^ >actual &&
test_cmp expected actual
ok 23 - config diff.relative false -p --no-relative
expecting success of 4045.24 'config diff.relative false -p --relative=subdir/':
short_blob=$(git rev-parse --short 25c05ef3639d2d270e7fe765a67668f098092bc5) &&
cat >expected <<-EOF &&
diff --git a/file2 b/file2
new file mode 100644
index 0000000..$short_blob
--- /dev/null
+++ b/file2
@@ -0,0 +1 @@
+other content
EOF
test_config -C . diff.relative false &&
git -C '.' diff -p --relative=subdir/ HEAD^ >actual &&
test_cmp expected actual
ok 24 - config diff.relative false -p --relative=subdir/
expecting success of 4045.25 'config diff.relative false -p --relative=subdir':
short_blob=$(git rev-parse --short 25c05ef3639d2d270e7fe765a67668f098092bc5) &&
cat >expected <<-EOF &&
diff --git a/file2 b/file2
new file mode 100644
index 0000000..$short_blob
--- /dev/null
+++ b/file2
@@ -0,0 +1 @@
+other content
EOF
test_config -C . diff.relative false &&
git -C '.' diff -p --relative=subdir HEAD^ >actual &&
test_cmp expected actual
ok 25 - config diff.relative false -p --relative=subdir
expecting success of 4045.26 'config diff.relative true -p --relative=subdir/':
short_blob=$(git rev-parse --short 25c05ef3639d2d270e7fe765a67668f098092bc5) &&
cat >expected <<-EOF &&
diff --git a/file2 b/file2
new file mode 100644
index 0000000..$short_blob
--- /dev/null
+++ b/file2
@@ -0,0 +1 @@
+other content
EOF
test_config -C . diff.relative true &&
git -C '.' diff -p --relative=subdir/ HEAD^ >actual &&
test_cmp expected actual
ok 26 - config diff.relative true -p --relative=subdir/
expecting success of 4045.27 'config diff.relative true -p --relative=subdir':
short_blob=$(git rev-parse --short 25c05ef3639d2d270e7fe765a67668f098092bc5) &&
cat >expected <<-EOF &&
diff --git a/file2 b/file2
new file mode 100644
index 0000000..$short_blob
--- /dev/null
+++ b/file2
@@ -0,0 +1 @@
+other content
EOF
test_config -C . diff.relative true &&
git -C '.' diff -p --relative=subdir HEAD^ >actual &&
test_cmp expected actual
ok 27 - config diff.relative true -p --relative=subdir
expecting success of 4045.28 'config diff.relative false -p --relative':
short_blob=$(git rev-parse --short 25c05ef3639d2d270e7fe765a67668f098092bc5) &&
cat >expected <<-EOF &&
diff --git a/file2 b/file2
new file mode 100644
index 0000000..$short_blob
--- /dev/null
+++ b/file2
@@ -0,0 +1 @@
+other content
EOF
test_config -C subdir diff.relative false &&
git -C 'subdir' diff -p --relative HEAD^ >actual &&
test_cmp expected actual
ok 28 - config diff.relative false -p --relative
expecting success of 4045.29 'config diff.relative true -p --relative':
short_blob=$(git rev-parse --short 25c05ef3639d2d270e7fe765a67668f098092bc5) &&
cat >expected <<-EOF &&
diff --git a/file2 b/file2
new file mode 100644
index 0000000..$short_blob
--- /dev/null
+++ b/file2
@@ -0,0 +1 @@
+other content
EOF
test_config -C subdir diff.relative true &&
git -C 'subdir' diff -p --relative HEAD^ >actual &&
test_cmp expected actual
ok 29 - config diff.relative true -p --relative
expecting success of 4045.30 'config diff.relative true -p ':
short_blob=$(git rev-parse --short 25c05ef3639d2d270e7fe765a67668f098092bc5) &&
cat >expected <<-EOF &&
diff --git a/file2 b/file2
new file mode 100644
index 0000000..$short_blob
--- /dev/null
+++ b/file2
@@ -0,0 +1 @@
+other content
EOF
test_config -C subdir diff.relative true &&
git -C 'subdir' diff -p HEAD^ >actual &&
test_cmp expected actual
ok 30 - config diff.relative true -p
expecting success of 4045.31 'config diff.relative false -p --no-relative --relative':
short_blob=$(git rev-parse --short 25c05ef3639d2d270e7fe765a67668f098092bc5) &&
cat >expected <<-EOF &&
diff --git a/file2 b/file2
new file mode 100644
index 0000000..$short_blob
--- /dev/null
+++ b/file2
@@ -0,0 +1 @@
+other content
EOF
test_config -C subdir diff.relative false &&
git -C 'subdir' diff -p --no-relative --relative HEAD^ >actual &&
test_cmp expected actual
ok 31 - config diff.relative false -p --no-relative --relative
expecting success of 4045.32 'config diff.relative true -p --no-relative --relative':
short_blob=$(git rev-parse --short 25c05ef3639d2d270e7fe765a67668f098092bc5) &&
cat >expected <<-EOF &&
diff --git a/file2 b/file2
new file mode 100644
index 0000000..$short_blob
--- /dev/null
+++ b/file2
@@ -0,0 +1 @@
+other content
EOF
test_config -C subdir diff.relative true &&
git -C 'subdir' diff -p --no-relative --relative HEAD^ >actual &&
test_cmp expected actual
ok 32 - config diff.relative true -p --no-relative --relative
expecting success of 4045.33 'config diff.relative false -p --no-relative --relative=subdir':
short_blob=$(git rev-parse --short 25c05ef3639d2d270e7fe765a67668f098092bc5) &&
cat >expected <<-EOF &&
diff --git a/file2 b/file2
new file mode 100644
index 0000000..$short_blob
--- /dev/null
+++ b/file2
@@ -0,0 +1 @@
+other content
EOF
test_config -C . diff.relative false &&
git -C '.' diff -p --no-relative --relative=subdir HEAD^ >actual &&
test_cmp expected actual
ok 33 - config diff.relative false -p --no-relative --relative=subdir
expecting success of 4045.34 'config diff.relative true -p --no-relative --relative=subdir':
short_blob=$(git rev-parse --short 25c05ef3639d2d270e7fe765a67668f098092bc5) &&
cat >expected <<-EOF &&
diff --git a/file2 b/file2
new file mode 100644
index 0000000..$short_blob
--- /dev/null
+++ b/file2
@@ -0,0 +1 @@
+other content
EOF
test_config -C . diff.relative true &&
git -C '.' diff -p --no-relative --relative=subdir HEAD^ >actual &&
test_cmp expected actual
ok 34 - config diff.relative true -p --no-relative --relative=subdir
expecting success of 4045.35 'external diff with --relative':
test_when_finished "git reset --hard" &&
echo changed >file1 &&
echo changed >subdir/file2 &&
write_script mydiff <<-\EOF &&
# hacky pretend diff; the goal here is just to make sure we got
# passed sensible input that we _could_ diff, without relying on
# the specific output of a system diff tool.
echo "diff a/$1 b/$1" &&
echo "--- a/$1" &&
echo "+++ b/$1" &&
echo "@@ -1 +0,0 @@" &&
sed "s/^/-/" "$2" &&
sed "s/^/+/" "$5"
EOF
cat >expect <<-\EOF &&
diff a/file2 b/file2
--- a/file2
+++ b/file2
@@ -1 +0,0 @@
-other content
+changed
EOF
GIT_EXTERNAL_DIFF=./mydiff git diff --relative=subdir >actual &&
test_cmp expect actual
HEAD is now at e528d0d one
ok 35 - external diff with --relative
expecting success of 4045.36 'setup diff --relative unmerged':
test_commit zero file0 &&
test_commit base subdir/file0 &&
git switch -c br1 &&
test_commit one file0 &&
test_commit sub1 subdir/file0 &&
git switch -c br2 base &&
test_commit two file0 &&
git switch -c br3 &&
test_commit sub3 subdir/file0
[master 8079767] zero
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file0
[master 32ab62b] base
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 subdir/file0
Switched to a new branch 'br1'
[br1 02602ea] one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[br1 7cf214c] sub1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to a new branch 'br2'
[br2 a52bcea] two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to a new branch 'br3'
[br3 b0bcae9] sub3
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 36 - setup diff --relative unmerged
expecting success of 4045.37 'diff --relative without change in subdir':
git switch br2 &&
test_when_finished "git merge --abort" &&
test_must_fail git merge one &&
git -C subdir diff --relative >out &&
test_must_be_empty out &&
git -C subdir diff --relative --name-only >out &&
test_must_be_empty out
Switched to branch 'br2'
Auto-merging file0
CONFLICT (content): Merge conflict in file0
Automatic merge failed; fix conflicts and then commit the result.
ok 37 - diff --relative without change in subdir
expecting success of 4045.38 'diff --relative --name-only with change in subdir':
git switch br3 &&
test_when_finished "git merge --abort" &&
test_must_fail git merge sub1 &&
test_write_lines file0 file0 >expected &&
git -C subdir diff --relative --name-only >out &&
test_cmp expected out
Switched to branch 'br3'
Auto-merging file0
CONFLICT (content): Merge conflict in file0
Auto-merging subdir/file0
CONFLICT (content): Merge conflict in subdir/file0
Automatic merge failed; fix conflicts and then commit the result.
ok 38 - diff --relative --name-only with change in subdir
checking known breakage of 4045.39 'diff --relative with change in subdir':
git switch br3 &&
br1_blob=$(git rev-parse --short --verify br1:subdir/file0) &&
br3_blob=$(git rev-parse --short --verify br3:subdir/file0) &&
test_when_finished "git merge --abort" &&
test_must_fail git merge br1 &&
cat >expected <<-EOF &&
diff --cc file0
index $br3_blob,$br1_blob..0000000
--- a/file0
+++ b/file0
@@@ -1,1 -1,1 +1,5 @@@
++<<<<<<< HEAD
+sub3
++=======
+ sub1
++>>>>>>> br1
EOF
git -C subdir diff --relative >out &&
test_cmp expected out
Already on 'br3'
Auto-merging file0
CONFLICT (content): Merge conflict in file0
Auto-merging subdir/file0
CONFLICT (content): Merge conflict in subdir/file0
Automatic merge failed; fix conflicts and then commit the result.
--- expected 2023-10-09 02:19:45.713121382 +0000
+++ out 2023-10-09 02:19:45.717121379 +0000
@@ -1,7 +1,7 @@
-diff --cc file0
+diff --cc subdir/file0
index b8c2280,48df0cb..0000000
---- a/file0
-+++ b/file0
+--- a/subdir/file0
++++ b/subdir/file0
@@@ -1,1 -1,1 +1,5 @@@
++<<<<<<< HEAD
+sub3
not ok 39 - diff --relative with change in subdir # TODO known breakage
# still have 1 known breakage(s)
# passed all remaining 38 test(s)
1..39
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4050-diff-histogram.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4050-diff-histogram/.git/
expecting success of 4050.1 'setup attributes files for tests with histogram':
git checkout -b master &&
echo "file* diff=driver" >.gitattributes &&
git add file1 file2 .gitattributes &&
git commit -m "adding files" &&
git checkout -b branchA &&
echo "file* diff=driverA" >.gitattributes &&
git add .gitattributes &&
git commit -m "adding driverA as diff driver" &&
git checkout master &&
git clone --bare --no-local . bare.git
Switched to a new branch 'master'
[master (root-commit) 946e965] adding files
Author: A U Thor <author@example.com>
3 files changed, 52 insertions(+)
create mode 100644 .gitattributes
create mode 100644 file1
create mode 100644 file2
Switched to a new branch 'branchA'
[branchA 7cbc84d] adding driverA as diff driver
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to branch 'master'
Cloning into bare repository 'bare.git'...
ok 1 - setup attributes files for tests with histogram
expecting success of 4050.2 'histogram diff from attributes':
test_must_fail git -c diff.driver.algorithm=$STRATEGY diff --no-index file1 file2 > output &&
test_cmp expect output
ok 2 - histogram diff from attributes
expecting success of 4050.3 'diff from attributes with bare repo with source':
git -C bare.git --attr-source=branchA -c diff.driver.algorithm=myers \
-c diff.driverA.algorithm=$STRATEGY \
diff HEAD:file1 HEAD:file2 >output &&
test_cmp expect output
ok 3 - diff from attributes with bare repo with source
expecting success of 4050.4 'diff from attributes with bare repo with invalid source':
test_must_fail git -C bare.git --attr-source=invalid-branch diff \
HEAD:file1 HEAD:file2
fatal: bad --attr-source or GIT_ATTR_SOURCE
ok 4 - diff from attributes with bare repo with invalid source
expecting success of 4050.5 'histogram diff from attributes has valid diffstat':
echo "file* diff=driver" >.gitattributes &&
git config diff.driver.algorithm "$STRATEGY" &&
test_must_fail git diff --stat --no-index file1 file2 > output &&
test_cmp expect_diffstat output
ok 5 - histogram diff from attributes has valid diffstat
expecting success of 4050.6 'histogram diff':
test_must_fail git diff --no-index "--diff-algorithm=$STRATEGY" file1 file2 > output &&
test_cmp expect output
ok 6 - histogram diff
expecting success of 4050.7 'histogram diff command line precedence before attributes':
echo "file* diff=driver" >.gitattributes &&
git config diff.driver.algorithm myers &&
test_must_fail git diff --no-index "--diff-algorithm=$STRATEGY" file1 file2 > output &&
test_cmp expect output
ok 7 - histogram diff command line precedence before attributes
expecting success of 4050.8 'histogram diff attributes precedence before config':
git config diff.algorithm default &&
echo "file* diff=driver" >.gitattributes &&
git config diff.driver.algorithm "$STRATEGY" &&
test_must_fail git diff --no-index file1 file2 > output &&
test_cmp expect output
ok 8 - histogram diff attributes precedence before config
expecting success of 4050.9 'histogram diff output is valid':
mv file2 expect &&
git apply < output &&
test_cmp expect file2
ok 9 - histogram diff output is valid
expecting success of 4050.10 'completely different files':
test_must_fail git diff --no-index "--$STRATEGY" uniq1 uniq2 > output &&
test_cmp expect output
ok 10 - completely different files
# passed all 10 test(s)
1..10
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4053-diff-no-index.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4053-diff-no-index/.git/
expecting success of 4053.1 'setup':
mkdir a &&
mkdir b &&
echo 1 >a/1 &&
echo 2 >a/2 &&
git init repo &&
echo 1 >repo/a &&
mkdir -p non/git &&
echo 1 >non/git/a &&
echo 1 >non/git/b
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4053-diff-no-index/repo/.git/
ok 1 - setup
expecting success of 4053.2 'git diff --no-index --exit-code':
git diff --no-index --exit-code a/1 non/git/a &&
test_expect_code 1 git diff --no-index --exit-code a/1 a/2
diff --git a/a/1 b/a/2
index d00491f..0cfbf08 100644
--- a/a/1
+++ b/a/2
@@ -1 +1 @@
-1
+2
ok 2 - git diff --no-index --exit-code
expecting success of 4053.3 'git diff --no-index directories':
test_expect_code 1 git diff --no-index a b >cnt &&
test_line_count = 14 cnt
ok 3 - git diff --no-index directories
expecting success of 4053.4 'git diff --no-index relative path outside repo':
(
cd repo &&
test_expect_code 0 git diff --no-index a ../non/git/a &&
test_expect_code 0 git diff --no-index ../non/git/a ../non/git/b
)
ok 4 - git diff --no-index relative path outside repo
expecting success of 4053.5 'git diff --no-index with broken index':
(
cd repo &&
echo broken >.git/index &&
git diff --no-index a ../non/git/a
)
ok 5 - git diff --no-index with broken index
expecting success of 4053.6 'git diff outside repo with broken index':
(
cd repo &&
git diff ../non/git/a ../non/git/b
)
ok 6 - git diff outside repo with broken index
expecting success of 4053.7 'git diff --no-index executed outside repo gives correct error message':
(
GIT_CEILING_DIRECTORIES=$TRASH_DIRECTORY/non &&
export GIT_CEILING_DIRECTORIES &&
cd non/git &&
test_must_fail git diff --no-index a 2>actual.err &&
test_i18ngrep "usage: git diff --no-index" actual.err
)
usage: git diff --no-index [<options>] <path> <path>
ok 7 - git diff --no-index executed outside repo gives correct error message
expecting success of 4053.8 'diff D F and diff F D':
(
cd repo &&
echo in-repo >a &&
echo non-repo >../non/git/a &&
mkdir sub &&
echo sub-repo >sub/a &&
test_must_fail git diff --no-index sub/a ../non/git/a >expect &&
test_must_fail git diff --no-index sub/a ../non/git/ >actual &&
test_cmp expect actual &&
test_must_fail git diff --no-index a ../non/git/a >expect &&
test_must_fail git diff --no-index a ../non/git/ >actual &&
test_cmp expect actual &&
test_must_fail git diff --no-index ../non/git/a a >expect &&
test_must_fail git diff --no-index ../non/git a >actual &&
test_cmp expect actual
)
ok 8 - diff D F and diff F D
expecting success of 4053.9 'turning a file into a directory':
(
cd non/git &&
mkdir d e e/sub &&
echo 1 >d/sub &&
echo 2 >e/sub/file &&
printf "D\td/sub\nA\te/sub/file\n" >expect &&
test_must_fail git diff --no-index --name-status d e >actual &&
test_cmp expect actual
)
ok 9 - turning a file into a directory
expecting success of 4053.10 'diff from repo subdir shows real paths (explicit)':
echo "diff --git a/../../non/git/a b/../../non/git/b" >expect &&
test_expect_code 1 \
git -C repo/sub \
diff --no-index ../../non/git/a ../../non/git/b >actual &&
head -n 1 <actual >actual.head &&
test_cmp expect actual.head
ok 10 - diff from repo subdir shows real paths (explicit)
expecting success of 4053.11 'diff from repo subdir shows real paths (implicit)':
echo "diff --git a/../../non/git/a b/../../non/git/b" >expect &&
test_expect_code 1 \
git -C repo/sub \
diff ../../non/git/a ../../non/git/b >actual &&
head -n 1 <actual >actual.head &&
test_cmp expect actual.head
ok 11 - diff from repo subdir shows real paths (implicit)
expecting success of 4053.12 'diff --no-index from repo subdir respects config (explicit)':
echo "diff --git ../../non/git/a ../../non/git/b" >expect &&
test_config -C repo diff.noprefix true &&
test_expect_code 1 \
git -C repo/sub \
diff --no-index ../../non/git/a ../../non/git/b >actual &&
head -n 1 <actual >actual.head &&
test_cmp expect actual.head
ok 12 - diff --no-index from repo subdir respects config (explicit)
expecting success of 4053.13 'diff --no-index from repo subdir respects config (implicit)':
echo "diff --git ../../non/git/a ../../non/git/b" >expect &&
test_config -C repo diff.noprefix true &&
test_expect_code 1 \
git -C repo/sub \
diff ../../non/git/a ../../non/git/b >actual &&
head -n 1 <actual >actual.head &&
test_cmp expect actual.head
ok 13 - diff --no-index from repo subdir respects config (implicit)
expecting success of 4053.14 'diff --no-index from repo subdir with absolute paths':
cat <<-EOF >expect &&
1 1 $(pwd)/non/git/{a => b}
EOF
test_expect_code 1 \
git -C repo/sub diff --numstat \
"$(pwd)/non/git/a" "$(pwd)/non/git/b" >actual &&
test_cmp expect actual
ok 14 - diff --no-index from repo subdir with absolute paths
expecting success of 4053.15 'diff --no-index allows external diff':
test_expect_code 1 \
env GIT_EXTERNAL_DIFF="echo external ;:" \
git diff --no-index non/git/a non/git/b >actual &&
echo external >expect &&
test_cmp expect actual
ok 15 - diff --no-index allows external diff
expecting success of 4053.16 'diff --no-index normalizes mode: no changes':
echo foo >x &&
cp x y &&
git diff --no-index x y >out &&
test_must_be_empty out
ok 16 - diff --no-index normalizes mode: no changes
expecting success of 4053.17 'diff --no-index normalizes mode: chmod +x':
chmod +x y &&
cat >expected <<-\EOF &&
diff --git a/x b/y
old mode 100644
new mode 100755
EOF
test_expect_code 1 git diff --no-index x y >actual &&
test_cmp expected actual
ok 17 - diff --no-index normalizes mode: chmod +x
expecting success of 4053.18 'diff --no-index normalizes: mode not like git mode':
chmod 666 x &&
chmod 777 y &&
cat >expected <<-\EOF &&
diff --git a/x b/y
old mode 100644
new mode 100755
EOF
test_expect_code 1 git diff --no-index x y >actual &&
test_cmp expected actual
ok 18 - diff --no-index normalizes: mode not like git mode
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
expecting success of 4053.19 'diff --no-index normalizes: mode not like git mode (symlink)':
ln -s y z &&
X_OID=$(git hash-object --stdin <x) &&
Z_OID=$(printf y | git hash-object --stdin) &&
cat >expected <<-EOF &&
diff --git a/x b/x
deleted file mode 100644
index $X_OID..$ZERO_OID
--- a/x
+++ /dev/null
@@ -1 +0,0 @@
-foo
diff --git a/z b/z
new file mode 120000
index $ZERO_OID..$Z_OID
--- /dev/null
+++ b/z
@@ -0,0 +1 @@
+y
\ No newline at end of file
EOF
test_expect_code 1 git -c core.abbrev=no diff --no-index x z >actual &&
test_cmp expected actual
ok 19 - diff --no-index normalizes: mode not like git mode (symlink)
expecting success of 4053.20 'diff --no-index treats '-' as stdin':
cat >expect <<-EOF &&
diff --git a/- b/a/1
index $ZERO_OID..$(git hash-object --stdin <a/1) 100644
--- a/-
+++ b/a/1
@@ -1 +1 @@
-x
+1
EOF
test_write_lines x | test_expect_code 1 \
git -c core.abbrev=no diff --no-index -- - a/1 >actual &&
test_cmp expect actual &&
test_write_lines 1 | git diff --no-index -- a/1 - >actual &&
test_must_be_empty actual
ok 20 - diff --no-index treats '-' as stdin
expecting success of 4053.21 'diff --no-index refuses to diff stdin and a directory':
test_must_fail git diff --no-index -- - a </dev/null 2>err &&
grep "fatal: cannot compare stdin to a directory" err
fatal: cannot compare stdin to a directory
ok 21 - diff --no-index refuses to diff stdin and a directory
checking prerequisite: PIPE
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-PIPE" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-PIPE" &&
# test whether the filesystem supports FIFOs
test_have_prereq !MINGW,!CYGWIN &&
rm -f testfifo && mkfifo testfifo
)
prerequisite PIPE ok
expecting success of 4053.22 'diff --no-index refuses to diff a named pipe and a directory':
test_when_finished "rm -f pipe" &&
mkfifo pipe &&
test_must_fail git diff --no-index -- pipe a 2>err &&
grep "fatal: cannot compare a named pipe to a directory" err
fatal: cannot compare a named pipe to a directory
ok 22 - diff --no-index refuses to diff a named pipe and a directory
expecting success of 4053.23 'diff --no-index reads from pipes':
test_when_finished "rm -f old new new-link" &&
mkfifo old &&
mkfifo new &&
ln -s new new-link &&
{
(test_write_lines a b c >old) &
} &&
test_when_finished "kill $! || :" &&
{
(test_write_lines a x c >new) &
} &&
test_when_finished "kill $! || :" &&
cat >expect <<-EOF &&
diff --git a/old b/new-link
--- a/old
+++ b/new-link
@@ -1,3 +1,3 @@
a
-b
+x
c
EOF
test_expect_code 1 git diff --no-index old new-link >actual &&
test_cmp expect actual
t4053-diff-no-index.sh: 3: kill: No such process
t4053-diff-no-index.sh: 4: kill: No such process
ok 23 - diff --no-index reads from pipes
# passed all 23 test(s)
1..23
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4047-diff-dirstat.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4047-diff-dirstat/.git/
expecting success of 4047.1 'setup':
mkdir unchanged &&
mkdir changed &&
mkdir rearranged &&
mkdir src &&
mkdir src/copy &&
mkdir src/copy/unchanged &&
mkdir src/copy/changed &&
mkdir src/copy/rearranged &&
mkdir src/move &&
mkdir src/move/unchanged &&
mkdir src/move/changed &&
mkdir src/move/rearranged &&
cat <<EOF >unchanged/text &&
unchanged line #0
unchanged line #1
unchanged line #2
unchanged line #3
unchanged line #4
unchanged line #5
unchanged line #6
unchanged line #7
unchanged line #8
unchanged line #9
EOF
cat <<EOF >changed/text &&
changed line #0
changed line #1
changed line #2
changed line #3
changed line #4
changed line #5
changed line #6
changed line #7
changed line #8
changed line #9
EOF
cat <<EOF >rearranged/text &&
rearranged line #0
rearranged line #1
rearranged line #2
rearranged line #3
rearranged line #4
rearranged line #5
rearranged line #6
rearranged line #7
rearranged line #8
rearranged line #9
EOF
cat <<EOF >src/copy/unchanged/text &&
copy unchanged line #0
copy unchanged line #1
copy unchanged line #2
copy unchanged line #3
copy unchanged line #4
copy unchanged line #5
copy unchanged line #6
copy unchanged line #7
copy unchanged line #8
copy unchanged line #9
EOF
cat <<EOF >src/copy/changed/text &&
copy changed line #0
copy changed line #1
copy changed line #2
copy changed line #3
copy changed line #4
copy changed line #5
copy changed line #6
copy changed line #7
copy changed line #8
copy changed line #9
EOF
cat <<EOF >src/copy/rearranged/text &&
copy rearranged line #0
copy rearranged line #1
copy rearranged line #2
copy rearranged line #3
copy rearranged line #4
copy rearranged line #5
copy rearranged line #6
copy rearranged line #7
copy rearranged line #8
copy rearranged line #9
EOF
cat <<EOF >src/move/unchanged/text &&
move unchanged line #0
move unchanged line #1
move unchanged line #2
move unchanged line #3
move unchanged line #4
move unchanged line #5
move unchanged line #6
move unchanged line #7
move unchanged line #8
move unchanged line #9
EOF
cat <<EOF >src/move/changed/text &&
move changed line #0
move changed line #1
move changed line #2
move changed line #3
move changed line #4
move changed line #5
move changed line #6
move changed line #7
move changed line #8
move changed line #9
EOF
cat <<EOF >src/move/rearranged/text &&
move rearranged line #0
move rearranged line #1
move rearranged line #2
move rearranged line #3
move rearranged line #4
move rearranged line #5
move rearranged line #6
move rearranged line #7
move rearranged line #8
move rearranged line #9
EOF
git add . &&
git commit -m "initial" &&
mkdir dst &&
mkdir dst/copy &&
mkdir dst/copy/unchanged &&
mkdir dst/copy/changed &&
mkdir dst/copy/rearranged &&
mkdir dst/move &&
mkdir dst/move/unchanged &&
mkdir dst/move/changed &&
mkdir dst/move/rearranged &&
cat <<EOF >changed/text &&
CHANGED XXXXXXX line #0
changed line #1
changed line #2
changed line #3
changed line #4
changed line #5
changed line #6
changed line #7
changed line #8
changed line #9
EOF
cat <<EOF >rearranged/text &&
rearranged line #1
rearranged line #0
rearranged line #2
rearranged line #3
rearranged line #4
rearranged line #5
rearranged line #6
rearranged line #7
rearranged line #8
rearranged line #9
EOF
cat <<EOF >dst/copy/unchanged/text &&
copy unchanged line #0
copy unchanged line #1
copy unchanged line #2
copy unchanged line #3
copy unchanged line #4
copy unchanged line #5
copy unchanged line #6
copy unchanged line #7
copy unchanged line #8
copy unchanged line #9
EOF
cat <<EOF >dst/copy/changed/text &&
copy XXXCHANGED line #0
copy changed line #1
copy changed line #2
copy changed line #3
copy changed line #4
copy changed line #5
copy changed line #6
copy changed line #7
copy changed line #8
copy changed line #9
EOF
cat <<EOF >dst/copy/rearranged/text &&
copy rearranged line #1
copy rearranged line #0
copy rearranged line #2
copy rearranged line #3
copy rearranged line #4
copy rearranged line #5
copy rearranged line #6
copy rearranged line #7
copy rearranged line #8
copy rearranged line #9
EOF
cat <<EOF >dst/move/unchanged/text &&
move unchanged line #0
move unchanged line #1
move unchanged line #2
move unchanged line #3
move unchanged line #4
move unchanged line #5
move unchanged line #6
move unchanged line #7
move unchanged line #8
move unchanged line #9
EOF
cat <<EOF >dst/move/changed/text &&
move XXXCHANGED line #0
move changed line #1
move changed line #2
move changed line #3
move changed line #4
move changed line #5
move changed line #6
move changed line #7
move changed line #8
move changed line #9
EOF
cat <<EOF >dst/move/rearranged/text &&
move rearranged line #1
move rearranged line #0
move rearranged line #2
move rearranged line #3
move rearranged line #4
move rearranged line #5
move rearranged line #6
move rearranged line #7
move rearranged line #8
move rearranged line #9
EOF
git add . &&
git rm -r src/move/unchanged &&
git rm -r src/move/changed &&
git rm -r src/move/rearranged &&
git commit -m "changes" &&
git config diff.renames false
[master (root-commit) b34d487] initial
Author: A U Thor <author@example.com>
9 files changed, 90 insertions(+)
create mode 100644 changed/text
create mode 100644 rearranged/text
create mode 100644 src/copy/changed/text
create mode 100644 src/copy/rearranged/text
create mode 100644 src/copy/unchanged/text
create mode 100644 src/move/changed/text
create mode 100644 src/move/rearranged/text
create mode 100644 src/move/unchanged/text
create mode 100644 unchanged/text
rm 'src/move/unchanged/text'
rm 'src/move/changed/text'
rm 'src/move/rearranged/text'
[master 3da6c5d] changes
Author: A U Thor <author@example.com>
8 files changed, 34 insertions(+), 4 deletions(-)
create mode 100644 dst/copy/changed/text
create mode 100644 dst/copy/rearranged/text
create mode 100644 dst/copy/unchanged/text
rename {src => dst}/move/changed/text (90%)
rename {src => dst}/move/rearranged/text (100%)
rename {src => dst}/move/unchanged/text (100%)
ok 1 - setup
expecting success of 4047.2 'sanity check setup (--numstat)':
git diff --numstat HEAD^..HEAD >actual_diff_stat &&
test_cmp expect_diff_stat actual_diff_stat &&
git diff --numstat -M HEAD^..HEAD >actual_diff_stat_M &&
test_cmp expect_diff_stat_M actual_diff_stat_M &&
git diff --numstat -C -C HEAD^..HEAD >actual_diff_stat_CC &&
test_cmp expect_diff_stat_CC actual_diff_stat_CC
ok 2 - sanity check setup (--numstat)
expecting success of 4047.3 'various ways to misspell --dirstat':
test_must_fail git show --dirstat10 &&
test_must_fail git show --dirstat10,files &&
test_must_fail git show -X=20 &&
test_must_fail git show -X=20,cumulative
fatal: unrecognized argument: --dirstat10
fatal: unrecognized argument: --dirstat10,files
fatal: Failed to parse --dirstat/-X option parameter:
Unknown dirstat parameter '=20'
fatal: Failed to parse --dirstat/-X option parameter:
Unknown dirstat parameter '=20'
ok 3 - various ways to misspell --dirstat
expecting success of 4047.4 'vanilla --dirstat':
git diff --dirstat HEAD^..HEAD >actual_diff_dirstat &&
test_cmp expect_diff_dirstat actual_diff_dirstat &&
git diff --dirstat -M HEAD^..HEAD >actual_diff_dirstat_M &&
test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
git diff --dirstat -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
ok 4 - vanilla --dirstat
expecting success of 4047.5 'vanilla -X':
git diff -X HEAD^..HEAD >actual_diff_dirstat &&
test_cmp expect_diff_dirstat actual_diff_dirstat &&
git diff -X -M HEAD^..HEAD >actual_diff_dirstat_M &&
test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
git diff -X -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
ok 5 - vanilla -X
expecting success of 4047.6 'explicit defaults: --dirstat=changes,noncumulative,3':
git diff --dirstat=changes,noncumulative,3 HEAD^..HEAD >actual_diff_dirstat &&
test_cmp expect_diff_dirstat actual_diff_dirstat &&
git diff --dirstat=changes,noncumulative,3 -M HEAD^..HEAD >actual_diff_dirstat_M &&
test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
git diff --dirstat=changes,noncumulative,3 -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
ok 6 - explicit defaults: --dirstat=changes,noncumulative,3
expecting success of 4047.7 'explicit defaults: -Xchanges,noncumulative,3':
git diff -Xchanges,noncumulative,3 HEAD^..HEAD >actual_diff_dirstat &&
test_cmp expect_diff_dirstat actual_diff_dirstat &&
git diff -Xchanges,noncumulative,3 -M HEAD^..HEAD >actual_diff_dirstat_M &&
test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
git diff -Xchanges,noncumulative,3 -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
ok 7 - explicit defaults: -Xchanges,noncumulative,3
expecting success of 4047.8 'later options override earlier options:':
git diff --dirstat=files,10,cumulative,changes,noncumulative,3 HEAD^..HEAD >actual_diff_dirstat &&
test_cmp expect_diff_dirstat actual_diff_dirstat &&
git diff --dirstat=files,10,cumulative,changes,noncumulative,3 -M HEAD^..HEAD >actual_diff_dirstat_M &&
test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
git diff --dirstat=files,10,cumulative,changes,noncumulative,3 -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC &&
git diff --dirstat=files --dirstat=10 --dirstat=cumulative --dirstat=changes --dirstat=noncumulative -X3 HEAD^..HEAD >actual_diff_dirstat &&
test_cmp expect_diff_dirstat actual_diff_dirstat &&
git diff --dirstat=files --dirstat=10 --dirstat=cumulative --dirstat=changes --dirstat=noncumulative -X3 -M HEAD^..HEAD >actual_diff_dirstat_M &&
test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
git diff --dirstat=files --dirstat=10 --dirstat=cumulative --dirstat=changes --dirstat=noncumulative -X3 -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
ok 8 - later options override earlier options:
expecting success of 4047.9 'non-defaults in config overridden by explicit defaults on command line':
git -c diff.dirstat=files,cumulative,50 diff --dirstat=changes,noncumulative,3 HEAD^..HEAD >actual_diff_dirstat &&
test_cmp expect_diff_dirstat actual_diff_dirstat &&
git -c diff.dirstat=files,cumulative,50 diff --dirstat=changes,noncumulative,3 -M HEAD^..HEAD >actual_diff_dirstat_M &&
test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
git -c diff.dirstat=files,cumulative,50 diff --dirstat=changes,noncumulative,3 -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
ok 9 - non-defaults in config overridden by explicit defaults on command line
expecting success of 4047.10 '--dirstat=0':
git diff --dirstat=0 HEAD^..HEAD >actual_diff_dirstat &&
test_cmp expect_diff_dirstat actual_diff_dirstat &&
git diff --dirstat=0 -M HEAD^..HEAD >actual_diff_dirstat_M &&
test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
git diff --dirstat=0 -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
ok 10 - --dirstat=0
expecting success of 4047.11 '-X0':
git diff -X0 HEAD^..HEAD >actual_diff_dirstat &&
test_cmp expect_diff_dirstat actual_diff_dirstat &&
git diff -X0 -M HEAD^..HEAD >actual_diff_dirstat_M &&
test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
git diff -X0 -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
ok 11 - -X0
expecting success of 4047.12 'diff.dirstat=0':
git -c diff.dirstat=0 diff --dirstat HEAD^..HEAD >actual_diff_dirstat &&
test_cmp expect_diff_dirstat actual_diff_dirstat &&
git -c diff.dirstat=0 diff --dirstat -M HEAD^..HEAD >actual_diff_dirstat_M &&
test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
git -c diff.dirstat=0 diff --dirstat -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
ok 12 - diff.dirstat=0
expecting success of 4047.13 '--dirstat=0 --cumulative':
git diff --dirstat=0 --cumulative HEAD^..HEAD >actual_diff_dirstat &&
test_cmp expect_diff_dirstat actual_diff_dirstat &&
git diff --dirstat=0 --cumulative -M HEAD^..HEAD >actual_diff_dirstat_M &&
test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
git diff --dirstat=0 --cumulative -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
ok 13 - --dirstat=0 --cumulative
expecting success of 4047.14 '--dirstat=0,cumulative':
git diff --dirstat=0,cumulative HEAD^..HEAD >actual_diff_dirstat &&
test_cmp expect_diff_dirstat actual_diff_dirstat &&
git diff --dirstat=0,cumulative -M HEAD^..HEAD >actual_diff_dirstat_M &&
test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
git diff --dirstat=0,cumulative -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
ok 14 - --dirstat=0,cumulative
expecting success of 4047.15 '-X0,cumulative':
git diff -X0,cumulative HEAD^..HEAD >actual_diff_dirstat &&
test_cmp expect_diff_dirstat actual_diff_dirstat &&
git diff -X0,cumulative -M HEAD^..HEAD >actual_diff_dirstat_M &&
test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
git diff -X0,cumulative -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
ok 15 - -X0,cumulative
expecting success of 4047.16 'diff.dirstat=0,cumulative':
git -c diff.dirstat=0,cumulative diff --dirstat HEAD^..HEAD >actual_diff_dirstat &&
test_cmp expect_diff_dirstat actual_diff_dirstat &&
git -c diff.dirstat=0,cumulative diff --dirstat -M HEAD^..HEAD >actual_diff_dirstat_M &&
test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
git -c diff.dirstat=0,cumulative diff --dirstat -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
ok 16 - diff.dirstat=0,cumulative
expecting success of 4047.17 'diff.dirstat=0 & --dirstat=cumulative':
git -c diff.dirstat=0 diff --dirstat=cumulative HEAD^..HEAD >actual_diff_dirstat &&
test_cmp expect_diff_dirstat actual_diff_dirstat &&
git -c diff.dirstat=0 diff --dirstat=cumulative -M HEAD^..HEAD >actual_diff_dirstat_M &&
test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
git -c diff.dirstat=0 diff --dirstat=cumulative -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
ok 17 - diff.dirstat=0 & --dirstat=cumulative
expecting success of 4047.18 '--dirstat-by-file':
git diff --dirstat-by-file HEAD^..HEAD >actual_diff_dirstat &&
test_cmp expect_diff_dirstat actual_diff_dirstat &&
git diff --dirstat-by-file -M HEAD^..HEAD >actual_diff_dirstat_M &&
test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
git diff --dirstat-by-file -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
ok 18 - --dirstat-by-file
expecting success of 4047.19 '--dirstat=files':
git diff --dirstat=files HEAD^..HEAD >actual_diff_dirstat &&
test_cmp expect_diff_dirstat actual_diff_dirstat &&
git diff --dirstat=files -M HEAD^..HEAD >actual_diff_dirstat_M &&
test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
git diff --dirstat=files -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
ok 19 - --dirstat=files
expecting success of 4047.20 'diff.dirstat=files':
git -c diff.dirstat=files diff --dirstat HEAD^..HEAD >actual_diff_dirstat &&
test_cmp expect_diff_dirstat actual_diff_dirstat &&
git -c diff.dirstat=files diff --dirstat -M HEAD^..HEAD >actual_diff_dirstat_M &&
test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
git -c diff.dirstat=files diff --dirstat -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
ok 20 - diff.dirstat=files
expecting success of 4047.21 '--dirstat-by-file=10':
git diff --dirstat-by-file=10 HEAD^..HEAD >actual_diff_dirstat &&
test_cmp expect_diff_dirstat actual_diff_dirstat &&
git diff --dirstat-by-file=10 -M HEAD^..HEAD >actual_diff_dirstat_M &&
test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
git diff --dirstat-by-file=10 -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
ok 21 - --dirstat-by-file=10
expecting success of 4047.22 '--dirstat=files,10':
git diff --dirstat=files,10 HEAD^..HEAD >actual_diff_dirstat &&
test_cmp expect_diff_dirstat actual_diff_dirstat &&
git diff --dirstat=files,10 -M HEAD^..HEAD >actual_diff_dirstat_M &&
test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
git diff --dirstat=files,10 -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
ok 22 - --dirstat=files,10
expecting success of 4047.23 'diff.dirstat=10,files':
git -c diff.dirstat=10,files diff --dirstat HEAD^..HEAD >actual_diff_dirstat &&
test_cmp expect_diff_dirstat actual_diff_dirstat &&
git -c diff.dirstat=10,files diff --dirstat -M HEAD^..HEAD >actual_diff_dirstat_M &&
test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
git -c diff.dirstat=10,files diff --dirstat -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
ok 23 - diff.dirstat=10,files
expecting success of 4047.24 '--dirstat-by-file --cumulative':
git diff --dirstat-by-file --cumulative HEAD^..HEAD >actual_diff_dirstat &&
test_cmp expect_diff_dirstat actual_diff_dirstat &&
git diff --dirstat-by-file --cumulative -M HEAD^..HEAD >actual_diff_dirstat_M &&
test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
git diff --dirstat-by-file --cumulative -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
ok 24 - --dirstat-by-file --cumulative
expecting success of 4047.25 '--dirstat=files,cumulative':
git diff --dirstat=files,cumulative HEAD^..HEAD >actual_diff_dirstat &&
test_cmp expect_diff_dirstat actual_diff_dirstat &&
git diff --dirstat=files,cumulative -M HEAD^..HEAD >actual_diff_dirstat_M &&
test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
git diff --dirstat=files,cumulative -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
ok 25 - --dirstat=files,cumulative
expecting success of 4047.26 'diff.dirstat=cumulative,files':
git -c diff.dirstat=cumulative,files diff --dirstat HEAD^..HEAD >actual_diff_dirstat &&
test_cmp expect_diff_dirstat actual_diff_dirstat &&
git -c diff.dirstat=cumulative,files diff --dirstat -M HEAD^..HEAD >actual_diff_dirstat_M &&
test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
git -c diff.dirstat=cumulative,files diff --dirstat -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
ok 26 - diff.dirstat=cumulative,files
expecting success of 4047.27 '--dirstat=files,cumulative,10':
git diff --dirstat=files,cumulative,10 HEAD^..HEAD >actual_diff_dirstat &&
test_cmp expect_diff_dirstat actual_diff_dirstat &&
git diff --dirstat=files,cumulative,10 -M HEAD^..HEAD >actual_diff_dirstat_M &&
test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
git diff --dirstat=files,cumulative,10 -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
ok 27 - --dirstat=files,cumulative,10
expecting success of 4047.28 'diff.dirstat=10,cumulative,files':
git -c diff.dirstat=10,cumulative,files diff --dirstat HEAD^..HEAD >actual_diff_dirstat &&
test_cmp expect_diff_dirstat actual_diff_dirstat &&
git -c diff.dirstat=10,cumulative,files diff --dirstat -M HEAD^..HEAD >actual_diff_dirstat_M &&
test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
git -c diff.dirstat=10,cumulative,files diff --dirstat -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
ok 28 - diff.dirstat=10,cumulative,files
expecting success of 4047.29 '--dirstat=files,cumulative,16.7':
git diff --dirstat=files,cumulative,16.7 HEAD^..HEAD >actual_diff_dirstat &&
test_cmp expect_diff_dirstat actual_diff_dirstat &&
git diff --dirstat=files,cumulative,16.7 -M HEAD^..HEAD >actual_diff_dirstat_M &&
test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
git diff --dirstat=files,cumulative,16.7 -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
ok 29 - --dirstat=files,cumulative,16.7
expecting success of 4047.30 'diff.dirstat=16.7,cumulative,files':
git -c diff.dirstat=16.7,cumulative,files diff --dirstat HEAD^..HEAD >actual_diff_dirstat &&
test_cmp expect_diff_dirstat actual_diff_dirstat &&
git -c diff.dirstat=16.7,cumulative,files diff --dirstat -M HEAD^..HEAD >actual_diff_dirstat_M &&
test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
git -c diff.dirstat=16.7,cumulative,files diff --dirstat -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
ok 30 - diff.dirstat=16.7,cumulative,files
expecting success of 4047.31 'diff.dirstat=16.70,cumulative,files':
git -c diff.dirstat=16.70,cumulative,files diff --dirstat HEAD^..HEAD >actual_diff_dirstat &&
test_cmp expect_diff_dirstat actual_diff_dirstat &&
git -c diff.dirstat=16.70,cumulative,files diff --dirstat -M HEAD^..HEAD >actual_diff_dirstat_M &&
test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
git -c diff.dirstat=16.70,cumulative,files diff --dirstat -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
ok 31 - diff.dirstat=16.70,cumulative,files
expecting success of 4047.32 '--dirstat=files,cumulative,27.2':
git diff --dirstat=files,cumulative,27.2 HEAD^..HEAD >actual_diff_dirstat &&
test_cmp expect_diff_dirstat actual_diff_dirstat &&
git diff --dirstat=files,cumulative,27.2 -M HEAD^..HEAD >actual_diff_dirstat_M &&
test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
git diff --dirstat=files,cumulative,27.2 -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
ok 32 - --dirstat=files,cumulative,27.2
expecting success of 4047.33 '--dirstat=files,cumulative,27.09':
git diff --dirstat=files,cumulative,27.09 HEAD^..HEAD >actual_diff_dirstat &&
test_cmp expect_diff_dirstat actual_diff_dirstat &&
git diff --dirstat=files,cumulative,27.09 -M HEAD^..HEAD >actual_diff_dirstat_M &&
test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
git diff --dirstat=files,cumulative,27.09 -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
ok 33 - --dirstat=files,cumulative,27.09
expecting success of 4047.34 '--dirstat=lines':
git diff --dirstat=lines HEAD^..HEAD >actual_diff_dirstat &&
test_cmp expect_diff_dirstat actual_diff_dirstat &&
git diff --dirstat=lines -M HEAD^..HEAD >actual_diff_dirstat_M &&
test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
git diff --dirstat=lines -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
ok 34 - --dirstat=lines
expecting success of 4047.35 'diff.dirstat=lines':
git -c diff.dirstat=lines diff --dirstat HEAD^..HEAD >actual_diff_dirstat &&
test_cmp expect_diff_dirstat actual_diff_dirstat &&
git -c diff.dirstat=lines diff --dirstat -M HEAD^..HEAD >actual_diff_dirstat_M &&
test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
git -c diff.dirstat=lines diff --dirstat -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
ok 35 - diff.dirstat=lines
expecting success of 4047.36 '--dirstat=lines,0':
git diff --dirstat=lines,0 HEAD^..HEAD >actual_diff_dirstat &&
test_cmp expect_diff_dirstat actual_diff_dirstat &&
git diff --dirstat=lines,0 -M HEAD^..HEAD >actual_diff_dirstat_M &&
test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
git diff --dirstat=lines,0 -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
ok 36 - --dirstat=lines,0
expecting success of 4047.37 'diff.dirstat=0,lines':
git -c diff.dirstat=0,lines diff --dirstat HEAD^..HEAD >actual_diff_dirstat &&
test_cmp expect_diff_dirstat actual_diff_dirstat &&
git -c diff.dirstat=0,lines diff --dirstat -M HEAD^..HEAD >actual_diff_dirstat_M &&
test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
git -c diff.dirstat=0,lines diff --dirstat -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&
test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
ok 37 - diff.dirstat=0,lines
expecting success of 4047.38 '--dirstat=future_param,lines,0 should fail loudly':
test_must_fail git diff --dirstat=future_param,lines,0 HEAD^..HEAD >actual_diff_dirstat 2>actual_error &&
test_debug "cat actual_error" &&
test_must_be_empty actual_diff_dirstat &&
test_i18ngrep -q "future_param" actual_error &&
test_i18ngrep -q "\--dirstat" actual_error
ok 38 - --dirstat=future_param,lines,0 should fail loudly
expecting success of 4047.39 '--dirstat=dummy1,cumulative,2dummy should report both unrecognized parameters':
test_must_fail git diff --dirstat=dummy1,cumulative,2dummy HEAD^..HEAD >actual_diff_dirstat 2>actual_error &&
test_debug "cat actual_error" &&
test_must_be_empty actual_diff_dirstat &&
test_i18ngrep -q "dummy1" actual_error &&
test_i18ngrep -q "2dummy" actual_error &&
test_i18ngrep -q "\--dirstat" actual_error
ok 39 - --dirstat=dummy1,cumulative,2dummy should report both unrecognized parameters
expecting success of 4047.40 'diff.dirstat=future_param,0,lines should warn, but still work':
git -c diff.dirstat=future_param,0,lines diff --dirstat HEAD^..HEAD >actual_diff_dirstat 2>actual_error &&
test_debug "cat actual_error" &&
test_cmp expect_diff_dirstat actual_diff_dirstat &&
test_i18ngrep -q "future_param" actual_error &&
test_i18ngrep -q "diff\\.dirstat" actual_error &&
git -c diff.dirstat=future_param,0,lines diff --dirstat -M HEAD^..HEAD >actual_diff_dirstat_M 2>actual_error &&
test_debug "cat actual_error" &&
test_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&
test_i18ngrep -q "future_param" actual_error &&
test_i18ngrep -q "diff\\.dirstat" actual_error &&
git -c diff.dirstat=future_param,0,lines diff --dirstat -C -C HEAD^..HEAD >actual_diff_dirstat_CC 2>actual_error &&
test_debug "cat actual_error" &&
test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC &&
test_i18ngrep -q "future_param" actual_error &&
test_i18ngrep -q "diff\\.dirstat" actual_error
ok 40 - diff.dirstat=future_param,0,lines should warn, but still work
expecting success of 4047.41 '--shortstat --dirstat should output only one dirstat':
git diff --shortstat --dirstat=changes HEAD^..HEAD >out &&
grep " dst/copy/changed/$" out >actual_diff_shortstat_dirstat_changes &&
test_line_count = 1 actual_diff_shortstat_dirstat_changes &&
git diff --shortstat --dirstat=lines HEAD^..HEAD >out &&
grep " dst/copy/changed/$" out >actual_diff_shortstat_dirstat_lines &&
test_line_count = 1 actual_diff_shortstat_dirstat_lines &&
git diff --shortstat --dirstat=files HEAD^..HEAD >out &&
grep " dst/copy/changed/$" out >actual_diff_shortstat_dirstat_files &&
test_line_count = 1 actual_diff_shortstat_dirstat_files
ok 41 - --shortstat --dirstat should output only one dirstat
# passed all 41 test(s)
1..41
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4051-diff-function-context.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4051-diff-function-context/.git/
expecting success of 4051.1 'setup':
cat "$dir/includes.c" "$dir/dummy.c" "$dir/dummy.c" "$dir/hello.c" \
"$dir/dummy.c" "$dir/dummy.c" >file.c &&
commit_and_tag initial file.c &&
grep -v "delete me from hello" <file.c >file.c.new &&
mv file.c.new file.c &&
commit_and_tag changed_hello file.c &&
grep -v "delete me from includes" <file.c >file.c.new &&
mv file.c.new file.c &&
commit_and_tag changed_includes file.c &&
cat "$dir/appended1.c" >>file.c &&
commit_and_tag appended file.c &&
cat "$dir/appended2.c" >>file.c &&
commit_and_tag extended file.c &&
grep -v "Begin of second part" <file.c >file.c.new &&
mv file.c.new file.c &&
commit_and_tag long_common_tail file.c &&
git checkout initial &&
cat "$dir/hello.c" "$dir/dummy.c" >file.c &&
commit_and_tag hello_dummy file.c &&
# overlap function context of 1st change and -u context of 2nd change
grep -v "delete me from hello" <"$dir/hello.c" >file.c &&
sed "2a\\
extra line" <"$dir/dummy.c" >>file.c &&
commit_and_tag changed_hello_dummy file.c &&
git checkout initial &&
grep -v "delete me from hello" <file.c >file.c.new &&
mv file.c.new file.c &&
cat "$dir/appended1.c" >>file.c &&
commit_and_tag changed_hello_appended file.c
[master (root-commit) 9f6e181] initial
Author: A U Thor <author@example.com>
1 file changed, 72 insertions(+)
create mode 100644 file.c
[master 5e132d0] changed_hello
Author: A U Thor <author@example.com>
1 file changed, 1 deletion(-)
[master 964b054] changed_includes
Author: A U Thor <author@example.com>
1 file changed, 1 deletion(-)
[master d0cff11] appended
Author: A U Thor <author@example.com>
1 file changed, 15 insertions(+)
[master d16114c] extended
Author: A U Thor <author@example.com>
1 file changed, 35 insertions(+)
[master fa474ba] long_common_tail
Author: A U Thor <author@example.com>
1 file changed, 1 deletion(-)
Note: switching to 'initial'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 9f6e181 initial
[detached HEAD cf16009] hello_dummy
Author: A U Thor <author@example.com>
1 file changed, 41 deletions(-)
[detached HEAD d307f65] changed_hello_dummy
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Previous HEAD position was d307f65 changed_hello_dummy
HEAD is now at 9f6e181 initial
[detached HEAD aca4ec7] changed_hello_appended
Author: A U Thor <author@example.com>
1 file changed, 15 insertions(+), 1 deletion(-)
ok 1 - setup
expecting success of 4051.2 'changed function':
git diff $options "$name^" "$name" >"$name.diff"
ok 2 - changed function
expecting success of 4051.3 ' diff applies':
test_when_finished "git reset --hard" &&
git checkout --detach "$name^" &&
git apply --index "$name.diff" &&
git diff --exit-code "$name"
Previous HEAD position was aca4ec7 changed_hello_appended
HEAD is now at 9f6e181 initial
HEAD is now at 9f6e181 initial
ok 3 - diff applies
expecting success of 4051.4 ' context includes comment':
grep "^ .*Hello comment" changed_hello.diff
* Hello comment.
ok 4 - context includes comment
expecting success of 4051.5 ' context includes begin':
grep "^ .*Begin of hello" changed_hello.diff
static void hello(void) // Begin of hello
ok 5 - context includes begin
expecting success of 4051.6 ' context includes end':
grep "^ .*End of hello" changed_hello.diff
} // End of hello
ok 6 - context includes end
expecting success of 4051.7 ' context does not include other functions':
test $(grep -c "^[ +-].*Begin" changed_hello.diff) -le 1
ok 7 - context does not include other functions
expecting success of 4051.8 ' context does not include preceding empty lines':
test "$(first_context_line <changed_hello.diff)" != " "
ok 8 - context does not include preceding empty lines
expecting success of 4051.9 ' context does not include trailing empty lines':
test "$(last_context_line <changed_hello.diff)" != " "
ok 9 - context does not include trailing empty lines
expecting success of 4051.10 'changed includes':
git diff $options "$name^" "$name" >"$name.diff"
ok 10 - changed includes
expecting success of 4051.11 ' diff applies':
test_when_finished "git reset --hard" &&
git checkout --detach "$name^" &&
git apply --index "$name.diff" &&
git diff --exit-code "$name"
Previous HEAD position was 9f6e181 initial
HEAD is now at 5e132d0 changed_hello
HEAD is now at 5e132d0 changed_hello
ok 11 - diff applies
expecting success of 4051.12 ' context includes begin':
grep "^ .*Begin.h" changed_includes.diff
#include <Begin.h>
ok 12 - context includes begin
expecting success of 4051.13 ' context includes end':
grep "^ .*End.h" changed_includes.diff
#include <End.h>
ok 13 - context includes end
expecting success of 4051.14 ' context does not include other functions':
test $(grep -c "^[ +-].*Begin" changed_includes.diff) -le 1
ok 14 - context does not include other functions
expecting success of 4051.15 ' context does not include trailing empty lines':
test "$(last_context_line <changed_includes.diff)" != " "
ok 15 - context does not include trailing empty lines
expecting success of 4051.16 'appended function':
git diff $options "$name^" "$name" >"$name.diff"
ok 16 - appended function
expecting success of 4051.17 ' diff applies':
test_when_finished "git reset --hard" &&
git checkout --detach "$name^" &&
git apply --index "$name.diff" &&
git diff --exit-code "$name"
Previous HEAD position was 5e132d0 changed_hello
HEAD is now at 964b054 changed_includes
HEAD is now at 964b054 changed_includes
ok 17 - diff applies
expecting success of 4051.18 ' context includes begin':
grep "^[+].*Begin of first part" appended.diff
+int appended(void) // Begin of first part
ok 18 - context includes begin
expecting success of 4051.19 ' context includes end':
grep "^[+].*End of first part" appended.diff
+ printf("End of first part\n");
ok 19 - context includes end
expecting success of 4051.20 ' context does not include other functions':
test $(grep -c "^[ +-].*Begin" appended.diff) -le 1
ok 20 - context does not include other functions
expecting success of 4051.21 'appended function part':
git diff $options "$name^" "$name" >"$name.diff"
ok 21 - appended function part
expecting success of 4051.22 ' diff applies':
test_when_finished "git reset --hard" &&
git checkout --detach "$name^" &&
git apply --index "$name.diff" &&
git diff --exit-code "$name"
Previous HEAD position was 964b054 changed_includes
HEAD is now at d0cff11 appended
HEAD is now at d0cff11 appended
ok 22 - diff applies
expecting success of 4051.23 ' context includes begin':
grep "^ .*Begin of first part" extended.diff
int appended(void) // Begin of first part
ok 23 - context includes begin
expecting success of 4051.24 ' context includes end':
grep "^[+].*End of second part" extended.diff
+} // End of second part
ok 24 - context includes end
expecting success of 4051.25 ' context does not include other functions':
test $(grep -c "^[ +-].*Begin" extended.diff) -le 2
ok 25 - context does not include other functions
expecting success of 4051.26 ' context does not include preceding empty lines':
test "$(first_context_line <extended.diff)" != " "
ok 26 - context does not include preceding empty lines
expecting success of 4051.27 'change with long common tail and no context':
git diff $options "$name^" "$name" >"$name.diff"
ok 27 - change with long common tail and no context
expecting success of 4051.28 ' diff applies':
test_when_finished "git reset --hard" &&
git checkout --detach "$name^" &&
git apply --index "$name.diff" &&
git diff --exit-code "$name"
Previous HEAD position was d0cff11 appended
HEAD is now at d16114c extended
HEAD is now at d16114c extended
ok 28 - diff applies
expecting success of 4051.29 ' context includes begin':
grep "^ .*Begin of first part" long_common_tail.diff
int appended(void) // Begin of first part
ok 29 - context includes begin
expecting success of 4051.30 ' context includes end':
grep "^ .*End of second part" long_common_tail.diff
} // End of second part
ok 30 - context includes end
expecting success of 4051.31 ' context does not include other functions':
test $(grep -c "^[ +-].*Begin" long_common_tail.diff) -le 2
ok 31 - context does not include other functions
expecting success of 4051.32 ' context does not include preceding empty lines':
test "$(first_context_line <long_common_tail.diff)" != " "
ok 32 - context does not include preceding empty lines
expecting success of 4051.33 'changed function plus appended function':
git diff $options "$name^" "$name" >"$name.diff"
ok 33 - changed function plus appended function
expecting success of 4051.34 ' diff applies':
test_when_finished "git reset --hard" &&
git checkout --detach "$name^" &&
git apply --index "$name.diff" &&
git diff --exit-code "$name"
Previous HEAD position was d16114c extended
HEAD is now at 9f6e181 initial
HEAD is now at 9f6e181 initial
ok 34 - diff applies
expecting success of 4051.35 ' context includes begin':
grep "^ .*Begin of hello" changed_hello_appended.diff &&
grep "^[+].*Begin of first part" changed_hello_appended.diff
static void hello(void) // Begin of hello
+int appended(void) // Begin of first part
ok 35 - context includes begin
expecting success of 4051.36 ' context includes end':
grep "^ .*End of hello" changed_hello_appended.diff &&
grep "^[+].*End of first part" changed_hello_appended.diff
} // End of hello
+ printf("End of first part\n");
ok 36 - context includes end
expecting success of 4051.37 ' context does not include other functions':
test $(grep -c "^[ +-].*Begin" changed_hello_appended.diff) -le 2
ok 37 - context does not include other functions
expecting success of 4051.38 'changed two consecutive functions':
git diff $options "$name^" "$name" >"$name.diff"
ok 38 - changed two consecutive functions
expecting success of 4051.39 ' diff applies':
test_when_finished "git reset --hard" &&
git checkout --detach "$name^" &&
git apply --index "$name.diff" &&
git diff --exit-code "$name"
Previous HEAD position was 9f6e181 initial
HEAD is now at cf16009 hello_dummy
HEAD is now at cf16009 hello_dummy
ok 39 - diff applies
expecting success of 4051.40 ' context includes begin':
grep "^ .*Begin of hello" changed_hello_dummy.diff &&
grep "^ .*Begin of dummy" changed_hello_dummy.diff
static void hello(void) // Begin of hello
static int dummy(void) // Begin of dummy
ok 40 - context includes begin
expecting success of 4051.41 ' context includes end':
grep "^ .*End of hello" changed_hello_dummy.diff &&
grep "^ .*End of dummy" changed_hello_dummy.diff
} // End of hello
} // End of dummy
ok 41 - context includes end
expecting success of 4051.42 ' overlapping hunks are merged':
test $(grep -c "^@@" changed_hello_dummy.diff) -eq 1
ok 42 - overlapping hunks are merged
# passed all 42 test(s)
1..42
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4054-diff-bogus-tree.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4054-diff-bogus-tree/.git/
expecting success of 4054.1 'create bogus tree':
name=$(echo $ZERO_OID | sed -e "s/00/Q/g") &&
bogus_tree=$(
printf "100644 fooQ$name" |
q_to_nul |
git hash-object --literally -w --stdin -t tree
)
ok 1 - create bogus tree
expecting success of 4054.2 'create tree with matching file':
echo bar >foo &&
git add foo &&
good_tree=$(git write-tree) &&
blob=$(git rev-parse :foo)
ok 2 - create tree with matching file
expecting success of 4054.3 'raw diff shows null sha1 (addition)':
echo ":000000 100644 $ZERO_OID $ZERO_OID A foo" >expect &&
git diff-tree $EMPTY_TREE $bogus_tree >actual &&
test_cmp expect actual
ok 3 - raw diff shows null sha1 (addition)
expecting success of 4054.4 'raw diff shows null sha1 (removal)':
echo ":100644 000000 $ZERO_OID $ZERO_OID D foo" >expect &&
git diff-tree $bogus_tree $EMPTY_TREE >actual &&
test_cmp expect actual
ok 4 - raw diff shows null sha1 (removal)
expecting success of 4054.5 'raw diff shows null sha1 (modification)':
echo ":100644 100644 $blob $ZERO_OID M foo" >expect &&
git diff-tree $good_tree $bogus_tree >actual &&
test_cmp expect actual
ok 5 - raw diff shows null sha1 (modification)
expecting success of 4054.6 'raw diff shows null sha1 (other direction)':
echo ":100644 100644 $ZERO_OID $blob M foo" >expect &&
git diff-tree $bogus_tree $good_tree >actual &&
test_cmp expect actual
ok 6 - raw diff shows null sha1 (other direction)
expecting success of 4054.7 'raw diff shows null sha1 (reverse)':
echo ":100644 100644 $ZERO_OID $blob M foo" >expect &&
git diff-tree -R $good_tree $bogus_tree >actual &&
test_cmp expect actual
ok 7 - raw diff shows null sha1 (reverse)
expecting success of 4054.8 'raw diff shows null sha1 (index)':
echo ":100644 100644 $ZERO_OID $blob M foo" >expect &&
git diff-index $bogus_tree >actual &&
test_cmp expect actual
ok 8 - raw diff shows null sha1 (index)
expecting success of 4054.9 'patch fails due to bogus sha1 (addition)':
test_must_fail git diff-tree -p $EMPTY_TREE $bogus_tree
fatal: unable to read 0000000000000000000000000000000000000000
ok 9 - patch fails due to bogus sha1 (addition)
expecting success of 4054.10 'patch fails due to bogus sha1 (removal)':
test_must_fail git diff-tree -p $bogus_tree $EMPTY_TREE
fatal: unable to read 0000000000000000000000000000000000000000
ok 10 - patch fails due to bogus sha1 (removal)
expecting success of 4054.11 'patch fails due to bogus sha1 (modification)':
test_must_fail git diff-tree -p $good_tree $bogus_tree
fatal: unable to read 0000000000000000000000000000000000000000
ok 11 - patch fails due to bogus sha1 (modification)
expecting success of 4054.12 'patch fails due to bogus sha1 (other direction)':
test_must_fail git diff-tree -p $bogus_tree $good_tree
fatal: unable to read 0000000000000000000000000000000000000000
ok 12 - patch fails due to bogus sha1 (other direction)
expecting success of 4054.13 'patch fails due to bogus sha1 (reverse)':
test_must_fail git diff-tree -R -p $good_tree $bogus_tree
fatal: unable to read 0000000000000000000000000000000000000000
ok 13 - patch fails due to bogus sha1 (reverse)
expecting success of 4054.14 'patch fails due to bogus sha1 (index)':
test_must_fail git diff-index -p $bogus_tree
fatal: unable to read 0000000000000000000000000000000000000000
ok 14 - patch fails due to bogus sha1 (index)
# passed all 14 test(s)
1..14
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4055-diff-context.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4055-diff-context/.git/
expecting success of 4055.1 'setup':
cat >template <<-\EOF &&
firstline
b
c
d
e
f
preline
TARGET
postline
i
j
k
l
m
n
EOF
sed "/TARGET/d" >x <template &&
git update-index --add x &&
git commit -m initial &&
sed "s/TARGET/ADDED/" >x <template &&
git update-index --add x &&
git commit -m next &&
sed "s/TARGET/MODIFIED/" >x <template
[master (root-commit) aee64db] initial
Author: A U Thor <author@example.com>
1 file changed, 14 insertions(+)
create mode 100644 x
[master 4ef1dc5] next
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
ok 1 - setup
expecting success of 4055.2 'the default number of context lines is 3':
git diff >output &&
! grep "^ d" output &&
grep "^ e" output &&
grep "^ j" output &&
! grep "^ k" output
e
j
ok 2 - the default number of context lines is 3
expecting success of 4055.3 'diff.context honored by "log"':
git log -1 -p >output &&
! grep firstline output &&
git config diff.context 8 &&
git log -1 -p >output &&
grep "^ firstline" output
firstline
ok 3 - diff.context honored by "log"
expecting success of 4055.4 'The -U option overrides diff.context':
git config diff.context 8 &&
git log -U4 -1 >output &&
! grep "^ firstline" output
ok 4 - The -U option overrides diff.context
expecting success of 4055.5 'diff.context honored by "diff"':
git config diff.context 8 &&
git diff >output &&
grep "^ firstline" output
firstline
ok 5 - diff.context honored by "diff"
expecting success of 4055.6 'plumbing not affected':
git config diff.context 8 &&
git diff-files -p >output &&
! grep "^ firstline" output
ok 6 - plumbing not affected
expecting success of 4055.7 'non-integer config parsing':
git config diff.context no &&
test_must_fail git diff 2>output &&
test_i18ngrep "bad numeric config value" output
fatal: bad numeric config value 'no' for 'diff.context' in file .git/config: invalid unit
ok 7 - non-integer config parsing
expecting success of 4055.8 'negative integer config parsing':
git config diff.context -1 &&
test_must_fail git diff 2>output &&
test_i18ngrep "bad config variable" output
fatal: bad config variable 'diff.context' in file '.git/config' at line 7
ok 8 - negative integer config parsing
expecting success of 4055.9 '-U0 is valid, so is diff.context=0':
git config diff.context 0 &&
git diff >output &&
grep "^-ADDED" output &&
grep "^+MODIFIED" output
-ADDED
+MODIFIED
ok 9 - -U0 is valid, so is diff.context=0
# passed all 9 test(s)
1..9
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4052-stat-output.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4052-stat-output/.git/
expecting success of 4052.1 'preparation':
>"$name" &&
git add "$name" &&
git commit -m message &&
echo a >"$name" &&
git commit -m message "$name"
[main (root-commit) cf6b1ff] message
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
[main 04c0ded] message
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
ok 1 - preparation
expecting success of 4052.2 'format-patch: small change with long name gives more space to the name':
git format-patch -1 --stdout >output &&
grep " | " output >actual &&
test_cmp expect72 actual
ok 2 - format-patch: small change with long name gives more space to the name
expecting success of 4052.3 'diff: small change with long name gives more space to the name':
git $cmd $args >output &&
grep " | " output >actual &&
test_cmp expect80 actual
ok 3 - diff: small change with long name gives more space to the name
expecting success of 4052.4 'show: small change with long name gives more space to the name':
git $cmd $args >output &&
grep " | " output >actual &&
test_cmp expect80 actual
ok 4 - show: small change with long name gives more space to the name
expecting success of 4052.5 'log: small change with long name gives more space to the name':
git $cmd $args >output &&
grep " | " output >actual &&
test_cmp expect80 actual
ok 5 - log: small change with long name gives more space to the name
expecting success of 4052.6 'format-patch --stat=width: a long name is given more room when the bar is short':
git $cmd $args --stat=40 >output &&
grep " | " output >actual &&
test_cmp $expect.60 actual
ok 6 - format-patch --stat=width: a long name is given more room when the bar is short
expecting success of 4052.7 'format-patch --stat-width=width with long name':
git $cmd $args --stat-width=40 >output &&
grep " | " output >actual &&
test_cmp $expect.60 actual
ok 7 - format-patch --stat-width=width with long name
expecting success of 4052.8 'format-patch --stat=...,name-width with long name':
git $cmd $args --stat=60,30 >output &&
grep " | " output >actual &&
test_cmp $expect.6030 actual
ok 8 - format-patch --stat=...,name-width with long name
expecting success of 4052.9 'format-patch --stat-name-width with long name':
git $cmd $args --stat-name-width=30 >output &&
grep " | " output >actual &&
test_cmp $expect.6030 actual
ok 9 - format-patch --stat-name-width with long name
expecting success of 4052.10 'diff --stat=width: a long name is given more room when the bar is short':
git $cmd $args --stat=40 >output &&
grep " | " output >actual &&
test_cmp $expect.60 actual
ok 10 - diff --stat=width: a long name is given more room when the bar is short
expecting success of 4052.11 'diff --stat-width=width with long name':
git $cmd $args --stat-width=40 >output &&
grep " | " output >actual &&
test_cmp $expect.60 actual
ok 11 - diff --stat-width=width with long name
expecting success of 4052.12 'diff --stat=...,name-width with long name':
git $cmd $args --stat=60,30 >output &&
grep " | " output >actual &&
test_cmp $expect.6030 actual
ok 12 - diff --stat=...,name-width with long name
expecting success of 4052.13 'diff --stat-name-width with long name':
git $cmd $args --stat-name-width=30 >output &&
grep " | " output >actual &&
test_cmp $expect.6030 actual
ok 13 - diff --stat-name-width with long name
expecting success of 4052.14 'show --stat=width: a long name is given more room when the bar is short':
git $cmd $args --stat=40 >output &&
grep " | " output >actual &&
test_cmp $expect.60 actual
ok 14 - show --stat=width: a long name is given more room when the bar is short
expecting success of 4052.15 'show --stat-width=width with long name':
git $cmd $args --stat-width=40 >output &&
grep " | " output >actual &&
test_cmp $expect.60 actual
ok 15 - show --stat-width=width with long name
expecting success of 4052.16 'show --stat=...,name-width with long name':
git $cmd $args --stat=60,30 >output &&
grep " | " output >actual &&
test_cmp $expect.6030 actual
ok 16 - show --stat=...,name-width with long name
expecting success of 4052.17 'show --stat-name-width with long name':
git $cmd $args --stat-name-width=30 >output &&
grep " | " output >actual &&
test_cmp $expect.6030 actual
ok 17 - show --stat-name-width with long name
expecting success of 4052.18 'log --stat=width: a long name is given more room when the bar is short':
git $cmd $args --stat=40 >output &&
grep " | " output >actual &&
test_cmp $expect.60 actual
ok 18 - log --stat=width: a long name is given more room when the bar is short
expecting success of 4052.19 'log --stat-width=width with long name':
git $cmd $args --stat-width=40 >output &&
grep " | " output >actual &&
test_cmp $expect.60 actual
ok 19 - log --stat-width=width with long name
expecting success of 4052.20 'log --stat=...,name-width with long name':
git $cmd $args --stat=60,30 >output &&
grep " | " output >actual &&
test_cmp $expect.6030 actual
ok 20 - log --stat=...,name-width with long name
expecting success of 4052.21 'log --stat-name-width with long name':
git $cmd $args --stat-name-width=30 >output &&
grep " | " output >actual &&
test_cmp $expect.6030 actual
ok 21 - log --stat-name-width with long name
expecting success of 4052.22 'preparation for big change tests':
>abcd &&
git add abcd &&
git commit -m message &&
i=0 &&
while test $i -lt 1000
do
echo $i && i=$(($i + 1)) || return 1
done >abcd &&
git commit -m message abcd
[main c0936d4] message
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 abcd
[main e7fde6f] message
Author: A U Thor <author@example.com>
1 file changed, 1000 insertions(+)
ok 22 - preparation for big change tests
expecting success of 4052.23 'format-patch --cover-letter ignores COLUMNS (big change)':
COLUMNS=200 git format-patch -1 --stdout --cover-letter >output &&
grep " | " output >actual &&
test_cmp expect72 actual
ok 23 - format-patch --cover-letter ignores COLUMNS (big change)
expecting success of 4052.24 'format-patch ignores COLUMNS (big change)':
COLUMNS=200 git $cmd $args >output &&
grep " | " output >actual &&
test_cmp "$expect" actual
ok 24 - format-patch ignores COLUMNS (big change)
expecting success of 4052.25 'format-patch --graph ignores COLUMNS (big change)':
COLUMNS=200 git $cmd $args --graph >output &&
grep " | " output >actual &&
test_cmp "$expect-graph" actual
ok 25 - format-patch --graph ignores COLUMNS (big change)
expecting success of 4052.26 'diff respects COLUMNS (big change)':
COLUMNS=200 git $cmd $args >output &&
grep " | " output >actual &&
test_cmp "$expect" actual
ok 26 - diff respects COLUMNS (big change)
expecting success of 4052.27 'show respects COLUMNS (big change)':
COLUMNS=200 git $cmd $args >output &&
grep " | " output >actual &&
test_cmp "$expect" actual
ok 27 - show respects COLUMNS (big change)
expecting success of 4052.28 'log respects COLUMNS (big change)':
COLUMNS=200 git $cmd $args >output &&
grep " | " output >actual &&
test_cmp "$expect" actual
ok 28 - log respects COLUMNS (big change)
expecting success of 4052.29 'log --graph respects COLUMNS (big change)':
COLUMNS=200 git $cmd $args --graph >output &&
grep " | " output >actual &&
test_cmp "$expect-graph" actual
ok 29 - log --graph respects COLUMNS (big change)
expecting success of 4052.30 'format-patch ignores not enough COLUMNS (big change)':
COLUMNS=40 git $cmd $args >output &&
grep " | " output >actual &&
test_cmp "$expect" actual
ok 30 - format-patch ignores not enough COLUMNS (big change)
expecting success of 4052.31 'format-patch --graph ignores not enough COLUMNS (big change)':
COLUMNS=40 git $cmd $args --graph >output &&
grep " | " output >actual &&
test_cmp "$expect-graph" actual
ok 31 - format-patch --graph ignores not enough COLUMNS (big change)
expecting success of 4052.32 'diff respects not enough COLUMNS (big change)':
COLUMNS=40 git $cmd $args >output &&
grep " | " output >actual &&
test_cmp "$expect" actual
ok 32 - diff respects not enough COLUMNS (big change)
expecting success of 4052.33 'show respects not enough COLUMNS (big change)':
COLUMNS=40 git $cmd $args >output &&
grep " | " output >actual &&
test_cmp "$expect" actual
ok 33 - show respects not enough COLUMNS (big change)
expecting success of 4052.34 'log respects not enough COLUMNS (big change)':
COLUMNS=40 git $cmd $args >output &&
grep " | " output >actual &&
test_cmp "$expect" actual
ok 34 - log respects not enough COLUMNS (big change)
expecting success of 4052.35 'log --graph respects not enough COLUMNS (big change)':
COLUMNS=40 git $cmd $args --graph >output &&
grep " | " output >actual &&
test_cmp "$expect-graph" actual
ok 35 - log --graph respects not enough COLUMNS (big change)
expecting success of 4052.36 'format-patch ignores statGraphWidth config':
git -c diff.statGraphWidth=26 $cmd $args >output &&
grep " | " output >actual &&
test_cmp "$expect" actual
ok 36 - format-patch ignores statGraphWidth config
expecting success of 4052.37 'format-patch --graph ignores statGraphWidth config':
git -c diff.statGraphWidth=26 $cmd $args --graph >output &&
grep " | " output >actual &&
test_cmp "$expect-graph" actual
ok 37 - format-patch --graph ignores statGraphWidth config
expecting success of 4052.38 'diff respects statGraphWidth config':
git -c diff.statGraphWidth=26 $cmd $args >output &&
grep " | " output >actual &&
test_cmp "$expect" actual
ok 38 - diff respects statGraphWidth config
expecting success of 4052.39 'show respects statGraphWidth config':
git -c diff.statGraphWidth=26 $cmd $args >output &&
grep " | " output >actual &&
test_cmp "$expect" actual
ok 39 - show respects statGraphWidth config
expecting success of 4052.40 'log respects statGraphWidth config':
git -c diff.statGraphWidth=26 $cmd $args >output &&
grep " | " output >actual &&
test_cmp "$expect" actual
ok 40 - log respects statGraphWidth config
expecting success of 4052.41 'log --graph respects statGraphWidth config':
git -c diff.statGraphWidth=26 $cmd $args --graph >output &&
grep " | " output >actual &&
test_cmp "$expect-graph" actual
ok 41 - log --graph respects statGraphWidth config
expecting success of 4052.42 'format-patch --stat=width with big change':
git $cmd $args --stat=40 >output &&
grep " | " output >actual &&
test_cmp expect actual
ok 42 - format-patch --stat=width with big change
expecting success of 4052.43 'format-patch --stat-width=width with big change':
git $cmd $args --stat-width=40 >output &&
grep " | " output >actual &&
test_cmp expect actual
ok 43 - format-patch --stat-width=width with big change
expecting success of 4052.44 'format-patch --stat-graph-width with big change':
git $cmd $args --stat-graph-width=26 >output &&
grep " | " output >actual &&
test_cmp expect actual
ok 44 - format-patch --stat-graph-width with big change
expecting success of 4052.45 'format-patch --stat-width=width --graph with big change':
git $cmd $args --stat-width=40 --graph >output &&
grep " | " output >actual &&
test_cmp expect-graph actual
ok 45 - format-patch --stat-width=width --graph with big change
expecting success of 4052.46 'format-patch --stat-graph-width --graph with big change':
git $cmd $args --stat-graph-width=26 --graph >output &&
grep " | " output >actual &&
test_cmp expect-graph actual
ok 46 - format-patch --stat-graph-width --graph with big change
expecting success of 4052.47 'diff --stat=width with big change':
git $cmd $args --stat=40 >output &&
grep " | " output >actual &&
test_cmp expect actual
ok 47 - diff --stat=width with big change
expecting success of 4052.48 'diff --stat-width=width with big change':
git $cmd $args --stat-width=40 >output &&
grep " | " output >actual &&
test_cmp expect actual
ok 48 - diff --stat-width=width with big change
expecting success of 4052.49 'diff --stat-graph-width with big change':
git $cmd $args --stat-graph-width=26 >output &&
grep " | " output >actual &&
test_cmp expect actual
ok 49 - diff --stat-graph-width with big change
expecting success of 4052.50 'show --stat=width with big change':
git $cmd $args --stat=40 >output &&
grep " | " output >actual &&
test_cmp expect actual
ok 50 - show --stat=width with big change
expecting success of 4052.51 'show --stat-width=width with big change':
git $cmd $args --stat-width=40 >output &&
grep " | " output >actual &&
test_cmp expect actual
ok 51 - show --stat-width=width with big change
expecting success of 4052.52 'show --stat-graph-width with big change':
git $cmd $args --stat-graph-width=26 >output &&
grep " | " output >actual &&
test_cmp expect actual
ok 52 - show --stat-graph-width with big change
expecting success of 4052.53 'log --stat=width with big change':
git $cmd $args --stat=40 >output &&
grep " | " output >actual &&
test_cmp expect actual
ok 53 - log --stat=width with big change
expecting success of 4052.54 'log --stat-width=width with big change':
git $cmd $args --stat-width=40 >output &&
grep " | " output >actual &&
test_cmp expect actual
ok 54 - log --stat-width=width with big change
expecting success of 4052.55 'log --stat-graph-width with big change':
git $cmd $args --stat-graph-width=26 >output &&
grep " | " output >actual &&
test_cmp expect actual
ok 55 - log --stat-graph-width with big change
expecting success of 4052.56 'log --stat-width=width --graph with big change':
git $cmd $args --stat-width=40 --graph >output &&
grep " | " output >actual &&
test_cmp expect-graph actual
ok 56 - log --stat-width=width --graph with big change
expecting success of 4052.57 'log --stat-graph-width --graph with big change':
git $cmd $args --stat-graph-width=26 --graph >output &&
grep " | " output >actual &&
test_cmp expect-graph actual
ok 57 - log --stat-graph-width --graph with big change
expecting success of 4052.58 'preparation for long filename tests':
cp abcd aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa &&
git add aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa &&
git commit -m message
[main 0a60d77] message
Author: A U Thor <author@example.com>
1 file changed, 1000 insertions(+)
create mode 100644 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
ok 58 - preparation for long filename tests
expecting success of 4052.59 'format-patch --stat=width with big change is more balanced':
git $cmd $args --stat-width=60 >output &&
grep " | " output >actual &&
test_cmp expect actual
ok 59 - format-patch --stat=width with big change is more balanced
expecting success of 4052.60 'format-patch --stat=width --graph with big change is balanced':
git $cmd $args --stat-width=60 --graph >output &&
grep " | " output >actual &&
test_cmp expect-graph actual
ok 60 - format-patch --stat=width --graph with big change is balanced
expecting success of 4052.61 'diff --stat=width with big change is more balanced':
git $cmd $args --stat-width=60 >output &&
grep " | " output >actual &&
test_cmp expect actual
ok 61 - diff --stat=width with big change is more balanced
expecting success of 4052.62 'show --stat=width with big change is more balanced':
git $cmd $args --stat-width=60 >output &&
grep " | " output >actual &&
test_cmp expect actual
ok 62 - show --stat=width with big change is more balanced
expecting success of 4052.63 'log --stat=width with big change is more balanced':
git $cmd $args --stat-width=60 >output &&
grep " | " output >actual &&
test_cmp expect actual
ok 63 - log --stat=width with big change is more balanced
expecting success of 4052.64 'log --stat=width --graph with big change is balanced':
git $cmd $args --stat-width=60 --graph >output &&
grep " | " output >actual &&
test_cmp expect-graph actual
ok 64 - log --stat=width --graph with big change is balanced
expecting success of 4052.65 'format-patch ignores COLUMNS (long filename)':
COLUMNS=200 git $cmd $args >output &&
grep " | " output >actual &&
test_cmp "$expect" actual
ok 65 - format-patch ignores COLUMNS (long filename)
expecting success of 4052.66 'format-patch --graph ignores COLUMNS (long filename)':
COLUMNS=200 git $cmd $args --graph >output &&
grep " | " output >actual &&
test_cmp "$expect-graph" actual
ok 66 - format-patch --graph ignores COLUMNS (long filename)
expecting success of 4052.67 'diff respects COLUMNS (long filename)':
COLUMNS=200 git $cmd $args >output &&
grep " | " output >actual &&
test_cmp "$expect" actual
ok 67 - diff respects COLUMNS (long filename)
expecting success of 4052.68 'show respects COLUMNS (long filename)':
COLUMNS=200 git $cmd $args >output &&
grep " | " output >actual &&
test_cmp "$expect" actual
ok 68 - show respects COLUMNS (long filename)
expecting success of 4052.69 'log respects COLUMNS (long filename)':
COLUMNS=200 git $cmd $args >output &&
grep " | " output >actual &&
test_cmp "$expect" actual
ok 69 - log respects COLUMNS (long filename)
expecting success of 4052.70 'log --graph respects COLUMNS (long filename)':
COLUMNS=200 git $cmd $args --graph >output &&
grep " | " output >actual &&
test_cmp "$expect-graph" actual
ok 70 - log --graph respects COLUMNS (long filename)
expecting success of 4052.71 'format-patch ignores prefix greater than COLUMNS (big change)':
COLUMNS=1 git $cmd $args >output &&
grep " | " output >actual &&
test_cmp "$expect" actual
ok 71 - format-patch ignores prefix greater than COLUMNS (big change)
expecting success of 4052.72 'format-patch --graph ignores prefix greater than COLUMNS (big change)':
COLUMNS=1 git $cmd $args --graph >output &&
grep " | " output >actual &&
test_cmp "$expect-graph" actual
ok 72 - format-patch --graph ignores prefix greater than COLUMNS (big change)
expecting success of 4052.73 'diff respects prefix greater than COLUMNS (big change)':
COLUMNS=1 git $cmd $args >output &&
grep " | " output >actual &&
test_cmp "$expect" actual
ok 73 - diff respects prefix greater than COLUMNS (big change)
expecting success of 4052.74 'show respects prefix greater than COLUMNS (big change)':
COLUMNS=1 git $cmd $args >output &&
grep " | " output >actual &&
test_cmp "$expect" actual
ok 74 - show respects prefix greater than COLUMNS (big change)
expecting success of 4052.75 'log respects prefix greater than COLUMNS (big change)':
COLUMNS=1 git $cmd $args >output &&
grep " | " output >actual &&
test_cmp "$expect" actual
ok 75 - log respects prefix greater than COLUMNS (big change)
expecting success of 4052.76 'log --graph respects prefix greater than COLUMNS (big change)':
COLUMNS=1 git $cmd $args --graph >output &&
grep " | " output >actual &&
test_cmp "$expect-graph" actual
ok 76 - log --graph respects prefix greater than COLUMNS (big change)
expecting success of 4052.77 'merge --stat respects COLUMNS (big change)':
git checkout -b branch HEAD^^ &&
COLUMNS=100 git merge --stat --no-ff main^ >output &&
grep " | " output >actual &&
test_cmp expect actual
Switched to a new branch 'branch'
ok 77 - merge --stat respects COLUMNS (big change)
expecting success of 4052.78 'merge --stat respects COLUMNS (long filename)':
COLUMNS=100 git merge --stat --no-ff main >output &&
grep " | " output >actual &&
test_cmp expect actual
ok 78 - merge --stat respects COLUMNS (long filename)
# passed all 78 test(s)
1..78
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4056-diff-order.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4056-diff-order/.git/
expecting success of 4056.1 'setup':
mkdir c &&
create_files 1 &&
create_files 2 &&
cat >order_file_1 <<-\EOF &&
*Makefile
*.txt
*.h
EOF
cat >order_file_2 <<-\EOF &&
*Makefile
*.h
*.c
EOF
cat >expect_none <<-\EOF &&
a.h
b.c
c/Makefile
d.txt
EOF
cat >expect_1 <<-\EOF &&
c/Makefile
d.txt
a.h
b.c
EOF
cat >expect_2 <<-\EOF
c/Makefile
a.h
b.c
d.txt
EOF
[main (root-commit) 770e898] 1
Author: A U Thor <author@example.com>
4 files changed, 4 insertions(+)
create mode 100644 a.h
create mode 100644 b.c
create mode 100644 c/Makefile
create mode 100644 d.txt
[main 7c2d19e] 2
Author: A U Thor <author@example.com>
4 files changed, 4 insertions(+), 4 deletions(-)
ok 1 - setup
expecting success of 4056.2 'no order (=tree object order)':
git diff --name-only HEAD^..HEAD >actual &&
test_cmp expect_none actual
ok 2 - no order (=tree object order)
expecting success of 4056.3 'missing orderfile':
rm -f bogus_file &&
test_must_fail git diff -Obogus_file --name-only HEAD^..HEAD
fatal: failed to read orderfile 'bogus_file': No such file or directory
ok 3 - missing orderfile
checking prerequisite: SANITY
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SANITY" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SANITY" &&
mkdir SANETESTD.1 SANETESTD.2 &&
chmod +w SANETESTD.1 SANETESTD.2 &&
>SANETESTD.1/x 2>SANETESTD.2/x &&
chmod -w SANETESTD.1 &&
chmod -r SANETESTD.1/x &&
chmod -rx SANETESTD.2 ||
BUG "cannot prepare SANETESTD"
! test -r SANETESTD.1/x &&
! rm SANETESTD.1/x && ! test -f SANETESTD.2/x
status=$?
chmod +rwx SANETESTD.1 SANETESTD.2 &&
rm -rf SANETESTD.1 SANETESTD.2 ||
BUG "cannot clean SANETESTD"
return $status
)
rm: cannot remove 'SANETESTD.1/x': Permission denied
prerequisite SANITY ok
expecting success of 4056.4 'unreadable orderfile':
>unreadable_file &&
chmod -r unreadable_file &&
test_must_fail git diff -Ounreadable_file --name-only HEAD^..HEAD
fatal: failed to read orderfile 'unreadable_file': Permission denied
ok 4 - unreadable orderfile
expecting success of 4056.5 'orderfile using option from subdir with --output':
mkdir subdir &&
git -C subdir diff -O../order_file_1 --output ../actual --name-only HEAD^..HEAD &&
test_cmp expect_1 actual
ok 5 - orderfile using option from subdir with --output
expecting success of 4056.6 'orderfile using option (1)':
git diff -Oorder_file_$i --name-only HEAD^..HEAD >actual &&
test_cmp expect_$i actual
ok 6 - orderfile using option (1)
checking prerequisite: PIPE
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-PIPE" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-PIPE" &&
# test whether the filesystem supports FIFOs
test_have_prereq !MINGW,!CYGWIN &&
rm -f testfifo && mkfifo testfifo
)
prerequisite PIPE ok
expecting success of 4056.7 'orderfile is fifo (1)':
rm -f order_fifo &&
mkfifo order_fifo &&
{
cat order_file_$i >order_fifo &
} &&
git diff -O order_fifo --name-only HEAD^..HEAD >actual &&
wait &&
test_cmp expect_$i actual
ok 7 - orderfile is fifo (1)
expecting success of 4056.8 'orderfile using config (1)':
git -c diff.orderfile=order_file_$i diff --name-only HEAD^..HEAD >actual &&
test_cmp expect_$i actual
ok 8 - orderfile using config (1)
expecting success of 4056.9 'cancelling configured orderfile (1)':
git -c diff.orderfile=order_file_$i diff -O/dev/null --name-only HEAD^..HEAD >actual &&
test_cmp expect_none actual
ok 9 - cancelling configured orderfile (1)
expecting success of 4056.10 'orderfile using option (2)':
git diff -Oorder_file_$i --name-only HEAD^..HEAD >actual &&
test_cmp expect_$i actual
ok 10 - orderfile using option (2)
expecting success of 4056.11 'orderfile is fifo (2)':
rm -f order_fifo &&
mkfifo order_fifo &&
{
cat order_file_$i >order_fifo &
} &&
git diff -O order_fifo --name-only HEAD^..HEAD >actual &&
wait &&
test_cmp expect_$i actual
ok 11 - orderfile is fifo (2)
expecting success of 4056.12 'orderfile using config (2)':
git -c diff.orderfile=order_file_$i diff --name-only HEAD^..HEAD >actual &&
test_cmp expect_$i actual
ok 12 - orderfile using config (2)
expecting success of 4056.13 'cancelling configured orderfile (2)':
git -c diff.orderfile=order_file_$i diff -O/dev/null --name-only HEAD^..HEAD >actual &&
test_cmp expect_none actual
ok 13 - cancelling configured orderfile (2)
expecting success of 4056.14 'setup for testing combine-diff order':
git checkout -b tmp HEAD~ &&
create_files 3 &&
git checkout main &&
git merge --no-commit -s ours tmp &&
create_files 5
Switched to a new branch 'tmp'
[tmp ec24607] 3
Author: A U Thor <author@example.com>
4 files changed, 4 insertions(+), 4 deletions(-)
Switched to branch 'main'
Automatic merge went well; stopped before committing as requested
[main e00a015] 5
Author: A U Thor <author@example.com>
ok 14 - setup for testing combine-diff order
expecting success of 4056.15 'combine-diff: no order (=tree object order)':
git diff --name-only HEAD HEAD^ HEAD^2 >actual &&
test_cmp expect_none actual
ok 15 - combine-diff: no order (=tree object order)
expecting success of 4056.16 'combine-diff: orderfile using option (1)':
git diff -Oorder_file_$i --name-only HEAD HEAD^ HEAD^2 >actual &&
test_cmp expect_$i actual
ok 16 - combine-diff: orderfile using option (1)
expecting success of 4056.17 'combine-diff: orderfile using option (2)':
git diff -Oorder_file_$i --name-only HEAD HEAD^ HEAD^2 >actual &&
test_cmp expect_$i actual
ok 17 - combine-diff: orderfile using option (2)
expecting success of 4056.18 'rotate and skip setup':
>sample1.t &&
>sample2.t &&
>sample3.t &&
>sample4.t &&
git add sample[1234].t &&
git commit -m "added" sample[1234].t &&
echo modified >>sample1.t &&
echo modified >>sample2.t &&
echo modified >>sample4.t &&
git commit -m "updated" sample[1234].t
[main bfe9459] added
Author: A U Thor <author@example.com>
4 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 sample1.t
create mode 100644 sample2.t
create mode 100644 sample3.t
create mode 100644 sample4.t
[main ba2bcc7] updated
Author: A U Thor <author@example.com>
3 files changed, 3 insertions(+)
ok 18 - rotate and skip setup
expecting success of 4056.19 'diff --rotate-to':
git diff --rotate-to=sample2.t --name-only HEAD^ >actual &&
test_write_lines sample2.t sample4.t sample1.t >expect &&
test_cmp expect actual
ok 19 - diff --rotate-to
expecting success of 4056.20 'diff --skip-to':
git diff --skip-to=sample2.t --name-only HEAD^ >actual &&
test_write_lines sample2.t sample4.t >expect &&
test_cmp expect actual
ok 20 - diff --skip-to
expecting success of 4056.21 'diff --rotate/skip-to error condition':
test_must_fail git diff --rotate-to=sample3.t HEAD^ &&
test_must_fail git diff --skip-to=sample3.t HEAD^
fatal: No such path 'sample3.t' in the diff
fatal: No such path 'sample3.t' in the diff
ok 21 - diff --rotate/skip-to error condition
expecting success of 4056.22 'log --rotate-to':
git log --rotate-to=sample3.t --raw HEAD~2.. >raw &&
# just distill the commit header and paths
sed -n -e "s/^commit.*/commit/p" \
-e "/^:/s/^.* //p" raw >actual &&
cat >expect <<-\EOF &&
commit
sample4.t
sample1.t
sample2.t
commit
sample3.t
sample4.t
sample1.t
sample2.t
EOF
test_cmp expect actual
ok 22 - log --rotate-to
expecting success of 4056.23 'log --skip-to':
git log --skip-to=sample3.t --raw HEAD~2.. >raw &&
# just distill the commit header and paths
sed -n -e "s/^commit.*/commit/p" \
-e "/^:/s/^.* //p" raw >actual &&
cat >expect <<-\EOF &&
commit
sample4.t
commit
sample3.t
sample4.t
EOF
test_cmp expect actual
ok 23 - log --skip-to
# passed all 23 test(s)
1..23
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4058-diff-duplicates.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4058-diff-duplicates/.git/
expecting success of 4058.1 'create trees with duplicate entries':
blob_one=$(echo one | git hash-object -w --stdin) &&
blob_two=$(echo two | git hash-object -w --stdin) &&
inner_one_a=$(make_tree \
100644 inner $blob_one
) &&
inner_one_b=$(make_tree \
100644 inner $blob_two \
100644 inner $blob_two \
100644 inner $blob_two
) &&
outer_one=$(make_tree \
040000 outer $inner_one_a \
040000 outer $inner_one_b
) &&
inner_two=$(make_tree \
100644 inner $blob_one \
100644 inner $blob_two \
100644 inner $blob_two \
100644 inner $blob_two
) &&
outer_two=$(make_tree \
040000 outer $inner_two
) &&
git tag one $outer_one &&
git tag two $outer_two
ok 1 - create trees with duplicate entries
expecting success of 4058.2 'create tree without duplicate entries':
blob_one=$(echo one | git hash-object -w --stdin) &&
outer_three=$(make_tree \
100644 renamed $blob_one
) &&
git tag three $outer_three
ok 2 - create tree without duplicate entries
expecting success of 4058.3 'diff-tree between duplicate trees':
# See NOTICE at top of file
{
printf ":000000 100644 $ZERO_OID $blob_two A\touter/inner\n" &&
printf ":000000 100644 $ZERO_OID $blob_two A\touter/inner\n" &&
printf ":000000 100644 $ZERO_OID $blob_two A\touter/inner\n" &&
printf ":100644 000000 $blob_two $ZERO_OID D\touter/inner\n" &&
printf ":100644 000000 $blob_two $ZERO_OID D\touter/inner\n" &&
printf ":100644 000000 $blob_two $ZERO_OID D\touter/inner\n"
} >expect &&
git diff-tree -r --no-abbrev one two >actual &&
test_cmp expect actual
ok 3 - diff-tree between duplicate trees
expecting success of 4058.4 'diff-tree with renames':
# See NOTICE at top of file.
git diff-tree -M -r --no-abbrev one two >actual &&
test_must_be_empty actual
ok 4 - diff-tree with renames
expecting success of 4058.5 'diff-tree FROM duplicate tree':
# See NOTICE at top of file.
{
printf ":100644 000000 $blob_one $ZERO_OID D\touter/inner\n" &&
printf ":100644 000000 $blob_two $ZERO_OID D\touter/inner\n" &&
printf ":100644 000000 $blob_two $ZERO_OID D\touter/inner\n" &&
printf ":100644 000000 $blob_two $ZERO_OID D\touter/inner\n" &&
printf ":000000 100644 $ZERO_OID $blob_one A\trenamed\n"
} >expect &&
git diff-tree -r --no-abbrev one three >actual &&
test_cmp expect actual
ok 5 - diff-tree FROM duplicate tree
expecting success of 4058.6 'diff-tree FROM duplicate tree, with renames':
# See NOTICE at top of file.
{
printf ":100644 000000 $blob_two $ZERO_OID D\touter/inner\n" &&
printf ":100644 000000 $blob_two $ZERO_OID D\touter/inner\n" &&
printf ":100644 000000 $blob_two $ZERO_OID D\touter/inner\n" &&
printf ":100644 100644 $blob_one $blob_one R100\touter/inner\trenamed\n"
} >expect &&
git diff-tree -M -r --no-abbrev one three >actual &&
test_cmp expect actual
ok 6 - diff-tree FROM duplicate tree, with renames
expecting success of 4058.7 'create a few commits':
git commit-tree -m "Duplicate Entries" two^{tree} >commit_id &&
git branch base $(cat commit_id) &&
git commit-tree -p $(cat commit_id) -m "Just one" three^{tree} >up &&
git branch update $(cat up) &&
git commit-tree -p $(cat up) -m "Back to weird" two^{tree} >final &&
git branch final $(cat final) &&
rm commit_id up final
ok 7 - create a few commits
checking known breakage of 4058.8 'git read-tree does not segfault':
test_when_finished rm .git/index.lock &&
test_might_fail git read-tree --reset base
Segmentation fault
test_must_fail: died by signal 11: git read-tree --reset base
not ok 8 - git read-tree does not segfault # TODO known breakage
checking known breakage of 4058.9 'reset --hard does not segfault':
test_when_finished rm .git/index.lock &&
git checkout base &&
test_might_fail git reset --hard
Switched to branch 'base'
M outer/inner
D outer/inner
D outer/inner
D outer/inner
Segmentation fault
test_must_fail: died by signal 11: git reset --hard
not ok 9 - reset --hard does not segfault # TODO known breakage
checking known breakage of 4058.10 'git diff HEAD does not segfault':
git checkout base &&
GIT_TEST_CHECK_CACHE_TREE=false &&
git reset --hard &&
test_might_fail git diff HEAD
Already on 'base'
M outer/inner
D outer/inner
D outer/inner
D outer/inner
HEAD is now at 0a0d081 Duplicate Entries
Segmentation fault
test_must_fail: died by signal 11: git diff HEAD
not ok 10 - git diff HEAD does not segfault # TODO known breakage
checking known breakage of 4058.11 'can switch to another branch when status is empty':
git clean -ffdqx &&
git status --porcelain -uno >actual &&
test_must_be_empty actual &&
git checkout update
error: Your local changes to the following files would be overwritten by checkout:
outer/inner
Please commit your changes or stash them before you switch branches.
Aborting
not ok 11 - can switch to another branch when status is empty # TODO known breakage
expecting success of 4058.12 'forcibly switch to another branch, verify status empty':
git checkout -f update &&
git status --porcelain -uno >actual &&
test_must_be_empty actual
Switched to branch 'update'
ok 12 - forcibly switch to another branch, verify status empty
expecting success of 4058.13 'fast-forward from non-duplicate entries to duplicate':
git merge final
Updating 4814dcd..c713d2c
Fast-forward
renamed => outer/inner | 0
outer/inner | 1 +
outer/inner | 1 +
outer/inner | 1 +
4 files changed, 3 insertions(+)
rename renamed => outer/inner (100%)
create mode 100644 outer/inner
create mode 100644 outer/inner
create mode 100644 outer/inner
ok 13 - fast-forward from non-duplicate entries to duplicate
checking known breakage of 4058.14 'clean status, switch branches, status still clean':
git status --porcelain -uno >actual &&
test_must_be_empty actual &&
git checkout base &&
git status --porcelain -uno >actual &&
test_must_be_empty actual
'actual' is not empty, it contains:
M outer/inner
not ok 14 - clean status, switch branches, status still clean # TODO known breakage
expecting success of 4058.15 'switch to base branch and force status to be clean':
git checkout base &&
GIT_TEST_CHECK_CACHE_TREE=false git reset --hard &&
git status --porcelain -uno >actual &&
test_must_be_empty actual
Switched to branch 'base'
M outer/inner
D outer/inner
D outer/inner
D outer/inner
HEAD is now at 0a0d081 Duplicate Entries
ok 15 - switch to base branch and force status to be clean
checking known breakage of 4058.16 'fast-forward from duplicate entries to non-duplicate':
git merge update
Segmentation fault
not ok 16 - fast-forward from duplicate entries to non-duplicate # TODO known breakage
# still have 6 known breakage(s)
# passed all remaining 10 test(s)
1..16
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4057-diff-combined-paths.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4057-diff-combined-paths/.git/
expecting success of 4057.1 'trivial merge - combine-diff empty':
for i in $(test_seq 1 9)
do
echo $i >$i.txt &&
git add $i.txt || return 1
done &&
git commit -m "init" &&
git checkout -b side &&
for i in $(test_seq 2 9)
do
echo $i/2 >>$i.txt || return 1
done &&
git commit -a -m "side 2-9" &&
git checkout main &&
echo 1/2 >1.txt &&
git commit -a -m "main 1" &&
git merge side &&
>diffc.expect &&
diffc_verify
[main (root-commit) 0e4c78d] init
Author: A U Thor <author@example.com>
9 files changed, 9 insertions(+)
create mode 100644 1.txt
create mode 100644 2.txt
create mode 100644 3.txt
create mode 100644 4.txt
create mode 100644 5.txt
create mode 100644 6.txt
create mode 100644 7.txt
create mode 100644 8.txt
create mode 100644 9.txt
Switched to a new branch 'side'
[side 18d7b5a] side 2-9
Author: A U Thor <author@example.com>
8 files changed, 8 insertions(+)
Switched to branch 'main'
[main 0d0c265] main 1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Merge made by the 'ort' strategy.
2.txt | 1 +
3.txt | 1 +
4.txt | 1 +
5.txt | 1 +
6.txt | 1 +
7.txt | 1 +
8.txt | 1 +
9.txt | 1 +
8 files changed, 8 insertions(+)
ok 1 - trivial merge - combine-diff empty
expecting success of 4057.2 'only one truly conflicting path':
git checkout side &&
for i in $(test_seq 2 9)
do
echo $i/3 >>$i.txt || return 1
done &&
echo "4side" >>4.txt &&
git commit -a -m "side 2-9 +4" &&
git checkout main &&
for i in $(test_seq 1 9)
do
echo $i/3 >>$i.txt || return 1
done &&
echo "4main" >>4.txt &&
git commit -a -m "main 1-9 +4" &&
test_must_fail git merge side &&
cat <<-\EOF >4.txt &&
4
4/2
4/3
4main
4side
EOF
git add 4.txt &&
git commit -m "merge side (2)" &&
echo 4.txt >diffc.expect &&
diffc_verify
Switched to branch 'side'
[side ff32fb3] side 2-9 +4
Author: A U Thor <author@example.com>
8 files changed, 9 insertions(+)
Switched to branch 'main'
[main 0b5ecd8] main 1-9 +4
Author: A U Thor <author@example.com>
9 files changed, 10 insertions(+)
Auto-merging 4.txt
CONFLICT (content): Merge conflict in 4.txt
Automatic merge failed; fix conflicts and then commit the result.
[main 6619a01] merge side (2)
Author: A U Thor <author@example.com>
ok 2 - only one truly conflicting path
expecting success of 4057.3 'merge introduces new file':
git checkout side &&
for i in $(test_seq 5 9)
do
echo $i/4 >>$i.txt || return 1
done &&
git commit -a -m "side 5-9" &&
git checkout main &&
for i in $(test_seq 1 3)
do
echo $i/4 >>$i.txt || return 1
done &&
git commit -a -m "main 1-3 +4hello" &&
git merge side &&
echo "Hello World" >4hello.txt &&
git add 4hello.txt &&
git commit --amend &&
echo 4hello.txt >diffc.expect &&
diffc_verify
Switched to branch 'side'
[side e8c29ca] side 5-9
Author: A U Thor <author@example.com>
5 files changed, 5 insertions(+)
Switched to branch 'main'
[main 0635bd5] main 1-3 +4hello
Author: A U Thor <author@example.com>
3 files changed, 3 insertions(+)
Merge made by the 'ort' strategy.
5.txt | 1 +
6.txt | 1 +
7.txt | 1 +
8.txt | 1 +
9.txt | 1 +
5 files changed, 5 insertions(+)
[main 7d30ccd] Merge branch 'side'
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
ok 3 - merge introduces new file
expecting success of 4057.4 'merge removed a file':
git checkout side &&
for i in $(test_seq 5 9)
do
echo $i/5 >>$i.txt || return 1
done &&
git commit -a -m "side 5-9" &&
git checkout main &&
for i in $(test_seq 1 3)
do
echo $i/4 >>$i.txt || return 1
done &&
git commit -a -m "main 1-3" &&
git merge side &&
git rm 4.txt &&
git commit --amend &&
echo 4.txt >diffc.expect &&
diffc_verify
Switched to branch 'side'
[side da3ab5d] side 5-9
Author: A U Thor <author@example.com>
5 files changed, 5 insertions(+)
Switched to branch 'main'
[main 61e8724] main 1-3
Author: A U Thor <author@example.com>
3 files changed, 3 insertions(+)
Merge made by the 'ort' strategy.
5.txt | 1 +
6.txt | 1 +
7.txt | 1 +
8.txt | 1 +
9.txt | 1 +
5 files changed, 5 insertions(+)
rm '4.txt'
[main dd9bbd5] Merge branch 'side'
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
ok 4 - merge removed a file
# passed all 4 test(s)
1..4
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4062-diff-pickaxe.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4062-diff-pickaxe/.git/
expecting success of 4062.1 'setup':
test_commit initial &&
printf "%04096d" 0 >4096-zeroes.txt &&
git add 4096-zeroes.txt &&
test_tick &&
git commit -m "A 4k file"
[master (root-commit) 24b24cf] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 initial.t
[master 98d74df] A 4k file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 4096-zeroes.txt
ok 1 - setup
expecting success of 4062.2 '-G matches':
git diff --name-only -G "^(0{64}){64}$" HEAD^ >out &&
test 4096-zeroes.txt = "$(cat out)"
ok 2 - -G matches
expecting success of 4062.3 '-S --pickaxe-regex':
git diff --name-only -S0 --pickaxe-regex HEAD^ >out &&
test 4096-zeroes.txt = "$(cat out)"
ok 3 - -S --pickaxe-regex
# passed all 3 test(s)
1..3
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4063-diff-blobs.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4063-diff-blobs/.git/
expecting success of 4063.1 'create some blobs':
echo one >one &&
echo two >two &&
chmod +x two &&
git add . &&
# cover systems where modes are ignored
git update-index --chmod=+x two &&
git commit -m base &&
sha1_one=$(git rev-parse HEAD:one) &&
sha1_two=$(git rev-parse HEAD:two)
[master (root-commit) e18d699] base
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 one
create mode 100755 two
ok 1 - create some blobs
expecting success of 4063.2 'diff by sha1':
run_diff $sha1_one $sha1_two
ok 2 - diff by sha1
expecting success of 4063.3 'index of sha1 diff':
check_index $sha1_one $sha1_two
index 5626abf0f72e58d7a153368ba57db4c673c0e171..f719efd430d52bcfc8566a43b2eb655688d38871 100644
ok 3 - index of sha1 diff
expecting success of 4063.4 'sha1 diff uses arguments as paths':
check_paths $sha1_one $sha1_two
diff --git a/5626abf0f72e58d7a153368ba57db4c673c0e171 b/f719efd430d52bcfc8566a43b2eb655688d38871
ok 4 - sha1 diff uses arguments as paths
expecting success of 4063.5 'sha1 diff has no mode change':
! grep mode diff
ok 5 - sha1 diff has no mode change
expecting success of 4063.6 'diff by tree:path (run)':
run_diff HEAD:one HEAD:two
ok 6 - diff by tree:path (run)
expecting success of 4063.7 'index of tree:path diff':
check_index $sha1_one $sha1_two
index 5626abf0f72e58d7a153368ba57db4c673c0e171..f719efd430d52bcfc8566a43b2eb655688d38871
ok 7 - index of tree:path diff
expecting success of 4063.8 'tree:path diff uses filenames as paths':
check_paths one two
diff --git a/one b/two
ok 8 - tree:path diff uses filenames as paths
expecting success of 4063.9 'tree:path diff shows mode change':
check_mode 100644 100755
old mode 100644
new mode 100755
ok 9 - tree:path diff shows mode change
expecting success of 4063.10 'diff by ranged tree:path':
run_diff HEAD:one..HEAD:two
ok 10 - diff by ranged tree:path
expecting success of 4063.11 'index of ranged tree:path diff':
check_index $sha1_one $sha1_two
index 5626abf0f72e58d7a153368ba57db4c673c0e171..f719efd430d52bcfc8566a43b2eb655688d38871
ok 11 - index of ranged tree:path diff
expecting success of 4063.12 'ranged tree:path diff uses filenames as paths':
check_paths one two
diff --git a/one b/two
ok 12 - ranged tree:path diff uses filenames as paths
expecting success of 4063.13 'ranged tree:path diff shows mode change':
check_mode 100644 100755
old mode 100644
new mode 100755
ok 13 - ranged tree:path diff shows mode change
expecting success of 4063.14 'diff blob against file':
run_diff HEAD:one two
ok 14 - diff blob against file
expecting success of 4063.15 'index of blob-file diff':
check_index $sha1_one $sha1_two
index 5626abf0f72e58d7a153368ba57db4c673c0e171..f719efd430d52bcfc8566a43b2eb655688d38871
ok 15 - index of blob-file diff
expecting success of 4063.16 'blob-file diff uses filename as paths':
check_paths one two
diff --git a/one b/two
ok 16 - blob-file diff uses filename as paths
checking prerequisite: FILEMODE
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-FILEMODE" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-FILEMODE" &&
test "$(git config --bool core.filemode)" = true
)
prerequisite FILEMODE ok
expecting success of 4063.17 'blob-file diff shows mode change':
check_mode 100644 100755
old mode 100644
new mode 100755
ok 17 - blob-file diff shows mode change
expecting success of 4063.18 'blob-file diff prefers filename to sha1':
run_diff $sha1_one two &&
check_paths two two
diff --git a/two b/two
ok 18 - blob-file diff prefers filename to sha1
# passed all 18 test(s)
1..18
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4059-diff-submodule-not-initialized.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4059-diff-submodule-not-initialized/.git/
expecting success of 4059.1 'setup - submodules':
test_create_repo sm2 &&
add_file . foo &&
add_file sm2 foo1 foo2 &&
smhead1=$(git -C sm2 rev-parse --short --verify HEAD)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4059-diff-submodule-not-initialized/sm2/.git/
36d39d8
1beffeb
ok 1 - setup - submodules
expecting success of 4059.2 'setup - git submodule add':
git -c protocol.file.allow=always submodule add ./sm2 sm1 &&
commit_file sm1 .gitmodules &&
git diff-tree -p --no-commit-id --submodule=log HEAD -- sm1 >actual &&
cat >expected <<-EOF &&
Submodule sm1 0000000...$smhead1 (new submodule)
EOF
test_cmp expected actual
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4059-diff-submodule-not-initialized/sm1'...
done.
ok 2 - setup - git submodule add
expecting success of 4059.3 'submodule directory removed':
rm -rf sm1 &&
git diff-tree -p --no-commit-id --submodule=log HEAD -- sm1 >actual &&
cat >expected <<-EOF &&
Submodule sm1 0000000...$smhead1 (new submodule)
EOF
test_cmp expected actual
ok 3 - submodule directory removed
expecting success of 4059.4 'setup - submodule multiple commits':
git submodule update --checkout sm1 &&
smhead2=$(add_file sm1 foo3 foo4) &&
commit_file sm1 &&
git diff-tree -p --no-commit-id --submodule=log HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 $smhead1..$smhead2:
> Add foo4 ($added foo4)
> Add foo3 ($added foo3)
EOF
test_cmp expected actual
Submodule path 'sm1': checked out '1beffeb46f4c598c329381e14c03d952fb2e60d8'
ok 4 - setup - submodule multiple commits
expecting success of 4059.5 'submodule removed multiple commits':
rm -rf sm1 &&
git diff-tree -p --no-commit-id --submodule=log HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 $smhead1..$smhead2:
> Add foo4 ($added foo4)
> Add foo3 ($added foo3)
EOF
test_cmp expected actual
ok 5 - submodule removed multiple commits
expecting success of 4059.6 'submodule not initialized in new clone':
git clone . sm3 &&
git -C sm3 diff-tree -p --no-commit-id --submodule=log HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 $smhead1...$smhead2 (commits not present)
EOF
test_cmp expected actual
Cloning into 'sm3'...
done.
ok 6 - submodule not initialized in new clone
expecting success of 4059.7 'setup submodule moved':
git submodule update --checkout sm1 &&
git mv sm1 sm4 &&
commit_file sm4 &&
git diff-tree -p --no-commit-id --submodule=log HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm4 0000000...$smhead2 (new submodule)
EOF
test_cmp expected actual
Submodule path 'sm1': checked out 'b762e6a22f976e7e5d55bfe47bb4c4694f97a64c'
ok 7 - setup submodule moved
expecting success of 4059.8 'submodule moved then removed':
smhead3=$(add_file sm4 foo6 foo7) &&
commit_file sm4 &&
rm -rf sm4 &&
git diff-tree -p --no-commit-id --submodule=log HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm4 $smhead2..$smhead3:
> Add foo7 ($added foo7)
> Add foo6 ($added foo6)
EOF
test_cmp expected actual
ok 8 - submodule moved then removed
# passed all 8 test(s)
1..8
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4065-diff-anchored.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4065-diff-anchored/.git/
expecting success of 4065.1 '--anchored':
printf "a\nb\nc\n" >pre &&
printf "c\na\nb\n" >post &&
# normally, c is moved to produce the smallest diff
test_expect_code 1 git diff --no-index pre post >diff &&
grep "^+c" diff &&
# with anchor, a is moved
test_expect_code 1 git diff --no-index --anchored=c pre post >diff &&
grep "^+a" diff
+c
+a
ok 1 - --anchored
expecting success of 4065.2 '--anchored multiple':
printf "a\nb\nc\nd\ne\nf\n" >pre &&
printf "c\na\nb\nf\nd\ne\n" >post &&
# with 1 anchor, c is not moved, but f is moved
test_expect_code 1 git diff --no-index --anchored=c pre post >diff &&
grep "^+a" diff && # a is moved instead of c
grep "^+f" diff &&
# with 2 anchors, c and f are not moved
test_expect_code 1 git diff --no-index --anchored=c --anchored=f pre post >diff &&
grep "^+a" diff &&
grep "^+d" diff # d is moved instead of f
+a
+f
+a
+d
ok 2 - --anchored multiple
expecting success of 4065.3 '--anchored with nonexistent line has no effect':
printf "a\nb\nc\n" >pre &&
printf "c\na\nb\n" >post &&
test_expect_code 1 git diff --no-index --anchored=x pre post >diff &&
grep "^+c" diff
+c
ok 3 - --anchored with nonexistent line has no effect
expecting success of 4065.4 '--anchored with non-unique line has no effect':
printf "a\nb\nc\nd\ne\nc\n" >pre &&
printf "c\na\nb\nc\nd\ne\n" >post &&
test_expect_code 1 git diff --no-index --anchored=c pre post >diff &&
grep "^+c" diff
+c
ok 4 - --anchored with non-unique line has no effect
expecting success of 4065.5 'diff still produced with impossible multiple --anchored':
printf "a\nb\nc\n" >pre &&
printf "c\na\nb\n" >post &&
test_expect_code 1 git diff --no-index --anchored=a --anchored=c pre post >diff &&
mv post expected_post &&
# Ensure that the diff is correct by applying it and then
# comparing the result with the original
git apply diff &&
diff expected_post post
ok 5 - diff still produced with impossible multiple --anchored
expecting success of 4065.6 'later algorithm arguments override earlier ones':
printf "a\nb\nc\n" >pre &&
printf "c\na\nb\n" >post &&
test_expect_code 1 git diff --no-index --patience --anchored=c pre post >diff &&
grep "^+a" diff &&
test_expect_code 1 git diff --no-index --anchored=c --patience pre post >diff &&
grep "^+c" diff &&
test_expect_code 1 git diff --no-index --histogram --anchored=c pre post >diff &&
grep "^+a" diff &&
test_expect_code 1 git diff --no-index --anchored=c --histogram pre post >diff &&
grep "^+c" diff
+a
+c
+a
+c
ok 6 - later algorithm arguments override earlier ones
expecting success of 4065.7 '--anchored works with other commands like "git show"':
printf "a\nb\nc\n" >file &&
git add file &&
git commit -m foo &&
printf "c\na\nb\n" >file &&
git add file &&
git commit -m foo &&
# with anchor, a is moved
git show --patience --anchored=c >diff &&
grep "^+a" diff
[master (root-commit) 59a79f0] foo
Author: A U Thor <author@example.com>
1 file changed, 3 insertions(+)
create mode 100644 file
[master 798b1ed] foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
+a
ok 7 - --anchored works with other commands like "git show"
# passed all 7 test(s)
1..7
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4061-diff-indent.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4061-diff-indent/.git/
expecting success of 4061.1 'prepare':
cat <<-\EOF >spaces.txt &&
1
2
a
b
3
4
EOF
cat <<-\EOF >functions.c &&
1
2
/* function */
foo() {
foo
}
3
4
EOF
git add spaces.txt functions.c &&
test_tick &&
git commit -m initial &&
git branch old &&
cat <<-\EOF >spaces.txt &&
1
2
a
b
a
b
3
4
EOF
cat <<-\EOF >functions.c &&
1
2
/* function */
bar() {
foo
}
/* function */
foo() {
foo
}
3
4
EOF
git add spaces.txt functions.c &&
test_tick &&
git commit -m initial &&
git branch new &&
tr "_" " " <<-\EOF >spaces-expect &&
diff --git a/spaces.txt b/spaces.txt
--- a/spaces.txt
+++ b/spaces.txt
@@ -3,5 +3,8 @@
a
_
b
+a
+
+b
3
4
EOF
tr "_" " " <<-\EOF >spaces-compacted-expect &&
diff --git a/spaces.txt b/spaces.txt
--- a/spaces.txt
+++ b/spaces.txt
@@ -2,6 +2,9 @@
2
a
_
+b
+a
+
b
3
4
EOF
tr "_" " " <<-\EOF >functions-expect &&
diff --git a/functions.c b/functions.c
--- a/functions.c
+++ b/functions.c
@@ -1,6 +1,11 @@
1
2
/* function */
+bar() {
+ foo
+}
+
+/* function */
foo() {
foo
}
EOF
tr "_" " " <<-\EOF >functions-compacted-expect
diff --git a/functions.c b/functions.c
--- a/functions.c
+++ b/functions.c
@@ -1,5 +1,10 @@
1
2
+/* function */
+bar() {
+ foo
+}
+
/* function */
foo() {
foo
EOF
[main (root-commit) a2a2312] initial
Author: A U Thor <author@example.com>
2 files changed, 16 insertions(+)
create mode 100644 functions.c
create mode 100644 spaces.txt
[main cc6bd2a] initial
Author: A U Thor <author@example.com>
2 files changed, 8 insertions(+)
ok 1 - prepare
expecting success of 4061.2 'diff: ugly spaces':
git diff --no-indent-heuristic old new -- spaces.txt >out &&
compare_diff spaces-expect out
ok 2 - diff: ugly spaces
expecting success of 4061.3 'diff: --no-indent-heuristic overrides config':
git -c diff.indentHeuristic=true diff --no-indent-heuristic old new -- spaces.txt >out2 &&
compare_diff spaces-expect out2
ok 3 - diff: --no-indent-heuristic overrides config
expecting success of 4061.4 'diff: nice spaces with --indent-heuristic':
git -c diff.indentHeuristic=false diff --indent-heuristic old new -- spaces.txt >out-compacted &&
compare_diff spaces-compacted-expect out-compacted
ok 4 - diff: nice spaces with --indent-heuristic
expecting success of 4061.5 'diff: nice spaces with diff.indentHeuristic=true':
git -c diff.indentHeuristic=true diff old new -- spaces.txt >out-compacted2 &&
compare_diff spaces-compacted-expect out-compacted2
ok 5 - diff: nice spaces with diff.indentHeuristic=true
expecting success of 4061.6 'diff: --indent-heuristic with --patience':
git diff --indent-heuristic --patience old new -- spaces.txt >out-compacted3 &&
compare_diff spaces-compacted-expect out-compacted3
ok 6 - diff: --indent-heuristic with --patience
expecting success of 4061.7 'diff: --indent-heuristic with --histogram':
git diff --indent-heuristic --histogram old new -- spaces.txt >out-compacted4 &&
compare_diff spaces-compacted-expect out-compacted4
ok 7 - diff: --indent-heuristic with --histogram
expecting success of 4061.8 'diff: ugly functions':
git diff --no-indent-heuristic old new -- functions.c >out &&
compare_diff functions-expect out
ok 8 - diff: ugly functions
expecting success of 4061.9 'diff: nice functions with --indent-heuristic':
git diff --indent-heuristic old new -- functions.c >out-compacted &&
compare_diff functions-compacted-expect out-compacted
ok 9 - diff: nice functions with --indent-heuristic
expecting success of 4061.10 'blame: nice spaces with --indent-heuristic':
git blame --indent-heuristic old..new -- spaces.txt >out-blame-compacted &&
compare_blame spaces-compacted-expect out-blame-compacted
ok 10 - blame: nice spaces with --indent-heuristic
expecting success of 4061.11 'blame: nice spaces with diff.indentHeuristic=true':
git -c diff.indentHeuristic=true blame old..new -- spaces.txt >out-blame-compacted2 &&
compare_blame spaces-compacted-expect out-blame-compacted2
ok 11 - blame: nice spaces with diff.indentHeuristic=true
expecting success of 4061.12 'blame: ugly spaces with --no-indent-heuristic':
git blame --no-indent-heuristic old..new -- spaces.txt >out-blame &&
compare_blame spaces-expect out-blame
ok 12 - blame: ugly spaces with --no-indent-heuristic
expecting success of 4061.13 'blame: ugly spaces with diff.indentHeuristic=false':
git -c diff.indentHeuristic=false blame old..new -- spaces.txt >out-blame2 &&
compare_blame spaces-expect out-blame2
ok 13 - blame: ugly spaces with diff.indentHeuristic=false
expecting success of 4061.14 'blame: --no-indent-heuristic overrides config':
git -c diff.indentHeuristic=true blame --no-indent-heuristic old..new -- spaces.txt >out-blame3 &&
git blame old..new -- spaces.txt >out-blame &&
compare_blame spaces-expect out-blame3
ok 14 - blame: --no-indent-heuristic overrides config
expecting success of 4061.15 'blame: --indent-heuristic overrides config':
git -c diff.indentHeuristic=false blame --indent-heuristic old..new -- spaces.txt >out-blame-compacted3 &&
compare_blame spaces-compacted-expect out-blame-compacted2
ok 15 - blame: --indent-heuristic overrides config
expecting success of 4061.16 'diff-tree: nice spaces with --indent-heuristic':
git diff-tree --indent-heuristic -p old new -- spaces.txt >out-diff-tree-compacted &&
compare_diff spaces-compacted-expect out-diff-tree-compacted
ok 16 - diff-tree: nice spaces with --indent-heuristic
expecting success of 4061.17 'diff-tree: nice spaces with diff.indentHeuristic=true':
git -c diff.indentHeuristic=true diff-tree -p old new -- spaces.txt >out-diff-tree-compacted2 &&
compare_diff spaces-compacted-expect out-diff-tree-compacted2
ok 17 - diff-tree: nice spaces with diff.indentHeuristic=true
expecting success of 4061.18 'diff-tree: ugly spaces with --no-indent-heuristic':
git diff-tree --no-indent-heuristic -p old new -- spaces.txt >out-diff-tree &&
compare_diff spaces-expect out-diff-tree
ok 18 - diff-tree: ugly spaces with --no-indent-heuristic
expecting success of 4061.19 'diff-tree: ugly spaces with diff.indentHeuristic=false':
git -c diff.indentHeuristic=false diff-tree -p old new -- spaces.txt >out-diff-tree2 &&
compare_diff spaces-expect out-diff-tree2
ok 19 - diff-tree: ugly spaces with diff.indentHeuristic=false
expecting success of 4061.20 'diff-tree: --indent-heuristic overrides config':
git -c diff.indentHeuristic=false diff-tree --indent-heuristic -p old new -- spaces.txt >out-diff-tree-compacted3 &&
compare_diff spaces-compacted-expect out-diff-tree-compacted3
ok 20 - diff-tree: --indent-heuristic overrides config
expecting success of 4061.21 'diff-tree: --no-indent-heuristic overrides config':
git -c diff.indentHeuristic=true diff-tree --no-indent-heuristic -p old new -- spaces.txt >out-diff-tree3 &&
compare_diff spaces-expect out-diff-tree3
ok 21 - diff-tree: --no-indent-heuristic overrides config
expecting success of 4061.22 'diff-index: nice spaces with --indent-heuristic':
git checkout -B diff-index &&
git reset --soft HEAD~ &&
git diff-index --indent-heuristic -p old -- spaces.txt >out-diff-index-compacted &&
compare_diff spaces-compacted-expect out-diff-index-compacted &&
git checkout -f main
Switched to a new branch 'diff-index'
Switched to branch 'main'
ok 22 - diff-index: nice spaces with --indent-heuristic
expecting success of 4061.23 'diff-index: nice spaces with diff.indentHeuristic=true':
git checkout -B diff-index &&
git reset --soft HEAD~ &&
git -c diff.indentHeuristic=true diff-index -p old -- spaces.txt >out-diff-index-compacted2 &&
compare_diff spaces-compacted-expect out-diff-index-compacted2 &&
git checkout -f main
Switched to and reset branch 'diff-index'
Switched to branch 'main'
ok 23 - diff-index: nice spaces with diff.indentHeuristic=true
expecting success of 4061.24 'diff-index: ugly spaces with --no-indent-heuristic':
git checkout -B diff-index &&
git reset --soft HEAD~ &&
git diff-index --no-indent-heuristic -p old -- spaces.txt >out-diff-index &&
compare_diff spaces-expect out-diff-index &&
git checkout -f main
Switched to and reset branch 'diff-index'
Switched to branch 'main'
ok 24 - diff-index: ugly spaces with --no-indent-heuristic
expecting success of 4061.25 'diff-index: ugly spaces with diff.indentHeuristic=false':
git checkout -B diff-index &&
git reset --soft HEAD~ &&
git -c diff.indentHeuristic=false diff-index -p old -- spaces.txt >out-diff-index2 &&
compare_diff spaces-expect out-diff-index2 &&
git checkout -f main
Switched to and reset branch 'diff-index'
Switched to branch 'main'
ok 25 - diff-index: ugly spaces with diff.indentHeuristic=false
expecting success of 4061.26 'diff-index: --indent-heuristic overrides config':
git checkout -B diff-index &&
git reset --soft HEAD~ &&
git -c diff.indentHeuristic=false diff-index --indent-heuristic -p old -- spaces.txt >out-diff-index-compacted3 &&
compare_diff spaces-compacted-expect out-diff-index-compacted3 &&
git checkout -f main
Switched to and reset branch 'diff-index'
Switched to branch 'main'
ok 26 - diff-index: --indent-heuristic overrides config
expecting success of 4061.27 'diff-index: --no-indent-heuristic overrides config':
git checkout -B diff-index &&
git reset --soft HEAD~ &&
git -c diff.indentHeuristic=true diff-index --no-indent-heuristic -p old -- spaces.txt >out-diff-index3 &&
compare_diff spaces-expect out-diff-index3 &&
git checkout -f main
Switched to and reset branch 'diff-index'
Switched to branch 'main'
ok 27 - diff-index: --no-indent-heuristic overrides config
expecting success of 4061.28 'diff-files: nice spaces with --indent-heuristic':
git checkout -B diff-files &&
git reset HEAD~ &&
git diff-files --indent-heuristic -p spaces.txt >out-diff-files-raw &&
grep -v index out-diff-files-raw >out-diff-files-compacted &&
compare_diff spaces-compacted-expect out-diff-files-compacted &&
git checkout -f main
Switched to a new branch 'diff-files'
Unstaged changes after reset:
M functions.c
M spaces.txt
Switched to branch 'main'
ok 28 - diff-files: nice spaces with --indent-heuristic
expecting success of 4061.29 'diff-files: nice spaces with diff.indentHeuristic=true':
git checkout -B diff-files &&
git reset HEAD~ &&
git -c diff.indentHeuristic=true diff-files -p spaces.txt >out-diff-files-raw2 &&
grep -v index out-diff-files-raw2 >out-diff-files-compacted2 &&
compare_diff spaces-compacted-expect out-diff-files-compacted2 &&
git checkout -f main
Switched to and reset branch 'diff-files'
Unstaged changes after reset:
M functions.c
M spaces.txt
Switched to branch 'main'
ok 29 - diff-files: nice spaces with diff.indentHeuristic=true
expecting success of 4061.30 'diff-files: ugly spaces with --no-indent-heuristic':
git checkout -B diff-files &&
git reset HEAD~ &&
git diff-files --no-indent-heuristic -p spaces.txt >out-diff-files-raw &&
grep -v index out-diff-files-raw >out-diff-files &&
compare_diff spaces-expect out-diff-files &&
git checkout -f main
Switched to and reset branch 'diff-files'
Unstaged changes after reset:
M functions.c
M spaces.txt
Switched to branch 'main'
ok 30 - diff-files: ugly spaces with --no-indent-heuristic
expecting success of 4061.31 'diff-files: ugly spaces with diff.indentHeuristic=false':
git checkout -B diff-files &&
git reset HEAD~ &&
git -c diff.indentHeuristic=false diff-files -p spaces.txt >out-diff-files-raw2 &&
grep -v index out-diff-files-raw2 >out-diff-files &&
compare_diff spaces-expect out-diff-files &&
git checkout -f main
Switched to and reset branch 'diff-files'
Unstaged changes after reset:
M functions.c
M spaces.txt
Switched to branch 'main'
ok 31 - diff-files: ugly spaces with diff.indentHeuristic=false
expecting success of 4061.32 'diff-files: --indent-heuristic overrides config':
git checkout -B diff-files &&
git reset HEAD~ &&
git -c diff.indentHeuristic=false diff-files --indent-heuristic -p spaces.txt >out-diff-files-raw3 &&
grep -v index out-diff-files-raw3 >out-diff-files-compacted &&
compare_diff spaces-compacted-expect out-diff-files-compacted &&
git checkout -f main
Switched to and reset branch 'diff-files'
Unstaged changes after reset:
M functions.c
M spaces.txt
Switched to branch 'main'
ok 32 - diff-files: --indent-heuristic overrides config
expecting success of 4061.33 'diff-files: --no-indent-heuristic overrides config':
git checkout -B diff-files &&
git reset HEAD~ &&
git -c diff.indentHeuristic=true diff-files --no-indent-heuristic -p spaces.txt >out-diff-files-raw4 &&
grep -v index out-diff-files-raw4 >out-diff-files &&
compare_diff spaces-expect out-diff-files &&
git checkout -f main
Switched to and reset branch 'diff-files'
Unstaged changes after reset:
M functions.c
M spaces.txt
Switched to branch 'main'
ok 33 - diff-files: --no-indent-heuristic overrides config
# passed all 33 test(s)
1..33
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4066-diff-emit-delay.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4066-diff-emit-delay/.git/
expecting success of 4066.1 'set up history with a merge':
test_commit A &&
test_commit B &&
git checkout -b side HEAD^ &&
test_commit C &&
git merge -m M main &&
test_commit D
[main (root-commit) 0ddfaf1] A
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 A.t
[main d9df450] B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 B.t
Switched to a new branch 'side'
[side 5dee784] C
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 C.t
Merge made by the 'ort' strategy.
B.t | 1 +
1 file changed, 1 insertion(+)
create mode 100644 B.t
[side 4d3a2bb] D
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 D.t
ok 1 - set up history with a merge
expecting success of 4066.2 'log --cc -p --stat --color-moved':
cat >expect <<-EOF &&
commit D
---
D.t | 1 +
1 file changed, 1 insertion(+)
diff --git a/D.t b/D.t
new file mode 100644
index 0000000..$(git rev-parse --short D:D.t)
--- /dev/null
+++ b/D.t
@@ -0,0 +1 @@
+D
commit M
B.t | 1 +
1 file changed, 1 insertion(+)
commit C
---
C.t | 1 +
1 file changed, 1 insertion(+)
diff --git a/C.t b/C.t
new file mode 100644
index 0000000..$(git rev-parse --short C:C.t)
--- /dev/null
+++ b/C.t
@@ -0,0 +1 @@
+C
commit B
---
B.t | 1 +
1 file changed, 1 insertion(+)
diff --git a/B.t b/B.t
new file mode 100644
index 0000000..$(git rev-parse --short B:B.t)
--- /dev/null
+++ b/B.t
@@ -0,0 +1 @@
+B
commit A
---
A.t | 1 +
1 file changed, 1 insertion(+)
diff --git a/A.t b/A.t
new file mode 100644
index 0000000..$(git rev-parse --short A:A.t)
--- /dev/null
+++ b/A.t
@@ -0,0 +1 @@
+A
EOF
git log --format="commit %s" --cc -p --stat --color-moved >actual &&
test_cmp expect actual
ok 2 - log --cc -p --stat --color-moved
# passed all 2 test(s)
1..2
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4064-diff-oidfind.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4064-diff-oidfind/.git/
expecting success of 4064.1 'setup ':
git commit --allow-empty -m "empty initial commit" &&
echo "Hello, world!" >greeting &&
git add greeting &&
git commit -m "add the greeting blob" && # borrowed from Git from the Bottom Up
git tag -m "the blob" greeting $(git rev-parse HEAD:greeting) &&
echo asdf >unrelated &&
git add unrelated &&
git commit -m "unrelated history" &&
git revert HEAD^ &&
git commit --allow-empty -m "another unrelated commit"
[master (root-commit) 274b021] empty initial commit
Author: A U Thor <author@example.com>
[master bae5752] add the greeting blob
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 greeting
[master 87e1d9b] unrelated history
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 unrelated
[master 395f7b3] Revert "add the greeting blob"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
1 file changed, 1 deletion(-)
delete mode 100644 greeting
[master edd3a99] another unrelated commit
Author: A U Thor <author@example.com>
ok 1 - setup
expecting success of 4064.2 'find the greeting blob':
cat >expect <<-EOF &&
Revert "add the greeting blob"
add the greeting blob
EOF
git log --format=%s --find-object=greeting^{blob} >actual &&
test_cmp expect actual
ok 2 - find the greeting blob
expecting success of 4064.3 'setup a tree':
mkdir a &&
echo asdf >a/file &&
git add a/file &&
git commit -m "add a file in a subdirectory"
[master 5912b3f] add a file in a subdirectory
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 a/file
ok 3 - setup a tree
expecting success of 4064.4 'find a tree':
cat >expect <<-EOF &&
add a file in a subdirectory
EOF
git log --format=%s -t --find-object=HEAD:a >actual &&
test_cmp expect actual
ok 4 - find a tree
expecting success of 4064.5 'setup a submodule':
test_create_repo sub &&
test_commit -C sub sub &&
git submodule add ./sub sub &&
git commit -a -m "add sub"
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4064-diff-oidfind/sub/.git/
[master (root-commit) 672648c] sub
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 sub.t
Adding existing repo at 'sub' to the index
[master 9b6ab80] add sub
Author: A U Thor <author@example.com>
2 files changed, 4 insertions(+)
create mode 100644 .gitmodules
create mode 160000 sub
ok 5 - setup a submodule
expecting success of 4064.6 'find a submodule':
cat >expect <<-EOF &&
add sub
EOF
git log --format=%s --find-object=HEAD:sub >actual &&
test_cmp expect actual
ok 6 - find a submodule
expecting success of 4064.7 'set up merge tests':
test_commit base &&
git checkout -b boring base^ &&
echo boring >file &&
git add file &&
git commit -m boring &&
git checkout -b interesting base^ &&
echo interesting >file &&
git add file &&
git commit -m interesting &&
blob=$(git rev-parse interesting:file)
[master df80aba] base
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 base.t
Switched to a new branch 'boring'
[boring 6e5eceb] boring
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
Switched to a new branch 'interesting'
[interesting 9f8795e] interesting
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
ok 7 - set up merge tests
expecting success of 4064.8 'detect merge which introduces blob':
git checkout -B merge base &&
git merge --no-commit boring &&
echo interesting >file &&
git commit -am "introduce blob" &&
git diff-tree --format=%s --find-object=$blob -c --name-status HEAD >actual &&
cat >expect <<-\EOF &&
introduce blob
AM file
EOF
test_cmp expect actual
Switched to a new branch 'merge'
Automatic merge went well; stopped before committing as requested
[merge 691f20d] introduce blob
Author: A U Thor <author@example.com>
ok 8 - detect merge which introduces blob
expecting success of 4064.9 'detect merge which removes blob':
git checkout -B merge interesting &&
git merge --no-commit base &&
echo boring >file &&
git commit -am "remove blob" &&
git diff-tree --format=%s --find-object=$blob -c --name-status HEAD >actual &&
cat >expect <<-\EOF &&
remove blob
MA file
EOF
test_cmp expect actual
Reset branch 'merge'
Automatic merge went well; stopped before committing as requested
[merge 5a6d6f7] remove blob
Author: A U Thor <author@example.com>
ok 9 - detect merge which removes blob
expecting success of 4064.10 'do not detect merge that does not touch blob':
git checkout -B merge interesting &&
git merge -m "untouched blob" base &&
git diff-tree --format=%s --find-object=$blob -c --name-status HEAD >actual &&
cat >expect <<-\EOF &&
untouched blob
EOF
test_cmp expect actual
Reset branch 'merge'
Merge made by the 'ort' strategy.
base.t | 1 +
1 file changed, 1 insertion(+)
create mode 100644 base.t
ok 10 - do not detect merge that does not touch blob
# passed all 10 test(s)
1..10
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4060-diff-submodule-option-diff-format.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4060-diff-submodule-option-diff-format/.git/
expecting success of 4060.1 'setup repository':
test_create_repo sm1 &&
add_file . foo &&
head1=$(add_file sm1 foo1 foo2) &&
fullhead1=$(git -C sm1 rev-parse --verify HEAD)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4060-diff-submodule-option-diff-format/sm1/.git/
36d39d8
ok 1 - setup repository
expecting success of 4060.2 'added submodule':
git add sm1 &&
git diff-index -p --submodule=diff HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 0000000...$head1 (new submodule)
diff --git a/sm1/foo1 b/sm1/foo1
new file mode 100644
index 0000000..1715acd
--- /dev/null
+++ b/sm1/foo1
@@ -0,0 +1 @@
+foo1
diff --git a/sm1/foo2 b/sm1/foo2
new file mode 100644
index 0000000..54b060e
--- /dev/null
+++ b/sm1/foo2
@@ -0,0 +1 @@
+foo2
EOF
diff_cmp expected actual
warning: adding embedded git repository: sm1
hint: You've added another git repository inside your current repository.
hint: Clones of the outer repository will not contain the contents of
hint: the embedded repository and will not know how to obtain it.
hint: If you meant to add a submodule, use:
hint:
hint: git submodule add <url> sm1
hint:
hint: If you added this path by mistake, you can remove it from the
hint: index with:
hint:
hint: git rm --cached sm1
hint:
hint: See "git help submodule" for more information.
ok 2 - added submodule
expecting success of 4060.3 'added submodule, set diff.submodule':
test_config diff.submodule log &&
git add sm1 &&
git diff-index -p --submodule=diff HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 0000000...$head1 (new submodule)
diff --git a/sm1/foo1 b/sm1/foo1
new file mode 100644
index 0000000..1715acd
--- /dev/null
+++ b/sm1/foo1
@@ -0,0 +1 @@
+foo1
diff --git a/sm1/foo2 b/sm1/foo2
new file mode 100644
index 0000000..54b060e
--- /dev/null
+++ b/sm1/foo2
@@ -0,0 +1 @@
+foo2
EOF
diff_cmp expected actual
ok 3 - added submodule, set diff.submodule
expecting success of 4060.4 '--submodule=short overrides diff.submodule':
test_config diff.submodule log &&
git add sm1 &&
git diff --submodule=short --cached >actual &&
cat >expected <<-EOF &&
diff --git a/sm1 b/sm1
new file mode 160000
index 0000000..$head1
--- /dev/null
+++ b/sm1
@@ -0,0 +1 @@
+Subproject commit $fullhead1
EOF
diff_cmp expected actual
ok 4 - --submodule=short overrides diff.submodule
expecting success of 4060.5 'diff.submodule does not affect plumbing':
test_config diff.submodule log &&
git diff-index -p HEAD >actual &&
cat >expected <<-EOF &&
diff --git a/sm1 b/sm1
new file mode 160000
index 0000000..$head1
--- /dev/null
+++ b/sm1
@@ -0,0 +1 @@
+Subproject commit $fullhead1
EOF
diff_cmp expected actual
ok 5 - diff.submodule does not affect plumbing
expecting success of 4060.6 'modified submodule(forward)':
git diff-index -p --submodule=diff HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 $head1..$head2:
diff --git a/sm1/foo3 b/sm1/foo3
new file mode 100644
index 0000000..c1ec6c6
--- /dev/null
+++ b/sm1/foo3
@@ -0,0 +1 @@
+foo3
EOF
diff_cmp expected actual
ok 6 - modified submodule(forward)
expecting success of 4060.7 'modified submodule(forward)':
git diff --submodule=diff >actual &&
cat >expected <<-EOF &&
Submodule sm1 $head1..$head2:
diff --git a/sm1/foo3 b/sm1/foo3
new file mode 100644
index 0000000..c1ec6c6
--- /dev/null
+++ b/sm1/foo3
@@ -0,0 +1 @@
+foo3
EOF
diff_cmp expected actual
ok 7 - modified submodule(forward)
expecting success of 4060.8 'modified submodule(forward) --submodule':
git diff --submodule >actual &&
cat >expected <<-EOF &&
Submodule sm1 $head1..$head2:
> Add foo3 ($added foo3)
EOF
diff_cmp expected actual
ok 8 - modified submodule(forward) --submodule
expecting success of 4060.9 'modified submodule(forward) --submodule=short':
git diff --submodule=short >actual &&
cat >expected <<-EOF &&
diff --git a/sm1 b/sm1
index $head1..$head2 160000
--- a/sm1
+++ b/sm1
@@ -1 +1 @@
-Subproject commit $fullhead1
+Subproject commit $fullhead2
EOF
diff_cmp expected actual
ok 9 - modified submodule(forward) --submodule=short
expecting success of 4060.10 'modified submodule(backward)':
git diff-index -p --submodule=diff HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 $head2..$head3 (rewind):
diff --git a/sm1/foo2 b/sm1/foo2
deleted file mode 100644
index 54b060e..0000000
--- a/sm1/foo2
+++ /dev/null
@@ -1 +0,0 @@
-foo2
diff --git a/sm1/foo3 b/sm1/foo3
deleted file mode 100644
index c1ec6c6..0000000
--- a/sm1/foo3
+++ /dev/null
@@ -1 +0,0 @@
-foo3
EOF
diff_cmp expected actual
ok 10 - modified submodule(backward)
expecting success of 4060.11 'modified submodule(backward and forward)':
git diff-index -p --submodule=diff HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 $head2...$head4:
diff --git a/sm1/foo2 b/sm1/foo2
deleted file mode 100644
index 54b060e..0000000
--- a/sm1/foo2
+++ /dev/null
@@ -1 +0,0 @@
-foo2
diff --git a/sm1/foo3 b/sm1/foo3
deleted file mode 100644
index c1ec6c6..0000000
--- a/sm1/foo3
+++ /dev/null
@@ -1 +0,0 @@
-foo3
diff --git a/sm1/foo4 b/sm1/foo4
new file mode 100644
index 0000000..a0016db
--- /dev/null
+++ b/sm1/foo4
@@ -0,0 +1 @@
+foo4
diff --git a/sm1/foo5 b/sm1/foo5
new file mode 100644
index 0000000..d6f2413
--- /dev/null
+++ b/sm1/foo5
@@ -0,0 +1 @@
+foo5
EOF
diff_cmp expected actual
ok 11 - modified submodule(backward and forward)
expecting success of 4060.12 'typechanged submodule(submodule->blob), --cached':
git diff --submodule=diff --cached >actual &&
cat >expected <<-EOF &&
Submodule sm1 $head4...0000000 (submodule deleted)
diff --git a/sm1/foo1 b/sm1/foo1
deleted file mode 100644
index 1715acd..0000000
--- a/sm1/foo1
+++ /dev/null
@@ -1 +0,0 @@
-foo1
diff --git a/sm1/foo4 b/sm1/foo4
deleted file mode 100644
index a0016db..0000000
--- a/sm1/foo4
+++ /dev/null
@@ -1 +0,0 @@
-foo4
diff --git a/sm1/foo5 b/sm1/foo5
deleted file mode 100644
index d6f2413..0000000
--- a/sm1/foo5
+++ /dev/null
@@ -1 +0,0 @@
-foo5
diff --git a/sm1 b/sm1
new file mode 100644
index 0000000..9da5fb8
--- /dev/null
+++ b/sm1
@@ -0,0 +1 @@
+sm1
EOF
diff_cmp expected actual
ok 12 - typechanged submodule(submodule->blob), --cached
expecting success of 4060.13 'typechanged submodule(submodule->blob)':
git diff --submodule=diff >actual &&
cat >expected <<-EOF &&
diff --git a/sm1 b/sm1
deleted file mode 100644
index 9da5fb8..0000000
--- a/sm1
+++ /dev/null
@@ -1 +0,0 @@
-sm1
Submodule sm1 0000000...$head4 (new submodule)
diff --git a/sm1/foo1 b/sm1/foo1
new file mode 100644
index 0000000..1715acd
--- /dev/null
+++ b/sm1/foo1
@@ -0,0 +1 @@
+foo1
diff --git a/sm1/foo4 b/sm1/foo4
new file mode 100644
index 0000000..a0016db
--- /dev/null
+++ b/sm1/foo4
@@ -0,0 +1 @@
+foo4
diff --git a/sm1/foo5 b/sm1/foo5
new file mode 100644
index 0000000..d6f2413
--- /dev/null
+++ b/sm1/foo5
@@ -0,0 +1 @@
+foo5
EOF
diff_cmp expected actual
ok 13 - typechanged submodule(submodule->blob)
expecting success of 4060.14 'typechanged submodule(submodule->blob)':
git diff-index -p --submodule=diff HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 $head4...0000000 (submodule deleted)
diff --git a/sm1 b/sm1
new file mode 100644
index 0000000..9da5fb8
--- /dev/null
+++ b/sm1
@@ -0,0 +1 @@
+sm1
EOF
diff_cmp expected actual
ok 14 - typechanged submodule(submodule->blob)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4060-diff-submodule-option-diff-format/sm1/.git/
expecting success of 4060.15 'nonexistent commit':
git diff-index -p --submodule=diff HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 $head4...$head6 (commits not present)
EOF
diff_cmp expected actual
ok 15 - nonexistent commit
expecting success of 4060.16 'typechanged submodule(blob->submodule)':
git diff-index -p --submodule=diff HEAD >actual &&
cat >expected <<-EOF &&
diff --git a/sm1 b/sm1
deleted file mode 100644
index 9da5fb8..0000000
--- a/sm1
+++ /dev/null
@@ -1 +0,0 @@
-sm1
Submodule sm1 0000000...$head6 (new submodule)
diff --git a/sm1/foo6 b/sm1/foo6
new file mode 100644
index 0000000..462398b
--- /dev/null
+++ b/sm1/foo6
@@ -0,0 +1 @@
+foo6
diff --git a/sm1/foo7 b/sm1/foo7
new file mode 100644
index 0000000..6e9262c
--- /dev/null
+++ b/sm1/foo7
@@ -0,0 +1 @@
+foo7
EOF
diff_cmp expected actual
ok 16 - typechanged submodule(blob->submodule)
expecting success of 4060.17 'submodule is up to date':
head7=$(git -C sm1 rev-parse --short --verify HEAD) &&
git diff-index -p --submodule=diff HEAD >actual &&
test_must_be_empty actual
ok 17 - submodule is up to date
expecting success of 4060.18 'submodule contains untracked content':
echo new > sm1/new-file &&
git diff-index -p --ignore-submodules=none --submodule=diff HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 contains untracked content
EOF
diff_cmp expected actual
ok 18 - submodule contains untracked content
expecting success of 4060.19 'submodule contains untracked content (untracked ignored)':
git diff-index -p --submodule=diff HEAD >actual &&
test_must_be_empty actual
ok 19 - submodule contains untracked content (untracked ignored)
expecting success of 4060.20 'submodule contains untracked content (dirty ignored)':
git diff-index -p --ignore-submodules=dirty --submodule=diff HEAD >actual &&
test_must_be_empty actual
ok 20 - submodule contains untracked content (dirty ignored)
expecting success of 4060.21 'submodule contains untracked content (all ignored)':
git diff-index -p --ignore-submodules=all --submodule=diff HEAD >actual &&
test_must_be_empty actual
ok 21 - submodule contains untracked content (all ignored)
expecting success of 4060.22 'submodule contains untracked and modified content':
echo new > sm1/foo6 &&
git diff-index -p --ignore-submodules=none --submodule=diff HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 contains untracked content
Submodule sm1 contains modified content
diff --git a/sm1/foo6 b/sm1/foo6
index 462398b..3e75765 100644
--- a/sm1/foo6
+++ b/sm1/foo6
@@ -1 +1 @@
-foo6
+new
EOF
diff_cmp expected actual
ok 22 - submodule contains untracked and modified content
expecting success of 4060.23 'submodule contains untracked and modified content (untracked ignored)':
echo new > sm1/foo6 &&
git diff-index -p --submodule=diff HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 contains modified content
diff --git a/sm1/foo6 b/sm1/foo6
index 462398b..3e75765 100644
--- a/sm1/foo6
+++ b/sm1/foo6
@@ -1 +1 @@
-foo6
+new
EOF
diff_cmp expected actual
ok 23 - submodule contains untracked and modified content (untracked ignored)
expecting success of 4060.24 'submodule contains untracked and modified content (dirty ignored)':
echo new > sm1/foo6 &&
git diff-index -p --ignore-submodules=dirty --submodule=diff HEAD >actual &&
test_must_be_empty actual
ok 24 - submodule contains untracked and modified content (dirty ignored)
expecting success of 4060.25 'submodule contains untracked and modified content (all ignored)':
echo new > sm1/foo6 &&
git diff-index -p --ignore-submodules --submodule=diff HEAD >actual &&
test_must_be_empty actual
ok 25 - submodule contains untracked and modified content (all ignored)
expecting success of 4060.26 'submodule contains modified content':
rm -f sm1/new-file &&
git diff-index -p --submodule=diff HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 contains modified content
diff --git a/sm1/foo6 b/sm1/foo6
index 462398b..3e75765 100644
--- a/sm1/foo6
+++ b/sm1/foo6
@@ -1 +1 @@
-foo6
+new
EOF
diff_cmp expected actual
ok 26 - submodule contains modified content
expecting success of 4060.27 'submodule is modified':
git diff-index -p --submodule=diff HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 $head7..$head8:
diff --git a/sm1/foo6 b/sm1/foo6
index 462398b..3e75765 100644
--- a/sm1/foo6
+++ b/sm1/foo6
@@ -1 +1 @@
-foo6
+new
EOF
diff_cmp expected actual
ok 27 - submodule is modified
expecting success of 4060.28 'modified submodule contains untracked content':
echo new > sm1/new-file &&
git diff-index -p --ignore-submodules=none --submodule=diff HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 contains untracked content
Submodule sm1 $head7..$head8:
diff --git a/sm1/foo6 b/sm1/foo6
index 462398b..3e75765 100644
--- a/sm1/foo6
+++ b/sm1/foo6
@@ -1 +1 @@
-foo6
+new
EOF
diff_cmp expected actual
ok 28 - modified submodule contains untracked content
expecting success of 4060.29 'modified submodule contains untracked content (untracked ignored)':
git diff-index -p --submodule=diff HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 $head7..$head8:
diff --git a/sm1/foo6 b/sm1/foo6
index 462398b..3e75765 100644
--- a/sm1/foo6
+++ b/sm1/foo6
@@ -1 +1 @@
-foo6
+new
EOF
diff_cmp expected actual
ok 29 - modified submodule contains untracked content (untracked ignored)
expecting success of 4060.30 'modified submodule contains untracked content (dirty ignored)':
git diff-index -p --ignore-submodules=dirty --submodule=diff HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 $head7..$head8:
diff --git a/sm1/foo6 b/sm1/foo6
index 462398b..3e75765 100644
--- a/sm1/foo6
+++ b/sm1/foo6
@@ -1 +1 @@
-foo6
+new
EOF
diff_cmp expected actual
ok 30 - modified submodule contains untracked content (dirty ignored)
expecting success of 4060.31 'modified submodule contains untracked content (all ignored)':
git diff-index -p --ignore-submodules=all --submodule=diff HEAD >actual &&
test_must_be_empty actual
ok 31 - modified submodule contains untracked content (all ignored)
expecting success of 4060.32 'modified submodule contains untracked and modified content':
echo modification >> sm1/foo6 &&
git diff-index -p --ignore-submodules=none --submodule=diff HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 contains untracked content
Submodule sm1 contains modified content
Submodule sm1 $head7..$head8:
diff --git a/sm1/foo6 b/sm1/foo6
index 462398b..dfda541 100644
--- a/sm1/foo6
+++ b/sm1/foo6
@@ -1 +1,2 @@
-foo6
+new
+modification
EOF
diff_cmp expected actual
ok 32 - modified submodule contains untracked and modified content
expecting success of 4060.33 'modified submodule contains untracked and modified content (untracked ignored)':
echo modification >> sm1/foo6 &&
git diff-index -p --submodule=diff HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 contains modified content
Submodule sm1 $head7..$head8:
diff --git a/sm1/foo6 b/sm1/foo6
index 462398b..e20e2d9 100644
--- a/sm1/foo6
+++ b/sm1/foo6
@@ -1 +1,3 @@
-foo6
+new
+modification
+modification
EOF
diff_cmp expected actual
ok 33 - modified submodule contains untracked and modified content (untracked ignored)
expecting success of 4060.34 'modified submodule contains untracked and modified content (dirty ignored)':
echo modification >> sm1/foo6 &&
git diff-index -p --ignore-submodules=dirty --submodule=diff HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 $head7..$head8:
diff --git a/sm1/foo6 b/sm1/foo6
index 462398b..3e75765 100644
--- a/sm1/foo6
+++ b/sm1/foo6
@@ -1 +1 @@
-foo6
+new
EOF
diff_cmp expected actual
ok 34 - modified submodule contains untracked and modified content (dirty ignored)
expecting success of 4060.35 'modified submodule contains untracked and modified content (all ignored)':
echo modification >> sm1/foo6 &&
git diff-index -p --ignore-submodules --submodule=diff HEAD >actual &&
test_must_be_empty actual
ok 35 - modified submodule contains untracked and modified content (all ignored)
expecting success of 4060.36 'modified submodule contains modified content':
rm -f sm1/new-file &&
git diff-index -p --submodule=diff HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 contains modified content
Submodule sm1 $head7..$head8:
diff --git a/sm1/foo6 b/sm1/foo6
index 462398b..ac466ca 100644
--- a/sm1/foo6
+++ b/sm1/foo6
@@ -1 +1,5 @@
-foo6
+new
+modification
+modification
+modification
+modification
EOF
diff_cmp expected actual
ok 36 - modified submodule contains modified content
expecting success of 4060.37 'deleted submodule':
git diff-index -p --submodule=diff HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 $head7...0000000 (submodule deleted)
EOF
diff_cmp expected actual
ok 37 - deleted submodule
expecting success of 4060.38 'create second submodule':
test_create_repo sm2 &&
head9=$(add_file sm2 foo8 foo9) &&
git add sm2
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4060-diff-submodule-option-diff-format/sm2/.git/
warning: adding embedded git repository: sm2
hint: You've added another git repository inside your current repository.
hint: Clones of the outer repository will not contain the contents of
hint: the embedded repository and will not know how to obtain it.
hint: If you meant to add a submodule, use:
hint:
hint: git submodule add <url> sm2
hint:
hint: If you added this path by mistake, you can remove it from the
hint: index with:
hint:
hint: git rm --cached sm2
hint:
hint: See "git help submodule" for more information.
ok 38 - create second submodule
expecting success of 4060.39 'multiple submodules':
git diff-index -p --submodule=diff HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 $head7...0000000 (submodule deleted)
Submodule sm2 0000000...$head9 (new submodule)
diff --git a/sm2/foo8 b/sm2/foo8
new file mode 100644
index 0000000..db9916b
--- /dev/null
+++ b/sm2/foo8
@@ -0,0 +1 @@
+foo8
diff --git a/sm2/foo9 b/sm2/foo9
new file mode 100644
index 0000000..9c3b4f6
--- /dev/null
+++ b/sm2/foo9
@@ -0,0 +1 @@
+foo9
EOF
diff_cmp expected actual
ok 39 - multiple submodules
expecting success of 4060.40 'path filter':
git diff-index -p --submodule=diff HEAD sm2 >actual &&
cat >expected <<-EOF &&
Submodule sm2 0000000...$head9 (new submodule)
diff --git a/sm2/foo8 b/sm2/foo8
new file mode 100644
index 0000000..db9916b
--- /dev/null
+++ b/sm2/foo8
@@ -0,0 +1 @@
+foo8
diff --git a/sm2/foo9 b/sm2/foo9
new file mode 100644
index 0000000..9c3b4f6
--- /dev/null
+++ b/sm2/foo9
@@ -0,0 +1 @@
+foo9
EOF
diff_cmp expected actual
ok 40 - path filter
expecting success of 4060.41 'given commit':
git diff-index -p --submodule=diff HEAD^ >actual &&
cat >expected <<-EOF &&
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 1234567..89abcde
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "sm2"]
+path = sm2
+url = bogus_url
Submodule sm1 $head7...0000000 (submodule deleted)
Submodule sm2 0000000...$head9 (new submodule)
diff --git a/sm2/foo8 b/sm2/foo8
new file mode 100644
index 0000000..db9916b
--- /dev/null
+++ b/sm2/foo8
@@ -0,0 +1 @@
+foo8
diff --git a/sm2/foo9 b/sm2/foo9
new file mode 100644
index 0000000..9c3b4f6
--- /dev/null
+++ b/sm2/foo9
@@ -0,0 +1 @@
+foo9
EOF
diff_cmp expected actual
ok 41 - given commit
expecting success of 4060.42 'setup .git file for sm2':
git submodule absorbgitdirs sm2
Migrating git directory of 'sm2' from
'/<<PKGBUILDDIR>>/t/trash directory.t4060-diff-submodule-option-diff-format/sm2/.git' to
'/<<PKGBUILDDIR>>/t/trash directory.t4060-diff-submodule-option-diff-format/.git/modules/sm2'
ok 42 - setup .git file for sm2
expecting success of 4060.43 'diff --submodule=diff with .git file':
git diff --submodule=diff HEAD^ >actual &&
cat >expected <<-EOF &&
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 1234567..89abcde
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "sm2"]
+path = sm2
+url = bogus_url
Submodule sm1 $head7...0000000 (submodule deleted)
Submodule sm2 0000000...$head9 (new submodule)
diff --git a/sm2/foo8 b/sm2/foo8
new file mode 100644
index 0000000..db9916b
--- /dev/null
+++ b/sm2/foo8
@@ -0,0 +1 @@
+foo8
diff --git a/sm2/foo9 b/sm2/foo9
new file mode 100644
index 0000000..9c3b4f6
--- /dev/null
+++ b/sm2/foo9
@@ -0,0 +1 @@
+foo9
EOF
diff_cmp expected actual
ok 43 - diff --submodule=diff with .git file
expecting success of 4060.44 'deleted submodule with .git file':
git diff-index -p --submodule=diff HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 $head7...0000000 (submodule deleted)
Submodule sm2 $head9...0000000 (submodule deleted)
diff --git a/sm2/foo8 b/sm2/foo8
deleted file mode 100644
index 1234567..89abcde
--- a/sm2/foo8
+++ /dev/null
@@ -1 +0,0 @@
-foo8
diff --git a/sm2/foo9 b/sm2/foo9
deleted file mode 100644
index 1234567..89abcde
--- a/sm2/foo9
+++ /dev/null
@@ -1 +0,0 @@
-foo9
EOF
diff_cmp expected actual
ok 44 - deleted submodule with .git file
expecting success of 4060.45 'typechanged(submodule->blob) submodule with .git file':
git diff-index -p --submodule=diff HEAD >actual &&
cat >expected <<-EOF &&
Submodule sm1 $head7...0000000 (submodule deleted)
Submodule sm2 $head9...0000000 (submodule deleted)
diff --git a/sm2/foo8 b/sm2/foo8
deleted file mode 100644
index 1234567..89abcde
--- a/sm2/foo8
+++ /dev/null
@@ -1 +0,0 @@
-foo8
diff --git a/sm2/foo9 b/sm2/foo9
deleted file mode 100644
index 1234567..89abcde
--- a/sm2/foo9
+++ /dev/null
@@ -1 +0,0 @@
-foo9
diff --git a/sm2 b/sm2
new file mode 100644
index 1234567..89abcde
--- /dev/null
+++ b/sm2
@@ -0,0 +1 @@
+submodule-to-blob
EOF
diff_cmp expected actual
ok 45 - typechanged(submodule->blob) submodule with .git file
expecting success of 4060.46 'setup nested submodule':
git -c protocol.file.allow=always -C sm2 submodule add ../sm2 nested &&
git -C sm2 commit -a -m "nested sub" &&
head10=$(git -C sm2 rev-parse --short --verify HEAD)
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4060-diff-submodule-option-diff-format/sm2/nested'...
done.
[master 280969a] nested sub
Author: A U Thor <author@example.com>
2 files changed, 4 insertions(+)
create mode 100644 .gitmodules
create mode 160000 nested
ok 46 - setup nested submodule
expecting success of 4060.47 'move nested submodule HEAD':
echo "nested content" >sm2/nested/file &&
git -C sm2/nested add file &&
git -C sm2/nested commit --allow-empty -m "new HEAD" &&
head11=$(git -C sm2/nested rev-parse --short --verify HEAD)
[master b55928c] new HEAD
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
ok 47 - move nested submodule HEAD
expecting success of 4060.48 'diff --submodule=diff with moved nested submodule HEAD':
cat >expected <<-EOF &&
Submodule nested $head9..$head11:
diff --git a/nested/file b/nested/file
new file mode 100644
index 0000000..ca281f5
--- /dev/null
+++ b/nested/file
@@ -0,0 +1 @@
+nested content
EOF
git -C sm2 diff --submodule=diff >actual 2>err &&
test_must_be_empty err &&
diff_cmp expected actual
ok 48 - diff --submodule=diff with moved nested submodule HEAD
expecting success of 4060.49 'diff --submodule=diff recurses into nested submodules':
cat >expected <<-EOF &&
Submodule sm1 $head7...0000000 (submodule deleted)
Submodule sm2 contains modified content
Submodule sm2 $head9..$head10:
diff --git a/sm2/.gitmodules b/sm2/.gitmodules
new file mode 100644
index 0000000..3a816b8
--- /dev/null
+++ b/sm2/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "nested"]
+ path = nested
+ url = ../sm2
Submodule nested 0000000...$head11 (new submodule)
diff --git a/sm2/nested/file b/sm2/nested/file
new file mode 100644
index 0000000..ca281f5
--- /dev/null
+++ b/sm2/nested/file
@@ -0,0 +1 @@
+nested content
diff --git a/sm2/nested/foo8 b/sm2/nested/foo8
new file mode 100644
index 0000000..db9916b
--- /dev/null
+++ b/sm2/nested/foo8
@@ -0,0 +1 @@
+foo8
diff --git a/sm2/nested/foo9 b/sm2/nested/foo9
new file mode 100644
index 0000000..9c3b4f6
--- /dev/null
+++ b/sm2/nested/foo9
@@ -0,0 +1 @@
+foo9
EOF
git diff --submodule=diff >actual 2>err &&
test_must_be_empty err &&
diff_cmp expected actual
ok 49 - diff --submodule=diff recurses into nested submodules
expecting success of 4060.50 'diff --submodule=diff recurses into deleted nested submodules':
cat >expected <<-EOF &&
Submodule sm1 $head7...0000000 (submodule deleted)
Submodule sm2 $head12...0000000 (submodule deleted)
diff --git a/sm2/.gitmodules b/sm2/.gitmodules
deleted file mode 100644
index 3a816b8..0000000
--- a/sm2/.gitmodules
+++ /dev/null
@@ -1,3 +0,0 @@
-[submodule "nested"]
- path = nested
- url = ../sm2
diff --git a/sm2/foo8 b/sm2/foo8
deleted file mode 100644
index db9916b..0000000
--- a/sm2/foo8
+++ /dev/null
@@ -1 +0,0 @@
-foo8
diff --git a/sm2/foo9 b/sm2/foo9
deleted file mode 100644
index 9c3b4f6..0000000
--- a/sm2/foo9
+++ /dev/null
@@ -1 +0,0 @@
-foo9
Submodule nested $head11...0000000 (submodule deleted)
diff --git a/sm2/nested/file b/sm2/nested/file
deleted file mode 100644
index ca281f5..0000000
--- a/sm2/nested/file
+++ /dev/null
@@ -1 +0,0 @@
-nested content
diff --git a/sm2/nested/foo8 b/sm2/nested/foo8
deleted file mode 100644
index db9916b..0000000
--- a/sm2/nested/foo8
+++ /dev/null
@@ -1 +0,0 @@
-foo8
diff --git a/sm2/nested/foo9 b/sm2/nested/foo9
deleted file mode 100644
index 9c3b4f6..0000000
--- a/sm2/nested/foo9
+++ /dev/null
@@ -1 +0,0 @@
-foo9
EOF
git diff --submodule=diff >actual 2>err &&
test_must_be_empty err &&
diff_cmp expected actual
ok 50 - diff --submodule=diff recurses into deleted nested submodules
# passed all 50 test(s)
1..50
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4068-diff-symmetric-merge-base.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4068-diff-symmetric-merge-base/.git/
expecting success of 4068.1 'setup':
git commit --allow-empty -m A &&
echo b >b &&
git add b &&
git commit -m B &&
git checkout -b br1 HEAD^ &&
echo c >c &&
git add c &&
git commit -m C &&
git tag commit-C &&
git merge -m D main &&
git tag commit-D &&
git checkout main &&
git merge -m E commit-C &&
git checkout -b br2 commit-C &&
echo f >f &&
git add f &&
git commit -m F &&
git checkout br1 &&
git merge -m G br2 &&
git checkout --orphan br3 &&
git commit -m H
[main (root-commit) 58052da] A
Author: A U Thor <author@example.com>
[main f74ffd5] B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 b
Switched to a new branch 'br1'
[br1 9ba99bb] C
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 c
Merge made by the 'ort' strategy.
b | 1 +
1 file changed, 1 insertion(+)
create mode 100644 b
Switched to branch 'main'
Merge made by the 'ort' strategy.
c | 1 +
1 file changed, 1 insertion(+)
create mode 100644 c
Switched to a new branch 'br2'
[br2 5b24cb4] F
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 f
Switched to branch 'br1'
Merge made by the 'ort' strategy.
f | 1 +
1 file changed, 1 insertion(+)
create mode 100644 f
Switched to a new branch 'br3'
[br3 (root-commit) 185e1f1] H
Author: A U Thor <author@example.com>
3 files changed, 3 insertions(+)
create mode 100644 b
create mode 100644 c
create mode 100644 f
ok 1 - setup
expecting success of 4068.2 'diff with one merge base':
git diff commit-D...br1 >tmp &&
tail -n 1 tmp >actual &&
echo +f >expect &&
test_cmp expect actual
ok 2 - diff with one merge base
expecting success of 4068.3 'diff with two merge bases':
git diff br1...main >tmp 2>err &&
test_line_count = 7 tmp &&
test_line_count = 1 err
ok 3 - diff with two merge bases
expecting success of 4068.4 'diff with no merge bases':
test_must_fail git diff br2...br3 2>err &&
test_i18ngrep "fatal: br2...br3: no merge base" err
fatal: br2...br3: no merge base
ok 4 - diff with no merge bases
expecting success of 4068.5 'diff with too many symmetric differences':
test_must_fail git diff br1...main br2...br3 2>err &&
test_i18ngrep "usage" err
usage: git diff [<options>] [<commit>] [--] [<path>...]
ok 5 - diff with too many symmetric differences
expecting success of 4068.6 'diff with symmetric difference and extraneous arg':
test_must_fail git diff main br1...main 2>err &&
test_i18ngrep "usage" err
usage: git diff [<options>] [<commit>] [--] [<path>...]
ok 6 - diff with symmetric difference and extraneous arg
expecting success of 4068.7 'diff with two ranges':
test_must_fail git diff main br1..main br2..br3 2>err &&
test_i18ngrep "usage" err
usage: git diff [<options>] [<commit>] [--] [<path>...]
ok 7 - diff with two ranges
expecting success of 4068.8 'diff with ranges and extra arg':
test_must_fail git diff main br1..main commit-D 2>err &&
test_i18ngrep "usage" err
usage: git diff [<options>] [<commit>] [--] [<path>...]
ok 8 - diff with ranges and extra arg
expecting success of 4068.9 'diff --merge-base with no commits':
test_must_fail git diff --merge-base
error: invalid option: --merge-base
ok 9 - diff --merge-base with no commits
expecting success of 4068.10 'diff --merge-base with three commits':
test_must_fail git diff --merge-base br1 br2 main 2>err &&
test_i18ngrep "usage" err
usage: git diff [<options>] [<commit>] [--] [<path>...]
ok 10 - diff --merge-base with three commits
expecting success of 4068.11 'diff-index --merge-base with one commit':
git checkout main &&
git $cmd commit-C >expect &&
git $cmd --merge-base br2 >actual &&
test_cmp expect actual
Switched to branch 'main'
ok 11 - diff-index --merge-base with one commit
expecting success of 4068.12 'diff-index --merge-base with one commit and unstaged changes':
git checkout main &&
test_when_finished git reset --hard &&
echo unstaged >>c &&
git $cmd commit-C >expect &&
git $cmd --merge-base br2 >actual &&
test_cmp expect actual
Already on 'main'
HEAD is now at c8f83a5 E
ok 12 - diff-index --merge-base with one commit and unstaged changes
expecting success of 4068.13 'diff-index --merge-base with one commit and staged and unstaged changes':
git checkout main &&
test_when_finished git reset --hard &&
echo staged >>c &&
git add c &&
echo unstaged >>c &&
git $cmd commit-C >expect &&
git $cmd --merge-base br2 >actual &&
test_cmp expect actual
Already on 'main'
HEAD is now at c8f83a5 E
ok 13 - diff-index --merge-base with one commit and staged and unstaged changes
expecting success of 4068.14 'diff-index --merge-base --cached with one commit and staged and unstaged changes':
git checkout main &&
test_when_finished git reset --hard &&
echo staged >>c &&
git add c &&
echo unstaged >>c &&
git $cmd --cached commit-C >expect &&
git $cmd --cached --merge-base br2 >actual &&
test_cmp expect actual
Already on 'main'
HEAD is now at c8f83a5 E
ok 14 - diff-index --merge-base --cached with one commit and staged and unstaged changes
expecting success of 4068.15 'diff-index --merge-base with non-commit':
git checkout main &&
test_must_fail git $cmd --merge-base main^{tree} 2>err &&
test_i18ngrep "fatal: --merge-base only works with commits" err
Already on 'main'
fatal: --merge-base only works with commits
ok 15 - diff-index --merge-base with non-commit
expecting success of 4068.16 'diff-index --merge-base with no merge bases and one commit':
git checkout main &&
test_must_fail git $cmd --merge-base br3 2>err &&
test_i18ngrep "fatal: no merge base found" err
Already on 'main'
fatal: no merge base found
ok 16 - diff-index --merge-base with no merge bases and one commit
expecting success of 4068.17 'diff-index --merge-base with multiple merge bases and one commit':
git checkout main &&
test_must_fail git $cmd --merge-base br1 2>err &&
test_i18ngrep "fatal: multiple merge bases found" err
Already on 'main'
fatal: multiple merge bases found
ok 17 - diff-index --merge-base with multiple merge bases and one commit
expecting success of 4068.18 'diff --merge-base with one commit':
git checkout main &&
git $cmd commit-C >expect &&
git $cmd --merge-base br2 >actual &&
test_cmp expect actual
Already on 'main'
ok 18 - diff --merge-base with one commit
expecting success of 4068.19 'diff --merge-base with one commit and unstaged changes':
git checkout main &&
test_when_finished git reset --hard &&
echo unstaged >>c &&
git $cmd commit-C >expect &&
git $cmd --merge-base br2 >actual &&
test_cmp expect actual
Already on 'main'
HEAD is now at c8f83a5 E
ok 19 - diff --merge-base with one commit and unstaged changes
expecting success of 4068.20 'diff --merge-base with one commit and staged and unstaged changes':
git checkout main &&
test_when_finished git reset --hard &&
echo staged >>c &&
git add c &&
echo unstaged >>c &&
git $cmd commit-C >expect &&
git $cmd --merge-base br2 >actual &&
test_cmp expect actual
Already on 'main'
HEAD is now at c8f83a5 E
ok 20 - diff --merge-base with one commit and staged and unstaged changes
expecting success of 4068.21 'diff --merge-base --cached with one commit and staged and unstaged changes':
git checkout main &&
test_when_finished git reset --hard &&
echo staged >>c &&
git add c &&
echo unstaged >>c &&
git $cmd --cached commit-C >expect &&
git $cmd --cached --merge-base br2 >actual &&
test_cmp expect actual
Already on 'main'
HEAD is now at c8f83a5 E
ok 21 - diff --merge-base --cached with one commit and staged and unstaged changes
expecting success of 4068.22 'diff --merge-base with non-commit':
git checkout main &&
test_must_fail git $cmd --merge-base main^{tree} 2>err &&
test_i18ngrep "fatal: --merge-base only works with commits" err
Already on 'main'
fatal: --merge-base only works with commits
ok 22 - diff --merge-base with non-commit
expecting success of 4068.23 'diff --merge-base with no merge bases and one commit':
git checkout main &&
test_must_fail git $cmd --merge-base br3 2>err &&
test_i18ngrep "fatal: no merge base found" err
Already on 'main'
fatal: no merge base found
ok 23 - diff --merge-base with no merge bases and one commit
expecting success of 4068.24 'diff --merge-base with multiple merge bases and one commit':
git checkout main &&
test_must_fail git $cmd --merge-base br1 2>err &&
test_i18ngrep "fatal: multiple merge bases found" err
Already on 'main'
fatal: multiple merge bases found
ok 24 - diff --merge-base with multiple merge bases and one commit
expecting success of 4068.25 'diff-tree --merge-base with two commits':
git $cmd commit-C main >expect &&
git $cmd --merge-base br2 main >actual &&
test_cmp expect actual
ok 25 - diff-tree --merge-base with two commits
expecting success of 4068.26 'diff-tree --merge-base commit and non-commit':
test_must_fail git $cmd --merge-base br2 main^{tree} 2>err &&
test_i18ngrep "fatal: --merge-base only works with commits" err
fatal: --merge-base only works with commits
ok 26 - diff-tree --merge-base commit and non-commit
expecting success of 4068.27 'diff-tree --merge-base with no merge bases and two commits':
test_must_fail git $cmd --merge-base br2 br3 2>err &&
test_i18ngrep "fatal: no merge base found" err
fatal: no merge base found
ok 27 - diff-tree --merge-base with no merge bases and two commits
expecting success of 4068.28 'diff-tree --merge-base with multiple merge bases and two commits':
test_must_fail git $cmd --merge-base main br1 2>err &&
test_i18ngrep "fatal: multiple merge bases found" err
fatal: multiple merge bases found
ok 28 - diff-tree --merge-base with multiple merge bases and two commits
expecting success of 4068.29 'diff --merge-base with two commits':
git $cmd commit-C main >expect &&
git $cmd --merge-base br2 main >actual &&
test_cmp expect actual
ok 29 - diff --merge-base with two commits
expecting success of 4068.30 'diff --merge-base commit and non-commit':
test_must_fail git $cmd --merge-base br2 main^{tree} 2>err &&
test_i18ngrep "fatal: --merge-base only works with commits" err
fatal: --merge-base only works with commits
ok 30 - diff --merge-base commit and non-commit
expecting success of 4068.31 'diff --merge-base with no merge bases and two commits':
test_must_fail git $cmd --merge-base br2 br3 2>err &&
test_i18ngrep "fatal: no merge base found" err
fatal: no merge base found
ok 31 - diff --merge-base with no merge bases and two commits
expecting success of 4068.32 'diff --merge-base with multiple merge bases and two commits':
test_must_fail git $cmd --merge-base main br1 2>err &&
test_i18ngrep "fatal: multiple merge bases found" err
fatal: multiple merge bases found
ok 32 - diff --merge-base with multiple merge bases and two commits
expecting success of 4068.33 'diff-tree --merge-base with one commit':
test_must_fail git diff-tree --merge-base main 2>err &&
test_i18ngrep "fatal: --merge-base only works with two commits" err
fatal: --merge-base only works with two commits
ok 33 - diff-tree --merge-base with one commit
expecting success of 4068.34 'diff --merge-base with range':
test_must_fail git diff --merge-base br2..br3 2>err &&
test_i18ngrep "fatal: --merge-base does not work with ranges" err
fatal: --merge-base does not work with ranges
ok 34 - diff --merge-base with range
# passed all 34 test(s)
1..34
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4100-apply-stat.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4100-apply-stat/.git/
expecting success of 4100.1 'rename':
git apply --stat --summary \
<"$TEST_DIRECTORY/t4100/t-apply-$num.patch" >current &&
test_cmp "$TEST_DIRECTORY"/t4100/t-apply-$num.expect current
ok 1 - rename
expecting success of 4100.2 'rename with recount':
sed -e "$UNC" <"$TEST_DIRECTORY/t4100/t-apply-$num.patch" |
git apply --recount --stat --summary >current &&
test_cmp "$TEST_DIRECTORY"/t4100/t-apply-$num.expect current
ok 2 - rename with recount
expecting success of 4100.3 'copy':
git apply --stat --summary \
<"$TEST_DIRECTORY/t4100/t-apply-$num.patch" >current &&
test_cmp "$TEST_DIRECTORY"/t4100/t-apply-$num.expect current
ok 3 - copy
expecting success of 4100.4 'copy with recount':
sed -e "$UNC" <"$TEST_DIRECTORY/t4100/t-apply-$num.patch" |
git apply --recount --stat --summary >current &&
test_cmp "$TEST_DIRECTORY"/t4100/t-apply-$num.expect current
ok 4 - copy with recount
expecting success of 4100.5 'rewrite':
git apply --stat --summary \
<"$TEST_DIRECTORY/t4100/t-apply-$num.patch" >current &&
test_cmp "$TEST_DIRECTORY"/t4100/t-apply-$num.expect current
ok 5 - rewrite
expecting success of 4100.6 'rewrite with recount':
sed -e "$UNC" <"$TEST_DIRECTORY/t4100/t-apply-$num.patch" |
git apply --recount --stat --summary >current &&
test_cmp "$TEST_DIRECTORY"/t4100/t-apply-$num.expect current
ok 6 - rewrite with recount
expecting success of 4100.7 'mode':
git apply --stat --summary \
<"$TEST_DIRECTORY/t4100/t-apply-$num.patch" >current &&
test_cmp "$TEST_DIRECTORY"/t4100/t-apply-$num.expect current
ok 7 - mode
expecting success of 4100.8 'mode with recount':
sed -e "$UNC" <"$TEST_DIRECTORY/t4100/t-apply-$num.patch" |
git apply --recount --stat --summary >current &&
test_cmp "$TEST_DIRECTORY"/t4100/t-apply-$num.expect current
ok 8 - mode with recount
expecting success of 4100.9 'non git (1)':
git apply --stat --summary \
<"$TEST_DIRECTORY/t4100/t-apply-$num.patch" >current &&
test_cmp "$TEST_DIRECTORY"/t4100/t-apply-$num.expect current
ok 9 - non git (1)
expecting success of 4100.10 'non git (1) with recount':
sed -e "$UNC" <"$TEST_DIRECTORY/t4100/t-apply-$num.patch" |
git apply --recount --stat --summary >current &&
test_cmp "$TEST_DIRECTORY"/t4100/t-apply-$num.expect current
ok 10 - non git (1) with recount
expecting success of 4100.11 'non git (2)':
git apply --stat --summary \
<"$TEST_DIRECTORY/t4100/t-apply-$num.patch" >current &&
test_cmp "$TEST_DIRECTORY"/t4100/t-apply-$num.expect current
ok 11 - non git (2)
expecting success of 4100.12 'non git (2) with recount':
sed -e "$UNC" <"$TEST_DIRECTORY/t4100/t-apply-$num.patch" |
git apply --recount --stat --summary >current &&
test_cmp "$TEST_DIRECTORY"/t4100/t-apply-$num.expect current
ok 12 - non git (2) with recount
expecting success of 4100.13 'non git (3)':
git apply --stat --summary \
<"$TEST_DIRECTORY/t4100/t-apply-$num.patch" >current &&
test_cmp "$TEST_DIRECTORY"/t4100/t-apply-$num.expect current
ok 13 - non git (3)
expecting success of 4100.14 'non git (3) with recount':
sed -e "$UNC" <"$TEST_DIRECTORY/t4100/t-apply-$num.patch" |
git apply --recount --stat --summary >current &&
test_cmp "$TEST_DIRECTORY"/t4100/t-apply-$num.expect current
ok 14 - non git (3) with recount
expecting success of 4100.15 'incomplete (1)':
git apply --stat --summary \
<"$TEST_DIRECTORY/t4100/t-apply-$num.patch" >current &&
test_cmp "$TEST_DIRECTORY"/t4100/t-apply-$num.expect current
ok 15 - incomplete (1)
expecting success of 4100.16 'incomplete (1) with recount':
sed -e "$UNC" <"$TEST_DIRECTORY/t4100/t-apply-$num.patch" |
git apply --recount --stat --summary >current &&
test_cmp "$TEST_DIRECTORY"/t4100/t-apply-$num.expect current
ok 16 - incomplete (1) with recount
expecting success of 4100.17 'incomplete (2)':
git apply --stat --summary \
<"$TEST_DIRECTORY/t4100/t-apply-$num.patch" >current &&
test_cmp "$TEST_DIRECTORY"/t4100/t-apply-$num.expect current
ok 17 - incomplete (2)
expecting success of 4100.18 'incomplete (2) with recount':
sed -e "$UNC" <"$TEST_DIRECTORY/t4100/t-apply-$num.patch" |
git apply --recount --stat --summary >current &&
test_cmp "$TEST_DIRECTORY"/t4100/t-apply-$num.expect current
ok 18 - incomplete (2) with recount
# passed all 18 test(s)
1..18
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4069-remerge-diff.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4069-remerge-diff/.git/
expecting success of 4069.1 'setup basic merges':
test_write_lines 1 2 3 4 5 6 7 8 9 >numbers &&
git add numbers &&
git commit -m base &&
git branch feature_a &&
git branch feature_b &&
git branch feature_c &&
git branch ab_resolution &&
git branch bc_resolution &&
git checkout feature_a &&
test_write_lines 1 2 three 4 5 6 7 eight 9 >numbers &&
git commit -a -m change_a &&
git checkout feature_b &&
test_write_lines 1 2 tres 4 5 6 7 8 9 >numbers &&
git commit -a -m change_b &&
git checkout feature_c &&
test_write_lines 1 2 3 4 5 6 7 8 9 10 >numbers &&
git commit -a -m change_c &&
git checkout bc_resolution &&
git merge --ff-only feature_b &&
# no conflict
git merge feature_c &&
git checkout ab_resolution &&
git merge --ff-only feature_a &&
# conflicts!
test_must_fail git merge feature_b &&
# Resolve conflict...and make another change elsewhere
test_write_lines 1 2 drei 4 5 6 7 acht 9 >numbers &&
git add numbers &&
git merge --continue
[master (root-commit) 0f94a91] base
Author: A U Thor <author@example.com>
1 file changed, 9 insertions(+)
create mode 100644 numbers
Switched to branch 'feature_a'
[feature_a b0ed5cb] change_a
Author: A U Thor <author@example.com>
1 file changed, 2 insertions(+), 2 deletions(-)
Switched to branch 'feature_b'
[feature_b 6cd3f82] change_b
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to branch 'feature_c'
[feature_c b325327] change_c
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
Switched to branch 'bc_resolution'
Updating 0f94a91..6cd3f82
Fast-forward
numbers | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Auto-merging numbers
Merge made by the 'ort' strategy.
numbers | 1 +
1 file changed, 1 insertion(+)
Switched to branch 'ab_resolution'
Updating 0f94a91..b0ed5cb
Fast-forward
numbers | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Auto-merging numbers
CONFLICT (content): Merge conflict in numbers
Automatic merge failed; fix conflicts and then commit the result.
[ab_resolution 4d00047] Merge branch 'feature_b' into ab_resolution
Author: A U Thor <author@example.com>
ok 1 - setup basic merges
expecting success of 4069.2 'remerge-diff on a clean merge':
git log -1 --oneline bc_resolution >expect &&
git show --oneline --remerge-diff bc_resolution >actual &&
test_cmp expect actual
ok 2 - remerge-diff on a clean merge
expecting success of 4069.3 'remerge-diff on a clean merge with a filter':
git show --oneline --remerge-diff --diff-filter=U bc_resolution >actual &&
test_must_be_empty actual
ok 3 - remerge-diff on a clean merge with a filter
expecting success of 4069.4 'remerge-diff with both a resolved conflict and an unrelated change':
git log -1 --oneline ab_resolution >tmp &&
cat <<-EOF >>tmp &&
diff --git a/numbers b/numbers
remerge CONFLICT (content): Merge conflict in numbers
index a1fb731..6875544 100644
--- a/numbers
+++ b/numbers
@@ -1,13 +1,9 @@
1
2
-<<<<<<< b0ed5cb (change_a)
-three
-=======
-tres
->>>>>>> 6cd3f82 (change_b)
+drei
4
5
6
7
-eight
+acht
9
EOF
# Hashes above are sha1; rip them out so test works with sha256
sed -e "s/[0-9a-f]\{7,\}/HASH/g" tmp >expect &&
git show --oneline --remerge-diff ab_resolution >tmp &&
sed -e "s/[0-9a-f]\{7,\}/HASH/g" tmp >actual &&
test_cmp expect actual
ok 4 - remerge-diff with both a resolved conflict and an unrelated change
expecting success of 4069.5 'pickaxe still includes additional headers for relevant changes':
# reuses "expect" from the previous testcase
git log --oneline --remerge-diff -Sacht ab_resolution >tmp &&
sed -e "s/[0-9a-f]\{7,\}/HASH/g" tmp >actual &&
test_cmp expect actual
ok 5 - pickaxe still includes additional headers for relevant changes
expecting success of 4069.6 'can filter out additional headers with pickaxe':
git show --remerge-diff --submodule=log --find-object=HEAD ab_resolution >actual &&
test_must_be_empty actual &&
git show --remerge-diff -S"not present" --all >actual &&
test_must_be_empty actual
ok 6 - can filter out additional headers with pickaxe
expecting success of 4069.7 'setup non-content conflicts':
git switch --orphan base &&
test_write_lines 1 2 3 4 5 6 7 8 9 >numbers &&
test_write_lines a b c d e f g h i >letters &&
test_write_lines in the way >content &&
git add numbers letters content &&
git commit -m base &&
git branch side1 &&
git branch side2 &&
git checkout side1 &&
test_write_lines 1 2 three 4 5 6 7 8 9 >numbers &&
git mv letters letters_side1 &&
git mv content file_or_directory &&
git add numbers &&
git commit -m side1 &&
git checkout side2 &&
git rm numbers &&
git mv letters letters_side2 &&
mkdir file_or_directory &&
echo hello >file_or_directory/world &&
git add file_or_directory/world &&
git commit -m side2 &&
git checkout -b resolution side1 &&
test_must_fail git merge side2 &&
test_write_lines 1 2 three 4 5 6 7 8 9 >numbers &&
git add numbers &&
git add letters_side1 &&
git rm letters &&
git rm letters_side2 &&
git add file_or_directory~HEAD &&
git mv file_or_directory~HEAD wanted_content &&
git commit -m resolved
Switched to a new branch 'base'
[base (root-commit) c2c77a3] base
Author: A U Thor <author@example.com>
3 files changed, 21 insertions(+)
create mode 100644 content
create mode 100644 letters
create mode 100644 numbers
Switched to branch 'side1'
[side1 cfe6fba] side1
Author: A U Thor <author@example.com>
3 files changed, 1 insertion(+), 1 deletion(-)
rename content => file_or_directory (100%)
rename letters => letters_side1 (100%)
Switched to branch 'side2'
rm 'numbers'
[side2 6db5781] side2
Author: A U Thor <author@example.com>
3 files changed, 1 insertion(+), 9 deletions(-)
create mode 100644 file_or_directory/world
rename letters => letters_side2 (100%)
delete mode 100644 numbers
Switched to a new branch 'resolution'
CONFLICT (file/directory): directory in the way of file_or_directory from HEAD; moving it to file_or_directory~HEAD instead.
CONFLICT (rename/rename): letters renamed to letters_side1 in HEAD and to letters_side2 in side2.
CONFLICT (modify/delete): numbers deleted in side2 and modified in HEAD. Version HEAD of numbers left in tree.
Automatic merge failed; fix conflicts and then commit the result.
rm 'letters'
rm 'letters_side2'
[resolution 692604d] resolved
Author: A U Thor <author@example.com>
ok 7 - setup non-content conflicts
expecting success of 4069.8 'remerge-diff with non-content conflicts':
git log -1 --oneline resolution >tmp &&
cat <<-EOF >>tmp &&
diff --git a/file_or_directory~HASH (side1) b/wanted_content
similarity index 100%
rename from file_or_directory~HASH (side1)
rename to wanted_content
remerge CONFLICT (file/directory): directory in the way of file_or_directory from HASH (side1); moving it to file_or_directory~HASH (side1) instead.
diff --git a/letters b/letters
remerge CONFLICT (rename/rename): letters renamed to letters_side1 in HASH (side1) and to letters_side2 in HASH (side2).
diff --git a/letters_side2 b/letters_side2
deleted file mode 100644
index b236ae5..0000000
--- a/letters_side2
+++ /dev/null
@@ -1,9 +0,0 @@
-a
-b
-c
-d
-e
-f
-g
-h
-i
diff --git a/numbers b/numbers
remerge CONFLICT (modify/delete): numbers deleted in HASH (side2) and modified in HASH (side1). Version HASH (side1) of numbers left in tree.
EOF
# We still have some sha1 hashes above; rip them out so test works
# with sha256
sed -e "s/[0-9a-f]\{7,\}/HASH/g" tmp >expect &&
git show --oneline --remerge-diff resolution >tmp &&
sed -e "s/[0-9a-f]\{7,\}/HASH/g" tmp >actual &&
test_cmp expect actual
ok 8 - remerge-diff with non-content conflicts
expecting success of 4069.9 'remerge-diff w/ diff-filter=U: all conflict headers, no diff content':
git log -1 --oneline resolution >tmp &&
cat <<-EOF >>tmp &&
diff --git a/file_or_directory~HASH (side1) b/file_or_directory~HASH (side1)
remerge CONFLICT (file/directory): directory in the way of file_or_directory from HASH (side1); moving it to file_or_directory~HASH (side1) instead.
diff --git a/letters b/letters
remerge CONFLICT (rename/rename): letters renamed to letters_side1 in HASH (side1) and to letters_side2 in HASH (side2).
diff --git a/numbers b/numbers
remerge CONFLICT (modify/delete): numbers deleted in HASH (side2) and modified in HASH (side1). Version HASH (side1) of numbers left in tree.
EOF
# We still have some sha1 hashes above; rip them out so test works
# with sha256
sed -e "s/[0-9a-f]\{7,\}/HASH/g" tmp >expect &&
git show --oneline --remerge-diff --diff-filter=U resolution >tmp &&
sed -e "s/[0-9a-f]\{7,\}/HASH/g" tmp >actual &&
test_cmp expect actual
ok 9 - remerge-diff w/ diff-filter=U: all conflict headers, no diff content
expecting success of 4069.10 'submodule formatting ignores additional headers':
# Reuses "expect" from last testcase
git show --oneline --remerge-diff --diff-filter=U --submodule=log >tmp &&
sed -e "s/[0-9a-f]\{7,\}/HASH/g" tmp >actual &&
test_cmp expect actual
ok 10 - submodule formatting ignores additional headers
expecting success of 4069.11 'remerge-diff w/ diff-filter=R: relevant file + conflict header':
git log -1 --oneline resolution >tmp &&
cat <<-EOF >>tmp &&
diff --git a/file_or_directory~HASH (side1) b/wanted_content
similarity index 100%
rename from file_or_directory~HASH (side1)
rename to wanted_content
remerge CONFLICT (file/directory): directory in the way of file_or_directory from HASH (side1); moving it to file_or_directory~HASH (side1) instead.
EOF
# We still have some sha1 hashes above; rip them out so test works
# with sha256
sed -e "s/[0-9a-f]\{7,\}/HASH/g" tmp >expect &&
git show --oneline --remerge-diff --diff-filter=R resolution >tmp &&
sed -e "s/[0-9a-f]\{7,\}/HASH/g" tmp >actual &&
test_cmp expect actual
ok 11 - remerge-diff w/ diff-filter=R: relevant file + conflict header
expecting success of 4069.12 'remerge-diff w/ pathspec: limits to relevant file including conflict header':
git log -1 --oneline resolution >tmp &&
cat <<-EOF >>tmp &&
diff --git a/letters b/letters
remerge CONFLICT (rename/rename): letters renamed to letters_side1 in HASH (side1) and to letters_side2 in HASH (side2).
diff --git a/letters_side2 b/letters_side2
deleted file mode 100644
index b236ae5..0000000
--- a/letters_side2
+++ /dev/null
@@ -1,9 +0,0 @@
-a
-b
-c
-d
-e
-f
-g
-h
-i
EOF
# We still have some sha1 hashes above; rip them out so test works
# with sha256
sed -e "s/[0-9a-f]\{7,\}/HASH/g" tmp >expect &&
git show --oneline --remerge-diff resolution -- "letters*" >tmp &&
sed -e "s/[0-9a-f]\{7,\}/HASH/g" tmp >actual &&
test_cmp expect actual
ok 12 - remerge-diff w/ pathspec: limits to relevant file including conflict header
expecting success of 4069.13 'setup non-content conflicts':
git switch --orphan newbase &&
test_write_lines 1 2 3 4 5 6 7 8 9 >numbers &&
git add numbers &&
git commit -m base &&
git branch newside1 &&
git branch newside2 &&
git checkout newside1 &&
test_write_lines 1 2 three 4 5 6 7 8 9 >numbers &&
git add numbers &&
git commit -m side1 &&
git checkout newside2 &&
test_write_lines 1 2 drei 4 5 6 7 8 9 >numbers &&
git add numbers &&
git commit -m side2 &&
git checkout -b newresolution newside1 &&
test_must_fail git merge newside2 &&
git checkout --theirs numbers &&
git add -u numbers &&
git commit -m resolved
Switched to a new branch 'newbase'
[newbase (root-commit) 0f94a91] base
Author: A U Thor <author@example.com>
1 file changed, 9 insertions(+)
create mode 100644 numbers
Switched to branch 'newside1'
[newside1 96f1e45] side1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to branch 'newside2'
[newside2 4fd522f] side2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Switched to a new branch 'newresolution'
Auto-merging numbers
CONFLICT (content): Merge conflict in numbers
Automatic merge failed; fix conflicts and then commit the result.
Updated 1 path from the index
[newresolution f8f340c] resolved
Author: A U Thor <author@example.com>
ok 13 - setup non-content conflicts
expecting success of 4069.14 'remerge-diff turns off history simplification':
git log -1 --oneline newresolution >tmp &&
cat <<-EOF >>tmp &&
diff --git a/numbers b/numbers
remerge CONFLICT (content): Merge conflict in numbers
index 070e9e7..5335e78 100644
--- a/numbers
+++ b/numbers
@@ -1,10 +1,6 @@
1
2
-<<<<<<< 96f1e45 (side1)
-three
-=======
drei
->>>>>>> 4fd522f (side2)
4
5
6
EOF
# We still have some sha1 hashes above; rip them out so test works
# with sha256
sed -e "s/[0-9a-f]\{7,\}/HASH/g" tmp >expect &&
git show --oneline --remerge-diff newresolution -- numbers >tmp &&
sed -e "s/[0-9a-f]\{7,\}/HASH/g" tmp >actual &&
test_cmp expect actual
ok 14 - remerge-diff turns off history simplification
# passed all 14 test(s)
1..14
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4102-apply-rename.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4102-apply-rename/.git/
expecting success of 4102.1 'setup': git update-index --add foo
ok 1 - setup
expecting success of 4102.2 'apply': git apply --index --stat --summary --apply test-patch
bar | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename foo => bar (47%)
ok 2 - apply
checking prerequisite: FILEMODE
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-FILEMODE" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-FILEMODE" &&
test "$(git config --bool core.filemode)" = true
)
prerequisite FILEMODE ok
expecting success of 4102.3 'validate': test -f bar && ls -l bar | grep "^-..x......"
-rwxr-xr-x 1 buildd buildd 12 Oct 9 02:19 bar
ok 3 - validate
expecting success of 4102.4 'apply reverse': git apply -R --index --stat --summary --apply test-patch &&
test "$(cat foo)" = "This is foo"
foo | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
rename bar => foo (47%)
ok 4 - apply reverse
expecting success of 4102.5 'apply copy': git apply --index --stat --summary --apply test-patch &&
test "$(cat bar)" = "This is bar" && test "$(cat foo)" = "This is foo"
bar | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
copy foo => bar (47%)
ok 5 - apply copy
# passed all 5 test(s)
1..5
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4101-apply-nonl.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4101-apply-nonl/.git/
expecting success of 4101.1 'apply diff between 0 and 1':
git apply <"$TEST_DIRECTORY"/t4101/diff.$i-$j &&
test_cmp frotz.$j frotz
ok 1 - apply diff between 0 and 1
expecting success of 4101.2 'apply diff between 0 and 2':
git apply <"$TEST_DIRECTORY"/t4101/diff.$i-$j &&
test_cmp frotz.$j frotz
ok 2 - apply diff between 0 and 2
expecting success of 4101.3 'apply diff between 0 and 3':
git apply <"$TEST_DIRECTORY"/t4101/diff.$i-$j &&
test_cmp frotz.$j frotz
ok 3 - apply diff between 0 and 3
expecting success of 4101.4 'apply diff between 1 and 0':
git apply <"$TEST_DIRECTORY"/t4101/diff.$i-$j &&
test_cmp frotz.$j frotz
ok 4 - apply diff between 1 and 0
expecting success of 4101.5 'apply diff between 1 and 2':
git apply <"$TEST_DIRECTORY"/t4101/diff.$i-$j &&
test_cmp frotz.$j frotz
ok 5 - apply diff between 1 and 2
expecting success of 4101.6 'apply diff between 1 and 3':
git apply <"$TEST_DIRECTORY"/t4101/diff.$i-$j &&
test_cmp frotz.$j frotz
ok 6 - apply diff between 1 and 3
expecting success of 4101.7 'apply diff between 2 and 0':
git apply <"$TEST_DIRECTORY"/t4101/diff.$i-$j &&
test_cmp frotz.$j frotz
ok 7 - apply diff between 2 and 0
expecting success of 4101.8 'apply diff between 2 and 1':
git apply <"$TEST_DIRECTORY"/t4101/diff.$i-$j &&
test_cmp frotz.$j frotz
ok 8 - apply diff between 2 and 1
expecting success of 4101.9 'apply diff between 2 and 3':
git apply <"$TEST_DIRECTORY"/t4101/diff.$i-$j &&
test_cmp frotz.$j frotz
ok 9 - apply diff between 2 and 3
expecting success of 4101.10 'apply diff between 3 and 0':
git apply <"$TEST_DIRECTORY"/t4101/diff.$i-$j &&
test_cmp frotz.$j frotz
ok 10 - apply diff between 3 and 0
expecting success of 4101.11 'apply diff between 3 and 1':
git apply <"$TEST_DIRECTORY"/t4101/diff.$i-$j &&
test_cmp frotz.$j frotz
ok 11 - apply diff between 3 and 1
expecting success of 4101.12 'apply diff between 3 and 2':
git apply <"$TEST_DIRECTORY"/t4101/diff.$i-$j &&
test_cmp frotz.$j frotz
ok 12 - apply diff between 3 and 2
# passed all 12 test(s)
1..12
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4067-diff-partial-clone.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4067-diff-partial-clone/.git/
expecting success of 4067.1 'git show batches blobs':
test_when_finished "rm -rf server client trace" &&
test_create_repo server &&
echo a >server/a &&
echo b >server/b &&
git -C server add a b &&
git -C server commit -m x &&
test_config -C server uploadpack.allowfilter 1 &&
test_config -C server uploadpack.allowanysha1inwant 1 &&
git clone --bare --filter=blob:limit=0 "file://$(pwd)/server" client &&
# Ensure that there is exactly 1 negotiation by checking that there is
# only 1 "done" line sent. ("done" marks the end of negotiation.)
GIT_TRACE_PACKET="$(pwd)/trace" git -C client show HEAD &&
grep "fetch> done" trace >done_lines &&
test_line_count = 1 done_lines
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4067-diff-partial-clone/server/.git/
[master (root-commit) 525c234] x
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 a
create mode 100644 b
Cloning into bare repository 'client'...
commit 525c234aab2853ed2b1af6e508caf4b08300c8c7
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
x
diff --git a/a b/a
new file mode 100644
index 0000000..7898192
--- /dev/null
+++ b/a
@@ -0,0 +1 @@
+a
diff --git a/b b/b
new file mode 100644
index 0000000..6178079
--- /dev/null
+++ b/b
@@ -0,0 +1 @@
+b
ok 1 - git show batches blobs
expecting success of 4067.2 'diff batches blobs':
test_when_finished "rm -rf server client trace" &&
test_create_repo server &&
echo a >server/a &&
echo b >server/b &&
git -C server add a b &&
git -C server commit -m x &&
echo c >server/c &&
echo d >server/d &&
git -C server add c d &&
git -C server commit -m x &&
test_config -C server uploadpack.allowfilter 1 &&
test_config -C server uploadpack.allowanysha1inwant 1 &&
git clone --bare --filter=blob:limit=0 "file://$(pwd)/server" client &&
# Ensure that there is exactly 1 negotiation by checking that there is
# only 1 "done" line sent. ("done" marks the end of negotiation.)
GIT_TRACE_PACKET="$(pwd)/trace" git -C client diff HEAD^ HEAD &&
grep "fetch> done" trace >done_lines &&
test_line_count = 1 done_lines
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4067-diff-partial-clone/server/.git/
[master (root-commit) 525c234] x
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 a
create mode 100644 b
[master f59c7b0] x
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 c
create mode 100644 d
Cloning into bare repository 'client'...
diff --git a/c b/c
new file mode 100644
index 0000000..f2ad6c7
--- /dev/null
+++ b/c
@@ -0,0 +1 @@
+c
diff --git a/d b/d
new file mode 100644
index 0000000..4bcfe98
--- /dev/null
+++ b/d
@@ -0,0 +1 @@
+d
ok 2 - diff batches blobs
expecting success of 4067.3 'diff skips same-OID blobs':
test_when_finished "rm -rf server client trace" &&
test_create_repo server &&
echo a >server/a &&
echo b >server/b &&
git -C server add a b &&
git -C server commit -m x &&
echo another-a >server/a &&
git -C server add a &&
git -C server commit -m x &&
test_config -C server uploadpack.allowfilter 1 &&
test_config -C server uploadpack.allowanysha1inwant 1 &&
git clone --bare --filter=blob:limit=0 "file://$(pwd)/server" client &&
echo a | git hash-object --stdin >hash-old-a &&
echo another-a | git hash-object --stdin >hash-new-a &&
echo b | git hash-object --stdin >hash-b &&
# Ensure that only a and another-a are fetched.
GIT_TRACE_PACKET="$(pwd)/trace" git -C client diff HEAD^ HEAD &&
grep "want $(cat hash-old-a)" trace &&
grep "want $(cat hash-new-a)" trace &&
! grep "want $(cat hash-b)" trace
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4067-diff-partial-clone/server/.git/
[master (root-commit) 525c234] x
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 a
create mode 100644 b
[master 89f0cea] x
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Cloning into bare repository 'client'...
diff --git a/a b/a
index 7898192..594b61f 100644
--- a/a
+++ b/a
@@ -1 +1 @@
-a
+another-a
packet: fetch> want 78981922613b2afb6025042ff6bd878ac1994e85
packet: upload-pack< want 78981922613b2afb6025042ff6bd878ac1994e85
packet: fetch> want 594b61f56663a3c170222487bb2a7ca5cf7df2ad
packet: upload-pack< want 594b61f56663a3c170222487bb2a7ca5cf7df2ad
ok 3 - diff skips same-OID blobs
expecting success of 4067.4 'when fetching missing objects, diff skips GITLINKs':
test_when_finished "rm -rf sub server client trace" &&
test_config_global protocol.file.allow always &&
test_create_repo sub &&
test_commit -C sub first &&
test_create_repo server &&
echo a >server/a &&
git -C server add a &&
git -C server submodule add "file://$(pwd)/sub" &&
git -C server commit -m x &&
test_commit -C server/sub second &&
echo another-a >server/a &&
git -C server add a sub &&
git -C server commit -m x &&
test_config -C server uploadpack.allowfilter 1 &&
test_config -C server uploadpack.allowanysha1inwant 1 &&
git clone --bare --filter=blob:limit=0 "file://$(pwd)/server" client &&
echo a | git hash-object --stdin >hash-old-a &&
echo another-a | git hash-object --stdin >hash-new-a &&
# Ensure that a and another-a are fetched, and check (by successful
# execution of the diff) that no invalid OIDs are sent.
GIT_TRACE_PACKET="$(pwd)/trace" git -C client diff HEAD^ HEAD &&
grep "want $(cat hash-old-a)" trace &&
grep "want $(cat hash-new-a)" trace
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4067-diff-partial-clone/sub/.git/
[master (root-commit) 50e526b] first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 first.t
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4067-diff-partial-clone/server/.git/
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4067-diff-partial-clone/server/sub'...
[master (root-commit) 2643ed4] x
Author: A U Thor <author@example.com>
3 files changed, 5 insertions(+)
create mode 100644 .gitmodules
create mode 100644 a
create mode 160000 sub
[master d662100] second
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 second.t
[master be7736e] x
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+), 2 deletions(-)
Cloning into bare repository 'client'...
diff --git a/a b/a
index 7898192..594b61f 100644
--- a/a
+++ b/a
@@ -1 +1 @@
-a
+another-a
diff --git a/sub b/sub
index 50e526b..d662100 160000
--- a/sub
+++ b/sub
@@ -1 +1 @@
-Subproject commit 50e526bb426771f6036ad3a8b0c81d511d91fc2a
+Subproject commit d66210046212a498d8c1a48eab414bc6df166f85
packet: fetch> want 78981922613b2afb6025042ff6bd878ac1994e85
packet: upload-pack< want 78981922613b2afb6025042ff6bd878ac1994e85
packet: fetch> want 594b61f56663a3c170222487bb2a7ca5cf7df2ad
packet: upload-pack< want 594b61f56663a3c170222487bb2a7ca5cf7df2ad
ok 4 - when fetching missing objects, diff skips GITLINKs
expecting success of 4067.5 'diff with rename detection batches blobs':
test_when_finished "rm -rf server client trace" &&
test_create_repo server &&
echo a >server/a &&
printf "b\nb\nb\nb\nb\n" >server/b &&
git -C server add a b &&
git -C server commit -m x &&
rm server/b &&
printf "b\nb\nb\nb\nbX\n" >server/c &&
git -C server add c &&
git -C server commit -a -m x &&
test_config -C server uploadpack.allowfilter 1 &&
test_config -C server uploadpack.allowanysha1inwant 1 &&
git clone --bare --filter=blob:limit=0 "file://$(pwd)/server" client &&
# Ensure that there is exactly 1 negotiation by checking that there is
# only 1 "done" line sent. ("done" marks the end of negotiation.)
GIT_TRACE_PACKET="$(pwd)/trace" git -C client diff --raw -M HEAD^ HEAD >out &&
grep ":100644 100644.*R[0-9][0-9][0-9].*b.*c" out &&
grep "fetch> done" trace >done_lines &&
test_line_count = 1 done_lines
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4067-diff-partial-clone/server/.git/
[master (root-commit) a6f879b] x
Author: A U Thor <author@example.com>
2 files changed, 6 insertions(+)
create mode 100644 a
create mode 100644 b
[master 263bf49] x
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
rename b => c (72%)
Cloning into bare repository 'client'...
:100644 100644 33db23e f46cdb7 R072 b c
ok 5 - diff with rename detection batches blobs
expecting success of 4067.6 'diff does not fetch anything if inexact rename detection is not needed':
test_when_finished "rm -rf server client trace" &&
test_create_repo server &&
echo a >server/a &&
printf "b\nb\nb\nb\nb\n" >server/b &&
git -C server add a b &&
git -C server commit -m x &&
mv server/b server/c &&
git -C server add c &&
git -C server commit -a -m x &&
test_config -C server uploadpack.allowfilter 1 &&
test_config -C server uploadpack.allowanysha1inwant 1 &&
git clone --bare --filter=blob:limit=0 "file://$(pwd)/server" client &&
# Ensure no fetches.
GIT_TRACE_PACKET="$(pwd)/trace" git -C client diff --raw -M HEAD^ HEAD &&
test_path_is_missing trace
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4067-diff-partial-clone/server/.git/
[master (root-commit) a6f879b] x
Author: A U Thor <author@example.com>
2 files changed, 6 insertions(+)
create mode 100644 a
create mode 100644 b
[master 2759f1d] x
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
rename b => c (100%)
Cloning into bare repository 'client'...
:100644 100644 33db23e 33db23e R100 b c
ok 6 - diff does not fetch anything if inexact rename detection is not needed
expecting success of 4067.7 'diff --break-rewrites fetches only if necessary, and batches blobs if it does':
test_when_finished "rm -rf server client trace" &&
test_create_repo server &&
echo a >server/a &&
printf "b\nb\nb\nb\nb\n" >server/b &&
git -C server add a b &&
git -C server commit -m x &&
printf "c\nc\nc\nc\nc\n" >server/b &&
git -C server commit -a -m x &&
test_config -C server uploadpack.allowfilter 1 &&
test_config -C server uploadpack.allowanysha1inwant 1 &&
git clone --bare --filter=blob:limit=0 "file://$(pwd)/server" client &&
# Ensure no fetches.
GIT_TRACE_PACKET="$(pwd)/trace" git -C client diff --raw -M HEAD^ HEAD &&
test_path_is_missing trace &&
# But with --break-rewrites, ensure that there is exactly 1 negotiation
# by checking that there is only 1 "done" line sent. ("done" marks the
# end of negotiation.)
GIT_TRACE_PACKET="$(pwd)/trace" git -C client diff --break-rewrites --raw -M HEAD^ HEAD &&
grep "fetch> done" trace >done_lines &&
test_line_count = 1 done_lines
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4067-diff-partial-clone/server/.git/
[master (root-commit) a6f879b] x
Author: A U Thor <author@example.com>
2 files changed, 6 insertions(+)
create mode 100644 a
create mode 100644 b
[master 3aba490] x
Author: A U Thor <author@example.com>
1 file changed, 5 insertions(+), 5 deletions(-)
Cloning into bare repository 'client'...
:100644 100644 33db23e 6e7ada2 M b
:100644 100644 33db23e 6e7ada2 M b
ok 7 - diff --break-rewrites fetches only if necessary, and batches blobs if it does
# passed all 7 test(s)
1..7
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4106-apply-stdin.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4106-apply-stdin/.git/
expecting success of 4106.1 'setup':
echo hello >text &&
git add text &&
echo goodbye >text &&
git diff >patch
ok 1 - setup
expecting success of 4106.2 'git apply --numstat - < patch':
echo "1 1 text" >expect &&
git apply --numstat - <patch >actual &&
test_cmp expect actual
ok 2 - git apply --numstat - < patch
expecting success of 4106.3 'git apply --numstat - < patch patch':
cat >expect <<-\EOF &&
1 1 text
1 1 text
EOF
git apply --numstat - < patch patch >actual &&
test_cmp expect actual
ok 3 - git apply --numstat - < patch patch
# passed all 3 test(s)
1..3
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4105-apply-fuzz.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4105-apply-fuzz/.git/
expecting success of 4105.1 'setup':
test_write_lines 1 2 3 4 5 6 7 8 9 10 11 12 >file &&
git update-index --add file &&
test_write_lines 1 2 3 4 5 6 7 a b c d e 8 9 10 11 12 >file &&
cat file >expect &&
git diff >O0.diff &&
sed -e "s/@@ -5,6 +5,11 @@/@@ -2,6 +2,11 @@/" >O1.diff O0.diff &&
sed -e "s/@@ -5,6 +5,11 @@/@@ -7,6 +7,11 @@/" >O2.diff O0.diff &&
sed -e "s/@@ -5,6 +5,11 @@/@@ -19,6 +19,11 @@/" >O3.diff O0.diff &&
sed -e "s/^ 5/ S/" >F0.diff O0.diff &&
sed -e "s/^ 5/ S/" >F1.diff O1.diff &&
sed -e "s/^ 5/ S/" >F2.diff O2.diff &&
sed -e "s/^ 5/ S/" >F3.diff O3.diff
ok 1 - setup
expecting success of 4105.2 'unmodified patch':
git checkout-index -f -q -u file &&
git apply O0.diff &&
test_cmp expect file
ok 2 - unmodified patch
expecting success of 4105.3 'minus offset':
git checkout-index -f -q -u file &&
git apply O1.diff &&
test_cmp expect file
ok 3 - minus offset
expecting success of 4105.4 'plus offset':
git checkout-index -f -q -u file &&
git apply O2.diff &&
test_cmp expect file
ok 4 - plus offset
expecting success of 4105.5 'big offset':
git checkout-index -f -q -u file &&
git apply O3.diff &&
test_cmp expect file
ok 5 - big offset
expecting success of 4105.6 'fuzz with no offset':
git checkout-index -f -q -u file &&
git apply -C2 F0.diff &&
test_cmp expect file
Context reduced to (2/2) to apply fragment at 6
ok 6 - fuzz with no offset
expecting success of 4105.7 'fuzz with minus offset':
git checkout-index -f -q -u file &&
git apply -C2 F1.diff &&
test_cmp expect file
Context reduced to (2/2) to apply fragment at 6
ok 7 - fuzz with minus offset
expecting success of 4105.8 'fuzz with plus offset':
git checkout-index -f -q -u file &&
git apply -C2 F2.diff &&
test_cmp expect file
Context reduced to (2/2) to apply fragment at 6
ok 8 - fuzz with plus offset
expecting success of 4105.9 'fuzz with big offset':
git checkout-index -f -q -u file &&
git apply -C2 F3.diff &&
test_cmp expect file
Context reduced to (2/2) to apply fragment at 6
ok 9 - fuzz with big offset
# passed all 9 test(s)
1..9
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4107-apply-ignore-whitespace.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4107-apply-ignore-whitespace/.git/
expecting success of 4107.1 'file creation':
git apply patch1.patch
ok 1 - file creation
expecting success of 4107.2 'patch2 fails (retab)':
test_must_fail git apply patch2.patch
error: patch failed: main.c:10
error: main.c: patch does not apply
ok 2 - patch2 fails (retab)
expecting success of 4107.3 'patch2 applies with --ignore-whitespace':
git apply --ignore-whitespace patch2.patch
ok 3 - patch2 applies with --ignore-whitespace
expecting success of 4107.4 'patch2 reverse applies with --ignore-space-change':
git apply -R --ignore-space-change patch2.patch
ok 4 - patch2 reverse applies with --ignore-space-change
expecting success of 4107.5 'patch2 applies (apply.ignorewhitespace = change)':
git apply patch2.patch &&
test_cmp main.c.final main.c
ok 5 - patch2 applies (apply.ignorewhitespace = change)
expecting success of 4107.6 'patch3 fails (missing string at EOL)':
test_must_fail git apply patch3.patch
error: patch failed: main.c:10
error: main.c: patch does not apply
ok 6 - patch3 fails (missing string at EOL)
expecting success of 4107.7 'patch4 fails (missing EOL at EOF)':
test_must_fail git apply patch4.patch
error: patch failed: main.c:21
error: main.c: patch does not apply
ok 7 - patch4 fails (missing EOL at EOF)
expecting success of 4107.8 'patch5 fails (leading whitespace differences matter)':
test_must_fail git apply patch5.patch
error: patch failed: main.c:2
error: main.c: patch does not apply
ok 8 - patch5 fails (leading whitespace differences matter)
expecting success of 4107.9 're-create file (with --ignore-whitespace)':
rm -f main.c &&
git apply patch1.patch
ok 9 - re-create file (with --ignore-whitespace)
expecting success of 4107.10 'patch5 fails (--no-ignore-whitespace)':
test_must_fail git apply --no-ignore-whitespace patch5.patch
error: patch failed: main.c:2
error: main.c: patch does not apply
ok 10 - patch5 fails (--no-ignore-whitespace)
expecting success of 4107.11 'apply --ignore-space-change --inaccurate-eof':
echo 1 >file &&
git apply --ignore-space-change --inaccurate-eof <<-\EOF &&
diff --git a/file b/file
--- a/file
+++ b/file
@@ -1 +1 @@
-1
+2
EOF
printf 2 >expect &&
test_cmp expect file
ok 11 - apply --ignore-space-change --inaccurate-eof
# passed all 11 test(s)
1..11
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4109-apply-multifrag.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4109-apply-multifrag/.git/
expecting success of 4109.1 'git apply (1)':
git apply patch1.patch patch2.patch &&
test_cmp "$TEST_DIRECTORY/t4109/expect-1" main.c
patch1.patch:28: new blank line at EOF.
+
patch2.patch:58: new blank line at EOF.
+
warning: 2 lines add whitespace errors.
ok 1 - git apply (1)
expecting success of 4109.2 'git apply (2)':
git apply patch1.patch patch2.patch patch3.patch &&
test_cmp "$TEST_DIRECTORY/t4109/expect-2" main.c
patch1.patch:28: new blank line at EOF.
+
patch2.patch:58: new blank line at EOF.
+
warning: 2 lines add whitespace errors.
ok 2 - git apply (2)
expecting success of 4109.3 'git apply (3)':
git apply patch1.patch patch4.patch &&
test_cmp "$TEST_DIRECTORY/t4109/expect-3" main.c
patch1.patch:28: new blank line at EOF.
+
warning: 1 line adds whitespace errors.
ok 3 - git apply (3)
# passed all 3 test(s)
1..3
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4104-apply-boundary.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4104-apply-boundary/.git/
expecting success of 4104.1 'setup':
test_write_lines b $L y >victim &&
cat victim >original &&
git update-index --add victim &&
# add to the head
test_write_lines a b $L y >victim &&
cat victim >add-a-expect &&
git diff victim >add-a-patch.with &&
git diff --unified=0 >add-a-patch.without &&
# insert at line two
test_write_lines b a $L y >victim &&
cat victim >insert-a-expect &&
git diff victim >insert-a-patch.with &&
git diff --unified=0 >insert-a-patch.without &&
# modify at the head
test_write_lines a $L y >victim &&
cat victim >mod-a-expect &&
git diff victim >mod-a-patch.with &&
git diff --unified=0 >mod-a-patch.without &&
# remove from the head
test_write_lines $L y >victim &&
cat victim >del-a-expect &&
git diff victim >del-a-patch.with &&
git diff --unified=0 >del-a-patch.without &&
# add to the tail
test_write_lines b $L y z >victim &&
cat victim >add-z-expect &&
git diff victim >add-z-patch.with &&
git diff --unified=0 >add-z-patch.without &&
# modify at the tail
test_write_lines b $L z >victim &&
cat victim >mod-z-expect &&
git diff victim >mod-z-patch.with &&
git diff --unified=0 >mod-z-patch.without &&
# remove from the tail
test_write_lines b $L >victim &&
cat victim >del-z-expect &&
git diff victim >del-z-patch.with &&
git diff --unified=0 >del-z-patch.without
# done
ok 1 - setup
expecting success of 4104.2 'apply add-a-patch with context':
cat original >victim &&
git update-index victim &&
git apply --index $u "$kind-patch.$with" &&
test_cmp "$kind-expect" victim
ok 2 - apply add-a-patch with context
expecting success of 4104.3 'apply add-z-patch with context':
cat original >victim &&
git update-index victim &&
git apply --index $u "$kind-patch.$with" &&
test_cmp "$kind-expect" victim
ok 3 - apply add-z-patch with context
expecting success of 4104.4 'apply insert-a-patch with context':
cat original >victim &&
git update-index victim &&
git apply --index $u "$kind-patch.$with" &&
test_cmp "$kind-expect" victim
ok 4 - apply insert-a-patch with context
expecting success of 4104.5 'apply mod-a-patch with context':
cat original >victim &&
git update-index victim &&
git apply --index $u "$kind-patch.$with" &&
test_cmp "$kind-expect" victim
ok 5 - apply mod-a-patch with context
expecting success of 4104.6 'apply mod-z-patch with context':
cat original >victim &&
git update-index victim &&
git apply --index $u "$kind-patch.$with" &&
test_cmp "$kind-expect" victim
ok 6 - apply mod-z-patch with context
expecting success of 4104.7 'apply del-a-patch with context':
cat original >victim &&
git update-index victim &&
git apply --index $u "$kind-patch.$with" &&
test_cmp "$kind-expect" victim
ok 7 - apply del-a-patch with context
expecting success of 4104.8 'apply del-z-patch with context':
cat original >victim &&
git update-index victim &&
git apply --index $u "$kind-patch.$with" &&
test_cmp "$kind-expect" victim
ok 8 - apply del-z-patch with context
expecting success of 4104.9 'apply add-a-patch without context':
cat original >victim &&
git update-index victim &&
git apply --index $u "$kind-patch.$with" &&
test_cmp "$kind-expect" victim
ok 9 - apply add-a-patch without context
expecting success of 4104.10 'apply add-z-patch without context':
cat original >victim &&
git update-index victim &&
git apply --index $u "$kind-patch.$with" &&
test_cmp "$kind-expect" victim
ok 10 - apply add-z-patch without context
expecting success of 4104.11 'apply insert-a-patch without context':
cat original >victim &&
git update-index victim &&
git apply --index $u "$kind-patch.$with" &&
test_cmp "$kind-expect" victim
ok 11 - apply insert-a-patch without context
expecting success of 4104.12 'apply mod-a-patch without context':
cat original >victim &&
git update-index victim &&
git apply --index $u "$kind-patch.$with" &&
test_cmp "$kind-expect" victim
ok 12 - apply mod-a-patch without context
expecting success of 4104.13 'apply mod-z-patch without context':
cat original >victim &&
git update-index victim &&
git apply --index $u "$kind-patch.$with" &&
test_cmp "$kind-expect" victim
ok 13 - apply mod-z-patch without context
expecting success of 4104.14 'apply del-a-patch without context':
cat original >victim &&
git update-index victim &&
git apply --index $u "$kind-patch.$with" &&
test_cmp "$kind-expect" victim
ok 14 - apply del-a-patch without context
expecting success of 4104.15 'apply del-z-patch without context':
cat original >victim &&
git update-index victim &&
git apply --index $u "$kind-patch.$with" &&
test_cmp "$kind-expect" victim
ok 15 - apply del-z-patch without context
expecting success of 4104.16 'apply non-git add-a-patch without context':
cat original >victim &&
git update-index victim &&
git apply --unidiff-zero --index "$kind-ng.without" &&
test_cmp "$kind-expect" victim
ok 16 - apply non-git add-a-patch without context
expecting success of 4104.17 'apply non-git add-z-patch without context':
cat original >victim &&
git update-index victim &&
git apply --unidiff-zero --index "$kind-ng.without" &&
test_cmp "$kind-expect" victim
ok 17 - apply non-git add-z-patch without context
expecting success of 4104.18 'apply non-git insert-a-patch without context':
cat original >victim &&
git update-index victim &&
git apply --unidiff-zero --index "$kind-ng.without" &&
test_cmp "$kind-expect" victim
ok 18 - apply non-git insert-a-patch without context
expecting success of 4104.19 'apply non-git mod-a-patch without context':
cat original >victim &&
git update-index victim &&
git apply --unidiff-zero --index "$kind-ng.without" &&
test_cmp "$kind-expect" victim
ok 19 - apply non-git mod-a-patch without context
expecting success of 4104.20 'apply non-git mod-z-patch without context':
cat original >victim &&
git update-index victim &&
git apply --unidiff-zero --index "$kind-ng.without" &&
test_cmp "$kind-expect" victim
ok 20 - apply non-git mod-z-patch without context
expecting success of 4104.21 'apply non-git del-a-patch without context':
cat original >victim &&
git update-index victim &&
git apply --unidiff-zero --index "$kind-ng.without" &&
test_cmp "$kind-expect" victim
ok 21 - apply non-git del-a-patch without context
expecting success of 4104.22 'apply non-git del-z-patch without context':
cat original >victim &&
git update-index victim &&
git apply --unidiff-zero --index "$kind-ng.without" &&
test_cmp "$kind-expect" victim
ok 22 - apply non-git del-z-patch without context
expecting success of 4104.23 'two lines':
>file &&
git add file &&
echo aaa >file &&
git diff >patch &&
git add file &&
echo bbb >file &&
git add file &&
test_must_fail git apply --check patch
error: patch failed: file:0
error: file: patch does not apply
ok 23 - two lines
expecting success of 4104.24 'apply patch with 3 context lines matching at end':
test_write_lines a b c d >file &&
git add file &&
echo e >>file &&
git diff >patch &&
>file &&
test_must_fail git apply patch
error: patch failed: file:2
error: file: patch does not apply
ok 24 - apply patch with 3 context lines matching at end
# passed all 24 test(s)
1..24
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4110-apply-scan.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4110-apply-scan/.git/
expecting success of 4110.1 'git apply scan':
git apply \
"$TEST_DIRECTORY/t4110/patch1.patch" \
"$TEST_DIRECTORY/t4110/patch2.patch" \
"$TEST_DIRECTORY/t4110/patch3.patch" \
"$TEST_DIRECTORY/t4110/patch4.patch" \
"$TEST_DIRECTORY/t4110/patch5.patch" &&
test_cmp new.txt "$TEST_DIRECTORY/t4110/expect"
ok 1 - git apply scan
# passed all 1 test(s)
1..1
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4112-apply-renames.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4112-apply-renames/.git/
expecting success of 4112.1 'check rename/copy patch': git apply --check patch
ok 1 - check rename/copy patch
expecting success of 4112.2 'apply rename/copy patch': git apply --index patch
ok 2 - apply rename/copy patch
# passed all 2 test(s)
1..2
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4103-apply-binary.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4103-apply-binary/.git/
expecting success of 4103.1 'setup':
cat >file1 <<-\EOF &&
A quick brown fox jumps over the lazy dog.
A tiny little penguin runs around in circles.
There is a flag with Linux written on it.
A slow black-and-white panda just sits there,
munching on his bamboo.
EOF
cat file1 >file2 &&
cat file1 >file4 &&
git update-index --add --remove file1 file2 file4 &&
git commit -m "Initial Version" 2>/dev/null &&
git checkout -b binary &&
perl -pe "y/x/\000/" <file1 >file3 &&
cat file3 >file4 &&
git add file2 &&
perl -pe "y/\000/v/" <file3 >file1 &&
rm -f file2 &&
git update-index --add --remove file1 file2 file3 file4 &&
git commit -m "Second Version" &&
git diff-tree -p main binary >B.diff &&
git diff-tree -p -C main binary >C.diff &&
git diff-tree -p --binary main binary >BF.diff &&
git diff-tree -p --binary -C main binary >CF.diff &&
git diff-tree -p --full-index main binary >B-index.diff &&
git diff-tree -p -C --full-index main binary >C-index.diff &&
git diff-tree -p --binary --no-prefix main binary -- file3 >B0.diff &&
git init other-repo &&
(
cd other-repo &&
git fetch .. main &&
git reset --hard FETCH_HEAD
)
[main (root-commit) 8985c5f] Initial Version
Author: A U Thor <author@example.com>
3 files changed, 15 insertions(+)
create mode 100644 file1
create mode 100644 file2
create mode 100644 file4
Switched to a new branch 'binary'
[binary 749e5f6] Second Version
Author: A U Thor <author@example.com>
3 files changed, 2 insertions(+), 2 deletions(-)
rename file2 => file3 (57%)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4103-apply-binary/other-repo/.git/
From ..
* branch main -> FETCH_HEAD
HEAD is now at 8985c5f Initial Version
ok 1 - setup
expecting success of 4103.2 'stat binary diff -- should not fail.': git checkout main &&
git apply --stat --summary B.diff
Switched to branch 'main'
file1 | 4 ++--
file2 | 5 -----
file3 | Bin
file4 | Bin
4 files changed, 2 insertions(+), 7 deletions(-)
delete mode 100644 file2
create mode 100644 file3
ok 2 - stat binary diff -- should not fail.
expecting success of 4103.3 'stat binary -p0 diff -- should not fail.':
git checkout main &&
git apply --stat -p0 B0.diff
Already on 'main'
file3 | Bin
1 file changed, 0 insertions(+), 0 deletions(-)
ok 3 - stat binary -p0 diff -- should not fail.
expecting success of 4103.4 'stat binary diff (copy) -- should not fail.': git checkout main &&
git apply --stat --summary C.diff
Already on 'main'
file1 | 4 ++--
file3 | Bin
file4 | Bin
3 files changed, 2 insertions(+), 2 deletions(-)
rename file2 => file3 (57%)
ok 4 - stat binary diff (copy) -- should not fail.
expecting success of 4103.5 'check binary diff -- should fail.': git checkout main &&
test_must_fail git apply --check B.diff
Already on 'main'
error: cannot apply binary patch to 'file3' without full index line
error: file3: patch does not apply
error: cannot apply binary patch to 'file4' without full index line
error: file4: patch does not apply
ok 5 - check binary diff -- should fail.
expecting success of 4103.6 'check binary diff (copy) -- should fail.': git checkout main &&
test_must_fail git apply --check C.diff
Already on 'main'
error: cannot apply binary patch to 'file2' without full index line
error: file2: patch does not apply
error: cannot apply binary patch to 'file4' without full index line
error: file4: patch does not apply
ok 6 - check binary diff (copy) -- should fail.
expecting success of 4103.7 'check incomplete binary diff with replacement -- should fail.':
git checkout main &&
test_must_fail git apply --check --allow-binary-replacement B.diff
Already on 'main'
error: cannot apply binary patch to 'file3' without full index line
error: file3: patch does not apply
error: cannot apply binary patch to 'file4' without full index line
error: file4: patch does not apply
ok 7 - check incomplete binary diff with replacement -- should fail.
expecting success of 4103.8 'check incomplete binary diff with replacement (copy) -- should fail.':
git checkout main &&
test_must_fail git apply --check --allow-binary-replacement C.diff
Already on 'main'
error: cannot apply binary patch to 'file2' without full index line
error: file2: patch does not apply
error: cannot apply binary patch to 'file4' without full index line
error: file4: patch does not apply
ok 8 - check incomplete binary diff with replacement (copy) -- should fail.
expecting success of 4103.9 'check binary diff with replacement.': git checkout main &&
git apply --check --allow-binary-replacement BF.diff
Already on 'main'
ok 9 - check binary diff with replacement.
expecting success of 4103.10 'check binary diff with replacement (copy).': git checkout main &&
git apply --check --allow-binary-replacement CF.diff
Already on 'main'
ok 10 - check binary diff with replacement (copy).
expecting success of 4103.11 'apply binary diff -- should fail.': do_reset &&
test_must_fail git apply B.diff
HEAD is now at 8985c5f Initial Version
Already on 'main'
error: cannot apply binary patch to 'file3' without full index line
error: file3: patch does not apply
error: cannot apply binary patch to 'file4' without full index line
error: file4: patch does not apply
ok 11 - apply binary diff -- should fail.
expecting success of 4103.12 'apply binary diff -- should fail.': do_reset &&
test_must_fail git apply --index B.diff
HEAD is now at 8985c5f Initial Version
Already on 'main'
error: cannot apply binary patch to 'file3' without full index line
error: file3: patch does not apply
error: cannot apply binary patch to 'file4' without full index line
error: file4: patch does not apply
ok 12 - apply binary diff -- should fail.
expecting success of 4103.13 'apply binary diff (copy) -- should fail.': do_reset &&
test_must_fail git apply C.diff
HEAD is now at 8985c5f Initial Version
Already on 'main'
error: cannot apply binary patch to 'file2' without full index line
error: file2: patch does not apply
error: cannot apply binary patch to 'file4' without full index line
error: file4: patch does not apply
ok 13 - apply binary diff (copy) -- should fail.
expecting success of 4103.14 'apply binary diff (copy) -- should fail.': do_reset &&
test_must_fail git apply --index C.diff
HEAD is now at 8985c5f Initial Version
Already on 'main'
error: cannot apply binary patch to 'file2' without full index line
error: file2: patch does not apply
error: cannot apply binary patch to 'file4' without full index line
error: file4: patch does not apply
ok 14 - apply binary diff (copy) -- should fail.
expecting success of 4103.15 'apply binary diff with full-index':
do_reset &&
git apply B-index.diff
HEAD is now at 8985c5f Initial Version
Already on 'main'
ok 15 - apply binary diff with full-index
expecting success of 4103.16 'apply binary diff with full-index (copy)':
do_reset &&
git apply C-index.diff
HEAD is now at 8985c5f Initial Version
Already on 'main'
ok 16 - apply binary diff with full-index (copy)
expecting success of 4103.17 'apply full-index binary diff in new repo':
(cd other-repo &&
do_reset &&
test_must_fail git apply ../B-index.diff)
HEAD is now at 8985c5f Initial Version
Already on 'main'
error: missing binary patch data for 'file3'
error: binary patch does not apply to 'file3'
error: file3: patch does not apply
error: missing binary patch data for 'file4'
error: binary patch does not apply to 'file4'
error: file4: patch does not apply
ok 17 - apply full-index binary diff in new repo
expecting success of 4103.18 'apply binary diff without replacement.': do_reset &&
git apply BF.diff
HEAD is now at 8985c5f Initial Version
Already on 'main'
ok 18 - apply binary diff without replacement.
expecting success of 4103.19 'apply binary diff without replacement (copy).': do_reset &&
git apply CF.diff
HEAD is now at 8985c5f Initial Version
Already on 'main'
ok 19 - apply binary diff without replacement (copy).
expecting success of 4103.20 'apply binary diff.': do_reset &&
git apply --allow-binary-replacement --index BF.diff &&
test -z "$(git diff --name-status binary)"
HEAD is now at 8985c5f Initial Version
Already on 'main'
ok 20 - apply binary diff.
expecting success of 4103.21 'apply binary diff (copy).': do_reset &&
git apply --allow-binary-replacement --index CF.diff &&
test -z "$(git diff --name-status binary)"
HEAD is now at 8985c5f Initial Version
Already on 'main'
ok 21 - apply binary diff (copy).
expecting success of 4103.22 'apply binary -p0 diff':
do_reset &&
git apply -p0 --index B0.diff &&
test -z "$(git diff --name-status binary -- file3)"
HEAD is now at 8985c5f Initial Version
Already on 'main'
ok 22 - apply binary -p0 diff
expecting success of 4103.23 'reject truncated binary diff':
do_reset &&
# this length is calculated to get us very close to
# the 8192-byte strbuf we will use to read in the patch.
test-tool genrandom foo 6205 >file1 &&
git diff --binary >patch &&
# truncate the patch at the second "literal" line,
# but exclude the trailing newline. We must use perl
# for this, since tools like "sed" cannot reliably
# produce output without the trailing newline.
perl -pe "
if (/^literal/ && \$count++ >= 1) {
chomp;
print;
exit 0;
}
" <patch >patch.trunc &&
do_reset &&
test_must_fail git apply patch.trunc
HEAD is now at 8985c5f Initial Version
Already on 'main'
HEAD is now at 8985c5f Initial Version
Already on 'main'
error: corrupt binary patch at line 127:
error: No valid patches in input (allow with "--allow-empty")
ok 23 - reject truncated binary diff
# passed all 23 test(s)
1..23
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4113-apply-ending.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4113-apply-ending/.git/
expecting success of 4113.1 'setup': git update-index --add file
ok 1 - setup
expecting success of 4113.2 'apply at the end': test_must_fail git apply --index test-patch
error: patch failed: file:1
error: file: patch does not apply
ok 2 - apply at the end
expecting success of 4113.3 'apply at the beginning': test_must_fail git apply --index test-patch
error: patch failed: file:1
error: file: patch does not apply
ok 3 - apply at the beginning
# passed all 3 test(s)
1..3
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4111-apply-subdir.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4111-apply-subdir/.git/
expecting success of 4111.1 'setup':
cat >patch <<-\EOF &&
diff file.orig file
--- a/file.orig
+++ b/file
@@ -1 +1,2 @@
1
+2
EOF
patch="$(pwd)/patch" &&
echo 1 >preimage &&
printf "%s\n" 1 2 >postimage &&
echo 3 >other &&
test_tick &&
git commit --allow-empty -m basis
[master (root-commit) 2fa880c] basis
Author: A U Thor <author@example.com>
ok 1 - setup
expecting success of 4111.2 'setup: subdir':
reset_subdir() {
git reset &&
mkdir -p sub/dir/b &&
mkdir -p objects &&
cp "$1" file &&
cp "$1" objects/file &&
cp "$1" sub/dir/file &&
cp "$1" sub/dir/b/file &&
git add file sub/dir/file sub/dir/b/file objects/file &&
cp "$2" file &&
cp "$2" sub/dir/file &&
cp "$2" sub/dir/b/file &&
cp "$2" objects/file &&
test_might_fail git update-index --refresh -q
}
ok 2 - setup: subdir
expecting success of 4111.3 'apply from subdir of toplevel':
cp postimage expected &&
reset_subdir other preimage &&
(
cd sub/dir &&
git apply "$patch"
) &&
test_cmp expected sub/dir/file
file: needs update
objects/file: needs update
sub/dir/b/file: needs update
sub/dir/file: needs update
ok 3 - apply from subdir of toplevel
expecting success of 4111.4 'apply --cached from subdir of toplevel':
cp postimage expected &&
cp other expected.working &&
reset_subdir preimage other &&
(
cd sub/dir &&
git apply --cached "$patch"
) &&
git show :sub/dir/file >actual &&
test_cmp expected actual &&
test_cmp expected.working sub/dir/file
file: needs update
objects/file: needs update
sub/dir/b/file: needs update
sub/dir/file: needs update
ok 4 - apply --cached from subdir of toplevel
expecting success of 4111.5 'apply --index from subdir of toplevel':
cp postimage expected &&
reset_subdir preimage other &&
(
cd sub/dir &&
test_must_fail git apply --index "$patch"
) &&
reset_subdir other preimage &&
(
cd sub/dir &&
test_must_fail git apply --index "$patch"
) &&
reset_subdir preimage preimage &&
(
cd sub/dir &&
git apply --index "$patch"
) &&
git show :sub/dir/file >actual &&
test_cmp expected actual &&
test_cmp expected sub/dir/file
file: needs update
objects/file: needs update
sub/dir/b/file: needs update
sub/dir/file: needs update
error: sub/dir/file: does not match index
file: needs update
objects/file: needs update
sub/dir/b/file: needs update
sub/dir/file: needs update
error: sub/dir/file: does not match index
ok 5 - apply --index from subdir of toplevel
expecting success of 4111.6 'apply half-broken patch from subdir of toplevel':
(
cd sub/dir &&
test_must_fail git apply <<-EOF
--- sub/dir/file
+++ sub/dir/file
@@ -1,0 +1,0 @@
--- file_in_root
+++ file_in_root
@@ -1,0 +1,0 @@
EOF
)
error: corrupt patch at line 4
ok 6 - apply half-broken patch from subdir of toplevel
expecting success of 4111.7 'apply from .git dir':
cp postimage expected &&
cp preimage .git/file &&
cp preimage .git/objects/file &&
(
cd .git &&
git apply "$patch"
) &&
test_cmp expected .git/file
ok 7 - apply from .git dir
expecting success of 4111.8 'apply from subdir of .git dir':
cp postimage expected &&
cp preimage .git/file &&
cp preimage .git/objects/file &&
(
cd .git/objects &&
git apply "$patch"
) &&
test_cmp expected .git/objects/file
ok 8 - apply from subdir of .git dir
expecting success of 4111.9 'apply --cached from .git dir':
cp postimage expected &&
cp other expected.working &&
cp other .git/file &&
reset_subdir preimage other &&
(
cd .git &&
git apply --cached "$patch"
) &&
git show :file >actual &&
test_cmp expected actual &&
test_cmp expected.working file &&
test_cmp expected.working .git/file
file: needs update
objects/file: needs update
sub/dir/b/file: needs update
sub/dir/file: needs update
ok 9 - apply --cached from .git dir
expecting success of 4111.10 'apply --cached from subdir of .git dir':
cp postimage expected &&
cp preimage expected.subdir &&
cp other .git/file &&
cp other .git/objects/file &&
reset_subdir preimage other &&
(
cd .git/objects &&
git apply --cached "$patch"
) &&
git show :file >actual &&
git show :objects/file >actual.subdir &&
test_cmp expected actual &&
test_cmp expected.subdir actual.subdir
file: needs update
objects/file: needs update
sub/dir/b/file: needs update
sub/dir/file: needs update
ok 10 - apply --cached from subdir of .git dir
# passed all 10 test(s)
1..10
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4115-apply-symlink.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4115-apply-symlink/.git/
expecting success of 4115.1 'setup':
test_ln_s_add path1/path2/path3/path4/path5 link1 &&
git commit -m initial &&
git branch side &&
rm -f link? &&
test_ln_s_add htap6 link1 &&
git commit -m second &&
git diff-tree -p HEAD^ HEAD >patch &&
git apply --stat --summary patch
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
[master (root-commit) b8ef636] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 120000 link1
[master 3f5d5e0] second
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
link1 | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
ok 1 - setup
expecting success of 4115.2 'apply symlink patch':
git checkout side &&
git apply patch &&
git diff-files -p >patched &&
test_cmp patch patched
Switched to branch 'side'
ok 2 - apply symlink patch
expecting success of 4115.3 'apply --index symlink patch':
git checkout -f side &&
git apply --index patch &&
git diff-index --cached -p HEAD >patched &&
test_cmp patch patched
Already on 'side'
ok 3 - apply --index symlink patch
expecting success of 4115.4 'symlink setup':
ln -s .git symlink &&
git add symlink &&
git commit -m "add symlink"
[side 3bf7232] add symlink
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+), 1 deletion(-)
create mode 120000 symlink
ok 4 - symlink setup
expecting success of 4115.5 'symlink escape when creating new files':
test_when_finished "git reset --hard && git clean -dfx" &&
cat >patch <<-EOF &&
diff --git a/symlink b/renamed-symlink
similarity index 100%
rename from symlink
rename to renamed-symlink
--
diff --git /dev/null b/renamed-symlink/create-me
new file mode 100644
index 0000000..039727e
--- /dev/null
+++ b/renamed-symlink/create-me
@@ -0,0 +1,1 @@
+busted
EOF
test_must_fail git apply patch 2>stderr &&
cat >expected_stderr <<-EOF &&
error: affected file ${SQ}renamed-symlink/create-me${SQ} is beyond a symbolic link
EOF
test_cmp expected_stderr stderr &&
test_path_is_missing .git/create-me
HEAD is now at 3bf7232 add symlink
Removing expected_stderr
Removing patch
Removing patched
Removing renamed-symlink
Removing stderr
ok 5 - symlink escape when creating new files
expecting success of 4115.6 'symlink escape when modifying file':
test_when_finished "git reset --hard && git clean -dfx" &&
touch .git/modify-me &&
cat >patch <<-EOF &&
diff --git a/symlink b/renamed-symlink
similarity index 100%
rename from symlink
rename to renamed-symlink
--
diff --git a/renamed-symlink/modify-me b/renamed-symlink/modify-me
index 1111111..2222222 100644
--- a/renamed-symlink/modify-me
+++ b/renamed-symlink/modify-me
@@ -0,0 +1,1 @@
+busted
EOF
test_must_fail git apply patch 2>stderr &&
cat >expected_stderr <<-EOF &&
error: renamed-symlink/modify-me: No such file or directory
EOF
test_cmp expected_stderr stderr &&
test_must_be_empty .git/modify-me
HEAD is now at 3bf7232 add symlink
Removing expected_stderr
Removing patch
Removing stderr
ok 6 - symlink escape when modifying file
expecting success of 4115.7 'symlink escape when deleting file':
test_when_finished "git reset --hard && git clean -dfx && rm .git/delete-me" &&
touch .git/delete-me &&
cat >patch <<-EOF &&
diff --git a/symlink b/renamed-symlink
similarity index 100%
rename from symlink
rename to renamed-symlink
--
diff --git a/renamed-symlink/delete-me b/renamed-symlink/delete-me
deleted file mode 100644
index 1111111..0000000 100644
EOF
test_must_fail git apply patch 2>stderr &&
cat >expected_stderr <<-EOF &&
error: renamed-symlink/delete-me: No such file or directory
EOF
test_cmp expected_stderr stderr &&
test_path_is_file .git/delete-me
HEAD is now at 3bf7232 add symlink
Removing expected_stderr
Removing patch
Removing stderr
ok 7 - symlink escape when deleting file
expecting success of 4115.8 '--reject removes .rej symlink if it exists':
test_when_finished "git reset --hard && git clean -dfx" &&
test_commit file &&
echo modified >file.t &&
git diff -- file.t >patch &&
echo modified-again >file.t &&
ln -s foo file.t.rej &&
test_must_fail git apply patch --reject 2>err &&
test_i18ngrep "Rejected hunk" err &&
test_path_is_missing foo &&
test_path_is_file file.t.rej
[side 3ecff08] file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file.t
Rejected hunk #1.
HEAD is now at 3ecff08 file
Removing err
Removing file.t.rej
Removing patch
ok 8 - --reject removes .rej symlink if it exists
# passed all 8 test(s)
1..8
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4114-apply-typechange.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4114-apply-typechange/.git/
expecting success of 4114.1 'setup repository and commits':
echo "hello world" > foo &&
echo "hi planet" > bar &&
git update-index --add foo bar &&
git commit -m initial &&
git branch initial &&
rm -f foo &&
test_ln_s_add bar foo &&
git commit -m "foo symlinked to bar" &&
git branch foo-symlinked-to-bar &&
git rm -f foo &&
echo "how far is the sun?" > foo &&
git update-index --add foo &&
git commit -m "foo back to file" &&
git branch foo-back-to-file &&
printf "\0" > foo &&
git update-index foo &&
git commit -m "foo becomes binary" &&
git branch foo-becomes-binary &&
rm -f foo &&
git update-index --remove foo &&
mkdir foo &&
echo "if only I knew" > foo/baz &&
git update-index --add foo/baz &&
git commit -m "foo becomes a directory" &&
git branch "foo-becomes-a-directory" &&
echo "hello world" > foo/baz &&
git update-index foo/baz &&
git commit -m "foo/baz is the original foo" &&
git branch foo-baz-renamed-from-foo
[master (root-commit) 8d5a53c] initial
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 bar
create mode 100644 foo
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
[master 2b1a969] foo symlinked to bar
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
mode change 100644 => 120000 foo
rm 'foo'
[master 41a0307] foo back to file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
mode change 120000 => 100644 foo
[master bd76368] foo becomes binary
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
[master 918d519] foo becomes a directory
Author: A U Thor <author@example.com>
2 files changed, 1 insertion(+)
delete mode 100644 foo
create mode 100644 foo/baz
[master 5d696d0] foo/baz is the original foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 1 - setup repository and commits
expecting success of 4114.2 'file renamed from foo to foo/baz':
git checkout -f initial &&
git diff-tree -M -p HEAD foo-baz-renamed-from-foo > patch &&
git apply --index < patch
Switched to branch 'initial'
ok 2 - file renamed from foo to foo/baz
expecting success of 4114.3 'file renamed from foo/baz to foo':
git checkout -f foo-baz-renamed-from-foo &&
git diff-tree -M -p HEAD initial > patch &&
git apply --index < patch
Switched to branch 'foo-baz-renamed-from-foo'
ok 3 - file renamed from foo/baz to foo
expecting success of 4114.4 'directory becomes file':
git checkout -f foo-becomes-a-directory &&
git diff-tree -p HEAD initial > patch &&
git apply --index < patch
Switched to branch 'foo-becomes-a-directory'
ok 4 - directory becomes file
expecting success of 4114.5 'file becomes directory':
git checkout -f initial &&
git diff-tree -p HEAD foo-becomes-a-directory > patch &&
git apply --index < patch
Switched to branch 'initial'
ok 5 - file becomes directory
expecting success of 4114.6 'file becomes symlink':
git checkout -f initial &&
git diff-tree -p HEAD foo-symlinked-to-bar > patch &&
git apply --index < patch
Already on 'initial'
ok 6 - file becomes symlink
expecting success of 4114.7 'symlink becomes file':
git checkout -f foo-symlinked-to-bar &&
git diff-tree -p HEAD foo-back-to-file > patch &&
git apply --index < patch
Switched to branch 'foo-symlinked-to-bar'
ok 7 - symlink becomes file
expecting success of 4114.8 'symlink becomes file, in reverse':
git checkout -f foo-symlinked-to-bar &&
git diff-tree -p HEAD foo-back-to-file > patch &&
git checkout foo-back-to-file &&
git apply -R --index < patch
Already on 'foo-symlinked-to-bar'
Switched to branch 'foo-back-to-file'
ok 8 - symlink becomes file, in reverse
expecting success of 4114.9 'binary file becomes symlink':
git checkout -f foo-becomes-binary &&
git diff-tree -p --binary HEAD foo-symlinked-to-bar > patch &&
git apply --index < patch
Switched to branch 'foo-becomes-binary'
ok 9 - binary file becomes symlink
expecting success of 4114.10 'symlink becomes binary file':
git checkout -f foo-symlinked-to-bar &&
git diff-tree -p --binary HEAD foo-becomes-binary > patch &&
git apply --index < patch
Switched to branch 'foo-symlinked-to-bar'
ok 10 - symlink becomes binary file
expecting success of 4114.11 'symlink becomes directory':
git checkout -f foo-symlinked-to-bar &&
git diff-tree -p HEAD foo-becomes-a-directory > patch &&
git apply --index < patch
Already on 'foo-symlinked-to-bar'
ok 11 - symlink becomes directory
expecting success of 4114.12 'directory becomes symlink':
git checkout -f foo-becomes-a-directory &&
git diff-tree -p HEAD foo-symlinked-to-bar > patch &&
git apply --index < patch
Switched to branch 'foo-becomes-a-directory'
ok 12 - directory becomes symlink
# passed all 12 test(s)
1..12
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4118-apply-empty-context.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4118-apply-empty-context/.git/
expecting success of 4118.1 'setup':
test_write_lines "" "" A B C "" >file1 &&
cat file1 >file1.orig &&
{
cat file1 &&
echo Q | tr -d "\\012"
} >file2 &&
cat file2 >file2.orig &&
git add file1 file2 &&
sed -e "/^B/d" <file1.orig >file1 &&
cat file1 > file2 &&
echo Q | tr -d "\\012" >>file2 &&
cat file1 >file1.mods &&
cat file2 >file2.mods &&
git diff |
sed -e "s/^ \$//" >diff.output
ok 1 - setup
expecting success of 4118.2 'apply --numstat':
git apply --numstat diff.output >actual &&
{
echo "0 1 file1" &&
echo "0 1 file2"
} >expect &&
test_cmp expect actual
ok 2 - apply --numstat
expecting success of 4118.3 'apply --apply':
cat file1.orig >file1 &&
cat file2.orig >file2 &&
git update-index file1 file2 &&
git apply --index diff.output &&
test_cmp file1.mods file1 &&
test_cmp file2.mods file2
ok 3 - apply --apply
# passed all 3 test(s)
1..3
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4116-apply-reverse.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4116-apply-reverse/.git/
expecting success of 4116.1 'setup':
test_write_lines a b c d e f g h i j k l m n >file1 &&
perl -pe "y/ijk/\\000\\001\\002/" <file1 >file2 &&
git add file1 file2 &&
git commit -m initial &&
git tag initial &&
test_write_lines a b c g h i J K L m o n p q >file1 &&
perl -pe "y/mon/\\000\\001\\002/" <file1 >file2 &&
git commit -a -m second &&
git tag second &&
git diff --binary initial second >patch
[master (root-commit) 40ea0d8] initial
Author: A U Thor <author@example.com>
2 files changed, 14 insertions(+)
create mode 100644 file1
create mode 100644 file2
[master 09f0b7a] second
Author: A U Thor <author@example.com>
2 files changed, 6 insertions(+), 6 deletions(-)
ok 1 - setup
expecting success of 4116.2 'apply in forward':
T0=$(git rev-parse "second^{tree}") &&
git reset --hard initial &&
git apply --index --binary patch &&
T1=$(git write-tree) &&
test "$T0" = "$T1"
HEAD is now at 40ea0d8 initial
ok 2 - apply in forward
expecting success of 4116.3 'apply in reverse':
git reset --hard second &&
git apply --reverse --binary --index patch &&
git diff >diff &&
test_must_be_empty diff
HEAD is now at 09f0b7a second
ok 3 - apply in reverse
expecting success of 4116.4 'setup separate repository lacking postimage':
git archive --format=tar --prefix=initial/ initial | $TAR xf - &&
(
cd initial && git init && git add .
) &&
git archive --format=tar --prefix=second/ second | $TAR xf - &&
(
cd second && git init && git add .
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4116-apply-reverse/initial/.git/
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4116-apply-reverse/second/.git/
ok 4 - setup separate repository lacking postimage
expecting success of 4116.5 'apply in forward without postimage':
T0=$(git rev-parse "second^{tree}") &&
(
cd initial &&
git apply --index --binary ../patch &&
T1=$(git write-tree) &&
test "$T0" = "$T1"
)
ok 5 - apply in forward without postimage
expecting success of 4116.6 'apply in reverse without postimage':
T0=$(git rev-parse "initial^{tree}") &&
(
cd second &&
git apply --index --binary --reverse ../patch &&
T1=$(git write-tree) &&
test "$T0" = "$T1"
)
ok 6 - apply in reverse without postimage
expecting success of 4116.7 'reversing a whitespace introduction':
sed "s/a/a /" < file1 > file1.new &&
mv file1.new file1 &&
git diff | git apply --reverse --whitespace=error
ok 7 - reversing a whitespace introduction
# passed all 7 test(s)
1..7
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4117-apply-reject.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4117-apply-reject/.git/
expecting success of 4117.1 'setup':
test_write_lines 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 >file1 &&
cat file1 >saved.file1 &&
git update-index --add file1 &&
git commit -m initial &&
test_write_lines 1 2 A B 4 5 6 7 8 9 10 11 12 C 13 14 15 16 17 18 19 20 D 21 >file1 &&
git diff >patch.1 &&
cat file1 >clean &&
test_write_lines 1 E 2 3 4 5 6 7 8 9 10 11 12 C 13 14 15 16 17 18 19 20 F 21 >expected &&
mv file1 file2 &&
git update-index --add --remove file1 file2 &&
git diff -M HEAD >patch.2 &&
rm -f file1 file2 &&
mv saved.file1 file1 &&
git update-index --add --remove file1 file2 &&
test_write_lines 1 E 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 F 21 >file1 &&
cat file1 >saved.file1
[master (root-commit) 11e450e] initial
Author: A U Thor <author@example.com>
1 file changed, 21 insertions(+)
create mode 100644 file1
ok 1 - setup
expecting success of 4117.2 'apply --reject is incompatible with --3way':
test_when_finished "cat saved.file1 >file1" &&
git diff >patch.0 &&
git checkout file1 &&
test_must_fail git apply --reject --3way patch.0 &&
git diff --exit-code
Updated 1 path from the index
error: options '--reject' and '--3way' cannot be used together
ok 2 - apply --reject is incompatible with --3way
expecting success of 4117.3 'apply without --reject should fail':
test_must_fail git apply patch.1 &&
test_cmp file1 saved.file1
error: patch failed: file1:1
error: file1: patch does not apply
ok 3 - apply without --reject should fail
expecting success of 4117.4 'apply without --reject should fail':
test_must_fail git apply --verbose patch.1 &&
test_cmp file1 saved.file1
Checking patch file1...
error: while searching for:
1
2
3
4
5
6
error: patch failed: file1:1
error: file1: patch does not apply
ok 4 - apply without --reject should fail
expecting success of 4117.5 'apply with --reject should fail but update the file':
cat saved.file1 >file1 &&
rm -f file1.rej file2.rej &&
test_must_fail git apply --reject patch.1 &&
test_cmp expected file1 &&
test_path_is_file file1.rej &&
test_path_is_missing file2.rej
Checking patch file1...
error: while searching for:
1
2
3
4
5
6
error: patch failed: file1:1
error: while searching for:
18
19
20
21
error: patch failed: file1:18
Applying patch file1 with 2 rejects...
Rejected hunk #1.
Hunk #2 applied cleanly.
Rejected hunk #3.
ok 5 - apply with --reject should fail but update the file
expecting success of 4117.6 'apply with --reject should fail but update the file':
cat saved.file1 >file1 &&
rm -f file1.rej file2.rej file2 &&
test_must_fail git apply --reject patch.2 >rejects &&
test_path_is_missing file1 &&
test_cmp expected file2 &&
test_path_is_file file2.rej &&
test_path_is_missing file1.rej
Checking patch file1 => file2...
error: while searching for:
1
2
3
4
5
6
error: patch failed: file1:1
error: while searching for:
18
19
20
21
error: patch failed: file1:18
Applying patch file1 => file2 with 2 rejects...
Rejected hunk #1.
Hunk #2 applied cleanly.
Rejected hunk #3.
ok 6 - apply with --reject should fail but update the file
expecting success of 4117.7 'the same test with --verbose':
cat saved.file1 >file1 &&
rm -f file1.rej file2.rej file2 &&
test_must_fail git apply --reject --verbose patch.2 >rejects &&
test_path_is_missing file1 &&
test_cmp expected file2 &&
test_path_is_file file2.rej &&
test_path_is_missing file1.rej
Checking patch file1 => file2...
error: while searching for:
1
2
3
4
5
6
error: patch failed: file1:1
error: while searching for:
18
19
20
21
error: patch failed: file1:18
Applying patch file1 => file2 with 2 rejects...
Rejected hunk #1.
Hunk #2 applied cleanly.
Rejected hunk #3.
ok 7 - the same test with --verbose
expecting success of 4117.8 'apply cleanly with --verbose':
git cat-file -p HEAD:file1 >file1 &&
rm -f file?.rej file2 &&
git apply --verbose patch.1 &&
test_cmp file1 clean
Checking patch file1...
Applied patch file1 cleanly.
ok 8 - apply cleanly with --verbose
# passed all 8 test(s)
1..8
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4108-apply-threeway.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4108-apply-threeway/.git/
expecting success of 4108.1 'setup':
test_tick &&
test_write_lines 1 2 3 4 5 6 7 >one &&
cat one >two &&
git add one two &&
git commit -m initial &&
git branch side &&
test_tick &&
test_write_lines 1 two 3 4 5 six 7 >one &&
test_write_lines 1 two 3 4 5 6 7 >two &&
git commit -a -m main &&
git checkout side &&
test_write_lines 1 2 3 4 five 6 7 >one &&
test_write_lines 1 2 3 4 five 6 7 >two &&
git commit -a -m side &&
git checkout main
[main (root-commit) acfd9ea] initial
Author: A U Thor <author@example.com>
2 files changed, 14 insertions(+)
create mode 100644 one
create mode 100644 two
[main cc2039c] main
Author: A U Thor <author@example.com>
2 files changed, 3 insertions(+), 3 deletions(-)
Switched to branch 'side'
[side 3dc6c9f] side
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+), 2 deletions(-)
Switched to branch 'main'
ok 1 - setup
expecting success of 4108.2 'apply without --3way':
git diff side^ side >P.diff &&
# should fail to apply
git reset --hard &&
git checkout main^0 &&
test_must_fail git apply --index P.diff &&
# should leave things intact
git diff-files --exit-code &&
git diff-index --exit-code --cached HEAD
HEAD is now at cc2039c main
Note: switching to 'main^0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at cc2039c main
error: patch failed: one:2
error: one: patch does not apply
error: patch failed: two:2
error: two: patch does not apply
ok 2 - apply without --3way
expecting success of 4108.3 'apply with --3way':
test_apply_with_3way
HEAD is now at cc2039c main
HEAD is now at cc2039c main
Auto-merging one
CONFLICT (content): Merge conflict in one
Auto-merging two
Automatic merge failed; fix conflicts and then commit the result.
HEAD is now at cc2039c main
HEAD is now at cc2039c main
Applied patch to 'one' with conflicts.
Applied patch to 'two' cleanly.
U one
ok 3 - apply with --3way
expecting success of 4108.4 'apply with --3way with merge.conflictStyle = diff3':
test_config merge.conflictStyle diff3 &&
test_apply_with_3way
HEAD is now at cc2039c main
HEAD is now at cc2039c main
Auto-merging one
CONFLICT (content): Merge conflict in one
Auto-merging two
Automatic merge failed; fix conflicts and then commit the result.
HEAD is now at cc2039c main
HEAD is now at cc2039c main
Applied patch to 'one' with conflicts.
Applied patch to 'two' cleanly.
U one
ok 4 - apply with --3way with merge.conflictStyle = diff3
expecting success of 4108.5 'apply with --3way with rerere enabled':
test_config rerere.enabled true &&
# Merging side should be similar to applying this patch
git diff ...side >P.diff &&
# The corresponding conflicted merge
git reset --hard &&
git checkout main^0 &&
test_must_fail git merge --no-commit side &&
# Manually resolve and record the resolution
test_write_lines 1 two 3 4 five six 7 >one &&
git rerere &&
cat one >expect &&
# should fail to apply
git reset --hard &&
git checkout main^0 &&
test_must_fail git apply --index --3way P.diff &&
# but rerere should have replayed the recorded resolution
test_cmp expect one
HEAD is now at cc2039c main
HEAD is now at cc2039c main
Auto-merging one
CONFLICT (content): Merge conflict in one
Auto-merging two
Recorded preimage for 'one'
Automatic merge failed; fix conflicts and then commit the result.
Recorded resolution for 'one'.
HEAD is now at cc2039c main
HEAD is now at cc2039c main
Applied patch to 'one' with conflicts.
Applied patch to 'two' cleanly.
U one
Resolved 'one' using previous resolution.
ok 5 - apply with --3way with rerere enabled
expecting success of 4108.6 'apply -3 with add/add conflict setup':
git reset --hard &&
git checkout -b adder &&
test_write_lines 1 2 3 4 5 6 7 >three &&
test_write_lines 1 2 3 4 5 6 7 >four &&
git add three four &&
git commit -m "add three and four" &&
git checkout -b another adder^ &&
test_write_lines 1 2 3 4 5 6 7 >three &&
test_write_lines 1 2 3 four 5 6 7 >four &&
git add three four &&
git commit -m "add three and four" &&
# Merging another should be similar to applying this patch
git diff adder...another >P.diff &&
git checkout adder^0 &&
test_must_fail git merge --no-commit another &&
git ls-files -s >expect.ls &&
print_sanitized_conflicted_diff >expect.diff
HEAD is now at cc2039c main
Switched to a new branch 'adder'
[adder a4ae168] add three and four
Author: A U Thor <author@example.com>
2 files changed, 14 insertions(+)
create mode 100644 four
create mode 100644 three
Switched to a new branch 'another'
[another 668e9f0] add three and four
Author: A U Thor <author@example.com>
2 files changed, 14 insertions(+)
create mode 100644 four
create mode 100644 three
Note: switching to 'adder^0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at a4ae168 add three and four
Auto-merging four
CONFLICT (add/add): Merge conflict in four
Recorded preimage for 'four'
Automatic merge failed; fix conflicts and then commit the result.
ok 6 - apply -3 with add/add conflict setup
expecting success of 4108.7 'apply -3 with add/add conflict':
# should fail to apply ...
git reset --hard &&
git checkout adder^0 &&
test_must_fail git apply --index --3way P.diff &&
# ... and leave conflicts in the index and in the working tree
git ls-files -s >actual.ls &&
print_sanitized_conflicted_diff >actual.diff &&
# The result should resemble the corresponding merge
test_cmp expect.ls actual.ls &&
test_cmp expect.diff actual.diff
HEAD is now at a4ae168 add three and four
HEAD is now at a4ae168 add three and four
Performing three-way merge...
Applied patch to 'four' with conflicts.
Performing three-way merge...
Applied patch to 'three' cleanly.
U four
Recorded preimage for 'four'
ok 7 - apply -3 with add/add conflict
expecting success of 4108.8 'apply -3 with add/add conflict (dirty working tree)':
# should fail to apply ...
git reset --hard &&
git checkout adder^0 &&
echo >>four &&
cat four >four.save &&
cat three >three.save &&
git ls-files -s >expect.ls &&
test_must_fail git apply --index --3way P.diff &&
# ... and should not touch anything
git ls-files -s >actual.ls &&
test_cmp expect.ls actual.ls &&
test_cmp four.save four &&
test_cmp three.save three
HEAD is now at a4ae168 add three and four
HEAD is now at a4ae168 add three and four
Performing three-way merge...
error: four: does not match index
error: cannot read the current contents of 'four'
error: four: patch does not apply
Performing three-way merge...
Applied patch to 'three' cleanly.
ok 8 - apply -3 with add/add conflict (dirty working tree)
expecting success of 4108.9 'apply -3 with ambiguous repeating file':
git reset --hard &&
test_write_lines 1 2 1 2 1 2 1 2 1 2 1 >one_two_repeat &&
git add one_two_repeat &&
git commit -m "init one" &&
test_write_lines 1 2 1 2 1 2 1 2 one 2 1 >one_two_repeat &&
git commit -a -m "change one" &&
git diff HEAD~ >Repeat.diff &&
git reset --hard HEAD~ &&
test_write_lines 1 2 1 2 1 2 one 2 1 2 one >one_two_repeat &&
git commit -a -m "change surrounding one" &&
git apply --index --3way Repeat.diff &&
test_write_lines 1 2 1 2 1 2 one 2 one 2 one >expect &&
test_cmp expect one_two_repeat
HEAD is now at a4ae168 add three and four
[detached HEAD 4fe2a89] init one
Author: A U Thor <author@example.com>
1 file changed, 11 insertions(+)
create mode 100644 one_two_repeat
[detached HEAD 0e42fdf] change one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
HEAD is now at 4fe2a89 init one
[detached HEAD 5364b93] change surrounding one
Author: A U Thor <author@example.com>
1 file changed, 2 insertions(+), 2 deletions(-)
Applied patch to 'one_two_repeat' cleanly.
ok 9 - apply -3 with ambiguous repeating file
expecting success of 4108.10 'apply with --3way --cached clean apply':
# Merging side should be similar to applying this patch
git diff ...side >P.diff &&
# The corresponding cleanly applied merge
git reset --hard &&
git checkout main~ &&
git merge --no-commit side &&
git ls-files -s >expect.ls &&
# should succeed
git reset --hard &&
git checkout main~ &&
git apply --cached --3way P.diff &&
git ls-files -s >actual.ls &&
print_sanitized_conflicted_diff >actual.diff &&
# The cache should resemble the corresponding merge
# (both files at stage #0)
test_cmp expect.ls actual.ls &&
# However the working directory should not change
>expect.diff &&
test_cmp expect.diff actual.diff
HEAD is now at 5364b93 change surrounding one
Warning: you are leaving 2 commits behind, not connected to
any of your branches:
5364b93 change surrounding one
4fe2a89 init one
If you want to keep them by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 5364b93
HEAD is now at acfd9ea initial
Updating acfd9ea..3dc6c9f
Fast-forward
one | 2 +-
two | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
HEAD is now at 3dc6c9f side
Previous HEAD position was 3dc6c9f side
HEAD is now at acfd9ea initial
Applied patch to 'one' cleanly.
Applied patch to 'two' cleanly.
ok 10 - apply with --3way --cached clean apply
expecting success of 4108.11 'apply with --3way --cached and conflicts':
# Merging side should be similar to applying this patch
git diff ...side >P.diff &&
# The corresponding conflicted merge
git reset --hard &&
git checkout main^0 &&
test_must_fail git merge --no-commit side &&
git ls-files -s >expect.ls &&
# should fail to apply
git reset --hard &&
git checkout main^0 &&
test_must_fail git apply --cached --3way P.diff &&
git ls-files -s >actual.ls &&
print_sanitized_conflicted_diff >actual.diff &&
# The cache should resemble the corresponding merge
# (one file at stage #0, one file at stages #1 #2 #3)
test_cmp expect.ls actual.ls &&
# However the working directory should not change
>expect.diff &&
test_cmp expect.diff actual.diff
HEAD is now at acfd9ea initial
Previous HEAD position was acfd9ea initial
HEAD is now at cc2039c main
Auto-merging one
CONFLICT (content): Merge conflict in one
Auto-merging two
Resolved 'one' using previous resolution.
Automatic merge failed; fix conflicts and then commit the result.
HEAD is now at cc2039c main
HEAD is now at cc2039c main
Applied patch to 'one' with conflicts.
Applied patch to 'two' cleanly.
U one
ok 11 - apply with --3way --cached and conflicts
expecting success of 4108.12 'apply binary file patch':
git reset --hard main &&
cp "$TEST_DIRECTORY/test-binary-1.png" bin.png &&
git add bin.png &&
git commit -m "add binary file" &&
cp "$TEST_DIRECTORY/test-binary-2.png" bin.png &&
git diff --binary >bin.diff &&
git reset --hard &&
# Apply must succeed.
git apply bin.diff
HEAD is now at cc2039c main
[detached HEAD 5c7d1bd] add binary file
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 bin.png
HEAD is now at 5c7d1bd add binary file
ok 12 - apply binary file patch
expecting success of 4108.13 'apply binary file patch with 3way':
git reset --hard main &&
cp "$TEST_DIRECTORY/test-binary-1.png" bin.png &&
git add bin.png &&
git commit -m "add binary file" &&
cp "$TEST_DIRECTORY/test-binary-2.png" bin.png &&
git diff --binary >bin.diff &&
git reset --hard &&
# Apply must succeed.
git apply --3way --index bin.diff
HEAD is now at cc2039c main
[detached HEAD 5c7d1bd] add binary file
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 bin.png
HEAD is now at 5c7d1bd add binary file
Applied patch to 'bin.png' cleanly.
ok 13 - apply binary file patch with 3way
expecting success of 4108.14 'apply full-index patch with 3way':
git reset --hard main &&
cp "$TEST_DIRECTORY/test-binary-1.png" bin.png &&
git add bin.png &&
git commit -m "add binary file" &&
cp "$TEST_DIRECTORY/test-binary-2.png" bin.png &&
git diff --full-index >bin.diff &&
git reset --hard &&
# Apply must succeed.
git apply --3way --index bin.diff
HEAD is now at cc2039c main
[detached HEAD 5c7d1bd] add binary file
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 bin.png
HEAD is now at 5c7d1bd add binary file
Applied patch to 'bin.png' cleanly.
ok 14 - apply full-index patch with 3way
expecting success of 4108.15 'apply delete then new patch with 3way':
git reset --hard main &&
test_write_lines 2 > delnew &&
git add delnew &&
git diff --cached >> new.patch &&
git reset --hard &&
test_write_lines 1 > delnew &&
git add delnew &&
git commit -m "delnew" &&
rm delnew &&
git diff >> delete-then-new.patch &&
cat new.patch >> delete-then-new.patch &&
git checkout -- . &&
# Apply must succeed.
git apply --3way delete-then-new.patch
HEAD is now at cc2039c main
HEAD is now at cc2039c main
[detached HEAD ba7e832] delnew
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 delnew
Falling back to direct application...
Falling back to direct application...
ok 15 - apply delete then new patch with 3way
# passed all 15 test(s)
1..15
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4120-apply-popt.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4120-apply-popt/.git/
expecting success of 4120.1 'setup':
mkdir sub &&
echo A >sub/file1 &&
cp sub/file1 file1.saved &&
git add sub/file1 &&
echo B >sub/file1 &&
git diff >patch.file &&
git checkout -- sub/file1 &&
git mv sub süb &&
echo B >süb/file1 &&
git diff >patch.escaped &&
grep "[\]" patch.escaped &&
rm süb/file1 &&
rmdir süb
diff --git "a/s\303\274b/file1" "b/s\303\274b/file1"
--- "a/s\303\274b/file1"
+++ "b/s\303\274b/file1"
ok 1 - setup
expecting success of 4120.2 'apply git diff with -p2':
cp file1.saved file1 &&
git apply -p2 patch.file
ok 2 - apply git diff with -p2
expecting success of 4120.3 'apply with too large -p':
cp file1.saved file1 &&
test_must_fail git apply --stat -p3 patch.file 2>err &&
test_i18ngrep "removing 3 leading" err
error: git diff header lacks filename information when removing 3 leading pathname components (line 5)
ok 3 - apply with too large -p
expecting success of 4120.4 'apply (-p2) traditional diff with funny filenames':
cat >patch.quotes <<-\EOF &&
diff -u "a/"sub/file1 "b/"sub/file1
--- "a/"sub/file1
+++ "b/"sub/file1
@@ -1 +1 @@
-A
+B
EOF
echo B >expected &&
cp file1.saved file1 &&
git apply -p2 patch.quotes &&
test_cmp expected file1
ok 4 - apply (-p2) traditional diff with funny filenames
expecting success of 4120.5 'apply with too large -p and fancy filename':
cp file1.saved file1 &&
test_must_fail git apply --stat -p3 patch.escaped 2>err &&
test_i18ngrep "removing 3 leading" err
error: git diff header lacks filename information when removing 3 leading pathname components (line 5)
ok 5 - apply with too large -p and fancy filename
expecting success of 4120.6 'apply (-p2) diff, mode change only':
cat >patch.chmod <<-\EOF &&
diff --git a/sub/file1 b/sub/file1
old mode 100644
new mode 100755
EOF
test_chmod -x file1 &&
git apply --index -p2 patch.chmod &&
case $(git ls-files -s file1) in 100755*) : good;; *) false;; esac
ok 6 - apply (-p2) diff, mode change only
checking prerequisite: FILEMODE
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-FILEMODE" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-FILEMODE" &&
test "$(git config --bool core.filemode)" = true
)
prerequisite FILEMODE ok
expecting success of 4120.7 'file mode was changed':
test -x file1
ok 7 - file mode was changed
expecting success of 4120.8 'apply (-p2) diff, rename':
cat >patch.rename <<-\EOF &&
diff --git a/sub/file1 b/sub/file2
similarity index 100%
rename from sub/file1
rename to sub/file2
EOF
echo A >expected &&
cp file1.saved file1 &&
rm -f file2 &&
git apply -p2 patch.rename &&
test_cmp expected file2
ok 8 - apply (-p2) diff, rename
# passed all 8 test(s)
1..8
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4121-apply-diffs.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4121-apply-diffs/.git/
expecting success of 4121.1 'setup': git add file &&
git commit -q -m 1 &&
git checkout -b test &&
mv file file.tmp &&
echo 0 >file &&
cat file.tmp >>file &&
rm file.tmp &&
git commit -a -q -m 2 &&
echo 9 >>file &&
git commit -a -q -m 3 &&
git checkout main
Switched to a new branch 'test'
Switched to branch 'main'
ok 1 - setup
expecting success of 4121.2 'check if contextually independent diffs for the same file apply': ( git diff test~2 test~1 && git diff test~1 test~0 )| git apply
ok 2 - check if contextually independent diffs for the same file apply
# passed all 2 test(s)
1..2
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4119-apply-config.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4119-apply-config/.git/
expecting success of 4119.1 'setup':
mkdir sub &&
echo A >sub/file1 &&
cp sub/file1 saved &&
git add sub/file1 &&
echo "B " >sub/file1 &&
git diff >patch.file
ok 1 - setup
expecting success of 4119.2 'apply --whitespace=strip':
rm -f sub/file1 &&
cp saved sub/file1 &&
git update-index --refresh &&
git apply --whitespace=strip patch.file &&
check_result sub/file1
patch.file:7: trailing whitespace.
B
warning: 1 line applied after fixing whitespace errors.
B
Happy
ok 2 - apply --whitespace=strip
expecting success of 4119.3 'apply --whitespace=strip from config':
rm -f sub/file1 &&
cp saved sub/file1 &&
git update-index --refresh &&
git config apply.whitespace strip &&
git apply patch.file &&
check_result sub/file1
patch.file:7: trailing whitespace.
B
warning: 1 line applied after fixing whitespace errors.
B
Happy
ok 3 - apply --whitespace=strip from config
expecting success of 4119.4 'apply --whitespace=strip in subdir':
cd "$D" &&
git config --unset-all apply.whitespace &&
rm -f sub/file1 &&
cp saved sub/file1 &&
git update-index --refresh &&
cd sub &&
git apply --whitespace=strip ../patch.file &&
check_result file1
sub/../patch.file:7: trailing whitespace.
B
warning: 1 line applied after fixing whitespace errors.
B
Happy
ok 4 - apply --whitespace=strip in subdir
expecting success of 4119.5 'apply --whitespace=strip from config in subdir':
cd "$D" &&
git config apply.whitespace strip &&
rm -f sub/file1 &&
cp saved sub/file1 &&
git update-index --refresh &&
cd sub &&
git apply ../patch.file &&
check_result file1
sub/../patch.file:7: trailing whitespace.
B
warning: 1 line applied after fixing whitespace errors.
B
Happy
ok 5 - apply --whitespace=strip from config in subdir
expecting success of 4119.6 'same in subdir but with traditional patch input':
cd "$D" &&
git config apply.whitespace strip &&
rm -f sub/file1 &&
cp saved sub/file1 &&
git update-index --refresh &&
cd sub &&
git apply ../gpatch.file &&
check_result file1
sub/../gpatch.file:5: trailing whitespace.
B
warning: 1 line applied after fixing whitespace errors.
B
Happy
ok 6 - same in subdir but with traditional patch input
expecting success of 4119.7 'same but with traditional patch input of depth 1':
cd "$D" &&
git config apply.whitespace strip &&
rm -f sub/file1 &&
cp saved sub/file1 &&
git update-index --refresh &&
cd sub &&
git apply ../gpatch-sub.file &&
check_result file1
sub/../gpatch-sub.file:5: trailing whitespace.
B
warning: 1 line applied after fixing whitespace errors.
B
Happy
ok 7 - same but with traditional patch input of depth 1
expecting success of 4119.8 'same but with traditional patch input of depth 2':
cd "$D" &&
git config apply.whitespace strip &&
rm -f sub/file1 &&
cp saved sub/file1 &&
git update-index --refresh &&
cd sub &&
git apply ../gpatch-ab-sub.file &&
check_result file1
sub/../gpatch-ab-sub.file:5: trailing whitespace.
B
warning: 1 line applied after fixing whitespace errors.
B
Happy
ok 8 - same but with traditional patch input of depth 2
expecting success of 4119.9 'same but with traditional patch input of depth 1':
cd "$D" &&
git config apply.whitespace strip &&
rm -f sub/file1 &&
cp saved sub/file1 &&
git update-index --refresh &&
git apply -p0 gpatch-sub.file &&
check_result sub/file1
gpatch-sub.file:5: trailing whitespace.
B
warning: 1 line applied after fixing whitespace errors.
B
Happy
ok 9 - same but with traditional patch input of depth 1
expecting success of 4119.10 'same but with traditional patch input of depth 2':
cd "$D" &&
git config apply.whitespace strip &&
rm -f sub/file1 &&
cp saved sub/file1 &&
git update-index --refresh &&
git apply gpatch-ab-sub.file &&
check_result sub/file1
gpatch-ab-sub.file:5: trailing whitespace.
B
warning: 1 line applied after fixing whitespace errors.
B
Happy
ok 10 - same but with traditional patch input of depth 2
expecting success of 4119.11 'in subdir with traditional patch input':
cd "$D" &&
git config apply.whitespace strip &&
cat >.gitattributes <<-EOF &&
/* whitespace=blank-at-eol
sub/* whitespace=-blank-at-eol
EOF
rm -f sub/file1 &&
cp saved sub/file1 &&
git update-index --refresh &&
cd sub &&
git apply ../gpatch.file &&
echo "B " >expect &&
test_cmp expect file1
ok 11 - in subdir with traditional patch input
# passed all 11 test(s)
1..11
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4123-apply-shrink.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4123-apply-shrink/.git/
expecting success of 4123.1 'setup':
git add F &&
mv F G &&
sed -e "s/1/11/" -e "s/999999/9/" -e "s/H/HH/" <G >F &&
git diff >patch &&
sed -e "/^\$/d" <G >F &&
git add F
ok 1 - setup
expecting success of 4123.2 'apply should fail gracefully':
test_must_fail git apply --index patch &&
test_path_is_missing .git/index.lock
error: patch failed: F:14
error: F: patch does not apply
ok 2 - apply should fail gracefully
# passed all 2 test(s)
1..2
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4125-apply-ws-fuzz.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4125-apply-ws-fuzz/.git/
expecting success of 4125.1 'setup':
>file &&
git add file &&
# file-0 is full of whitespace breakages
printf "%s \n" a bb c d eeee f ggg h >file-0 &&
# patch-0 creates a whitespace broken file
cat file-0 >file &&
git diff >patch-0 &&
git add file &&
# file-1 is still full of whitespace breakages,
# but has one line updated, without fixing any
# whitespaces.
# patch-1 records that change.
sed -e "s/d/D/" file-0 >file-1 &&
cat file-1 >file &&
git diff >patch-1 &&
# patch-all is the effect of both patch-0 and patch-1
>file &&
git add file &&
cat file-1 >file &&
git diff >patch-all &&
# patch-2 is the same as patch-1 but is based
# on a version that already has whitespace fixed,
# and does not introduce whitespace breakages.
sed -e "s/ \$//" patch-1 >patch-2 &&
# If all whitespace breakages are fixed the contents
# should look like file-fixed
sed -e "s/ \$//" file-1 >file-fixed
ok 1 - setup
expecting success of 4125.2 'nofix':
>file &&
git add file &&
# Baseline. Applying without fixing any whitespace
# breakages.
git apply --whitespace=nowarn patch-0 &&
git apply --whitespace=nowarn patch-1 &&
# The result should obviously match.
test_cmp file-1 file
ok 2 - nofix
expecting success of 4125.3 'withfix (forward)':
>file &&
git add file &&
# The first application will munge the context lines
# the second patch depends on. We should be able to
# adjust and still apply.
git apply --whitespace=fix patch-0 &&
git apply --whitespace=fix patch-1 &&
test_cmp file-fixed file
patch-0:6: trailing whitespace.
a
patch-0:7: trailing whitespace.
bb
patch-0:8: trailing whitespace.
c
patch-0:9: trailing whitespace.
d
patch-0:10: trailing whitespace.
eeee
warning: squelched 3 whitespace errors
warning: 8 lines applied after fixing whitespace errors.
patch-1:6: trailing whitespace.
a
patch-1:7: trailing whitespace.
bb
patch-1:8: trailing whitespace.
c
patch-1:10: trailing whitespace.
D
patch-1:11: trailing whitespace.
eeee
warning: squelched 2 whitespace errors
warning: 1 line applied after fixing whitespace errors.
ok 3 - withfix (forward)
expecting success of 4125.4 'withfix (backward)':
>file &&
git add file &&
# Now we have a whitespace breakages on our side.
git apply --whitespace=nowarn patch-0 &&
# And somebody sends in a patch based on image
# with whitespace already fixed.
git apply --whitespace=fix patch-2 &&
# The result should accept the whitespace fixed
# postimage. But the line with "h" is beyond context
# horizon and left unfixed.
sed -e /h/d file-fixed >fixed-head &&
sed -e /h/d file >file-head &&
test_cmp fixed-head file-head &&
sed -n -e /h/p file-fixed >fixed-tail &&
sed -n -e /h/p file >file-tail &&
! test_cmp fixed-tail file-tail
--- fixed-tail 2023-10-09 02:19:50.317117261 +0000
+++ file-tail 2023-10-09 02:19:50.321117258 +0000
@@ -1 +1 @@
-h
+h
ok 4 - withfix (backward)
# passed all 4 test(s)
1..4
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4122-apply-symlink-inside.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4122-apply-symlink-inside/.git/
expecting success of 4122.1 'setup':
mkdir -p arch/i386/boot arch/x86_64 &&
test_write_lines 1 2 3 4 5 >arch/i386/boot/Makefile &&
test_ln_s_add ../i386/boot arch/x86_64/boot &&
git add . &&
test_tick &&
git commit -m initial &&
git branch test &&
rm arch/x86_64/boot &&
mkdir arch/x86_64/boot &&
test_write_lines 2 3 4 5 6 >arch/x86_64/boot/Makefile &&
git add . &&
test_tick &&
git commit -a -m second &&
git format-patch --binary -1 --stdout >test.patch
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
[main (root-commit) f9acfaa] initial
Author: A U Thor <author@example.com>
2 files changed, 6 insertions(+)
create mode 100644 arch/i386/boot/Makefile
create mode 120000 arch/x86_64/boot
[main e8e99d5] second
Author: A U Thor <author@example.com>
2 files changed, 5 insertions(+), 1 deletion(-)
delete mode 120000 arch/x86_64/boot
create mode 100644 arch/x86_64/boot/Makefile
ok 1 - setup
expecting success of 4122.2 'apply':
git checkout test &&
git diff --exit-code test &&
git diff --exit-code --cached test &&
git apply --index test.patch
Switched to branch 'test'
ok 2 - apply
expecting success of 4122.3 'check result':
git diff --exit-code main &&
git diff --exit-code --cached main &&
test_tick &&
git commit -m replay &&
T1=$(git rev-parse "main^{tree}") &&
T2=$(git rev-parse "HEAD^{tree}") &&
test "z$T1" = "z$T2"
[test 66a4bdc] replay
Author: A U Thor <author@example.com>
2 files changed, 5 insertions(+), 1 deletion(-)
delete mode 120000 arch/x86_64/boot
create mode 100644 arch/x86_64/boot/Makefile
ok 3 - check result
expecting success of 4122.4 'do not read from beyond symbolic link':
git reset --hard &&
mkdir -p arch/x86_64/dir &&
>arch/x86_64/dir/file &&
git add arch/x86_64/dir/file &&
echo line >arch/x86_64/dir/file &&
git diff >patch &&
git reset --hard &&
mkdir arch/i386/dir &&
>arch/i386/dir/file &&
ln -s ../i386/dir arch/x86_64/dir &&
test_must_fail git apply patch &&
test_must_fail git apply --cached patch &&
test_must_fail git apply --index patch
HEAD is now at 66a4bdc replay
HEAD is now at 66a4bdc replay
error: affected file 'arch/x86_64/dir/file' is beyond a symbolic link
error: arch/x86_64/dir/file: does not exist in index
error: arch/x86_64/dir/file: does not exist in index
ok 4 - do not read from beyond symbolic link
expecting success of 4122.5 'do not follow symbolic link (setup)':
rm -rf arch/i386/dir arch/x86_64/dir &&
git reset --hard &&
ln -s ../i386/dir arch/x86_64/dir &&
git add arch/x86_64/dir &&
git diff HEAD >add_symlink.patch &&
git reset --hard &&
mkdir arch/x86_64/dir &&
>arch/x86_64/dir/file &&
git add arch/x86_64/dir/file &&
git diff HEAD >add_file.patch &&
git diff -R HEAD >del_file.patch &&
git reset --hard &&
rm -fr arch/x86_64/dir &&
cat add_symlink.patch add_file.patch >patch &&
cat add_symlink.patch del_file.patch >tricky_del &&
mkdir arch/i386/dir
HEAD is now at 66a4bdc replay
HEAD is now at 66a4bdc replay
HEAD is now at 66a4bdc replay
ok 5 - do not follow symbolic link (setup)
expecting success of 4122.6 'do not follow symbolic link (same input)':
# same input creates a confusing symbolic link
test_must_fail git apply patch 2>error-wt &&
test_i18ngrep "beyond a symbolic link" error-wt &&
test_path_is_missing arch/x86_64/dir &&
test_path_is_missing arch/i386/dir/file &&
test_must_fail git apply --index patch 2>error-ix &&
test_i18ngrep "beyond a symbolic link" error-ix &&
test_path_is_missing arch/x86_64/dir &&
test_path_is_missing arch/i386/dir/file &&
test_must_fail git ls-files --error-unmatch arch/x86_64/dir &&
test_must_fail git ls-files --error-unmatch arch/i386/dir &&
test_must_fail git apply --cached patch 2>error-ct &&
test_i18ngrep "beyond a symbolic link" error-ct &&
test_must_fail git ls-files --error-unmatch arch/x86_64/dir &&
test_must_fail git ls-files --error-unmatch arch/i386/dir &&
>arch/i386/dir/file &&
git add arch/i386/dir/file &&
test_must_fail git apply tricky_del &&
test_path_is_file arch/i386/dir/file &&
test_must_fail git apply --index tricky_del &&
test_path_is_file arch/i386/dir/file &&
test_must_fail git ls-files --error-unmatch arch/x86_64/dir &&
git ls-files --error-unmatch arch/i386/dir &&
test_must_fail git apply --cached tricky_del &&
test_must_fail git ls-files --error-unmatch arch/x86_64/dir &&
git ls-files --error-unmatch arch/i386/dir
error: affected file 'arch/x86_64/dir/file' is beyond a symbolic link
error: affected file 'arch/x86_64/dir/file' is beyond a symbolic link
error: pathspec 'arch/x86_64/dir' did not match any file(s) known to git
Did you forget to 'git add'?
error: pathspec 'arch/i386/dir' did not match any file(s) known to git
Did you forget to 'git add'?
error: affected file 'arch/x86_64/dir/file' is beyond a symbolic link
error: pathspec 'arch/x86_64/dir' did not match any file(s) known to git
Did you forget to 'git add'?
error: pathspec 'arch/i386/dir' did not match any file(s) known to git
Did you forget to 'git add'?
error: arch/x86_64/dir/file: No such file or directory
error: arch/x86_64/dir/file: does not exist in index
error: pathspec 'arch/x86_64/dir' did not match any file(s) known to git
Did you forget to 'git add'?
arch/i386/dir/file
error: arch/x86_64/dir/file: does not exist in index
error: pathspec 'arch/x86_64/dir' did not match any file(s) known to git
Did you forget to 'git add'?
arch/i386/dir/file
ok 6 - do not follow symbolic link (same input)
expecting success of 4122.7 'do not follow symbolic link (existing)':
# existing symbolic link
git reset --hard &&
ln -s ../i386/dir arch/x86_64/dir &&
git add arch/x86_64/dir &&
test_must_fail git apply add_file.patch 2>error-wt-add &&
test_i18ngrep "beyond a symbolic link" error-wt-add &&
test_path_is_missing arch/i386/dir/file &&
mkdir arch/i386/dir &&
>arch/i386/dir/file &&
test_must_fail git apply del_file.patch 2>error-wt-del &&
test_i18ngrep "beyond a symbolic link" error-wt-del &&
test_path_is_file arch/i386/dir/file &&
rm arch/i386/dir/file &&
test_must_fail git apply --index add_file.patch 2>error-ix-add &&
test_i18ngrep "beyond a symbolic link" error-ix-add &&
test_path_is_missing arch/i386/dir/file &&
test_must_fail git ls-files --error-unmatch arch/i386/dir &&
test_must_fail git apply --cached add_file.patch 2>error-ct-file &&
test_i18ngrep "beyond a symbolic link" error-ct-file &&
test_must_fail git ls-files --error-unmatch arch/i386/dir
HEAD is now at 66a4bdc replay
error: affected file 'arch/x86_64/dir/file' is beyond a symbolic link
error: reading from 'arch/x86_64/dir/file' beyond a symbolic link
error: affected file 'arch/x86_64/dir/file' is beyond a symbolic link
error: pathspec 'arch/i386/dir' did not match any file(s) known to git
Did you forget to 'git add'?
error: affected file 'arch/x86_64/dir/file' is beyond a symbolic link
error: pathspec 'arch/i386/dir' did not match any file(s) known to git
Did you forget to 'git add'?
ok 7 - do not follow symbolic link (existing)
# passed all 7 test(s)
1..7
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4126-apply-empty.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4126-apply-empty/.git/
expecting success of 4126.1 'setup':
>empty &&
git add empty &&
test_tick &&
git commit -m initial &&
git commit --allow-empty -m "empty commit" &&
git format-patch --always HEAD~ >empty.patch &&
test_write_lines a b c d e >empty &&
cat empty >expect &&
git diff |
sed -e "/^diff --git/d" \
-e "/^index /d" \
-e "s|a/empty|empty.orig|" \
-e "s|b/empty|empty|" >patch0 &&
sed -e "s|empty|missing|" patch0 >patch1 &&
>empty &&
git update-index --refresh
[master (root-commit) e3f79fd] initial
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 empty
[master 3401d02] empty commit
Author: A U Thor <author@example.com>
ok 1 - setup
expecting success of 4126.2 'apply empty':
rm -f missing &&
test_when_finished "git reset --hard" &&
git apply patch0 &&
test_cmp expect empty
HEAD is now at 3401d02 empty commit
ok 2 - apply empty
expecting success of 4126.3 'apply empty patch fails':
test_when_finished "git reset --hard" &&
test_must_fail git apply empty.patch &&
test_must_fail git apply - </dev/null
error: No valid patches in input (allow with "--allow-empty")
error: No valid patches in input (allow with "--allow-empty")
HEAD is now at 3401d02 empty commit
ok 3 - apply empty patch fails
expecting success of 4126.4 'apply with --allow-empty succeeds':
test_when_finished "git reset --hard" &&
git apply --allow-empty empty.patch &&
git apply --allow-empty - </dev/null
HEAD is now at 3401d02 empty commit
ok 4 - apply with --allow-empty succeeds
expecting success of 4126.5 'apply --index empty':
rm -f missing &&
test_when_finished "git reset --hard" &&
git apply --index patch0 &&
test_cmp expect empty &&
git diff --exit-code
HEAD is now at 3401d02 empty commit
ok 5 - apply --index empty
expecting success of 4126.6 'apply create':
rm -f missing &&
test_when_finished "git reset --hard" &&
git apply patch1 &&
test_cmp expect missing
HEAD is now at 3401d02 empty commit
ok 6 - apply create
expecting success of 4126.7 'apply --index create':
rm -f missing &&
test_when_finished "git reset --hard" &&
git apply --index patch1 &&
test_cmp expect missing &&
git diff --exit-code
HEAD is now at 3401d02 empty commit
ok 7 - apply --index create
# passed all 7 test(s)
1..7
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4128-apply-root.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4128-apply-root/.git/
expecting success of 4128.1 'setup':
mkdir -p some/sub/dir &&
echo Hello > some/sub/dir/file &&
git add some/sub/dir/file &&
git commit -m initial &&
git tag initial
[master (root-commit) dcaa43e] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 some/sub/dir/file
ok 1 - setup
expecting success of 4128.2 'apply --directory -p (1)':
git apply --directory=some/sub -p3 --index patch &&
echo Bello >expect &&
git show :some/sub/dir/file >actual &&
test_cmp expect actual &&
test_cmp expect some/sub/dir/file
ok 2 - apply --directory -p (1)
expecting success of 4128.3 'apply --directory -p (2) ':
git reset --hard initial &&
git apply --directory=some/sub/ -p3 --index patch &&
echo Bello >expect &&
git show :some/sub/dir/file >actual &&
test_cmp expect actual &&
test_cmp expect some/sub/dir/file
HEAD is now at dcaa43e initial
ok 3 - apply --directory -p (2)
expecting success of 4128.4 'apply --directory (new file)':
git reset --hard initial &&
git apply --directory=some/sub/dir/ --index patch &&
echo content >expect &&
git show :some/sub/dir/newfile >actual &&
test_cmp expect actual &&
test_cmp expect some/sub/dir/newfile
HEAD is now at dcaa43e initial
ok 4 - apply --directory (new file)
expecting success of 4128.5 'apply --directory -p (new file)':
git reset --hard initial &&
git apply -p2 --directory=some/sub/dir/ --index patch &&
echo content >expect &&
git show :some/sub/dir/newfile2 >actual &&
test_cmp expect actual &&
test_cmp expect some/sub/dir/newfile2
HEAD is now at dcaa43e initial
ok 5 - apply --directory -p (new file)
expecting success of 4128.6 'apply --directory (delete file)':
git reset --hard initial &&
echo content >some/sub/dir/delfile &&
git add some/sub/dir/delfile &&
git apply --directory=some/sub/dir/ --index patch &&
git ls-files >out &&
! grep delfile out
HEAD is now at dcaa43e initial
ok 6 - apply --directory (delete file)
expecting success of 4128.7 'apply --directory (quoted filename)':
git reset --hard initial &&
git apply --directory=some/sub/dir/ --index patch &&
echo content >expect &&
git show :some/sub/dir/quotefile >actual &&
test_cmp expect actual &&
test_cmp expect some/sub/dir/quotefile
HEAD is now at dcaa43e initial
ok 7 - apply --directory (quoted filename)
# passed all 7 test(s)
1..7
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4127-apply-same-fn.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4127-apply-same-fn/.git/
expecting success of 4127.1 'setup':
test_write_lines a b c d e f g h i j k l m >same_fn &&
cp same_fn other_fn &&
git add same_fn other_fn &&
git commit -m initial
[master (root-commit) a38c7c5] initial
Author: A U Thor <author@example.com>
2 files changed, 26 insertions(+)
create mode 100644 other_fn
create mode 100644 same_fn
ok 1 - setup
expecting success of 4127.2 'apply same filename with independent changes':
modify "s/^d/z/" same_fn &&
git diff > patch0 &&
git add same_fn &&
modify "s/^i/y/" same_fn &&
git diff >> patch0 &&
cp same_fn same_fn2 &&
git reset --hard &&
git apply patch0 &&
test_cmp same_fn same_fn2
HEAD is now at a38c7c5 initial
ok 2 - apply same filename with independent changes
expecting success of 4127.3 'apply same filename with overlapping changes':
git reset --hard &&
# Store same_fn so that we can check apply -R in next test
cp same_fn same_fn1 &&
modify "s/^d/z/" same_fn &&
git diff > patch0 &&
git add same_fn &&
modify "s/^e/y/" same_fn &&
git diff >> patch0 &&
cp same_fn same_fn2 &&
git reset --hard &&
git apply patch0 &&
test_cmp same_fn same_fn2
HEAD is now at a38c7c5 initial
HEAD is now at a38c7c5 initial
ok 3 - apply same filename with overlapping changes
expecting success of 4127.4 'apply same filename with overlapping changes, in reverse':
git apply -R patch0 &&
test_cmp same_fn same_fn1
ok 4 - apply same filename with overlapping changes, in reverse
expecting success of 4127.5 'apply same new filename after rename':
git reset --hard &&
git mv same_fn new_fn &&
modify "s/^d/z/" new_fn &&
git add new_fn &&
git diff -M --cached > patch1 &&
modify "s/^e/y/" new_fn &&
git diff >> patch1 &&
cp new_fn new_fn2 &&
git reset --hard &&
git apply --index patch1 &&
test_cmp new_fn new_fn2
HEAD is now at a38c7c5 initial
HEAD is now at a38c7c5 initial
ok 5 - apply same new filename after rename
expecting success of 4127.6 'apply same old filename after rename -- should fail.':
git reset --hard &&
git mv same_fn new_fn &&
modify "s/^d/z/" new_fn &&
git add new_fn &&
git diff -M --cached > patch1 &&
git mv new_fn same_fn &&
modify "s/^e/y/" same_fn &&
git diff >> patch1 &&
git reset --hard &&
test_must_fail git apply patch1
HEAD is now at a38c7c5 initial
HEAD is now at a38c7c5 initial
error: path same_fn has been renamed/deleted
ok 6 - apply same old filename after rename -- should fail.
expecting success of 4127.7 'apply A->B (rename), C->A (rename), A->A -- should pass.':
git reset --hard &&
git mv same_fn new_fn &&
modify "s/^d/z/" new_fn &&
git add new_fn &&
git diff -M --cached > patch1 &&
git commit -m "a rename" &&
git mv other_fn same_fn &&
modify "s/^e/y/" same_fn &&
git add same_fn &&
git diff -M --cached >> patch1 &&
modify "s/^g/x/" same_fn &&
git diff >> patch1 &&
git reset --hard HEAD^ &&
git apply patch1
HEAD is now at a38c7c5 initial
[master d59c5fe] a rename
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
rename same_fn => new_fn (92%)
HEAD is now at a38c7c5 initial
ok 7 - apply A->B (rename), C->A (rename), A->A -- should pass.
# passed all 7 test(s)
1..7
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4129-apply-samemode.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4129-apply-samemode/.git/
expecting success of 4129.1 'setup':
echo original >file &&
git add file &&
test_tick &&
git commit -m initial &&
git tag initial &&
echo modified >file &&
git diff --stat -p >patch-0.txt &&
chmod +x file &&
git diff --stat -p >patch-1.txt &&
sed "s/^\(new mode \).*/\1/" <patch-1.txt >patch-empty-mode.txt &&
sed "s/^\(new mode \).*/\1garbage/" <patch-1.txt >patch-bogus-mode.txt
[master (root-commit) e950771] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
ok 1 - setup
checking prerequisite: FILEMODE
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-FILEMODE" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-FILEMODE" &&
test "$(git config --bool core.filemode)" = true
)
prerequisite FILEMODE ok
expecting success of 4129.2 'same mode (no index)':
git reset --hard &&
chmod +x file &&
git apply patch-0.txt &&
test -x file
HEAD is now at e950771 initial
warning: file has type 100755, expected 100644
ok 2 - same mode (no index)
expecting success of 4129.3 'same mode (with index)':
git reset --hard &&
chmod +x file &&
git add file &&
git apply --index patch-0.txt &&
test -x file &&
git diff --exit-code
HEAD is now at e950771 initial
warning: file has type 100755, expected 100644
ok 3 - same mode (with index)
expecting success of 4129.4 'same mode (index only)':
git reset --hard &&
chmod +x file &&
git add file &&
git apply --cached patch-0.txt &&
git ls-files -s file | grep "^100755"
HEAD is now at e950771 initial
warning: file has type 100755, expected 100644
100755 2e0996000b7e9019eabcad29391bf0f5c7702f0b 0 file
ok 4 - same mode (index only)
expecting success of 4129.5 'mode update (no index)':
git reset --hard &&
git apply patch-1.txt &&
test -x file
HEAD is now at e950771 initial
ok 5 - mode update (no index)
expecting success of 4129.6 'mode update (with index)':
git reset --hard &&
git apply --index patch-1.txt &&
test -x file &&
git diff --exit-code
HEAD is now at e950771 initial
ok 6 - mode update (with index)
expecting success of 4129.7 'mode update (index only)':
git reset --hard &&
git apply --cached patch-1.txt &&
git ls-files -s file | grep "^100755"
HEAD is now at e950771 initial
100755 2e0996000b7e9019eabcad29391bf0f5c7702f0b 0 file
ok 7 - mode update (index only)
expecting success of 4129.8 'empty mode is rejected':
git reset --hard &&
test_must_fail git apply patch-empty-mode.txt 2>err &&
test_i18ngrep "invalid mode" err
HEAD is now at e950771 initial
error: invalid mode on line 5:
ok 8 - empty mode is rejected
expecting success of 4129.9 'bogus mode is rejected':
git reset --hard &&
test_must_fail git apply patch-bogus-mode.txt 2>err &&
test_i18ngrep "invalid mode" err
HEAD is now at e950771 initial
error: invalid mode on line 5: garbage
ok 9 - bogus mode is rejected
expecting success of 4129.10 'do not use core.sharedRepository for working tree files':
git reset --hard &&
test_config core.sharedRepository 0666 &&
(
# Remove a default ACL if possible.
(setfacl -k . 2>/dev/null || true) &&
umask 0077 &&
# Test both files (f1) and leading dirs (d)
mkdir d &&
touch f1 d/f2 &&
git add f1 d/f2 &&
git diff --staged >patch-f1-and-f2.txt &&
rm -rf d f1 &&
git apply patch-f1-and-f2.txt &&
echo "-rw-------" >f1_mode.expected &&
echo "drwx------" >d_mode.expected &&
test_modebits f1 >f1_mode.actual &&
test_modebits d >d_mode.actual &&
test_cmp f1_mode.expected f1_mode.actual &&
test_cmp d_mode.expected d_mode.actual
)
HEAD is now at e950771 initial
ok 10 - do not use core.sharedRepository for working tree files
# passed all 10 test(s)
1..10
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4130-apply-criss-cross-rename.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4130-apply-criss-cross-rename/.git/
expecting success of 4130.1 'setup':
# Ensure that file sizes are different, because on Windows
# lstat() does not discover inode numbers, and we need
# other properties to discover swapped files
# (mtime is not always different, either).
create_file file1 "some content" &&
create_file file2 "some other content" &&
create_file file3 "again something else" &&
git add file1 file2 file3 &&
git commit -m 1
[master (root-commit) 5cfe986] 1
Author: A U Thor <author@example.com>
3 files changed, 303 insertions(+)
create mode 100644 file1
create mode 100644 file2
create mode 100644 file3
ok 1 - setup
expecting success of 4130.2 'criss-cross rename':
mv file1 tmp &&
mv file2 file1 &&
mv tmp file2 &&
cp file1 file1-swapped &&
cp file2 file2-swapped
ok 2 - criss-cross rename
expecting success of 4130.3 'diff -M -B':
git diff -M -B > diff &&
git reset --hard
HEAD is now at 5cfe986 1
ok 3 - diff -M -B
expecting success of 4130.4 'apply':
git apply diff &&
test_cmp file1 file1-swapped &&
test_cmp file2 file2-swapped
ok 4 - apply
expecting success of 4130.5 'criss-cross rename':
git reset --hard &&
mv file1 tmp &&
mv file2 file1 &&
mv file3 file2 &&
mv tmp file3 &&
cp file1 file1-swapped &&
cp file2 file2-swapped &&
cp file3 file3-swapped
HEAD is now at 5cfe986 1
ok 5 - criss-cross rename
expecting success of 4130.6 'diff -M -B':
git diff -M -B > diff &&
git reset --hard
HEAD is now at 5cfe986 1
ok 6 - diff -M -B
expecting success of 4130.7 'apply':
git apply diff &&
test_cmp file1 file1-swapped &&
test_cmp file2 file2-swapped &&
test_cmp file3 file3-swapped
ok 7 - apply
# passed all 7 test(s)
1..7
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4133-apply-filenames.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4133-apply-filenames/.git/
expecting success of 4133.1 'setup':
cat > bad1.patch <<EOF &&
diff --git a/f b/f
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/f-blah
@@ -0,0 +1 @@
+1
EOF
cat > bad2.patch <<EOF
diff --git a/f b/f
deleted file mode 100644
index d00491f..0000000
--- b/f-blah
+++ /dev/null
@@ -1 +0,0 @@
-1
EOF
ok 1 - setup
expecting success of 4133.2 'apply diff with inconsistent filenames in headers':
test_must_fail git apply bad1.patch 2>err &&
test_i18ngrep "inconsistent new filename" err &&
test_must_fail git apply bad2.patch 2>err &&
test_i18ngrep "inconsistent old filename" err
error: git apply: bad git-diff - inconsistent new filename on line 2
error: git apply: bad git-diff - inconsistent old filename on line 2
ok 2 - apply diff with inconsistent filenames in headers
expecting success of 4133.3 'apply diff with new filename missing from headers':
cat >missing_new_filename.diff <<-\EOF &&
diff --git a/f b/f
index 0000000..d00491f
--- a/f
@@ -0,0 +1 @@
+1
EOF
test_must_fail git apply missing_new_filename.diff 2>err &&
test_i18ngrep "lacks filename information" err
error: git diff header lacks filename information (line 4)
ok 3 - apply diff with new filename missing from headers
expecting success of 4133.4 'apply diff with old filename missing from headers':
cat >missing_old_filename.diff <<-\EOF &&
diff --git a/f b/f
index d00491f..0000000
+++ b/f
@@ -1 +0,0 @@
-1
EOF
test_must_fail git apply missing_old_filename.diff 2>err &&
test_i18ngrep "lacks filename information" err
error: git diff header lacks filename information (line 4)
ok 4 - apply diff with old filename missing from headers
# passed all 4 test(s)
1..4
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4134-apply-submodule.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4134-apply-submodule/.git/
expecting success of 4134.1 'setup':
cat > create-sm.patch <<EOF &&
diff --git a/dir/sm b/dir/sm
new file mode 160000
index 0000000..0123456
--- /dev/null
+++ b/dir/sm
@@ -0,0 +1 @@
+Subproject commit $(test_oid numeric)
EOF
cat > remove-sm.patch <<EOF
diff --git a/dir/sm b/dir/sm
deleted file mode 160000
index 0123456..0000000
--- a/dir/sm
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit $(test_oid numeric)
EOF
ok 1 - setup
expecting success of 4134.2 'removing a submodule also removes all leading subdirectories':
git apply --index create-sm.patch &&
test -d dir/sm &&
git apply --index remove-sm.patch &&
test \! -d dir
ok 2 - removing a submodule also removes all leading subdirectories
# passed all 2 test(s)
1..2
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4131-apply-fake-ancestor.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4131-apply-fake-ancestor/.git/
expecting success of 4131.1 'setup':
test_commit 1 &&
test_commit 2 &&
mkdir sub &&
test_commit 3 sub/3.t &&
test_commit 4
[master (root-commit) d0dcf97] 1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 1.t
[master 82335b2] 2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 2.t
[master 0015c90] 3
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 sub/3.t
[master 8d74a78] 4
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 4.t
ok 1 - setup
expecting success of 4131.2 'apply --build-fake-ancestor':
git checkout 2 &&
echo "A" > 1.t &&
git diff > 1.patch &&
git reset --hard &&
git checkout 1 &&
git apply --build-fake-ancestor 1.ancestor 1.patch
Note: switching to '2'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 82335b2 2
HEAD is now at 82335b2 2
Previous HEAD position was 82335b2 2
HEAD is now at d0dcf97 1
ok 2 - apply --build-fake-ancestor
expecting success of 4131.3 'apply --build-fake-ancestor in a subdirectory':
git checkout 3 &&
echo "C" > sub/3.t &&
git diff > 3.patch &&
git reset --hard &&
git checkout 4 &&
(
cd sub &&
git apply --build-fake-ancestor 3.ancestor ../3.patch &&
test -f 3.ancestor
) &&
git apply --build-fake-ancestor 3.ancestor 3.patch &&
test_cmp sub/3.ancestor 3.ancestor
Previous HEAD position was d0dcf97 1
HEAD is now at 0015c90 3
HEAD is now at 0015c90 3
Previous HEAD position was 0015c90 3
HEAD is now at 8d74a78 4
ok 3 - apply --build-fake-ancestor in a subdirectory
# passed all 3 test(s)
1..3
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4132-apply-removal.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4132-apply-removal/.git/
expecting success of 4132.1 'setup':
cat <<-EOF >c &&
diff -ruN a/file b/file
--- a/file TS0
+++ b/file TS1
@@ -0,0 +1 @@
+something
EOF
cat <<-EOF >d &&
diff -ruN a/file b/file
--- a/file TS0
+++ b/file TS1
@@ -1 +0,0 @@
-something
EOF
timeWest="1982-09-16 07:00:00.000000000 -0800" &&
timeGMT="1982-09-16 15:00:00.000000000 +0000" &&
timeEast="1982-09-17 00:00:00.000000000 +0900" &&
epocWest="1969-12-31 16:00:00.000000000 -0800" &&
epocGMT="1970-01-01 00:00:00.000000000 +0000" &&
epocEast="1970-01-01 09:00:00.000000000 +0900" &&
epocWest2="1969-12-31 16:00:00 -08:00" &&
sed -e "s/TS0/$epocWest/" -e "s/TS1/$timeWest/" <c >createWest.patch &&
sed -e "s/TS0/$epocEast/" -e "s/TS1/$timeEast/" <c >createEast.patch &&
sed -e "s/TS0/$epocGMT/" -e "s/TS1/$timeGMT/" <c >createGMT.patch &&
sed -e "s/TS0/$timeWest/" -e "s/TS1/$timeWest/" <c >addWest.patch &&
sed -e "s/TS0/$timeEast/" -e "s/TS1/$timeEast/" <c >addEast.patch &&
sed -e "s/TS0/$timeGMT/" -e "s/TS1/$timeGMT/" <c >addGMT.patch &&
sed -e "s/TS0/$timeWest/" -e "s/TS1/$timeWest/" <d >emptyWest.patch &&
sed -e "s/TS0/$timeEast/" -e "s/TS1/$timeEast/" <d >emptyEast.patch &&
sed -e "s/TS0/$timeGMT/" -e "s/TS1/$timeGMT/" <d >emptyGMT.patch &&
sed -e "s/TS0/$timeWest/" -e "s/TS1/$epocWest/" <d >removeWest.patch &&
sed -e "s/TS0/$timeEast/" -e "s/TS1/$epocEast/" <d >removeEast.patch &&
sed -e "s/TS0/$timeGMT/" -e "s/TS1/$epocGMT/" <d >removeGMT.patch &&
sed -e "s/TS0/$timeWest/" -e "s/TS1/$epocWest2/" <d >removeWest2.patch &&
echo something >something
ok 1 - setup
expecting success of 4132.2 'test addEast.patch':
rm -f file .git/index &&
case "$patch" in
create*)
# must be able to create
git apply --index $patch &&
test_cmp file something &&
# must notice the file is already there
>file &&
git add file &&
test_must_fail git apply $patch
;;
add*)
# must be able to create or patch
git apply $patch &&
test_cmp file something &&
>file &&
git apply $patch &&
test_cmp file something
;;
empty*)
# must leave an empty file
cat something >file &&
git add file &&
git apply --index $patch &&
test -f file &&
test_must_be_empty file
;;
remove*)
# must remove the file
cat something >file &&
git add file &&
git apply --index $patch &&
! test -f file
;;
esac
ok 2 - test addEast.patch
expecting success of 4132.3 'test addGMT.patch':
rm -f file .git/index &&
case "$patch" in
create*)
# must be able to create
git apply --index $patch &&
test_cmp file something &&
# must notice the file is already there
>file &&
git add file &&
test_must_fail git apply $patch
;;
add*)
# must be able to create or patch
git apply $patch &&
test_cmp file something &&
>file &&
git apply $patch &&
test_cmp file something
;;
empty*)
# must leave an empty file
cat something >file &&
git add file &&
git apply --index $patch &&
test -f file &&
test_must_be_empty file
;;
remove*)
# must remove the file
cat something >file &&
git add file &&
git apply --index $patch &&
! test -f file
;;
esac
ok 3 - test addGMT.patch
expecting success of 4132.4 'test addWest.patch':
rm -f file .git/index &&
case "$patch" in
create*)
# must be able to create
git apply --index $patch &&
test_cmp file something &&
# must notice the file is already there
>file &&
git add file &&
test_must_fail git apply $patch
;;
add*)
# must be able to create or patch
git apply $patch &&
test_cmp file something &&
>file &&
git apply $patch &&
test_cmp file something
;;
empty*)
# must leave an empty file
cat something >file &&
git add file &&
git apply --index $patch &&
test -f file &&
test_must_be_empty file
;;
remove*)
# must remove the file
cat something >file &&
git add file &&
git apply --index $patch &&
! test -f file
;;
esac
ok 4 - test addWest.patch
expecting success of 4132.5 'test createEast.patch':
rm -f file .git/index &&
case "$patch" in
create*)
# must be able to create
git apply --index $patch &&
test_cmp file something &&
# must notice the file is already there
>file &&
git add file &&
test_must_fail git apply $patch
;;
add*)
# must be able to create or patch
git apply $patch &&
test_cmp file something &&
>file &&
git apply $patch &&
test_cmp file something
;;
empty*)
# must leave an empty file
cat something >file &&
git add file &&
git apply --index $patch &&
test -f file &&
test_must_be_empty file
;;
remove*)
# must remove the file
cat something >file &&
git add file &&
git apply --index $patch &&
! test -f file
;;
esac
error: file: already exists in working directory
ok 5 - test createEast.patch
expecting success of 4132.6 'test createGMT.patch':
rm -f file .git/index &&
case "$patch" in
create*)
# must be able to create
git apply --index $patch &&
test_cmp file something &&
# must notice the file is already there
>file &&
git add file &&
test_must_fail git apply $patch
;;
add*)
# must be able to create or patch
git apply $patch &&
test_cmp file something &&
>file &&
git apply $patch &&
test_cmp file something
;;
empty*)
# must leave an empty file
cat something >file &&
git add file &&
git apply --index $patch &&
test -f file &&
test_must_be_empty file
;;
remove*)
# must remove the file
cat something >file &&
git add file &&
git apply --index $patch &&
! test -f file
;;
esac
error: file: already exists in working directory
ok 6 - test createGMT.patch
expecting success of 4132.7 'test createWest.patch':
rm -f file .git/index &&
case "$patch" in
create*)
# must be able to create
git apply --index $patch &&
test_cmp file something &&
# must notice the file is already there
>file &&
git add file &&
test_must_fail git apply $patch
;;
add*)
# must be able to create or patch
git apply $patch &&
test_cmp file something &&
>file &&
git apply $patch &&
test_cmp file something
;;
empty*)
# must leave an empty file
cat something >file &&
git add file &&
git apply --index $patch &&
test -f file &&
test_must_be_empty file
;;
remove*)
# must remove the file
cat something >file &&
git add file &&
git apply --index $patch &&
! test -f file
;;
esac
error: file: already exists in working directory
ok 7 - test createWest.patch
expecting success of 4132.8 'test emptyEast.patch':
rm -f file .git/index &&
case "$patch" in
create*)
# must be able to create
git apply --index $patch &&
test_cmp file something &&
# must notice the file is already there
>file &&
git add file &&
test_must_fail git apply $patch
;;
add*)
# must be able to create or patch
git apply $patch &&
test_cmp file something &&
>file &&
git apply $patch &&
test_cmp file something
;;
empty*)
# must leave an empty file
cat something >file &&
git add file &&
git apply --index $patch &&
test -f file &&
test_must_be_empty file
;;
remove*)
# must remove the file
cat something >file &&
git add file &&
git apply --index $patch &&
! test -f file
;;
esac
ok 8 - test emptyEast.patch
expecting success of 4132.9 'test emptyGMT.patch':
rm -f file .git/index &&
case "$patch" in
create*)
# must be able to create
git apply --index $patch &&
test_cmp file something &&
# must notice the file is already there
>file &&
git add file &&
test_must_fail git apply $patch
;;
add*)
# must be able to create or patch
git apply $patch &&
test_cmp file something &&
>file &&
git apply $patch &&
test_cmp file something
;;
empty*)
# must leave an empty file
cat something >file &&
git add file &&
git apply --index $patch &&
test -f file &&
test_must_be_empty file
;;
remove*)
# must remove the file
cat something >file &&
git add file &&
git apply --index $patch &&
! test -f file
;;
esac
ok 9 - test emptyGMT.patch
expecting success of 4132.10 'test emptyWest.patch':
rm -f file .git/index &&
case "$patch" in
create*)
# must be able to create
git apply --index $patch &&
test_cmp file something &&
# must notice the file is already there
>file &&
git add file &&
test_must_fail git apply $patch
;;
add*)
# must be able to create or patch
git apply $patch &&
test_cmp file something &&
>file &&
git apply $patch &&
test_cmp file something
;;
empty*)
# must leave an empty file
cat something >file &&
git add file &&
git apply --index $patch &&
test -f file &&
test_must_be_empty file
;;
remove*)
# must remove the file
cat something >file &&
git add file &&
git apply --index $patch &&
! test -f file
;;
esac
ok 10 - test emptyWest.patch
expecting success of 4132.11 'test removeEast.patch':
rm -f file .git/index &&
case "$patch" in
create*)
# must be able to create
git apply --index $patch &&
test_cmp file something &&
# must notice the file is already there
>file &&
git add file &&
test_must_fail git apply $patch
;;
add*)
# must be able to create or patch
git apply $patch &&
test_cmp file something &&
>file &&
git apply $patch &&
test_cmp file something
;;
empty*)
# must leave an empty file
cat something >file &&
git add file &&
git apply --index $patch &&
test -f file &&
test_must_be_empty file
;;
remove*)
# must remove the file
cat something >file &&
git add file &&
git apply --index $patch &&
! test -f file
;;
esac
ok 11 - test removeEast.patch
expecting success of 4132.12 'test removeGMT.patch':
rm -f file .git/index &&
case "$patch" in
create*)
# must be able to create
git apply --index $patch &&
test_cmp file something &&
# must notice the file is already there
>file &&
git add file &&
test_must_fail git apply $patch
;;
add*)
# must be able to create or patch
git apply $patch &&
test_cmp file something &&
>file &&
git apply $patch &&
test_cmp file something
;;
empty*)
# must leave an empty file
cat something >file &&
git add file &&
git apply --index $patch &&
test -f file &&
test_must_be_empty file
;;
remove*)
# must remove the file
cat something >file &&
git add file &&
git apply --index $patch &&
! test -f file
;;
esac
ok 12 - test removeGMT.patch
expecting success of 4132.13 'test removeWest.patch':
rm -f file .git/index &&
case "$patch" in
create*)
# must be able to create
git apply --index $patch &&
test_cmp file something &&
# must notice the file is already there
>file &&
git add file &&
test_must_fail git apply $patch
;;
add*)
# must be able to create or patch
git apply $patch &&
test_cmp file something &&
>file &&
git apply $patch &&
test_cmp file something
;;
empty*)
# must leave an empty file
cat something >file &&
git add file &&
git apply --index $patch &&
test -f file &&
test_must_be_empty file
;;
remove*)
# must remove the file
cat something >file &&
git add file &&
git apply --index $patch &&
! test -f file
;;
esac
ok 13 - test removeWest.patch
expecting success of 4132.14 'test removeWest2.patch':
rm -f file .git/index &&
case "$patch" in
create*)
# must be able to create
git apply --index $patch &&
test_cmp file something &&
# must notice the file is already there
>file &&
git add file &&
test_must_fail git apply $patch
;;
add*)
# must be able to create or patch
git apply $patch &&
test_cmp file something &&
>file &&
git apply $patch &&
test_cmp file something
;;
empty*)
# must leave an empty file
cat something >file &&
git add file &&
git apply --index $patch &&
test -f file &&
test_must_be_empty file
;;
remove*)
# must remove the file
cat something >file &&
git add file &&
git apply --index $patch &&
! test -f file
;;
esac
ok 14 - test removeWest2.patch
# passed all 14 test(s)
1..14
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4136-apply-check.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4136-apply-check/.git/
expecting success of 4136.1 'setup':
test_commit 1
[master (root-commit) d0dcf97] 1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 1.t
ok 1 - setup
expecting success of 4136.2 'apply --check exits non-zero with unrecognized input':
test_must_fail git apply --check - <<-\EOF
I am not a patch
I look nothing like a patch
git apply must fail
EOF
error: No valid patches in input (allow with "--allow-empty")
ok 2 - apply --check exits non-zero with unrecognized input
expecting success of 4136.3 'apply exits non-zero with no-op patch':
cat >input <<-\EOF &&
diff --get a/1 b/1
index 6696ea4..606eddd 100644
--- a/1
+++ b/1
@@ -1,1 +1,1 @@
1
EOF
test_must_fail git apply --stat input &&
test_must_fail git apply --check input
error: corrupt patch at line 7
error: corrupt patch at line 7
ok 3 - apply exits non-zero with no-op patch
expecting success of 4136.4 '`apply --recount` allows no-op patch':
echo 1 >1 &&
git apply --recount --check <<-\EOF
diff --get a/1 b/1
index 6696ea4..606eddd 100644
--- a/1
+++ b/1
@@ -1,1 +1,1 @@
1
EOF
ok 4 - `apply --recount` allows no-op patch
expecting success of 4136.5 'invalid combination: create and copy':
test_must_fail git apply --check - <<-\EOF
diff --git a/1 b/2
new file mode 100644
copy from 1
copy to 2
EOF
error: inconsistent header lines 2 and 3
ok 5 - invalid combination: create and copy
expecting success of 4136.6 'invalid combination: create and rename':
test_must_fail git apply --check - <<-\EOF
diff --git a/1 b/2
new file mode 100644
rename from 1
rename to 2
EOF
error: inconsistent header lines 2 and 3
ok 6 - invalid combination: create and rename
# passed all 6 test(s)
1..6
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4138-apply-ws-expansion.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4138-apply-ws-expansion/.git/
expecting success of 4138.1 'setup':
#
## create test-N, patchN.patch, expect-N files
#
# test 1
printf "\t%s\n" 1 2 3 4 5 6 >before &&
printf "\t%s\n" 1 2 3 >after &&
printf "%64s\n" a b c >>after &&
printf "\t%s\n" 4 5 6 >>after &&
test_expect_code 1 git diff --no-index before after >patch1.patch.raw &&
sed -e "s/before/test-1/" -e "s/after/test-1/" patch1.patch.raw >patch1.patch &&
printf "%64s\n" 1 2 3 4 5 6 >test-1 &&
printf "%64s\n" 1 2 3 a b c 4 5 6 >expect-1 &&
# test 2
printf "\t%s\n" a b c d e f >before &&
printf "\t%s\n" a b c >after &&
n=10 &&
x=1 &&
while test $x -lt $n
do
printf "%63s%d\n" "" $x >>after &&
x=$(( $x + 1 )) || return 1
done &&
printf "\t%s\n" d e f >>after &&
test_expect_code 1 git diff --no-index before after >patch2.patch.raw &&
sed -e "s/before/test-2/" -e "s/after/test-2/" patch2.patch.raw >patch2.patch &&
printf "%64s\n" a b c d e f >test-2 &&
printf "%64s\n" a b c >expect-2 &&
x=1 &&
while test $x -lt $n
do
printf "%63s%d\n" "" $x >>expect-2 &&
x=$(( $x + 1 )) || return 1
done &&
printf "%64s\n" d e f >>expect-2 &&
# test 3
printf "\t%s\n" a b c d e f >before &&
printf "\t%s\n" a b c >after &&
n=100 &&
x=0 &&
while test $x -lt $n
do
printf "%63s%02d\n" "" $x >>after &&
x=$(( $x + 1 )) || return 1
done &&
printf "\t%s\n" d e f >>after &&
test_expect_code 1 git diff --no-index before after >patch3.patch.raw &&
sed -e "s/before/test-3/" -e "s/after/test-3/" patch3.patch.raw >patch3.patch &&
printf "%64s\n" a b c d e f >test-3 &&
printf "%64s\n" a b c >expect-3 &&
x=0 &&
while test $x -lt $n
do
printf "%63s%02d\n" "" $x >>expect-3 &&
x=$(( $x + 1 )) || return 1
done &&
printf "%64s\n" d e f >>expect-3 &&
# test 4
>before &&
x=0 &&
while test $x -lt 50
do
printf "\t%02d\n" $x >>before &&
x=$(( $x + 1 )) || return 1
done &&
cat before >after &&
printf "%64s\n" a b c >>after &&
while test $x -lt 100
do
printf "\t%02d\n" $x >>before &&
printf "\t%02d\n" $x >>after &&
x=$(( $x + 1 )) || return 1
done &&
test_expect_code 1 git diff --no-index before after >patch4.patch.raw &&
sed -e "s/before/test-4/" -e "s/after/test-4/" patch4.patch.raw >patch4.patch &&
>test-4 &&
x=0 &&
while test $x -lt 50
do
printf "%63s%02d\n" "" $x >>test-4 &&
x=$(( $x + 1 )) || return 1
done &&
cat test-4 >expect-4 &&
printf "%64s\n" a b c >>expect-4 &&
while test $x -lt 100
do
printf "%63s%02d\n" "" $x >>test-4 &&
printf "%63s%02d\n" "" $x >>expect-4 &&
x=$(( $x + 1 )) || return 1
done &&
git config core.whitespace tab-in-indent,tabwidth=63 &&
git config apply.whitespace fix
ok 1 - setup
expecting success of 4138.2 'apply with ws expansion (t=$t)':
git apply patch$t.patch &&
test_cmp expect-$t test-$t
patch1.patch:6: tab in indent.
1
patch1.patch:7: tab in indent.
2
patch1.patch:8: tab in indent.
3
patch1.patch:12: tab in indent.
4
patch1.patch:13: tab in indent.
5
warning: squelched 1 whitespace error
warning: 6 lines add whitespace errors.
ok 2 - apply with ws expansion (t=$t)
expecting success of 4138.3 'apply with ws expansion (t=$t)':
git apply patch$t.patch &&
test_cmp expect-$t test-$t
patch2.patch:6: tab in indent.
a
patch2.patch:7: tab in indent.
b
patch2.patch:8: tab in indent.
c
patch2.patch:18: tab in indent.
d
patch2.patch:19: tab in indent.
e
warning: squelched 1 whitespace error
warning: 6 lines add whitespace errors.
ok 3 - apply with ws expansion (t=$t)
expecting success of 4138.4 'apply with ws expansion (t=$t)':
git apply patch$t.patch &&
test_cmp expect-$t test-$t
patch3.patch:6: tab in indent.
a
patch3.patch:7: tab in indent.
b
patch3.patch:8: tab in indent.
c
patch3.patch:109: tab in indent.
d
patch3.patch:110: tab in indent.
e
warning: squelched 1 whitespace error
warning: 6 lines add whitespace errors.
ok 4 - apply with ws expansion (t=$t)
expecting success of 4138.5 'apply with ws expansion (t=$t)':
git apply patch$t.patch &&
test_cmp expect-$t test-$t
patch4.patch:6: tab in indent.
47
patch4.patch:7: tab in indent.
48
patch4.patch:8: tab in indent.
49
patch4.patch:12: tab in indent.
50
patch4.patch:13: tab in indent.
51
warning: squelched 1 whitespace error
warning: 6 lines add whitespace errors.
ok 5 - apply with ws expansion (t=$t)
# passed all 5 test(s)
1..5
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4135-apply-weird-filenames.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4135-apply-weird-filenames/.git/
expecting success of 4135.1 'setup':
vector=$TEST_DIRECTORY/t4135 &&
test_tick &&
git commit --allow-empty -m preimage &&
git tag preimage &&
reset_preimage() {
git checkout -f preimage^0 &&
git read-tree -u --reset HEAD &&
git update-index --refresh
}
[master (root-commit) 9cf544c] preimage
Author: A U Thor <author@example.com>
ok 1 - setup
expecting success of 4135.2 'plain, git-style file creation patch':
echo postimage >expected &&
reset_preimage &&
rm -f 'postimage.txt' &&
git apply -v "$vector"/'git-plain.diff' &&
test_cmp expected 'postimage.txt'
Note: switching to 'preimage^0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 9cf544c preimage
Checking patch postimage.txt...
Applied patch postimage.txt cleanly.
ok 2 - plain, git-style file creation patch
expecting success of 4135.3 'plain, traditional patch':
echo postimage >expected &&
reset_preimage &&
echo preimage >'postimage.txt' &&
git apply -v "$vector"/'diff-plain.diff' &&
test_cmp expected 'postimage.txt'
HEAD is now at 9cf544c preimage
Checking patch postimage.txt...
Applied patch postimage.txt cleanly.
ok 3 - plain, traditional patch
expecting success of 4135.4 'plain, traditional file creation patch':
echo postimage >expected &&
reset_preimage &&
rm -f 'postimage.txt' &&
git apply -v "$vector"/'add-plain.diff' &&
test_cmp expected 'postimage.txt'
HEAD is now at 9cf544c preimage
Checking patch postimage.txt...
Applied patch postimage.txt cleanly.
ok 4 - plain, traditional file creation patch
expecting success of 4135.5 'with spaces, git-style file creation patch':
echo postimage >expected &&
reset_preimage &&
rm -f 'post image.txt' &&
git apply -v "$vector"/'git-with spaces.diff' &&
test_cmp expected 'post image.txt'
HEAD is now at 9cf544c preimage
Checking patch post image.txt...
Applied patch post image.txt cleanly.
ok 5 - with spaces, git-style file creation patch
expecting success of 4135.6 'with spaces, traditional patch':
echo postimage >expected &&
reset_preimage &&
echo preimage >'post image.txt' &&
git apply -v "$vector"/'diff-with spaces.diff' &&
test_cmp expected 'post image.txt'
HEAD is now at 9cf544c preimage
Checking patch post image.txt...
Applied patch post image.txt cleanly.
ok 6 - with spaces, traditional patch
expecting success of 4135.7 'with spaces, traditional file creation patch':
echo postimage >expected &&
reset_preimage &&
rm -f 'post image.txt' &&
git apply -v "$vector"/'add-with spaces.diff' &&
test_cmp expected 'post image.txt'
HEAD is now at 9cf544c preimage
Checking patch post image.txt...
Applied patch post image.txt cleanly.
ok 7 - with spaces, traditional file creation patch
checking prerequisite: FUNNYNAMES
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-FUNNYNAMES" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-FUNNYNAMES" &&
test_have_prereq !MINGW &&
touch -- \
"FUNNYNAMES tab embedded" \
"FUNNYNAMES \"quote embedded\"" \
"FUNNYNAMES newline
embedded" 2>/dev/null &&
rm -- \
"FUNNYNAMES tab embedded" \
"FUNNYNAMES \"quote embedded\"" \
"FUNNYNAMES newline
embedded" 2>/dev/null
)
prerequisite FUNNYNAMES ok
expecting success of 4135.8 'with tab, git-style file creation patch':
echo postimage >expected &&
reset_preimage &&
rm -f 'post image.txt' &&
git apply -v "$vector"/'git-with tab.diff' &&
test_cmp expected 'post image.txt'
HEAD is now at 9cf544c preimage
Checking patch "post\timage.txt"...
Applied patch "post\timage.txt" cleanly.
ok 8 - with tab, git-style file creation patch
expecting success of 4135.9 'with tab, traditional patch':
echo postimage >expected &&
reset_preimage &&
echo preimage >'post image.txt' &&
git apply -v "$vector"/'diff-with tab.diff' &&
test_cmp expected 'post image.txt'
HEAD is now at 9cf544c preimage
Checking patch "post\timage.txt"...
Applied patch "post\timage.txt" cleanly.
ok 9 - with tab, traditional patch
expecting success of 4135.10 'with tab, traditional file creation patch':
echo postimage >expected &&
reset_preimage &&
rm -f 'post image.txt' &&
git apply -v "$vector"/'add-with tab.diff' &&
test_cmp expected 'post image.txt'
HEAD is now at 9cf544c preimage
Checking patch "post\timage.txt"...
Applied patch "post\timage.txt" cleanly.
ok 10 - with tab, traditional file creation patch
expecting success of 4135.11 'with backslash, git-style file creation patch':
echo postimage >expected &&
reset_preimage &&
rm -f 'post\image.txt' &&
git apply -v "$vector"/'git-with backslash.diff' &&
test_cmp expected 'post\image.txt'
HEAD is now at 9cf544c preimage
Checking patch "post\\image.txt"...
Applied patch "post\\image.txt" cleanly.
ok 11 - with backslash, git-style file creation patch
expecting success of 4135.12 'with backslash, traditional patch':
echo postimage >expected &&
reset_preimage &&
echo preimage >'post\image.txt' &&
git apply -v "$vector"/'diff-with backslash.diff' &&
test_cmp expected 'post\image.txt'
HEAD is now at 9cf544c preimage
Checking patch "post\\image.txt"...
Applied patch "post\\image.txt" cleanly.
ok 12 - with backslash, traditional patch
expecting success of 4135.13 'with backslash, traditional file creation patch':
echo postimage >expected &&
reset_preimage &&
rm -f 'post\image.txt' &&
git apply -v "$vector"/'add-with backslash.diff' &&
test_cmp expected 'post\image.txt'
HEAD is now at 9cf544c preimage
Checking patch "post\\image.txt"...
Applied patch "post\\image.txt" cleanly.
ok 13 - with backslash, traditional file creation patch
expecting success of 4135.14 'with quote, git-style file creation patch':
echo postimage >expected &&
reset_preimage &&
rm -f '"postimage".txt' &&
git apply -v "$vector"/'git-with quote.diff' &&
test_cmp expected '"postimage".txt'
HEAD is now at 9cf544c preimage
Checking patch "\"postimage\".txt"...
Applied patch "\"postimage\".txt" cleanly.
ok 14 - with quote, git-style file creation patch
checking known breakage of 4135.15 'with quote, traditional patch':
echo postimage >expected &&
reset_preimage &&
echo preimage >'"postimage".txt' &&
git apply -v "$vector"/'diff-with quote.diff' &&
test_cmp expected '"postimage".txt'
HEAD is now at 9cf544c preimage
Checking patch postimage...
error: postimage: No such file or directory
not ok 15 - with quote, traditional patch # TODO known breakage
expecting success of 4135.16 'with quote, traditional file creation patch':
echo postimage >expected &&
reset_preimage &&
rm -f '"postimage".txt' &&
git apply -v "$vector"/'add-with quote.diff' &&
test_cmp expected '"postimage".txt'
HEAD is now at 9cf544c preimage
Checking patch "\"postimage\".txt"...
Applied patch "\"postimage\".txt" cleanly.
ok 16 - with quote, traditional file creation patch
expecting success of 4135.17 'whitespace-damaged traditional patch':
echo postimage >expected &&
reset_preimage &&
rm -f postimage.txt &&
git apply -v "$vector/damaged.diff" &&
test_cmp expected postimage.txt
HEAD is now at 9cf544c preimage
Checking patch postimage.txt...
Applied patch postimage.txt cleanly.
ok 17 - whitespace-damaged traditional patch
expecting success of 4135.18 'traditional patch with colon in timezone':
echo postimage >expected &&
reset_preimage &&
rm -f "post image.txt" &&
git apply "$vector/funny-tz.diff" &&
test_cmp expected "post image.txt"
HEAD is now at 9cf544c preimage
ok 18 - traditional patch with colon in timezone
expecting success of 4135.19 'traditional, whitespace-damaged, colon in timezone':
echo postimage >expected &&
reset_preimage &&
rm -f "post image.txt" &&
git apply "$vector/damaged-tz.diff" &&
test_cmp expected "post image.txt"
HEAD is now at 9cf544c preimage
ok 19 - traditional, whitespace-damaged, colon in timezone
expecting success of 4135.20 'apply handles a diff generated by Subversion':
>Makefile &&
git apply -p2 diff-from-svn &&
test_path_is_missing Makefile
ok 20 - apply handles a diff generated by Subversion
# still have 1 known breakage(s)
# passed all remaining 19 test(s)
1..20
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4139-apply-escape.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4139-apply-escape/.git/
expecting success of 4139.1 'bump git repo one level down':
mkdir inside &&
mv .git inside/ &&
cd inside
ok 1 - bump git repo one level down
expecting success of 4139.2 'cannot create file containing ..':
mkpatch_add ../foo >patch &&
test_must_fail git apply patch &&
test_path_is_missing ../foo
error: invalid path '../foo'
ok 2 - cannot create file containing ..
expecting success of 4139.3 'can create file containing .. with --unsafe-paths':
mkpatch_add ../foo >patch &&
git apply --unsafe-paths patch &&
test_path_is_file ../foo
ok 3 - can create file containing .. with --unsafe-paths
expecting success of 4139.4 'cannot create file containing .. (index)':
mkpatch_add ../foo >patch &&
test_must_fail git apply --index patch &&
test_path_is_missing ../foo
error: invalid path '../foo'
ok 4 - cannot create file containing .. (index)
expecting success of 4139.5 'cannot create file containing .. with --unsafe-paths (index)':
mkpatch_add ../foo >patch &&
test_must_fail git apply --index --unsafe-paths patch &&
test_path_is_missing ../foo
error: invalid path '../foo'
ok 5 - cannot create file containing .. with --unsafe-paths (index)
expecting success of 4139.6 'cannot delete file containing ..':
mkpatch_del ../foo >patch &&
test_must_fail git apply patch &&
test_path_is_file ../foo
error: invalid path '../foo'
ok 6 - cannot delete file containing ..
expecting success of 4139.7 'can delete file containing .. with --unsafe-paths':
mkpatch_del ../foo >patch &&
git apply --unsafe-paths patch &&
test_path_is_missing ../foo
ok 7 - can delete file containing .. with --unsafe-paths
expecting success of 4139.8 'cannot delete file containing .. (index)':
mkpatch_del ../foo >patch &&
test_must_fail git apply --index patch &&
test_path_is_file ../foo
error: ../foo: does not exist in index
ok 8 - cannot delete file containing .. (index)
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
expecting success of 4139.9 'symlink escape via ..':
{
mkpatch_symlink tmp .. &&
mkpatch_add tmp/foo ../foo
} >patch &&
test_must_fail git apply patch &&
test_path_is_missing tmp &&
test_path_is_missing ../foo
error: affected file 'tmp/foo' is beyond a symbolic link
ok 9 - symlink escape via ..
expecting success of 4139.10 'symlink escape via .. (index)':
{
mkpatch_symlink tmp .. &&
mkpatch_add tmp/foo ../foo
} >patch &&
test_must_fail git apply --index patch &&
test_path_is_missing tmp &&
test_path_is_missing ../foo
error: affected file 'tmp/foo' is beyond a symbolic link
ok 10 - symlink escape via .. (index)
expecting success of 4139.11 'symlink escape via absolute path':
{
mkpatch_symlink tmp "$(pwd)" &&
mkpatch_add tmp/foo ../foo
} >patch &&
test_must_fail git apply patch &&
test_path_is_missing tmp &&
test_path_is_missing ../foo
error: affected file 'tmp/foo' is beyond a symbolic link
ok 11 - symlink escape via absolute path
expecting success of 4139.12 'symlink escape via absolute path (index)':
{
mkpatch_symlink tmp "$(pwd)" &&
mkpatch_add tmp/foo ../foo
} >patch &&
test_must_fail git apply --index patch &&
test_path_is_missing tmp &&
test_path_is_missing ../foo
error: affected file 'tmp/foo' is beyond a symbolic link
ok 12 - symlink escape via absolute path (index)
# passed all 12 test(s)
1..12
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4141-apply-too-large.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4141-apply-too-large/.git/
checking prerequisite: EXPENSIVE
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-EXPENSIVE" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-EXPENSIVE" &&
test -n "$GIT_TEST_LONG"
)
prerequisite EXPENSIVE not satisfied
ok 1 # skip git apply rejects patches that are too large (missing EXPENSIVE)
# passed all 1 test(s)
1..1
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4140-apply-ita.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4140-apply-ita/.git/
expecting success of 4140.1 'setup':
test_write_lines 1 2 3 4 5 >blueprint &&
cat blueprint >test-file &&
git add -N test-file &&
git diff >creation-patch &&
grep "new file mode 100644" creation-patch &&
rm -f test-file &&
git diff >deletion-patch &&
grep "deleted file mode 100644" deletion-patch
new file mode 100644
deleted file mode 100644
ok 1 - setup
expecting success of 4140.2 'apply creation patch to ita path (--cached)':
git rm -f test-file &&
cat blueprint >test-file &&
git add -N test-file &&
git apply --cached creation-patch &&
git cat-file blob :test-file >actual &&
test_cmp blueprint actual
rm 'test-file'
ok 2 - apply creation patch to ita path (--cached)
expecting success of 4140.3 'apply creation patch to ita path (--index)':
git rm -f test-file &&
cat blueprint >test-file &&
git add -N test-file &&
rm -f test-file &&
test_must_fail git apply --index creation-patch
rm 'test-file'
error: test-file: does not match index
ok 3 - apply creation patch to ita path (--index)
expecting success of 4140.4 'apply deletion patch to ita path (--cached)':
git rm -f test-file &&
cat blueprint >test-file &&
git add -N test-file &&
git apply --cached deletion-patch &&
test_must_fail git ls-files --stage --error-unmatch test-file
rm 'test-file'
error: pathspec 'test-file' did not match any file(s) known to git
Did you forget to 'git add'?
ok 4 - apply deletion patch to ita path (--cached)
expecting success of 4140.5 'apply deletion patch to ita path (--index)':
cat blueprint >test-file &&
git add -N test-file &&
test_must_fail git apply --index deletion-patch &&
git ls-files --stage --error-unmatch test-file
error: test-file: does not match index
100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0 test-file
ok 5 - apply deletion patch to ita path (--index)
# passed all 5 test(s)
1..5
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4124-apply-ws-rule.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4124-apply-ws-rule/.git/
expecting success of 4124.1 'setup':
>file &&
git add file &&
prepare_test_file >file &&
git diff-files -p >patch &&
>target &&
git add target
ok 1 - setup
expecting success of 4124.2 'whitespace=nowarn, default rule':
apply_patch --whitespace=nowarn &&
test_cmp file target
ok 2 - whitespace=nowarn, default rule
expecting success of 4124.3 'whitespace=warn, default rule':
apply_patch --whitespace=warn &&
test_cmp file target
<stdin>:8: space before tab in indent.
A SP and a HT (@%).
<stdin>:9: space before tab in indent.
A SP, a HT and a SP (@%).
<stdin>:12: space before tab in indent.
Seven SP and a HT (@%).
<stdin>:13: space before tab in indent.
Eight SP and a HT (@#%).
<stdin>:14: space before tab in indent.
Seven SP, a HT and a SP (@%).
warning: squelched 5 whitespace errors
warning: 10 lines add whitespace errors.
ok 3 - whitespace=warn, default rule
expecting success of 4124.4 'whitespace=error-all, default rule':
apply_patch ! --whitespace=error-all &&
test_must_be_empty target
<stdin>:8: space before tab in indent.
A SP and a HT (@%).
<stdin>:9: space before tab in indent.
A SP, a HT and a SP (@%).
<stdin>:12: space before tab in indent.
Seven SP and a HT (@%).
<stdin>:13: space before tab in indent.
Eight SP and a HT (@#%).
<stdin>:14: space before tab in indent.
Seven SP, a HT and a SP (@%).
<stdin>:15: space before tab in indent.
Eight SP, a HT and a SP (@#%).
<stdin>:17: space before tab in indent.
Fifteen SP and a HT (@#%).
<stdin>:19: space before tab in indent.
Sixteen SP and a HT (@#%=).
<stdin>:21: trailing whitespace.
A line with a (!) trailing SP
<stdin>:22: trailing whitespace.
A line with a (!) trailing HT
error: 10 lines add whitespace errors.
ok 4 - whitespace=error-all, default rule
expecting success of 4124.5 'whitespace=error-all, no rule':
git config core.whitespace -trailing,-space-before,-indent &&
apply_patch --whitespace=error-all &&
test_cmp file target
ok 5 - whitespace=error-all, no rule
expecting success of 4124.6 'whitespace=error-all, no rule (attribute)':
git config --unset core.whitespace &&
echo "target -whitespace" >.gitattributes &&
apply_patch --whitespace=error-all &&
test_cmp file target
ok 6 - whitespace=error-all, no rule (attribute)
expecting success of 4124.7 'spaces inserted by tab-in-indent':
git config core.whitespace -trailing,-space,-indent,tab &&
rm -f .gitattributes &&
test_fix % &&
sed -e "s/_/ /g" -e "s/>/ /" <<-\EOF >expect &&
An_SP in an ordinary line>and a HT.
________A HT (%).
________A SP and a HT (@%).
_________A SP, a HT and a SP (@%).
_______Seven SP.
________Eight SP (#).
________Seven SP and a HT (@%).
________________Eight SP and a HT (@#%).
_________Seven SP, a HT and a SP (@%).
_________________Eight SP, a HT and a SP (@#%).
_______________Fifteen SP (#).
________________Fifteen SP and a HT (@#%).
________________Sixteen SP (#=).
________________________Sixteen SP and a HT (@#%=).
_____a__Five SP, a non WS, two SP.
A line with a (!) trailing SP_
A line with a (!) trailing HT>
EOF
test_cmp expect target
<stdin>:7: tab in indent.
A HT (%).
<stdin>:8: tab in indent.
A SP and a HT (@%).
<stdin>:9: tab in indent.
A SP, a HT and a SP (@%).
<stdin>:12: tab in indent.
Seven SP and a HT (@%).
<stdin>:13: tab in indent.
Eight SP and a HT (@#%).
warning: squelched 4 whitespace errors
warning: 9 lines applied after fixing whitespace errors.
ok 7 - spaces inserted by tab-in-indent
expecting success of 4124.8 'rule=-trailing,-space,-indent,-tab':
git config core.whitespace "$rule" &&
test_fix "$tt$ts$ti$th"
ok 8 - rule=-trailing,-space,-indent,-tab
expecting success of 4124.9 'rule=-trailing,-space,-indent,-tab,tabwidth=16':
git config core.whitespace "$rule,tabwidth=16" &&
test_fix "$tt$ts$ti16$th"
ok 9 - rule=-trailing,-space,-indent,-tab,tabwidth=16
expecting success of 4124.10 'rule=-trailing,-space,-indent,-tab (attributes)':
git config --unset core.whitespace &&
echo "target whitespace=$rule" >.gitattributes &&
test_fix "$tt$ts$ti$th"
ok 10 - rule=-trailing,-space,-indent,-tab (attributes)
expecting success of 4124.11 'rule=-trailing,-space,-indent,-tab,tabwidth=16 (attributes)':
echo "target whitespace=$rule,tabwidth=16" >.gitattributes &&
test_fix "$tt$ts$ti16$th"
ok 11 - rule=-trailing,-space,-indent,-tab,tabwidth=16 (attributes)
expecting success of 4124.12 'rule=-trailing,-space,-indent,tab':
git config core.whitespace "$rule" &&
test_fix "$tt$ts$ti$th"
<stdin>:7: tab in indent.
A HT (%).
<stdin>:8: tab in indent.
A SP and a HT (@%).
<stdin>:9: tab in indent.
A SP, a HT and a SP (@%).
<stdin>:12: tab in indent.
Seven SP and a HT (@%).
<stdin>:13: tab in indent.
Eight SP and a HT (@#%).
warning: squelched 4 whitespace errors
warning: 9 lines applied after fixing whitespace errors.
ok 12 - rule=-trailing,-space,-indent,tab
expecting success of 4124.13 'rule=-trailing,-space,-indent,tab,tabwidth=16':
git config core.whitespace "$rule,tabwidth=16" &&
test_fix "$tt$ts$ti16$th"
<stdin>:7: tab in indent.
A HT (%).
<stdin>:8: tab in indent.
A SP and a HT (@%).
<stdin>:9: tab in indent.
A SP, a HT and a SP (@%).
<stdin>:12: tab in indent.
Seven SP and a HT (@%).
<stdin>:13: tab in indent.
Eight SP and a HT (@#%).
warning: squelched 4 whitespace errors
warning: 9 lines applied after fixing whitespace errors.
ok 13 - rule=-trailing,-space,-indent,tab,tabwidth=16
expecting success of 4124.14 'rule=-trailing,-space,-indent,tab (attributes)':
git config --unset core.whitespace &&
echo "target whitespace=$rule" >.gitattributes &&
test_fix "$tt$ts$ti$th"
<stdin>:7: tab in indent.
A HT (%).
<stdin>:8: tab in indent.
A SP and a HT (@%).
<stdin>:9: tab in indent.
A SP, a HT and a SP (@%).
<stdin>:12: tab in indent.
Seven SP and a HT (@%).
<stdin>:13: tab in indent.
Eight SP and a HT (@#%).
warning: squelched 4 whitespace errors
warning: 9 lines applied after fixing whitespace errors.
ok 14 - rule=-trailing,-space,-indent,tab (attributes)
expecting success of 4124.15 'rule=-trailing,-space,-indent,tab,tabwidth=16 (attributes)':
echo "target whitespace=$rule,tabwidth=16" >.gitattributes &&
test_fix "$tt$ts$ti16$th"
<stdin>:7: tab in indent.
A HT (%).
<stdin>:8: tab in indent.
A SP and a HT (@%).
<stdin>:9: tab in indent.
A SP, a HT and a SP (@%).
<stdin>:12: tab in indent.
Seven SP and a HT (@%).
<stdin>:13: tab in indent.
Eight SP and a HT (@#%).
warning: squelched 4 whitespace errors
warning: 9 lines applied after fixing whitespace errors.
ok 15 - rule=-trailing,-space,-indent,tab,tabwidth=16 (attributes)
expecting success of 4124.16 'rule=-trailing,-space,indent,-tab':
git config core.whitespace "$rule" &&
test_fix "$tt$ts$ti$th"
<stdin>:11: indent with spaces.
Eight SP (#).
<stdin>:16: indent with spaces.
Fifteen SP (#).
<stdin>:18: indent with spaces.
Sixteen SP (#=).
warning: 7 lines applied after fixing whitespace errors.
ok 16 - rule=-trailing,-space,indent,-tab
expecting success of 4124.17 'rule=-trailing,-space,indent,-tab,tabwidth=16':
git config core.whitespace "$rule,tabwidth=16" &&
test_fix "$tt$ts$ti16$th"
<stdin>:18: indent with spaces.
Sixteen SP (#=).
warning: 2 lines applied after fixing whitespace errors.
ok 17 - rule=-trailing,-space,indent,-tab,tabwidth=16
expecting success of 4124.18 'rule=-trailing,-space,indent,-tab (attributes)':
git config --unset core.whitespace &&
echo "target whitespace=$rule" >.gitattributes &&
test_fix "$tt$ts$ti$th"
<stdin>:11: indent with spaces.
Eight SP (#).
<stdin>:16: indent with spaces.
Fifteen SP (#).
<stdin>:18: indent with spaces.
Sixteen SP (#=).
warning: 7 lines applied after fixing whitespace errors.
ok 18 - rule=-trailing,-space,indent,-tab (attributes)
expecting success of 4124.19 'rule=-trailing,-space,indent,-tab,tabwidth=16 (attributes)':
echo "target whitespace=$rule,tabwidth=16" >.gitattributes &&
test_fix "$tt$ts$ti16$th"
<stdin>:18: indent with spaces.
Sixteen SP (#=).
warning: 2 lines applied after fixing whitespace errors.
ok 19 - rule=-trailing,-space,indent,-tab,tabwidth=16 (attributes)
expecting success of 4124.20 'rule=-trailing,space,-indent,-tab':
git config core.whitespace "$rule" &&
test_fix "$tt$ts$ti$th"
<stdin>:8: space before tab in indent.
A SP and a HT (@%).
<stdin>:9: space before tab in indent.
A SP, a HT and a SP (@%).
<stdin>:12: space before tab in indent.
Seven SP and a HT (@%).
<stdin>:13: space before tab in indent.
Eight SP and a HT (@#%).
<stdin>:14: space before tab in indent.
Seven SP, a HT and a SP (@%).
warning: squelched 3 whitespace errors
warning: 8 lines applied after fixing whitespace errors.
ok 20 - rule=-trailing,space,-indent,-tab
expecting success of 4124.21 'rule=-trailing,space,-indent,-tab,tabwidth=16':
git config core.whitespace "$rule,tabwidth=16" &&
test_fix "$tt$ts$ti16$th"
<stdin>:8: space before tab in indent.
A SP and a HT (@%).
<stdin>:9: space before tab in indent.
A SP, a HT and a SP (@%).
<stdin>:12: space before tab in indent.
Seven SP and a HT (@%).
<stdin>:13: space before tab in indent.
Eight SP and a HT (@#%).
<stdin>:14: space before tab in indent.
Seven SP, a HT and a SP (@%).
warning: squelched 3 whitespace errors
warning: 8 lines applied after fixing whitespace errors.
ok 21 - rule=-trailing,space,-indent,-tab,tabwidth=16
expecting success of 4124.22 'rule=-trailing,space,-indent,-tab (attributes)':
git config --unset core.whitespace &&
echo "target whitespace=$rule" >.gitattributes &&
test_fix "$tt$ts$ti$th"
<stdin>:8: space before tab in indent.
A SP and a HT (@%).
<stdin>:9: space before tab in indent.
A SP, a HT and a SP (@%).
<stdin>:12: space before tab in indent.
Seven SP and a HT (@%).
<stdin>:13: space before tab in indent.
Eight SP and a HT (@#%).
<stdin>:14: space before tab in indent.
Seven SP, a HT and a SP (@%).
warning: squelched 3 whitespace errors
warning: 8 lines applied after fixing whitespace errors.
ok 22 - rule=-trailing,space,-indent,-tab (attributes)
expecting success of 4124.23 'rule=-trailing,space,-indent,-tab,tabwidth=16 (attributes)':
echo "target whitespace=$rule,tabwidth=16" >.gitattributes &&
test_fix "$tt$ts$ti16$th"
<stdin>:8: space before tab in indent.
A SP and a HT (@%).
<stdin>:9: space before tab in indent.
A SP, a HT and a SP (@%).
<stdin>:12: space before tab in indent.
Seven SP and a HT (@%).
<stdin>:13: space before tab in indent.
Eight SP and a HT (@#%).
<stdin>:14: space before tab in indent.
Seven SP, a HT and a SP (@%).
warning: squelched 3 whitespace errors
warning: 8 lines applied after fixing whitespace errors.
ok 23 - rule=-trailing,space,-indent,-tab,tabwidth=16 (attributes)
expecting success of 4124.24 'rule=-trailing,space,-indent,tab':
git config core.whitespace "$rule" &&
test_fix "$tt$ts$ti$th"
<stdin>:7: tab in indent.
A HT (%).
<stdin>:8: space before tab in indent.
A SP and a HT (@%).
<stdin>:9: space before tab in indent.
A SP, a HT and a SP (@%).
<stdin>:12: space before tab in indent.
Seven SP and a HT (@%).
<stdin>:13: space before tab in indent.
Eight SP and a HT (@#%).
warning: squelched 4 whitespace errors
warning: 9 lines applied after fixing whitespace errors.
ok 24 - rule=-trailing,space,-indent,tab
expecting success of 4124.25 'rule=-trailing,space,-indent,tab,tabwidth=16':
git config core.whitespace "$rule,tabwidth=16" &&
test_fix "$tt$ts$ti16$th"
<stdin>:7: tab in indent.
A HT (%).
<stdin>:8: space before tab in indent.
A SP and a HT (@%).
<stdin>:9: space before tab in indent.
A SP, a HT and a SP (@%).
<stdin>:12: space before tab in indent.
Seven SP and a HT (@%).
<stdin>:13: space before tab in indent.
Eight SP and a HT (@#%).
warning: squelched 4 whitespace errors
warning: 9 lines applied after fixing whitespace errors.
ok 25 - rule=-trailing,space,-indent,tab,tabwidth=16
expecting success of 4124.26 'rule=-trailing,space,-indent,tab (attributes)':
git config --unset core.whitespace &&
echo "target whitespace=$rule" >.gitattributes &&
test_fix "$tt$ts$ti$th"
<stdin>:7: tab in indent.
A HT (%).
<stdin>:8: space before tab in indent.
A SP and a HT (@%).
<stdin>:9: space before tab in indent.
A SP, a HT and a SP (@%).
<stdin>:12: space before tab in indent.
Seven SP and a HT (@%).
<stdin>:13: space before tab in indent.
Eight SP and a HT (@#%).
warning: squelched 4 whitespace errors
warning: 9 lines applied after fixing whitespace errors.
ok 26 - rule=-trailing,space,-indent,tab (attributes)
expecting success of 4124.27 'rule=-trailing,space,-indent,tab,tabwidth=16 (attributes)':
echo "target whitespace=$rule,tabwidth=16" >.gitattributes &&
test_fix "$tt$ts$ti16$th"
<stdin>:7: tab in indent.
A HT (%).
<stdin>:8: space before tab in indent.
A SP and a HT (@%).
<stdin>:9: space before tab in indent.
A SP, a HT and a SP (@%).
<stdin>:12: space before tab in indent.
Seven SP and a HT (@%).
<stdin>:13: space before tab in indent.
Eight SP and a HT (@#%).
warning: squelched 4 whitespace errors
warning: 9 lines applied after fixing whitespace errors.
ok 27 - rule=-trailing,space,-indent,tab,tabwidth=16 (attributes)
expecting success of 4124.28 'rule=-trailing,space,indent,-tab':
git config core.whitespace "$rule" &&
test_fix "$tt$ts$ti$th"
<stdin>:8: space before tab in indent.
A SP and a HT (@%).
<stdin>:9: space before tab in indent.
A SP, a HT and a SP (@%).
<stdin>:11: indent with spaces.
Eight SP (#).
<stdin>:12: space before tab in indent.
Seven SP and a HT (@%).
<stdin>:13: space before tab in indent.
Eight SP and a HT (@#%).
warning: squelched 6 whitespace errors
warning: 11 lines applied after fixing whitespace errors.
ok 28 - rule=-trailing,space,indent,-tab
expecting success of 4124.29 'rule=-trailing,space,indent,-tab,tabwidth=16':
git config core.whitespace "$rule,tabwidth=16" &&
test_fix "$tt$ts$ti16$th"
<stdin>:8: space before tab in indent.
A SP and a HT (@%).
<stdin>:9: space before tab in indent.
A SP, a HT and a SP (@%).
<stdin>:12: space before tab in indent.
Seven SP and a HT (@%).
<stdin>:13: space before tab in indent.
Eight SP and a HT (@#%).
<stdin>:14: space before tab in indent.
Seven SP, a HT and a SP (@%).
warning: squelched 4 whitespace errors
warning: 9 lines applied after fixing whitespace errors.
ok 29 - rule=-trailing,space,indent,-tab,tabwidth=16
expecting success of 4124.30 'rule=-trailing,space,indent,-tab (attributes)':
git config --unset core.whitespace &&
echo "target whitespace=$rule" >.gitattributes &&
test_fix "$tt$ts$ti$th"
<stdin>:8: space before tab in indent.
A SP and a HT (@%).
<stdin>:9: space before tab in indent.
A SP, a HT and a SP (@%).
<stdin>:11: indent with spaces.
Eight SP (#).
<stdin>:12: space before tab in indent.
Seven SP and a HT (@%).
<stdin>:13: space before tab in indent.
Eight SP and a HT (@#%).
warning: squelched 6 whitespace errors
warning: 11 lines applied after fixing whitespace errors.
ok 30 - rule=-trailing,space,indent,-tab (attributes)
expecting success of 4124.31 'rule=-trailing,space,indent,-tab,tabwidth=16 (attributes)':
echo "target whitespace=$rule,tabwidth=16" >.gitattributes &&
test_fix "$tt$ts$ti16$th"
<stdin>:8: space before tab in indent.
A SP and a HT (@%).
<stdin>:9: space before tab in indent.
A SP, a HT and a SP (@%).
<stdin>:12: space before tab in indent.
Seven SP and a HT (@%).
<stdin>:13: space before tab in indent.
Eight SP and a HT (@#%).
<stdin>:14: space before tab in indent.
Seven SP, a HT and a SP (@%).
warning: squelched 4 whitespace errors
warning: 9 lines applied after fixing whitespace errors.
ok 31 - rule=-trailing,space,indent,-tab,tabwidth=16 (attributes)
expecting success of 4124.32 'rule=trailing,-space,-indent,-tab':
git config core.whitespace "$rule" &&
test_fix "$tt$ts$ti$th"
<stdin>:21: trailing whitespace.
A line with a (!) trailing SP
<stdin>:22: trailing whitespace.
A line with a (!) trailing HT
warning: 2 lines applied after fixing whitespace errors.
ok 32 - rule=trailing,-space,-indent,-tab
expecting success of 4124.33 'rule=trailing,-space,-indent,-tab,tabwidth=16':
git config core.whitespace "$rule,tabwidth=16" &&
test_fix "$tt$ts$ti16$th"
<stdin>:21: trailing whitespace.
A line with a (!) trailing SP
<stdin>:22: trailing whitespace.
A line with a (!) trailing HT
warning: 2 lines applied after fixing whitespace errors.
ok 33 - rule=trailing,-space,-indent,-tab,tabwidth=16
expecting success of 4124.34 'rule=trailing,-space,-indent,-tab (attributes)':
git config --unset core.whitespace &&
echo "target whitespace=$rule" >.gitattributes &&
test_fix "$tt$ts$ti$th"
<stdin>:21: trailing whitespace.
A line with a (!) trailing SP
<stdin>:22: trailing whitespace.
A line with a (!) trailing HT
warning: 2 lines applied after fixing whitespace errors.
ok 34 - rule=trailing,-space,-indent,-tab (attributes)
expecting success of 4124.35 'rule=trailing,-space,-indent,-tab,tabwidth=16 (attributes)':
echo "target whitespace=$rule,tabwidth=16" >.gitattributes &&
test_fix "$tt$ts$ti16$th"
<stdin>:21: trailing whitespace.
A line with a (!) trailing SP
<stdin>:22: trailing whitespace.
A line with a (!) trailing HT
warning: 2 lines applied after fixing whitespace errors.
ok 35 - rule=trailing,-space,-indent,-tab,tabwidth=16 (attributes)
expecting success of 4124.36 'rule=trailing,-space,-indent,tab':
git config core.whitespace "$rule" &&
test_fix "$tt$ts$ti$th"
<stdin>:7: tab in indent.
A HT (%).
<stdin>:8: tab in indent.
A SP and a HT (@%).
<stdin>:9: tab in indent.
A SP, a HT and a SP (@%).
<stdin>:12: tab in indent.
Seven SP and a HT (@%).
<stdin>:13: tab in indent.
Eight SP and a HT (@#%).
warning: squelched 6 whitespace errors
warning: 11 lines applied after fixing whitespace errors.
ok 36 - rule=trailing,-space,-indent,tab
expecting success of 4124.37 'rule=trailing,-space,-indent,tab,tabwidth=16':
git config core.whitespace "$rule,tabwidth=16" &&
test_fix "$tt$ts$ti16$th"
<stdin>:7: tab in indent.
A HT (%).
<stdin>:8: tab in indent.
A SP and a HT (@%).
<stdin>:9: tab in indent.
A SP, a HT and a SP (@%).
<stdin>:12: tab in indent.
Seven SP and a HT (@%).
<stdin>:13: tab in indent.
Eight SP and a HT (@#%).
warning: squelched 6 whitespace errors
warning: 11 lines applied after fixing whitespace errors.
ok 37 - rule=trailing,-space,-indent,tab,tabwidth=16
expecting success of 4124.38 'rule=trailing,-space,-indent,tab (attributes)':
git config --unset core.whitespace &&
echo "target whitespace=$rule" >.gitattributes &&
test_fix "$tt$ts$ti$th"
<stdin>:7: tab in indent.
A HT (%).
<stdin>:8: tab in indent.
A SP and a HT (@%).
<stdin>:9: tab in indent.
A SP, a HT and a SP (@%).
<stdin>:12: tab in indent.
Seven SP and a HT (@%).
<stdin>:13: tab in indent.
Eight SP and a HT (@#%).
warning: squelched 6 whitespace errors
warning: 11 lines applied after fixing whitespace errors.
ok 38 - rule=trailing,-space,-indent,tab (attributes)
expecting success of 4124.39 'rule=trailing,-space,-indent,tab,tabwidth=16 (attributes)':
echo "target whitespace=$rule,tabwidth=16" >.gitattributes &&
test_fix "$tt$ts$ti16$th"
<stdin>:7: tab in indent.
A HT (%).
<stdin>:8: tab in indent.
A SP and a HT (@%).
<stdin>:9: tab in indent.
A SP, a HT and a SP (@%).
<stdin>:12: tab in indent.
Seven SP and a HT (@%).
<stdin>:13: tab in indent.
Eight SP and a HT (@#%).
warning: squelched 6 whitespace errors
warning: 11 lines applied after fixing whitespace errors.
ok 39 - rule=trailing,-space,-indent,tab,tabwidth=16 (attributes)
expecting success of 4124.40 'rule=trailing,-space,indent,-tab':
git config core.whitespace "$rule" &&
test_fix "$tt$ts$ti$th"
<stdin>:11: indent with spaces.
Eight SP (#).
<stdin>:16: indent with spaces.
Fifteen SP (#).
<stdin>:18: indent with spaces.
Sixteen SP (#=).
<stdin>:21: trailing whitespace.
A line with a (!) trailing SP
<stdin>:22: trailing whitespace.
A line with a (!) trailing HT
warning: 9 lines applied after fixing whitespace errors.
ok 40 - rule=trailing,-space,indent,-tab
expecting success of 4124.41 'rule=trailing,-space,indent,-tab,tabwidth=16':
git config core.whitespace "$rule,tabwidth=16" &&
test_fix "$tt$ts$ti16$th"
<stdin>:18: indent with spaces.
Sixteen SP (#=).
<stdin>:21: trailing whitespace.
A line with a (!) trailing SP
<stdin>:22: trailing whitespace.
A line with a (!) trailing HT
warning: 4 lines applied after fixing whitespace errors.
ok 41 - rule=trailing,-space,indent,-tab,tabwidth=16
expecting success of 4124.42 'rule=trailing,-space,indent,-tab (attributes)':
git config --unset core.whitespace &&
echo "target whitespace=$rule" >.gitattributes &&
test_fix "$tt$ts$ti$th"
<stdin>:11: indent with spaces.
Eight SP (#).
<stdin>:16: indent with spaces.
Fifteen SP (#).
<stdin>:18: indent with spaces.
Sixteen SP (#=).
<stdin>:21: trailing whitespace.
A line with a (!) trailing SP
<stdin>:22: trailing whitespace.
A line with a (!) trailing HT
warning: 9 lines applied after fixing whitespace errors.
ok 42 - rule=trailing,-space,indent,-tab (attributes)
expecting success of 4124.43 'rule=trailing,-space,indent,-tab,tabwidth=16 (attributes)':
echo "target whitespace=$rule,tabwidth=16" >.gitattributes &&
test_fix "$tt$ts$ti16$th"
<stdin>:18: indent with spaces.
Sixteen SP (#=).
<stdin>:21: trailing whitespace.
A line with a (!) trailing SP
<stdin>:22: trailing whitespace.
A line with a (!) trailing HT
warning: 4 lines applied after fixing whitespace errors.
ok 43 - rule=trailing,-space,indent,-tab,tabwidth=16 (attributes)
expecting success of 4124.44 'rule=trailing,space,-indent,-tab':
git config core.whitespace "$rule" &&
test_fix "$tt$ts$ti$th"
<stdin>:8: space before tab in indent.
A SP and a HT (@%).
<stdin>:9: space before tab in indent.
A SP, a HT and a SP (@%).
<stdin>:12: space before tab in indent.
Seven SP and a HT (@%).
<stdin>:13: space before tab in indent.
Eight SP and a HT (@#%).
<stdin>:14: space before tab in indent.
Seven SP, a HT and a SP (@%).
warning: squelched 5 whitespace errors
warning: 10 lines applied after fixing whitespace errors.
ok 44 - rule=trailing,space,-indent,-tab
expecting success of 4124.45 'rule=trailing,space,-indent,-tab,tabwidth=16':
git config core.whitespace "$rule,tabwidth=16" &&
test_fix "$tt$ts$ti16$th"
<stdin>:8: space before tab in indent.
A SP and a HT (@%).
<stdin>:9: space before tab in indent.
A SP, a HT and a SP (@%).
<stdin>:12: space before tab in indent.
Seven SP and a HT (@%).
<stdin>:13: space before tab in indent.
Eight SP and a HT (@#%).
<stdin>:14: space before tab in indent.
Seven SP, a HT and a SP (@%).
warning: squelched 5 whitespace errors
warning: 10 lines applied after fixing whitespace errors.
ok 45 - rule=trailing,space,-indent,-tab,tabwidth=16
expecting success of 4124.46 'rule=trailing,space,-indent,-tab (attributes)':
git config --unset core.whitespace &&
echo "target whitespace=$rule" >.gitattributes &&
test_fix "$tt$ts$ti$th"
<stdin>:8: space before tab in indent.
A SP and a HT (@%).
<stdin>:9: space before tab in indent.
A SP, a HT and a SP (@%).
<stdin>:12: space before tab in indent.
Seven SP and a HT (@%).
<stdin>:13: space before tab in indent.
Eight SP and a HT (@#%).
<stdin>:14: space before tab in indent.
Seven SP, a HT and a SP (@%).
warning: squelched 5 whitespace errors
warning: 10 lines applied after fixing whitespace errors.
ok 46 - rule=trailing,space,-indent,-tab (attributes)
expecting success of 4124.47 'rule=trailing,space,-indent,-tab,tabwidth=16 (attributes)':
echo "target whitespace=$rule,tabwidth=16" >.gitattributes &&
test_fix "$tt$ts$ti16$th"
<stdin>:8: space before tab in indent.
A SP and a HT (@%).
<stdin>:9: space before tab in indent.
A SP, a HT and a SP (@%).
<stdin>:12: space before tab in indent.
Seven SP and a HT (@%).
<stdin>:13: space before tab in indent.
Eight SP and a HT (@#%).
<stdin>:14: space before tab in indent.
Seven SP, a HT and a SP (@%).
warning: squelched 5 whitespace errors
warning: 10 lines applied after fixing whitespace errors.
ok 47 - rule=trailing,space,-indent,-tab,tabwidth=16 (attributes)
expecting success of 4124.48 'rule=trailing,space,-indent,tab':
git config core.whitespace "$rule" &&
test_fix "$tt$ts$ti$th"
<stdin>:7: tab in indent.
A HT (%).
<stdin>:8: space before tab in indent.
A SP and a HT (@%).
<stdin>:9: space before tab in indent.
A SP, a HT and a SP (@%).
<stdin>:12: space before tab in indent.
Seven SP and a HT (@%).
<stdin>:13: space before tab in indent.
Eight SP and a HT (@#%).
warning: squelched 6 whitespace errors
warning: 11 lines applied after fixing whitespace errors.
ok 48 - rule=trailing,space,-indent,tab
expecting success of 4124.49 'rule=trailing,space,-indent,tab,tabwidth=16':
git config core.whitespace "$rule,tabwidth=16" &&
test_fix "$tt$ts$ti16$th"
<stdin>:7: tab in indent.
A HT (%).
<stdin>:8: space before tab in indent.
A SP and a HT (@%).
<stdin>:9: space before tab in indent.
A SP, a HT and a SP (@%).
<stdin>:12: space before tab in indent.
Seven SP and a HT (@%).
<stdin>:13: space before tab in indent.
Eight SP and a HT (@#%).
warning: squelched 6 whitespace errors
warning: 11 lines applied after fixing whitespace errors.
ok 49 - rule=trailing,space,-indent,tab,tabwidth=16
expecting success of 4124.50 'rule=trailing,space,-indent,tab (attributes)':
git config --unset core.whitespace &&
echo "target whitespace=$rule" >.gitattributes &&
test_fix "$tt$ts$ti$th"
<stdin>:7: tab in indent.
A HT (%).
<stdin>:8: space before tab in indent.
A SP and a HT (@%).
<stdin>:9: space before tab in indent.
A SP, a HT and a SP (@%).
<stdin>:12: space before tab in indent.
Seven SP and a HT (@%).
<stdin>:13: space before tab in indent.
Eight SP and a HT (@#%).
warning: squelched 6 whitespace errors
warning: 11 lines applied after fixing whitespace errors.
ok 50 - rule=trailing,space,-indent,tab (attributes)
expecting success of 4124.51 'rule=trailing,space,-indent,tab,tabwidth=16 (attributes)':
echo "target whitespace=$rule,tabwidth=16" >.gitattributes &&
test_fix "$tt$ts$ti16$th"
<stdin>:7: tab in indent.
A HT (%).
<stdin>:8: space before tab in indent.
A SP and a HT (@%).
<stdin>:9: space before tab in indent.
A SP, a HT and a SP (@%).
<stdin>:12: space before tab in indent.
Seven SP and a HT (@%).
<stdin>:13: space before tab in indent.
Eight SP and a HT (@#%).
warning: squelched 6 whitespace errors
warning: 11 lines applied after fixing whitespace errors.
ok 51 - rule=trailing,space,-indent,tab,tabwidth=16 (attributes)
expecting success of 4124.52 'rule=trailing,space,indent,-tab':
git config core.whitespace "$rule" &&
test_fix "$tt$ts$ti$th"
<stdin>:8: space before tab in indent.
A SP and a HT (@%).
<stdin>:9: space before tab in indent.
A SP, a HT and a SP (@%).
<stdin>:11: indent with spaces.
Eight SP (#).
<stdin>:12: space before tab in indent.
Seven SP and a HT (@%).
<stdin>:13: space before tab in indent.
Eight SP and a HT (@#%).
warning: squelched 8 whitespace errors
warning: 13 lines applied after fixing whitespace errors.
ok 52 - rule=trailing,space,indent,-tab
expecting success of 4124.53 'rule=trailing,space,indent,-tab,tabwidth=16':
git config core.whitespace "$rule,tabwidth=16" &&
test_fix "$tt$ts$ti16$th"
<stdin>:8: space before tab in indent.
A SP and a HT (@%).
<stdin>:9: space before tab in indent.
A SP, a HT and a SP (@%).
<stdin>:12: space before tab in indent.
Seven SP and a HT (@%).
<stdin>:13: space before tab in indent.
Eight SP and a HT (@#%).
<stdin>:14: space before tab in indent.
Seven SP, a HT and a SP (@%).
warning: squelched 6 whitespace errors
warning: 11 lines applied after fixing whitespace errors.
ok 53 - rule=trailing,space,indent,-tab,tabwidth=16
expecting success of 4124.54 'rule=trailing,space,indent,-tab (attributes)':
git config --unset core.whitespace &&
echo "target whitespace=$rule" >.gitattributes &&
test_fix "$tt$ts$ti$th"
<stdin>:8: space before tab in indent.
A SP and a HT (@%).
<stdin>:9: space before tab in indent.
A SP, a HT and a SP (@%).
<stdin>:11: indent with spaces.
Eight SP (#).
<stdin>:12: space before tab in indent.
Seven SP and a HT (@%).
<stdin>:13: space before tab in indent.
Eight SP and a HT (@#%).
warning: squelched 8 whitespace errors
warning: 13 lines applied after fixing whitespace errors.
ok 54 - rule=trailing,space,indent,-tab (attributes)
expecting success of 4124.55 'rule=trailing,space,indent,-tab,tabwidth=16 (attributes)':
echo "target whitespace=$rule,tabwidth=16" >.gitattributes &&
test_fix "$tt$ts$ti16$th"
<stdin>:8: space before tab in indent.
A SP and a HT (@%).
<stdin>:9: space before tab in indent.
A SP, a HT and a SP (@%).
<stdin>:12: space before tab in indent.
Seven SP and a HT (@%).
<stdin>:13: space before tab in indent.
Eight SP and a HT (@#%).
<stdin>:14: space before tab in indent.
Seven SP, a HT and a SP (@%).
warning: squelched 6 whitespace errors
warning: 11 lines applied after fixing whitespace errors.
ok 55 - rule=trailing,space,indent,-tab,tabwidth=16 (attributes)
expecting success of 4124.56 'trailing whitespace & no newline at the end of file':
>target &&
create_patch >patch-file &&
git apply --whitespace=fix patch-file &&
grep "newline$" target &&
grep "^$" target
patch-file:8: trailing whitespace.
A line with trailing whitespace and no newline
warning: 1 line applied after fixing whitespace errors.
A line with trailing whitespace and no newline
ok 56 - trailing whitespace & no newline at the end of file
expecting success of 4124.57 'blank at EOF with --whitespace=fix (1)':
test_might_fail git config --unset core.whitespace &&
rm -f .gitattributes &&
test_write_lines a b c >one &&
git add one &&
test_write_lines a b c >expect &&
{ cat expect && echo; } >one &&
git diff -- one >patch &&
git checkout one &&
git apply --whitespace=fix patch &&
test_cmp expect one
Updated 1 path from the index
patch:9: new blank line at EOF.
+
warning: 1 line adds whitespace errors.
ok 57 - blank at EOF with --whitespace=fix (1)
expecting success of 4124.58 'blank at EOF with --whitespace=fix (2)':
test_write_lines a b c >one &&
git add one &&
test_write_lines a b >expect &&
{ cat expect && test_write_lines "" ""; } >one &&
git diff -- one >patch &&
git checkout one &&
git apply --whitespace=fix patch &&
test_cmp expect one
Updated 1 path from the index
patch:9: new blank line at EOF.
+
warning: 1 line adds whitespace errors.
ok 58 - blank at EOF with --whitespace=fix (2)
expecting success of 4124.59 'blank at EOF with --whitespace=fix (3)':
test_write_lines a b "" >one &&
git add one &&
test_write_lines a c "" >expect &&
{ cat expect && test_write_lines "" ""; } >one &&
git diff -- one >patch &&
git checkout one &&
git apply --whitespace=fix patch &&
test_cmp expect one
Updated 1 path from the index
patch:9: new blank line at EOF.
+
warning: 1 line adds whitespace errors.
ok 59 - blank at EOF with --whitespace=fix (3)
expecting success of 4124.60 'blank at end of hunk, not at EOF with --whitespace=fix':
test_write_lines a b "" "" "" "" "" d >one &&
git add one &&
test_write_lines a b "" "" "" "" "" "" d >expect &&
cp expect one &&
git diff -- one >patch &&
git checkout one &&
git apply --whitespace=fix patch &&
test_cmp expect one
Updated 1 path from the index
ok 60 - blank at end of hunk, not at EOF with --whitespace=fix
expecting success of 4124.61 'blank at EOF with --whitespace=warn':
test_write_lines a b c >one &&
git add one &&
echo >>one &&
cat one >expect &&
git diff -- one >patch &&
git checkout one &&
git apply --whitespace=warn patch 2>error &&
test_cmp expect one &&
grep "new blank line at EOF" error
Updated 1 path from the index
patch:9: new blank line at EOF.
ok 61 - blank at EOF with --whitespace=warn
expecting success of 4124.62 'blank at EOF with --whitespace=error':
test_write_lines a b c >one &&
git add one &&
cat one >expect &&
echo >>one &&
git diff -- one >patch &&
git checkout one &&
test_must_fail git apply --whitespace=error patch 2>error &&
test_cmp expect one &&
grep "new blank line at EOF" error
Updated 1 path from the index
patch:9: new blank line at EOF.
ok 62 - blank at EOF with --whitespace=error
expecting success of 4124.63 'blank but not empty at EOF':
test_write_lines a b c >one &&
git add one &&
echo " " >>one &&
cat one >expect &&
git diff -- one >patch &&
git checkout one &&
git apply --whitespace=warn patch 2>error &&
test_cmp expect one &&
grep "new blank line at EOF" error
Updated 1 path from the index
patch:9: new blank line at EOF.
ok 63 - blank but not empty at EOF
expecting success of 4124.64 'applying beyond EOF requires one non-blank context line':
test_write_lines "" "" "" "" >one &&
git add one &&
echo b >>one &&
git diff -- one >patch &&
git checkout one &&
test_write_lines a "" >one &&
cp one expect &&
test_must_fail git apply --whitespace=fix patch &&
test_cmp expect one &&
test_must_fail git apply --ignore-space-change --whitespace=fix patch &&
test_cmp expect one
Updated 1 path from the index
error: patch failed: one:2
error: one: patch does not apply
error: patch failed: one:2
error: one: patch does not apply
ok 64 - applying beyond EOF requires one non-blank context line
expecting success of 4124.65 'tons of blanks at EOF should not apply':
for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16; do
test_write_lines "" "" "" "" || return 1
done >one &&
git add one &&
echo a >>one &&
git diff -- one >patch &&
>one &&
test_must_fail git apply --whitespace=fix patch &&
test_must_fail git apply --ignore-space-change --whitespace=fix patch
error: patch failed: one:62
error: one: patch does not apply
error: patch failed: one:62
error: one: patch does not apply
ok 65 - tons of blanks at EOF should not apply
expecting success of 4124.66 'missing blank line at end with --whitespace=fix':
echo a >one &&
echo >>one &&
git add one &&
echo b >>one &&
cp one expect &&
git diff -- one >patch &&
echo a >one &&
cp one saved-one &&
test_must_fail git apply patch &&
git apply --whitespace=fix patch &&
test_cmp expect one &&
mv saved-one one &&
git apply --ignore-space-change --whitespace=fix patch &&
test_cmp expect one
error: patch failed: one:1
error: one: patch does not apply
ok 66 - missing blank line at end with --whitespace=fix
expecting success of 4124.67 'two missing blank lines at end with --whitespace=fix':
test_write_lines a "" b c >one &&
cp one no-blank-lines &&
test_write_lines "" "" >>one &&
git add one &&
echo d >>one &&
cp one expect &&
echo >>one &&
git diff -- one >patch &&
cp no-blank-lines one &&
test_must_fail git apply patch &&
git apply --whitespace=fix patch &&
test_cmp expect one &&
mv no-blank-lines one &&
test_must_fail git apply patch &&
git apply --ignore-space-change --whitespace=fix patch &&
test_cmp expect one
error: patch failed: one:4
error: one: patch does not apply
patch:10: new blank line at EOF.
+
warning: 1 line adds whitespace errors.
error: patch failed: one:4
error: one: patch does not apply
patch:10: new blank line at EOF.
+
warning: 1 line adds whitespace errors.
ok 67 - two missing blank lines at end with --whitespace=fix
expecting success of 4124.68 'missing blank line at end, insert before end, --whitespace=fix':
test_write_lines a "" >one &&
git add one &&
test_write_lines b a "" >one &&
cp one expect &&
git diff -- one >patch &&
echo a >one &&
test_must_fail git apply patch &&
git apply --whitespace=fix patch &&
test_cmp expect one
error: patch failed: one:1
error: one: patch does not apply
ok 68 - missing blank line at end, insert before end, --whitespace=fix
expecting success of 4124.69 'shrink file with tons of missing blanks at end of file':
test_write_lines a b c >one &&
cp one no-blank-lines &&
for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16; do
test_write_lines "" "" "" "" || return 1
done >>one &&
git add one &&
echo a >one &&
cp one expect &&
git diff -- one >patch &&
cp no-blank-lines one &&
test_must_fail git apply patch &&
git apply --whitespace=fix patch &&
test_cmp expect one &&
mv no-blank-lines one &&
git apply --ignore-space-change --whitespace=fix patch &&
test_cmp expect one
error: patch failed: one:1
error: one: patch does not apply
ok 69 - shrink file with tons of missing blanks at end of file
expecting success of 4124.70 'missing blanks at EOF must only match blank lines':
test_write_lines a b >one &&
git add one &&
test_write_lines c d >>one &&
git diff -- one >patch &&
echo a >one &&
test_must_fail git apply patch &&
test_must_fail git apply --whitespace=fix patch &&
test_must_fail git apply --ignore-space-change --whitespace=fix patch
error: patch failed: one:1
error: one: patch does not apply
error: patch failed: one:1
error: one: patch does not apply
error: patch failed: one:1
error: one: patch does not apply
ok 70 - missing blanks at EOF must only match blank lines
expecting success of 4124.71 'missing blank line should match context line with spaces':
git add one &&
echo d >>one &&
git diff -- one >patch &&
test_write_lines a b c >one &&
cp one expect &&
test_write_lines "" d >>expect &&
git add one &&
git apply --whitespace=fix patch &&
test_cmp expect one
patch:8: trailing whitespace.
warning: 1 line adds whitespace errors.
ok 71 - missing blank line should match context line with spaces
expecting success of 4124.72 'same, but with the --ignore-space-option':
git add one &&
echo d >>one &&
cp one expect &&
git diff -- one >patch &&
test_write_lines a b c >one &&
git add one &&
git checkout-index -f one &&
git apply --ignore-space-change --whitespace=fix patch &&
test_cmp expect one
patch:8: trailing whitespace.
warning: 1 line adds whitespace errors.
ok 72 - same, but with the --ignore-space-option
expecting success of 4124.73 'same, but with CR-LF line endings && cr-at-eol set':
git config core.whitespace cr-at-eol &&
printf "a\r\n" >one &&
printf "b\r\n" >>one &&
printf "c\r\n" >>one &&
cp one save-one &&
printf " \r\n" >>one &&
git add one &&
printf "d\r\n" >>one &&
cp one expect &&
git diff -- one >patch &&
mv save-one one &&
git apply --ignore-space-change --whitespace=fix patch &&
test_cmp expect one
patch:8: trailing whitespace.
warning: 1 line adds whitespace errors.
ok 73 - same, but with CR-LF line endings && cr-at-eol set
expecting success of 4124.74 'CR-LF line endings && add line && text=auto':
git config --unset core.whitespace &&
printf "a\r\n" >one &&
cp one save-one &&
git add one &&
printf "b\r\n" >>one &&
cp one expect &&
git diff -- one >patch &&
mv save-one one &&
echo "one text=auto" >.gitattributes &&
git apply patch &&
test_cmp expect one
ok 74 - CR-LF line endings && add line && text=auto
expecting success of 4124.75 'CR-LF line endings && change line && text=auto':
printf "a\r\n" >one &&
cp one save-one &&
git add one &&
printf "b\r\n" >one &&
cp one expect &&
git diff -- one >patch &&
mv save-one one &&
echo "one text=auto" >.gitattributes &&
git apply patch &&
test_cmp expect one
ok 75 - CR-LF line endings && change line && text=auto
expecting success of 4124.76 'LF in repo, CRLF in worktree && change line && text=auto':
printf "a\n" >one &&
git add one &&
printf "b\r\n" >one &&
git diff -- one >patch &&
printf "a\r\n" >one &&
echo "one text=auto" >.gitattributes &&
git -c core.eol=CRLF apply patch &&
printf "b\r\n" >expect &&
test_cmp expect one
warning: in the working copy of 'one', CRLF will be replaced by LF the next time Git touches it
ok 76 - LF in repo, CRLF in worktree && change line && text=auto
expecting success of 4124.77 'whitespace=fix to expand':
qz_to_tab_space >preimage <<-\EOF &&
QQa
QQb
QQc
ZZZZZZZZZZZZZZZZd
QQe
QQf
QQg
EOF
qz_to_tab_space >patch <<-\EOF &&
diff --git a/preimage b/preimage
--- a/preimage
+++ b/preimage
@@ -1,7 +1,6 @@
QQa
QQb
QQc
-QQd
QQe
QQf
QQg
EOF
git -c core.whitespace=tab-in-indent apply --whitespace=fix patch
patch:5: tab in indent.
a
patch:6: tab in indent.
b
patch:7: tab in indent.
c
patch:9: tab in indent.
e
patch:10: tab in indent.
f
warning: squelched 1 whitespace error
warning: 6 lines add whitespace errors.
ok 77 - whitespace=fix to expand
expecting success of 4124.78 'whitespace check skipped for excluded paths':
git config core.whitespace blank-at-eol &&
>used &&
>unused &&
git add used unused &&
echo "used" >used &&
echo "unused " >unused &&
git diff-files -p used unused >patch &&
git apply --include=used --stat --whitespace=error <patch
used | 1 +
1 file changed, 1 insertion(+)
ok 78 - whitespace check skipped for excluded paths
# passed all 78 test(s)
1..78
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4152-am-subjects.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4152-am-subjects/.git/
expecting success of 4152.1 'setup baseline commit':
test_commit baseline file
[master (root-commit) 2f64c43] baseline
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
ok 1 - setup baseline commit
expecting success of 4152.2 'create patches with short subject':
git reset --hard baseline &&
echo $type >file &&
git commit -a -m "$subject" &&
git format-patch -1 --stdout >$type.patch &&
git format-patch -1 --stdout -k >$type-k.patch
HEAD is now at 2f64c43 baseline
[master 5d59063] short subject
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 2 - create patches with short subject
expecting success of 4152.3 'create patches with long subject':
git reset --hard baseline &&
echo $type >file &&
git commit -a -m "$subject" &&
git format-patch -1 --stdout >$type.patch &&
git format-patch -1 --stdout -k >$type-k.patch
HEAD is now at 2f64c43 baseline
[master 512ba33] this is a long subject that is virtually guaranteed to require wrapping via format-patch if it is all going to appear on a single line
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 3 - create patches with long subject
expecting success of 4152.4 'create patches with multiline subject':
git reset --hard baseline &&
echo $type >file &&
git commit -a -m "$subject" &&
git format-patch -1 --stdout >$type.patch &&
git format-patch -1 --stdout -k >$type-k.patch
HEAD is now at 2f64c43 baseline
[master 230e818] this is a long subject that is virtually guaranteed to require wrapping via format-patch if it is all going to appear on a single line
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 4 - create patches with multiline subject
expecting success of 4152.5 'short subject preserved (format-patch | am)':
check_subject short
HEAD is now at 2f64c43 baseline
Applying: short subject
ok 5 - short subject preserved (format-patch | am)
expecting success of 4152.6 'short subject preserved (format-patch -k | am)':
check_subject short-k
HEAD is now at 2f64c43 baseline
Applying: short subject
ok 6 - short subject preserved (format-patch -k | am)
expecting success of 4152.7 'short subject preserved (format-patch -k | am -k)':
check_subject short-k -k
HEAD is now at 2f64c43 baseline
Applying: short subject
ok 7 - short subject preserved (format-patch -k | am -k)
expecting success of 4152.8 'long subject preserved (format-patch | am)':
check_subject long
HEAD is now at 2f64c43 baseline
Applying: this is a long subject that is virtually guaranteed to require wrapping via format-patch if it is all going to appear on a single line
ok 8 - long subject preserved (format-patch | am)
expecting success of 4152.9 'long subject preserved (format-patch -k | am)':
check_subject long-k
HEAD is now at 2f64c43 baseline
Applying: this is a long subject that is virtually guaranteed to require wrapping via format-patch if it is all going to appear on a single line
ok 9 - long subject preserved (format-patch -k | am)
expecting success of 4152.10 'long subject preserved (format-patch -k | am -k)':
check_subject long-k -k
HEAD is now at 2f64c43 baseline
Applying: this is a long subject that is virtually guaranteed to require wrapping via format-patch if it is all going to appear on a single line
ok 10 - long subject preserved (format-patch -k | am -k)
expecting success of 4152.11 'multiline subject unwrapped (format-patch | am)':
check_subject multiline
HEAD is now at 2f64c43 baseline
Applying: this is a long subject that is virtually guaranteed to require wrapping via format-patch if it is all going to appear on a single line
ok 11 - multiline subject unwrapped (format-patch | am)
expecting success of 4152.12 'multiline subject unwrapped (format-patch -k | am)':
check_subject multiline-k
HEAD is now at 2f64c43 baseline
Applying: this is a long subject that is virtually guaranteed to require wrapping via format-patch if it is all going to appear on a single line
ok 12 - multiline subject unwrapped (format-patch -k | am)
expecting success of 4152.13 'multiline subject preserved (format-patch -k | am -k)':
check_subject multiline-k -k
HEAD is now at 2f64c43 baseline
Applying: this is a long subject that is virtually guaranteed
ok 13 - multiline subject preserved (format-patch -k | am -k)
# passed all 13 test(s)
1..13
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4151-am-abort.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4151-am-abort/.git/
expecting success of 4151.1 'setup':
test_write_lines a b c d e f g >file-1 &&
cp file-1 file-2 &&
test_tick &&
git add file-1 file-2 &&
git commit -m initial &&
git tag initial &&
git format-patch --stdout --root initial >initial.patch &&
for i in 2 3 4 5 6
do
echo $i >>file-1 &&
echo $i >otherfile-$i &&
git add otherfile-$i &&
test_tick &&
git commit -a -m $i || return 1
done &&
git branch changes &&
git format-patch --no-numbered initial &&
git checkout -b conflicting initial &&
echo different >>file-1 &&
echo whatever >new-file &&
git add file-1 new-file &&
git commit -m different &&
git checkout -b side initial &&
echo local change >file-2-expect
[master (root-commit) 1732241] initial
Author: A U Thor <author@example.com>
2 files changed, 14 insertions(+)
create mode 100644 file-1
create mode 100644 file-2
[master a485f10] 2
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 otherfile-2
[master b72e0d7] 3
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 otherfile-3
[master f1dbda2] 4
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 otherfile-4
[master 73a4960] 5
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 otherfile-5
[master 87a053c] 6
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 otherfile-6
0001-2.patch
0002-3.patch
0003-4.patch
0004-5.patch
0005-6.patch
Switched to a new branch 'conflicting'
[conflicting c626628] different
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
create mode 100644 new-file
Switched to a new branch 'side'
ok 1 - setup
expecting success of 4151.2 'am stops at a patch that does not apply':
git reset --hard initial &&
cp file-2-expect file-2 &&
test_must_fail git am$with3 000[1245]-*.patch &&
git log --pretty=tformat:%s >actual &&
test_write_lines 3 2 initial >expect &&
test_cmp expect actual
HEAD is now at 1732241 initial
error: patch failed: file-1:8
error: file-1: patch does not apply
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Applying: 2
Applying: 3
Applying: 5
Patch failed at 0003 5
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
ok 2 - am stops at a patch that does not apply
expecting success of 4151.3 'am --skip continue after failed am':
test_must_fail git am$with3 --skip >output &&
test_i18ngrep "^Applying: 6$" output &&
test_cmp file-2-expect file-2 &&
test ! -f .git/MERGE_RR
error: patch failed: file-1:9
error: file-1: patch does not apply
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Applying: 6
ok 3 - am --skip continue after failed am
expecting success of 4151.4 'am --abort goes back after failed am':
git am --abort &&
git rev-parse HEAD >actual &&
git rev-parse initial >expect &&
test_cmp expect actual &&
test_cmp file-2-expect file-2 &&
git diff-index --exit-code --cached HEAD &&
test ! -f .git/MERGE_RR
ok 4 - am --abort goes back after failed am
expecting success of 4151.5 'am -3 stops at a patch that does not apply':
git reset --hard initial &&
cp file-2-expect file-2 &&
test_must_fail git am$with3 000[1245]-*.patch &&
git log --pretty=tformat:%s >actual &&
test_write_lines 3 2 initial >expect &&
test_cmp expect actual
HEAD is now at 1732241 initial
Applying: 2
Applying: 3
Applying: 5
Using index info to reconstruct a base tree...
M file-1
Falling back to patching base and 3-way merge...
Merging:
62dd7f8 3
virtual 5
found 1 common ancestor:
virtual 2e4b8a989c579cac9d3cc1897320a3e27805d080
Auto-merging file-1
CONFLICT (content): Merge conflict in file-1
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0003 5
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
ok 5 - am -3 stops at a patch that does not apply
expecting success of 4151.6 'am -3 --skip continue after failed am -3':
test_must_fail git am$with3 --skip >output &&
test_i18ngrep "^Applying: 6$" output &&
test_cmp file-2-expect file-2 &&
test ! -f .git/MERGE_RR
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Applying: 6
ok 6 - am -3 --skip continue after failed am -3
expecting success of 4151.7 'am --abort goes back after failed am -3':
git am --abort &&
git rev-parse HEAD >actual &&
git rev-parse initial >expect &&
test_cmp expect actual &&
test_cmp file-2-expect file-2 &&
git diff-index --exit-code --cached HEAD &&
test ! -f .git/MERGE_RR
ok 7 - am --abort goes back after failed am -3
expecting success of 4151.8 'am -3 --skip removes otherfile-4':
git reset --hard initial &&
test_must_fail git am -3 0003-*.patch &&
test 3 -eq $(git ls-files -u | wc -l) &&
test 4 = "$(cat otherfile-4)" &&
git am --skip &&
test_cmp_rev initial HEAD &&
test -z "$(git ls-files -u)" &&
test_path_is_missing otherfile-4
HEAD is now at 1732241 initial
Applying: 4
Using index info to reconstruct a base tree...
M file-1
Falling back to patching base and 3-way merge...
Merging:
1732241 initial
virtual 4
found 1 common ancestor:
virtual ca28a003e7272ffcb030f00a3e373a07e49ce912
Auto-merging file-1
CONFLICT (content): Merge conflict in file-1
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 4
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
ok 8 - am -3 --skip removes otherfile-4
expecting success of 4151.9 'am -3 --abort removes otherfile-4':
git reset --hard initial &&
test_must_fail git am -3 0003-*.patch &&
test 3 -eq $(git ls-files -u | wc -l) &&
test 4 = "$(cat otherfile-4)" &&
git am --abort &&
test_cmp_rev initial HEAD &&
test -z "$(git ls-files -u)" &&
test_path_is_missing otherfile-4
HEAD is now at 1732241 initial
Applying: 4
Using index info to reconstruct a base tree...
M file-1
Falling back to patching base and 3-way merge...
Merging:
1732241 initial
virtual 4
found 1 common ancestor:
virtual ca28a003e7272ffcb030f00a3e373a07e49ce912
Auto-merging file-1
CONFLICT (content): Merge conflict in file-1
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 4
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
ok 9 - am -3 --abort removes otherfile-4
expecting success of 4151.10 'am --abort will keep the local commits intact':
test_must_fail git am 0004-*.patch &&
test_commit unrelated &&
git rev-parse HEAD >expect &&
git am --abort &&
git rev-parse HEAD >actual &&
test_cmp expect actual
error: patch failed: file-1:8
error: file-1: patch does not apply
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Applying: 5
Patch failed at 0001 5
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
[side f386b22] unrelated
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 unrelated.t
warning: You seem to have moved HEAD since the last 'am' failure.
Not rewinding to ORIG_HEAD
ok 10 - am --abort will keep the local commits intact
expecting success of 4151.11 'am --abort will keep dirty index intact':
git reset --hard initial &&
echo dirtyfile >dirtyfile &&
cp dirtyfile dirtyfile.expected &&
git add dirtyfile &&
test_must_fail git am 0001-*.patch &&
test_cmp_rev initial HEAD &&
test_path_is_file dirtyfile &&
test_cmp dirtyfile.expected dirtyfile &&
git am --abort &&
test_cmp_rev initial HEAD &&
test_path_is_file dirtyfile &&
test_cmp dirtyfile.expected dirtyfile
HEAD is now at 1732241 initial
fatal: Dirty index: cannot apply patches (dirty: dirtyfile)
ok 11 - am --abort will keep dirty index intact
expecting success of 4151.12 'am -3 stops on conflict on unborn branch':
git checkout -f --orphan orphan &&
git reset &&
rm -f otherfile-4 &&
test_must_fail git am -3 0003-*.patch &&
test 2 -eq $(git ls-files -u | wc -l) &&
test 4 = "$(cat otherfile-4)"
Switched to a new branch 'orphan'
Applying: 4
Using index info to reconstruct a base tree...
A file-1
Falling back to patching base and 3-way merge...
Merging:
virtual HEAD
virtual 4
found 1 common ancestor:
virtual ca28a003e7272ffcb030f00a3e373a07e49ce912
CONFLICT (modify/delete): file-1 deleted in HEAD and modified in 4. Version 4 of file-1 left in tree at file-1~4.
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 4
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
ok 12 - am -3 stops on conflict on unborn branch
expecting success of 4151.13 'am -3 --skip clears index on unborn branch':
test_path_is_dir .git/rebase-apply &&
echo tmpfile >tmpfile &&
git add tmpfile &&
git am --skip &&
test -z "$(git ls-files)" &&
test_path_is_missing otherfile-4 &&
test_path_is_missing tmpfile
ok 13 - am -3 --skip clears index on unborn branch
expecting success of 4151.14 'am -3 --abort removes otherfile-4 on unborn branch':
git checkout -f --orphan orphan &&
git reset &&
rm -f otherfile-4 file-1 &&
test_must_fail git am -3 0003-*.patch &&
test 2 -eq $(git ls-files -u | wc -l) &&
test 4 = "$(cat otherfile-4)" &&
git am --abort &&
test -z "$(git ls-files -u)" &&
test_path_is_missing otherfile-4
Switched to a new branch 'orphan'
Applying: 4
Using index info to reconstruct a base tree...
A file-1
Falling back to patching base and 3-way merge...
Merging:
virtual HEAD
virtual 4
found 1 common ancestor:
virtual ca28a003e7272ffcb030f00a3e373a07e49ce912
CONFLICT (modify/delete): file-1 deleted in HEAD and modified in 4. Version 4 of file-1 left in tree.
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 4
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
ok 14 - am -3 --abort removes otherfile-4 on unborn branch
expecting success of 4151.15 'am -3 --abort on unborn branch removes applied commits':
git checkout -f --orphan orphan &&
git reset &&
rm -f otherfile-4 otherfile-2 file-1 file-2 &&
test_must_fail git am -3 initial.patch 0003-*.patch &&
test 3 -eq $(git ls-files -u | wc -l) &&
test 4 = "$(cat otherfile-4)" &&
git am --abort &&
test -z "$(git ls-files -u)" &&
test_path_is_missing otherfile-4 &&
test_path_is_missing file-1 &&
test_path_is_missing file-2 &&
test 0 -eq $(git log --oneline 2>/dev/null | wc -l) &&
test refs/heads/orphan = "$(git symbolic-ref HEAD)"
Switched to a new branch 'orphan'
applying to an empty history
Applying: initial
Applying: 4
Using index info to reconstruct a base tree...
M file-1
Falling back to patching base and 3-way merge...
Merging:
03bb45f initial
virtual 4
found 1 common ancestor:
virtual ca28a003e7272ffcb030f00a3e373a07e49ce912
Auto-merging file-1
CONFLICT (content): Merge conflict in file-1
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0002 4
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
ok 15 - am -3 --abort on unborn branch removes applied commits
expecting success of 4151.16 'am --abort on unborn branch will keep local commits intact':
git checkout -f --orphan orphan &&
git reset &&
test_must_fail git am 0004-*.patch &&
test_commit unrelated2 &&
git rev-parse HEAD >expect &&
git am --abort &&
git rev-parse HEAD >actual &&
test_cmp expect actual
Switched to a new branch 'orphan'
error: file-1: does not exist in index
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Applying: 5
Patch failed at 0001 5
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
[orphan (root-commit) 823805c] unrelated2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 unrelated2.t
warning: You seem to have moved HEAD since the last 'am' failure.
Not rewinding to ORIG_HEAD
ok 16 - am --abort on unborn branch will keep local commits intact
expecting success of 4151.17 'am --skip leaves index stat info alone':
git checkout -f --orphan skip-stat-info &&
git reset &&
test_commit skip-should-be-untouched &&
test-tool chmtime =0 skip-should-be-untouched.t &&
git update-index --refresh &&
git diff-files --exit-code --quiet &&
test_must_fail git am 0001-*.patch &&
git am --skip &&
git diff-files --exit-code --quiet
Switched to a new branch 'skip-stat-info'
[skip-stat-info (root-commit) 2297a89] skip-should-be-untouched
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 skip-should-be-untouched.t
error: file-1: does not exist in index
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Applying: 2
Patch failed at 0001 2
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
ok 17 - am --skip leaves index stat info alone
expecting success of 4151.18 'am --abort leaves index stat info alone':
git checkout -f --orphan abort-stat-info &&
git reset &&
test_commit abort-should-be-untouched &&
test-tool chmtime =0 abort-should-be-untouched.t &&
git update-index --refresh &&
git diff-files --exit-code --quiet &&
test_must_fail git am 0001-*.patch &&
git am --abort &&
git diff-files --exit-code --quiet
Switched to a new branch 'abort-stat-info'
[abort-stat-info (root-commit) 3038985] abort-should-be-untouched
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 abort-should-be-untouched.t
error: file-1: does not exist in index
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Applying: 2
Patch failed at 0001 2
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
ok 18 - am --abort leaves index stat info alone
expecting success of 4151.19 'git am --abort return failed exit status when it fails':
test_when_finished "rm -rf file-2/ && git reset --hard && git am --abort" &&
git checkout changes &&
git format-patch -1 --stdout conflicting >changes.mbox &&
test_must_fail git am --3way changes.mbox &&
git rm file-2 &&
mkdir file-2 &&
echo precious >file-2/somefile &&
test_must_fail git am --abort &&
test_path_is_dir file-2/
Switched to branch 'changes'
Applying: different
Using index info to reconstruct a base tree...
M file-1
Falling back to patching base and 3-way merge...
Merging:
87a053c 6
virtual different
found 1 common ancestor:
virtual 25da5ce2d7767dfb0047e4532ae9dd5a1a8d8eb6
Auto-merging file-1
CONFLICT (content): Merge conflict in file-1
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 different
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
rm 'file-2'
error: Updating 'file-2' would lose untracked files in it
fatal: failed to clean index
HEAD is now at 87a053c 6
ok 19 - git am --abort return failed exit status when it fails
expecting success of 4151.20 'git am --abort cleans relevant files':
git checkout changes &&
git format-patch -1 --stdout conflicting >changes.mbox &&
test_must_fail git am --3way changes.mbox &&
test_path_is_file new-file &&
echo further changes >>file-1 &&
echo change other file >>file-2 &&
# Abort, and expect the files touched by am to be reverted
git am --abort &&
test_path_is_missing new-file &&
# Files not involved in am operation are left modified
git diff --name-only changes >actual &&
test_write_lines file-2 >expect &&
test_cmp expect actual
Already on 'changes'
Applying: different
Using index info to reconstruct a base tree...
M file-1
Falling back to patching base and 3-way merge...
Merging:
87a053c 6
virtual different
found 1 common ancestor:
virtual 25da5ce2d7767dfb0047e4532ae9dd5a1a8d8eb6
Auto-merging file-1
CONFLICT (content): Merge conflict in file-1
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 different
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
ok 20 - git am --abort cleans relevant files
# passed all 20 test(s)
1..20
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4153-am-resume-override-opts.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4153-am-resume-override-opts/.git/
expecting success of 4153.1 'setup':
test_commit initial file &&
test_commit first file &&
git checkout initial &&
git mv file file2 &&
test_tick &&
git commit -m renamed-file &&
git tag renamed-file &&
git checkout -b side initial &&
test_commit side1 file &&
test_commit side2 file &&
format_patch side1 &&
format_patch side2
[master (root-commit) b6d2089] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
[master 3aaf771] first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Note: switching to 'initial'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at b6d2089 initial
[detached HEAD 5e7fd8e] renamed-file
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
rename file => file2 (100%)
Previous HEAD position was 5e7fd8e renamed-file
Switched to a new branch 'side'
[side ccf21da] side1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[side 58bd40e] side2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 1 - setup
checking prerequisite: TTY
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-TTY" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-TTY" &&
test_have_prereq PERL &&
# Reading from the pty master seems to get stuck _sometimes_
# on Mac OS X 10.5.0, using Perl 5.10.0 or 5.8.9.
#
# Reproduction recipe: run
#
# i=0
# while ./test-terminal.perl echo hi $i
# do
# : $((i = $i + 1))
# done
#
# After 2000 iterations or so it hangs.
# https://rt.cpan.org/Ticket/Display.html?id=65692
#
test "$(uname -s)" != Darwin &&
perl "$TEST_DIRECTORY"/test-terminal.perl \
sh -c "test -t 1 && test -t 2"
)
prerequisite TTY ok
expecting success of 4153.2 '--3way overrides --no-3way':
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout renamed-file &&
# Applying side1 will fail as the file has been renamed.
test_must_fail git am --no-3way side[12].eml &&
test_path_is_dir .git/rebase-apply &&
test_cmp_rev renamed-file HEAD &&
test -z "$(git ls-files -u)" &&
# Applying side1 with am --3way will succeed due to the threeway-merge.
# Applying side2 will fail as --3way does not apply to it.
test_must_fail test_terminal git am --3way </dev/zero &&
test_path_is_dir .git/rebase-apply &&
test side1 = "$(cat file2)"
HEAD is now at 58bd40e side2
Note: switching to 'renamed-file'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 5e7fd8e renamed-file
error: file: does not exist in index
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Applying: side1
Patch failed at 0001 side1
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
Applying: side1
Using index info to reconstruct a base tree...
A file
Falling back to patching base and 3-way merge...
Merging:
5e7fd8e renamed-file
virtual side1
found 1 common ancestor:
virtual 99f2e3e1cb15f9b52fa29f66d380dda061d917ab
Applying: side2
error: file: does not exist in index
Patch failed at 0002 side2
[33mhint: Use 'git am --show-current-patch=diff' to see the failed patch[m
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
died of signal 15 at /<<PKGBUILDDIR>>/t/test-terminal.perl line 35.
ok 2 - --3way overrides --no-3way
expecting success of 4153.3 '--no-quiet overrides --quiet':
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout first &&
# Applying side1 will be quiet.
test_must_fail git am --quiet side[123].eml >out &&
test_path_is_dir .git/rebase-apply &&
test_i18ngrep ! "^Applying: " out &&
echo side1 >file &&
git add file &&
# Applying side1 will not be quiet.
# Applying side2 will be quiet.
git am --no-quiet --continue >out &&
echo "Applying: side1" >expected &&
test_cmp expected out
HEAD is now at 8e08c98 side1
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
8e08c98 side1
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 8e08c98
HEAD is now at 3aaf771 first
error: patch failed: file:1
error: file: patch does not apply
hint: Use 'git am --show-current-patch=diff' to see the failed patch
ok 3 - --no-quiet overrides --quiet
expecting success of 4153.4 '--signoff overrides --no-signoff':
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout first &&
test_must_fail git am --no-signoff side[12].eml &&
test_path_is_dir .git/rebase-apply &&
echo side1 >file &&
git add file &&
git am --signoff --continue &&
# Applied side1 will be signed off
echo "Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>" >expected &&
git cat-file commit HEAD^ | grep "Signed-off-by:" >actual &&
test_cmp expected actual &&
# Applied side2 will not be signed off
test $(git cat-file commit HEAD | grep -c "Signed-off-by:") -eq 0
HEAD is now at 1d25943 side2
Warning: you are leaving 2 commits behind, not connected to
any of your branches:
1d25943 side2
0400be0 side1
If you want to keep them by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 1d25943
HEAD is now at 3aaf771 first
error: patch failed: file:1
error: file: patch does not apply
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Applying: side1
Patch failed at 0001 side1
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
Applying: side1
Applying: side2
ok 4 - --signoff overrides --no-signoff
expecting success of 4153.5 '--reject overrides --no-reject':
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout first &&
rm -f file.rej &&
test_must_fail git am --no-reject side1.eml &&
test_path_is_dir .git/rebase-apply &&
test_path_is_missing file.rej &&
test_must_fail test_terminal git am --reject </dev/zero &&
test_path_is_dir .git/rebase-apply &&
test_path_is_file file.rej
HEAD is now at 4f3810f side2
Warning: you are leaving 2 commits behind, not connected to
any of your branches:
4f3810f side2
deca85c side1
If you want to keep them by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 4f3810f
HEAD is now at 3aaf771 first
error: patch failed: file:1
error: file: patch does not apply
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Applying: side1
Patch failed at 0001 side1
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
Applying: side1
Patch failed at 0001 side1
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
Checking patch file...
error: while searching for:
initial
error: patch failed: file:1
Applying patch file with 1 reject...
Rejected hunk #1.
[33mhint: Use 'git am --show-current-patch=diff' to see the failed patch[m
died of signal 15 at /<<PKGBUILDDIR>>/t/test-terminal.perl line 35.
ok 5 - --reject overrides --no-reject
# passed all 5 test(s)
1..5
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4201-shortlog.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4201-shortlog/.git/
expecting success of 4201.1 'setup':
test_tick &&
echo 1 >a1 &&
git add a1 &&
tree=$(git write-tree) &&
commit=$(printf "%s\n" "Test" "" | git commit-tree "$tree") &&
git update-ref HEAD "$commit" &&
echo 2 >a1 &&
git commit --quiet -m "This is a very, very long first line for the commit message to see if it is wrapped correctly" a1 &&
# test if the wrapping is still valid
# when replacing all is by treble clefs.
echo 3 >a1 &&
git commit --quiet -m "$(
echo "This is a very, very long first line for the commit message to see if it is wrapped correctly" |
sed "s/i/1234/g" |
tr 1234 "\360\235\204\236")" a1 &&
# now fsck up the utf8
git config i18n.commitencoding non-utf-8 &&
echo 4 >a1 &&
git commit --quiet -m "$(
echo "This is a very, very long first line for the commit message to see if it is wrapped correctly" |
sed "s/i/1234/g" |
tr 1234 "\370\235\204\236")" a1 &&
echo 5 >a1 &&
git commit --quiet -m "a 12 34 56 78" a1 &&
echo 6 >a1 &&
git commit --quiet -m "Commit by someone else" \
--author="Someone else <not!me>" a1 &&
cat >expect.template <<-\EOF
A U Thor (5):
SUBJECT
SUBJECT
SUBJECT
SUBJECT
SUBJECT
Someone else (1):
SUBJECT
EOF
ok 1 - setup
expecting success of 4201.2 'default output format':
git shortlog HEAD >log &&
fuzz log >log.predictable &&
test_cmp expect.template log.predictable
ok 2 - default output format
expecting success of 4201.3 'pretty format':
sed s/SUBJECT/OBJECT_NAME/ expect.template >expect &&
git shortlog --format="%H" HEAD >log &&
fuzz log >log.predictable &&
test_cmp expect log.predictable
ok 3 - pretty format
expecting success of 4201.4 'pretty format (with --date)':
sed "s/SUBJECT/2005-04-07 OBJECT_NAME/" expect.template >expect &&
git shortlog --format="%ad %H" --date=short HEAD >log &&
fuzz log >log.predictable &&
test_cmp expect log.predictable
ok 4 - pretty format (with --date)
expecting success of 4201.5 '--abbrev':
sed s/SUBJECT/OBJID/ expect.template >expect &&
git shortlog --format="%h" --abbrev=35 HEAD >log &&
fuzz log >log.predictable &&
test_cmp expect log.predictable
ok 5 - --abbrev
expecting success of 4201.6 'output from user-defined format is re-wrapped':
sed "s/SUBJECT/two lines/" expect.template >expect &&
git shortlog --format="two%nlines" HEAD >log &&
fuzz log >log.predictable &&
test_cmp expect log.predictable
ok 6 - output from user-defined format is re-wrapped
expecting success of 4201.7 'shortlog wrapping':
cat >expect <<\EOF &&
A U Thor (5):
Test
This is a very, very long first line for the commit message to see if
it is wrapped correctly
Th𝄞s 𝄞s a very, very long f𝄞rst l𝄞ne for the comm𝄞t message to see 𝄞f
𝄞t 𝄞s wrapped correctly
a 12 34
56 78
Someone else (1):
Commit by someone else
EOF
git shortlog -w HEAD >out &&
test_cmp expect out
ok 7 - shortlog wrapping
expecting success of 4201.8 'shortlog from non-git directory':
git log --no-expand-tabs HEAD >log &&
GIT_DIR=non-existing git shortlog -w <log >out &&
test_cmp expect out
ok 8 - shortlog from non-git directory
expecting success of 4201.9 'shortlog can read --format=raw output':
git log --format=raw HEAD >log &&
GIT_DIR=non-existing git shortlog -w <log >out &&
test_cmp expect out
ok 9 - shortlog can read --format=raw output
expecting success of 4201.10 'shortlog from non-git directory refuses extra arguments':
test_must_fail env GIT_DIR=non-existing git shortlog foo 2>out &&
test_i18ngrep "too many arguments" out
error: too many arguments given outside repository
ok 10 - shortlog from non-git directory refuses extra arguments
expecting success of 4201.11 'shortlog should add newline when input line matches wraplen':
cat >expect <<\EOF &&
A U Thor (2):
bbbbbbbbbbbbbbbbbb: bbbbbbbb bbb bbbb bbbbbbb bb bbbb bbb bbbbb bbbbbb
aaaaaaaaaaaaaaaaaaaaaa: aaaaaa aaaaaaaaaa aaaa aaaaaaaa aa aaaa aa aaa
EOF
git shortlog -w >out <<\EOF &&
commit 0000000000000000000000000000000000000001
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
aaaaaaaaaaaaaaaaaaaaaa: aaaaaa aaaaaaaaaa aaaa aaaaaaaa aa aaaa aa aaa
commit 0000000000000000000000000000000000000002
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
bbbbbbbbbbbbbbbbbb: bbbbbbbb bbb bbbb bbbbbbb bb bbbb bbb bbbbb bbbbbb
EOF
test_cmp expect out
ok 11 - shortlog should add newline when input line matches wraplen
expecting success of 4201.12 'shortlog encoding':
git reset --hard "$commit" &&
git config --unset i18n.commitencoding &&
echo 2 > a1 &&
git commit --quiet -m "$MSG1" --author="$DSCHOE" a1 &&
git config i18n.commitencoding "ISO8859-1" &&
echo 3 > a1 &&
git commit --quiet -m "$(iconvfromutf8toiso88591 "$MSG2")" \
--author="$(iconvfromutf8toiso88591 "$DSCHOE")" a1 &&
git config --unset i18n.commitencoding &&
git shortlog HEAD~2.. > out &&
test_cmp expect out
HEAD is now at aa97132 Test
ok 12 - shortlog encoding
expecting success of 4201.13 'shortlog with revision pseudo options':
git shortlog --all &&
git shortlog --branches &&
git shortlog --exclude=refs/heads/m* --all
A U Thor (1):
Test
Jöhännës "Dschö" Schindëlin (2):
set a1 to 2 and some non-ASCII chars: Äßø
set a1 to 3 and some non-ASCII chars: áæï
A U Thor (1):
Test
Jöhännës "Dschö" Schindëlin (2):
set a1 to 2 and some non-ASCII chars: Äßø
set a1 to 3 and some non-ASCII chars: áæï
A U Thor (1):
Test
Jöhännës "Dschö" Schindëlin (2):
set a1 to 2 and some non-ASCII chars: Äßø
set a1 to 3 and some non-ASCII chars: áæï
ok 13 - shortlog with revision pseudo options
expecting success of 4201.14 'shortlog with --output=<file>':
git shortlog --output=shortlog -1 main >output &&
test_must_be_empty output &&
test_line_count = 3 shortlog
ok 14 - shortlog with --output=<file>
expecting success of 4201.15 'shortlog --committer (internal)':
git checkout --orphan side &&
git commit --allow-empty -m one &&
git commit --allow-empty -m two &&
GIT_COMMITTER_NAME="Sin Nombre" git commit --allow-empty -m three &&
cat >expect <<-\EOF &&
2 C O Mitter
1 Sin Nombre
EOF
git shortlog -nsc HEAD >actual &&
test_cmp expect actual
Switched to a new branch 'side'
[side (root-commit) 9ed1028] one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 a1
[side 4046e48] two
Author: A U Thor <author@example.com>
[side 1c4141a] three
Author: A U Thor <author@example.com>
ok 15 - shortlog --committer (internal)
expecting success of 4201.16 'shortlog --committer (external)':
git log --format=full | git shortlog -nsc >actual &&
test_cmp expect actual
ok 16 - shortlog --committer (external)
expecting success of 4201.17 '--group=committer is the same as --committer':
git shortlog -ns --group=committer HEAD >actual &&
test_cmp expect actual
ok 17 - --group=committer is the same as --committer
expecting success of 4201.18 'shortlog --group=trailer:signed-off-by':
git commit --allow-empty -m foo -s &&
GIT_COMMITTER_NAME="SOB One" \
GIT_COMMITTER_EMAIL=sob@example.com \
git commit --allow-empty -m foo -s &&
git commit --allow-empty --amend --no-edit -s &&
cat >expect <<-\EOF &&
2 C O Mitter <committer@example.com>
1 SOB One <sob@example.com>
EOF
git shortlog -nse --group=trailer:signed-off-by HEAD >actual &&
test_cmp expect actual
[side d645125] foo
Author: A U Thor <author@example.com>
[side 4ea5894] foo
Author: A U Thor <author@example.com>
[side 4d83f03] foo
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:13:13 2005 -0700
ok 18 - shortlog --group=trailer:signed-off-by
expecting success of 4201.19 'shortlog --group=format':
git shortlog -s --date="format:%Y" --group="format:%cN (%cd)" \
HEAD >actual &&
cat >expect <<-\EOF &&
4 C O Mitter (2005)
1 Sin Nombre (2005)
EOF
test_cmp expect actual
ok 19 - shortlog --group=format
expecting success of 4201.20 'shortlog --group=<format> DWIM':
git shortlog -s --date="format:%Y" --group="%cN (%cd)" HEAD >actual &&
test_cmp expect actual
ok 20 - shortlog --group=<format> DWIM
expecting success of 4201.21 'shortlog bogus --group':
test_must_fail git shortlog --group=bogus HEAD 2>err &&
grep "unknown group type" err
error: unknown group type: bogus
ok 21 - shortlog bogus --group
expecting success of 4201.22 'trailer idents are split':
cat >expect <<-\EOF &&
2 C O Mitter
1 SOB One
EOF
git shortlog -ns --group=trailer:signed-off-by HEAD >actual &&
test_cmp expect actual
ok 22 - trailer idents are split
expecting success of 4201.23 'trailer idents are mailmapped':
cat >expect <<-\EOF &&
2 C O Mitter
1 Another Name
EOF
echo "Another Name <sob@example.com>" >mail.map &&
git -c mailmap.file=mail.map shortlog -ns \
--group=trailer:signed-off-by HEAD >actual &&
test_cmp expect actual
ok 23 - trailer idents are mailmapped
expecting success of 4201.24 'shortlog de-duplicates trailers in a single commit':
git commit --allow-empty -F - <<-\EOF &&
subject one
this message has two distinct values, plus a repeat
Repeated-trailer: Foo
Repeated-trailer: Bar
Repeated-trailer: Foo
EOF
git commit --allow-empty -F - <<-\EOF &&
subject two
similar to the previous, but without the second distinct value
Repeated-trailer: Foo
Repeated-trailer: Foo
EOF
cat >expect <<-\EOF &&
2 Foo
1 Bar
EOF
git shortlog -ns --group=trailer:repeated-trailer -2 HEAD >actual &&
test_cmp expect actual
[side 0a2c930] subject one
Author: A U Thor <author@example.com>
[side 45f2a27] subject two
Author: A U Thor <author@example.com>
ok 24 - shortlog de-duplicates trailers in a single commit
expecting success of 4201.25 'shortlog can match multiple groups':
git commit --allow-empty -F - <<-\EOF &&
subject one
this has two trailers that are distinct from the author; it will count
3 times in the output
Some-trailer: User A <a@example.com>
Another-trailer: User B <b@example.com>
EOF
git commit --allow-empty -F - <<-\EOF &&
subject two
this one has two trailers, one of which is a duplicate with the author;
it will only be counted once for them
Another-trailer: A U Thor <author@example.com>
Some-trailer: User B <b@example.com>
EOF
cat >expect <<-\EOF &&
2 A U Thor
2 User B
1 User A
EOF
git shortlog -ns \
--group=author \
--group=trailer:some-trailer \
--group=trailer:another-trailer \
-2 HEAD >actual &&
test_cmp expect actual
[side 168a240] subject one
Author: A U Thor <author@example.com>
[side 4d593b0] subject two
Author: A U Thor <author@example.com>
ok 25 - shortlog can match multiple groups
expecting success of 4201.26 'shortlog can match multiple format groups':
GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME" \
git commit --allow-empty -m "identical names" &&
test_tick &&
cat >expect <<-\EOF &&
2 A U Thor
1 C O Mitter
EOF
git shortlog -ns --group="%cn" --group="%an" -2 HEAD >actual &&
test_cmp expect actual
[side 035fc72] identical names
Author: A U Thor <author@example.com>
ok 26 - shortlog can match multiple format groups
expecting success of 4201.27 'set up option selection tests':
git commit --allow-empty -F - <<-\EOF
subject
body
Trailer-one: value-one
Trailer-two: value-two
EOF
[side 7dcb462] subject
Author: A U Thor <author@example.com>
ok 27 - set up option selection tests
expecting success of 4201.28 '--no-group resets group list to author':
cat >expect <<-\EOF &&
1 A U Thor
EOF
git shortlog -ns \
--group=committer \
--group=trailer:trailer-one \
--no-group \
-1 HEAD >actual &&
test_cmp expect actual
ok 28 - --no-group resets group list to author
expecting success of 4201.29 '--no-group resets trailer list':
cat >expect <<-\EOF &&
1 value-two
EOF
git shortlog -ns \
--group=trailer:trailer-one \
--no-group \
--group=trailer:trailer-two \
-1 HEAD >actual &&
test_cmp expect actual
ok 29 - --no-group resets trailer list
expecting success of 4201.30 'stdin with multiple groups reports error':
git log >log &&
test_must_fail git shortlog --group=author --group=committer <log
fatal: using multiple --group options with stdin is not supported
ok 30 - stdin with multiple groups reports error
# passed all 30 test(s)
1..30
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4200-rerere.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4200-rerere/.git/
expecting success of 4200.1 'setup':
cat >a1 <<-\EOF &&
Some title
==========
Whether 'tis nobler in the mind to suffer
The slings and arrows of outrageous fortune,
Or to take arms against a sea of troubles,
And by opposing end them? To die: to sleep;
No more; and by a sleep to say we end
The heart-ache and the thousand natural shocks
That flesh is heir to, 'tis a consummation
Devoutly to be wish'd.
EOF
git add a1 &&
test_tick &&
git commit -q -a -m initial &&
cat >>a1 <<-\EOF &&
Some title
==========
To die, to sleep;
To sleep: perchance to dream: ay, there's the rub;
For in that sleep of death what dreams may come
When we have shuffled off this mortal coil,
Must give us pause: there's the respect
That makes calamity of so long life;
EOF
git checkout -b first &&
test_tick &&
git commit -q -a -m first &&
git checkout -b second main &&
git show first:a1 |
sed -e "s/To die, t/To die! T/" -e "s/Some title/Some Title/" >a1 &&
echo "* END *" >>a1 &&
test_tick &&
git commit -q -a -m second
Switched to a new branch 'first'
Switched to a new branch 'second'
ok 1 - setup
expecting success of 4200.2 'nothing recorded without rerere':
rm -rf .git/rr-cache &&
git config rerere.enabled false &&
test_must_fail git merge first &&
! test -d .git/rr-cache
Auto-merging a1
CONFLICT (content): Merge conflict in a1
Automatic merge failed; fix conflicts and then commit the result.
ok 2 - nothing recorded without rerere
expecting success of 4200.3 'activate rerere, old style (conflicting merge)':
git reset --hard &&
mkdir .git/rr-cache &&
test_might_fail git config --unset rerere.enabled &&
test_must_fail git merge first &&
sha1=$(perl -pe "s/ .*//" .git/MERGE_RR) &&
rr=.git/rr-cache/$sha1 &&
grep "^=======\$" $rr/preimage &&
! test -f $rr/postimage &&
! test -f $rr/thisimage
HEAD is now at fcd23fa second
Auto-merging a1
CONFLICT (content): Merge conflict in a1
Recorded preimage for 'a1'
Automatic merge failed; fix conflicts and then commit the result.
=======
=======
ok 3 - activate rerere, old style (conflicting merge)
expecting success of 4200.4 'rerere.enabled works, too':
rm -rf .git/rr-cache &&
git config rerere.enabled true &&
git reset --hard &&
test_must_fail git merge first &&
sha1=$(perl -pe "s/ .*//" .git/MERGE_RR) &&
rr=.git/rr-cache/$sha1 &&
grep ^=======$ $rr/preimage
HEAD is now at fcd23fa second
Auto-merging a1
CONFLICT (content): Merge conflict in a1
Recorded preimage for 'a1'
Automatic merge failed; fix conflicts and then commit the result.
=======
=======
ok 4 - rerere.enabled works, too
expecting success of 4200.5 'set up rr-cache':
rm -rf .git/rr-cache &&
git config rerere.enabled true &&
git reset --hard &&
test_must_fail git merge first &&
sha1=$(perl -pe "s/ .*//" .git/MERGE_RR) &&
rr=.git/rr-cache/$sha1
HEAD is now at fcd23fa second
Auto-merging a1
CONFLICT (content): Merge conflict in a1
Recorded preimage for 'a1'
Automatic merge failed; fix conflicts and then commit the result.
ok 5 - set up rr-cache
expecting success of 4200.6 'rr-cache looks sane':
# no postimage or thisimage yet
! test -f $rr/postimage &&
! test -f $rr/thisimage &&
# preimage has right number of lines
cnt=$(sed -ne "/^<<<<<<</,/^>>>>>>>/p" $rr/preimage | wc -l) &&
echo $cnt &&
test $cnt = 13
13
ok 6 - rr-cache looks sane
expecting success of 4200.7 'rerere diff':
git show first:a1 >a1 &&
cat >expect <<-\EOF &&
--- a/a1
+++ b/a1
@@ -1,4 +1,4 @@
-Some Title
+Some title
==========
Whether 'tis nobler in the mind to suffer
The slings and arrows of outrageous fortune,
@@ -8,21 +8,11 @@
The heart-ache and the thousand natural shocks
That flesh is heir to, 'tis a consummation
Devoutly to be wish'd.
-<<<<<<<
-Some Title
-==========
-To die! To sleep;
-=======
Some title
==========
To die, to sleep;
->>>>>>>
To sleep: perchance to dream: ay, there's the rub;
For in that sleep of death what dreams may come
When we have shuffled off this mortal coil,
Must give us pause: there's the respect
That makes calamity of so long life;
-<<<<<<<
-=======
-* END *
->>>>>>>
EOF
git rerere diff >out &&
test_cmp expect out
ok 7 - rerere diff
expecting success of 4200.8 'rerere status':
echo a1 >expect &&
git rerere status >out &&
test_cmp expect out
ok 8 - rerere status
expecting success of 4200.9 'first postimage wins':
git show first:a1 | sed "s/To die: t/To die! T/" >expect &&
git commit -q -a -m "prefer first over second" &&
test -f $rr/postimage &&
oldmtimepost=$(test-tool chmtime --get -60 $rr/postimage) &&
git checkout -b third main &&
git show second^:a1 | sed "s/To die: t/To die! T/" >a1 &&
git commit -q -a -m third &&
test_must_fail git merge first &&
# rerere kicked in
! grep "^=======\$" a1 &&
test_cmp expect a1
Recorded resolution for 'a1'.
Switched to a new branch 'third'
Auto-merging a1
CONFLICT (content): Merge conflict in a1
Resolved 'a1' using previous resolution.
Automatic merge failed; fix conflicts and then commit the result.
ok 9 - first postimage wins
expecting success of 4200.10 'rerere updates postimage timestamp':
newmtimepost=$(test-tool chmtime --get $rr/postimage) &&
test $oldmtimepost -lt $newmtimepost
ok 10 - rerere updates postimage timestamp
expecting success of 4200.11 'rerere clear':
mv $rr/postimage .git/post-saved &&
echo "$sha1 a1" | perl -pe "y/\012/\000/" >.git/MERGE_RR &&
git rerere clear &&
! test -d $rr
ok 11 - rerere clear
expecting success of 4200.12 'leftover directory':
git reset --hard &&
mkdir -p $rr &&
test_must_fail git merge first &&
test -f $rr/preimage
HEAD is now at 40cb797 third
Auto-merging a1
CONFLICT (content): Merge conflict in a1
Recorded preimage for 'a1'
Automatic merge failed; fix conflicts and then commit the result.
ok 12 - leftover directory
expecting success of 4200.13 'missing preimage':
git reset --hard &&
mkdir -p $rr &&
cp .git/post-saved $rr/postimage &&
test_must_fail git merge first &&
test -f $rr/preimage
HEAD is now at 40cb797 third
Auto-merging a1
CONFLICT (content): Merge conflict in a1
Resolved 'a1' using previous resolution.
Automatic merge failed; fix conflicts and then commit the result.
ok 13 - missing preimage
expecting success of 4200.14 'set up for garbage collection tests':
mkdir -p $rr &&
echo Hello >$rr/preimage &&
echo World >$rr/postimage &&
sha2=$(test_oid deadbeef) &&
rr2=.git/rr-cache/$sha2 &&
mkdir $rr2 &&
echo Hello >$rr2/preimage &&
almost_15_days_ago=$((60-15*86400)) &&
just_over_15_days_ago=$((-1-15*86400)) &&
almost_60_days_ago=$((60-60*86400)) &&
just_over_60_days_ago=$((-1-60*86400)) &&
test-tool chmtime =$just_over_60_days_ago $rr/preimage &&
test-tool chmtime =$almost_60_days_ago $rr/postimage &&
test-tool chmtime =$almost_15_days_ago $rr2/preimage
ok 14 - set up for garbage collection tests
expecting success of 4200.15 'gc preserves young or recently used records':
git rerere gc &&
test -f $rr/preimage &&
test -f $rr2/preimage
ok 15 - gc preserves young or recently used records
expecting success of 4200.16 'old records rest in peace':
test-tool chmtime =$just_over_60_days_ago $rr/postimage &&
test-tool chmtime =$just_over_15_days_ago $rr2/preimage &&
git rerere gc &&
! test -f $rr/preimage &&
! test -f $rr2/preimage
ok 16 - old records rest in peace
expecting success of 4200.17 'rerere gc with custom expiry (5, 0)':
rm -fr .git/rr-cache &&
rr=.git/rr-cache/$ZERO_OID &&
mkdir -p "$rr" &&
>"$rr/preimage" &&
>"$rr/postimage" &&
two_days_ago=$((-2*86400)) &&
test-tool chmtime =$two_days_ago "$rr/preimage" &&
test-tool chmtime =$two_days_ago "$rr/postimage" &&
find .git/rr-cache -type f | sort >original &&
git -c "gc.rerereresolved=$five_days" \
-c "gc.rerereunresolved=$five_days" rerere gc &&
find .git/rr-cache -type f | sort >actual &&
test_cmp original actual &&
git -c "gc.rerereresolved=$five_days" \
-c "gc.rerereunresolved=$right_now" rerere gc &&
find .git/rr-cache -type f | sort >actual &&
test_cmp original actual &&
git -c "gc.rerereresolved=$right_now" \
-c "gc.rerereunresolved=$right_now" rerere gc &&
find .git/rr-cache -type f | sort >actual &&
test_must_be_empty actual
ok 17 - rerere gc with custom expiry (5, 0)
expecting success of 4200.18 'rerere gc with custom expiry (5.days.ago, now)':
rm -fr .git/rr-cache &&
rr=.git/rr-cache/$ZERO_OID &&
mkdir -p "$rr" &&
>"$rr/preimage" &&
>"$rr/postimage" &&
two_days_ago=$((-2*86400)) &&
test-tool chmtime =$two_days_ago "$rr/preimage" &&
test-tool chmtime =$two_days_ago "$rr/postimage" &&
find .git/rr-cache -type f | sort >original &&
git -c "gc.rerereresolved=$five_days" \
-c "gc.rerereunresolved=$five_days" rerere gc &&
find .git/rr-cache -type f | sort >actual &&
test_cmp original actual &&
git -c "gc.rerereresolved=$five_days" \
-c "gc.rerereunresolved=$right_now" rerere gc &&
find .git/rr-cache -type f | sort >actual &&
test_cmp original actual &&
git -c "gc.rerereresolved=$right_now" \
-c "gc.rerereunresolved=$right_now" rerere gc &&
find .git/rr-cache -type f | sort >actual &&
test_must_be_empty actual
ok 18 - rerere gc with custom expiry (5.days.ago, now)
expecting success of 4200.19 'setup: file2 added differently in two branches':
git reset --hard &&
git checkout -b fourth &&
echo Hallo >file2 &&
git add file2 &&
test_tick &&
git commit -m version1 &&
git checkout third &&
echo Bello >file2 &&
git add file2 &&
test_tick &&
git commit -m version2 &&
test_must_fail git merge fourth &&
echo Cello >file2 &&
git add file2 &&
git commit -m resolution
HEAD is now at 40cb797 third
Switched to a new branch 'fourth'
[fourth 26401ec] version1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file2
Switched to branch 'third'
[third 1f50303] version2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file2
Auto-merging file2
CONFLICT (add/add): Merge conflict in file2
Recorded preimage for 'file2'
Automatic merge failed; fix conflicts and then commit the result.
Recorded resolution for 'file2'.
[third e9acb28] resolution
Author: A U Thor <author@example.com>
ok 19 - setup: file2 added differently in two branches
expecting success of 4200.20 'resolution was recorded properly':
echo Cello >expected &&
git reset --hard HEAD~2 &&
git checkout -b fifth &&
echo Hallo >file3 &&
git add file3 &&
test_tick &&
git commit -m version1 &&
git checkout third &&
echo Bello >file3 &&
git add file3 &&
test_tick &&
git commit -m version2 &&
git tag version2 &&
test_must_fail git merge fifth &&
test_cmp expected file3 &&
test_must_fail git update-index --refresh
HEAD is now at 40cb797 third
Switched to a new branch 'fifth'
[fifth 9b6b3c4] version1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file3
Switched to branch 'third'
[third 7eec302] version2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file3
Auto-merging file3
CONFLICT (add/add): Merge conflict in file3
Resolved 'file3' using previous resolution.
Automatic merge failed; fix conflicts and then commit the result.
file3: needs merge
ok 20 - resolution was recorded properly
expecting success of 4200.21 'rerere.autoupdate':
git config rerere.autoupdate true &&
git reset --hard &&
git checkout version2 &&
test_must_fail git merge fifth &&
git update-index --refresh
HEAD is now at 7eec302 version2
Note: switching to 'version2'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 7eec302 version2
Auto-merging file3
CONFLICT (add/add): Merge conflict in file3
Staged 'file3' using previous resolution.
Automatic merge failed; fix conflicts and then commit the result.
ok 21 - rerere.autoupdate
expecting success of 4200.22 'merge --rerere-autoupdate':
test_might_fail git config --unset rerere.autoupdate &&
git reset --hard &&
git checkout version2 &&
test_must_fail git merge --rerere-autoupdate fifth &&
git update-index --refresh
HEAD is now at 7eec302 version2
HEAD is now at 7eec302 version2
Auto-merging file3
CONFLICT (add/add): Merge conflict in file3
Staged 'file3' using previous resolution.
Automatic merge failed; fix conflicts and then commit the result.
ok 22 - merge --rerere-autoupdate
expecting success of 4200.23 'merge --no-rerere-autoupdate':
headblob=$(git rev-parse version2:file3) &&
mergeblob=$(git rev-parse fifth:file3) &&
cat >expected <<-EOF &&
100644 $headblob 2 file3
100644 $mergeblob 3 file3
EOF
git config rerere.autoupdate true &&
git reset --hard &&
git checkout version2 &&
test_must_fail git merge --no-rerere-autoupdate fifth &&
git ls-files -u >actual &&
test_cmp expected actual
HEAD is now at 7eec302 version2
HEAD is now at 7eec302 version2
Auto-merging file3
CONFLICT (add/add): Merge conflict in file3
Resolved 'file3' using previous resolution.
Automatic merge failed; fix conflicts and then commit the result.
ok 23 - merge --no-rerere-autoupdate
expecting success of 4200.24 'set up an unresolved merge':
headblob=$(git rev-parse version2:file3) &&
mergeblob=$(git rev-parse fifth:file3) &&
cat >expected.unresolved <<-EOF &&
100644 $headblob 2 file3
100644 $mergeblob 3 file3
EOF
test_might_fail git config --unset rerere.autoupdate &&
git reset --hard &&
git checkout version2 &&
ancestor=$(git merge-base version2 fifth) &&
test_must_fail git merge-recursive "$ancestor" -- HEAD fifth &&
git ls-files --stage >failedmerge &&
cp file3 file3.conflict &&
git ls-files -u >actual &&
test_cmp expected.unresolved actual
HEAD is now at 7eec302 version2
HEAD is now at 7eec302 version2
Merging HEAD with fifth
Merging:
7eec302 version2
9b6b3c4 version1
found 1 common ancestor:
40cb797 third
CONFLICT (add/add): Merge conflict in file3
Auto-merging file3
ok 24 - set up an unresolved merge
expecting success of 4200.25 'explicit rerere':
test_might_fail git config --unset rerere.autoupdate &&
git rm -fr --cached . &&
git update-index --index-info <failedmerge &&
cp file3.conflict file3 &&
test_must_fail git update-index --refresh -q &&
git rerere &&
git ls-files -u >actual &&
test_cmp expected.unresolved actual
rm 'a1'
rm 'file3'
rm 'file3'
file3: needs merge
Resolved 'file3' using previous resolution.
ok 25 - explicit rerere
expecting success of 4200.26 'explicit rerere with autoupdate':
git config rerere.autoupdate true &&
git rm -fr --cached . &&
git update-index --index-info <failedmerge &&
cp file3.conflict file3 &&
test_must_fail git update-index --refresh -q &&
git rerere &&
git update-index --refresh
rm 'a1'
rm 'file3'
rm 'file3'
file3: needs merge
Staged 'file3' using previous resolution.
ok 26 - explicit rerere with autoupdate
expecting success of 4200.27 'explicit rerere --rerere-autoupdate overrides':
git config rerere.autoupdate false &&
git rm -fr --cached . &&
git update-index --index-info <failedmerge &&
cp file3.conflict file3 &&
git rerere &&
git ls-files -u >actual1 &&
git rm -fr --cached . &&
git update-index --index-info <failedmerge &&
cp file3.conflict file3 &&
git rerere --rerere-autoupdate &&
git update-index --refresh &&
git rm -fr --cached . &&
git update-index --index-info <failedmerge &&
cp file3.conflict file3 &&
git rerere --rerere-autoupdate --no-rerere-autoupdate &&
git ls-files -u >actual2 &&
git rm -fr --cached . &&
git update-index --index-info <failedmerge &&
cp file3.conflict file3 &&
git rerere --rerere-autoupdate --no-rerere-autoupdate --rerere-autoupdate &&
git update-index --refresh &&
test_cmp expected.unresolved actual1 &&
test_cmp expected.unresolved actual2
rm 'a1'
rm 'file3'
Resolved 'file3' using previous resolution.
rm 'a1'
rm 'file3'
rm 'file3'
Staged 'file3' using previous resolution.
rm 'a1'
rm 'file3'
Resolved 'file3' using previous resolution.
rm 'a1'
rm 'file3'
rm 'file3'
Staged 'file3' using previous resolution.
ok 27 - explicit rerere --rerere-autoupdate overrides
expecting success of 4200.28 'rerere --no-no-rerere-autoupdate':
git rm -fr --cached . &&
git update-index --index-info <failedmerge &&
cp file3.conflict file3 &&
test_must_fail git rerere --no-no-rerere-autoupdate 2>err &&
test_i18ngrep [Uu]sage err &&
test_must_fail git update-index --refresh
rm 'a1'
rm 'file3'
usage: git rerere [clear | forget <pathspec>... | diff | status | remaining | gc]
file3: needs merge
ok 28 - rerere --no-no-rerere-autoupdate
expecting success of 4200.29 'rerere -h':
test_must_fail git rerere -h >help &&
test_i18ngrep [Uu]sage help
usage: git rerere [clear | forget <pathspec>... | diff | status | remaining | gc]
ok 29 - rerere -h
expecting success of 4200.30 'multiple identical conflicts':
rm -fr .git/rr-cache &&
mkdir .git/rr-cache &&
git reset --hard &&
test_seq 1 6 >early &&
>late &&
test_seq 11 15 >short &&
test_seq 111 120 >long &&
concat_insert short >file1 &&
concat_insert long >file2 &&
git add file1 file2 &&
git commit -m base &&
git tag base &&
git checkout -b six.1 &&
concat_insert short 6.1 >file1 &&
concat_insert long 6.1 >file2 &&
git add file1 file2 &&
git commit -m 6.1 &&
git checkout -b six.2 HEAD^ &&
concat_insert short 6.2 >file1 &&
concat_insert long 6.2 >file2 &&
git add file1 file2 &&
git commit -m 6.2 &&
# At this point, six.1 and six.2
# - derive from common ancestor that has two files
# 1...6 7 11..15 (file1) and 1...6 7 111..120 (file2)
# - six.1 replaces these 7s with 6.1
# - six.2 replaces these 7s with 6.2
merge_conflict_resolve &&
# Check that rerere knows that file1 and file2 have conflicts
printf "%s\n" file1 file2 >expect &&
git ls-files -u | sed -e "s/^.* //" | sort -u >actual &&
test_cmp expect actual &&
git rerere status | sort >actual &&
test_cmp expect actual &&
git rerere remaining >actual &&
test_cmp expect actual &&
count_pre_post 2 0 &&
# Pretend that the conflicts were made quite some time ago
test-tool chmtime -172800 $(find .git/rr-cache/ -type f) &&
# Unresolved entries have not expired yet
git -c gc.rerereresolved=5 -c gc.rerereunresolved=5 rerere gc &&
count_pre_post 2 0 &&
# Unresolved entries have expired
git -c gc.rerereresolved=5 -c gc.rerereunresolved=1 rerere gc &&
count_pre_post 0 0 &&
# Recreate the conflicted state
merge_conflict_resolve &&
count_pre_post 2 0 &&
# Clear it
git rerere clear &&
count_pre_post 0 0 &&
# Recreate the conflicted state
merge_conflict_resolve &&
count_pre_post 2 0 &&
# We resolved file1 and file2
git rerere &&
git rerere remaining >actual &&
test_must_be_empty actual &&
# We must have recorded both of them
count_pre_post 2 2 &&
# Now we should be able to resolve them both
git reset --hard &&
test_must_fail git merge six.1 &&
git rerere &&
git rerere remaining >actual &&
test_must_be_empty actual &&
concat_insert short 6.1 6.2 >file1.expect &&
concat_insert long 6.1 6.2 >file2.expect &&
test_cmp file1.expect file1 &&
test_cmp file2.expect file2 &&
# Forget resolution for file2
git rerere forget file2 &&
echo file2 >expect &&
git rerere status >actual &&
test_cmp expect actual &&
count_pre_post 2 1 &&
# file2 already has correct resolution, so record it again
git rerere &&
# Pretend that the resolutions are old again
test-tool chmtime -172800 $(find .git/rr-cache/ -type f) &&
# Resolved entries have not expired yet
git -c gc.rerereresolved=5 -c gc.rerereunresolved=5 rerere gc &&
count_pre_post 2 2 &&
# Resolved entries have expired
git -c gc.rerereresolved=1 -c gc.rerereunresolved=5 rerere gc &&
count_pre_post 0 0
HEAD is now at 7eec302 version2
[detached HEAD 40e0609] base
Author: A U Thor <author@example.com>
2 files changed, 29 insertions(+)
create mode 100644 file1
create mode 100644 file2
Switched to a new branch 'six.1'
[six.1 605006b] 6.1
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+), 2 deletions(-)
Switched to a new branch 'six.2'
[six.2 ba09fec] 6.2
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+), 2 deletions(-)
HEAD is now at ba09fec 6.2
Auto-merging file1
CONFLICT (content): Merge conflict in file1
Auto-merging file2
CONFLICT (content): Merge conflict in file2
Recorded preimage for 'file1'
Recorded preimage for 'file2'
Automatic merge failed; fix conflicts and then commit the result.
HEAD is now at ba09fec 6.2
Auto-merging file1
CONFLICT (content): Merge conflict in file1
Auto-merging file2
CONFLICT (content): Merge conflict in file2
Recorded preimage for 'file1'
Recorded preimage for 'file2'
Automatic merge failed; fix conflicts and then commit the result.
HEAD is now at ba09fec 6.2
Auto-merging file1
CONFLICT (content): Merge conflict in file1
Auto-merging file2
CONFLICT (content): Merge conflict in file2
Recorded preimage for 'file1'
Recorded preimage for 'file2'
Automatic merge failed; fix conflicts and then commit the result.
Recorded resolution for 'file1'.
Recorded resolution for 'file2'.
HEAD is now at ba09fec 6.2
Auto-merging file1
CONFLICT (content): Merge conflict in file1
Auto-merging file2
CONFLICT (content): Merge conflict in file2
Resolved 'file1' using previous resolution.
Resolved 'file2' using previous resolution.
Automatic merge failed; fix conflicts and then commit the result.
Updated preimage for 'file2'
Forgot resolution for 'file2'
Recorded resolution for 'file2'.
ok 30 - multiple identical conflicts
expecting success of 4200.31 'rerere with unexpected conflict markers does not crash':
git reset --hard &&
git checkout -b branch-1 main &&
echo "bar" >test &&
git add test &&
git commit -q -m two &&
git reset --hard &&
git checkout -b branch-2 main &&
echo "foo" >test &&
git add test &&
git commit -q -a -m one &&
test_must_fail git merge branch-1 &&
echo "<<<<<<< a" >test &&
git rerere &&
git rerere clear
HEAD is now at ba09fec 6.2
Switched to a new branch 'branch-1'
HEAD is now at 5727ee8 two
Switched to a new branch 'branch-2'
Auto-merging test
CONFLICT (add/add): Merge conflict in test
Recorded preimage for 'test'
Automatic merge failed; fix conflicts and then commit the result.
error: could not parse conflict hunks in 'test'
ok 31 - rerere with unexpected conflict markers does not crash
expecting success of 4200.32 'rerere with inner conflict markers':
git reset --hard &&
git checkout -b A main &&
echo "bar" >test &&
git add test &&
git commit -q -m two &&
echo "baz" >test &&
git add test &&
git commit -q -m three &&
git reset --hard &&
git checkout -b B main &&
echo "foo" >test &&
git add test &&
git commit -q -a -m one &&
test_must_fail git merge A~ &&
git add test &&
git commit -q -m "will solve conflicts later" &&
test_must_fail git merge A &&
echo "resolved" >test &&
git add test &&
git commit -q -m "solved conflict" &&
echo "resolved" >expect &&
git reset --hard HEAD~~ &&
test_must_fail git merge A~ &&
git add test &&
git commit -q -m "will solve conflicts later" &&
test_must_fail git merge A &&
cat test >actual &&
test_cmp expect actual &&
git add test &&
git commit -m "rerere solved conflict" &&
git reset --hard HEAD~ &&
test_must_fail git merge A &&
cat test >actual &&
test_cmp expect actual
HEAD is now at 95c3f31 one
Switched to a new branch 'A'
HEAD is now at 8f8d617 three
Switched to a new branch 'B'
Auto-merging test
CONFLICT (add/add): Merge conflict in test
Recorded preimage for 'test'
Automatic merge failed; fix conflicts and then commit the result.
Recorded preimage for 'test'
Auto-merging test
CONFLICT (content): Merge conflict in test
Recorded preimage for 'test'
Automatic merge failed; fix conflicts and then commit the result.
Recorded resolution for 'test'.
HEAD is now at 95c3f31 one
Auto-merging test
CONFLICT (add/add): Merge conflict in test
Recorded preimage for 'test'
Automatic merge failed; fix conflicts and then commit the result.
Recorded preimage for 'test'
Auto-merging test
CONFLICT (content): Merge conflict in test
Resolved 'test' using previous resolution.
Automatic merge failed; fix conflicts and then commit the result.
[B c1558e5] rerere solved conflict
Author: A U Thor <author@example.com>
HEAD is now at 35eb3e9 will solve conflicts later
Auto-merging test
CONFLICT (content): Merge conflict in test
Resolved 'test' using previous resolution.
Automatic merge failed; fix conflicts and then commit the result.
ok 32 - rerere with inner conflict markers
expecting success of 4200.33 'setup simple stage 1 handling':
test_create_repo stage_1_handling &&
(
cd stage_1_handling &&
test_seq 1 10 >original &&
git add original &&
git commit -m original &&
git checkout -b A main &&
git mv original A &&
git commit -m "rename to A" &&
git checkout -b B main &&
git mv original B &&
git commit -m "rename to B"
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4200-rerere/stage_1_handling/.git/
[main (root-commit) 64a4a07] original
Author: A U Thor <author@example.com>
1 file changed, 10 insertions(+)
create mode 100644 original
Switched to a new branch 'A'
[A cc792a7] rename to A
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
rename original => A (100%)
Switched to a new branch 'B'
[B 02c49bb] rename to B
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
rename original => B (100%)
ok 33 - setup simple stage 1 handling
expecting success of 4200.34 'test simple stage 1 handling':
(
cd stage_1_handling &&
git config rerere.enabled true &&
git checkout A^0 &&
test_must_fail git merge B^0
)
Note: switching to 'A^0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at cc792a7 rename to A
CONFLICT (rename/rename): original renamed to A in HEAD and to B in B^0.
Automatic merge failed; fix conflicts and then commit the result.
ok 34 - test simple stage 1 handling
# passed all 34 test(s)
1..34
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4150-am.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4150-am/.git/
expecting success of 4150.1 'setup: messages':
cat >msg <<-\EOF &&
second
Lorem ipsum dolor sit amet, consectetuer sadipscing elitr, sed diam nonumy
eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam
voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita
kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem
ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod
tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At
vero eos et accusam et justo duo dolores et ea rebum.
EOF
qz_to_tab_space <<-\EOF >>msg &&
QDuis autem vel eum iriure dolor in hendrerit in vulputate velit
Qesse molestie consequat, vel illum dolore eu feugiat nulla facilisis
Qat vero eros et accumsan et iusto odio dignissim qui blandit
Qpraesent luptatum zzril delenit augue duis dolore te feugait nulla
Qfacilisi.
EOF
cat >>msg <<-\EOF &&
Lorem ipsum dolor sit amet,
consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut
laoreet dolore magna aliquam erat volutpat.
git
---
+++
Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit
lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure
dolor in hendrerit in vulputate velit esse molestie consequat, vel illum
dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio
dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te
feugait nulla facilisi.
Reported-by: A N Other <a.n.other@example.com>
EOF
cat >failmail <<-\EOF &&
From foo@example.com Fri May 23 10:43:49 2008
From: foo@example.com
To: bar@example.com
Subject: Re: [RFC/PATCH] git-foo.sh
Date: Fri, 23 May 2008 05:23:42 +0200
Sometimes we have to find out that there's nothing left.
EOF
cat >pine <<-\EOF &&
From MAILER-DAEMON Fri May 23 10:43:49 2008
Date: 23 May 2008 05:23:42 +0200
From: Mail System Internal Data <MAILER-DAEMON@example.com>
Subject: DON'T DELETE THIS MESSAGE -- FOLDER INTERNAL DATA
Message-ID: <foo-0001@example.com>
This text is part of the internal format of your mail folder, and is not
a real message. It is created automatically by the mail system software.
If deleted, important folder data will be lost, and it will be re-created
with the data reset to initial values.
EOF
cat >msg-without-scissors-line <<-\EOF &&
Test that git-am --scissors cuts at the scissors line
This line should be included in the commit message.
EOF
printf "Subject: " >subject-prefix &&
cat - subject-prefix msg-without-scissors-line >msg-with-scissors-line <<-\EOF
This line should not be included in the commit message with --scissors enabled.
- - >8 - - remove everything above this line - - >8 - -
EOF
ok 1 - setup: messages
expecting success of 4150.2 'setup':
echo hello >file &&
git add file &&
test_tick &&
git commit -m first &&
git tag first &&
echo world >>file &&
git add file &&
test_tick &&
git commit -F msg &&
git tag second &&
git format-patch --stdout first >patch1 &&
{
echo "Message-ID: <1226501681-24923-1-git-send-email-bda@mnsspb.ru>" &&
echo "X-Fake-Field: Line One" &&
echo "X-Fake-Field: Line Two" &&
echo "X-Fake-Field: Line Three" &&
git format-patch --stdout first | sed -e "1d"
} > patch1.eml &&
{
echo "X-Fake-Field: Line One" &&
echo "X-Fake-Field: Line Two" &&
echo "X-Fake-Field: Line Three" &&
git format-patch --stdout first | sed -e "1d"
} | append_cr >patch1-crlf.eml &&
{
printf "%255s\\n" "" &&
echo "X-Fake-Field: Line One" &&
echo "X-Fake-Field: Line Two" &&
echo "X-Fake-Field: Line Three" &&
git format-patch --stdout first | sed -e "1d"
} > patch1-ws.eml &&
{
sed -ne "1p" msg &&
echo &&
echo "From: $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL>" &&
echo "Date: $GIT_AUTHOR_DATE" &&
echo &&
sed -e "1,2d" msg &&
echo "---" &&
git diff-tree --no-commit-id --stat -p second
} >patch1-stgit.eml &&
mkdir stgit-series &&
cp patch1-stgit.eml stgit-series/patch &&
{
echo "# This series applies on GIT commit $(git rev-parse first)" &&
echo "patch"
} >stgit-series/series &&
{
echo "# HG changeset patch" &&
echo "# User $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL>" &&
echo "# Date $test_tick 25200" &&
echo "# $(git show --pretty="%aD" -s second)" &&
echo "# Node ID $ZERO_OID" &&
echo "# Parent $ZERO_OID" &&
cat msg &&
echo &&
git diff-tree --no-commit-id -p second
} >patch1-hg.eml &&
echo file >file &&
git add file &&
git commit -F msg-without-scissors-line &&
git tag expected-for-scissors &&
git reset --hard HEAD^ &&
echo file >file &&
git add file &&
git commit -F msg-with-scissors-line &&
git tag expected-for-no-scissors &&
git format-patch --stdout expected-for-no-scissors^ >patch-with-scissors-line.eml &&
git reset --hard HEAD^ &&
sed -n -e "3,\$p" msg >file &&
git add file &&
test_tick &&
git commit -m third &&
git format-patch --stdout first >patch2 &&
git checkout -b lorem &&
sed -n -e "11,\$p" msg >file &&
head -n 9 msg >>file &&
test_tick &&
git commit -a -m "moved stuff" &&
echo goodbye >another &&
git add another &&
test_tick &&
git commit -m "added another file" &&
git format-patch --stdout main >lorem-move.patch &&
git format-patch --no-prefix --stdout main >lorem-zero.patch &&
git checkout -b rename &&
git mv file renamed &&
git commit -m "renamed a file" &&
git format-patch -M --stdout lorem >rename.patch &&
git reset --soft lorem^ &&
git commit -m "renamed a file and added another" &&
git format-patch -M --stdout lorem^ >rename-add.patch &&
git checkout -b empty-commit &&
git commit -m "empty commit" --allow-empty &&
: >empty.patch &&
git format-patch --always --stdout empty-commit^ >empty-commit.patch &&
# reset time
sane_unset test_tick &&
test_tick
[main (root-commit) 6b2d93f] first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
[main 88f8893] second
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[main 27dee8a] Test that git-am --scissors cuts at the scissors line
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 2 deletions(-)
HEAD is now at 88f8893 second
[main 9f99c7e] This line should not be included in the commit message with --scissors enabled.
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 2 deletions(-)
HEAD is now at 88f8893 second
[main 7179449] third
Author: A U Thor <author@example.com>
1 file changed, 30 insertions(+), 2 deletions(-)
Switched to a new branch 'lorem'
[lorem 4670218] moved stuff
Author: A U Thor <author@example.com>
1 file changed, 9 insertions(+), 8 deletions(-)
[lorem 1048ce6] added another file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 another
Switched to a new branch 'rename'
[rename fc8826b] renamed a file
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
rename file => renamed (100%)
[rename 756adf8] renamed a file and added another
Author: A U Thor <author@example.com>
2 files changed, 1 insertion(+)
create mode 100644 another
rename file => renamed (100%)
Switched to a new branch 'empty-commit'
[empty-commit c6b90e6] empty commit
Author: A U Thor <author@example.com>
ok 2 - setup
expecting success of 4150.3 'am applies patch correctly':
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout first &&
test_tick &&
git am <patch1 &&
test_path_is_missing .git/rebase-apply &&
git diff --exit-code second &&
test "$(git rev-parse second)" = "$(git rev-parse HEAD)" &&
test "$(git rev-parse second^)" = "$(git rev-parse HEAD^)"
HEAD is now at c6b90e6 empty commit
Note: switching to 'first'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 6b2d93f first
Applying: second
ok 3 - am applies patch correctly
expecting success of 4150.4 'am fails if index is dirty':
test_when_finished "rm -f dirtyfile" &&
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout first &&
echo dirtyfile >dirtyfile &&
git add dirtyfile &&
test_must_fail git am patch1 &&
test_path_is_dir .git/rebase-apply &&
test_cmp_rev first HEAD
HEAD is now at 88f8893 second
Previous HEAD position was 88f8893 second
HEAD is now at 6b2d93f first
fatal: Dirty index: cannot apply patches (dirty: dirtyfile)
ok 4 - am fails if index is dirty
expecting success of 4150.5 'am applies patch e-mail not in a mbox':
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout first &&
git am patch1.eml &&
test_path_is_missing .git/rebase-apply &&
git diff --exit-code second &&
test "$(git rev-parse second)" = "$(git rev-parse HEAD)" &&
test "$(git rev-parse second^)" = "$(git rev-parse HEAD^)"
HEAD is now at 6b2d93f first
HEAD is now at 6b2d93f first
Applying: second
ok 5 - am applies patch e-mail not in a mbox
expecting success of 4150.6 'am applies patch e-mail not in a mbox with CRLF':
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout first &&
git am patch1-crlf.eml &&
test_path_is_missing .git/rebase-apply &&
git diff --exit-code second &&
test "$(git rev-parse second)" = "$(git rev-parse HEAD)" &&
test "$(git rev-parse second^)" = "$(git rev-parse HEAD^)"
HEAD is now at 88f8893 second
Previous HEAD position was 88f8893 second
HEAD is now at 6b2d93f first
Applying: second
ok 6 - am applies patch e-mail not in a mbox with CRLF
expecting success of 4150.7 'am applies patch e-mail with preceding whitespace':
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout first &&
git am patch1-ws.eml &&
test_path_is_missing .git/rebase-apply &&
git diff --exit-code second &&
test "$(git rev-parse second)" = "$(git rev-parse HEAD)" &&
test "$(git rev-parse second^)" = "$(git rev-parse HEAD^)"
HEAD is now at 88f8893 second
Previous HEAD position was 88f8893 second
HEAD is now at 6b2d93f first
Applying: second
ok 7 - am applies patch e-mail with preceding whitespace
expecting success of 4150.8 'am applies stgit patch':
rm -fr .git/rebase-apply &&
git checkout -f first &&
git am patch1-stgit.eml &&
test_path_is_missing .git/rebase-apply &&
git diff --exit-code second &&
test_cmp_rev second HEAD &&
test_cmp_rev second^ HEAD^
Previous HEAD position was 88f8893 second
HEAD is now at 6b2d93f first
Applying: second
ok 8 - am applies stgit patch
expecting success of 4150.9 'am --patch-format=stgit applies stgit patch':
rm -fr .git/rebase-apply &&
git checkout -f first &&
git am --patch-format=stgit <patch1-stgit.eml &&
test_path_is_missing .git/rebase-apply &&
git diff --exit-code second &&
test_cmp_rev second HEAD &&
test_cmp_rev second^ HEAD^
Previous HEAD position was 88f8893 second
HEAD is now at 6b2d93f first
Applying: second
ok 9 - am --patch-format=stgit applies stgit patch
expecting success of 4150.10 'am applies stgit series':
rm -fr .git/rebase-apply &&
git checkout -f first &&
git am stgit-series/series &&
test_path_is_missing .git/rebase-apply &&
git diff --exit-code second &&
test_cmp_rev second HEAD &&
test_cmp_rev second^ HEAD^
Previous HEAD position was 88f8893 second
HEAD is now at 6b2d93f first
Applying: second
ok 10 - am applies stgit series
expecting success of 4150.11 'am applies hg patch':
rm -fr .git/rebase-apply &&
git checkout -f first &&
git am patch1-hg.eml &&
test_path_is_missing .git/rebase-apply &&
git diff --exit-code second &&
test_cmp_rev second HEAD &&
test_cmp_rev second^ HEAD^
Previous HEAD position was 88f8893 second
HEAD is now at 6b2d93f first
Applying: second
ok 11 - am applies hg patch
expecting success of 4150.12 'am --patch-format=hg applies hg patch':
rm -fr .git/rebase-apply &&
git checkout -f first &&
git am --patch-format=hg <patch1-hg.eml &&
test_path_is_missing .git/rebase-apply &&
git diff --exit-code second &&
test_cmp_rev second HEAD &&
test_cmp_rev second^ HEAD^
Previous HEAD position was 88f8893 second
HEAD is now at 6b2d93f first
Applying: second
ok 12 - am --patch-format=hg applies hg patch
expecting success of 4150.13 'am with applypatch-msg hook':
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout first &&
test_hook applypatch-msg <<-\EOF &&
cat "$1" >actual-msg &&
echo hook-message >"$1"
EOF
git am patch1 &&
test_path_is_missing .git/rebase-apply &&
git diff --exit-code second &&
echo hook-message >expected &&
git log -1 --format=format:%B >actual &&
test_cmp expected actual &&
git log -1 --format=format:%B second >expected &&
test_cmp expected actual-msg
HEAD is now at 88f8893 second
Previous HEAD position was 88f8893 second
HEAD is now at 6b2d93f first
Applying: hook-message
ok 13 - am with applypatch-msg hook
expecting success of 4150.14 'am with failing applypatch-msg hook':
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout first &&
test_hook applypatch-msg <<-\EOF &&
exit 1
EOF
test_must_fail git am patch1 &&
test_path_is_dir .git/rebase-apply &&
git diff --exit-code first &&
test_cmp_rev first HEAD
HEAD is now at fa25691 hook-message
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
fa25691 hook-message
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> fa25691
HEAD is now at 6b2d93f first
ok 14 - am with failing applypatch-msg hook
expecting success of 4150.15 'am with failing applypatch-msg hook (no verify)':
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout first &&
test_hook applypatch-msg <<-\EOF &&
echo hook-message >"$1"
exit 1
EOF
git am --no-verify patch1 &&
test_path_is_missing .git/rebase-apply &&
git diff --exit-code second &&
git log -1 --format=format:%B >actual &&
test_cmp msg actual
HEAD is now at 6b2d93f first
HEAD is now at 6b2d93f first
Applying: second
ok 15 - am with failing applypatch-msg hook (no verify)
expecting success of 4150.16 'am with pre-applypatch hook':
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout first &&
test_hook pre-applypatch <<-\EOF &&
git diff first >diff.actual
exit 0
EOF
git am patch1 &&
test_path_is_missing .git/rebase-apply &&
git diff --exit-code second &&
test_cmp_rev second HEAD &&
git diff first..second >diff.expected &&
test_cmp diff.expected diff.actual
HEAD is now at 88f8893 second
Previous HEAD position was 88f8893 second
HEAD is now at 6b2d93f first
Applying: second
ok 16 - am with pre-applypatch hook
expecting success of 4150.17 'am with failing pre-applypatch hook':
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout first &&
test_hook pre-applypatch <<-\EOF &&
exit 1
EOF
test_must_fail git am patch1 &&
test_path_is_dir .git/rebase-apply &&
git diff --exit-code second &&
test_cmp_rev first HEAD
HEAD is now at 88f8893 second
Previous HEAD position was 88f8893 second
HEAD is now at 6b2d93f first
Applying: second
ok 17 - am with failing pre-applypatch hook
expecting success of 4150.18 'am with failing pre-applypatch hook (no verify)':
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout first &&
touch empty-file &&
test_hook pre-applypatch <<-\EOF &&
rm empty-file
exit 1
EOF
git am --no-verify patch1 &&
test_path_is_missing .git/rebase-apply &&
test_path_is_file empty-file &&
git diff --exit-code second &&
git log -1 --format=format:%B >actual &&
test_cmp msg actual
HEAD is now at 6b2d93f first
HEAD is now at 6b2d93f first
Applying: second
ok 18 - am with failing pre-applypatch hook (no verify)
expecting success of 4150.19 'am with post-applypatch hook':
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout first &&
test_hook post-applypatch <<-\EOF &&
git rev-parse HEAD >head.actual
git diff second >diff.actual
exit 0
EOF
git am patch1 &&
test_path_is_missing .git/rebase-apply &&
test_cmp_rev second HEAD &&
git rev-parse second >head.expected &&
test_cmp head.expected head.actual &&
git diff second >diff.expected &&
test_cmp diff.expected diff.actual
HEAD is now at 88f8893 second
Previous HEAD position was 88f8893 second
HEAD is now at 6b2d93f first
Applying: second
ok 19 - am with post-applypatch hook
expecting success of 4150.20 'am with failing post-applypatch hook':
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout first &&
test_hook post-applypatch <<-\EOF &&
git rev-parse HEAD >head.actual
exit 1
EOF
git am patch1 &&
test_path_is_missing .git/rebase-apply &&
git diff --exit-code second &&
test_cmp_rev second HEAD &&
git rev-parse second >head.expected &&
test_cmp head.expected head.actual
HEAD is now at 88f8893 second
Previous HEAD position was 88f8893 second
HEAD is now at 6b2d93f first
Applying: second
ok 20 - am with failing post-applypatch hook
expecting success of 4150.21 'am --scissors cuts the message at the scissors line':
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout second &&
git am --scissors patch-with-scissors-line.eml &&
test_path_is_missing .git/rebase-apply &&
git diff --exit-code expected-for-scissors &&
test_cmp_rev expected-for-scissors HEAD
HEAD is now at 88f8893 second
HEAD is now at 88f8893 second
Applying: Test that git-am --scissors cuts at the scissors line
ok 21 - am --scissors cuts the message at the scissors line
expecting success of 4150.22 'am --no-scissors overrides mailinfo.scissors':
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout second &&
test_config mailinfo.scissors true &&
git am --no-scissors patch-with-scissors-line.eml &&
test_path_is_missing .git/rebase-apply &&
git diff --exit-code expected-for-no-scissors &&
test_cmp_rev expected-for-no-scissors HEAD
HEAD is now at 27dee8a Test that git-am --scissors cuts at the scissors line
Previous HEAD position was 27dee8a Test that git-am --scissors cuts at the scissors line
HEAD is now at 88f8893 second
Applying: This line should not be included in the commit message with --scissors enabled.
ok 22 - am --no-scissors overrides mailinfo.scissors
expecting success of 4150.23 'setup: new author and committer':
GIT_AUTHOR_NAME="Another Thor" &&
GIT_AUTHOR_EMAIL="a.thor@example.com" &&
GIT_COMMITTER_NAME="Co M Miter" &&
GIT_COMMITTER_EMAIL="c.miter@example.com" &&
export GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL GIT_COMMITTER_NAME GIT_COMMITTER_EMAIL
ok 23 - setup: new author and committer
expecting success of 4150.24 'am changes committer and keeps author':
test_tick &&
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout first &&
git am patch2 &&
test_path_is_missing .git/rebase-apply &&
test "$(git rev-parse main^^)" = "$(git rev-parse HEAD^^)" &&
git diff --exit-code main..HEAD &&
git diff --exit-code main^..HEAD^ &&
compare author main HEAD &&
compare author main^ HEAD^ &&
test "$GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>" = \
"$(git log -1 --pretty=format:"%cn <%ce>" HEAD)"
HEAD is now at 9f99c7e This line should not be included in the commit message with --scissors enabled.
Previous HEAD position was 9f99c7e This line should not be included in the commit message with --scissors enabled.
HEAD is now at 6b2d93f first
Applying: second
Applying: third
ok 24 - am changes committer and keeps author
expecting success of 4150.25 'am --signoff adds Signed-off-by: line':
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout -b topic_2 first &&
git am --signoff <patch2 &&
{
printf "third\n\nSigned-off-by: %s <%s>\n\n" \
"$GIT_COMMITTER_NAME" "$GIT_COMMITTER_EMAIL" &&
cat msg &&
printf "Signed-off-by: %s <%s>\n\n" \
"$GIT_COMMITTER_NAME" "$GIT_COMMITTER_EMAIL"
} >expected-log &&
git log --pretty=%B -2 HEAD >actual &&
test_cmp expected-log actual
HEAD is now at ae63ba7 third
Warning: you are leaving 2 commits behind, not connected to
any of your branches:
ae63ba7 third
480301e second
If you want to keep them by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> ae63ba7
Switched to a new branch 'topic_2'
Applying: second
Applying: third
ok 25 - am --signoff adds Signed-off-by: line
expecting success of 4150.26 'am stays in branch':
echo refs/heads/topic_2 >expected &&
git symbolic-ref HEAD >actual &&
test_cmp expected actual
ok 26 - am stays in branch
expecting success of 4150.27 'am --signoff does not add Signed-off-by: line if already there':
git format-patch --stdout first >patch3 &&
git reset --hard first &&
git am --signoff <patch3 &&
git log --pretty=%B -2 HEAD >actual &&
test_cmp expected-log actual
HEAD is now at 6b2d93f first
Applying: second
Applying: third
ok 27 - am --signoff does not add Signed-off-by: line if already there
expecting success of 4150.28 'am --signoff adds Signed-off-by: if another author is preset':
NAME="A N Other" &&
EMAIL="a.n.other@example.com" &&
{
printf "third\n\nSigned-off-by: %s <%s>\nSigned-off-by: %s <%s>\n\n" \
"$GIT_COMMITTER_NAME" "$GIT_COMMITTER_EMAIL" \
"$NAME" "$EMAIL" &&
cat msg &&
printf "Signed-off-by: %s <%s>\nSigned-off-by: %s <%s>\n\n" \
"$GIT_COMMITTER_NAME" "$GIT_COMMITTER_EMAIL" \
"$NAME" "$EMAIL"
} >expected-log &&
git reset --hard first &&
GIT_COMMITTER_NAME="$NAME" GIT_COMMITTER_EMAIL="$EMAIL" \
git am --signoff <patch3 &&
git log --pretty=%B -2 HEAD >actual &&
test_cmp expected-log actual
HEAD is now at 6b2d93f first
Applying: second
Applying: third
ok 28 - am --signoff adds Signed-off-by: if another author is preset
expecting success of 4150.29 'am --signoff duplicates Signed-off-by: if it is not the last one':
NAME="A N Other" &&
EMAIL="a.n.other@example.com" &&
{
printf "third\n\nSigned-off-by: %s <%s>\n\
Signed-off-by: %s <%s>\nSigned-off-by: %s <%s>\n\n" \
"$GIT_COMMITTER_NAME" "$GIT_COMMITTER_EMAIL" \
"$NAME" "$EMAIL" \
"$GIT_COMMITTER_NAME" "$GIT_COMMITTER_EMAIL" &&
cat msg &&
printf "Signed-off-by: %s <%s>\nSigned-off-by: %s <%s>\n\
Signed-off-by: %s <%s>\n\n" \
"$GIT_COMMITTER_NAME" "$GIT_COMMITTER_EMAIL" \
"$NAME" "$EMAIL" \
"$GIT_COMMITTER_NAME" "$GIT_COMMITTER_EMAIL"
} >expected-log &&
git format-patch --stdout first >patch3 &&
git reset --hard first &&
git am --signoff <patch3 &&
git log --pretty=%B -2 HEAD >actual &&
test_cmp expected-log actual
HEAD is now at 6b2d93f first
Applying: second
Applying: third
ok 29 - am --signoff duplicates Signed-off-by: if it is not the last one
expecting success of 4150.30 'am without --keep removes Re: and [PATCH] stuff':
git format-patch --stdout HEAD^ >tmp &&
sed -e "/^Subject/ s,\[PATCH,Re: Re: Re: & 1/5 v2] [foo," tmp >patch4 &&
git reset --hard HEAD^ &&
git am <patch4 &&
git rev-parse HEAD >expected &&
git rev-parse topic_2 >actual &&
test_cmp expected actual
HEAD is now at b55fe7d second
Applying: third
ok 30 - am without --keep removes Re: and [PATCH] stuff
expecting success of 4150.31 'am --keep really keeps the subject':
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout HEAD^ &&
git am --keep patch4 &&
test_path_is_missing .git/rebase-apply &&
git cat-file commit HEAD >actual &&
grep "Re: Re: Re: \[PATCH 1/5 v2\] \[foo\] third" actual
HEAD is now at e3375b9 third
Note: switching to 'HEAD^'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at b55fe7d second
Applying: Re: Re: Re: [PATCH 1/5 v2] [foo] third
Re: Re: Re: [PATCH 1/5 v2] [foo] third
ok 31 - am --keep really keeps the subject
expecting success of 4150.32 'am --keep-non-patch really keeps the non-patch part':
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout HEAD^ &&
git am --keep-non-patch patch4 &&
test_path_is_missing .git/rebase-apply &&
git cat-file commit HEAD >actual &&
grep "^\[foo\] third" actual
HEAD is now at f45669a Re: Re: Re: [PATCH 1/5 v2] [foo] third
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
f45669a Re: Re: Re: [PATCH 1/5 v2] [foo] third
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> f45669a
HEAD is now at b55fe7d second
Applying: [foo] third
[foo] third
ok 32 - am --keep-non-patch really keeps the non-patch part
expecting success of 4150.33 'setup am -3':
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout -b base3way topic_2 &&
sed -n -e "3,\$p" msg >file &&
head -n 9 msg >>file &&
git add file &&
test_tick &&
git commit -m "copied stuff"
HEAD is now at 44e89ee [foo] third
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
44e89ee [foo] third
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 44e89ee
Switched to a new branch 'base3way'
[base3way 899ba97] copied stuff
Author: Another Thor <a.thor@example.com>
1 file changed, 9 insertions(+)
ok 33 - setup am -3
expecting success of 4150.34 'am -3 falls back to 3-way merge':
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout -b lorem2 base3way &&
git am -3 lorem-move.patch &&
test_path_is_missing .git/rebase-apply &&
git diff --exit-code lorem
HEAD is now at 899ba97 copied stuff
Switched to a new branch 'lorem2'
Applying: moved stuff
Using index info to reconstruct a base tree...
M file
Falling back to patching base and 3-way merge...
Merging:
899ba97 copied stuff
virtual moved stuff
found 1 common ancestor:
virtual f192f7dcb36af1757e1a66463400563fdcef521e
Auto-merging file
Applying: added another file
ok 34 - am -3 falls back to 3-way merge
expecting success of 4150.35 'am -3 -p0 can read --no-prefix patch':
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout -b lorem3 base3way &&
git am -3 -p0 lorem-zero.patch &&
test_path_is_missing .git/rebase-apply &&
git diff --exit-code lorem
HEAD is now at be86ef0 added another file
Switched to a new branch 'lorem3'
Applying: moved stuff
Using index info to reconstruct a base tree...
M file
Falling back to patching base and 3-way merge...
Merging:
899ba97 copied stuff
virtual moved stuff
found 1 common ancestor:
virtual f192f7dcb36af1757e1a66463400563fdcef521e
Auto-merging file
Applying: added another file
ok 35 - am -3 -p0 can read --no-prefix patch
expecting success of 4150.36 'am with config am.threeWay falls back to 3-way merge':
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout -b lorem4 base3way &&
test_config am.threeWay 1 &&
git am lorem-move.patch &&
test_path_is_missing .git/rebase-apply &&
git diff --exit-code lorem
HEAD is now at be86ef0 added another file
Switched to a new branch 'lorem4'
Applying: moved stuff
Using index info to reconstruct a base tree...
M file
Falling back to patching base and 3-way merge...
Merging:
899ba97 copied stuff
virtual moved stuff
found 1 common ancestor:
virtual f192f7dcb36af1757e1a66463400563fdcef521e
Auto-merging file
Applying: added another file
ok 36 - am with config am.threeWay falls back to 3-way merge
expecting success of 4150.37 'am with config am.threeWay overridden by --no-3way':
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout -b lorem5 base3way &&
test_config am.threeWay 1 &&
test_must_fail git am --no-3way lorem-move.patch &&
test_path_is_dir .git/rebase-apply
HEAD is now at be86ef0 added another file
Switched to a new branch 'lorem5'
error: patch failed: file:28
error: file: patch does not apply
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Applying: moved stuff
Patch failed at 0001 moved stuff
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
ok 37 - am with config am.threeWay overridden by --no-3way
expecting success of 4150.38 'am can rename a file':
grep "^rename from" rename.patch &&
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout lorem^0 &&
git am rename.patch &&
test_path_is_missing .git/rebase-apply &&
git update-index --refresh &&
git diff --exit-code rename
rename from file
HEAD is now at 899ba97 copied stuff
Note: switching to 'lorem^0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 1048ce6 added another file
Applying: renamed a file
ok 38 - am can rename a file
expecting success of 4150.39 'am -3 can rename a file':
grep "^rename from" rename.patch &&
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout lorem^0 &&
git am -3 rename.patch &&
test_path_is_missing .git/rebase-apply &&
git update-index --refresh &&
git diff --exit-code rename
rename from file
HEAD is now at 366127b renamed a file
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
366127b renamed a file
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 366127b
HEAD is now at 1048ce6 added another file
Applying: renamed a file
ok 39 - am -3 can rename a file
expecting success of 4150.40 'am -3 can rename a file after falling back to 3-way merge':
grep "^rename from" rename-add.patch &&
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout lorem^0 &&
git am -3 rename-add.patch &&
test_path_is_missing .git/rebase-apply &&
git update-index --refresh &&
git diff --exit-code rename
rename from file
HEAD is now at 366127b renamed a file
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
366127b renamed a file
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 366127b
HEAD is now at 1048ce6 added another file
Applying: renamed a file and added another
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Merging:
1048ce6 added another file
virtual renamed a file and added another
found 1 common ancestor:
virtual d0e8bd27a52a44dc341376225b2fa62e456df51e
ok 40 - am -3 can rename a file after falling back to 3-way merge
expecting success of 4150.41 'am -3 -q is quiet':
rm -fr .git/rebase-apply &&
git checkout -f lorem2 &&
git reset base3way --hard &&
git am -3 -q lorem-move.patch >output.out 2>&1 &&
test_must_be_empty output.out
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
732bd79 renamed a file and added another
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 732bd79
Switched to branch 'lorem2'
HEAD is now at 899ba97 copied stuff
ok 41 - am -3 -q is quiet
expecting success of 4150.42 'am pauses on conflict':
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout lorem2^^ &&
test_must_fail git am lorem-move.patch &&
test -d .git/rebase-apply
HEAD is now at be86ef0 added another file
Note: switching to 'lorem2^^'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 899ba97 copied stuff
error: patch failed: file:28
error: file: patch does not apply
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Applying: moved stuff
Patch failed at 0001 moved stuff
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
ok 42 - am pauses on conflict
expecting success of 4150.43 'am --show-current-patch':
git am --show-current-patch >actual.patch &&
test_cmp .git/rebase-apply/0001 actual.patch
ok 43 - am --show-current-patch
expecting success of 4150.44 'am --show-current-patch=raw':
git am --show-current-patch=raw >actual.patch &&
test_cmp .git/rebase-apply/0001 actual.patch
ok 44 - am --show-current-patch=raw
expecting success of 4150.45 'am --show-current-patch=diff':
git am --show-current-patch=diff >actual.patch &&
test_cmp .git/rebase-apply/patch actual.patch
ok 45 - am --show-current-patch=diff
expecting success of 4150.46 'am accepts repeated --show-current-patch':
git am --show-current-patch --show-current-patch=raw >actual.patch &&
test_cmp .git/rebase-apply/0001 actual.patch
ok 46 - am accepts repeated --show-current-patch
expecting success of 4150.47 'am detects incompatible --show-current-patch':
test_must_fail git am --show-current-patch=raw --show-current-patch=diff &&
test_must_fail git am --show-current-patch --show-current-patch=diff
error: options '--show-current-patch=--show-current-patch' and 'diff=raw' cannot be used together
error: options '--show-current-patch=--show-current-patch' and 'diff=raw' cannot be used together
ok 47 - am detects incompatible --show-current-patch
expecting success of 4150.48 'am --skip works':
echo goodbye >expected &&
git am --skip &&
test_path_is_missing .git/rebase-apply &&
git diff --exit-code lorem2^^ -- file &&
test_cmp expected another
Applying: added another file
ok 48 - am --skip works
expecting success of 4150.49 'am --abort removes a stray directory':
mkdir .git/rebase-apply &&
git am --abort &&
test_path_is_missing .git/rebase-apply
ok 49 - am --abort removes a stray directory
expecting success of 4150.50 'am refuses patches when paused':
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout lorem2^^ &&
test_must_fail git am lorem-move.patch &&
test_path_is_dir .git/rebase-apply &&
test_cmp_rev lorem2^^ HEAD &&
test_must_fail git am <lorem-move.patch &&
test_path_is_dir .git/rebase-apply &&
test_cmp_rev lorem2^^ HEAD
HEAD is now at e608aee added another file
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
e608aee added another file
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> e608aee
HEAD is now at 899ba97 copied stuff
error: patch failed: file:28
error: file: patch does not apply
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Applying: moved stuff
Patch failed at 0001 moved stuff
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
fatal: previous rebase directory .git/rebase-apply still exists but mbox given.
ok 50 - am refuses patches when paused
expecting success of 4150.51 'am --resolved works':
echo goodbye >expected &&
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout lorem2^^ &&
test_must_fail git am lorem-move.patch &&
test -d .git/rebase-apply &&
echo resolved >>file &&
git add file &&
git am --resolved &&
test_path_is_missing .git/rebase-apply &&
test_cmp expected another
HEAD is now at 899ba97 copied stuff
HEAD is now at 899ba97 copied stuff
error: patch failed: file:28
error: file: patch does not apply
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Applying: moved stuff
Patch failed at 0001 moved stuff
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
Applying: moved stuff
Applying: added another file
ok 51 - am --resolved works
expecting success of 4150.52 'am --resolved fails if index has no changes':
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout lorem2^^ &&
test_must_fail git am lorem-move.patch &&
test_path_is_dir .git/rebase-apply &&
test_cmp_rev lorem2^^ HEAD &&
test_must_fail git am --resolved &&
test_path_is_dir .git/rebase-apply &&
test_cmp_rev lorem2^^ HEAD
HEAD is now at 25c657e added another file
Warning: you are leaving 2 commits behind, not connected to
any of your branches:
25c657e added another file
d8fd27b moved stuff
If you want to keep them by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 25c657e
HEAD is now at 899ba97 copied stuff
error: patch failed: file:28
error: file: patch does not apply
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Applying: moved stuff
Patch failed at 0001 moved stuff
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
Applying: moved stuff
No changes - did you forget to use 'git add'?
If there is nothing left to stage, chances are that something else
already introduced the same changes; you might want to skip this patch.
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
ok 52 - am --resolved fails if index has no changes
expecting success of 4150.53 'am --resolved fails if index has unmerged entries':
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout second &&
test_must_fail git am -3 lorem-move.patch &&
test_path_is_dir .git/rebase-apply &&
test_cmp_rev second HEAD &&
test_must_fail git am --resolved >err &&
test_path_is_dir .git/rebase-apply &&
test_cmp_rev second HEAD &&
test_i18ngrep "still have unmerged paths" err
HEAD is now at 899ba97 copied stuff
Previous HEAD position was 899ba97 copied stuff
HEAD is now at 88f8893 second
Applying: moved stuff
Using index info to reconstruct a base tree...
M file
Falling back to patching base and 3-way merge...
Merging:
88f8893 second
virtual moved stuff
found 1 common ancestor:
virtual f192f7dcb36af1757e1a66463400563fdcef521e
Auto-merging file
CONFLICT (content): Merge conflict in file
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 moved stuff
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
You still have unmerged paths in your index.
ok 53 - am --resolved fails if index has unmerged entries
expecting success of 4150.54 'am takes patches from a Pine mailbox':
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout first &&
cat pine patch1 | git am &&
test_path_is_missing .git/rebase-apply &&
git diff --exit-code main^..HEAD
HEAD is now at 88f8893 second
Previous HEAD position was 88f8893 second
HEAD is now at 6b2d93f first
Applying: second
ok 54 - am takes patches from a Pine mailbox
expecting success of 4150.55 'am fails on mail without patch':
rm -fr .git/rebase-apply &&
git reset --hard &&
test_must_fail git am <failmail &&
git am --abort &&
test_path_is_missing .git/rebase-apply
HEAD is now at 7ce6dd8 second
Patch is empty.
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To record the empty patch as an empty commit, run "git am --allow-empty".
To restore the original branch and stop patching, run "git am --abort".
ok 55 - am fails on mail without patch
expecting success of 4150.56 'am fails on empty patch':
rm -fr .git/rebase-apply &&
git reset --hard &&
echo "---" >>failmail &&
test_must_fail git am <failmail &&
git am --skip &&
test_path_is_missing .git/rebase-apply
HEAD is now at 7ce6dd8 second
error: No valid patches in input (allow with "--allow-empty")
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Applying: git-foo.sh
Patch failed at 0001 git-foo.sh
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
ok 56 - am fails on empty patch
expecting success of 4150.57 'am works from stdin in subdirectory':
rm -fr subdir &&
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout first &&
(
mkdir -p subdir &&
cd subdir &&
git am <../patch1
) &&
git diff --exit-code second
HEAD is now at 7ce6dd8 second
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
7ce6dd8 second
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 7ce6dd8
HEAD is now at 6b2d93f first
Applying: second
ok 57 - am works from stdin in subdirectory
expecting success of 4150.58 'am works from file (relative path given) in subdirectory':
rm -fr subdir &&
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout first &&
(
mkdir -p subdir &&
cd subdir &&
git am ../patch1
) &&
git diff --exit-code second
HEAD is now at 7ce6dd8 second
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
7ce6dd8 second
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 7ce6dd8
HEAD is now at 6b2d93f first
Applying: second
ok 58 - am works from file (relative path given) in subdirectory
expecting success of 4150.59 'am works from file (absolute path given) in subdirectory':
rm -fr subdir &&
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout first &&
P=$(pwd) &&
(
mkdir -p subdir &&
cd subdir &&
git am "$P/patch1"
) &&
git diff --exit-code second
HEAD is now at 7ce6dd8 second
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
7ce6dd8 second
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 7ce6dd8
HEAD is now at 6b2d93f first
Applying: second
ok 59 - am works from file (absolute path given) in subdirectory
expecting success of 4150.60 'am --committer-date-is-author-date':
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout first &&
test_tick &&
git am --committer-date-is-author-date patch1 &&
git cat-file commit HEAD | sed -e "/^\$/q" >head1 &&
sed -ne "/^author /s/.*> //p" head1 >at &&
sed -ne "/^committer /s/.*> //p" head1 >ct &&
test_cmp at ct
HEAD is now at 7ce6dd8 second
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
7ce6dd8 second
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 7ce6dd8
HEAD is now at 6b2d93f first
Applying: second
ok 60 - am --committer-date-is-author-date
expecting success of 4150.61 'am without --committer-date-is-author-date':
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout first &&
test_tick &&
git am patch1 &&
git cat-file commit HEAD | sed -e "/^\$/q" >head1 &&
sed -ne "/^author /s/.*> //p" head1 >at &&
sed -ne "/^committer /s/.*> //p" head1 >ct &&
! test_cmp at ct
HEAD is now at 5709bd2 second
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
5709bd2 second
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 5709bd2
HEAD is now at 6b2d93f first
Applying: second
--- at 2023-10-09 02:19:54.497113381 +0000
+++ ct 2023-10-09 02:19:54.497113381 +0000
@@ -1 +1 @@
-1112912053 -0700
+1112912293 -0700
ok 61 - am without --committer-date-is-author-date
expecting success of 4150.62 'am --ignore-date':
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout first &&
test_tick &&
git am --ignore-date patch1 &&
git cat-file commit HEAD | sed -e "/^\$/q" >head1 &&
sed -ne "/^author /s/.*> //p" head1 >at &&
grep "+0000" at
HEAD is now at 9fa39e1 second
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
9fa39e1 second
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 9fa39e1
HEAD is now at 6b2d93f first
Applying: second
1696817994 +0000
ok 62 - am --ignore-date
expecting success of 4150.63 'am into an unborn branch':
git rev-parse first^{tree} >expected &&
rm -fr .git/rebase-apply &&
git reset --hard &&
rm -fr subdir &&
mkdir subdir &&
git format-patch --numbered-files -o subdir -1 first &&
(
cd subdir &&
git init &&
git am 1
) &&
(
cd subdir &&
git rev-parse HEAD^{tree} >../actual
) &&
test_cmp expected actual
HEAD is now at 3d74673 second
subdir/1
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4150-am/subdir/.git/
applying to an empty history
Applying: first
ok 63 - am into an unborn branch
expecting success of 4150.64 'am newline in subject':
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout first &&
test_tick &&
sed -e "s/second/second \\\n foo/" patch1 >patchnl &&
git am <patchnl >output.out 2>&1 &&
test_i18ngrep "^Applying: second \\\n foo$" output.out
HEAD is now at 3d74673 second
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
3d74673 second
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 3d74673
HEAD is now at 6b2d93f first
Applying: second \n foo
ok 64 - am newline in subject
expecting success of 4150.65 'am -q is quiet':
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout first &&
test_tick &&
git am -q <patch1 >output.out 2>&1 &&
test_must_be_empty output.out
HEAD is now at bee6b96 second \n foo
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
bee6b96 second \n foo
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> bee6b96
HEAD is now at 6b2d93f first
ok 65 - am -q is quiet
expecting success of 4150.66 'am empty-file does not infloop':
rm -fr .git/rebase-apply &&
git reset --hard &&
touch empty-file &&
test_tick &&
test_must_fail git am empty-file 2>actual &&
echo Patch format detection failed. >expected &&
test_cmp expected actual
HEAD is now at 0b3df7d second
ok 66 - am empty-file does not infloop
expecting success of 4150.67 'am --message-id really adds the message id':
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout HEAD^ &&
git am --message-id patch1.eml &&
test_path_is_missing .git/rebase-apply &&
git cat-file commit HEAD | tail -n1 >actual &&
grep Message-ID patch1.eml >expected &&
test_cmp expected actual
HEAD is now at 0b3df7d second
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
0b3df7d second
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 0b3df7d
HEAD is now at 6b2d93f first
Applying: second
ok 67 - am --message-id really adds the message id
expecting success of 4150.68 'am.messageid really adds the message id':
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout HEAD^ &&
test_config am.messageid true &&
git am patch1.eml &&
test_path_is_missing .git/rebase-apply &&
git cat-file commit HEAD | tail -n1 >actual &&
grep Message-ID patch1.eml >expected &&
test_cmp expected actual
HEAD is now at 560abfc second
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
560abfc second
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 560abfc
HEAD is now at 6b2d93f first
Applying: second
ok 68 - am.messageid really adds the message id
expecting success of 4150.69 'am --message-id -s signs off after the message id':
rm -fr .git/rebase-apply &&
git reset --hard &&
git checkout HEAD^ &&
git am -s --message-id patch1.eml &&
test_path_is_missing .git/rebase-apply &&
git cat-file commit HEAD | tail -n2 | head -n1 >actual &&
grep Message-ID patch1.eml >expected &&
test_cmp expected actual
HEAD is now at 560abfc second
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
560abfc second
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 560abfc
HEAD is now at 6b2d93f first
Applying: second
ok 69 - am --message-id -s signs off after the message id
expecting success of 4150.70 'am -3 works with rerere':
rm -fr .git/rebase-apply &&
git reset --hard &&
# make patches one->two and two->three...
test_commit one file &&
test_commit two file &&
test_commit three file &&
git format-patch -2 --stdout >seq.patch &&
# and create a situation that conflicts...
git reset --hard one &&
test_commit other file &&
# enable rerere...
test_config rerere.enabled true &&
test_when_finished "rm -rf .git/rr-cache" &&
# ...and apply. Our resolution is to skip the first
# patch, and the rerere the second one.
test_must_fail git am -3 seq.patch &&
test_must_fail git am --skip &&
echo resolved >file &&
git add file &&
git am --resolved &&
# now apply again, and confirm that rerere engaged (we still
# expect failure from am because rerere does not auto-commit
# for us).
git reset --hard other &&
test_must_fail git am -3 seq.patch &&
test_must_fail git am --skip &&
echo resolved >expect &&
test_cmp expect file
HEAD is now at 7f081b2 second
[detached HEAD 377a3f5] one
Author: Another Thor <a.thor@example.com>
1 file changed, 1 insertion(+), 2 deletions(-)
[detached HEAD 2231600] two
Author: Another Thor <a.thor@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[detached HEAD e5ab1df] three
Author: Another Thor <a.thor@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
HEAD is now at 377a3f5 one
[detached HEAD 67f3de4] other
Author: Another Thor <a.thor@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Applying: two
Using index info to reconstruct a base tree...
M file
Falling back to patching base and 3-way merge...
Merging:
67f3de4 other
virtual two
found 1 common ancestor:
virtual 693a3de402bb23897ed5c931273e53c78eff0495
Auto-merging file
CONFLICT (content): Merge conflict in file
Recorded preimage for 'file'
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 two
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
Applying: three
Using index info to reconstruct a base tree...
M file
Falling back to patching base and 3-way merge...
Merging:
67f3de4 other
virtual three
found 1 common ancestor:
virtual aad8d5cef3915ab78b3227abaaac99b62db9eb54
Auto-merging file
CONFLICT (content): Merge conflict in file
Recorded preimage for 'file'
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0002 three
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
Recorded resolution for 'file'.
Applying: three
HEAD is now at 67f3de4 other
Applying: two
Using index info to reconstruct a base tree...
M file
Falling back to patching base and 3-way merge...
Merging:
67f3de4 other
virtual two
found 1 common ancestor:
virtual 693a3de402bb23897ed5c931273e53c78eff0495
Auto-merging file
CONFLICT (content): Merge conflict in file
Recorded preimage for 'file'
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 two
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
Applying: three
Using index info to reconstruct a base tree...
M file
Falling back to patching base and 3-way merge...
Merging:
67f3de4 other
virtual three
found 1 common ancestor:
virtual aad8d5cef3915ab78b3227abaaac99b62db9eb54
Auto-merging file
CONFLICT (content): Merge conflict in file
Resolved 'file' using previous resolution.
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0002 three
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
ok 70 - am -3 works with rerere
expecting success of 4150.71 'am -s unexpected trailer block':
rm -fr .git/rebase-apply &&
git reset --hard &&
echo signed >file &&
git add file &&
cat >msg <<-EOF &&
subject here
Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>
[jc: tweaked log message]
Signed-off-by: J C H <j@c.h>
EOF
git commit -F msg &&
git cat-file commit HEAD | sed -e "1,/^$/d" >original &&
git format-patch --stdout -1 >patch &&
git reset --hard HEAD^ &&
git am -s patch &&
(
cat original &&
echo "Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>"
) >expect &&
git cat-file commit HEAD | sed -e "1,/^$/d" >actual &&
test_cmp expect actual &&
cat >msg <<-\EOF &&
subject here
We make sure that there is a blank line between the log
message proper and Signed-off-by: line added.
EOF
git reset HEAD^ &&
git commit -F msg file &&
git cat-file commit HEAD | sed -e "1,/^$/d" >original &&
git format-patch --stdout -1 >patch &&
git reset --hard HEAD^ &&
git am -s patch &&
(
cat original &&
echo &&
echo "Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>"
) >expect &&
git cat-file commit HEAD | sed -e "1,/^$/d" >actual &&
test_cmp expect actual
HEAD is now at 67f3de4 other
[detached HEAD c30e654] subject here
Author: Another Thor <a.thor@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
HEAD is now at 67f3de4 other
Applying: subject here
Unstaged changes after reset:
M file
[detached HEAD 40f0ff1] subject here
Author: Another Thor <a.thor@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
HEAD is now at 67f3de4 other
Applying: subject here
ok 71 - am -s unexpected trailer block
expecting success of 4150.72 'am --patch-format=mboxrd handles mboxrd':
rm -fr .git/rebase-apply &&
git checkout -f first &&
echo mboxrd >>file &&
git add file &&
cat >msg <<-\INPUT_END &&
mboxrd should escape the body
From could trip up a loose mbox parser
>From extra escape for reversibility
INPUT_END
git commit -F msg &&
git -c format.mboxrd format-patch --stdout -1 >mboxrd1 &&
grep "^>From could trip up a loose mbox parser" mboxrd1 &&
git checkout -f first &&
git am --patch-format=mboxrd mboxrd1 &&
git cat-file commit HEAD | tail -n4 >out &&
test_cmp msg out
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
d98fa42 subject here
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> d98fa42
HEAD is now at 6b2d93f first
[detached HEAD dc8a2ae] mboxrd should escape the body
Author: Another Thor <a.thor@example.com>
1 file changed, 1 insertion(+)
>From could trip up a loose mbox parser
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
dc8a2ae mboxrd should escape the body
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> dc8a2ae
HEAD is now at 6b2d93f first
Applying: mboxrd should escape the body
ok 72 - am --patch-format=mboxrd handles mboxrd
expecting success of 4150.73 'am works with multi-line in-body headers':
FORTY="String that has a length of more than forty characters" &&
LONG="$FORTY $FORTY" &&
rm -fr .git/rebase-apply &&
git checkout -f first &&
echo one >> file &&
git commit -am "$LONG
Body test" --author="$LONG <long@example.com>" &&
git format-patch --stdout -1 >patch &&
# bump from, date, and subject down to in-body header
perl -lpe "
if (/^From:/) {
print \"From: x <x\@example.com>\";
print \"Date: Sat, 1 Jan 2000 00:00:00 +0000\";
print \"Subject: x\n\";
}
" patch >msg &&
git checkout HEAD^ &&
git am msg &&
# Ensure that the author and full message are present
git cat-file commit HEAD | grep "^author.*long@example.com" &&
git cat-file commit HEAD | grep "^$LONG$"
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
dc8a2ae mboxrd should escape the body
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> dc8a2ae
HEAD is now at 6b2d93f first
[detached HEAD c97171e] String that has a length of more than forty characters String that has a length of more than forty characters
Author: String that has a length of more than forty characters String that has a length of more than forty characters <long@example.com>
1 file changed, 1 insertion(+)
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
c97171e String that has a length of more than forty characters String that has a length of more than forty characters
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> c97171e
HEAD is now at 6b2d93f first
Applying: String that has a length of more than forty characters String that has a length of more than forty characters
author long@example.com <long@example.com> 1112912773 -0700
String that has a length of more than forty characters String that has a length of more than forty characters
ok 73 - am works with multi-line in-body headers
expecting success of 4150.74 'am --quit keeps HEAD where it is':
mkdir .git/rebase-apply &&
>.git/rebase-apply/last &&
>.git/rebase-apply/next &&
git rev-parse HEAD^ >.git/ORIG_HEAD &&
git rev-parse HEAD >expected &&
git am --quit &&
test_path_is_missing .git/rebase-apply &&
git rev-parse HEAD >actual &&
test_cmp expected actual
ok 74 - am --quit keeps HEAD where it is
expecting success of 4150.75 'am and .gitattibutes':
test_create_repo attributes &&
(
cd attributes &&
test_commit init &&
git config filter.test.clean "sed -e 's/smudged/clean/g'" &&
git config filter.test.smudge "sed -e 's/clean/smudged/g'" &&
test_commit second &&
git checkout -b test HEAD^ &&
echo "*.txt filter=test conflict-marker-size=10" >.gitattributes &&
git add .gitattributes &&
test_commit third &&
echo "This text is smudged." >a.txt &&
git add a.txt &&
test_commit fourth &&
git checkout -b removal HEAD^ &&
git rm .gitattributes &&
git add -u &&
test_commit fifth &&
git cherry-pick test &&
git checkout -b conflict third &&
echo "This text is different." >a.txt &&
git add a.txt &&
test_commit sixth &&
git checkout test &&
git format-patch --stdout main..HEAD >patches &&
git reset --hard main &&
git am patches &&
grep "smudged" a.txt &&
git checkout removal &&
git reset --hard &&
git format-patch --stdout main..HEAD >patches &&
git reset --hard main &&
git am patches &&
grep "clean" a.txt &&
git checkout conflict &&
git reset --hard &&
git format-patch --stdout main..HEAD >patches &&
git reset --hard fourth &&
test_must_fail git am -3 patches &&
grep "<<<<<<<<<<" a.txt
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4150-am/attributes/.git/
[main (root-commit) b1affd7] init
Author: Another Thor <a.thor@example.com>
1 file changed, 1 insertion(+)
create mode 100644 init.t
[main 078d104] second
Author: Another Thor <a.thor@example.com>
1 file changed, 1 insertion(+)
create mode 100644 second.t
Switched to a new branch 'test'
[test e6fa290] third
Author: Another Thor <a.thor@example.com>
2 files changed, 2 insertions(+)
create mode 100644 .gitattributes
create mode 100644 third.t
[test ca53213] fourth
Author: Another Thor <a.thor@example.com>
2 files changed, 2 insertions(+)
create mode 100644 a.txt
create mode 100644 fourth.t
Switched to a new branch 'removal'
rm '.gitattributes'
[removal 126fc1c] fifth
Author: Another Thor <a.thor@example.com>
2 files changed, 1 insertion(+), 1 deletion(-)
delete mode 100644 .gitattributes
create mode 100644 fifth.t
[removal 0bb88c2] fourth
Author: Another Thor <a.thor@example.com>
Date: Thu Apr 7 15:30:13 2005 -0700
2 files changed, 2 insertions(+)
create mode 100644 a.txt
create mode 100644 fourth.t
Switched to a new branch 'conflict'
[conflict e6420d6] sixth
Author: Another Thor <a.thor@example.com>
2 files changed, 2 insertions(+)
create mode 100644 a.txt
create mode 100644 sixth.t
Switched to branch 'test'
HEAD is now at 078d104 second
Applying: third
Applying: fourth
This text is smudged.
Switched to branch 'removal'
HEAD is now at 0bb88c2 fourth
HEAD is now at 078d104 second
Applying: third
Applying: fifth
Applying: fourth
This text is clean.
Switched to branch 'conflict'
HEAD is now at e6420d6 sixth
HEAD is now at ca53213 fourth
Applying: third
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Merging:
ca53213 fourth
virtual third
found 1 common ancestor:
virtual 4b825dc642cb6eb9a060e54bf8d69288fbee4904
No changes -- Patch already applied.
Applying: sixth
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Merging:
ca53213 fourth
virtual sixth
found 1 common ancestor:
virtual 4b825dc642cb6eb9a060e54bf8d69288fbee4904
CONFLICT (add/add): Merge conflict in a.txt
Auto-merging a.txt
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0002 sixth
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
<<<<<<<<<< HEAD
ok 75 - am and .gitattibutes
expecting success of 4150.76 'apply binary blob in partial clone':
printf "\\000" >binary &&
git add binary &&
git commit -m "binary blob" &&
git format-patch --stdout -m HEAD^ >patch &&
test_create_repo server &&
test_config -C server uploadpack.allowfilter 1 &&
test_config -C server uploadpack.allowanysha1inwant 1 &&
git clone --filter=blob:none "file://$(pwd)/server" client &&
test_when_finished "rm -rf client" &&
# Exercise to make sure that it works
git -C client am ../patch
[detached HEAD 0dd6bd5] binary blob
Author: Another Thor <a.thor@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 binary
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4150-am/server/.git/
Cloning into 'client'...
warning: You appear to have cloned an empty repository.
Applying: binary blob
applying to an empty history
ok 76 - apply binary blob in partial clone
expecting success of 4150.77 'an empty input file is error regardless of --empty option':
test_when_finished "git am --abort || :" &&
test_must_fail git am --empty=drop empty.patch 2>actual &&
echo "Patch format detection failed." >expected &&
test_cmp expected actual
fatal: Resolve operation not in progress, we are not resuming.
ok 77 - an empty input file is error regardless of --empty option
expecting success of 4150.78 'invalid when passing the --empty option alone':
test_when_finished "git am --abort || :" &&
git checkout empty-commit^ &&
test_must_fail git am --empty empty-commit.patch 2>err &&
echo "error: invalid value for '--empty': 'empty-commit.patch'" >expected &&
test_cmp expected err
Warning: you are leaving 2 commits behind, not connected to
any of your branches:
0dd6bd5 binary blob
f2ac200 String that has a length of more than forty characters String that has a length of more than forty characters
If you want to keep them by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 0dd6bd5
HEAD is now at 756adf8 renamed a file and added another
fatal: Resolve operation not in progress, we are not resuming.
ok 78 - invalid when passing the --empty option alone
expecting success of 4150.79 'a message without a patch is an error (default)':
test_when_finished "git am --abort || :" &&
test_must_fail git am empty-commit.patch >err &&
grep "Patch is empty" err
Patch is empty.
ok 79 - a message without a patch is an error (default)
expecting success of 4150.80 'a message without a patch is an error where an explicit "--empty=stop" is given':
test_when_finished "git am --abort || :" &&
test_must_fail git am --empty=stop empty-commit.patch >err &&
grep "Patch is empty." err
Patch is empty.
ok 80 - a message without a patch is an error where an explicit "--empty=stop" is given
expecting success of 4150.81 'a message without a patch will be skipped when "--empty=drop" is given':
git am --empty=drop empty-commit.patch >output &&
git rev-parse empty-commit^ >expected &&
git rev-parse HEAD >actual &&
test_cmp expected actual &&
grep "Skipping: empty commit" output
Skipping: empty commit
ok 81 - a message without a patch will be skipped when "--empty=drop" is given
expecting success of 4150.82 'record as an empty commit when meeting e-mail message that lacks a patch':
git am --empty=keep empty-commit.patch >output &&
test_path_is_missing .git/rebase-apply &&
git show empty-commit --format="%B" >expected &&
git show HEAD --format="%B" >actual &&
grep -f actual expected &&
grep "Creating an empty commit: empty commit" output
empty commit
Creating an empty commit: empty commit
ok 82 - record as an empty commit when meeting e-mail message that lacks a patch
expecting success of 4150.83 'skip an empty patch in the middle of an am session':
git checkout empty-commit^ &&
test_must_fail git am empty-commit.patch >err &&
grep "Patch is empty." err &&
grep "To record the empty patch as an empty commit, run \"git am --allow-empty\"." err &&
git am --skip &&
test_path_is_missing .git/rebase-apply &&
git rev-parse empty-commit^ >expected &&
git rev-parse HEAD >actual &&
test_cmp expected actual
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
a55d21e empty commit
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> a55d21e
HEAD is now at 756adf8 renamed a file and added another
Patch is empty.
To record the empty patch as an empty commit, run "git am --allow-empty".
ok 83 - skip an empty patch in the middle of an am session
expecting success of 4150.84 'record an empty patch as an empty commit in the middle of an am session':
git checkout empty-commit^ &&
test_must_fail git am empty-commit.patch >err &&
grep "Patch is empty." err &&
grep "To record the empty patch as an empty commit, run \"git am --allow-empty\"." err &&
git am --allow-empty >output &&
grep "No changes - recorded it as an empty commit." output &&
test_path_is_missing .git/rebase-apply &&
git show empty-commit --format="%B" >expected &&
git show HEAD --format="%B" >actual &&
grep -f actual expected
HEAD is now at 756adf8 renamed a file and added another
Patch is empty.
To record the empty patch as an empty commit, run "git am --allow-empty".
No changes - recorded it as an empty commit.
empty commit
ok 84 - record an empty patch as an empty commit in the middle of an am session
expecting success of 4150.85 'create an non-empty commit when the index IS changed though "--allow-empty" is given':
git checkout empty-commit^ &&
test_must_fail git am empty-commit.patch >err &&
: >empty-file &&
git add empty-file &&
git am --allow-empty &&
git show empty-commit --format="%B" >expected &&
git show HEAD --format="%B" >actual &&
grep -f actual expected &&
git diff HEAD^..HEAD --name-only
Warning: you are leaving 1 commit behind, not connected to
any of your branches:
a55d21e empty commit
If you want to keep it by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> a55d21e
HEAD is now at 756adf8 renamed a file and added another
Applying: empty commit
empty commit
empty-file
ok 85 - create an non-empty commit when the index IS changed though "--allow-empty" is given
expecting success of 4150.86 'cannot create empty commits when there is a clean index due to merge conflicts':
test_when_finished "git am --abort || :" &&
git rev-parse HEAD >expected &&
test_must_fail git am seq.patch &&
test_must_fail git am --allow-empty >err &&
! grep "To record the empty patch as an empty commit, run \"git am --allow-empty\"." err &&
git rev-parse HEAD >actual &&
test_cmp actual expected
error: file: does not exist in index
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Applying: two
Patch failed at 0001 two
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
ok 86 - cannot create empty commits when there is a clean index due to merge conflicts
expecting success of 4150.87 'cannot create empty commits when there is unmerged index due to merge conflicts':
test_when_finished "git am --abort || :" &&
git rev-parse HEAD >expected &&
test_must_fail git am -3 seq.patch &&
test_must_fail git am --allow-empty >err &&
! grep "To record the empty patch as an empty commit, run \"git am --allow-empty\"." err &&
git rev-parse HEAD >actual &&
test_cmp actual expected
Applying: two
Using index info to reconstruct a base tree...
A file
Falling back to patching base and 3-way merge...
Merging:
9267e73 empty commit
virtual two
found 1 common ancestor:
virtual 693a3de402bb23897ed5c931273e53c78eff0495
CONFLICT (modify/delete): file deleted in HEAD and modified in two. Version two of file left in tree.
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 two
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
ok 87 - cannot create empty commits when there is unmerged index due to merge conflicts
# passed all 87 test(s)
1..87
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4203-mailmap.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4203-mailmap/.git/
expecting success of 4203.1 'setup commits and contacts file':
test_commit initial one one &&
test_commit --author "nick1 <bugs@company.xx>" --append second one two
[main (root-commit) 3a2fdcb] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 one
[main e0f6049] second
Author: nick1 <bugs@company.xx>
1 file changed, 1 insertion(+)
ok 1 - setup commits and contacts file
expecting success of 4203.2 'check-mailmap no arguments':
test_must_fail git check-mailmap
fatal: no contacts specified
ok 2 - check-mailmap no arguments
expecting success of 4203.3 'check-mailmap arguments':
cat >expect <<-EOF &&
$GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL>
nick1 <bugs@company.xx>
EOF
git check-mailmap \
"$GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL>" \
"nick1 <bugs@company.xx>" >actual &&
test_cmp expect actual
ok 3 - check-mailmap arguments
expecting success of 4203.4 'check-mailmap --stdin':
cat >expect <<-EOF &&
$GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL>
nick1 <bugs@company.xx>
EOF
git check-mailmap --stdin <expect >actual &&
test_cmp expect actual
ok 4 - check-mailmap --stdin
expecting success of 4203.5 'check-mailmap --stdin arguments: no mapping':
test_when_finished "rm contacts" &&
cat >contacts <<-EOF &&
$GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL>
nick1 <bugs@company.xx>
EOF
cat >expect <<-\EOF &&
Internal Guy <bugs@company.xy>
EOF
cat contacts >>expect &&
git check-mailmap --stdin "Internal Guy <bugs@company.xy>" \
<contacts >actual &&
test_cmp expect actual
ok 5 - check-mailmap --stdin arguments: no mapping
expecting success of 4203.6 'check-mailmap --stdin arguments: mapping':
test_when_finished "rm .mailmap" &&
cat >.mailmap <<-EOF &&
New Name <$GIT_AUTHOR_EMAIL>
EOF
cat >stdin <<-EOF &&
Old Name <$GIT_AUTHOR_EMAIL>
EOF
cp .mailmap expect &&
git check-mailmap --stdin <stdin >actual &&
test_cmp expect actual &&
cat .mailmap >>expect &&
git check-mailmap --stdin "Another Old Name <$GIT_AUTHOR_EMAIL>" \
<stdin >actual &&
test_cmp expect actual
ok 6 - check-mailmap --stdin arguments: mapping
expecting success of 4203.7 'check-mailmap bogus contact':
test_must_fail git check-mailmap bogus
fatal: unable to parse contact: bogus
ok 7 - check-mailmap bogus contact
expecting success of 4203.8 'check-mailmap bogus contact --stdin':
test_must_fail git check-mailmap --stdin bogus </dev/null
fatal: unable to parse contact: bogus
ok 8 - check-mailmap bogus contact --stdin
expecting success of 4203.9 'No mailmap':
cat >expect <<-EOF &&
$GIT_AUTHOR_NAME (1):
initial
nick1 (1):
second
EOF
git shortlog HEAD >actual &&
test_cmp expect actual
ok 9 - No mailmap
expecting success of 4203.10 'setup default .mailmap':
cat >default.map <<-EOF
Repo Guy <$GIT_AUTHOR_EMAIL>
EOF
ok 10 - setup default .mailmap
expecting success of 4203.11 'test default .mailmap':
test_when_finished "rm .mailmap" &&
cp default.map .mailmap &&
cat >expect <<-\EOF &&
Repo Guy (1):
initial
nick1 (1):
second
EOF
git shortlog HEAD >actual &&
test_cmp expect actual
ok 11 - test default .mailmap
expecting success of 4203.12 'mailmap.file set':
test_when_finished "rm .mailmap" &&
cp default.map .mailmap &&
test_config mailmap.file internal.map &&
cat >internal.map <<-\EOF &&
Internal Guy <bugs@company.xx>
EOF
cat >expect <<-\EOF &&
Internal Guy (1):
second
Repo Guy (1):
initial
EOF
git shortlog HEAD >actual &&
test_cmp expect actual &&
# The internal_mailmap/.mailmap file is an a subdirectory, but
# as shown here it can also be outside the repository
test_when_finished "rm -rf sub-repo" &&
git clone . sub-repo &&
(
cd sub-repo &&
cp ../.mailmap . &&
git config mailmap.file ../internal.map &&
git shortlog HEAD >actual &&
test_cmp ../expect actual
)
Cloning into 'sub-repo'...
done.
ok 12 - mailmap.file set
expecting success of 4203.13 'mailmap.file override':
test_config mailmap.file internal.map &&
cat >internal.map <<-EOF &&
Internal Guy <bugs@company.xx>
External Guy <$GIT_AUTHOR_EMAIL>
EOF
cat >expect <<-\EOF &&
External Guy (1):
initial
Internal Guy (1):
second
EOF
git shortlog HEAD >actual &&
test_cmp expect actual
ok 13 - mailmap.file override
expecting success of 4203.14 'mailmap.file non-existent':
test_when_finished "rm .mailmap" &&
cp default.map .mailmap &&
cat >expect <<-\EOF &&
Repo Guy (1):
initial
nick1 (1):
second
EOF
git shortlog HEAD >actual &&
test_cmp expect actual
ok 14 - mailmap.file non-existent
expecting success of 4203.15 'name entry after email entry':
test_when_finished "rm .mailmap" &&
cp default.map .mailmap &&
test_config mailmap.file internal.map &&
cat >internal.map <<-\EOF &&
<bugs@company.xy> <bugs@company.xx>
Internal Guy <bugs@company.xx>
EOF
cat >expect <<-\EOF &&
Internal Guy (1):
second
Repo Guy (1):
initial
EOF
git shortlog HEAD >actual &&
test_cmp expect actual
ok 15 - name entry after email entry
expecting success of 4203.16 'name entry after email entry, case-insensitive':
test_when_finished "rm .mailmap" &&
cp default.map .mailmap &&
test_config mailmap.file internal.map &&
cat >internal.map <<-\EOF &&
<bugs@company.xy> <bugs@company.xx>
Internal Guy <BUGS@Company.xx>
EOF
cat >expect <<-\EOF &&
Internal Guy (1):
second
Repo Guy (1):
initial
EOF
git shortlog HEAD >actual &&
test_cmp expect actual &&
cat >internal.map <<-\EOF &&
NiCk <BuGs@CoMpAnY.Xy> NICK1 <BUGS@COMPANY.XX>
EOF
cat >expect <<-\EOF &&
NiCk (1):
second
Repo Guy (1):
initial
EOF
git shortlog HEAD >actual &&
test_cmp expect actual
ok 16 - name entry after email entry, case-insensitive
expecting success of 4203.17 'No mailmap files, but configured':
cat >expect <<-EOF &&
$GIT_AUTHOR_NAME (1):
initial
nick1 (1):
second
EOF
git shortlog HEAD >actual &&
test_cmp expect actual
ok 17 - No mailmap files, but configured
expecting success of 4203.18 'setup mailmap blob tests':
git checkout -b map &&
test_when_finished "git checkout main" &&
cat >just-bugs <<-\EOF &&
Blob Guy <bugs@company.xx>
EOF
cat >both <<-EOF &&
Blob Guy <$GIT_AUTHOR_EMAIL>
Blob Guy <bugs@company.xx>
EOF
printf "Tricky Guy <$GIT_AUTHOR_EMAIL>" >no-newline &&
git add just-bugs both no-newline &&
git commit -m "my mailmaps" &&
cat >internal.map <<-EOF
Internal Guy <$GIT_AUTHOR_EMAIL>
EOF
Switched to a new branch 'map'
[map d53f9b1] my mailmaps
Author: A U Thor <author@example.com>
3 files changed, 4 insertions(+)
create mode 100644 both
create mode 100644 just-bugs
create mode 100644 no-newline
Switched to branch 'main'
ok 18 - setup mailmap blob tests
expecting success of 4203.19 'mailmap.blob set':
test_when_finished "rm .mailmap" &&
cp default.map .mailmap &&
cat >expect <<-\EOF &&
Blob Guy (1):
second
Repo Guy (1):
initial
EOF
git -c mailmap.blob=map:just-bugs shortlog HEAD >actual &&
test_cmp expect actual
ok 19 - mailmap.blob set
expecting success of 4203.20 'mailmap.blob overrides .mailmap':
test_when_finished "rm .mailmap" &&
cp default.map .mailmap &&
cat >expect <<-\EOF &&
Blob Guy (2):
initial
second
EOF
git -c mailmap.blob=map:both shortlog HEAD >actual &&
test_cmp expect actual
ok 20 - mailmap.blob overrides .mailmap
expecting success of 4203.21 'mailmap.file overrides mailmap.blob':
cat >expect <<-\EOF &&
Blob Guy (1):
second
Internal Guy (1):
initial
EOF
git \
-c mailmap.blob=map:both \
-c mailmap.file=internal.map \
shortlog HEAD >actual &&
test_cmp expect actual
ok 21 - mailmap.file overrides mailmap.blob
expecting success of 4203.22 'mailmap.file can be missing':
test_when_finished "rm .mailmap" &&
cp default.map .mailmap &&
test_config mailmap.file nonexistent &&
cat >expect <<-\EOF &&
Repo Guy (1):
initial
nick1 (1):
second
EOF
git shortlog HEAD >actual 2>err &&
test_must_be_empty err &&
test_cmp expect actual
ok 22 - mailmap.file can be missing
expecting success of 4203.23 'mailmap.blob can be missing':
test_when_finished "rm .mailmap" &&
cp default.map .mailmap &&
cat >expect <<-\EOF &&
Repo Guy (1):
initial
nick1 (1):
second
EOF
git -c mailmap.blob=map:nonexistent shortlog HEAD >actual 2>err &&
test_must_be_empty err &&
test_cmp expect actual
ok 23 - mailmap.blob can be missing
expecting success of 4203.24 'mailmap.blob might be the wrong type':
test_when_finished "rm .mailmap" &&
cp default.map .mailmap &&
git -c mailmap.blob=HEAD: shortlog HEAD >actual 2>err &&
test_i18ngrep "mailmap is not a blob" err &&
test_cmp expect actual
error: mailmap is not a blob: HEAD:
error: mailmap is not a blob: HEAD:
ok 24 - mailmap.blob might be the wrong type
expecting success of 4203.25 'mailmap.blob defaults to off in non-bare repo':
git init non-bare &&
(
cd non-bare &&
test_commit one .mailmap "Fake Name <$GIT_AUTHOR_EMAIL>" &&
cat >expect <<-\EOF &&
1 Fake Name
EOF
git shortlog -ns HEAD >actual &&
test_cmp expect actual &&
rm .mailmap &&
cat >expect <<-EOF &&
1 $GIT_AUTHOR_NAME
EOF
git shortlog -ns HEAD >actual &&
test_cmp expect actual
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4203-mailmap/non-bare/.git/
[main (root-commit) c736a92] one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 .mailmap
ok 25 - mailmap.blob defaults to off in non-bare repo
expecting success of 4203.26 'mailmap.blob defaults to HEAD:.mailmap in bare repo':
git clone --bare non-bare bare &&
(
cd bare &&
cat >expect <<-\EOF &&
1 Fake Name
EOF
git shortlog -ns HEAD >actual &&
test_cmp expect actual
)
Cloning into bare repository 'bare'...
done.
ok 26 - mailmap.blob defaults to HEAD:.mailmap in bare repo
expecting success of 4203.27 'mailmap.blob can handle blobs without trailing newline':
cat >expect <<-\EOF &&
Tricky Guy (1):
initial
nick1 (1):
second
EOF
git -c mailmap.blob=map:no-newline shortlog HEAD >actual &&
test_cmp expect actual
ok 27 - mailmap.blob can handle blobs without trailing newline
expecting success of 4203.28 'single-character name':
test_when_finished "rm .mailmap" &&
cat >.mailmap <<-EOF &&
A <$GIT_AUTHOR_EMAIL>
EOF
cat >expect <<-EOF &&
1 A <$GIT_AUTHOR_EMAIL>
1 nick1 <bugs@company.xx>
EOF
git shortlog -es HEAD >actual &&
test_cmp expect actual
ok 28 - single-character name
expecting success of 4203.29 'preserve canonical email case':
test_when_finished "rm .mailmap" &&
cat >.mailmap <<-EOF &&
<AUTHOR@example.com> <$GIT_AUTHOR_EMAIL>
EOF
cat >expect <<-EOF &&
1 $GIT_AUTHOR_NAME <AUTHOR@example.com>
1 nick1 <bugs@company.xx>
EOF
git shortlog -es HEAD >actual &&
test_cmp expect actual
ok 29 - preserve canonical email case
expecting success of 4203.30 'gitmailmap(5) example output: setup':
test_create_repo doc &&
test_commit -C doc --author "Joe Developer <joe@example.com>" A &&
test_commit -C doc --author "Joe R. Developer <joe@example.com>" B &&
test_commit -C doc --author "Jane Doe <jane@example.com>" C &&
test_commit -C doc --author "Jane Doe <jane@laptop.(none)>" D &&
test_commit -C doc --author "Jane D. <jane@desktop.(none)>" E
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4203-mailmap/doc/.git/
[main (root-commit) 67a0780] A
Author: Joe Developer <joe@example.com>
1 file changed, 1 insertion(+)
create mode 100644 A.t
[main e8ce153] B
Author: Joe R. Developer <joe@example.com>
1 file changed, 1 insertion(+)
create mode 100644 B.t
[main 23a89d3] C
Author: Jane Doe <jane@example.com>
1 file changed, 1 insertion(+)
create mode 100644 C.t
[main d87dd0c] D
Author: Jane Doe <jane@laptop.(none)>
1 file changed, 1 insertion(+)
create mode 100644 D.t
[main e8ffc8b] E
Author: Jane D. <jane@desktop.(none)>
1 file changed, 1 insertion(+)
create mode 100644 E.t
ok 30 - gitmailmap(5) example output: setup
expecting success of 4203.31 'gitmailmap(5) example output: example #1':
test_config -C doc mailmap.file ../doc.map &&
cat >doc.map <<-\EOF &&
Joe R. Developer <joe@example.com>
Jane Doe <jane@example.com>
Jane Doe <jane@desktop.(none)>
EOF
cat >expect <<-\EOF &&
Author Joe Developer <joe@example.com> maps to Joe R. Developer <joe@example.com>
Committer C O Mitter <committer@example.com> maps to C O Mitter <committer@example.com>
Author Joe R. Developer <joe@example.com> maps to Joe R. Developer <joe@example.com>
Committer C O Mitter <committer@example.com> maps to C O Mitter <committer@example.com>
Author Jane Doe <jane@example.com> maps to Jane Doe <jane@example.com>
Committer C O Mitter <committer@example.com> maps to C O Mitter <committer@example.com>
Author Jane Doe <jane@laptop.(none)> maps to Jane Doe <jane@laptop.(none)>
Committer C O Mitter <committer@example.com> maps to C O Mitter <committer@example.com>
Author Jane D. <jane@desktop.(none)> maps to Jane Doe <jane@desktop.(none)>
Committer C O Mitter <committer@example.com> maps to C O Mitter <committer@example.com>
EOF
git -C doc log --reverse --pretty=format:"Author %an <%ae> maps to %aN <%aE>%nCommitter %cn <%ce> maps to %cN <%cE>%n" >actual &&
test_cmp expect actual
ok 31 - gitmailmap(5) example output: example #1
expecting success of 4203.32 'gitmailmap(5) example output: example #2':
test_config -C doc mailmap.file ../doc.map &&
cat >doc.map <<-\EOF &&
Joe R. Developer <joe@example.com>
Jane Doe <jane@example.com> <jane@laptop.(none)>
Jane Doe <jane@example.com> <jane@desktop.(none)>
EOF
cat >expect <<-\EOF &&
Author Joe Developer <joe@example.com> maps to Joe R. Developer <joe@example.com>
Committer C O Mitter <committer@example.com> maps to C O Mitter <committer@example.com>
Author Joe R. Developer <joe@example.com> maps to Joe R. Developer <joe@example.com>
Committer C O Mitter <committer@example.com> maps to C O Mitter <committer@example.com>
Author Jane Doe <jane@example.com> maps to Jane Doe <jane@example.com>
Committer C O Mitter <committer@example.com> maps to C O Mitter <committer@example.com>
Author Jane Doe <jane@laptop.(none)> maps to Jane Doe <jane@example.com>
Committer C O Mitter <committer@example.com> maps to C O Mitter <committer@example.com>
Author Jane D. <jane@desktop.(none)> maps to Jane Doe <jane@example.com>
Committer C O Mitter <committer@example.com> maps to C O Mitter <committer@example.com>
EOF
git -C doc log --reverse --pretty=format:"Author %an <%ae> maps to %aN <%aE>%nCommitter %cn <%ce> maps to %cN <%cE>%n" >actual &&
test_cmp expect actual
ok 32 - gitmailmap(5) example output: example #2
expecting success of 4203.33 'gitmailmap(5) example output: example #3':
test_config -C doc mailmap.file ../doc.map &&
cat >>doc.map <<-\EOF &&
Joe R. Developer <joe@example.com> Joe <bugs@example.com>
Jane Doe <jane@example.com> Jane <bugs@example.com>
EOF
test_commit -C doc --author "Joe <bugs@example.com>" F &&
test_commit -C doc --author "Jane <bugs@example.com>" G &&
cat >>expect <<-\EOF &&
Author Joe <bugs@example.com> maps to Joe R. Developer <joe@example.com>
Committer C O Mitter <committer@example.com> maps to C O Mitter <committer@example.com>
Author Jane <bugs@example.com> maps to Jane Doe <jane@example.com>
Committer C O Mitter <committer@example.com> maps to C O Mitter <committer@example.com>
EOF
git -C doc log --reverse --pretty=format:"Author %an <%ae> maps to %aN <%aE>%nCommitter %cn <%ce> maps to %cN <%cE>%n" >actual &&
test_cmp expect actual
[main 5987b55] F
Author: Joe <bugs@example.com>
1 file changed, 1 insertion(+)
create mode 100644 F.t
[main 228541c] G
Author: Jane <bugs@example.com>
1 file changed, 1 insertion(+)
create mode 100644 G.t
ok 33 - gitmailmap(5) example output: example #3
expecting success of 4203.34 'Shortlog output (complex mapping)':
test_config mailmap.file complex.map &&
cat >complex.map <<-EOF &&
Committed <$GIT_COMMITTER_EMAIL>
<cto@company.xx> <cto@coompany.xx>
Some Dude <some@dude.xx> nick1 <bugs@company.xx>
Other Author <other@author.xx> nick2 <bugs@company.xx>
Other Author <other@author.xx> <nick2@company.xx>
Santa Claus <santa.claus@northpole.xx> <me@company.xx>
EOF
test_commit --author "nick2 <bugs@company.xx>" --append third one three &&
test_commit --author "nick2 <nick2@company.xx>" --append fourth one four &&
test_commit --author "santa <me@company.xx>" --append fifth one five &&
test_commit --author "claus <me@company.xx>" --append sixth one six &&
test_commit --author "CTO <cto@coompany.xx>" --append seventh one seven &&
cat >expect <<-EOF &&
$GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> (1):
initial
CTO <cto@company.xx> (1):
seventh
Other Author <other@author.xx> (2):
third
fourth
Santa Claus <santa.claus@northpole.xx> (2):
fifth
sixth
Some Dude <some@dude.xx> (1):
second
EOF
git shortlog -e HEAD >actual &&
test_cmp expect actual
[main 2b10956] third
Author: nick2 <bugs@company.xx>
1 file changed, 1 insertion(+)
[main 8aa83da] fourth
Author: nick2 <nick2@company.xx>
1 file changed, 1 insertion(+)
[main 065dfc4] fifth
Author: santa <me@company.xx>
1 file changed, 1 insertion(+)
[main aac13b7] sixth
Author: claus <me@company.xx>
1 file changed, 1 insertion(+)
[main c4b3688] seventh
Author: CTO <cto@coompany.xx>
1 file changed, 1 insertion(+)
ok 34 - Shortlog output (complex mapping)
expecting success of 4203.35 'Log output (complex mapping)':
test_config mailmap.file complex.map &&
cat >expect <<-EOF &&
Author CTO <cto@coompany.xx> maps to CTO <cto@company.xx>
Committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> maps to Committed <$GIT_COMMITTER_EMAIL>
Author claus <me@company.xx> maps to Santa Claus <santa.claus@northpole.xx>
Committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> maps to Committed <$GIT_COMMITTER_EMAIL>
Author santa <me@company.xx> maps to Santa Claus <santa.claus@northpole.xx>
Committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> maps to Committed <$GIT_COMMITTER_EMAIL>
Author nick2 <nick2@company.xx> maps to Other Author <other@author.xx>
Committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> maps to Committed <$GIT_COMMITTER_EMAIL>
Author nick2 <bugs@company.xx> maps to Other Author <other@author.xx>
Committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> maps to Committed <$GIT_COMMITTER_EMAIL>
Author nick1 <bugs@company.xx> maps to Some Dude <some@dude.xx>
Committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> maps to Committed <$GIT_COMMITTER_EMAIL>
Author $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> maps to $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL>
Committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> maps to Committed <$GIT_COMMITTER_EMAIL>
EOF
git log --pretty=format:"Author %an <%ae> maps to %aN <%aE>%nCommitter %cn <%ce> maps to %cN <%cE>%n" >actual &&
test_cmp expect actual
ok 35 - Log output (complex mapping)
expecting success of 4203.36 'Log output (local-part email address)':
cat >expect <<-EOF &&
Author email cto@coompany.xx has local-part cto
Committer email $GIT_COMMITTER_EMAIL has local-part $TEST_COMMITTER_LOCALNAME
Author email me@company.xx has local-part me
Committer email $GIT_COMMITTER_EMAIL has local-part $TEST_COMMITTER_LOCALNAME
Author email me@company.xx has local-part me
Committer email $GIT_COMMITTER_EMAIL has local-part $TEST_COMMITTER_LOCALNAME
Author email nick2@company.xx has local-part nick2
Committer email $GIT_COMMITTER_EMAIL has local-part $TEST_COMMITTER_LOCALNAME
Author email bugs@company.xx has local-part bugs
Committer email $GIT_COMMITTER_EMAIL has local-part $TEST_COMMITTER_LOCALNAME
Author email bugs@company.xx has local-part bugs
Committer email $GIT_COMMITTER_EMAIL has local-part $TEST_COMMITTER_LOCALNAME
Author email author@example.com has local-part author
Committer email $GIT_COMMITTER_EMAIL has local-part $TEST_COMMITTER_LOCALNAME
EOF
git log --pretty=format:"Author email %ae has local-part %al%nCommitter email %ce has local-part %cl%n" >actual &&
test_cmp expect actual
ok 36 - Log output (local-part email address)
expecting success of 4203.37 'Log output with --use-mailmap':
test_config mailmap.file complex.map &&
cat >expect <<-EOF &&
Author: CTO <cto@company.xx>
Author: Santa Claus <santa.claus@northpole.xx>
Author: Santa Claus <santa.claus@northpole.xx>
Author: Other Author <other@author.xx>
Author: Other Author <other@author.xx>
Author: Some Dude <some@dude.xx>
Author: $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL>
EOF
git log --use-mailmap >log &&
grep Author log >actual &&
test_cmp expect actual
ok 37 - Log output with --use-mailmap
expecting success of 4203.38 'Log output with log.mailmap':
test_config mailmap.file complex.map &&
cat >expect <<-EOF &&
Author: CTO <cto@company.xx>
Author: Santa Claus <santa.claus@northpole.xx>
Author: Santa Claus <santa.claus@northpole.xx>
Author: Other Author <other@author.xx>
Author: Other Author <other@author.xx>
Author: Some Dude <some@dude.xx>
Author: $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL>
EOF
git -c log.mailmap=True log >log &&
grep Author log >actual &&
test_cmp expect actual
ok 38 - Log output with log.mailmap
expecting success of 4203.39 'log.mailmap=false disables mailmap':
cat >expect <<-EOF &&
Author: CTO <cto@coompany.xx>
Author: claus <me@company.xx>
Author: santa <me@company.xx>
Author: nick2 <nick2@company.xx>
Author: nick2 <bugs@company.xx>
Author: nick1 <bugs@company.xx>
Author: $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL>
EOF
git -c log.mailmap=false log >log &&
grep Author log >actual &&
test_cmp expect actual
ok 39 - log.mailmap=false disables mailmap
expecting success of 4203.40 '--no-use-mailmap disables mailmap':
cat >expect <<-EOF &&
Author: CTO <cto@coompany.xx>
Author: claus <me@company.xx>
Author: santa <me@company.xx>
Author: nick2 <nick2@company.xx>
Author: nick2 <bugs@company.xx>
Author: nick1 <bugs@company.xx>
Author: $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL>
EOF
git log --no-use-mailmap >log &&
grep Author log >actual &&
test_cmp expect actual
ok 40 - --no-use-mailmap disables mailmap
expecting success of 4203.41 'Grep author with --use-mailmap':
test_config mailmap.file complex.map &&
cat >expect <<-\EOF &&
Author: Santa Claus <santa.claus@northpole.xx>
Author: Santa Claus <santa.claus@northpole.xx>
EOF
git log --use-mailmap --author Santa >log &&
grep Author log >actual &&
test_cmp expect actual
ok 41 - Grep author with --use-mailmap
expecting success of 4203.42 'Grep author with log.mailmap':
test_config mailmap.file complex.map &&
cat >expect <<-\EOF &&
Author: Santa Claus <santa.claus@northpole.xx>
Author: Santa Claus <santa.claus@northpole.xx>
EOF
git -c log.mailmap=True log --author Santa >log &&
grep Author log >actual &&
test_cmp expect actual
ok 42 - Grep author with log.mailmap
expecting success of 4203.43 'log.mailmap is true by default these days':
test_config mailmap.file complex.map &&
git log --author Santa >log &&
grep Author log >actual &&
test_cmp expect actual
ok 43 - log.mailmap is true by default these days
expecting success of 4203.44 'Only grep replaced author with --use-mailmap':
test_config mailmap.file complex.map &&
git log --use-mailmap --author "<cto@coompany.xx>" >actual &&
test_must_be_empty actual
ok 44 - Only grep replaced author with --use-mailmap
expecting success of 4203.45 'Blame --porcelain output (complex mapping)':
test_config mailmap.file complex.map &&
cat >expect <<-EOF &&
1 1 1
A U Thor
2 2 1
Some Dude
3 3 1
Other Author
4 4 1
Other Author
5 5 1
Santa Claus
6 6 1
Santa Claus
7 7 1
CTO
EOF
git blame --porcelain one >actual.blame &&
NUM="[0-9][0-9]*" &&
sed -n <actual.blame >actual.fuzz \
-e "s/^author //p" \
-e "s/^$OID_REGEX \\($NUM $NUM $NUM\\)$/\\1/p" &&
test_cmp expect actual.fuzz
ok 45 - Blame --porcelain output (complex mapping)
expecting success of 4203.46 'Blame output (complex mapping)':
git -c mailmap.file=complex.map blame one >a &&
git blame one >b &&
test_file_not_empty a &&
! cmp a b
a b differ: char 20, line 1
ok 46 - Blame output (complex mapping)
expecting success of 4203.47 'commit --author honors mailmap':
test_config mailmap.file complex.map &&
cat >expect <<-\EOF &&
Some Dude <some@dude.xx>
EOF
test_must_fail git commit --author "nick" --allow-empty -meight &&
git commit --author "Some Dude" --allow-empty -meight &&
git show --pretty=format:"%an <%ae>%n" >actual &&
test_cmp expect actual
fatal: --author 'nick' is not 'Name <email>' and matches no existing author
[main 5333a18] eight
Author: Some Dude <some@dude.xx>
ok 47 - commit --author honors mailmap
expecting success of 4203.48 'comment syntax: setup':
test_create_repo comm &&
test_commit -C comm --author "A <a@example.com>" A &&
test_commit -C comm --author "B <b@example.com>" B &&
test_commit -C comm --author "C <#@example.com>" C &&
test_commit -C comm --author "D <d@e#ample.com>" D &&
test_config -C comm mailmap.file ../doc.map &&
cat >>doc.map <<-\EOF &&
# Ah <a@example.com>
; Bee <b@example.com>
Cee <cee@example.com> <#@example.com>
Dee <dee@example.com> <d@e#ample.com>
EOF
cat >expect <<-\EOF &&
Author A <a@example.com> maps to A <a@example.com>
Committer C O Mitter <committer@example.com> maps to C O Mitter <committer@example.com>
Author B <b@example.com> maps to ; Bee <b@example.com>
Committer C O Mitter <committer@example.com> maps to C O Mitter <committer@example.com>
Author C <#@example.com> maps to Cee <cee@example.com>
Committer C O Mitter <committer@example.com> maps to C O Mitter <committer@example.com>
Author D <d@e#ample.com> maps to Dee <dee@example.com>
Committer C O Mitter <committer@example.com> maps to C O Mitter <committer@example.com>
EOF
git -C comm log --reverse --pretty=format:"Author %an <%ae> maps to %aN <%aE>%nCommitter %cn <%ce> maps to %cN <%cE>%n" >actual &&
test_cmp expect actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4203-mailmap/comm/.git/
[main (root-commit) e5fb972] A
Author: A <a@example.com>
1 file changed, 1 insertion(+)
create mode 100644 A.t
[main b2084e0] B
Author: B <b@example.com>
1 file changed, 1 insertion(+)
create mode 100644 B.t
[main dfb9b59] C
Author: C <#@example.com>
1 file changed, 1 insertion(+)
create mode 100644 C.t
[main e621e29] D
Author: D <d@e#ample.com>
1 file changed, 1 insertion(+)
create mode 100644 D.t
ok 48 - comment syntax: setup
expecting success of 4203.49 'whitespace syntax: setup':
test_create_repo space &&
test_commit -C space --author "A <a@example.com>" A &&
test_commit -C space --author "B <b@example.com>" B &&
test_commit -C space --author " C <c@example.com>" C &&
test_commit -C space --author " D <d@example.com>" D &&
test_commit -C space --author "E E <e@example.com>" E &&
test_commit -C space --author "F F <f@example.com>" F &&
test_commit -C space --author "G G <g@example.com>" G &&
test_commit -C space --author "H H <h@example.com>" H &&
test_config -C space mailmap.file ../space.map &&
cat >>space.map <<-\EOF &&
Ah <ah@example.com> < a@example.com >
Bee <bee@example.com > < b@example.com >
Cee <cee@example.com> C <c@example.com>
dee <dee@example.com> D <d@example.com>
eee <eee@example.com> E E <e@example.com>
eff <eff@example.com> F F <f@example.com>
gee <gee@example.com> G G <g@example.com>
aitch <aitch@example.com> H H <h@example.com>
EOF
cat >expect <<-\EOF &&
Author A <a@example.com> maps to A <a@example.com>
Committer C O Mitter <committer@example.com> maps to C O Mitter <committer@example.com>
Author B <b@example.com> maps to B <b@example.com>
Committer C O Mitter <committer@example.com> maps to C O Mitter <committer@example.com>
Author C <c@example.com> maps to Cee <cee@example.com>
Committer C O Mitter <committer@example.com> maps to C O Mitter <committer@example.com>
Author D <d@example.com> maps to dee <dee@example.com>
Committer C O Mitter <committer@example.com> maps to C O Mitter <committer@example.com>
Author E E <e@example.com> maps to eee <eee@example.com>
Committer C O Mitter <committer@example.com> maps to C O Mitter <committer@example.com>
Author F F <f@example.com> maps to eff <eff@example.com>
Committer C O Mitter <committer@example.com> maps to C O Mitter <committer@example.com>
Author G G <g@example.com> maps to gee <gee@example.com>
Committer C O Mitter <committer@example.com> maps to C O Mitter <committer@example.com>
Author H H <h@example.com> maps to H H <h@example.com>
Committer C O Mitter <committer@example.com> maps to C O Mitter <committer@example.com>
EOF
git -C space log --reverse --pretty=format:"Author %an <%ae> maps to %aN <%aE>%nCommitter %cn <%ce> maps to %cN <%cE>%n" >actual &&
test_cmp expect actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4203-mailmap/space/.git/
[main (root-commit) 109233d] A
Author: A <a@example.com>
1 file changed, 1 insertion(+)
create mode 100644 A.t
[main 9456a31] B
Author: B <b@example.com>
1 file changed, 1 insertion(+)
create mode 100644 B.t
[main 764f2bb] C
Author: C <c@example.com>
1 file changed, 1 insertion(+)
create mode 100644 C.t
[main 3d3ecaa] D
Author: D <d@example.com>
1 file changed, 1 insertion(+)
create mode 100644 D.t
[main fd62283] E
Author: E E <e@example.com>
1 file changed, 1 insertion(+)
create mode 100644 E.t
[main c8debf7] F
Author: F F <f@example.com>
1 file changed, 1 insertion(+)
create mode 100644 F.t
[main c4818bd] G
Author: G G <g@example.com>
1 file changed, 1 insertion(+)
create mode 100644 G.t
[main 6924fe5] H
Author: H H <h@example.com>
1 file changed, 1 insertion(+)
create mode 100644 H.t
ok 49 - whitespace syntax: setup
expecting success of 4203.50 'empty syntax: setup':
test_create_repo empty &&
test_commit -C empty --author "A <>" A &&
test_commit -C empty --author "B <b@example.com>" B &&
test_commit -C empty --author "C <c@example.com>" C &&
test_config -C empty mailmap.file ../empty.map &&
cat >>empty.map <<-\EOF &&
Ah <ah@example.com> <>
Bee <bee@example.com> <>
Cee <> <c@example.com>
EOF
cat >expect <<-\EOF &&
Author A <> maps to Bee <bee@example.com>
Committer C O Mitter <committer@example.com> maps to C O Mitter <committer@example.com>
Author B <b@example.com> maps to B <b@example.com>
Committer C O Mitter <committer@example.com> maps to C O Mitter <committer@example.com>
Author C <c@example.com> maps to C <c@example.com>
Committer C O Mitter <committer@example.com> maps to C O Mitter <committer@example.com>
EOF
git -C empty log --reverse --pretty=format:"Author %an <%ae> maps to %aN <%aE>%nCommitter %cn <%ce> maps to %cN <%cE>%n" >actual &&
test_cmp expect actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4203-mailmap/empty/.git/
[main (root-commit) 63e5499] A
Author: A <>
1 file changed, 1 insertion(+)
create mode 100644 A.t
[main 26172cf] B
Author: B <b@example.com>
1 file changed, 1 insertion(+)
create mode 100644 B.t
[main 13cfd5e] C
Author: C <c@example.com>
1 file changed, 1 insertion(+)
create mode 100644 C.t
ok 50 - empty syntax: setup
expecting success of 4203.51 'set up mailmap location tests':
git init --bare loc-bare &&
git --git-dir=loc-bare --work-tree=. commit \
--allow-empty -m foo --author="Orig <orig@example.com>" &&
echo "New <new@example.com> <orig@example.com>" >loc-bare/.mailmap
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4203-mailmap/loc-bare/
[main (root-commit) 9a8f255] foo
Author: Orig <orig@example.com>
ok 51 - set up mailmap location tests
expecting success of 4203.52 'bare repo with --work-tree finds mailmap at top-level':
git -C loc-bare --work-tree=. log -1 --format=%aE >actual &&
echo new@example.com >expect &&
test_cmp expect actual
ok 52 - bare repo with --work-tree finds mailmap at top-level
expecting success of 4203.53 'bare repo does not look in current directory':
git -C loc-bare log -1 --format=%aE >actual &&
echo orig@example.com >expect &&
test_cmp expect actual
ok 53 - bare repo does not look in current directory
expecting success of 4203.54 'non-git shortlog respects mailmap in current dir':
git --git-dir=loc-bare log -1 >input &&
nongit cp "$TRASH_DIRECTORY/loc-bare/.mailmap" . &&
nongit git shortlog -s <input >actual &&
echo " 1 New" >expect &&
test_cmp expect actual
ok 54 - non-git shortlog respects mailmap in current dir
expecting success of 4203.55 'shortlog on stdin respects mailmap from repo':
cp loc-bare/.mailmap . &&
git shortlog -s <input >actual &&
echo " 1 New" >expect &&
test_cmp expect actual
ok 55 - shortlog on stdin respects mailmap from repo
expecting success of 4203.56 'find top-level mailmap from subdir':
git clone loc-bare loc-wt &&
cp loc-bare/.mailmap loc-wt &&
mkdir loc-wt/subdir &&
git -C loc-wt/subdir log -1 --format=%aE >actual &&
echo new@example.com >expect &&
test_cmp expect actual
Cloning into 'loc-wt'...
done.
ok 56 - find top-level mailmap from subdir
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
expecting success of 4203.57 'set up symlink tests':
git commit --allow-empty -m foo --author="Orig <orig@example.com>" &&
echo "New <new@example.com> <orig@example.com>" >map &&
rm -f .mailmap
[main 1de6515] foo
Author: Orig <orig@example.com>
ok 57 - set up symlink tests
expecting success of 4203.58 'symlinks respected in mailmap.file':
test_when_finished "rm symlink" &&
ln -s map symlink &&
git -c mailmap.file="$(pwd)/symlink" log -1 --format=%aE >actual &&
echo "new@example.com" >expect &&
test_cmp expect actual
ok 58 - symlinks respected in mailmap.file
expecting success of 4203.59 'symlinks respected in non-repo shortlog':
git log -1 >input &&
test_when_finished "nongit rm .mailmap" &&
nongit ln -sf "$TRASH_DIRECTORY/map" .mailmap &&
nongit git shortlog -s <input >actual &&
echo " 1 New" >expect &&
test_cmp expect actual
ok 59 - symlinks respected in non-repo shortlog
expecting success of 4203.60 'symlinks not respected in-tree':
test_when_finished "rm .mailmap" &&
ln -s map .mailmap &&
git log -1 --format=%aE >actual &&
echo "orig@example.com" >expect &&
test_cmp expect actual
error: unable to open mailmap at .mailmap: Too many levels of symbolic links
error: unable to open mailmap at .mailmap: Too many levels of symbolic links
ok 60 - symlinks not respected in-tree
expecting success of 4203.61 'prepare for cat-file --mailmap':
rm -f .mailmap &&
git commit --allow-empty -m foo --author="Orig <orig@example.com>"
[main 92d9995] foo
Author: Orig <orig@example.com>
ok 61 - prepare for cat-file --mailmap
expecting success of 4203.62 '--no-use-mailmap disables mailmap in cat-file':
test_when_finished "rm .mailmap" &&
cat >.mailmap <<-EOF &&
A U Thor <author@example.com> Orig <orig@example.com>
EOF
cat >expect <<-EOF &&
author Orig <orig@example.com>
EOF
git cat-file --no-use-mailmap commit HEAD >log &&
sed -n "/^author /s/\([^>]*>\).*/\1/p" log >actual &&
test_cmp expect actual
ok 62 - --no-use-mailmap disables mailmap in cat-file
expecting success of 4203.63 '--use-mailmap enables mailmap in cat-file':
test_when_finished "rm .mailmap" &&
cat >.mailmap <<-EOF &&
A U Thor <author@example.com> Orig <orig@example.com>
EOF
cat >expect <<-EOF &&
author A U Thor <author@example.com>
EOF
git cat-file --use-mailmap commit HEAD >log &&
sed -n "/^author /s/\([^>]*>\).*/\1/p" log >actual &&
test_cmp expect actual
ok 63 - --use-mailmap enables mailmap in cat-file
expecting success of 4203.64 '--no-mailmap disables mailmap in cat-file for annotated tag objects':
test_when_finished "rm .mailmap" &&
cat >.mailmap <<-EOF &&
Orig <orig@example.com> C O Mitter <committer@example.com>
EOF
cat >expect <<-EOF &&
tagger C O Mitter <committer@example.com>
EOF
git tag -a -m "annotated tag" v1 &&
git cat-file --no-mailmap -p v1 >log &&
sed -n "/^tagger /s/\([^>]*>\).*/\1/p" log >actual &&
test_cmp expect actual
ok 64 - --no-mailmap disables mailmap in cat-file for annotated tag objects
expecting success of 4203.65 '--mailmap enables mailmap in cat-file for annotated tag objects':
test_when_finished "rm .mailmap" &&
cat >.mailmap <<-EOF &&
Orig <orig@example.com> C O Mitter <committer@example.com>
EOF
cat >expect <<-EOF &&
tagger Orig <orig@example.com>
EOF
git tag -a -m "annotated tag" v2 &&
git cat-file --mailmap -p v2 >log &&
sed -n "/^tagger /s/\([^>]*>\).*/\1/p" log >actual &&
test_cmp expect actual
ok 65 - --mailmap enables mailmap in cat-file for annotated tag objects
expecting success of 4203.66 'git cat-file -s returns correct size with --use-mailmap':
test_when_finished "rm .mailmap" &&
cat >.mailmap <<-\EOF &&
C O Mitter <committer@example.com> Orig <orig@example.com>
EOF
git cat-file commit HEAD >commit.out &&
echo $(wc -c <commit.out) >expect &&
git cat-file --use-mailmap commit HEAD >commit.out &&
echo $(wc -c <commit.out) >>expect &&
git cat-file -s HEAD >actual &&
git cat-file --use-mailmap -s HEAD >>actual &&
test_cmp expect actual
ok 66 - git cat-file -s returns correct size with --use-mailmap
expecting success of 4203.67 'git cat-file -s returns correct size with --use-mailmap for tag objects':
test_when_finished "rm .mailmap" &&
cat >.mailmap <<-\EOF &&
Orig <orig@example.com> C O Mitter <committer@example.com>
EOF
git tag -a -m "annotated tag" v3 &&
git cat-file tag v3 >tag.out &&
echo $(wc -c <tag.out) >expect &&
git cat-file --use-mailmap tag v3 >tag.out &&
echo $(wc -c <tag.out) >>expect &&
git cat-file -s v3 >actual &&
git cat-file --use-mailmap -s v3 >>actual &&
test_cmp expect actual
ok 67 - git cat-file -s returns correct size with --use-mailmap for tag objects
expecting success of 4203.68 'git cat-file --batch-check returns correct size with --use-mailmap':
test_when_finished "rm .mailmap" &&
cat >.mailmap <<-\EOF &&
C O Mitter <committer@example.com> Orig <orig@example.com>
EOF
git cat-file commit HEAD >commit.out &&
commit_size=$(wc -c <commit.out) &&
commit_sha=$(git rev-parse HEAD) &&
echo $commit_sha commit $commit_size >expect &&
git cat-file --use-mailmap commit HEAD >commit.out &&
commit_size=$(wc -c <commit.out) &&
echo $commit_sha commit $commit_size >>expect &&
echo "HEAD" >in &&
git cat-file --batch-check <in >actual &&
git cat-file --use-mailmap --batch-check <in >>actual &&
test_cmp expect actual
ok 68 - git cat-file --batch-check returns correct size with --use-mailmap
expecting success of 4203.69 'git cat-file --batch-command returns correct size with --use-mailmap':
test_when_finished "rm .mailmap" &&
cat >.mailmap <<-\EOF &&
C O Mitter <committer@example.com> Orig <orig@example.com>
EOF
git cat-file commit HEAD >commit.out &&
commit_size=$(wc -c <commit.out) &&
commit_sha=$(git rev-parse HEAD) &&
echo $commit_sha commit $commit_size >expect &&
git cat-file --use-mailmap commit HEAD >commit.out &&
commit_size=$(wc -c <commit.out) &&
echo $commit_sha commit $commit_size >>expect &&
echo "info HEAD" >in &&
git cat-file --batch-command <in >actual &&
git cat-file --use-mailmap --batch-command <in >>actual &&
test_cmp expect actual
ok 69 - git cat-file --batch-command returns correct size with --use-mailmap
# passed all 69 test(s)
1..69
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4204-patch-id.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4204-patch-id/.git/
expecting success of 4204.1 'setup':
str="ab cd ef gh ij kl mn op" &&
test_write_lines $str >foo &&
test_write_lines $str >bar &&
git add foo bar &&
git commit -a -m initial &&
test_write_lines $str b >foo &&
test_write_lines $str b >bar &&
git commit -a -m first &&
git checkout -b same main &&
git commit --amend -m same-msg &&
git checkout -b notsame main &&
echo c >foo &&
echo c >bar &&
git commit --amend -a -m notsame-msg &&
git checkout -b with_space main~ &&
cat >foo <<-\EOF &&
a b
c d
e f
g h
i j
k l
m n
op
EOF
cp foo bar &&
git add foo bar &&
git commit --amend -m "with spaces" &&
test_write_lines bar foo >bar-then-foo &&
test_write_lines foo bar >foo-then-bar
[main (root-commit) f34ad56] initial
Author: A U Thor <author@example.com>
2 files changed, 16 insertions(+)
create mode 100644 bar
create mode 100644 foo
[main 637c384] first
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+)
Switched to a new branch 'same'
[same bdbb3b3] same-msg
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
2 files changed, 2 insertions(+)
Switched to a new branch 'notsame'
[notsame e083d83] notsame-msg
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
2 files changed, 2 insertions(+), 16 deletions(-)
Switched to a new branch 'with_space'
[with_space 983116d] with spaces
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
2 files changed, 16 insertions(+)
create mode 100644 bar
create mode 100644 foo
ok 1 - setup
expecting success of 4204.2 'patch-id output is well-formed':
git log -p -1 >log.output &&
git patch-id <log.output >output &&
grep "^$OID_REGEX $(git rev-parse HEAD)$" output
f2e75ee7c01deac4f2c51488f8e1cc6c0ff2719f 983116d734eae4c6993305600c31050ff5dea7f1
ok 2 - patch-id output is well-formed
expecting success of 4204.3 'patch-id detects equality':
get_patch_id main &&
get_patch_id same &&
test_cmp patch-id_main patch-id_same
ok 3 - patch-id detects equality
expecting success of 4204.4 'patch-id detects inequality':
get_patch_id main &&
get_patch_id notsame &&
! test_cmp patch-id_main patch-id_notsame
--- patch-id_main 2023-10-09 02:19:56.553111425 +0000
+++ patch-id_notsame 2023-10-09 02:19:56.561111417 +0000
@@ -1 +1 @@
-c58fad5dc58fa3f768f4c9a1809f1bf824870825
+6276aec15da664e9f9ce6dde29c2e2c71607e017
ok 4 - patch-id detects inequality
expecting success of 4204.5 'patch-id detects equality binary':
cat >.gitattributes <<-\EOF &&
foo binary
bar binary
EOF
get_patch_id main &&
get_patch_id same &&
git log -p -1 --binary main >top-diff.output &&
calc_patch_id <top-diff.output main_binpatch &&
git log -p -1 --binary same >top-diff.output &&
calc_patch_id <top-diff.output same_binpatch &&
test_cmp patch-id_main patch-id_main_binpatch &&
test_cmp patch-id_same patch-id_same_binpatch &&
test_cmp patch-id_main patch-id_same &&
test_when_finished "rm .gitattributes"
ok 5 - patch-id detects equality binary
expecting success of 4204.6 'patch-id detects inequality binary':
cat >.gitattributes <<-\EOF &&
foo binary
bar binary
EOF
get_patch_id main &&
get_patch_id notsame &&
! test_cmp patch-id_main patch-id_notsame &&
test_when_finished "rm .gitattributes"
--- patch-id_main 2023-10-09 02:19:56.625111356 +0000
+++ patch-id_notsame 2023-10-09 02:19:56.637111344 +0000
@@ -1 +1 @@
-6c46c4bc49d6541a5d8bcadf7808959c9520ae8b
+f92e710b91f98a3598e43f302e80d3e4a9bfe874
ok 6 - patch-id detects inequality binary
expecting success of 4204.7 'patch-id supports git-format-patch output':
get_patch_id main &&
git checkout same &&
git format-patch -1 --stdout >format-patch.output &&
calc_patch_id same <format-patch.output &&
test_cmp patch-id_main patch-id_same &&
set $(git patch-id <format-patch.output) &&
test "$2" = $(git rev-parse HEAD)
Switched to branch 'same'
ok 7 - patch-id supports git-format-patch output
expecting success of 4204.8 'whitespace is irrelevant in footer':
get_patch_id main &&
git checkout same &&
git format-patch -1 --stdout >format-patch.output &&
sed "s/ \$//" format-patch.output | calc_patch_id same &&
test_cmp patch-id_main patch-id_same
Already on 'same'
ok 8 - whitespace is irrelevant in footer
expecting success of 4204.9 'file order is irrelevant with --stable':
test_patch_id_file_order irrelevant --stable --stable
Already on 'same'
ok 9 - file order is irrelevant with --stable
expecting success of 4204.10 'file order is relevant with --unstable':
test_patch_id_file_order relevant --unstable --unstable
Already on 'same'
--- patch-id_order---unstable-relevant 2023-10-09 02:19:56.757111229 +0000
+++ patch-id_ordered-order---unstable-relevant 2023-10-09 02:19:56.777111210 +0000
@@ -1 +1 @@
-c58fad5dc58fa3f768f4c9a1809f1bf824870825
+892d1d3b08f44511b1fdc7cab43c0ad907ac772b
ok 10 - file order is relevant with --unstable
expecting success of 4204.11 'whitespace is relevant with --verbatim':
test_patch_id_whitespace relevant --verbatim --verbatim
--- patch-id_ws---verbatim-relevant 2023-10-09 02:19:56.793111195 +0000
+++ patch-id_ws-ws---verbatim-relevant 2023-10-09 02:19:56.805111183 +0000
@@ -1 +1 @@
-bd0ab1dc8a63de799337fc1a1b4e7c00ce6f7caf
+ec56d730a19f56a178db031386e5bcaabfea5677
ok 11 - whitespace is relevant with --verbatim
expecting success of 4204.12 'whitespace is irrelevant without --verbatim':
test_patch_id_whitespace irrelevant --stable --stable
ok 12 - whitespace is irrelevant without --verbatim
expecting success of 4204.13 'default is unstable':
test_patch_id relevant default
Already on 'same'
--- patch-id_order-default-relevant 2023-10-09 02:19:56.841111148 +0000
+++ patch-id_ordered-order-default-relevant 2023-10-09 02:19:56.865111125 +0000
@@ -1 +1 @@
-c58fad5dc58fa3f768f4c9a1809f1bf824870825
+892d1d3b08f44511b1fdc7cab43c0ad907ac772b
ok 13 - default is unstable
expecting success of 4204.14 'patchid.stable = true is stable':
test_config patchid.stable true &&
test_patch_id irrelevant patchid.stable=true
Already on 'same'
ok 14 - patchid.stable = true is stable
expecting success of 4204.15 'patchid.stable = false is unstable':
test_config patchid.stable false &&
test_patch_id relevant patchid.stable=false
Already on 'same'
--- patch-id_order-patchid.stable=false-relevant 2023-10-09 02:19:56.921111072 +0000
+++ patch-id_ordered-order-patchid.stable=false-relevant 2023-10-09 02:19:56.941111053 +0000
@@ -1 +1 @@
-c58fad5dc58fa3f768f4c9a1809f1bf824870825
+892d1d3b08f44511b1fdc7cab43c0ad907ac772b
ok 15 - patchid.stable = false is unstable
expecting success of 4204.16 'patchid.verbatim = true is correct and stable':
test_config patchid.verbatim true &&
test_patch_id_whitespace relevant patchid.verbatim=true &&
test_patch_id irrelevant patchid.verbatim=true
--- patch-id_ws-patchid.verbatim=true-relevant 2023-10-09 02:19:56.957111037 +0000
+++ patch-id_ws-ws-patchid.verbatim=true-relevant 2023-10-09 02:19:56.965111030 +0000
@@ -1 +1 @@
-bd0ab1dc8a63de799337fc1a1b4e7c00ce6f7caf
+ec56d730a19f56a178db031386e5bcaabfea5677
Already on 'same'
ok 16 - patchid.verbatim = true is correct and stable
expecting success of 4204.17 'patchid.verbatim = false is unstable':
test_config patchid.verbatim false &&
test_patch_id relevant patchid.verbatim=false
Already on 'same'
--- patch-id_order-patchid.verbatim=false-relevant 2023-10-09 02:19:57.013110983 +0000
+++ patch-id_ordered-order-patchid.verbatim=false-relevant 2023-10-09 02:19:57.033110964 +0000
@@ -1 +1 @@
-c58fad5dc58fa3f768f4c9a1809f1bf824870825
+892d1d3b08f44511b1fdc7cab43c0ad907ac772b
ok 17 - patchid.verbatim = false is unstable
expecting success of 4204.18 '--unstable overrides patchid.stable = true':
test_config patchid.stable true &&
test_patch_id relevant patchid.stable=true--unstable --unstable
Already on 'same'
--- patch-id_order-patchid.stable=true--unstable-relevant 2023-10-09 02:19:57.057110941 +0000
+++ patch-id_ordered-order-patchid.stable=true--unstable-relevant 2023-10-09 02:19:57.073110925 +0000
@@ -1 +1 @@
-c58fad5dc58fa3f768f4c9a1809f1bf824870825
+892d1d3b08f44511b1fdc7cab43c0ad907ac772b
ok 18 - --unstable overrides patchid.stable = true
expecting success of 4204.19 '--stable overrides patchid.stable = false':
test_config patchid.stable false &&
test_patch_id irrelevant patchid.stable=false--stable --stable
Already on 'same'
ok 19 - --stable overrides patchid.stable = false
expecting success of 4204.20 '--verbatim overrides patchid.stable = false':
test_config patchid.stable false &&
test_patch_id_whitespace relevant stable=false--verbatim --verbatim
--- patch-id_ws-stable=false--verbatim-relevant 2023-10-09 02:19:57.137110864 +0000
+++ patch-id_ws-ws-stable=false--verbatim-relevant 2023-10-09 02:19:57.149110852 +0000
@@ -1 +1 @@
-bd0ab1dc8a63de799337fc1a1b4e7c00ce6f7caf
+ec56d730a19f56a178db031386e5bcaabfea5677
ok 20 - --verbatim overrides patchid.stable = false
expecting success of 4204.21 'patch-id supports git-format-patch MIME output':
get_patch_id main &&
git checkout same &&
git format-patch -1 --attach --stdout >format-patch.output &&
calc_patch_id <format-patch.output same &&
test_cmp patch-id_main patch-id_same
Already on 'same'
ok 21 - patch-id supports git-format-patch MIME output
expecting success of 4204.22 'patch-id respects config from subdir':
test_config patchid.stable true &&
mkdir subdir &&
# copy these because test_patch_id() looks for them in
# the current directory
cp bar-then-foo foo-then-bar subdir &&
(
cd subdir &&
test_patch_id irrelevant patchid.stable=true
)
Already on 'same'
ok 22 - patch-id respects config from subdir
expecting success of 4204.23 'patch-id handles no-nl-at-eof markers':
cat >nonl <<-\EOF &&
diff --git i/a w/a
index e69de29..2e65efe 100644
--- i/a
+++ w/a
@@ -0,0 +1 @@
+a
\ No newline at end of file
diff --git i/b w/b
index e69de29..6178079 100644
--- i/b
+++ w/b
@@ -0,0 +1 @@
+b
EOF
cat >withnl <<-\EOF &&
diff --git i/a w/a
index e69de29..7898192 100644
--- i/a
+++ w/a
@@ -0,0 +1 @@
+a
diff --git i/b w/b
index e69de29..6178079 100644
--- i/b
+++ w/b
@@ -0,0 +1 @@
+b
EOF
calc_patch_id nonl <nonl &&
calc_patch_id withnl <withnl &&
test_cmp patch-id_nonl patch-id_withnl &&
calc_patch_id nonl-inc-ws --verbatim <nonl &&
calc_patch_id withnl-inc-ws --verbatim <withnl &&
! test_cmp patch-id_nonl-inc-ws patch-id_withnl-inc-ws
--- patch-id_nonl-inc-ws 2023-10-09 02:19:57.253110752 +0000
+++ patch-id_withnl-inc-ws 2023-10-09 02:19:57.257110748 +0000
@@ -1 +1 @@
-7ff2bcb9c001e010d881f0fccddc20be3af94012
+897be18d6338cd2e68bf17f3848b1c48bbc17459
ok 23 - patch-id handles no-nl-at-eof markers
expecting success of 4204.24 'patch-id handles diffs with one line of before/after':
cat >diffu1 <<-\EOF &&
diff --git a/bar b/bar
index bdaf90f..31051f6 100644
--- a/bar
+++ b/bar
@@ -2 +2,2 @@
b
+c
diff --git a/car b/car
index 00750ed..2ae5e34 100644
--- a/car
+++ b/car
@@ -1 +1,2 @@
3
+d
diff --git a/foo b/foo
index e439850..7146eb8 100644
--- a/foo
+++ b/foo
@@ -2 +2,2 @@
a
+e
EOF
calc_patch_id diffu1 <diffu1 &&
test_config patchid.stable true &&
calc_patch_id diffu1stable <diffu1
ok 24 - patch-id handles diffs with one line of before/after
# passed all 24 test(s)
1..24
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4206-log-follow-harder-copies.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4206-log-follow-harder-copies/.git/
expecting success of 4206.1 'add a file path0 and commit.':
git add path0 &&
git commit -m "Add path0"
[master (root-commit) 70f443e] Add path0
Author: A U Thor <author@example.com>
1 file changed, 4 insertions(+)
create mode 100644 path0
ok 1 - add a file path0 and commit.
expecting success of 4206.2 'Change path0.':
git add path0 &&
git commit -m "Change path0"
[master 64b1451] Change path0
Author: A U Thor <author@example.com>
1 file changed, 3 insertions(+), 3 deletions(-)
ok 2 - Change path0.
expecting success of 4206.3 'copy path0 to path1.':
git add path1 &&
git commit -m "Copy path1 from path0"
[master 3227a3d] Copy path1 from path0
Author: A U Thor <author@example.com>
1 file changed, 4 insertions(+)
create mode 100644 path1
ok 3 - copy path0 to path1.
expecting success of 4206.4 'find the copy path0 -> path1 harder':
git log --follow --name-status --pretty="format:%s" path1 > current
ok 4 - find the copy path0 -> path1 harder
expecting success of 4206.5 'validate the output.':
compare_diff_patch current expected
ok 5 - validate the output.
# passed all 5 test(s)
1..5
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4207-log-decoration-colors.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4207-log-decoration-colors/.git/
expecting success of 4207.1 'setup':
git config diff.color.commit yellow &&
git config color.decorate.branch green &&
git config color.decorate.remoteBranch red &&
git config color.decorate.tag "reverse bold yellow" &&
git config color.decorate.stash magenta &&
git config color.decorate.grafted black &&
git config color.decorate.HEAD cyan &&
c_reset="<RESET>" &&
c_commit="<YELLOW>" &&
c_branch="<GREEN>" &&
c_remoteBranch="<RED>" &&
c_tag="<BOLD;REVERSE;YELLOW>" &&
c_stash="<MAGENTA>" &&
c_HEAD="<CYAN>" &&
c_grafted="<BLACK>" &&
test_commit A &&
git clone . other &&
(
cd other &&
test_commit A1
) &&
git remote add -f other ./other &&
test_commit B &&
git tag v1.0 &&
echo >>A.t &&
git stash save Changes to A.t
[main (root-commit) 0ddfaf1] A
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 A.t
Cloning into 'other'...
done.
[main ca6ed14] A1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 A1.t
Updating other
From ./other
* [new branch] main -> other/main
* [new tag] A1 -> A1
[main d9df450] B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 B.t
Saved working directory and index state On main: Changes to A.t
ok 1 - setup
expecting success of 4207.2 'commit decorations colored correctly':
cat >expect <<-EOF &&
${c_commit}COMMIT_ID${c_reset}${c_commit} (${c_reset}${c_HEAD}HEAD -> \
${c_reset}${c_branch}main${c_reset}${c_commit}, \
${c_reset}${c_tag}tag: v1.0${c_reset}${c_commit}, \
${c_reset}${c_tag}tag: B${c_reset}${c_commit})${c_reset} B
${c_commit}COMMIT_ID${c_reset}${c_commit} (${c_reset}${c_tag}tag: A1${c_reset}${c_commit}, \
${c_reset}${c_remoteBranch}other/main${c_reset}${c_commit})${c_reset} A1
${c_commit}COMMIT_ID${c_reset}${c_commit} (${c_reset}${c_stash}refs/stash${c_reset}${c_commit})${c_reset} \
On main: Changes to A.t
${c_commit}COMMIT_ID${c_reset}${c_commit} (${c_reset}${c_tag}tag: A${c_reset}${c_commit})${c_reset} A
EOF
git log --first-parent --no-abbrev --decorate --oneline --color=always --all >actual &&
cmp_filtered_decorations
ok 2 - commit decorations colored correctly
expecting success of 4207.3 'test coloring with replace-objects':
test_when_finished rm -rf .git/refs/replace* &&
test_commit C &&
test_commit D &&
git replace HEAD~1 HEAD~2 &&
cat >expect <<-EOF &&
${c_commit}COMMIT_ID${c_reset}${c_commit} (${c_reset}${c_HEAD}HEAD -> \
${c_reset}${c_branch}main${c_reset}${c_commit}, \
${c_reset}${c_tag}tag: D${c_reset}${c_commit})${c_reset} D
${c_commit}COMMIT_ID${c_reset}${c_commit} (${c_reset}${c_tag}tag: C${c_reset}${c_commit}, \
${c_reset}${c_grafted}replaced${c_reset}${c_commit})${c_reset} B
${c_commit}COMMIT_ID${c_reset}${c_commit} (${c_reset}${c_tag}tag: A${c_reset}${c_commit})${c_reset} A
EOF
git log --first-parent --no-abbrev --decorate --oneline --color=always HEAD >actual &&
cmp_filtered_decorations &&
git replace -d HEAD~1 &&
GIT_REPLACE_REF_BASE=refs/replace2/ git replace HEAD~1 HEAD~2 &&
GIT_REPLACE_REF_BASE=refs/replace2/ git log --first-parent \
--no-abbrev --decorate --oneline --color=always HEAD >actual &&
cmp_filtered_decorations
[main 35a8500] C
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 C.t
[main be8f64f] D
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 D.t
Deleted replace ref '35a8500a6c116c9ddf35e140fa3277a7fe0b4196'
ok 3 - test coloring with replace-objects
expecting success of 4207.4 'test coloring with grafted commit':
test_when_finished rm -rf .git/refs/replace* &&
git replace --graft HEAD HEAD~2 &&
cat >expect <<-EOF &&
${c_commit}COMMIT_ID${c_reset}${c_commit} (${c_reset}${c_HEAD}HEAD -> \
${c_reset}${c_branch}main${c_reset}${c_commit}, \
${c_reset}${c_tag}tag: D${c_reset}${c_commit}, \
${c_reset}${c_grafted}replaced${c_reset}${c_commit})${c_reset} D
${c_commit}COMMIT_ID${c_reset}${c_commit} (${c_reset}${c_tag}tag: v1.0${c_reset}${c_commit}, \
${c_reset}${c_tag}tag: B${c_reset}${c_commit})${c_reset} B
${c_commit}COMMIT_ID${c_reset}${c_commit} (${c_reset}${c_tag}tag: A${c_reset}${c_commit})${c_reset} A
EOF
git log --first-parent --no-abbrev --decorate --oneline --color=always HEAD >actual &&
cmp_filtered_decorations &&
git replace -d HEAD &&
GIT_REPLACE_REF_BASE=refs/replace2/ git replace --graft HEAD HEAD~2 &&
GIT_REPLACE_REF_BASE=refs/replace2/ git log --first-parent \
--no-abbrev --decorate --oneline --color=always HEAD >actual &&
cmp_filtered_decorations
Deleted replace ref 'be8f64ffad20e1c23faacd732a7ba726ee6f156d'
ok 4 - test coloring with grafted commit
# passed all 4 test(s)
1..4
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4137-apply-submodule.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/.git/
expecting success of 4137.1 'apply_index: added submodule creates empty directory':
prolog &&
reset_work_tree_to no_submodule &&
(
cd submodule_update &&
git branch -t add_sub1 origin/add_sub1 &&
$command add_sub1 &&
test_superproject_content origin/add_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/add_sub1
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_sub1/.git/
[master (root-commit) 63c4304] Base inside first submodule
Author: A U Thor <author@example.com>
3 files changed, 4 insertions(+)
create mode 100644 .gitignore
create mode 100644 file1
create mode 100644 file2
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_sub2/.git/
[master (root-commit) 27c5769] nested submodule base
Author: A U Thor <author@example.com>
3 files changed, 4 insertions(+)
create mode 100644 .gitignore
create mode 100644 file1
create mode 100644 file2
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_repo/.git/
[master (root-commit) 27611a5] Base
Author: A U Thor <author@example.com>
3 files changed, 4 insertions(+)
create mode 100644 .gitignore
create mode 100644 file1
create mode 100644 file2
Switched to a new branch 'add_sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_repo/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_repo/uninitialized_sub'...
done.
[add_sub1 09bcf53] Add sub1
Author: A U Thor <author@example.com>
2 files changed, 8 insertions(+)
create mode 100644 .gitmodules
create mode 160000 uninitialized_sub
Switched to a new branch 'remove_sub1'
warning: unable to rmdir 'sub1': Directory not empty
warning: unable to rmdir 'uninitialized_sub': Directory not empty
[remove_sub1 d6ba723] Revert "Add sub1"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
3 files changed, 9 deletions(-)
delete mode 100644 .gitmodules
delete mode 160000 sub1
delete mode 160000 uninitialized_sub
Switched to a new branch 'modify_sub1'
Switched to a new branch 'modifications'
[modifications 03da4ea] modified file2 and added file3
Author: A U Thor <author@example.com>
2 files changed, 2 insertions(+), 1 deletion(-)
create mode 100644 file3
To /<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_sub1
* [new branch] modifications -> modifications
[modify_sub1 cb2bda7] Modify sub1
Author: A U Thor <author@example.com>
Switched to a new branch 'add_nested_sub'
Switched to a new branch 'add_nested_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_repo/sub1/sub2'...
done.
[add_nested_sub 8b3b335] add a nested submodule
Author: A U Thor <author@example.com>
2 files changed, 5 insertions(+)
create mode 100644 .gitmodules
create mode 160000 sub2
[add_nested_sub 5bc57bf] update submodule, that updates a nested submodule
Author: A U Thor <author@example.com>
Switched to a new branch 'modify_sub1_recursively'
Switched to a new branch 'modify_sub1_recursively'
Switched to a new branch 'modify_sub1_recursively'
[modify_sub1_recursively c7c4624] make a change in nested sub
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file3
[modify_sub1_recursively 92fc14a] update nested sub
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[modify_sub1_recursively 953e869] update sub1, that updates nested sub
Author: A U Thor <author@example.com>
To /<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_sub1
* [new branch] modify_sub1_recursively -> modify_sub1_recursively
To /<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_sub2
* [new branch] modify_sub1_recursively -> modify_sub1_recursively
Cleared directory 'sub2'
Submodule 'sub2' (../submodule_update_sub2) unregistered for path 'sub2'
Switched to a new branch 'replace_sub1_with_directory'
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Previous HEAD position was 63c4304 Base inside first submodule
Switched to branch 'modifications'
rm 'sub1'
[replace_sub1_with_directory cb28587] Replace sub1 with directory
Author: A U Thor <author@example.com>
5 files changed, 3 insertions(+), 5 deletions(-)
delete mode 160000 sub1
create mode 100644 sub1/file1
create mode 100644 sub1/file2
create mode 100644 sub1/file3
Switched to a new branch 'replace_directory_with_sub1'
[replace_directory_with_sub1 a2e65d5] Revert "Replace sub1 with directory"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
4 files changed, 4 insertions(+), 3 deletions(-)
delete mode 100644 sub1/file1
delete mode 100644 sub1/file2
delete mode 100644 sub1/file3
Switched to a new branch 'replace_sub1_with_file'
rm 'sub1'
[replace_sub1_with_file 2364f5a] Replace sub1 with file
Author: A U Thor <author@example.com>
2 files changed, 1 insertion(+), 5 deletions(-)
mode change 160000 => 100644 sub1
Switched to a new branch 'replace_file_with_sub1'
[replace_file_with_sub1 8b6fdfc] Revert "Replace sub1 with file"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
2 files changed, 5 insertions(+), 1 deletion(-)
mode change 100644 => 160000 sub1
Switched to a new branch 'invalid_sub1'
[invalid_sub1 e6169bf] Invalid sub1 commit
Author: A U Thor <author@example.com>
Switched to a new branch 'valid_sub1'
[valid_sub1 3036e4e] Revert "Invalid sub1 commit"
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
warning: unable to rmdir 'uninitialized_sub': Directory not empty
Switched to branch 'master'
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Submodule path 'uninitialized_sub': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 1 - apply_index: added submodule creates empty directory
expecting success of 4137.2 'apply_index: added submodule leaves existing empty directory alone':
prolog &&
reset_work_tree_to no_submodule &&
(
cd submodule_update &&
mkdir sub1 &&
git branch -t add_sub1 origin/add_sub1 &&
$command add_sub1 &&
test_superproject_content origin/add_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Submodule path 'uninitialized_sub': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 2 - apply_index: added submodule leaves existing empty directory alone
expecting success of 4137.3 'apply_index: replace tracked file with submodule creates empty directory':
prolog &&
reset_work_tree_to replace_sub1_with_file &&
(
cd submodule_update &&
git branch -t replace_file_with_sub1 origin/replace_file_with_sub1 &&
$command replace_file_with_sub1 &&
test_superproject_content origin/replace_file_with_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/replace_file_with_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'replace_sub1_with_file'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
fatal: Needed a single revision
branch 'replace_file_with_sub1' set up to track 'origin/replace_file_with_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Submodule path 'uninitialized_sub': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 3 - apply_index: replace tracked file with submodule creates empty directory
expecting success of 4137.4 'apply_index: replace directory with submodule':
prolog &&
reset_work_tree_to replace_sub1_with_directory &&
(
cd submodule_update &&
git branch -t replace_directory_with_sub1 origin/replace_directory_with_sub1 &&
$command replace_directory_with_sub1 &&
test_superproject_content origin/replace_directory_with_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/replace_directory_with_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'replace_sub1_with_directory'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
fatal: Needed a single revision
branch 'replace_directory_with_sub1' set up to track 'origin/replace_directory_with_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Submodule path 'uninitialized_sub': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 4 - apply_index: replace directory with submodule
expecting success of 4137.5 'apply_index: removed submodule leaves submodule directory and its contents in place':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t remove_sub1 origin/remove_sub1 &&
$command remove_sub1 &&
test_superproject_content origin/remove_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'remove_sub1' set up to track 'origin/remove_sub1'.
warning: unable to rmdir 'sub1': Directory not empty
ok 5 - apply_index: removed submodule leaves submodule directory and its contents in place
expecting success of 4137.6 'apply_index: removed submodule leaves submodule containing a .git directory alone':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t remove_sub1 origin/remove_sub1 &&
replace_gitfile_with_git_dir sub1 &&
$command remove_sub1 &&
test_superproject_content origin/remove_sub1 &&
test_git_directory_is_unchanged sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'remove_sub1' set up to track 'origin/remove_sub1'.
warning: unable to rmdir 'sub1': Directory not empty
ok 6 - apply_index: removed submodule leaves submodule containing a .git directory alone
expecting success of 4137.7 'apply_index: replace submodule with a directory must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_directory origin/replace_sub1_with_directory &&
$command replace_sub1_with_directory test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
error: sub1/file1: already exists in working directory
error: sub1/file2: already exists in working directory
ok 7 - apply_index: replace submodule with a directory must fail
expecting success of 4137.8 'apply_index: replace submodule containing a .git directory with a directory must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_directory origin/replace_sub1_with_directory &&
replace_gitfile_with_git_dir sub1 &&
$command replace_sub1_with_directory test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_git_directory_is_unchanged sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
error: sub1/file1: already exists in working directory
error: sub1/file2: already exists in working directory
ok 8 - apply_index: replace submodule containing a .git directory with a directory must fail
checking known breakage of 4137.9 'apply_index: replace submodule with a file must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_file origin/replace_sub1_with_file &&
$command replace_sub1_with_file test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
warning: unable to rmdir 'sub1': Directory not empty
error: unable to write file 'sub1' mode 100644: Directory not empty
'actual' is not empty, it contains:
:100644 100644 af3a0c56edfba1a28f50ada5ec2832a7f2f9b907 0000000000000000000000000000000000000000 M .gitmodules
not ok 9 - apply_index: replace submodule with a file must fail # TODO known breakage
checking known breakage of 4137.10 'apply_index: replace submodule containing a .git directory with a file must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_file origin/replace_sub1_with_file &&
replace_gitfile_with_git_dir sub1 &&
$command replace_sub1_with_file test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_git_directory_is_unchanged sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
warning: unable to rmdir 'sub1': Directory not empty
error: unable to write file 'sub1' mode 100644: Directory not empty
'actual' is not empty, it contains:
:100644 100644 af3a0c56edfba1a28f50ada5ec2832a7f2f9b907 0000000000000000000000000000000000000000 M .gitmodules
not ok 10 - apply_index: replace submodule containing a .git directory with a file must fail # TODO known breakage
expecting success of 4137.11 'apply_index: modified submodule does not update submodule work tree':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t modify_sub1 origin/modify_sub1 &&
$command modify_sub1 &&
test_superproject_content origin/modify_sub1 &&
test_submodule_content sub1 origin/add_sub1 &&
git submodule update &&
test_submodule_content sub1 origin/modify_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'modify_sub1' set up to track 'origin/modify_sub1'.
warning: unable to rmdir 'sub1': Directory not empty
Submodule path 'sub1': checked out '03da4ea88bb165bd26ee0b2e5c657f2858b23f53'
ok 11 - apply_index: modified submodule does not update submodule work tree
expecting success of 4137.12 'apply_index: modified submodule does not update submodule work tree to invalid commit':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t invalid_sub1 origin/invalid_sub1 &&
$command invalid_sub1 &&
test_superproject_content origin/invalid_sub1 &&
test_submodule_content sub1 origin/add_sub1 &&
test_must_fail git submodule update &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'invalid_sub1' set up to track 'origin/invalid_sub1'.
warning: unable to rmdir 'sub1': Directory not empty
fatal: remote error: upload-pack: not our ref 0123456789012345678901234567890123456789
fatal: Fetched in submodule path 'sub1', but it did not contain 0123456789012345678901234567890123456789. Direct fetching of that commit failed.
fatal: git upload-pack: not our ref 0123456789012345678901234567890123456789
ok 12 - apply_index: modified submodule does not update submodule work tree to invalid commit
expecting success of 4137.13 'apply_index: modified submodule does not update submodule work tree from invalid commit':
prolog &&
reset_work_tree_to invalid_sub1 &&
(
cd submodule_update &&
git branch -t valid_sub1 origin/valid_sub1 &&
$command valid_sub1 &&
test_superproject_content origin/valid_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/valid_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'invalid_sub1'
branch 'invalid_sub1' set up to track 'origin/invalid_sub1'.
fatal: Needed a single revision
branch 'valid_sub1' set up to track 'origin/valid_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Submodule path 'uninitialized_sub': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 13 - apply_index: modified submodule does not update submodule work tree from invalid commit
expecting success of 4137.14 'apply_index: added submodule doesn't remove untracked unignored file with same name':
prolog &&
reset_work_tree_to no_submodule &&
(
cd submodule_update &&
git branch -t add_sub1 origin/add_sub1 &&
>sub1 &&
$command add_sub1 test_must_fail &&
test_superproject_content origin/no_submodule &&
test_must_be_empty sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
error: sub1: already exists in working directory
ok 14 - apply_index: added submodule doesn't remove untracked unignored file with same name
expecting success of 4137.15 'apply_3way: added submodule creates empty directory':
prolog &&
reset_work_tree_to no_submodule &&
(
cd submodule_update &&
git branch -t add_sub1 origin/add_sub1 &&
$command add_sub1 &&
test_superproject_content origin/add_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
Falling back to direct application...
Falling back to direct application...
Falling back to direct application...
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Submodule path 'uninitialized_sub': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 15 - apply_3way: added submodule creates empty directory
expecting success of 4137.16 'apply_3way: added submodule leaves existing empty directory alone':
prolog &&
reset_work_tree_to no_submodule &&
(
cd submodule_update &&
mkdir sub1 &&
git branch -t add_sub1 origin/add_sub1 &&
$command add_sub1 &&
test_superproject_content origin/add_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
Falling back to direct application...
Falling back to direct application...
Falling back to direct application...
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Submodule path 'uninitialized_sub': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 16 - apply_3way: added submodule leaves existing empty directory alone
expecting success of 4137.17 'apply_3way: replace tracked file with submodule creates empty directory':
prolog &&
reset_work_tree_to replace_sub1_with_file &&
(
cd submodule_update &&
git branch -t replace_file_with_sub1 origin/replace_file_with_sub1 &&
$command replace_file_with_sub1 &&
test_superproject_content origin/replace_file_with_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/replace_file_with_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'replace_sub1_with_file'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
fatal: Needed a single revision
branch 'replace_file_with_sub1' set up to track 'origin/replace_file_with_sub1'.
Applied patch to '.gitmodules' cleanly.
Falling back to direct application...
Falling back to direct application...
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Submodule path 'uninitialized_sub': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 17 - apply_3way: replace tracked file with submodule creates empty directory
expecting success of 4137.18 'apply_3way: replace directory with submodule':
prolog &&
reset_work_tree_to replace_sub1_with_directory &&
(
cd submodule_update &&
git branch -t replace_directory_with_sub1 origin/replace_directory_with_sub1 &&
$command replace_directory_with_sub1 &&
test_superproject_content origin/replace_directory_with_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/replace_directory_with_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'replace_sub1_with_directory'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
fatal: Needed a single revision
branch 'replace_directory_with_sub1' set up to track 'origin/replace_directory_with_sub1'.
Applied patch to '.gitmodules' cleanly.
Falling back to direct application...
Falling back to direct application...
Falling back to direct application...
Falling back to direct application...
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Submodule path 'uninitialized_sub': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 18 - apply_3way: replace directory with submodule
expecting success of 4137.19 'apply_3way: removed submodule leaves submodule directory and its contents in place':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t remove_sub1 origin/remove_sub1 &&
$command remove_sub1 &&
test_superproject_content origin/remove_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'remove_sub1' set up to track 'origin/remove_sub1'.
Falling back to direct application...
Falling back to direct application...
Falling back to direct application...
warning: unable to rmdir 'sub1': Directory not empty
ok 19 - apply_3way: removed submodule leaves submodule directory and its contents in place
expecting success of 4137.20 'apply_3way: removed submodule leaves submodule containing a .git directory alone':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t remove_sub1 origin/remove_sub1 &&
replace_gitfile_with_git_dir sub1 &&
$command remove_sub1 &&
test_superproject_content origin/remove_sub1 &&
test_git_directory_is_unchanged sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'remove_sub1' set up to track 'origin/remove_sub1'.
Falling back to direct application...
Falling back to direct application...
Falling back to direct application...
warning: unable to rmdir 'sub1': Directory not empty
ok 20 - apply_3way: removed submodule leaves submodule containing a .git directory alone
expecting success of 4137.21 'apply_3way: replace submodule with a directory must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_directory origin/replace_sub1_with_directory &&
$command replace_sub1_with_directory test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
Applied patch to '.gitmodules' cleanly.
Falling back to direct application...
Performing three-way merge...
error: sub1/file1: does not exist in index
error: cannot read the current contents of 'sub1/file1'
error: sub1/file1: patch does not apply
Performing three-way merge...
error: sub1/file2: does not exist in index
error: cannot read the current contents of 'sub1/file2'
error: sub1/file2: patch does not apply
Falling back to direct application...
ok 21 - apply_3way: replace submodule with a directory must fail
expecting success of 4137.22 'apply_3way: replace submodule containing a .git directory with a directory must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_directory origin/replace_sub1_with_directory &&
replace_gitfile_with_git_dir sub1 &&
$command replace_sub1_with_directory test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_git_directory_is_unchanged sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_directory' set up to track 'origin/replace_sub1_with_directory'.
Applied patch to '.gitmodules' cleanly.
Falling back to direct application...
Performing three-way merge...
error: sub1/file1: does not exist in index
error: cannot read the current contents of 'sub1/file1'
error: sub1/file1: patch does not apply
Performing three-way merge...
error: sub1/file2: does not exist in index
error: cannot read the current contents of 'sub1/file2'
error: sub1/file2: patch does not apply
Falling back to direct application...
ok 22 - apply_3way: replace submodule containing a .git directory with a directory must fail
checking known breakage of 4137.23 'apply_3way: replace submodule with a file must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_file origin/replace_sub1_with_file &&
$command replace_sub1_with_file test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
Applied patch to '.gitmodules' cleanly.
Falling back to direct application...
Falling back to direct application...
warning: unable to rmdir 'sub1': Directory not empty
error: unable to write file 'sub1' mode 100644: Directory not empty
'actual' is not empty, it contains:
:100644 100644 af3a0c56edfba1a28f50ada5ec2832a7f2f9b907 0000000000000000000000000000000000000000 M .gitmodules
not ok 23 - apply_3way: replace submodule with a file must fail # TODO known breakage
checking known breakage of 4137.24 'apply_3way: replace submodule containing a .git directory with a file must fail':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t replace_sub1_with_file origin/replace_sub1_with_file &&
replace_gitfile_with_git_dir sub1 &&
$command replace_sub1_with_file test_must_fail &&
test_superproject_content origin/add_sub1 &&
test_git_directory_is_unchanged sub1 &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'replace_sub1_with_file' set up to track 'origin/replace_sub1_with_file'.
Applied patch to '.gitmodules' cleanly.
Falling back to direct application...
Falling back to direct application...
warning: unable to rmdir 'sub1': Directory not empty
error: unable to write file 'sub1' mode 100644: Directory not empty
'actual' is not empty, it contains:
:100644 100644 af3a0c56edfba1a28f50ada5ec2832a7f2f9b907 0000000000000000000000000000000000000000 M .gitmodules
not ok 24 - apply_3way: replace submodule containing a .git directory with a file must fail # TODO known breakage
expecting success of 4137.25 'apply_3way: modified submodule does not update submodule work tree':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t modify_sub1 origin/modify_sub1 &&
$command modify_sub1 &&
test_superproject_content origin/modify_sub1 &&
test_submodule_content sub1 origin/add_sub1 &&
git submodule update &&
test_submodule_content sub1 origin/modify_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'modify_sub1' set up to track 'origin/modify_sub1'.
Falling back to direct application...
warning: unable to rmdir 'sub1': Directory not empty
Submodule path 'sub1': checked out '03da4ea88bb165bd26ee0b2e5c657f2858b23f53'
ok 25 - apply_3way: modified submodule does not update submodule work tree
expecting success of 4137.26 'apply_3way: modified submodule does not update submodule work tree to invalid commit':
prolog &&
reset_work_tree_to add_sub1 &&
(
cd submodule_update &&
git branch -t invalid_sub1 origin/invalid_sub1 &&
$command invalid_sub1 &&
test_superproject_content origin/invalid_sub1 &&
test_submodule_content sub1 origin/add_sub1 &&
test_must_fail git submodule update &&
test_submodule_content sub1 origin/add_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'add_sub1'
branch 'add_sub1' set up to track 'origin/add_sub1'.
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_sub1) registered for path 'sub1'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update/sub1'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
branch 'invalid_sub1' set up to track 'origin/invalid_sub1'.
Falling back to direct application...
warning: unable to rmdir 'sub1': Directory not empty
fatal: git upload-pack: not our ref 0123456789012345678901234567890123456789
fatal: remote error: upload-pack: not our ref 0123456789012345678901234567890123456789
fatal: Fetched in submodule path 'sub1', but it did not contain 0123456789012345678901234567890123456789. Direct fetching of that commit failed.
ok 26 - apply_3way: modified submodule does not update submodule work tree to invalid commit
expecting success of 4137.27 'apply_3way: modified submodule does not update submodule work tree from invalid commit':
prolog &&
reset_work_tree_to invalid_sub1 &&
(
cd submodule_update &&
git branch -t valid_sub1 origin/valid_sub1 &&
$command valid_sub1 &&
test_superproject_content origin/valid_sub1 &&
test_dir_is_empty sub1 &&
git submodule update --init --recursive &&
test_submodule_content sub1 origin/valid_sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'invalid_sub1'
branch 'invalid_sub1' set up to track 'origin/invalid_sub1'.
fatal: Needed a single revision
branch 'valid_sub1' set up to track 'origin/valid_sub1'.
Falling back to direct application...
Submodule 'sub1' (/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_sub1) registered for path 'sub1'
Submodule 'uninitialized_sub' (/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update_sub1) registered for path 'uninitialized_sub'
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update/sub1'...
done.
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4137-apply-submodule/submodule_update/uninitialized_sub'...
done.
Submodule path 'sub1': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
Submodule path 'uninitialized_sub': checked out '63c430421a9604f896526f8a04236bdfe3ac1fc1'
ok 27 - apply_3way: modified submodule does not update submodule work tree from invalid commit
expecting success of 4137.28 'apply_3way: added submodule doesn't remove untracked unignored file with same name':
prolog &&
reset_work_tree_to no_submodule &&
(
cd submodule_update &&
git branch -t add_sub1 origin/add_sub1 &&
>sub1 &&
$command add_sub1 test_must_fail &&
test_superproject_content origin/no_submodule &&
test_must_be_empty sub1
)
Cloning into 'submodule_update'...
done.
Switched to a new branch 'no_submodule'
branch 'no_submodule' set up to track 'origin/no_submodule'.
branch 'add_sub1' set up to track 'origin/add_sub1'.
Falling back to direct application...
error: sub1: patch does not apply
Falling back to direct application...
ok 28 - apply_3way: added submodule doesn't remove untracked unignored file with same name
# still have 4 known breakage(s)
# passed all remaining 24 test(s)
1..28
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4208-log-magic-pathspec.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4208-log-magic-pathspec/.git/
expecting success of 4208.1 'setup':
test_commit initial &&
test_tick &&
git commit --allow-empty -m empty &&
mkdir sub
[main (root-commit) 24b24cf] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 initial.t
[main 41d179c] empty
Author: A U Thor <author@example.com>
ok 1 - setup
expecting success of 4208.2 '"git log :/" should not be ambiguous':
git log :/
commit 24b24cf8a829f5b8c30dfc018b0a459a2ccaf380
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:13:13 2005 -0700
initial
ok 2 - "git log :/" should not be ambiguous
expecting success of 4208.3 '"git log :/a" should be ambiguous (applied both rev and worktree)':
: >a &&
test_must_fail git log :/a 2>error &&
test_i18ngrep ambiguous error
fatal: ambiguous argument ':/a': both revision and filename
ok 3 - "git log :/a" should be ambiguous (applied both rev and worktree)
expecting success of 4208.4 '"git log :/a -- " should not be ambiguous':
git log :/a --
commit 24b24cf8a829f5b8c30dfc018b0a459a2ccaf380
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:13:13 2005 -0700
initial
ok 4 - "git log :/a -- " should not be ambiguous
expecting success of 4208.5 '"git log :/detached -- " should find a commit only in HEAD':
test_when_finished "git checkout main" &&
git checkout --detach &&
test_commit --no-tag detached &&
test_commit --no-tag something-else &&
git log :/detached --
HEAD is now at 41d179c empty
[detached HEAD 793f74f] detached
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 detached.t
[detached HEAD 53d04ef] something-else
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 something-else.t
commit 793f74f97a75d7fa26e06aea1eb13c6322d00e67
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
detached
commit 41d179cf92d6e064ff558d58ffa668d1ed939109
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
empty
commit 24b24cf8a829f5b8c30dfc018b0a459a2ccaf380
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:13:13 2005 -0700
initial
Warning: you are leaving 2 commits behind, not connected to
any of your branches:
53d04ef something-else
793f74f detached
If you want to keep them by creating a new branch, this may be a good time
to do so with:
git branch <new-branch-name> 53d04ef
Switched to branch 'main'
ok 5 - "git log :/detached -- " should find a commit only in HEAD
expecting success of 4208.6 '"git log :/detached -- " should not find an orphaned commit':
test_must_fail git log :/detached --
fatal: bad revision ':/detached'
ok 6 - "git log :/detached -- " should not find an orphaned commit
expecting success of 4208.7 '"git log :/detached -- " should find HEAD only of own worktree':
git worktree add other-tree HEAD &&
git -C other-tree checkout --detach &&
test_tick &&
git -C other-tree commit --allow-empty -m other-detached &&
git -C other-tree log :/other-detached -- &&
test_must_fail git log :/other-detached --
Preparing worktree (detached HEAD 41d179c)
HEAD is now at 41d179c empty
HEAD is now at 41d179c empty
[detached HEAD 690db08] other-detached
Author: A U Thor <author@example.com>
commit 690db086fe427145ef8254ddd95f5a291f5ad2dd
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:17:13 2005 -0700
other-detached
commit 41d179cf92d6e064ff558d58ffa668d1ed939109
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
empty
commit 24b24cf8a829f5b8c30dfc018b0a459a2ccaf380
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:13:13 2005 -0700
initial
fatal: bad revision ':/other-detached'
ok 7 - "git log :/detached -- " should find HEAD only of own worktree
expecting success of 4208.8 '"git log -- :/a" should not be ambiguous':
git log -- :/a
ok 8 - "git log -- :/a" should not be ambiguous
expecting success of 4208.9 '"git log :/any/path/" should not segfault':
test_must_fail git log :/any/path/
fatal: ambiguous argument ':/any/path/': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
ok 9 - "git log :/any/path/" should not segfault
expecting success of 4208.10 '"git log :/in" should not be ambiguous':
git log :/in
commit 24b24cf8a829f5b8c30dfc018b0a459a2ccaf380
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:13:13 2005 -0700
initial
ok 10 - "git log :/in" should not be ambiguous
expecting success of 4208.11 '"git log :" should be ambiguous':
test_must_fail git log : 2>error &&
test_i18ngrep ambiguous error
fatal: ambiguous argument ':': unknown revision or path not in the working tree.
ok 11 - "git log :" should be ambiguous
expecting success of 4208.12 'git log -- :':
git log -- :
commit 24b24cf8a829f5b8c30dfc018b0a459a2ccaf380
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:13:13 2005 -0700
initial
ok 12 - git log -- :
expecting success of 4208.13 'git log HEAD -- :/':
initial=$(git rev-parse --short HEAD^) &&
cat >expected <<-EOF &&
$initial initial
EOF
(cd sub && git log --oneline HEAD -- :/ >../actual) &&
test_cmp expected actual
ok 13 - git log HEAD -- :/
expecting success of 4208.14 '"git log :^sub" is not ambiguous':
git log :^sub
commit 24b24cf8a829f5b8c30dfc018b0a459a2ccaf380
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:13:13 2005 -0700
initial
ok 14 - "git log :^sub" is not ambiguous
expecting success of 4208.15 '"git log :^does-not-exist" does not match anything':
test_must_fail git log :^does-not-exist
fatal: ambiguous argument ':^does-not-exist': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
ok 15 - "git log :^does-not-exist" does not match anything
expecting success of 4208.16 '"git log :!" behaves the same as :^':
git log :!sub &&
test_must_fail git log :!does-not-exist
commit 24b24cf8a829f5b8c30dfc018b0a459a2ccaf380
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:13:13 2005 -0700
initial
fatal: ambiguous argument ':!does-not-exist': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
ok 16 - "git log :!" behaves the same as :^
expecting success of 4208.17 '"git log :(exclude)sub" is not ambiguous':
git log ":(exclude)sub"
commit 24b24cf8a829f5b8c30dfc018b0a459a2ccaf380
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:13:13 2005 -0700
initial
ok 17 - "git log :(exclude)sub" is not ambiguous
expecting success of 4208.18 '"git log :(exclude)sub --" must resolve as an object':
test_must_fail git log ":(exclude)sub" --
fatal: bad revision ':(exclude)sub'
ok 18 - "git log :(exclude)sub --" must resolve as an object
expecting success of 4208.19 '"git log :(unknown-magic) complains of bogus magic':
test_must_fail git log ":(unknown-magic)" 2>error &&
test_i18ngrep pathspec.magic error
fatal: Invalid pathspec magic 'unknown-magic' in ':(unknown-magic)'
ok 19 - "git log :(unknown-magic) complains of bogus magic
expecting success of 4208.20 'command line pathspec parsing for "git log"':
git reset --hard &&
>a &&
git add a &&
git commit -m "add an empty a" --allow-empty &&
echo 1 >a &&
git commit -a -m "update a to 1" &&
git checkout HEAD^ &&
echo 2 >a &&
git commit -a -m "update a to 2" &&
test_must_fail git merge main &&
git add a &&
git log --merge -- a
HEAD is now at 41d179c empty
[main 520c03e] add an empty a
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 a
[main 35b719c] update a to 1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
Note: switching to 'HEAD^'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 520c03e add an empty a
[detached HEAD 61d8fe9] update a to 2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
Auto-merging a
CONFLICT (content): Merge conflict in a
Automatic merge failed; fix conflicts and then commit the result.
commit 61d8fe935ee13c992ada18f68c7d4b175f28ae77
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:17:13 2005 -0700
update a to 2
commit 35b719c5373bb94b370829ac90035e2cd80daaba
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:17:13 2005 -0700
update a to 1
ok 20 - command line pathspec parsing for "git log"
expecting success of 4208.21 'tree_entry_interesting does not match past submodule boundaries':
test_when_finished "rm -rf repo submodule" &&
test_config_global protocol.file.allow always &&
git init submodule &&
test_commit -C submodule initial &&
git init repo &&
>"repo/[bracket]" &&
git -C repo add "[bracket]" &&
test_tick &&
git -C repo commit -m bracket &&
git -C repo rev-list HEAD -- "[bracket]" >expect &&
git -C repo submodule add ../submodule &&
test_tick &&
git -C repo commit -m submodule &&
git -C repo rev-list HEAD -- "[bracket]" >actual &&
test_cmp expect actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4208-log-magic-pathspec/submodule/.git/
[main (root-commit) 31243c6] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 initial.t
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4208-log-magic-pathspec/repo/.git/
[main (root-commit) fcad989] bracket
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 [bracket]
Cloning into '/<<PKGBUILDDIR>>/t/trash directory.t4208-log-magic-pathspec/repo/submodule'...
done.
[main 2614379] submodule
Author: A U Thor <author@example.com>
2 files changed, 4 insertions(+)
create mode 100644 .gitmodules
create mode 160000 submodule
ok 21 - tree_entry_interesting does not match past submodule boundaries
# passed all 21 test(s)
1..21
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4205-log-pretty-formats.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4205-log-pretty-formats/.git/
expecting success of 4205.1 'set up basic repos':
>foo &&
>bar &&
git add foo &&
test_tick &&
git config i18n.commitEncoding $test_encoding &&
commit_msg $test_encoding | git commit -F - &&
git add bar &&
test_tick &&
git commit -m "add bar" &&
git config --unset i18n.commitEncoding
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 foo
[master 91b4447] add bar
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 bar
ok 1 - set up basic repos
expecting success of 4205.2 'alias builtin format':
git log --pretty=oneline >expected &&
git config pretty.test-alias oneline &&
git log --pretty=test-alias >actual &&
test_cmp expected actual
ok 2 - alias builtin format
expecting success of 4205.3 'alias masking builtin format':
git log --pretty=oneline >expected &&
git config pretty.oneline "%H" &&
git log --pretty=oneline >actual &&
test_cmp expected actual
ok 3 - alias masking builtin format
expecting success of 4205.4 'alias user-defined format':
git log --pretty="format:%h" >expected &&
git config pretty.test-alias "format:%h" &&
git log --pretty=test-alias >actual &&
test_cmp expected actual
ok 4 - alias user-defined format
expecting success of 4205.5 'alias user-defined tformat with %s (ISO8859-1 encoding)':
git config i18n.logOutputEncoding $test_encoding &&
git log --oneline >expected-s &&
git log --pretty="tformat:%h %s" >actual-s &&
git config --unset i18n.logOutputEncoding &&
test_cmp expected-s actual-s
ok 5 - alias user-defined tformat with %s (ISO8859-1 encoding)
expecting success of 4205.6 'alias user-defined tformat with %s (utf-8 encoding)':
git log --oneline >expected-s &&
git log --pretty="tformat:%h %s" >actual-s &&
test_cmp expected-s actual-s
ok 6 - alias user-defined tformat with %s (utf-8 encoding)
expecting success of 4205.7 'alias user-defined tformat':
git log --pretty="tformat:%h" >expected &&
git config pretty.test-alias "tformat:%h" &&
git log --pretty=test-alias >actual &&
test_cmp expected actual
ok 7 - alias user-defined tformat
expecting success of 4205.8 'alias non-existent format':
git config pretty.test-alias format-that-will-never-exist &&
test_must_fail git log --pretty=test-alias
fatal: invalid --pretty format: test-alias
ok 8 - alias non-existent format
expecting success of 4205.9 'alias of an alias':
git log --pretty="tformat:%h" >expected &&
git config pretty.test-foo "tformat:%h" &&
git config pretty.test-bar test-foo &&
git log --pretty=test-bar >actual && test_cmp expected actual
ok 9 - alias of an alias
expecting success of 4205.10 'alias masking an alias':
git log --pretty=format:"Two %H" >expected &&
git config pretty.duplicate "format:One %H" &&
git config --add pretty.duplicate "format:Two %H" &&
git log --pretty=duplicate >actual &&
test_cmp expected actual
ok 10 - alias masking an alias
expecting success of 4205.11 'alias loop':
git config pretty.test-foo test-bar &&
git config pretty.test-bar test-foo &&
test_must_fail git log --pretty=test-foo
fatal: invalid --pretty format: 'test-foo' references an alias which points to itself
ok 11 - alias loop
expecting success of 4205.12 'NUL separation':
printf "add bar\0$(commit_msg)" >expected &&
git log -z --pretty="format:%s" >actual &&
test_cmp expected actual
ok 12 - NUL separation
expecting success of 4205.13 'NUL termination':
printf "add bar\0$(commit_msg)\0" >expected &&
git log -z --pretty="tformat:%s" >actual &&
test_cmp expected actual
ok 13 - NUL termination
expecting success of 4205.14 'NUL separation with --stat':
stat0_part=$(git diff --stat HEAD^ HEAD) &&
stat1_part=$(git diff-tree --no-commit-id --stat --root HEAD^) &&
printf "add bar\n$stat0_part\n\0$(commit_msg)\n$stat1_part\n" >expected &&
git log -z --stat --pretty="format:%s" >actual &&
test_cmp expected actual
ok 14 - NUL separation with --stat
checking known breakage of 4205.15 'NUL termination with --stat':
stat0_part=$(git diff --stat HEAD^ HEAD) &&
stat1_part=$(git diff-tree --no-commit-id --stat --root HEAD^) &&
printf "add bar\n$stat0_part\n\0$(commit_msg)\n$stat1_part\n0" >expected &&
git log -z --stat --pretty="tformat:%s" >actual &&
test_cmp expected actual
Binary files expected and actual differ
not ok 15 - NUL termination with --stat # TODO known breakage
expecting success of 4205.16 'NUL termination with --reflog --pretty=short':
revs="$(git rev-list --reflog)" &&
for r in $revs
do
git show -s "$r" --pretty="$p" &&
printf "\0" || return 1
done >expect &&
{
git log -z --reflog --pretty="$p" &&
printf "\0"
} >actual &&
test_cmp expect actual
ok 16 - NUL termination with --reflog --pretty=short
expecting success of 4205.17 'NUL termination with --reflog --pretty=medium':
revs="$(git rev-list --reflog)" &&
for r in $revs
do
git show -s "$r" --pretty="$p" &&
printf "\0" || return 1
done >expect &&
{
git log -z --reflog --pretty="$p" &&
printf "\0"
} >actual &&
test_cmp expect actual
ok 17 - NUL termination with --reflog --pretty=medium
expecting success of 4205.18 'NUL termination with --reflog --pretty=full':
revs="$(git rev-list --reflog)" &&
for r in $revs
do
git show -s "$r" --pretty="$p" &&
printf "\0" || return 1
done >expect &&
{
git log -z --reflog --pretty="$p" &&
printf "\0"
} >actual &&
test_cmp expect actual
ok 18 - NUL termination with --reflog --pretty=full
expecting success of 4205.19 'NUL termination with --reflog --pretty=fuller':
revs="$(git rev-list --reflog)" &&
for r in $revs
do
git show -s "$r" --pretty="$p" &&
printf "\0" || return 1
done >expect &&
{
git log -z --reflog --pretty="$p" &&
printf "\0"
} >actual &&
test_cmp expect actual
ok 19 - NUL termination with --reflog --pretty=fuller
expecting success of 4205.20 'NUL termination with --reflog --pretty=email':
revs="$(git rev-list --reflog)" &&
for r in $revs
do
git show -s "$r" --pretty="$p" &&
printf "\0" || return 1
done >expect &&
{
git log -z --reflog --pretty="$p" &&
printf "\0"
} >actual &&
test_cmp expect actual
ok 20 - NUL termination with --reflog --pretty=email
expecting success of 4205.21 'NUL termination with --reflog --pretty=raw':
revs="$(git rev-list --reflog)" &&
for r in $revs
do
git show -s "$r" --pretty="$p" &&
printf "\0" || return 1
done >expect &&
{
git log -z --reflog --pretty="$p" &&
printf "\0"
} >actual &&
test_cmp expect actual
ok 21 - NUL termination with --reflog --pretty=raw
expecting success of 4205.22 'NUL termination with --reflog --pretty=oneline':
revs="$(git rev-list --reflog)" &&
for r in $revs
do
git show -s --pretty=oneline "$r" >raw &&
cat raw | lf_to_nul || return 1
done >expect &&
# the trailing NUL is already produced so we do not need to
# output another one
git log -z --pretty=oneline --reflog >actual &&
test_cmp expect actual
ok 22 - NUL termination with --reflog --pretty=oneline
expecting success of 4205.23 'setup more commits':
test_commit "message one" one one message-one &&
test_commit "message two" two two message-two &&
head1=$(git rev-parse --verify --short HEAD~0) &&
head2=$(git rev-parse --verify --short HEAD~1) &&
head3=$(git rev-parse --verify --short HEAD~2) &&
head4=$(git rev-parse --verify --short HEAD~3)
[master 23ca4f5] message one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 one
[master a015cbe] message two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 two
ok 23 - setup more commits
expecting success of 4205.24 'left alignment formatting':
git log --pretty="tformat:%<(40)%s" >actual &&
qz_to_tab_space <<-EOF >expected &&
message two Z
message one Z
add bar Z
$(commit_msg) Z
EOF
test_cmp expected actual
ok 24 - left alignment formatting
expecting success of 4205.25 'left alignment formatting. i18n.logOutputEncoding':
git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%<(40)%s" >actual &&
qz_to_tab_space <<-EOF | iconv -f utf-8 -t $test_encoding >expected &&
message two Z
message one Z
add bar Z
$(commit_msg) Z
EOF
test_cmp expected actual
ok 25 - left alignment formatting. i18n.logOutputEncoding
expecting success of 4205.26 'left alignment formatting at the nth column':
git log --pretty="tformat:%h %<|(40)%s" >actual &&
qz_to_tab_space <<-EOF >expected &&
$head1 message two Z
$head2 message one Z
$head3 add bar Z
$head4 $(commit_msg) Z
EOF
test_cmp expected actual
ok 26 - left alignment formatting at the nth column
expecting success of 4205.27 'left alignment formatting at the nth column':
COLUMNS=50 git log --pretty="tformat:%h %<|(-10)%s" >actual &&
qz_to_tab_space <<-EOF >expected &&
$head1 message two Z
$head2 message one Z
$head3 add bar Z
$head4 $(commit_msg) Z
EOF
test_cmp expected actual
ok 27 - left alignment formatting at the nth column
expecting success of 4205.28 'left alignment formatting at the nth column. i18n.logOutputEncoding':
git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%h %<|(40)%s" >actual &&
qz_to_tab_space <<-EOF | iconv -f utf-8 -t $test_encoding >expected &&
$head1 message two Z
$head2 message one Z
$head3 add bar Z
$head4 $(commit_msg) Z
EOF
test_cmp expected actual
ok 28 - left alignment formatting at the nth column. i18n.logOutputEncoding
expecting success of 4205.29 'left alignment formatting with no padding':
git log --pretty="tformat:%<(1)%s" >actual &&
cat <<-EOF >expected &&
message two
message one
add bar
$(commit_msg)
EOF
test_cmp expected actual
ok 29 - left alignment formatting with no padding
expecting success of 4205.30 'left alignment formatting with no padding. i18n.logOutputEncoding':
git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%<(1)%s" >actual &&
cat <<-EOF | iconv -f utf-8 -t $test_encoding >expected &&
message two
message one
add bar
$(commit_msg)
EOF
test_cmp expected actual
ok 30 - left alignment formatting with no padding. i18n.logOutputEncoding
expecting success of 4205.31 'left alignment formatting with trunc':
git log --pretty="tformat:%<(10,trunc)%s" >actual &&
qz_to_tab_space <<-\EOF >expected &&
message ..
message ..
add bar Z
initial...
EOF
test_cmp expected actual
ok 31 - left alignment formatting with trunc
expecting success of 4205.32 'left alignment formatting with trunc. i18n.logOutputEncoding':
git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%<(10,trunc)%s" >actual &&
qz_to_tab_space <<-\EOF | iconv -f utf-8 -t $test_encoding >expected &&
message ..
message ..
add bar Z
initial...
EOF
test_cmp expected actual
ok 32 - left alignment formatting with trunc. i18n.logOutputEncoding
expecting success of 4205.33 'left alignment formatting with ltrunc':
git log --pretty="tformat:%<(10,ltrunc)%s" >actual &&
qz_to_tab_space <<-EOF >expected &&
..sage two
..sage one
add bar Z
..${sample_utf8_part}lich
EOF
test_cmp expected actual
ok 33 - left alignment formatting with ltrunc
expecting success of 4205.34 'left alignment formatting with ltrunc. i18n.logOutputEncoding':
git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%<(10,ltrunc)%s" >actual &&
qz_to_tab_space <<-EOF | iconv -f utf-8 -t $test_encoding >expected &&
..sage two
..sage one
add bar Z
..${sample_utf8_part}lich
EOF
test_cmp expected actual
ok 34 - left alignment formatting with ltrunc. i18n.logOutputEncoding
expecting success of 4205.35 'left alignment formatting with mtrunc':
git log --pretty="tformat:%<(10,mtrunc)%s" >actual &&
qz_to_tab_space <<-\EOF >expected &&
mess.. two
mess.. one
add bar Z
init..lich
EOF
test_cmp expected actual
ok 35 - left alignment formatting with mtrunc
expecting success of 4205.36 'left alignment formatting with mtrunc. i18n.logOutputEncoding':
git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%<(10,mtrunc)%s" >actual &&
qz_to_tab_space <<-\EOF | iconv -f utf-8 -t $test_encoding >expected &&
mess.. two
mess.. one
add bar Z
init..lich
EOF
test_cmp expected actual
ok 36 - left alignment formatting with mtrunc. i18n.logOutputEncoding
expecting success of 4205.37 'right alignment formatting':
git log --pretty="tformat:%>(40)%s" >actual &&
qz_to_tab_space <<-EOF >expected &&
Z message two
Z message one
Z add bar
Z $(commit_msg)
EOF
test_cmp expected actual
ok 37 - right alignment formatting
expecting success of 4205.38 'right alignment formatting. i18n.logOutputEncoding':
git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%>(40)%s" >actual &&
qz_to_tab_space <<-EOF | iconv -f utf-8 -t $test_encoding >expected &&
Z message two
Z message one
Z add bar
Z $(commit_msg)
EOF
test_cmp expected actual
ok 38 - right alignment formatting. i18n.logOutputEncoding
expecting success of 4205.39 'right alignment formatting at the nth column':
git log --pretty="tformat:%h %>|(40)%s" >actual &&
qz_to_tab_space <<-EOF >expected &&
$head1 message two
$head2 message one
$head3 add bar
$head4 $(commit_msg)
EOF
test_cmp expected actual
ok 39 - right alignment formatting at the nth column
expecting success of 4205.40 'right alignment formatting at the nth column':
COLUMNS=50 git log --pretty="tformat:%h %>|(-10)%s" >actual &&
qz_to_tab_space <<-EOF >expected &&
$head1 message two
$head2 message one
$head3 add bar
$head4 $(commit_msg)
EOF
test_cmp expected actual
ok 40 - right alignment formatting at the nth column
expecting success of 4205.41 'right alignment formatting at the nth column. i18n.logOutputEncoding':
git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%h %>|(40)%s" >actual &&
qz_to_tab_space <<-EOF | iconv -f utf-8 -t $test_encoding >expected &&
$head1 message two
$head2 message one
$head3 add bar
$head4 $(commit_msg)
EOF
test_cmp expected actual
ok 41 - right alignment formatting at the nth column. i18n.logOutputEncoding
expecting success of 4205.42 'right alignment formatting at the nth column with --graph. i18n.logOutputEncoding':
git -c i18n.logOutputEncoding=$test_encoding log --graph --pretty="tformat:%h %>|(40)%s" >actual &&
iconv -f utf-8 -t $test_encoding >expected <<-EOF &&
* $head1 message two
* $head2 message one
* $head3 add bar
* $head4 $(commit_msg)
EOF
test_cmp expected actual
ok 42 - right alignment formatting at the nth column with --graph. i18n.logOutputEncoding
expecting success of 4205.43 'right alignment formatting with no padding':
git log --pretty="tformat:%>(1)%s" >actual &&
cat <<-EOF >expected &&
message two
message one
add bar
$(commit_msg)
EOF
test_cmp expected actual
ok 43 - right alignment formatting with no padding
expecting success of 4205.44 'right alignment formatting with no padding and with --graph':
git log --graph --pretty="tformat:%>(1)%s" >actual &&
cat <<-EOF >expected &&
* message two
* message one
* add bar
* $(commit_msg)
EOF
test_cmp expected actual
ok 44 - right alignment formatting with no padding and with --graph
expecting success of 4205.45 'right alignment formatting with no padding. i18n.logOutputEncoding':
git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%>(1)%s" >actual &&
cat <<-EOF | iconv -f utf-8 -t $test_encoding >expected &&
message two
message one
add bar
$(commit_msg)
EOF
test_cmp expected actual
ok 45 - right alignment formatting with no padding. i18n.logOutputEncoding
expecting success of 4205.46 'center alignment formatting':
git log --pretty="tformat:%><(40)%s" >actual &&
qz_to_tab_space <<-EOF >expected &&
Z message two Z
Z message one Z
Z add bar Z
Z $(commit_msg) Z
EOF
test_cmp expected actual
ok 46 - center alignment formatting
expecting success of 4205.47 'center alignment formatting. i18n.logOutputEncoding':
git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%><(40)%s" >actual &&
qz_to_tab_space <<-EOF | iconv -f utf-8 -t $test_encoding >expected &&
Z message two Z
Z message one Z
Z add bar Z
Z $(commit_msg) Z
EOF
test_cmp expected actual
ok 47 - center alignment formatting. i18n.logOutputEncoding
expecting success of 4205.48 'center alignment formatting at the nth column':
git log --pretty="tformat:%h %><|(40)%s" >actual &&
qz_to_tab_space <<-EOF >expected &&
$head1 message two Z
$head2 message one Z
$head3 add bar Z
$head4 $(commit_msg) Z
EOF
test_cmp expected actual
ok 48 - center alignment formatting at the nth column
expecting success of 4205.49 'center alignment formatting at the nth column':
COLUMNS=70 git log --pretty="tformat:%h %><|(-30)%s" >actual &&
qz_to_tab_space <<-EOF >expected &&
$head1 message two Z
$head2 message one Z
$head3 add bar Z
$head4 $(commit_msg) Z
EOF
test_cmp expected actual
ok 49 - center alignment formatting at the nth column
expecting success of 4205.50 'center alignment formatting at the nth column. i18n.logOutputEncoding':
git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%h %><|(40)%s" >actual &&
qz_to_tab_space <<-EOF | iconv -f utf-8 -t $test_encoding >expected &&
$head1 message two Z
$head2 message one Z
$head3 add bar Z
$head4 $(commit_msg) Z
EOF
test_cmp expected actual
ok 50 - center alignment formatting at the nth column. i18n.logOutputEncoding
expecting success of 4205.51 'center alignment formatting with no padding':
git log --pretty="tformat:%><(1)%s" >actual &&
cat <<-EOF >expected &&
message two
message one
add bar
$(commit_msg)
EOF
test_cmp expected actual
ok 51 - center alignment formatting with no padding
expecting success of 4205.52 'center alignment formatting with no padding. i18n.logOutputEncoding':
git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%><(1)%s" >actual &&
cat <<-EOF | iconv -f utf-8 -t $test_encoding >expected &&
message two
message one
add bar
$(commit_msg)
EOF
test_cmp expected actual
ok 52 - center alignment formatting with no padding. i18n.logOutputEncoding
expecting success of 4205.53 'left/right alignment formatting with stealing':
git commit --amend -m short --author "long long long <long@me.com>" &&
git log --pretty="tformat:%<(10,trunc)%s%>>(10,ltrunc)% an" >actual &&
cat <<-\EOF >expected &&
short long long long
message .. A U Thor
add bar A U Thor
initial... A U Thor
EOF
test_cmp expected actual
[master 2151238] short
Author: long long long <long@me.com>
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 two
ok 53 - left/right alignment formatting with stealing
expecting success of 4205.54 'left/right alignment formatting with stealing. i18n.logOutputEncoding':
git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%<(10,trunc)%s%>>(10,ltrunc)% an" >actual &&
cat <<-\EOF | iconv -f utf-8 -t $test_encoding >expected &&
short long long long
message .. A U Thor
add bar A U Thor
initial... A U Thor
EOF
test_cmp expected actual
ok 54 - left/right alignment formatting with stealing. i18n.logOutputEncoding
expecting success of 4205.55 'strbuf_utf8_replace() not producing NUL':
git log --color --pretty="tformat:%<(10,trunc)%s%>>(10,ltrunc)%C(auto)%d" |
test_decode_color |
nul_to_q >actual &&
! grep Q actual
ok 55 - strbuf_utf8_replace() not producing NUL
expecting success of 4205.56 '--date=iso-strict %ad%cd is the same as %aI%cI':
git log --format=%ad%n%cd --date=iso-strict >expected &&
git log --format=%aI%n%cI >actual &&
test_cmp expected actual
ok 56 - --date=iso-strict %ad%cd is the same as %aI%cI
expecting success of 4205.57 '--date=short %ad%cd is the same as %as%cs':
git log --format=%ad%n%cd --date=short >expected &&
git log --format=%as%n%cs >actual &&
test_cmp expected actual
ok 57 - --date=short %ad%cd is the same as %as%cs
expecting success of 4205.58 '--date=human %ad%cd is the same as %ah%ch':
git log --format=%ad%n%cd --date=human >expected &&
git log --format=%ah%n%ch >actual &&
test_cmp expected actual
ok 58 - --date=human %ad%cd is the same as %ah%ch
expecting success of 4205.59 'set up log decoration tests':
head1=$(git rev-parse --verify HEAD~0) &&
head2=$(git rev-parse --verify HEAD~1)
ok 59 - set up log decoration tests
expecting success of 4205.60 'log decoration properly follows tag chain':
git tag -a tag1 -m tag1 &&
git tag -a tag2 -m tag2 tag1 &&
git tag -d tag1 &&
git commit --amend -m shorter &&
git log --no-walk --tags --pretty="%H %d" --decorate=full >actual &&
cat <<-EOF >expected &&
$head2 (tag: refs/tags/message-one)
$old_head1 (tag: refs/tags/message-two)
$head1 (tag: refs/tags/tag2)
EOF
sort -k3 actual >actual1 &&
test_cmp expected actual1
hint: You have created a nested tag. The object referred to by your new tag is
hint: already a tag. If you meant to tag the object that it points to, use:
hint:
hint: git tag -f tag2 tag1^{}
hint: Disable this message with "git config advice.nestedTag false"
Deleted tag 'tag1' (was 3df4ac8)
[master e1fa287] shorter
Author: long long long <long@me.com>
Date: Thu Apr 7 15:16:13 2005 -0700
1 file changed, 1 insertion(+)
create mode 100644 two
ok 60 - log decoration properly follows tag chain
expecting success of 4205.61 'clean log decoration':
git log --no-walk --tags --pretty="%H %D" --decorate=full >actual &&
cat >expected <<-EOF &&
$head2 tag: refs/tags/message-one
$old_head1 tag: refs/tags/message-two
$head1 tag: refs/tags/tag2
EOF
sort -k3 actual >actual1 &&
test_cmp expected actual1
ok 61 - clean log decoration
expecting success of 4205.62 'set up trailer tests':
echo "Some contents" >trailerfile &&
git add trailerfile &&
git commit -F - <<-EOF
trailers: this commit message has trailers
This commit is a test commit with trailers at the end. We parse this
message and display the trailers using %(trailers).
$(cat trailers)
EOF
[master 6ec41af] trailers: this commit message has trailers
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 trailerfile
ok 62 - set up trailer tests
expecting success of 4205.63 'pretty format %(trailers) shows trailers':
git log --no-walk --pretty="%(trailers)" >actual &&
{
cat trailers &&
echo
} >expect &&
test_cmp expect actual
ok 63 - pretty format %(trailers) shows trailers
expecting success of 4205.64 'pretty format %(trailers:) enables no options':
git log --no-walk --pretty="%(trailers:)" >actual &&
# "expect" the same as the test above
test_cmp expect actual
ok 64 - pretty format %(trailers:) enables no options
expecting success of 4205.65 '%(trailers:only) shows only "key: value" trailers':
git log --no-walk --pretty="%(trailers:only)" >actual &&
{
grep -v patch.description <trailers &&
echo
} >expect &&
test_cmp expect actual
ok 65 - %(trailers:only) shows only "key: value" trailers
expecting success of 4205.66 '%(trailers:only=yes) shows only "key: value" trailers':
git log --no-walk --pretty=format:"%(trailers:only=yes)" >actual &&
grep -v patch.description <trailers >expect &&
test_cmp expect actual
ok 66 - %(trailers:only=yes) shows only "key: value" trailers
expecting success of 4205.67 '%(trailers:only=no) shows all trailers':
git log --no-walk --pretty=format:"%(trailers:only=no)" >actual &&
cat trailers >expect &&
test_cmp expect actual
ok 67 - %(trailers:only=no) shows all trailers
expecting success of 4205.68 '%(trailers:only=no,only=true) shows only "key: value" trailers':
git log --no-walk --pretty=format:"%(trailers:only=yes)" >actual &&
grep -v patch.description <trailers >expect &&
test_cmp expect actual
ok 68 - %(trailers:only=no,only=true) shows only "key: value" trailers
expecting success of 4205.69 '%(trailers:unfold) unfolds trailers':
git log --no-walk --pretty="%(trailers:unfold)" >actual &&
{
unfold <trailers &&
echo
} >expect &&
test_cmp expect actual
ok 69 - %(trailers:unfold) unfolds trailers
expecting success of 4205.70 ':only and :unfold work together':
git log --no-walk --pretty="%(trailers:only,unfold)" >actual &&
git log --no-walk --pretty="%(trailers:unfold,only)" >reverse &&
test_cmp actual reverse &&
{
grep -v patch.description <trailers | unfold &&
echo
} >expect &&
test_cmp expect actual
ok 70 - :only and :unfold work together
expecting success of 4205.71 'pretty format %(trailers:key=foo) shows that trailer':
git log --no-walk --pretty="format:%(trailers:key=Acked-by)" >actual &&
echo "Acked-by: A U Thor <author@example.com>" >expect &&
test_cmp expect actual
ok 71 - pretty format %(trailers:key=foo) shows that trailer
expecting success of 4205.72 'pretty format %(trailers:key=foo) is case insensitive':
git log --no-walk --pretty="format:%(trailers:key=AcKed-bY)" >actual &&
echo "Acked-by: A U Thor <author@example.com>" >expect &&
test_cmp expect actual
ok 72 - pretty format %(trailers:key=foo) is case insensitive
expecting success of 4205.73 'pretty format %(trailers:key=foo:) trailing colon also works':
git log --no-walk --pretty="format:%(trailers:key=Acked-by:)" >actual &&
echo "Acked-by: A U Thor <author@example.com>" >expect &&
test_cmp expect actual
ok 73 - pretty format %(trailers:key=foo:) trailing colon also works
expecting success of 4205.74 'pretty format %(trailers:key=foo) multiple keys':
git log --no-walk --pretty="format:%(trailers:key=Acked-by:,key=Signed-off-By)" >actual &&
grep -v patch.description <trailers >expect &&
test_cmp expect actual
ok 74 - pretty format %(trailers:key=foo) multiple keys
expecting success of 4205.75 '%(trailers:key=nonexistent) becomes empty':
git log --no-walk --pretty="x%(trailers:key=Nacked-by)x" >actual &&
echo "xx" >expect &&
test_cmp expect actual
ok 75 - %(trailers:key=nonexistent) becomes empty
expecting success of 4205.76 '%(trailers:key=foo) handles multiple lines even if folded':
git log --no-walk --pretty="format:%(trailers:key=Signed-Off-by)" >actual &&
grep -v patch.description <trailers | grep -v Acked-by >expect &&
test_cmp expect actual
ok 76 - %(trailers:key=foo) handles multiple lines even if folded
expecting success of 4205.77 '%(trailers:key=foo,unfold) properly unfolds':
git log --no-walk --pretty="format:%(trailers:key=Signed-Off-by,unfold)" >actual &&
unfold <trailers | grep Signed-off-by >expect &&
test_cmp expect actual
ok 77 - %(trailers:key=foo,unfold) properly unfolds
expecting success of 4205.78 'pretty format %(trailers:key=foo,only=no) also includes nontrailer lines':
git log --no-walk --pretty="format:%(trailers:key=Acked-by,only=no)" >actual &&
{
echo "Acked-by: A U Thor <author@example.com>" &&
grep patch.description <trailers
} >expect &&
test_cmp expect actual
ok 78 - pretty format %(trailers:key=foo,only=no) also includes nontrailer lines
expecting success of 4205.79 '%(trailers:key) without value is error':
git log --no-walk --pretty="tformat:%(trailers:key)" >actual &&
echo "%(trailers:key)" >expect &&
test_cmp expect actual
ok 79 - %(trailers:key) without value is error
expecting success of 4205.80 '%(trailers:keyonly) shows only keys':
git log --no-walk --pretty="format:%(trailers:keyonly)" >actual &&
test_write_lines \
"Signed-off-by" \
"Acked-by" \
"[ v2 updated patch description ]" \
"Signed-off-by" >expect &&
test_cmp expect actual
ok 80 - %(trailers:keyonly) shows only keys
expecting success of 4205.81 '%(trailers:key=foo,keyonly) shows only key':
git log --no-walk --pretty="format:%(trailers:key=Acked-by,keyonly)" >actual &&
echo "Acked-by" >expect &&
test_cmp expect actual
ok 81 - %(trailers:key=foo,keyonly) shows only key
expecting success of 4205.82 '%(trailers:key=foo,valueonly) shows only value':
git log --no-walk --pretty="format:%(trailers:key=Acked-by,valueonly)" >actual &&
echo "A U Thor <author@example.com>" >expect &&
test_cmp expect actual
ok 82 - %(trailers:key=foo,valueonly) shows only value
expecting success of 4205.83 '%(trailers:valueonly) shows only values':
git log --no-walk --pretty="format:%(trailers:valueonly)" >actual &&
test_write_lines \
"A U Thor <author@example.com>" \
"A U Thor <author@example.com>" \
"[ v2 updated patch description ]" \
"A U Thor" \
" <author@example.com>" >expect &&
test_cmp expect actual
ok 83 - %(trailers:valueonly) shows only values
expecting success of 4205.84 '%(trailers:key=foo,keyonly,valueonly) shows nothing':
git log --no-walk --pretty="format:%(trailers:key=Acked-by,keyonly,valueonly)" >actual &&
echo >expect &&
test_cmp expect actual
ok 84 - %(trailers:key=foo,keyonly,valueonly) shows nothing
expecting success of 4205.85 'pretty format %(trailers:separator) changes separator':
git log --no-walk --pretty=format:"X%(trailers:separator=%x00)X" >actual &&
(
printf "XSigned-off-by: A U Thor <author@example.com>\0" &&
printf "Acked-by: A U Thor <author@example.com>\0" &&
printf "[ v2 updated patch description ]\0" &&
printf "Signed-off-by: A U Thor\n <author@example.com>X"
) >expect &&
test_cmp expect actual
ok 85 - pretty format %(trailers:separator) changes separator
expecting success of 4205.86 'pretty format %(trailers:separator=X,unfold) changes separator':
git log --no-walk --pretty=format:"X%(trailers:separator=%x00,unfold)X" >actual &&
(
printf "XSigned-off-by: A U Thor <author@example.com>\0" &&
printf "Acked-by: A U Thor <author@example.com>\0" &&
printf "[ v2 updated patch description ]\0" &&
printf "Signed-off-by: A U Thor <author@example.com>X"
) >expect &&
test_cmp expect actual
ok 86 - pretty format %(trailers:separator=X,unfold) changes separator
expecting success of 4205.87 'pretty format %(trailers:key_value_separator) changes key-value separator':
git log --no-walk --pretty=format:"X%(trailers:key_value_separator=%x00)X" >actual &&
(
printf "XSigned-off-by\0A U Thor <author@example.com>\n" &&
printf "Acked-by\0A U Thor <author@example.com>\n" &&
printf "[ v2 updated patch description ]\n" &&
printf "Signed-off-by\0A U Thor\n <author@example.com>\nX"
) >expect &&
test_cmp expect actual
ok 87 - pretty format %(trailers:key_value_separator) changes key-value separator
expecting success of 4205.88 'pretty format %(trailers:key_value_separator,unfold) changes key-value separator':
git log --no-walk --pretty=format:"X%(trailers:key_value_separator=%x00,unfold)X" >actual &&
(
printf "XSigned-off-by\0A U Thor <author@example.com>\n" &&
printf "Acked-by\0A U Thor <author@example.com>\n" &&
printf "[ v2 updated patch description ]\n" &&
printf "Signed-off-by\0A U Thor <author@example.com>\nX"
) >expect &&
test_cmp expect actual
ok 88 - pretty format %(trailers:key_value_separator,unfold) changes key-value separator
expecting success of 4205.89 'pretty format %(trailers:separator,key_value_separator) changes both separators':
git log --no-walk --pretty=format:"%(trailers:separator=%x00,key_value_separator=%x00%x00,unfold)" >actual &&
(
printf "Signed-off-by\0\0A U Thor <author@example.com>\0" &&
printf "Acked-by\0\0A U Thor <author@example.com>\0" &&
printf "[ v2 updated patch description ]\0" &&
printf "Signed-off-by\0\0A U Thor <author@example.com>"
) >expect &&
test_cmp expect actual
ok 89 - pretty format %(trailers:separator,key_value_separator) changes both separators
expecting success of 4205.90 'pretty format %(trailers) combining separator/key/keyonly/valueonly':
git commit --allow-empty -F - <<-\EOF &&
Important fix
The fix is explained here
Closes: #1234
EOF
git commit --allow-empty -F - <<-\EOF &&
Another fix
The fix is explained here
Closes: #567
Closes: #890
EOF
git commit --allow-empty -F - <<-\EOF &&
Does not close any tickets
EOF
git log --pretty="%s% (trailers:separator=%x2c%x20,key=Closes,valueonly)" HEAD~3.. >actual &&
test_write_lines \
"Does not close any tickets" \
"Another fix #567, #890" \
"Important fix #1234" >expect &&
test_cmp expect actual &&
git log --pretty="%s% (trailers:separator=%x2c%x20,key=Closes,keyonly)" HEAD~3.. >actual &&
test_write_lines \
"Does not close any tickets" \
"Another fix Closes, Closes" \
"Important fix Closes" >expect &&
test_cmp expect actual
[master 7552cfc] Important fix
Author: A U Thor <author@example.com>
[master d209f85] Another fix
Author: A U Thor <author@example.com>
[master 0407bf5] Does not close any tickets
Author: A U Thor <author@example.com>
ok 90 - pretty format %(trailers) combining separator/key/keyonly/valueonly
expecting success of 4205.91 'trailer parsing not fooled by --- line':
git commit --allow-empty -F - <<-\EOF &&
this is the subject
This is the body. The message has a "---" line which would confuse a
message+patch parser. But here we know we have only a commit message,
so we get it right.
trailer: wrong
---
This is more body.
trailer: right
EOF
{
echo "trailer: right" &&
echo
} >expect &&
git log --no-walk --format="%(trailers)" >actual &&
test_cmp expect actual
[master 46ac407] this is the subject
Author: A U Thor <author@example.com>
ok 91 - trailer parsing not fooled by --- line
expecting success of 4205.92 'set up %S tests':
git checkout --orphan source-a &&
test_commit one &&
test_commit two &&
git checkout -b source-b HEAD^ &&
test_commit three
Switched to a new branch 'source-a'
[source-a (root-commit) aa5db7b] one
Author: A U Thor <author@example.com>
6 files changed, 4 insertions(+)
create mode 100644 bar
create mode 100644 foo
create mode 100644 one
create mode 100644 one.t
create mode 100644 trailerfile
create mode 100644 two
[source-a cb4b6b5] two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 two.t
Switched to a new branch 'source-b'
[source-b d08742c] three
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 three.t
ok 92 - set up %S tests
expecting success of 4205.93 'log --format=%S paints branch names':
cat >expect <<-\EOF &&
source-b
source-a
source-b
EOF
git log --format=%S source-a source-b >actual &&
test_cmp expect actual
ok 93 - log --format=%S paints branch names
expecting success of 4205.94 'log --format=%S paints tag names':
git tag -m tagged source-tag &&
cat >expect <<-\EOF &&
source-tag
source-a
source-tag
EOF
git log --format=%S source-tag source-a >actual &&
test_cmp expect actual
ok 94 - log --format=%S paints tag names
expecting success of 4205.95 'log --format=%S paints symmetric ranges':
cat >expect <<-\EOF &&
source-b
source-a
EOF
git log --format=%S source-a...source-b >actual &&
test_cmp expect actual
ok 95 - log --format=%S paints symmetric ranges
expecting success of 4205.96 '%S in git log --format works with other placeholders (part 1)':
git log --format="source-b %h" source-b >expect &&
git log --format="%S %h" source-b >actual &&
test_cmp expect actual
ok 96 - %S in git log --format works with other placeholders (part 1)
expecting success of 4205.97 '%S in git log --format works with other placeholders (part 2)':
git log --format="%h source-b" source-b >expect &&
git log --format="%h %S" source-b >actual &&
test_cmp expect actual
ok 97 - %S in git log --format works with other placeholders (part 2)
expecting success of 4205.98 'log --pretty=reference':
git log --pretty="tformat:%h (%s, %as)" >expect &&
git log --pretty=reference >actual &&
test_cmp expect actual
ok 98 - log --pretty=reference
expecting success of 4205.99 'log --pretty=reference with log.date is overridden by short date':
git log --pretty="tformat:%h (%s, %as)" >expect &&
test_config log.date rfc &&
git log --pretty=reference >actual &&
test_cmp expect actual
ok 99 - log --pretty=reference with log.date is overridden by short date
expecting success of 4205.100 'log --pretty=reference with explicit date overrides short date':
git log --date=rfc --pretty="tformat:%h (%s, %ad)" >expect &&
git log --date=rfc --pretty=reference >actual &&
test_cmp expect actual
ok 100 - log --pretty=reference with explicit date overrides short date
expecting success of 4205.101 'log --pretty=reference is never unabbreviated':
git log --pretty="tformat:%h (%s, %as)" >expect &&
git log --no-abbrev-commit --pretty=reference >actual &&
test_cmp expect actual
ok 101 - log --pretty=reference is never unabbreviated
expecting success of 4205.102 'log --pretty=reference is never decorated':
git log --pretty="tformat:%h (%s, %as)" >expect &&
git log --decorate=short --pretty=reference >actual &&
test_cmp expect actual
ok 102 - log --pretty=reference is never decorated
expecting success of 4205.103 'log --pretty=reference does not output reflog info':
git log --walk-reflogs --pretty="tformat:%h (%s, %as)" >expect &&
git log --walk-reflogs --pretty=reference >actual &&
test_cmp expect actual
ok 103 - log --pretty=reference does not output reflog info
expecting success of 4205.104 'log --pretty=reference is colored appropriately':
git log --color=always --pretty="tformat:%C(auto)%h (%s, %as)" >expect &&
git log --color=always --pretty=reference >actual &&
test_cmp expect actual
ok 104 - log --pretty=reference is colored appropriately
expecting success of 4205.105 '%(describe) vs git describe':
git log --format="%H" | while read hash
do
if desc=$(git describe $hash)
then
: >expect-contains-good
else
: >expect-contains-bad
fi &&
echo "$hash $desc" || return 1
done >expect &&
test_path_exists expect-contains-good &&
test_path_exists expect-contains-bad &&
git log --format="%H %(describe)" >actual 2>err &&
test_cmp expect actual &&
test_must_be_empty err
fatal: No annotated tags can describe 'aa5db7b88c8b024da7449b63511f1895ad02316f'.
However, there were unannotated tags: try --tags.
ok 105 - %(describe) vs git describe
expecting success of 4205.106 '%(describe:match=...) vs git describe --match ...':
test_when_finished "git tag -d tag-match" &&
git tag -a -m tagged tag-match &&
git describe --match "*-match" >expect &&
git log -1 --format="%(describe:match=*-match)" >actual &&
test_cmp expect actual
Deleted tag 'tag-match' (was 5953a68)
ok 106 - %(describe:match=...) vs git describe --match ...
expecting success of 4205.107 '%(describe:exclude=...) vs git describe --exclude ...':
test_when_finished "git tag -d tag-exclude" &&
git tag -a -m tagged tag-exclude &&
git describe --exclude "*-exclude" >expect &&
git log -1 --format="%(describe:exclude=*-exclude)" >actual &&
test_cmp expect actual
Deleted tag 'tag-exclude' (was 2dc1fa5)
ok 107 - %(describe:exclude=...) vs git describe --exclude ...
expecting success of 4205.108 '%(describe:tags) vs git describe --tags':
test_when_finished "git tag -d tagname" &&
git tag tagname &&
git describe --tags >expect &&
git log -1 --format="%(describe:tags)" >actual &&
test_cmp expect actual
Deleted tag 'tagname' (was d08742c)
ok 108 - %(describe:tags) vs git describe --tags
expecting success of 4205.109 '%(describe:abbrev=...) vs git describe --abbrev=...':
test_when_finished "git tag -d tagname" &&
# Case 1: We have commits between HEAD and the most recent tag
# reachable from it
test_commit --no-tag file &&
git describe --abbrev=15 >expect &&
git log -1 --format="%(describe:abbrev=15)" >actual &&
test_cmp expect actual &&
# Make sure the hash used is at least 15 digits long
sed -e "s/^.*-g\([0-9a-f]*\)$/\1/" <actual >hexpart &&
test 16 -le $(wc -c <hexpart) &&
# Case 2: We have a tag at HEAD, describe directly gives the
# name of the tag
git tag -a -m tagged tagname &&
git describe --abbrev=15 >expect &&
git log -1 --format="%(describe:abbrev=15)" >actual &&
test_cmp expect actual &&
test tagname = $(cat actual)
[source-b 0442b49] file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file.t
Deleted tag 'tagname' (was 815a9d0)
ok 109 - %(describe:abbrev=...) vs git describe --abbrev=...
expecting success of 4205.110 'log --pretty with space stealing':
printf mm0 >expect &&
git log -1 --pretty="format:mm%>>|(1)%x30" >actual &&
test_cmp expect actual
ok 110 - log --pretty with space stealing
expecting success of 4205.111 'log --pretty with invalid padding format':
printf "%s%%<(20" "$(git rev-parse HEAD)" >expect &&
git log -1 --pretty="format:%H%<(20" >actual &&
test_cmp expect actual
ok 111 - log --pretty with invalid padding format
expecting success of 4205.112 'log --pretty with magical wrapping directives':
commit_id=$(git commit-tree HEAD^{tree} -m "describe me") &&
git tag describe-me $commit_id &&
printf "\n(tag:\ndescribe-me)%%+w(2)" >expect &&
git log -1 --pretty="format:%w(1)%+d%+w(2)" $commit_id >actual &&
test_cmp expect actual
ok 112 - log --pretty with magical wrapping directives
checking prerequisite: SIZE_T_IS_64BIT
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SIZE_T_IS_64BIT" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SIZE_T_IS_64BIT" &&
test 8 -eq "$(build_option sizeof-size_t)"
)
prerequisite SIZE_T_IS_64BIT not satisfied
ok 113 # skip log --pretty with overflowing wrapping directive (missing SIZE_T_IS_64BIT)
ok 114 # skip log --pretty with overflowing padding directive (missing SIZE_T_IS_64BIT)
expecting success of 4205.115 'log --pretty with padding and preceding control chars':
printf "\20\20 0" >expect &&
git log -1 --pretty="format:%x10%x10%>|(4)%x30" >actual &&
test_cmp expect actual
ok 115 - log --pretty with padding and preceding control chars
expecting success of 4205.116 'log --pretty truncation with control chars':
test_commit "$(printf "\20\20\20\20xxxx")" file contents commit-with-control-chars &&
printf "\20\20\20\20x.." >expect &&
git log -1 --pretty="format:%<(3,trunc)%s" commit-with-control-chars >actual &&
test_cmp expect actual
[source-b 79aab63] xxxx
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
ok 116 - log --pretty truncation with control chars
checking prerequisite: EXPENSIVE
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-EXPENSIVE" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-EXPENSIVE" &&
test -n "$GIT_TEST_LONG"
)
prerequisite EXPENSIVE not satisfied
ok 117 # skip log --pretty with huge commit message (missing SIZE_T_IS_64BIT,EXPENSIVE of EXPENSIVE,SIZE_T_IS_64BIT)
ok 118 # skip set up huge commit (missing SIZE_T_IS_64BIT,EXPENSIVE of EXPENSIVE,SIZE_T_IS_64BIT)
ok 119 # skip log --pretty with huge commit message (missing SIZE_T_IS_64BIT,EXPENSIVE of EXPENSIVE,SIZE_T_IS_64BIT)
ok 120 # skip log --pretty with huge commit message does not cause allocation failure (missing SIZE_T_IS_64BIT,EXPENSIVE of EXPENSIVE,SIZE_T_IS_64BIT)
checking known breakage of 4205.121 'wide and decomposed characters column counting':
# from t/lib-unicode-nfc-nfd.sh hex values converted to octal
utf8_nfc=$(printf "\303\251") && # e acute combined.
utf8_nfd=$(printf "\145\314\201") && # e with a combining acute (i.e. decomposed)
utf8_emoji=$(printf "\360\237\221\250") &&
# replacement character when requesting a wide char fits in a single display colum.
# "half wide" alternative could be a plain ASCII dot `.`
utf8_vert_ell=$(printf "\342\213\256") &&
# use ${xxx} here!
nfc10="${utf8_nfc}${utf8_nfc}${utf8_nfc}${utf8_nfc}${utf8_nfc}${utf8_nfc}${utf8_nfc}${utf8_nfc}${utf8_nfc}${utf8_nfc}" &&
nfd10="${utf8_nfd}${utf8_nfd}${utf8_nfd}${utf8_nfd}${utf8_nfd}${utf8_nfd}${utf8_nfd}${utf8_nfd}${utf8_nfd}${utf8_nfd}" &&
emoji5="${utf8_emoji}${utf8_emoji}${utf8_emoji}${utf8_emoji}${utf8_emoji}" &&
# emoji5 uses 10 display columns
test_commit "abcdefghij" &&
test_commit --no-tag "${nfc10}" &&
test_commit --no-tag "${nfd10}" &&
test_commit --no-tag "${emoji5}" &&
printf "${utf8_emoji}..${utf8_emoji}${utf8_vert_ell}\n${utf8_nfd}..${utf8_nfd}${utf8_nfd}\n${utf8_nfc}..${utf8_nfc}${utf8_nfc}\na..ij\n" >expected &&
git log --format="%<(5,mtrunc)%s" -4 >actual &&
test_cmp expected actual
[source-b a5d16a0] abcdefghij
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 abcdefghij.t
[source-b ac7acd1] éééééééééé
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 "\303\251\303\251\303\251\303\251\303\251\303\251\303\251\303\251\303\251\303\251.t"
[source-b a929b73] éééééééééé
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 "e\314\201e\314\201e\314\201e\314\201e\314\201e\314\201e\314\201e\314\201e\314\201e\314\201.t"
[source-b 524219f] 👨👨👨👨👨
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 "\360\237\221\250\360\237\221\250\360\237\221\250\360\237\221\250\360\237\221\250.t"
--- expected 2023-10-09 02:19:58.457109585 +0000
+++ actual 2023-10-09 02:19:58.461109581 +0000
@@ -1,4 +1,4 @@
-👨..👨⋮
-é..éé
+👨..👨
+é..́́́́́́́éé
é..éé
a..ij
not ok 121 - wide and decomposed characters column counting # TODO known breakage
# still have 2 known breakage(s)
# passed all remaining 119 test(s)
1..121
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4210-log-i18n.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4210-log-i18n/.git/
# lib-gettext: No is_IS UTF-8 locale available
# lib-gettext: No is_IS ISO-8859-1 locale available
expecting success of 4210.1 'create commits in different encodings':
test_tick &&
cat >msg <<-EOF &&
utf8
t${utf8_e}st
EOF
git add msg &&
git -c i18n.commitencoding=utf8 commit -F msg &&
cat >msg <<-EOF &&
latin1
t${latin1_e}st
EOF
git add msg &&
git -c i18n.commitencoding=ISO-8859-1 commit -F msg
[master (root-commit) cbf2796] utf8
Author: A U Thor <author@example.com>
1 file changed, 3 insertions(+)
create mode 100644 msg
[master b077cf9] latin1
Author: A U Thor <author@example.com>
1 file changed, 2 insertions(+), 2 deletions(-)
ok 1 - create commits in different encodings
expecting success of 4210.2 'log --grep searches in log output encoding (utf8)':
cat >expect <<-\EOF &&
latin1
utf8
EOF
git log --encoding=utf8 --format=%s --grep=$utf8_e >actual &&
test_cmp expect actual
ok 2 - log --grep searches in log output encoding (utf8)
expecting success of 4210.3 'log --grep searches in log output encoding (latin1)':
cat >expect <<-\EOF &&
latin1
utf8
EOF
git log --encoding=ISO-8859-1 --format=%s --grep=$latin1_e >actual &&
test_cmp expect actual
ok 3 - log --grep searches in log output encoding (latin1)
expecting success of 4210.4 'log --grep does not find non-reencoded values (utf8)':
git log --encoding=utf8 --format=%s --grep=$latin1_e >actual &&
test_must_be_empty actual
ok 4 - log --grep does not find non-reencoded values (utf8)
expecting success of 4210.5 'log --grep does not find non-reencoded values (latin1)':
git log --encoding=ISO-8859-1 --format=%s --grep=$utf8_e >actual &&
test_must_be_empty actual
ok 5 - log --grep does not find non-reencoded values (latin1)
expecting success of 4210.6 'config grep.patternType=fixed':
git config grep.patternType fixed
ok 6 - config grep.patternType=fixed
ok 7 # skip log --grep does not find non-reencoded values (latin1 + locale) (missing GETTEXT_LOCALE of GETTEXT_LOCALE,)
ok 8 # skip log --grep searches in log output encoding (latin1 + locale) (missing GETTEXT_LOCALE of !MINGW,GETTEXT_LOCALE,)
ok 9 # skip log --grep does not die on invalid UTF-8 value (latin1 + locale + invalid needle) (missing GETTEXT_LOCALE of GETTEXT_LOCALE,)
expecting success of 4210.10 'config grep.patternType=basic':
git config grep.patternType basic
ok 10 - config grep.patternType=basic
ok 11 # skip log --grep does not find non-reencoded values (latin1 + locale) (missing GETTEXT_LOCALE of GETTEXT_LOCALE,)
ok 12 # skip log --grep searches in log output encoding (latin1 + locale) (missing GETTEXT_LOCALE of !MINGW,GETTEXT_LOCALE,)
ok 13 # skip log --grep does not die on invalid UTF-8 value (latin1 + locale + invalid needle) (missing GETTEXT_LOCALE of GETTEXT_LOCALE,)
expecting success of 4210.14 'config grep.patternType=extended':
git config grep.patternType extended
ok 14 - config grep.patternType=extended
ok 15 # skip log --grep does not find non-reencoded values (latin1 + locale) (missing GETTEXT_LOCALE of GETTEXT_LOCALE,)
ok 16 # skip log --grep searches in log output encoding (latin1 + locale) (missing GETTEXT_LOCALE of !MINGW,GETTEXT_LOCALE,)
ok 17 # skip log --grep does not die on invalid UTF-8 value (latin1 + locale + invalid needle) (missing GETTEXT_LOCALE of GETTEXT_LOCALE,)
expecting success of 4210.18 'config grep.patternType=perl':
git config grep.patternType perl
ok 18 - config grep.patternType=perl
ok 19 # skip log --grep does not find non-reencoded values (latin1 + locale) (missing GETTEXT_LOCALE of GETTEXT_LOCALE,PCRE)
ok 20 # skip log --grep searches in log output encoding (latin1 + locale) (missing GETTEXT_LOCALE of !MINGW,GETTEXT_LOCALE,PCRE)
ok 21 # skip log --grep does not die on invalid UTF-8 value (latin1 + locale + invalid needle) (missing GETTEXT_LOCALE of GETTEXT_LOCALE,PCRE)
# passed all 21 test(s)
1..21
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4212-log-corrupt.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4212-log-corrupt/.git/
expecting success of 4212.1 'setup':
test_commit foo &&
git cat-file commit HEAD >ok.commit &&
sed "s/>/>-<>/" <ok.commit >broken_email.commit &&
git hash-object --literally -w -t commit broken_email.commit >broken_email.hash &&
git update-ref refs/heads/broken_email $(cat broken_email.hash)
[master (root-commit) ddd63c9] foo
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo.t
ok 1 - setup
expecting success of 4212.2 'fsck notices broken commit':
test_must_fail git fsck 2>actual &&
test_i18ngrep invalid.author actual
error in commit 95d34e8ea91fa7096fda0f149aaf014999b43f25: missingSpaceBeforeDate: invalid author/committer line - missing space before date
ok 2 - fsck notices broken commit
expecting success of 4212.3 'git log with broken author email':
{
echo commit $(cat broken_email.hash) &&
echo "Author: A U Thor <author@example.com>" &&
echo "Date: Thu Apr 7 15:13:13 2005 -0700" &&
echo &&
echo " foo"
} >expect.out &&
git log broken_email >actual.out 2>actual.err &&
test_cmp expect.out actual.out &&
test_must_be_empty actual.err
ok 3 - git log with broken author email
expecting success of 4212.4 'git log --format with broken author email':
echo "A U Thor+author@example.com+Thu Apr 7 15:13:13 2005 -0700" >expect.out &&
git log --format="%an+%ae+%ad" broken_email >actual.out 2>actual.err &&
test_cmp expect.out actual.out &&
test_must_be_empty actual.err
ok 4 - git log --format with broken author email
expecting success of 4212.5 '--until handles broken email':
git rev-list --until=1980-01-01 broken_email >actual &&
test_must_be_empty actual
ok 5 - --until handles broken email
expecting success of 4212.6 'unparsable dates produce sentinel value':
commit=$(munge_author_date HEAD totally_bogus) &&
echo "Date: Thu Jan 1 00:00:00 1970 +0000" >expect &&
git log -1 $commit >actual.full &&
grep Date <actual.full >actual &&
test_cmp expect actual
ok 6 - unparsable dates produce sentinel value
expecting success of 4212.7 'unparsable dates produce sentinel value (%ad)':
commit=$(munge_author_date HEAD totally_bogus) &&
echo >expect &&
git log -1 --format=%ad $commit >actual &&
test_cmp expect actual
ok 7 - unparsable dates produce sentinel value (%ad)
expecting success of 4212.8 'date parser recognizes integer overflow':
commit=$(munge_author_date HEAD 18446744073709551617) &&
echo "Thu Jan 1 00:00:00 1970 +0000" >expect &&
git log -1 --format=%ad $commit >actual &&
test_cmp expect actual
ok 8 - date parser recognizes integer overflow
expecting success of 4212.9 'date parser recognizes time_t overflow':
commit=$(munge_author_date HEAD 18446744073709551614) &&
echo "Thu Jan 1 00:00:00 1970 +0000" >expect &&
git log -1 --format=%ad $commit >actual &&
test_cmp expect actual
ok 9 - date parser recognizes time_t overflow
expecting success of 4212.10 'absurdly far-in-future date':
commit=$(munge_author_date HEAD 999999999999999999) &&
git log -1 --format=%ad $commit
Thu Jan 1 00:00:00 1970 +0000
ok 10 - absurdly far-in-future date
expecting success of 4212.11 'create commits with whitespace committer dates':
# It is important that this subject line is numeric, since we want to
# be sure we are not confused by skipping whitespace and accidentally
# parsing the subject as a timestamp.
#
# Do not use munge_author_date here. Besides not hitting the committer
# line, it leaves the timezone intact, and we want nothing but
# whitespace.
#
# We will make two munged commits here. The first, ws_commit, will
# be purely spaces. The second contains a vertical tab, which is
# considered a space by strtoumax(), but not by our isspace().
test_commit 1234567890 &&
git cat-file commit HEAD >commit.orig &&
sed "s/>.*/> /" <commit.orig >commit.munge &&
ws_commit=$(git hash-object --literally -w -t commit commit.munge) &&
sed "s/>.*/> $(printf "\013")/" <commit.orig >commit.munge &&
vt_commit=$(git hash-object --literally -w -t commit commit.munge)
[master f47e17d] 1234567890
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 1234567890.t
ok 11 - create commits with whitespace committer dates
expecting success of 4212.12 '--until treats whitespace date as sentinel':
echo $ws_commit >expect &&
git rev-list --until=1980-01-01 $ws_commit >actual &&
test_cmp expect actual &&
echo $vt_commit >expect &&
git rev-list --until=1980-01-01 $vt_commit >actual &&
test_cmp expect actual
ok 12 - --until treats whitespace date as sentinel
expecting success of 4212.13 'pretty-printer handles whitespace date':
# as with the %ad test above, we will show these as the empty string,
# not the 1970 epoch date. This is intentional; see 7d9a281941 (t4212:
# test bogus timestamps with git-log, 2014-02-24) for more discussion.
echo : >expect &&
git log -1 --format="%at:%ct" $ws_commit >actual &&
test_cmp expect actual &&
git log -1 --format="%at:%ct" $vt_commit >actual &&
test_cmp expect actual
ok 13 - pretty-printer handles whitespace date
# passed all 13 test(s)
1..13
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4202-log.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4202-log/.git/
expecting success of 4202.1 'setup':
echo one >one &&
git add one &&
test_tick &&
git commit -m initial &&
echo ichi >one &&
git add one &&
test_tick &&
git commit -m second &&
git mv one ichi &&
test_tick &&
git commit -m third &&
cp ichi ein &&
git add ein &&
test_tick &&
git commit -m fourth &&
mkdir a &&
echo ni >a/two &&
git add a/two &&
test_tick &&
git commit -m fifth &&
git rm a/two &&
test_tick &&
git commit -m sixth
[main (root-commit) 3a2fdcb] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 one
[main f7dab8e] second
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[main 2fbe8c0] third
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
rename one => ichi (100%)
[main 5d31159] fourth
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 ein
[main 394ef78] fifth
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 a/two
rm 'a/two'
[main 804a787] sixth
Author: A U Thor <author@example.com>
1 file changed, 1 deletion(-)
delete mode 100644 a/two
ok 1 - setup
expecting success of 4202.2 'pretty':
git log --pretty="format:%s" > actual &&
test_cmp expect actual
ok 2 - pretty
expecting success of 4202.3 'pretty (tformat)':
git log --pretty="tformat:%s" > actual &&
test_cmp expect actual
ok 3 - pretty (tformat)
expecting success of 4202.4 'pretty (shortcut)':
git log --pretty="%s" > actual &&
test_cmp expect actual
ok 4 - pretty (shortcut)
expecting success of 4202.5 'format':
git log --format="%s" > actual &&
test_cmp expect actual
ok 5 - format
expecting success of 4202.6 'format %w(11,1,2)':
git log -2 --format="%w(11,1,2)This is the %s commit." > actual &&
test_cmp expect actual
ok 6 - format %w(11,1,2)
expecting success of 4202.7 'format %w(,1,2)':
git log -2 --format="%w(,1,2)This is%nthe %s%ncommit." > actual &&
test_cmp expect actual
ok 7 - format %w(,1,2)
expecting success of 4202.8 'oneline':
git log --oneline > actual &&
test_cmp expect actual
ok 8 - oneline
expecting success of 4202.9 'diff-filter=A':
git log --no-renames --pretty="format:%s" --diff-filter=A HEAD > actual &&
git log --no-renames --pretty="format:%s" --diff-filter A HEAD > actual-separate &&
printf "fifth\nfourth\nthird\ninitial" > expect &&
test_cmp expect actual &&
test_cmp expect actual-separate
ok 9 - diff-filter=A
expecting success of 4202.10 'diff-filter=M':
git log --pretty="format:%s" --diff-filter=M HEAD >actual &&
printf "second" >expect &&
test_cmp expect actual
ok 10 - diff-filter=M
expecting success of 4202.11 'diff-filter=D':
git log --no-renames --pretty="format:%s" --diff-filter=D HEAD >actual &&
printf "sixth\nthird" >expect &&
test_cmp expect actual
ok 11 - diff-filter=D
expecting success of 4202.12 'diff-filter=R':
git log -M --pretty="format:%s" --diff-filter=R HEAD >actual &&
printf "third" >expect &&
test_cmp expect actual
ok 12 - diff-filter=R
expecting success of 4202.13 'multiple --diff-filter bits':
git log -M --pretty="format:%s" --diff-filter=R HEAD >expect &&
git log -M --pretty="format:%s" --diff-filter=Ra HEAD >actual &&
test_cmp expect actual &&
git log -M --pretty="format:%s" --diff-filter=aR HEAD >actual &&
test_cmp expect actual &&
git log -M --pretty="format:%s" \
--diff-filter=a --diff-filter=R HEAD >actual &&
test_cmp expect actual
ok 13 - multiple --diff-filter bits
expecting success of 4202.14 'diff-filter=C':
git log -C -C --pretty="format:%s" --diff-filter=C HEAD >actual &&
printf "fourth" >expect &&
test_cmp expect actual
ok 14 - diff-filter=C
expecting success of 4202.15 'git log --follow':
git log --follow --pretty="format:%s" ichi >actual &&
printf "third\nsecond\ninitial" >expect &&
test_cmp expect actual
ok 15 - git log --follow
expecting success of 4202.16 'git config log.follow works like --follow':
test_config log.follow true &&
git log --pretty="format:%s" ichi >actual &&
printf "third\nsecond\ninitial" >expect &&
test_cmp expect actual
ok 16 - git config log.follow works like --follow
expecting success of 4202.17 'git config log.follow does not die with multiple paths':
test_config log.follow true &&
git log --pretty="format:%s" ichi ein
fourth
thirdok 17 - git config log.follow does not die with multiple paths
expecting success of 4202.18 'git config log.follow does not die with no paths':
test_config log.follow true &&
git log --
commit 804a7879c6cac637c9d34d1608e3e54867d90b7e
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:18:13 2005 -0700
sixth
commit 394ef780a000df496e0a8fdd648963c3f9d96f56
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:17:13 2005 -0700
fifth
commit 5d311594784eefe7b43496741766fe058f1c91a1
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
fourth
commit 2fbe8c09c8e84c2346ba2ac744cb09a926773855
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
third
commit f7dab8eda217fc1e06315e7c91b6bd7c2a56363a
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
second
commit 3a2fdcbc365f1f169c2d433dbb277d88b412d8c9
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:13:13 2005 -0700
initial
ok 18 - git config log.follow does not die with no paths
expecting success of 4202.19 'git log --follow rejects unsupported pathspec magic':
test_must_fail git log --follow ":(top,glob,icase)ichi" 2>stderr &&
# check full error message; we want to be sure we mention both
# of the rejected types (glob,icase), but not the allowed one (top)
echo "fatal: pathspec magic not supported by --follow: ${SQ}glob${SQ}, ${SQ}icase${SQ}" >expect &&
test_cmp expect stderr
ok 19 - git log --follow rejects unsupported pathspec magic
expecting success of 4202.20 'log.follow disabled with unsupported pathspec magic':
test_config log.follow true &&
git log --format=%s ":(glob,icase)ichi" >actual &&
echo third >expect &&
test_cmp expect actual
ok 20 - log.follow disabled with unsupported pathspec magic
expecting success of 4202.21 'git config log.follow is overridden by --no-follow':
test_config log.follow true &&
git log --no-follow --pretty="format:%s" ichi >actual &&
printf "third" >expect &&
test_cmp expect actual
ok 21 - git config log.follow is overridden by --no-follow
expecting success of 4202.22 'git log --no-walk <commits> sorts by commit time':
git log --no-walk --oneline $last_three > actual &&
test_cmp expect actual
ok 22 - git log --no-walk <commits> sorts by commit time
expecting success of 4202.23 'git log --no-walk=sorted <commits> sorts by commit time':
git log --no-walk=sorted --oneline $last_three > actual &&
test_cmp expect actual
ok 23 - git log --no-walk=sorted <commits> sorts by commit time
expecting success of 4202.24 'git log --line-prefix="=== " --no-walk <commits> sorts by commit time':
git log --line-prefix="=== " --no-walk --oneline $last_three > actual &&
test_cmp expect actual
ok 24 - git log --line-prefix="=== " --no-walk <commits> sorts by commit time
expecting success of 4202.25 'git log --no-walk=unsorted <commits> leaves list of commits as given':
git log --no-walk=unsorted --oneline $last_three > actual &&
test_cmp expect actual
ok 25 - git log --no-walk=unsorted <commits> leaves list of commits as given
expecting success of 4202.26 'git show <commits> leaves list of commits as given':
git show --oneline -s $last_three > actual &&
test_cmp expect actual
ok 26 - git show <commits> leaves list of commits as given
expecting success of 4202.27 'setup case sensitivity tests':
echo case >one &&
test_tick &&
git add one &&
git commit -a -m Second
[main e9e4904] Second
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 one
ok 27 - setup case sensitivity tests
expecting success of 4202.28 'log --grep':
echo second >expect &&
git log -1 --pretty="tformat:%s" --grep=sec >actual &&
test_cmp expect actual
ok 28 - log --grep
expecting success of 4202.29 'log --invert-grep without --grep is a NOOP':
git log >expect &&
git log $noop_opt >actual &&
test_cmp expect actual
ok 29 - log --invert-grep without --grep is a NOOP
expecting success of 4202.30 'log --all-match without --grep is a NOOP':
git log >expect &&
git log $noop_opt >actual &&
test_cmp expect actual
ok 30 - log --all-match without --grep is a NOOP
expecting success of 4202.31 'log --invert-grep --grep':
# Fixed
git -c grep.patternType=fixed log --pretty="tformat:%s" --invert-grep --grep=th --grep=Sec >actual &&
test_cmp expect actual &&
# POSIX basic
git -c grep.patternType=basic log --pretty="tformat:%s" --invert-grep --grep=t[h] --grep=S[e]c >actual &&
test_cmp expect actual &&
# POSIX extended
git -c grep.patternType=extended log --pretty="tformat:%s" --invert-grep --grep=t[h] --grep=S[e]c >actual &&
test_cmp expect actual &&
# PCRE
if test_have_prereq PCRE
then
git -c grep.patternType=perl log --pretty="tformat:%s" --invert-grep --grep=t[h] --grep=S[e]c >actual &&
test_cmp expect actual
fi
ok 31 - log --invert-grep --grep
expecting success of 4202.32 'log --invert-grep --grep -i':
echo initial >expect &&
# Fixed
git -c grep.patternType=fixed log --pretty="tformat:%s" --invert-grep -i --grep=th --grep=Sec >actual &&
test_cmp expect actual &&
# POSIX basic
git -c grep.patternType=basic log --pretty="tformat:%s" --invert-grep -i --grep=t[h] --grep=S[e]c >actual &&
test_cmp expect actual &&
# POSIX extended
git -c grep.patternType=extended log --pretty="tformat:%s" --invert-grep -i --grep=t[h] --grep=S[e]c >actual &&
test_cmp expect actual &&
# PCRE
if test_have_prereq PCRE
then
git -c grep.patternType=perl log --pretty="tformat:%s" --invert-grep -i --grep=t[h] --grep=S[e]c >actual &&
test_cmp expect actual
fi
ok 32 - log --invert-grep --grep -i
expecting success of 4202.33 'log --grep option parsing':
echo second >expect &&
git log -1 --pretty="tformat:%s" --grep sec >actual &&
test_cmp expect actual &&
test_must_fail git log -1 --pretty="tformat:%s" --grep
fatal: Option '--grep' requires a value
ok 33 - log --grep option parsing
expecting success of 4202.34 'log -i --grep':
echo Second >expect &&
git log -1 --pretty="tformat:%s" -i --grep=sec >actual &&
test_cmp expect actual
ok 34 - log -i --grep
expecting success of 4202.35 'log --grep -i':
echo Second >expect &&
# Fixed
git log -1 --pretty="tformat:%s" --grep=sec -i >actual &&
test_cmp expect actual &&
# POSIX basic
git -c grep.patternType=basic log -1 --pretty="tformat:%s" --grep=s[e]c -i >actual &&
test_cmp expect actual &&
# POSIX extended
git -c grep.patternType=extended log -1 --pretty="tformat:%s" --grep=s[e]c -i >actual &&
test_cmp expect actual &&
# PCRE
if test_have_prereq PCRE
then
git -c grep.patternType=perl log -1 --pretty="tformat:%s" --grep=s[e]c -i >actual &&
test_cmp expect actual
fi
ok 35 - log --grep -i
expecting success of 4202.36 'log -F -E --grep=<ere> uses ere':
echo second >expect &&
# basic would need \(s\) to do the same
git log -1 --pretty="tformat:%s" -F -E --grep="(s).c.nd" >actual &&
test_cmp expect actual
ok 36 - log -F -E --grep=<ere> uses ere
expecting success of 4202.37 'log -F -E --perl-regexp --grep=<pcre> uses PCRE':
test_when_finished "rm -rf num_commits" &&
git init num_commits &&
(
cd num_commits &&
test_commit 1d &&
test_commit 2e
) &&
# In PCRE \d in [\d] is like saying "0-9", and matches the 2
# in 2e...
echo 2e >expect &&
git -C num_commits log -1 --pretty="tformat:%s" -F -E --perl-regexp --grep="[\d]" >actual &&
test_cmp expect actual &&
# ...in POSIX basic and extended it is the same as [d],
# i.e. "d", which matches 1d, but does not match 2e.
echo 1d >expect &&
git -C num_commits log -1 --pretty="tformat:%s" -F -E --grep="[\d]" >actual &&
test_cmp expect actual
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4202-log/num_commits/.git/
[main (root-commit) 5550d7b] 1d
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 1d.t
[main efc81b0] 2e
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 2e.t
ok 37 - log -F -E --perl-regexp --grep=<pcre> uses PCRE
expecting success of 4202.38 'log with grep.patternType configuration':
git -c grep.patterntype=fixed \
log -1 --pretty=tformat:%s --grep=s.c.nd >actual &&
test_must_be_empty actual
ok 38 - log with grep.patternType configuration
expecting success of 4202.39 'log with grep.patternType configuration and command line':
echo second >expect &&
git -c grep.patterntype=fixed \
log -1 --pretty=tformat:%s --basic-regexp --grep=s.c.nd >actual &&
test_cmp expect actual
ok 39 - log with grep.patternType configuration and command line
checking prerequisite: FAIL_PREREQS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-FAIL_PREREQS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-FAIL_PREREQS" &&
test_bool_env GIT_TEST_FAIL_PREREQS false
)
prerequisite FAIL_PREREQS not satisfied
expecting success of 4202.40 'log with various grep.patternType configurations & command-lines':
git init pattern-type &&
(
cd pattern-type &&
test_commit 1 file A &&
# The tagname is overridden here because creating a
# tag called "(1|2)" as test_commit would otherwise
# implicitly do would fail on e.g. MINGW.
test_commit "(1|2)" file B 2 &&
echo "(1|2)" >expect.fixed &&
cp expect.fixed expect.basic &&
cp expect.fixed expect.extended &&
cp expect.fixed expect.perl &&
# A strcmp-like match with fixed.
git -c grep.patternType=fixed log --pretty=tformat:%s \
--grep="(1|2)" >actual.fixed &&
# POSIX basic matches (, | and ) literally.
git -c grep.patternType=basic log --pretty=tformat:%s \
--grep="(.|.)" >actual.basic &&
# POSIX extended needs to have | escaped to match it
# literally, whereas under basic this is the same as
# (|2), i.e. it would also match "1". This test checks
# for extended by asserting that it is not matching
# what basic would match.
git -c grep.patternType=extended log --pretty=tformat:%s \
--grep="\|2" >actual.extended &&
if test_have_prereq PCRE
then
# Only PCRE would match [\d]\| with only
# "(1|2)" due to [\d]. POSIX basic would match
# both it and "1" since similarly to the
# extended match above it is the same as
# \([\d]\|\). POSIX extended would
# match neither.
git -c grep.patternType=perl log --pretty=tformat:%s \
--grep="[\d]\|" >actual.perl &&
test_cmp expect.perl actual.perl
fi &&
test_cmp expect.fixed actual.fixed &&
test_cmp expect.basic actual.basic &&
test_cmp expect.extended actual.extended &&
git log --pretty=tformat:%s -F \
--grep="(1|2)" >actual.fixed.short-arg &&
git log --pretty=tformat:%s -E \
--grep="\|2" >actual.extended.short-arg &&
if test_have_prereq PCRE
then
git log --pretty=tformat:%s -P \
--grep="[\d]\|" >actual.perl.short-arg
else
test_must_fail git log -P \
--grep="[\d]\|"
fi &&
test_cmp expect.fixed actual.fixed.short-arg &&
test_cmp expect.extended actual.extended.short-arg &&
if test_have_prereq PCRE
then
test_cmp expect.perl actual.perl.short-arg
fi &&
git log --pretty=tformat:%s --fixed-strings \
--grep="(1|2)" >actual.fixed.long-arg &&
git log --pretty=tformat:%s --basic-regexp \
--grep="(.|.)" >actual.basic.long-arg &&
git log --pretty=tformat:%s --extended-regexp \
--grep="\|2" >actual.extended.long-arg &&
if test_have_prereq PCRE
then
git log --pretty=tformat:%s --perl-regexp \
--grep="[\d]\|" >actual.perl.long-arg &&
test_cmp expect.perl actual.perl.long-arg
else
test_must_fail git log --perl-regexp \
--grep="[\d]\|"
fi &&
test_cmp expect.fixed actual.fixed.long-arg &&
test_cmp expect.basic actual.basic.long-arg &&
test_cmp expect.extended actual.extended.long-arg
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4202-log/pattern-type/.git/
[main (root-commit) d509854] 1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
[main 0b7d5f0] (1|2)
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 40 - log with various grep.patternType configurations & command-lines
expecting success of 4202.41 'show: understands grep.patternType, like 'log'':
git init "pattern-type-$cmd" &&
(
cd "pattern-type-$cmd" &&
test_commit 1 file A &&
test_commit "(1|2)" file B 2 &&
git -c grep.patternType=fixed $cmd --grep="..." $myarg >actual &&
test_must_be_empty actual &&
git -c grep.patternType=basic $cmd --grep="..." $myarg >actual &&
test_file_not_empty actual
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4202-log/pattern-type-show/.git/
[main (root-commit) d509854] 1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
[main 0b7d5f0] (1|2)
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 41 - show: understands grep.patternType, like 'log'
expecting success of 4202.42 'whatchanged: understands grep.patternType, like 'log'':
git init "pattern-type-$cmd" &&
(
cd "pattern-type-$cmd" &&
test_commit 1 file A &&
test_commit "(1|2)" file B 2 &&
git -c grep.patternType=fixed $cmd --grep="..." $myarg >actual &&
test_must_be_empty actual &&
git -c grep.patternType=basic $cmd --grep="..." $myarg >actual &&
test_file_not_empty actual
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4202-log/pattern-type-whatchanged/.git/
[main (root-commit) d509854] 1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
[main 0b7d5f0] (1|2)
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 42 - whatchanged: understands grep.patternType, like 'log'
expecting success of 4202.43 'reflog: understands grep.patternType, like 'log'':
git init "pattern-type-$cmd" &&
(
cd "pattern-type-$cmd" &&
test_commit 1 file A &&
test_commit "(1|2)" file B 2 &&
git -c grep.patternType=fixed $cmd --grep="..." $myarg >actual &&
test_must_be_empty actual &&
git -c grep.patternType=basic $cmd --grep="..." $myarg >actual &&
test_file_not_empty actual
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4202-log/pattern-type-reflog/.git/
[main (root-commit) d509854] 1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
[main 0b7d5f0] (1|2)
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 43 - reflog: understands grep.patternType, like 'log'
expecting success of 4202.44 'format-patch: understands grep.patternType, like 'log'':
git init "pattern-type-$cmd" &&
(
cd "pattern-type-$cmd" &&
test_commit 1 file A &&
test_commit "(1|2)" file B 2 &&
git -c grep.patternType=fixed $cmd --grep="..." $myarg >actual &&
test_must_be_empty actual &&
git -c grep.patternType=basic $cmd --grep="..." $myarg >actual &&
test_file_not_empty actual
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4202-log/pattern-type-format-patch/.git/
[main (root-commit) d509854] 1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
[main 0b7d5f0] (1|2)
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 44 - format-patch: understands grep.patternType, like 'log'
expecting success of 4202.45 'log --author':
cat >expect <<-\EOF &&
Author: <BOLD;RED>A U<RESET> Thor <author@example.com>
EOF
git log -1 --color=always --author="A U" >log &&
grep Author log >actual.raw &&
test_decode_color <actual.raw >actual &&
test_cmp expect actual
ok 45 - log --author
expecting success of 4202.46 'log --committer':
cat >expect <<-\EOF &&
Commit: C O Mitter <committer@<BOLD;RED>example<RESET>.com>
EOF
git log -1 --color=always --pretty=fuller --committer="example" >log &&
grep "Commit:" log >actual.raw &&
test_decode_color <actual.raw >actual &&
test_cmp expect actual
ok 46 - log --committer
expecting success of 4202.47 'log -i --grep with color':
cat >expect <<-\EOF &&
<BOLD;RED>Sec<RESET>ond
<BOLD;RED>sec<RESET>ond
EOF
git log --color=always -i --grep=^sec >log &&
grep -i sec log >actual.raw &&
test_decode_color <actual.raw >actual &&
test_cmp expect actual
ok 47 - log -i --grep with color
expecting success of 4202.48 '-c color.grep.selected log --grep':
cat >expect <<-\EOF &&
<GREEN>th<RESET><BOLD;RED>ir<RESET><GREEN>d<RESET>
EOF
git -c color.grep.selected="green" log --color=always --grep=ir >log &&
grep ir log >actual.raw &&
test_decode_color <actual.raw >actual &&
test_cmp expect actual
ok 48 - -c color.grep.selected log --grep
expecting success of 4202.49 '-c color.grep.matchSelected log --grep':
cat >expect <<-\EOF &&
<BLUE>i<RESET>n<BLUE>i<RESET>t<BLUE>i<RESET>al
EOF
git -c color.grep.matchSelected="blue" log --color=always --grep=i >log &&
grep al log >actual.raw &&
test_decode_color <actual.raw >actual &&
test_cmp expect actual
ok 49 - -c color.grep.matchSelected log --grep
expecting success of 4202.50 'simple log --graph':
test_cmp_graph
ok 50 - simple log --graph
expecting success of 4202.51 'simple log --graph --line-prefix="123 "':
test_cmp_graph --line-prefix="123 "
ok 51 - simple log --graph --line-prefix="123 "
expecting success of 4202.52 'set up merge history':
git checkout -b side HEAD~4 &&
test_commit side-1 1 1 &&
test_commit side-2 2 2 &&
git checkout main &&
git merge side
Switched to a new branch 'side'
[side 4447a16] side-1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 1
[side 1666e54] side-2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 2
Switched to branch 'main'
Merge made by the 'ort' strategy.
1 | 1 +
2 | 1 +
2 files changed, 2 insertions(+)
create mode 100644 1
create mode 100644 2
ok 52 - set up merge history
expecting success of 4202.53 'log --graph with merge':
test_cmp_graph --date-order
ok 53 - log --graph with merge
expecting success of 4202.54 'log --graph --line-prefix="| | | " with merge':
test_cmp_graph --line-prefix="| | | " --date-order
ok 54 - log --graph --line-prefix="| | | " with merge
expecting success of 4202.55 'log --graph with merge with log.graphColors':
test_config log.graphColors " blue,invalid-color, cyan, red , " &&
lib_test_cmp_colored_graph --date-order --format=%s
error: invalid color value: invalid-color
warning: ignored invalid color 'invalid-color' in log.graphColors
ok 55 - log --graph with merge with log.graphColors
expecting success of 4202.56 'log --raw --graph -m with merge':
git log --raw --graph --oneline -m main | head -n 500 >actual &&
grep "initial" actual
* 3a2fdcb initial
ok 56 - log --raw --graph -m with merge
expecting success of 4202.57 'diff-tree --graph':
git diff-tree --graph main^ | head -n 500 >actual &&
grep "one" actual
:000000 100644 0000000000000000000000000000000000000000 9a333834d7f76d26bf24f07f0d8ab00010e78b91 A one
ok 57 - diff-tree --graph
expecting success of 4202.58 'log --graph with full output':
git log --graph --date-order --pretty=short |
git name-rev --name-only --annotate-stdin |
sed "s/Merge:.*/Merge: A B/;s/ *\$//" >actual &&
test_cmp expect actual
ok 58 - log --graph with full output
expecting success of 4202.59 'set up more tangled history':
git checkout -b tangle HEAD~6 &&
test_commit tangle-a tangle-a a &&
git merge main~3 &&
git update-ref refs/prefetch/merge HEAD &&
git merge side~1 &&
git update-ref refs/rewritten/merge HEAD &&
git checkout main &&
git merge tangle &&
git update-ref refs/hidden/tangle HEAD &&
git checkout -b reach &&
test_commit reach &&
git checkout main &&
git checkout -b octopus-a &&
test_commit octopus-a &&
git checkout main &&
git checkout -b octopus-b &&
test_commit octopus-b &&
git checkout main &&
test_commit seventh &&
git merge octopus-a octopus-b &&
git merge reach
Switched to a new branch 'tangle'
[tangle f6c510e] tangle-a
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 tangle-a
Merge made by the 'ort' strategy.
a/two | 1 +
one => ein | 0
ichi | 1 +
3 files changed, 2 insertions(+)
create mode 100644 a/two
rename one => ein (100%)
create mode 100644 ichi
Merge made by the 'ort' strategy.
1 | 1 +
1 file changed, 1 insertion(+)
create mode 100644 1
Switched to branch 'main'
Merge made by the 'ort' strategy.
tangle-a | 1 +
1 file changed, 1 insertion(+)
create mode 100644 tangle-a
Switched to a new branch 'reach'
[reach 0ac8a60] reach
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 reach.t
Switched to branch 'main'
Switched to a new branch 'octopus-a'
[octopus-a 5ebe3d2] octopus-a
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 octopus-a.t
Switched to branch 'main'
Switched to a new branch 'octopus-b'
[octopus-b 869a174] octopus-b
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 octopus-b.t
Switched to branch 'main'
[main 8d18073] seventh
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 seventh.t
warning: refname 'octopus-a' is ambiguous.
warning: refname 'octopus-b' is ambiguous.
warning: refname 'octopus-a' is ambiguous.
warning: refname 'octopus-b' is ambiguous.
Trying simple merge with octopus-a
Trying simple merge with octopus-b
Merge made by the 'octopus' strategy.
octopus-a.t | 1 +
octopus-b.t | 1 +
2 files changed, 2 insertions(+)
create mode 100644 octopus-a.t
create mode 100644 octopus-b.t
warning: refname 'reach' is ambiguous.
warning: refname 'reach' is ambiguous.
Merge made by the 'ort' strategy.
reach.t | 1 +
1 file changed, 1 insertion(+)
create mode 100644 reach.t
ok 59 - set up more tangled history
expecting success of 4202.60 'log --graph with merge':
test_cmp_graph --date-order
ok 60 - log --graph with merge
expecting success of 4202.61 'log.decorate configuration':
git log --oneline --no-decorate >expect.none &&
git log --oneline --decorate >expect.short &&
git log --oneline --decorate=full >expect.full &&
echo "[log] decorate" >>.git/config &&
git log --oneline >actual &&
test_cmp expect.short actual &&
test_config log.decorate true &&
git log --oneline >actual &&
test_cmp expect.short actual &&
git log --oneline --decorate=full >actual &&
test_cmp expect.full actual &&
git log --oneline --decorate=no >actual &&
test_cmp expect.none actual &&
test_config log.decorate no &&
git log --oneline >actual &&
test_cmp expect.none actual &&
git log --oneline --decorate >actual &&
test_cmp expect.short actual &&
git log --oneline --decorate=full >actual &&
test_cmp expect.full actual &&
test_config log.decorate 1 &&
git log --oneline >actual &&
test_cmp expect.short actual &&
git log --oneline --decorate=full >actual &&
test_cmp expect.full actual &&
git log --oneline --decorate=no >actual &&
test_cmp expect.none actual &&
test_config log.decorate short &&
git log --oneline >actual &&
test_cmp expect.short actual &&
git log --oneline --no-decorate >actual &&
test_cmp expect.none actual &&
git log --oneline --decorate=full >actual &&
test_cmp expect.full actual &&
test_config log.decorate full &&
git log --oneline >actual &&
test_cmp expect.full actual &&
git log --oneline --no-decorate >actual &&
test_cmp expect.none actual &&
git log --oneline --decorate >actual &&
test_cmp expect.short actual &&
test_unconfig log.decorate &&
git log --pretty=raw >expect.raw &&
test_config log.decorate full &&
git log --pretty=raw >actual &&
test_cmp expect.raw actual
ok 61 - log.decorate configuration
expecting success of 4202.62 'parse log.excludeDecoration with no value':
cp .git/config .git/config.orig &&
test_when_finished mv .git/config.orig .git/config &&
cat >>.git/config <<-\EOF &&
[log]
excludeDecoration
EOF
cat >expect <<-\EOF &&
error: missing value for 'log.excludeDecoration'
EOF
git log --decorate=short 2>actual &&
test_cmp expect actual
commit c3f451c7ab0048fed4f26d12e9cf1d22be4dff53 (HEAD -> main)
Merge: ca6b33f 0ac8a60
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:26:13 2005 -0700
Merge tag 'reach'
commit ca6b33fa6beec7bde517b1710185617e63f01408
Merge: 8d18073 5ebe3d2 869a174
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:26:13 2005 -0700
Merge tags 'octopus-a' and 'octopus-b'
commit 8d18073766d87aafdaca1d89f277af223d002fcf (tag: seventh)
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:26:13 2005 -0700
seventh
commit 869a1748e7d86db7ddfaee8c446d27aa5ecfd3e0 (tag: octopus-b, octopus-b)
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:25:13 2005 -0700
octopus-b
commit 5ebe3d22735eb1e714932bb32f822cd93c6fcaea (tag: octopus-a, octopus-a)
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:24:13 2005 -0700
octopus-a
commit 0ac8a60723fcd816e8d5737a0066ab0362e03b94 (tag: reach, reach)
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:23:13 2005 -0700
reach
commit 3ddb8186f50749e41e43a1a61051c6b8f4798003
Merge: e8dcb3b 22b9a0f
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:22:13 2005 -0700
Merge branch 'tangle'
commit 22b9a0f446fcf3168e4db6f664174893a3bdd0d6 (tangle)
Merge: ed369a4 4447a16
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:22:13 2005 -0700
Merge branch 'side' (early part) into tangle
commit ed369a4e647f800b0199df4e05fd517dd1d5d622
Merge: f6c510e 394ef78
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:22:13 2005 -0700
Merge branch 'main' (early part) into tangle
commit f6c510e7021d2df08f4dde66a6a57da71de8d18a (tag: tangle-a)
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:22:13 2005 -0700
tangle-a
commit e8dcb3b68978a445f568542e635e8b320fd71704
Merge: e9e4904 1666e54
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:21:13 2005 -0700
Merge branch 'side'
commit 1666e5485f5fcc08598407e59213007dbbf4b940 (tag: side-2, side)
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:21:13 2005 -0700
side-2
commit 4447a165acfb48b2c9c14aaaf0eca1fbb0f937c7 (tag: side-1)
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:20:13 2005 -0700
side-1
commit e9e4904485f3a3a62ed85919a94be796512e3b71
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:19:13 2005 -0700
Second
commit 804a7879c6cac637c9d34d1608e3e54867d90b7e
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:18:13 2005 -0700
sixth
commit 394ef780a000df496e0a8fdd648963c3f9d96f56
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:17:13 2005 -0700
fifth
commit 5d311594784eefe7b43496741766fe058f1c91a1
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:16:13 2005 -0700
fourth
commit 2fbe8c09c8e84c2346ba2ac744cb09a926773855
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:15:13 2005 -0700
third
commit f7dab8eda217fc1e06315e7c91b6bd7c2a56363a
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:14:13 2005 -0700
second
commit 3a2fdcbc365f1f169c2d433dbb277d88b412d8c9
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:13:13 2005 -0700
initial
ok 62 - parse log.excludeDecoration with no value
expecting success of 4202.63 'decorate-refs with glob':
cat >expect.decorate <<-\EOF &&
Merge-tag-reach
Merge-tags-octopus-a-and-octopus-b
seventh
octopus-b (octopus-b)
octopus-a (octopus-a)
reach
EOF
cat >expect.no-decorate <<-\EOF &&
Merge-tag-reach
Merge-tags-octopus-a-and-octopus-b
seventh
octopus-b
octopus-a
reach
EOF
git log -n6 --decorate=short --pretty="tformat:%f%d" \
--decorate-refs="heads/octopus*" >actual &&
test_cmp expect.decorate actual &&
git log -n6 --decorate=short --pretty="tformat:%f%d" \
--decorate-refs-exclude="heads/octopus*" \
--decorate-refs="heads/octopus*" >actual &&
test_cmp expect.no-decorate actual &&
git -c log.excludeDecoration="heads/octopus*" log \
-n6 --decorate=short --pretty="tformat:%f%d" \
--decorate-refs="heads/octopus*" >actual &&
test_cmp expect.decorate actual
ok 63 - decorate-refs with glob
expecting success of 4202.64 'decorate-refs without globs':
cat >expect.decorate <<-\EOF &&
Merge-tag-reach
Merge-tags-octopus-a-and-octopus-b
seventh
octopus-b
octopus-a
reach (tag: reach)
EOF
git log -n6 --decorate=short --pretty="tformat:%f%d" \
--decorate-refs="tags/reach" >actual &&
test_cmp expect.decorate actual
ok 64 - decorate-refs without globs
expecting success of 4202.65 'multiple decorate-refs':
cat >expect.decorate <<-\EOF &&
Merge-tag-reach
Merge-tags-octopus-a-and-octopus-b
seventh
octopus-b (octopus-b)
octopus-a (octopus-a)
reach (tag: reach)
EOF
git log -n6 --decorate=short --pretty="tformat:%f%d" \
--decorate-refs="heads/octopus*" \
--decorate-refs="tags/reach" >actual &&
test_cmp expect.decorate actual
ok 65 - multiple decorate-refs
expecting success of 4202.66 'decorate-refs-exclude with glob':
cat >expect.decorate <<-\EOF &&
Merge-tag-reach (HEAD -> main)
Merge-tags-octopus-a-and-octopus-b
seventh (tag: seventh)
octopus-b (tag: octopus-b)
octopus-a (tag: octopus-a)
reach (tag: reach, reach)
EOF
git log -n6 --decorate=short --pretty="tformat:%f%d" \
--decorate-refs-exclude="heads/octopus*" >actual &&
test_cmp expect.decorate actual &&
git -c log.excludeDecoration="heads/octopus*" log \
-n6 --decorate=short --pretty="tformat:%f%d" >actual &&
test_cmp expect.decorate actual
ok 66 - decorate-refs-exclude with glob
expecting success of 4202.67 'decorate-refs-exclude without globs':
cat >expect.decorate <<-\EOF &&
Merge-tag-reach (HEAD -> main)
Merge-tags-octopus-a-and-octopus-b
seventh (tag: seventh)
octopus-b (tag: octopus-b, octopus-b)
octopus-a (tag: octopus-a, octopus-a)
reach (reach)
EOF
git log -n6 --decorate=short --pretty="tformat:%f%d" \
--decorate-refs-exclude="tags/reach" >actual &&
test_cmp expect.decorate actual &&
git -c log.excludeDecoration="tags/reach" log \
-n6 --decorate=short --pretty="tformat:%f%d" >actual &&
test_cmp expect.decorate actual
ok 67 - decorate-refs-exclude without globs
expecting success of 4202.68 'multiple decorate-refs-exclude':
cat >expect.decorate <<-\EOF &&
Merge-tag-reach (HEAD -> main)
Merge-tags-octopus-a-and-octopus-b
seventh (tag: seventh)
octopus-b (tag: octopus-b)
octopus-a (tag: octopus-a)
reach (reach)
EOF
git log -n6 --decorate=short --pretty="tformat:%f%d" \
--decorate-refs-exclude="heads/octopus*" \
--decorate-refs-exclude="tags/reach" >actual &&
test_cmp expect.decorate actual &&
git -c log.excludeDecoration="heads/octopus*" \
-c log.excludeDecoration="tags/reach" log \
-n6 --decorate=short --pretty="tformat:%f%d" >actual &&
test_cmp expect.decorate actual &&
git -c log.excludeDecoration="heads/octopus*" log \
--decorate-refs-exclude="tags/reach" \
-n6 --decorate=short --pretty="tformat:%f%d" >actual &&
test_cmp expect.decorate actual
ok 68 - multiple decorate-refs-exclude
expecting success of 4202.69 'decorate-refs and decorate-refs-exclude':
cat >expect.no-decorate <<-\EOF &&
Merge-tag-reach (main)
Merge-tags-octopus-a-and-octopus-b
seventh
octopus-b
octopus-a
reach (reach)
EOF
git log -n6 --decorate=short --pretty="tformat:%f%d" \
--decorate-refs="heads/*" \
--decorate-refs-exclude="heads/oc*" >actual &&
test_cmp expect.no-decorate actual
ok 69 - decorate-refs and decorate-refs-exclude
expecting success of 4202.70 'deocrate-refs and log.excludeDecoration':
cat >expect.decorate <<-\EOF &&
Merge-tag-reach (main)
Merge-tags-octopus-a-and-octopus-b
seventh
octopus-b (octopus-b)
octopus-a (octopus-a)
reach (reach)
EOF
git -c log.excludeDecoration="heads/oc*" log \
--decorate-refs="heads/*" \
-n6 --decorate=short --pretty="tformat:%f%d" >actual &&
test_cmp expect.decorate actual
ok 70 - deocrate-refs and log.excludeDecoration
expecting success of 4202.71 'decorate-refs-exclude and simplify-by-decoration':
cat >expect.decorate <<-\EOF &&
Merge-tag-reach (HEAD -> main)
reach (tag: reach, reach)
seventh (tag: seventh)
Merge-branch-tangle (refs/hidden/tangle)
Merge-branch-side-early-part-into-tangle (refs/rewritten/merge, tangle)
Merge-branch-main-early-part-into-tangle (refs/prefetch/merge)
EOF
git log -n6 --decorate=short --pretty="tformat:%f%d" \
--decorate-refs-exclude="*octopus*" \
--simplify-by-decoration >actual &&
test_cmp expect.decorate actual &&
git -c log.excludeDecoration="*octopus*" log \
-n6 --decorate=short --pretty="tformat:%f%d" \
--simplify-by-decoration >actual &&
test_cmp expect.decorate actual
ok 71 - decorate-refs-exclude and simplify-by-decoration
expecting success of 4202.72 'decorate-refs with implied decorate from format':
cat >expect <<-\EOF &&
side-2 (tag: side-2)
side-1
EOF
git log --no-walk --format="%s%d" \
--decorate-refs="*side-2" side-1 side-2 \
>actual &&
test_cmp expect actual
ok 72 - decorate-refs with implied decorate from format
expecting success of 4202.73 'implied decorate does not override option':
cat >expect <<-\EOF &&
side-2 (tag: refs/tags/side-2, refs/heads/side)
side-1 (tag: refs/tags/side-1)
EOF
git log --no-walk --format="%s%d" \
--decorate=full side-1 side-2 \
>actual &&
test_cmp expect actual
ok 73 - implied decorate does not override option
expecting success of 4202.74 'decorate-refs and simplify-by-decoration without output':
cat >expect <<-\EOF &&
side-2
initial
EOF
# Do not just use a --format without %d here; we want to
# make sure that we did not accidentally turn on displaying
# the decorations, too. And that requires one of the regular
# formats.
git log --decorate-refs="*side-2" --oneline \
--simplify-by-decoration >actual.raw &&
sed "s/^[0-9a-f]* //" <actual.raw >actual &&
test_cmp expect actual
ok 74 - decorate-refs and simplify-by-decoration without output
expecting success of 4202.75 'decorate-refs-exclude HEAD':
git log --decorate=full --oneline \
--decorate-refs-exclude="HEAD" >actual &&
! grep HEAD actual
ok 75 - decorate-refs-exclude HEAD
expecting success of 4202.76 'decorate-refs focus from default':
git log --decorate=full --oneline \
--decorate-refs="refs/heads" >actual &&
! grep HEAD actual
ok 76 - decorate-refs focus from default
expecting success of 4202.77 '--clear-decorations overrides defaults':
cat >expect.default <<-\EOF &&
Merge-tag-reach (HEAD -> refs/heads/main)
Merge-tags-octopus-a-and-octopus-b
seventh (tag: refs/tags/seventh)
octopus-b (tag: refs/tags/octopus-b, refs/heads/octopus-b)
octopus-a (tag: refs/tags/octopus-a, refs/heads/octopus-a)
reach (tag: refs/tags/reach, refs/heads/reach)
Merge-branch-tangle
Merge-branch-side-early-part-into-tangle (refs/heads/tangle)
Merge-branch-main-early-part-into-tangle
tangle-a (tag: refs/tags/tangle-a)
Merge-branch-side
side-2 (tag: refs/tags/side-2, refs/heads/side)
side-1 (tag: refs/tags/side-1)
Second
sixth
fifth
fourth
third
second
initial
EOF
git log --decorate=full --pretty="tformat:%f%d" >actual &&
test_cmp expect.default actual &&
cat >expect.all <<-\EOF &&
Merge-tag-reach (HEAD -> refs/heads/main)
Merge-tags-octopus-a-and-octopus-b
seventh (tag: refs/tags/seventh)
octopus-b (tag: refs/tags/octopus-b, refs/heads/octopus-b)
octopus-a (tag: refs/tags/octopus-a, refs/heads/octopus-a)
reach (tag: refs/tags/reach, refs/heads/reach)
Merge-branch-tangle (refs/hidden/tangle)
Merge-branch-side-early-part-into-tangle (refs/rewritten/merge, refs/heads/tangle)
Merge-branch-main-early-part-into-tangle (refs/prefetch/merge)
tangle-a (tag: refs/tags/tangle-a)
Merge-branch-side
side-2 (tag: refs/tags/side-2, refs/heads/side)
side-1 (tag: refs/tags/side-1)
Second
sixth
fifth
fourth
third
second
initial
EOF
git log --decorate=full --pretty="tformat:%f%d" \
--clear-decorations >actual &&
test_cmp expect.all actual &&
git -c log.initialDecorationSet=all log \
--decorate=full --pretty="tformat:%f%d" >actual &&
test_cmp expect.all actual
ok 77 - --clear-decorations overrides defaults
expecting success of 4202.78 '--clear-decorations clears previous exclusions':
cat >expect.all <<-\EOF &&
Merge-tag-reach (HEAD -> refs/heads/main)
reach (tag: refs/tags/reach, refs/heads/reach)
Merge-tags-octopus-a-and-octopus-b
octopus-b (tag: refs/tags/octopus-b, refs/heads/octopus-b)
octopus-a (tag: refs/tags/octopus-a, refs/heads/octopus-a)
seventh (tag: refs/tags/seventh)
Merge-branch-tangle (refs/hidden/tangle)
Merge-branch-side-early-part-into-tangle (refs/rewritten/merge, refs/heads/tangle)
Merge-branch-main-early-part-into-tangle (refs/prefetch/merge)
tangle-a (tag: refs/tags/tangle-a)
side-2 (tag: refs/tags/side-2, refs/heads/side)
side-1 (tag: refs/tags/side-1)
initial
EOF
git log --decorate=full --pretty="tformat:%f%d" \
--simplify-by-decoration \
--decorate-refs-exclude="heads/octopus*" \
--decorate-refs="heads" \
--clear-decorations >actual &&
test_cmp expect.all actual &&
cat >expect.filtered <<-\EOF &&
Merge-tags-octopus-a-and-octopus-b
octopus-b (refs/heads/octopus-b)
octopus-a (refs/heads/octopus-a)
initial
EOF
git log --decorate=full --pretty="tformat:%f%d" \
--simplify-by-decoration \
--decorate-refs-exclude="heads/octopus" \
--decorate-refs="heads" \
--clear-decorations \
--decorate-refs-exclude="tags/" \
--decorate-refs="heads/octopus*" >actual &&
test_cmp expect.filtered actual
ok 78 - --clear-decorations clears previous exclusions
expecting success of 4202.79 'log.decorate config parsing':
git log --oneline --decorate=full >expect.full &&
git log --oneline --decorate=short >expect.short &&
test_config log.decorate full &&
test_config log.mailmap true &&
git log --oneline >actual &&
test_cmp expect.full actual &&
git log --oneline --decorate=short >actual &&
test_cmp expect.short actual
ok 79 - log.decorate config parsing
checking prerequisite: TTY
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-TTY" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-TTY" &&
test_have_prereq PERL &&
# Reading from the pty master seems to get stuck _sometimes_
# on Mac OS X 10.5.0, using Perl 5.10.0 or 5.8.9.
#
# Reproduction recipe: run
#
# i=0
# while ./test-terminal.perl echo hi $i
# do
# : $((i = $i + 1))
# done
#
# After 2000 iterations or so it hangs.
# https://rt.cpan.org/Ticket/Display.html?id=65692
#
test "$(uname -s)" != Darwin &&
perl "$TEST_DIRECTORY"/test-terminal.perl \
sh -c "test -t 1 && test -t 2"
)
prerequisite TTY ok
expecting success of 4202.80 'log output on a TTY':
git log --color --oneline --decorate >expect.short &&
test_terminal git log --oneline >actual &&
test_cmp expect.short actual
ok 80 - log output on a TTY
expecting success of 4202.81 'reflog is expected format':
git log -g --abbrev-commit --pretty=oneline >expect &&
git reflog >actual &&
test_cmp expect actual
ok 81 - reflog is expected format
expecting success of 4202.82 'whatchanged is expected format':
git log --no-merges --raw >expect &&
git whatchanged >actual &&
test_cmp expect actual
ok 82 - whatchanged is expected format
expecting success of 4202.83 'log.abbrevCommit configuration':
git log --abbrev-commit >expect.log.abbrev &&
git log --no-abbrev-commit >expect.log.full &&
git log --pretty=raw >expect.log.raw &&
git reflog --abbrev-commit >expect.reflog.abbrev &&
git reflog --no-abbrev-commit >expect.reflog.full &&
git whatchanged --abbrev-commit >expect.whatchanged.abbrev &&
git whatchanged --no-abbrev-commit >expect.whatchanged.full &&
test_config log.abbrevCommit true &&
git log >actual &&
test_cmp expect.log.abbrev actual &&
git log --no-abbrev-commit >actual &&
test_cmp expect.log.full actual &&
git log --pretty=raw >actual &&
test_cmp expect.log.raw actual &&
git reflog >actual &&
test_cmp expect.reflog.abbrev actual &&
git reflog --no-abbrev-commit >actual &&
test_cmp expect.reflog.full actual &&
git whatchanged >actual &&
test_cmp expect.whatchanged.abbrev actual &&
git whatchanged --no-abbrev-commit >actual &&
test_cmp expect.whatchanged.full actual
ok 83 - log.abbrevCommit configuration
expecting success of 4202.84 'show added path under "--follow -M"':
# This tests for a regression introduced in v1.7.2-rc0~103^2~2
test_create_repo regression &&
(
cd regression &&
test_commit needs-another-commit &&
test_commit foo.bar &&
git log -M --follow -p foo.bar.t &&
git log -M --follow --stat foo.bar.t &&
git log -M --follow --name-only foo.bar.t
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4202-log/regression/.git/
[main (root-commit) 2c943e6] needs-another-commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 needs-another-commit.t
[main 88a3158] foo.bar
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo.bar.t
commit 88a3158a223f4c9eff6009796d6f4a01db6f394c
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:28:13 2005 -0700
foo.bar
diff --git a/foo.bar.t b/foo.bar.t
new file mode 100644
index 0000000..fbf8e96
--- /dev/null
+++ b/foo.bar.t
@@ -0,0 +1 @@
+foo.bar
commit 88a3158a223f4c9eff6009796d6f4a01db6f394c
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:28:13 2005 -0700
foo.bar
foo.bar.t | 1 +
1 file changed, 1 insertion(+)
commit 88a3158a223f4c9eff6009796d6f4a01db6f394c
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:28:13 2005 -0700
foo.bar
foo.bar.t
ok 84 - show added path under "--follow -M"
expecting success of 4202.85 'git log -c --follow':
test_create_repo follow-c &&
(
cd follow-c &&
test_commit initial file original &&
git rm file &&
test_commit rename file2 original &&
git reset --hard initial &&
test_commit modify file foo &&
git merge -m merge rename &&
git log -c --follow file2
)
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4202-log/follow-c/.git/
[main (root-commit) 1ae2302] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
rm 'file'
[main b666f54] rename
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
rename file => file2 (100%)
HEAD is now at 1ae2302 initial
[main ab921c8] modify
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
Merge made by the 'ort' strategy.
file => file2 | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename file => file2 (100%)
commit 0071b8c0b17b9c12c2c48a042c83e27bab6aad4e
Merge: ab921c8 b666f54
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:29:13 2005 -0700
merge
commit b666f54d82025f8eaec1a190d72356cf651c2521
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:28:13 2005 -0700
rename
diff --git a/file b/file2
similarity index 100%
rename from file
rename to file2
commit 1ae230258ca6e8e83c5d2d3840b9cf430273fca2
Author: A U Thor <author@example.com>
Date: Thu Apr 7 15:27:13 2005 -0700
initial
diff --git a/file b/file
new file mode 100644
index 0000000..4b48dee
--- /dev/null
+++ b/file
@@ -0,0 +1 @@
+original
ok 85 - git log -c --follow
expecting success of 4202.86 'log --graph with diff and stats':
lib_test_cmp_short_graph --no-renames --stat -p
ok 86 - log --graph with diff and stats
expecting success of 4202.87 'log --line-prefix="*** " --graph with diff and stats':
lib_test_cmp_short_graph --line-prefix="*** " --no-renames --stat -p
ok 87 - log --line-prefix="*** " --graph with diff and stats
expecting success of 4202.88 'log --graph with --name-status':
test_cmp_graph --name-status tangle..reach
warning: refname 'reach' is ambiguous.
ok 88 - log --graph with --name-status
expecting success of 4202.89 'log --graph with --name-only':
test_cmp_graph --name-only tangle..reach
warning: refname 'reach' is ambiguous.
ok 89 - log --graph with --name-only
expecting success of 4202.90 '--no-graph countermands --graph':
git log >expect &&
git log --graph --no-graph >actual &&
test_cmp expect actual
ok 90 - --no-graph countermands --graph
expecting success of 4202.91 '--graph countermands --no-graph':
git log --graph >expect &&
git log --no-graph --graph >actual &&
test_cmp expect actual
ok 91 - --graph countermands --no-graph
expecting success of 4202.92 '--no-graph does not unset --topo-order':
git log --topo-order >expect &&
git log --topo-order --no-graph >actual &&
test_cmp expect actual
ok 92 - --no-graph does not unset --topo-order
expecting success of 4202.93 '--no-graph does not unset --parents':
git log --parents >expect &&
git log --parents --no-graph >actual &&
test_cmp expect actual
ok 93 - --no-graph does not unset --parents
expecting success of 4202.94 '--reverse and --graph conflict':
test_must_fail git log --reverse --graph 2>stderr &&
test_i18ngrep "cannot be used together" stderr
fatal: options '--reverse' and '--graph' cannot be used together
ok 94 - --reverse and --graph conflict
expecting success of 4202.95 '--reverse --graph --no-graph works':
git log --reverse >expect &&
git log --reverse --graph --no-graph >actual &&
test_cmp expect actual
ok 95 - --reverse --graph --no-graph works
expecting success of 4202.96 '--show-linear-break and --graph conflict':
test_must_fail git log --show-linear-break --graph 2>stderr &&
test_i18ngrep "cannot be used together" stderr
fatal: options '--show-linear-break' and '--graph' cannot be used together
ok 96 - --show-linear-break and --graph conflict
expecting success of 4202.97 '--show-linear-break --graph --no-graph works':
git log --show-linear-break >expect &&
git log --show-linear-break --graph --no-graph >actual &&
test_cmp expect actual
ok 97 - --show-linear-break --graph --no-graph works
expecting success of 4202.98 '--no-walk and --graph conflict':
test_must_fail git log --no-walk --graph 2>stderr &&
test_i18ngrep "cannot be used together" stderr
fatal: options '--no-walk' and '--graph' cannot be used together
ok 98 - --no-walk and --graph conflict
expecting success of 4202.99 '--no-walk --graph --no-graph works':
git log --no-walk >expect &&
git log --no-walk --graph --no-graph >actual &&
test_cmp expect actual
ok 99 - --no-walk --graph --no-graph works
expecting success of 4202.100 '--walk-reflogs and --graph conflict':
test_must_fail git log --walk-reflogs --graph 2>stderr &&
(test_i18ngrep "cannot combine" stderr ||
test_i18ngrep "cannot be used together" stderr)
fatal: cannot combine --walk-reflogs with history-limiting options
ok 100 - --walk-reflogs and --graph conflict
expecting success of 4202.101 '--walk-reflogs --graph --no-graph works':
git log --walk-reflogs >expect &&
git log --walk-reflogs --graph --no-graph >actual &&
test_cmp expect actual
ok 101 - --walk-reflogs --graph --no-graph works
expecting success of 4202.102 'dotdot is a parent directory':
mkdir -p a/b &&
( echo sixth && echo fifth ) >expect &&
( cd a/b && git log --format=%s .. ) >actual &&
test_cmp expect actual
ok 102 - dotdot is a parent directory
checking prerequisite: GPG
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-GPG" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-GPG" &&
gpg_version=$(gpg --version 2>&1)
test $? != 127 || exit 1
# As said here: http://www.gnupg.org/documentation/faqs.html#q6.19
# the gpg version 1.0.6 did not parse trust packets correctly, so for
# that version, creation of signed tags using the generated key fails.
case "$gpg_version" in
"gpg (GnuPG) 1.0.6"*)
say "Your version of gpg (1.0.6) is too buggy for testing"
exit 1
;;
*)
# Available key info:
# * Type DSA and Elgamal, size 2048 bits, no expiration date,
# name and email: C O Mitter <committer@example.com>
# * Type RSA, size 2048 bits, no expiration date,
# name and email: Eris Discordia <discord@example.net>
# No password given, to enable non-interactive operation.
# To generate new key:
# gpg --homedir /tmp/gpghome --gen-key
# To write armored exported key to keyring:
# gpg --homedir /tmp/gpghome --export-secret-keys \
# --armor 0xDEADBEEF >> lib-gpg/keyring.gpg
# gpg --homedir /tmp/gpghome --export \
# --armor 0xDEADBEEF >> lib-gpg/keyring.gpg
# To export ownertrust:
# gpg --homedir /tmp/gpghome --export-ownertrust \
# > lib-gpg/ownertrust
mkdir "$GNUPGHOME" &&
chmod 0700 "$GNUPGHOME" &&
(gpgconf --kill all || : ) &&
gpg --homedir "${GNUPGHOME}" --import \
"$TEST_DIRECTORY"/lib-gpg/keyring.gpg &&
gpg --homedir "${GNUPGHOME}" --import-ownertrust \
"$TEST_DIRECTORY"/lib-gpg/ownertrust &&
gpg --homedir "${GNUPGHOME}" </dev/null >/dev/null \
--sign -u committer@example.com
;;
esac
)
gpg: keybox '/<<PKGBUILDDIR>>/t/trash directory.t4202-log/gpghome/pubring.kbx' created
gpg: /<<PKGBUILDDIR>>/t/trash directory.t4202-log/gpghome/trustdb.gpg: trustdb created
gpg: key 13B6F51ECDDE430D: public key "C O Mitter <committer@example.com>" imported
gpg: key 13B6F51ECDDE430D: secret key imported
gpg: key 61092E85B7227189: public key "Eris Discordia <discord@example.net>" imported
gpg: key 61092E85B7227189: secret key imported
gpg: key 13B6F51ECDDE430D: "C O Mitter <committer@example.com>" not changed
gpg: key 61092E85B7227189: "Eris Discordia <discord@example.net>" not changed
gpg: Total number processed: 4
gpg: imported: 2
gpg: unchanged: 2
gpg: secret keys read: 2
gpg: secret keys imported: 2
gpg: inserting ownertrust of 6
gpg: inserting ownertrust of 3
prerequisite GPG ok
expecting success of 4202.103 'setup signed branch':
test_when_finished "git reset --hard && git checkout main" &&
git checkout -b signed main &&
echo foo >foo &&
git add foo &&
git commit -S -m signed_commit
Switched to a new branch 'signed'
[signed 9da8423] signed_commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo
HEAD is now at 9da8423 signed_commit
Switched to branch 'main'
ok 103 - setup signed branch
expecting success of 4202.104 'setup signed branch with subkey':
test_when_finished "git reset --hard && git checkout main" &&
git checkout -b signed-subkey main &&
echo foo >foo &&
git add foo &&
git commit -SB7227189 -m signed_commit
Switched to a new branch 'signed-subkey'
[signed-subkey 6cb824f] signed_commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo
HEAD is now at 6cb824f signed_commit
Switched to branch 'main'
ok 104 - setup signed branch with subkey
checking prerequisite: GPGSM
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-GPGSM" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-GPGSM" &&
test_have_prereq GPG &&
# Available key info:
# * see t/lib-gpg/gpgsm-gen-key.in
# To generate new certificate:
# * no passphrase
# gpgsm --homedir /tmp/gpghome/ \
# -o /tmp/gpgsm.crt.user \
# --generate-key \
# --batch t/lib-gpg/gpgsm-gen-key.in
# To import certificate:
# gpgsm --homedir /tmp/gpghome/ \
# --import /tmp/gpgsm.crt.user
# To export into a .p12 we can later import:
# gpgsm --homedir /tmp/gpghome/ \
# -o t/lib-gpg/gpgsm_cert.p12 \
# --export-secret-key-p12 "committer@example.com"
echo | gpgsm --homedir "${GNUPGHOME}" \
--passphrase-fd 0 --pinentry-mode loopback \
--import "$TEST_DIRECTORY"/lib-gpg/gpgsm_cert.p12 &&
gpgsm --homedir "${GNUPGHOME}" -K --with-colons |
awk -F ":" "/^fpr:/ {printf \"%s S relax\\n\", \$10}" \
>"${GNUPGHOME}/trustlist.txt" &&
(gpgconf --reload all || : ) &&
echo hello | gpgsm --homedir "${GNUPGHOME}" >/dev/null \
-u committer@example.com -o /dev/null --sign -
)
gpgsm: total number processed: 2
gpgsm: imported: 1
gpgsm: secret keys read: 1
gpgsm: secret keys imported: 1
gpgsm: DBG: adding certificates at level -2
gpgsm: signature created
prerequisite GPGSM ok
expecting success of 4202.105 'setup signed branch x509':
test_when_finished "git reset --hard && git checkout main" &&
git checkout -b signed-x509 main &&
echo foo >foo &&
git add foo &&
test_config gpg.format x509 &&
test_config user.signingkey $GIT_COMMITTER_EMAIL &&
git commit -S -m signed_commit
Switched to a new branch 'signed-x509'
[signed-x509 68d834a] signed_commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 foo
HEAD is now at 68d834a signed_commit
Switched to branch 'main'
ok 105 - setup signed branch x509
checking prerequisite: GPGSSH
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-GPGSSH" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-GPGSSH" &&
ssh_version=$(ssh-keygen -Y find-principals -n "git" 2>&1)
test $? != 127 || exit 1
echo $ssh_version | grep -q "find-principals:missing signature file"
test $? = 0 || exit 1;
# Setup some keys and an allowed signers file
mkdir -p "${GNUPGHOME}" &&
chmod 0700 "${GNUPGHOME}" &&
(setfacl -k "${GNUPGHOME}" 2>/dev/null || true) &&
ssh-keygen -t ed25519 -N "" -C "git ed25519 key" -f "${GPGSSH_KEY_PRIMARY}" >/dev/null &&
ssh-keygen -t rsa -b 2048 -N "" -C "git rsa2048 key" -f "${GPGSSH_KEY_SECONDARY}" >/dev/null &&
ssh-keygen -t ed25519 -N "${GPGSSH_KEY_PASSPHRASE}" -C "git ed25519 encrypted key" -f "${GPGSSH_KEY_WITH_PASSPHRASE}" >/dev/null &&
ssh-keygen -t ecdsa -N "" -f "${GPGSSH_KEY_ECDSA}" >/dev/null &&
ssh-keygen -t ed25519 -N "" -C "git ed25519 key" -f "${GPGSSH_KEY_UNTRUSTED}" >/dev/null &&
cat >"${GPGSSH_ALLOWED_SIGNERS}" <<-EOF &&
"principal with number 1" $(cat "${GPGSSH_KEY_PRIMARY}.pub")"
"principal with number 2" $(cat "${GPGSSH_KEY_SECONDARY}.pub")"
"principal with number 3" $(cat "${GPGSSH_KEY_WITH_PASSPHRASE}.pub")"
"principal with number 4" $(cat "${GPGSSH_KEY_ECDSA}.pub")"
EOF
# Verify if at least one key and ssh-keygen works as expected
echo "testpayload" |
ssh-keygen -Y sign -n "git" -f "${GPGSSH_KEY_PRIMARY}" >gpgssh_prereq.sig &&
ssh-keygen -Y find-principals -f "${GPGSSH_ALLOWED_SIGNERS}" -s gpgssh_prereq.sig &&
echo "testpayload" |
ssh-keygen -Y verify -n "git" -f "${GPGSSH_ALLOWED_SIGNERS}" -I "principal with number 1" -s gpgssh_prereq.sig
)
prerequisite GPGSSH not satisfied
ok 106 # skip setup sshkey signed branch (missing GPGSSH)
checking prerequisite: GPGSSH_VERIFYTIME
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-GPGSSH_VERIFYTIME" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-GPGSSH_VERIFYTIME" &&
test_have_prereq GPGSSH &&
# Check if ssh-keygen has a verify-time option by passing an invalid date to it
ssh-keygen -Overify-time=INVALID -Y check-novalidate -n "git" -s doesnotmatter 2>&1 | grep -q -F "Invalid \"verify-time\"" &&
# Set up keys with key lifetimes
ssh-keygen -t ed25519 -N "" -C "timeboxed valid key" -f "${GPGSSH_KEY_TIMEBOXEDVALID}" >/dev/null &&
key_valid=$(cat "${GPGSSH_KEY_TIMEBOXEDVALID}.pub") &&
ssh-keygen -t ed25519 -N "" -C "timeboxed invalid key" -f "${GPGSSH_KEY_TIMEBOXEDINVALID}" >/dev/null &&
key_invalid=$(cat "${GPGSSH_KEY_TIMEBOXEDINVALID}.pub") &&
ssh-keygen -t ed25519 -N "" -C "expired key" -f "${GPGSSH_KEY_EXPIRED}" >/dev/null &&
key_expired=$(cat "${GPGSSH_KEY_EXPIRED}.pub") &&
ssh-keygen -t ed25519 -N "" -C "not yet valid key" -f "${GPGSSH_KEY_NOTYETVALID}" >/dev/null &&
key_notyetvalid=$(cat "${GPGSSH_KEY_NOTYETVALID}.pub") &&
# Timestamps outside of test_tick span
ts2005a=20050401000000 ts2005b=200504020000 &&
# Timestamps within test_tick span
ts2005c=20050407000000 ts2005d=200504100000 &&
# Definitely not yet valid / expired timestamps
ts2000=20000101000000 ts2999=29990101000000 &&
cat >>"${GPGSSH_ALLOWED_SIGNERS}" <<-EOF &&
"timeboxed valid key" valid-after="$ts2005c",valid-before="$ts2005d" $key_valid"
"timeboxed invalid key" valid-after="$ts2005a",valid-before="$ts2005b" $key_invalid"
"principal with expired key" valid-before="$ts2000" $key_expired"
"principal with not yet valid key" valid-after="$ts2999" $key_notyetvalid"
EOF
# and verify ssh-keygen verifies the key lifetime
echo "testpayload" |
ssh-keygen -Y sign -n "git" -f "${GPGSSH_KEY_EXPIRED}" >gpgssh_verifytime_prereq.sig &&
! (ssh-keygen -Y verify -n "git" -f "${GPGSSH_ALLOWED_SIGNERS}" -I "principal with expired key" -s gpgssh_verifytime_prereq.sig)
)
prerequisite GPGSSH_VERIFYTIME not satisfied
ok 107 # skip create signed commits with keys having defined lifetimes (missing GPGSSH_VERIFYTIME,GPGSSH of GPGSSH,GPGSSH_VERIFYTIME)
expecting success of 4202.108 'log x509 fingerprint':
echo "F8BF62E0693D0694816377099909C779FA23FD65 | " >expect &&
git log -n1 --format="%GF | %GP" signed-x509 >actual &&
test_cmp expect actual
ok 108 - log x509 fingerprint
expecting success of 4202.109 'log OpenPGP fingerprint':
echo "D4BE22311AD3131E5EDA29A461092E85B7227189" > expect &&
git log -n1 --format="%GP" signed-subkey >actual &&
test_cmp expect actual
ok 109 - log OpenPGP fingerprint
ok 110 # skip log ssh key fingerprint (missing GPGSSH)
expecting success of 4202.111 'log --graph --show-signature':
git log --graph --show-signature -n1 signed >actual &&
grep "^| gpg: Signature made" actual &&
grep "^| gpg: Good signature" actual
| gpg: Signature made Mon Oct 9 02:19:56 2023 UTC
| gpg: Good signature from "C O Mitter <committer@example.com>" [ultimate]
ok 111 - log --graph --show-signature
expecting success of 4202.112 'log --graph --show-signature x509':
git log --graph --show-signature -n1 signed-x509 >actual &&
grep "^| gpgsm: Signature made" actual &&
grep "^| gpgsm: Good signature" actual
| gpgsm: Signature made 2023-10-09 02:19:56 UTC
| gpgsm: Good signature from "/CN=C O Mitter/O=Example/SN=C O/GN=Mitter"
ok 112 - log --graph --show-signature x509
ok 113 # skip log --graph --show-signature ssh (missing GPGSSH)
ok 114 # skip log shows failure on expired signature key (missing GPGSSH_VERIFYTIME,GPGSSH of GPGSSH,GPGSSH_VERIFYTIME)
ok 115 # skip log shows failure on not yet valid signature key (missing GPGSSH_VERIFYTIME,GPGSSH of GPGSSH,GPGSSH_VERIFYTIME)
ok 116 # skip log show success with commit date and key validity matching (missing GPGSSH_VERIFYTIME,GPGSSH of GPGSSH,GPGSSH_VERIFYTIME)
ok 117 # skip log shows failure with commit date outside of key validity (missing GPGSSH_VERIFYTIME,GPGSSH of GPGSSH,GPGSSH_VERIFYTIME)
expecting success of 4202.118 'log --graph --show-signature for merged tag':
test_when_finished "git reset --hard && git checkout main" &&
git checkout -b plain main &&
echo aaa >bar &&
git add bar &&
git commit -m bar_commit &&
git checkout -b tagged main &&
echo bbb >baz &&
git add baz &&
git commit -m baz_commit &&
git tag -s -m signed_tag_msg signed_tag &&
git checkout plain &&
git merge --no-ff -m msg signed_tag &&
git log --graph --show-signature -n1 plain >actual &&
grep "^|\\\ merged tag" actual &&
grep "^| | gpg: Signature made" actual &&
grep "^| | gpg: Good signature" actual
Switched to a new branch 'plain'
[plain e4ca54b] bar_commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 bar
Switched to a new branch 'tagged'
[tagged b401988] baz_commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 baz
Switched to branch 'plain'
Merge made by the 'ort' strategy.
baz | 1 +
1 file changed, 1 insertion(+)
create mode 100644 baz
|\ merged tag 'signed_tag'
| | gpg: Signature made Mon Oct 9 02:19:57 2023 UTC
| | gpg: Good signature from "C O Mitter <committer@example.com>" [ultimate]
HEAD is now at e78dd6f msg
Switched to branch 'main'
ok 118 - log --graph --show-signature for merged tag
expecting success of 4202.119 'log --graph --show-signature for merged tag in shallow clone':
test_when_finished "git reset --hard && git checkout main" &&
git checkout -b plain-shallow main &&
echo aaa >bar &&
git add bar &&
git commit -m bar_commit &&
git checkout --detach main &&
echo bbb >baz &&
git add baz &&
git commit -m baz_commit &&
git tag -s -m signed_tag_msg signed_tag_shallow &&
hash=$(git rev-parse HEAD) &&
git checkout plain-shallow &&
git merge --no-ff -m msg signed_tag_shallow &&
git clone --depth 1 --no-local . shallow &&
test_when_finished "rm -rf shallow" &&
git -C shallow log --graph --show-signature -n1 plain-shallow >actual &&
grep "tag signed_tag_shallow names a non-parent $hash" actual
Switched to a new branch 'plain-shallow'
[plain-shallow e4ca54b] bar_commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 bar
HEAD is now at c3f451c Merge tag 'reach'
[detached HEAD b401988] baz_commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 baz
Previous HEAD position was b401988 baz_commit
Switched to branch 'plain-shallow'
Merge made by the 'ort' strategy.
baz | 1 +
1 file changed, 1 insertion(+)
create mode 100644 baz
Cloning into 'shallow'...
tag signed_tag_shallow names a non-parent b40198806a6a49d1ef6d3b39079fbb5fb04065f5
HEAD is now at 99d496b msg
Switched to branch 'main'
ok 119 - log --graph --show-signature for merged tag in shallow clone
expecting success of 4202.120 'log --graph --show-signature for merged tag with missing key':
test_when_finished "git reset --hard && git checkout main" &&
git checkout -b plain-nokey main &&
echo aaa >bar &&
git add bar &&
git commit -m bar_commit &&
git checkout -b tagged-nokey main &&
echo bbb >baz &&
git add baz &&
git commit -m baz_commit &&
git tag -s -m signed_tag_msg signed_tag_nokey &&
git checkout plain-nokey &&
git merge --no-ff -m msg signed_tag_nokey &&
GNUPGHOME=. git log --graph --show-signature -n1 plain-nokey >actual &&
grep "^|\\\ merged tag" actual &&
grep "^| | gpg: Signature made" actual &&
grep -E "^| | gpg: Can't check signature: (public key not found|No public key)" actual
Switched to a new branch 'plain-nokey'
[plain-nokey e4ca54b] bar_commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 bar
Switched to a new branch 'tagged-nokey'
[tagged-nokey b401988] baz_commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 baz
Switched to branch 'plain-nokey'
Merge made by the 'ort' strategy.
baz | 1 +
1 file changed, 1 insertion(+)
create mode 100644 baz
|\ merged tag 'signed_tag_nokey'
| | gpg: Signature made Mon Oct 9 02:19:57 2023 UTC
* commit 0efd47fb8c8785318b31c4ccf7ef8ae69788314d
|\ merged tag 'signed_tag_nokey'
| | gpg: WARNING: unsafe permissions on homedir '/<<PKGBUILDDIR>>/t/trash directory.t4202-log'
| | gpg: keybox '/<<PKGBUILDDIR>>/t/trash directory.t4202-log/pubring.kbx' created
| | gpg: Signature made Mon Oct 9 02:19:57 2023 UTC
| | gpg: using DSA key 73D758744BE721698EC54E8713B6F51ECDDE430D
| | gpg: issuer "committer@example.com"
| | gpg: Can't check signature: No public key
| | Merge: e4ca54b b401988
| | Author: A U Thor <author@example.com>
| | Date: Thu Apr 7 15:26:13 2005 -0700
| |
| | msg
HEAD is now at 0efd47f msg
Switched to branch 'main'
ok 120 - log --graph --show-signature for merged tag with missing key
expecting success of 4202.121 'log --graph --show-signature for merged tag with bad signature':
test_when_finished "git reset --hard && git checkout main" &&
git checkout -b plain-bad main &&
echo aaa >bar &&
git add bar &&
git commit -m bar_commit &&
git checkout -b tagged-bad main &&
echo bbb >baz &&
git add baz &&
git commit -m baz_commit &&
git tag -s -m signed_tag_msg signed_tag_bad &&
git cat-file tag signed_tag_bad >raw &&
sed -e "s/signed_tag_msg/forged/" raw >forged &&
git hash-object -w -t tag forged >forged.tag &&
git checkout plain-bad &&
git merge --no-ff -m msg "$(cat forged.tag)" &&
git log --graph --show-signature -n1 plain-bad >actual &&
grep "^|\\\ merged tag" actual &&
grep "^| | gpg: Signature made" actual &&
grep "^| | gpg: BAD signature from" actual
Switched to a new branch 'plain-bad'
[plain-bad e4ca54b] bar_commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 bar
Switched to a new branch 'tagged-bad'
[tagged-bad b401988] baz_commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 baz
Switched to branch 'plain-bad'
Merge made by the 'ort' strategy.
baz | 1 +
1 file changed, 1 insertion(+)
create mode 100644 baz
|\ merged tag 'signed_tag_bad'
| | gpg: Signature made Mon Oct 9 02:19:57 2023 UTC
| | gpg: BAD signature from "C O Mitter <committer@example.com>" [ultimate]
HEAD is now at b3efb5a msg
Switched to branch 'main'
ok 121 - log --graph --show-signature for merged tag with bad signature
expecting success of 4202.122 'log --show-signature for merged tag with GPG failure':
test_when_finished "git reset --hard && git checkout main" &&
git checkout -b plain-fail main &&
echo aaa >bar &&
git add bar &&
git commit -m bar_commit &&
git checkout -b tagged-fail main &&
echo bbb >baz &&
git add baz &&
git commit -m baz_commit &&
git tag -s -m signed_tag_msg signed_tag_fail &&
git checkout plain-fail &&
git merge --no-ff -m msg signed_tag_fail &&
if ! test_have_prereq VALGRIND
then
TMPDIR="$(pwd)/bogus" git log --show-signature -n1 plain-fail >actual &&
grep "^merged tag" actual &&
grep "^No signature" actual &&
! grep "^gpg: Signature made" actual
fi
Switched to a new branch 'plain-fail'
[plain-fail e4ca54b] bar_commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 bar
Switched to a new branch 'tagged-fail'
[tagged-fail b401988] baz_commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 baz
Switched to branch 'plain-fail'
Merge made by the 'ort' strategy.
baz | 1 +
1 file changed, 1 insertion(+)
create mode 100644 baz
error: could not create temporary file: No such file or directory
merged tag 'signed_tag_fail'
No signature
HEAD is now at 698bb4c msg
Switched to branch 'main'
ok 122 - log --show-signature for merged tag with GPG failure
expecting success of 4202.123 'log --graph --show-signature for merged tag x509':
test_when_finished "git reset --hard && git checkout main" &&
test_config gpg.format x509 &&
test_config user.signingkey $GIT_COMMITTER_EMAIL &&
git checkout -b plain-x509 main &&
echo aaa >bar &&
git add bar &&
git commit -m bar_commit &&
git checkout -b tagged-x509 main &&
echo bbb >baz &&
git add baz &&
git commit -m baz_commit &&
git tag -s -m signed_tag_msg signed_tag_x509 &&
git checkout plain-x509 &&
git merge --no-ff -m msg signed_tag_x509 &&
git log --graph --show-signature -n1 plain-x509 >actual &&
grep "^|\\\ merged tag" actual &&
grep "^| | gpgsm: Signature made" actual &&
grep "^| | gpgsm: Good signature" actual
Switched to a new branch 'plain-x509'
[plain-x509 e4ca54b] bar_commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 bar
Switched to a new branch 'tagged-x509'
[tagged-x509 b401988] baz_commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 baz
Switched to branch 'plain-x509'
Merge made by the 'ort' strategy.
baz | 1 +
1 file changed, 1 insertion(+)
create mode 100644 baz
|\ merged tag 'signed_tag_x509'
| | gpgsm: Signature made 2023-10-09 02:19:57 UTC
| | gpgsm: Good signature from "/CN=C O Mitter/O=Example/SN=C O/GN=Mitter"
HEAD is now at cfa4707 msg
Switched to branch 'main'
ok 123 - log --graph --show-signature for merged tag x509
expecting success of 4202.124 'log --graph --show-signature for merged tag x509 missing key':
test_when_finished "git reset --hard && git checkout main" &&
test_config gpg.format x509 &&
test_config user.signingkey $GIT_COMMITTER_EMAIL &&
git checkout -b plain-x509-nokey main &&
echo aaa >bar &&
git add bar &&
git commit -m bar_commit &&
git checkout -b tagged-x509-nokey main &&
echo bbb >baz &&
git add baz &&
git commit -m baz_commit &&
git tag -s -m signed_tag_msg signed_tag_x509_nokey &&
git checkout plain-x509-nokey &&
git merge --no-ff -m msg signed_tag_x509_nokey &&
GNUPGHOME=. git log --graph --show-signature -n1 plain-x509-nokey >actual &&
grep "^|\\\ merged tag" actual &&
grep -e "^| | gpgsm: certificate not found" \
-e "^| | gpgsm: failed to find the certificate: Not found" actual
Switched to a new branch 'plain-x509-nokey'
[plain-x509-nokey e4ca54b] bar_commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 bar
Switched to a new branch 'tagged-x509-nokey'
[tagged-x509-nokey b401988] baz_commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 baz
Switched to branch 'plain-x509-nokey'
Merge made by the 'ort' strategy.
baz | 1 +
1 file changed, 1 insertion(+)
create mode 100644 baz
|\ merged tag 'signed_tag_x509_nokey'
| | gpgsm: certificate not found
HEAD is now at 300fb93 msg
Switched to branch 'main'
ok 124 - log --graph --show-signature for merged tag x509 missing key
expecting success of 4202.125 'log --graph --show-signature for merged tag x509 bad signature':
test_when_finished "git reset --hard && git checkout main" &&
test_config gpg.format x509 &&
test_config user.signingkey $GIT_COMMITTER_EMAIL &&
git checkout -b plain-x509-bad main &&
echo aaa >bar &&
git add bar &&
git commit -m bar_commit &&
git checkout -b tagged-x509-bad main &&
echo bbb >baz &&
git add baz &&
git commit -m baz_commit &&
git tag -s -m signed_tag_msg signed_tag_x509_bad &&
git cat-file tag signed_tag_x509_bad >raw &&
sed -e "s/signed_tag_msg/forged/" raw >forged &&
git hash-object -w -t tag forged >forged.tag &&
git checkout plain-x509-bad &&
git merge --no-ff -m msg "$(cat forged.tag)" &&
git log --graph --show-signature -n1 plain-x509-bad >actual &&
grep "^|\\\ merged tag" actual &&
grep "^| | gpgsm: Signature made" actual &&
grep "^| | gpgsm: invalid signature" actual
Switched to a new branch 'plain-x509-bad'
[plain-x509-bad e4ca54b] bar_commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 bar
Switched to a new branch 'tagged-x509-bad'
[tagged-x509-bad b401988] baz_commit
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 baz
Switched to branch 'plain-x509-bad'
Merge made by the 'ort' strategy.
baz | 1 +
1 file changed, 1 insertion(+)
create mode 100644 baz
|\ merged tag 'signed_tag_x509_bad'
| | gpgsm: Signature made 2023-10-09 02:19:58 UTC
| | gpgsm: invalid signature: message digest attribute does not match computed one
HEAD is now at 20ad189 msg
Switched to branch 'main'
ok 125 - log --graph --show-signature for merged tag x509 bad signature
expecting success of 4202.126 '--no-show-signature overrides --show-signature':
git log -1 --show-signature --no-show-signature signed >actual &&
! grep "^gpg:" actual
ok 126 - --no-show-signature overrides --show-signature
expecting success of 4202.127 'log.showsignature=true behaves like --show-signature':
test_config log.showsignature true &&
git log -1 signed >actual &&
grep "gpg: Signature made" actual &&
grep "gpg: Good signature" actual
gpg: Signature made Mon Oct 9 02:19:56 2023 UTC
gpg: Good signature from "C O Mitter <committer@example.com>" [ultimate]
ok 127 - log.showsignature=true behaves like --show-signature
expecting success of 4202.128 '--no-show-signature overrides log.showsignature=true':
test_config log.showsignature true &&
git log -1 --no-show-signature signed >actual &&
! grep "^gpg:" actual
ok 128 - --no-show-signature overrides log.showsignature=true
expecting success of 4202.129 '--show-signature overrides log.showsignature=false':
test_config log.showsignature false &&
git log -1 --show-signature signed >actual &&
grep "gpg: Signature made" actual &&
grep "gpg: Good signature" actual
gpg: Signature made Mon Oct 9 02:19:56 2023 UTC
gpg: Good signature from "C O Mitter <committer@example.com>" [ultimate]
ok 129 - --show-signature overrides log.showsignature=false
expecting success of 4202.130 'log --graph --no-walk is forbidden':
test_must_fail git log --graph --no-walk
fatal: options '--no-walk' and '--graph' cannot be used together
ok 130 - log --graph --no-walk is forbidden
expecting success of 4202.131 'log on empty repo fails':
git init empty &&
test_when_finished "rm -rf empty" &&
test_must_fail git -C empty log 2>stderr &&
test_i18ngrep does.not.have.any.commits stderr
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4202-log/empty/.git/
fatal: your current branch 'main' does not have any commits yet
ok 131 - log on empty repo fails
expecting success of 4202.132 'log diagnoses bogus HEAD hash':
git init empty &&
test_when_finished "rm -rf empty" &&
echo 1234abcd >empty/.git/refs/heads/main &&
test_must_fail git -C empty log 2>stderr &&
test_i18ngrep broken stderr
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4202-log/empty/.git/
fatal: your current branch appears to be broken
ok 132 - log diagnoses bogus HEAD hash
expecting success of 4202.133 'log diagnoses bogus HEAD symref':
git init empty &&
echo "ref: refs/heads/invalid.lock" > empty/.git/HEAD &&
test_must_fail git -C empty log 2>stderr &&
test_i18ngrep broken stderr &&
test_must_fail git -C empty log --default totally-bogus 2>stderr &&
test_i18ngrep broken stderr
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4202-log/empty/.git/
fatal: your current branch appears to be broken
fatal: your current branch appears to be broken
ok 133 - log diagnoses bogus HEAD symref
expecting success of 4202.134 'log does not default to HEAD when rev input is given':
git log --branches=does-not-exist >actual &&
test_must_be_empty actual
ok 134 - log does not default to HEAD when rev input is given
expecting success of 4202.135 'do not default to HEAD with ignored object on cmdline':
git log --ignore-missing $ZERO_OID >actual &&
test_must_be_empty actual
ok 135 - do not default to HEAD with ignored object on cmdline
expecting success of 4202.136 'do not default to HEAD with ignored object on stdin':
echo $ZERO_OID | git log --ignore-missing --stdin >actual &&
test_must_be_empty actual
ok 136 - do not default to HEAD with ignored object on stdin
expecting success of 4202.137 'set up --source tests':
git checkout --orphan source-a &&
test_commit one &&
test_commit two &&
git checkout -b source-b HEAD^ &&
test_commit three
Switched to a new branch 'source-a'
[source-a (root-commit) 1ac6c77] one
Author: A U Thor <author@example.com>
11 files changed, 11 insertions(+)
create mode 100644 1
create mode 100644 2
create mode 100644 ein
create mode 100644 ichi
create mode 100644 octopus-a.t
create mode 100644 octopus-b.t
create mode 100644 one
create mode 100644 one.t
create mode 100644 reach.t
create mode 100644 seventh.t
create mode 100644 tangle-a
[source-a 8e393e1] two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 two.t
Switched to a new branch 'source-b'
[source-b 09e12a9] three
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 three.t
ok 137 - set up --source tests
expecting success of 4202.138 'log --source paints branch names':
cat >expect <<-EOF &&
$(git rev-parse --short :/three) source-b three
$(git rev-parse --short :/two ) source-a two
$(git rev-parse --short :/one ) source-b one
EOF
git log --oneline --source source-a source-b >actual &&
test_cmp expect actual
ok 138 - log --source paints branch names
expecting success of 4202.139 'log --source paints tag names':
git tag -m tagged source-tag &&
cat >expect <<-EOF &&
$(git rev-parse --short :/three) source-tag three
$(git rev-parse --short :/two ) source-a two
$(git rev-parse --short :/one ) source-tag one
EOF
git log --oneline --source source-tag source-a >actual &&
test_cmp expect actual
ok 139 - log --source paints tag names
expecting success of 4202.140 'log --source paints symmetric ranges':
cat >expect <<-EOF &&
$(git rev-parse --short :/three) source-b three
$(git rev-parse --short :/two ) source-a two
EOF
git log --oneline --source source-a...source-b >actual &&
test_cmp expect actual
ok 140 - log --source paints symmetric ranges
expecting success of 4202.141 '--exclude-promisor-objects does not BUG-crash':
test_must_fail git log --exclude-promisor-objects source-a
fatal: unrecognized argument: --exclude-promisor-objects
ok 141 - --exclude-promisor-objects does not BUG-crash
expecting success of 4202.142 'log --decorate includes all levels of tag annotated tags':
git checkout -b branch &&
git commit --allow-empty -m "new commit" &&
git tag lightweight HEAD &&
git tag -m annotated annotated HEAD &&
git tag -m double-0 double-0 HEAD &&
git tag -m double-1 double-1 double-0 &&
cat >expect <<-\EOF &&
HEAD -> branch, tag: lightweight, tag: double-1, tag: double-0, tag: annotated
EOF
git log -1 --format="%D" >actual &&
test_cmp expect actual
Switched to a new branch 'branch'
[branch 30063b0] new commit
Author: A U Thor <author@example.com>
hint: You have created a nested tag. The object referred to by your new tag is
hint: already a tag. If you meant to tag the object that it points to, use:
hint:
hint: git tag -f double-1 double-0^{}
hint: Disable this message with "git config advice.nestedTag false"
ok 142 - log --decorate includes all levels of tag annotated tags
expecting success of 4202.143 'log --decorate does not include things outside filter':
reflist="refs/prefetch refs/rebase-merge refs/bundle" &&
for ref in $reflist
do
git update-ref $ref/fake HEAD || return 1
done &&
git log --decorate=full --oneline >actual &&
# None of the refs are visible:
! grep /fake actual
ok 143 - log --decorate does not include things outside filter
expecting success of 4202.144 'log --end-of-options':
git update-ref refs/heads/--source HEAD &&
git log --end-of-options --source >actual &&
git log >expect &&
test_cmp expect actual
ok 144 - log --end-of-options
expecting success of 4202.145 'set up commits with different authors':
git checkout --orphan authors &&
test_commit --author "Jim <jim@example.com>" jim_1 &&
test_commit --author "Val <val@example.com>" val_1 &&
test_commit --author "Val <val@example.com>" val_2 &&
test_commit --author "Jim <jim@example.com>" jim_2 &&
test_commit --author "Val <val@example.com>" val_3 &&
test_commit --author "Jim <jim@example.com>" jim_3
Switched to a new branch 'authors'
[authors (root-commit) 26f25a8] jim_1
Author: Jim <jim@example.com>
13 files changed, 13 insertions(+)
create mode 100644 1
create mode 100644 2
create mode 100644 ein
create mode 100644 ichi
create mode 100644 jim_1.t
create mode 100644 octopus-a.t
create mode 100644 octopus-b.t
create mode 100644 one
create mode 100644 one.t
create mode 100644 reach.t
create mode 100644 seventh.t
create mode 100644 tangle-a
create mode 100644 three.t
[authors 0d05a9a] val_1
Author: Val <val@example.com>
1 file changed, 1 insertion(+)
create mode 100644 val_1.t
[authors 48bb21d] val_2
Author: Val <val@example.com>
1 file changed, 1 insertion(+)
create mode 100644 val_2.t
[authors da9c846] jim_2
Author: Jim <jim@example.com>
1 file changed, 1 insertion(+)
create mode 100644 jim_2.t
[authors 062abbf] val_3
Author: Val <val@example.com>
1 file changed, 1 insertion(+)
create mode 100644 val_3.t
[authors ef0a763] jim_3
Author: Jim <jim@example.com>
1 file changed, 1 insertion(+)
create mode 100644 jim_3.t
ok 145 - set up commits with different authors
expecting success of 4202.146 'log --invert-grep --grep --author':
cat >expect <<-\EOF &&
val_3
val_1
EOF
git log --format=%s --author=Val --grep 2 --invert-grep >actual &&
test_cmp expect actual
ok 146 - log --invert-grep --grep --author
# passed all 146 test(s)
1..146
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4209-log-pickaxe.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4209-log-pickaxe/.git/
expecting success of 4209.1 'setup':
>expect_nomatch &&
>file &&
git add file &&
test_tick &&
git commit -m initial &&
git rev-parse --verify HEAD >expect_initial &&
echo Picked >file &&
git add file &&
test_tick &&
git commit --author="Another Person <another@example.com>" -m second &&
git rev-parse --verify HEAD >expect_second
[master (root-commit) 1bd44cb] initial
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file
[master 64f6655] second
Author: Another Person <another@example.com>
1 file changed, 1 insertion(+)
ok 1 - setup
expecting success of 4209.2 'usage':
test_expect_code 129 git log -S 2>err &&
test_i18ngrep "switch.*requires a value" err &&
test_expect_code 129 git log -G 2>err &&
test_i18ngrep "switch.*requires a value" err &&
test_expect_code 128 git log -Gregex -Sstring 2>err &&
grep "cannot be used together" err &&
test_expect_code 128 git log -Gregex --find-object=HEAD 2>err &&
grep "cannot be used together" err &&
test_expect_code 128 git log -Sstring --find-object=HEAD 2>err &&
grep "cannot be used together" err &&
test_expect_code 128 git log --pickaxe-all --find-object=HEAD 2>err &&
grep "cannot be used together" err
error: switch `S' requires a value
error: switch `G' requires a value
fatal: options '-G', '-S', and '--find-object' cannot be used together
fatal: options '-G', '-S', and '--find-object' cannot be used together
fatal: options '-G', '-S', and '--find-object' cannot be used together
fatal: options '--pickaxe-all' and '--find-object' cannot be used together, use '--pickaxe-all' with '-G' and '-S'
ok 2 - usage
expecting success of 4209.3 'usage: --pickaxe-regex':
test_expect_code 128 git log -Gregex --pickaxe-regex 2>err &&
grep "cannot be used together" err
fatal: options '-G' and '--pickaxe-regex' cannot be used together, use '--pickaxe-regex' with '-S'
ok 3 - usage: --pickaxe-regex
expecting success of 4209.4 'usage: --no-pickaxe-regex':
cat >expect <<-\EOF &&
fatal: unrecognized argument: --no-pickaxe-regex
EOF
test_expect_code 128 git log -Sstring --no-pickaxe-regex 2>actual &&
test_cmp expect actual &&
test_expect_code 128 git log -Gstring --no-pickaxe-regex 2>err &&
test_cmp expect actual
ok 4 - usage: --no-pickaxe-regex
expecting success of 4209.5 'log --grep (match)':
git log --grep=initial --format=%H >actual &&
test_cmp expect_initial actual
ok 5 - log --grep (match)
expecting success of 4209.6 'log --grep (nomatch)':
git log --grep=InItial --format=%H >actual &&
test_cmp expect_nomatch actual
ok 6 - log --grep (nomatch)
expecting success of 4209.7 'log --grep --regexp-ignore-case (match)':
git log --regexp-ignore-case --grep=InItial --format=%H >actual &&
test_cmp expect_initial actual
ok 7 - log --grep --regexp-ignore-case (match)
expecting success of 4209.8 'log --grep -i (match)':
git log -i --grep=InItial --format=%H >actual &&
test_cmp expect_initial actual
ok 8 - log --grep -i (match)
expecting success of 4209.9 'log --grep --regexp-ignore-case (nomatch)':
git log --regexp-ignore-case --grep=initail --format=%H >actual &&
test_cmp expect_nomatch actual
ok 9 - log --grep --regexp-ignore-case (nomatch)
expecting success of 4209.10 'log --grep -i (nomatch)':
git log -i --grep=initail --format=%H >actual &&
test_cmp expect_nomatch actual
ok 10 - log --grep -i (nomatch)
expecting success of 4209.11 'log --author (match)':
git log --author=Person --format=%H >actual &&
test_cmp expect_second actual
ok 11 - log --author (match)
expecting success of 4209.12 'log --author (nomatch)':
git log --author=person --format=%H >actual &&
test_cmp expect_nomatch actual
ok 12 - log --author (nomatch)
expecting success of 4209.13 'log --author --regexp-ignore-case (match)':
git log --regexp-ignore-case --author=person --format=%H >actual &&
test_cmp expect_second actual
ok 13 - log --author --regexp-ignore-case (match)
expecting success of 4209.14 'log --author -i (match)':
git log -i --author=person --format=%H >actual &&
test_cmp expect_second actual
ok 14 - log --author -i (match)
expecting success of 4209.15 'log --author --regexp-ignore-case (nomatch)':
git log --regexp-ignore-case --author=spreon --format=%H >actual &&
test_cmp expect_nomatch actual
ok 15 - log --author --regexp-ignore-case (nomatch)
expecting success of 4209.16 'log --author -i (nomatch)':
git log -i --author=spreon --format=%H >actual &&
test_cmp expect_nomatch actual
ok 16 - log --author -i (nomatch)
expecting success of 4209.17 'log -G (nomatch)':
git log -Gpicked --format=%H >actual &&
test_cmp expect_nomatch actual
ok 17 - log -G (nomatch)
expecting success of 4209.18 'log -G (match)':
git log -GPicked --format=%H >actual &&
test_cmp expect_second actual
ok 18 - log -G (match)
expecting success of 4209.19 'log -G --regexp-ignore-case (nomatch)':
git log --regexp-ignore-case -Gpickle --format=%H >actual &&
test_cmp expect_nomatch actual
ok 19 - log -G --regexp-ignore-case (nomatch)
expecting success of 4209.20 'log -G -i (nomatch)':
git log -i -Gpickle --format=%H >actual &&
test_cmp expect_nomatch actual
ok 20 - log -G -i (nomatch)
expecting success of 4209.21 'log -G --regexp-ignore-case (match)':
git log --regexp-ignore-case -Gpicked --format=%H >actual &&
test_cmp expect_second actual
ok 21 - log -G --regexp-ignore-case (match)
expecting success of 4209.22 'log -G -i (match)':
git log -i -Gpicked --format=%H >actual &&
test_cmp expect_second actual
ok 22 - log -G -i (match)
expecting success of 4209.23 'log -G --textconv (missing textconv tool)':
echo "* diff=test" >.gitattributes &&
test_must_fail git -c diff.test.textconv=missing log -Gfoo &&
rm .gitattributes
error: cannot run missing: No such file or directory
fatal: unable to read files to diff
ok 23 - log -G --textconv (missing textconv tool)
expecting success of 4209.24 'log -G --no-textconv (missing textconv tool)':
echo "* diff=test" >.gitattributes &&
git -c diff.test.textconv=missing log -Gfoo --no-textconv >actual &&
test_cmp expect_nomatch actual &&
rm .gitattributes
ok 24 - log -G --no-textconv (missing textconv tool)
expecting success of 4209.25 'log -S (nomatch)':
git log -Spicked --format=%H >actual &&
test_cmp expect_nomatch actual
ok 25 - log -S (nomatch)
expecting success of 4209.26 'log -S (match)':
git log -SPicked --format=%H >actual &&
test_cmp expect_second actual
ok 26 - log -S (match)
expecting success of 4209.27 'log -S --regexp-ignore-case (match)':
git log --regexp-ignore-case -Spicked --format=%H >actual &&
test_cmp expect_second actual
ok 27 - log -S --regexp-ignore-case (match)
expecting success of 4209.28 'log -S -i (match)':
git log -i -Spicked --format=%H >actual &&
test_cmp expect_second actual
ok 28 - log -S -i (match)
expecting success of 4209.29 'log -S --regexp-ignore-case (nomatch)':
git log --regexp-ignore-case -Spickle --format=%H >actual &&
test_cmp expect_nomatch actual
ok 29 - log -S --regexp-ignore-case (nomatch)
expecting success of 4209.30 'log -S -i (nomatch)':
git log -i -Spickle --format=%H >actual &&
test_cmp expect_nomatch actual
ok 30 - log -S -i (nomatch)
expecting success of 4209.31 'log -S --pickaxe-regex (nomatch)':
git log --pickaxe-regex -Sp.cked --format=%H >actual &&
test_cmp expect_nomatch actual
ok 31 - log -S --pickaxe-regex (nomatch)
expecting success of 4209.32 'log -S --pickaxe-regex (match)':
git log --pickaxe-regex -SP.cked --format=%H >actual &&
test_cmp expect_second actual
ok 32 - log -S --pickaxe-regex (match)
expecting success of 4209.33 'log -S --pickaxe-regex --regexp-ignore-case (match)':
git log --pickaxe-regex --regexp-ignore-case -Sp.cked --format=%H >actual &&
test_cmp expect_second actual
ok 33 - log -S --pickaxe-regex --regexp-ignore-case (match)
expecting success of 4209.34 'log -S --pickaxe-regex -i (match)':
git log --pickaxe-regex -i -Sp.cked --format=%H >actual &&
test_cmp expect_second actual
ok 34 - log -S --pickaxe-regex -i (match)
expecting success of 4209.35 'log -S --pickaxe-regex --regexp-ignore-case (nomatch)':
git log --pickaxe-regex --regexp-ignore-case -Sp.ckle --format=%H >actual &&
test_cmp expect_nomatch actual
ok 35 - log -S --pickaxe-regex --regexp-ignore-case (nomatch)
expecting success of 4209.36 'log -S --pickaxe-regex -i (nomatch)':
git log --pickaxe-regex -i -Sp.ckle --format=%H >actual &&
test_cmp expect_nomatch actual
ok 36 - log -S --pickaxe-regex -i (nomatch)
expecting success of 4209.37 'log -S --textconv (missing textconv tool)':
echo "* diff=test" >.gitattributes &&
test_must_fail git -c diff.test.textconv=missing log -Sfoo &&
rm .gitattributes
error: cannot run missing: No such file or directory
fatal: unable to read files to diff
ok 37 - log -S --textconv (missing textconv tool)
expecting success of 4209.38 'log -S --no-textconv (missing textconv tool)':
echo "* diff=test" >.gitattributes &&
git -c diff.test.textconv=missing log -Sfoo --no-textconv >actual &&
test_cmp expect_nomatch actual &&
rm .gitattributes
ok 38 - log -S --no-textconv (missing textconv tool)
expecting success of 4209.39 'setup log -[GS] plain & regex':
test_create_repo GS-plain &&
test_commit -C GS-plain --append A data.txt "a" &&
test_commit -C GS-plain --append B data.txt "a a" &&
test_commit -C GS-plain --append C data.txt "b" &&
test_commit -C GS-plain --append D data.txt "[b]" &&
test_commit -C GS-plain E data.txt "" &&
# We also include E, the deletion commit
git -C GS-plain log --grep="[ABE]" >A-to-B-then-E-log &&
git -C GS-plain log --grep="[CDE]" >C-to-D-then-E-log &&
git -C GS-plain log --grep="[DE]" >D-then-E-log &&
git -C GS-plain log >full-log
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4209-log-pickaxe/GS-plain/.git/
[master (root-commit) 39fb857] A
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 data.txt
[master 50c3229] B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[master 70aa019] C
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[master 3f7d046] D
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[master 4fd79ea] E
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 4 deletions(-)
ok 39 - setup log -[GS] plain & regex
expecting success of 4209.40 'log -G trims diff new/old [-+]':
git -C GS-plain log -G"[+-]a" >log &&
test_must_be_empty log &&
git -C GS-plain log -G"^a" >log &&
test_cmp log A-to-B-then-E-log
ok 40 - log -G trims diff new/old [-+]
expecting success of 4209.41 'log -S<pat> is not a regex, but -S<pat> --pickaxe-regex is':
git -C GS-plain log -S"a" >log &&
test_cmp log A-to-B-then-E-log &&
git -C GS-plain log -S"[a]" >log &&
test_must_be_empty log &&
git -C GS-plain log -S"[a]" --pickaxe-regex >log &&
test_cmp log A-to-B-then-E-log &&
git -C GS-plain log -S"[b]" >log &&
test_cmp log D-then-E-log &&
git -C GS-plain log -S"[b]" --pickaxe-regex >log &&
test_cmp log C-to-D-then-E-log
ok 41 - log -S<pat> is not a regex, but -S<pat> --pickaxe-regex is
expecting success of 4209.42 'setup log -[GS] binary & --text':
test_create_repo GS-bin-txt &&
test_commit -C GS-bin-txt --printf A data.bin "a\na\0a\n" &&
test_commit -C GS-bin-txt --append --printf B data.bin "a\na\0a\n" &&
test_commit -C GS-bin-txt C data.bin "" &&
git -C GS-bin-txt log >full-log
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4209-log-pickaxe/GS-bin-txt/.git/
[master (root-commit) 988beca] A
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 data.bin
[master 22cac2b] B
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
[master 578ec9f] C
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
ok 42 - setup log -[GS] binary & --text
expecting success of 4209.43 'log -G ignores binary files':
git -C GS-bin-txt log -Ga >log &&
test_must_be_empty log
ok 43 - log -G ignores binary files
expecting success of 4209.44 'log -G looks into binary files with -a':
git -C GS-bin-txt log -a -Ga >log &&
test_cmp log full-log
ok 44 - log -G looks into binary files with -a
expecting success of 4209.45 'log -G looks into binary files with textconv filter':
test_when_finished "rm GS-bin-txt/.gitattributes" &&
(
cd GS-bin-txt &&
echo "* diff=bin" >.gitattributes &&
git -c diff.bin.textconv=cat log -Ga >../log
) &&
test_cmp log full-log
ok 45 - log -G looks into binary files with textconv filter
expecting success of 4209.46 'log -S looks into binary files':
git -C GS-bin-txt log -Sa >log &&
test_cmp log full-log
ok 46 - log -S looks into binary files
expecting success of 4209.47 'log -S --pickaxe-regex looks into binary files':
git -C GS-bin-txt log --pickaxe-regex -Sa >log &&
test_cmp log full-log &&
git -C GS-bin-txt log --pickaxe-regex -S"[a]" >log &&
test_cmp log full-log
ok 47 - log -S --pickaxe-regex looks into binary files
# passed all 47 test(s)
1..47
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4211-line-log.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4211-line-log/.git/
expecting success of 4211.1 'setup (import history)':
git fast-import < "$TEST_DIRECTORY"/t4211/history.export &&
git reset --hard
fast-import statistics:
---------------------------------------------------------------------
Alloc'd objects: 5000
Total objects: 35 ( 0 duplicates )
blobs : 11 ( 0 duplicates 10 deltas of 10 attempts)
trees : 12 ( 0 duplicates 0 deltas of 11 attempts)
commits: 12 ( 0 duplicates 0 deltas of 0 attempts)
tags : 0 ( 0 duplicates 0 deltas of 0 attempts)
Total branches: 4 ( 4 loads )
marks: 1024 ( 23 unique )
atoms: 2
Memory total: 2446 KiB
pools: 2133 KiB
objects: 312 KiB
---------------------------------------------------------------------
pack_report: getpagesize() = 4096
pack_report: core.packedGitWindowSize = 33554432
pack_report: core.packedGitLimit = 268435456
pack_report: pack_used_ctr = 7
pack_report: pack_mmap_calls = 4
pack_report: pack_open_windows = 0 / 1
pack_report: pack_mapped = 0 / 3020
---------------------------------------------------------------------
HEAD is now at 0d8dcfc move within the file
ok 1 - setup (import history)
expecting success of 4211.2 'basic command line parsing':
# This may fail due to "no such path a.c in commit", or
# "-L is incompatible with pathspec", depending on the
# order the error is checked. Either is acceptable.
test_must_fail git log -L1,1:a.c -- a.c &&
# -L requires there is no pathspec
test_must_fail git log -L1,1:b.c -- b.c 2>error &&
test_i18ngrep "cannot be used with pathspec" error &&
# This would fail because --follow wants a single path, but
# we may fail due to incompatibility between -L/--follow in
# the future. Either is acceptable.
test_must_fail git log -L1,1:b.c --follow &&
test_must_fail git log --follow -L1,1:b.c &&
# This would fail because -L wants no pathspec, but
# we may fail due to incompatibility between -L/--follow in
# the future. Either is acceptable.
test_must_fail git log --follow -L1,1:b.c -- b.c
fatal: -L<range>:<file> cannot be used with pathspec
fatal: -L<range>:<file> cannot be used with pathspec
fatal: --follow requires exactly one pathspec
fatal: --follow requires exactly one pathspec
fatal: -L<range>:<file> cannot be used with pathspec
ok 2 - basic command line parsing
expecting success of 4211.3 '-L 4,12:a.c simple':
git log -L 4,12:a.c simple >actual &&
test_cmp "$TEST_DIRECTORY"/t4211/sha1/expect.simple-f actual
ok 3 - -L 4,12:a.c simple
expecting success of 4211.4 '-L 4,+9:a.c simple':
git log -L 4,+9:a.c simple >actual &&
test_cmp "$TEST_DIRECTORY"/t4211/sha1/expect.simple-f actual
ok 4 - -L 4,+9:a.c simple
expecting success of 4211.5 '-L '/long f/,/^}/:a.c' simple':
git log -L '/long f/,/^}/:a.c' simple >actual &&
test_cmp "$TEST_DIRECTORY"/t4211/sha1/expect.simple-f actual
ok 5 - -L '/long f/,/^}/:a.c' simple
expecting success of 4211.6 '-L :f:a.c simple':
git log -L :f:a.c simple >actual &&
test_cmp "$TEST_DIRECTORY"/t4211/sha1/expect.simple-f-to-main actual
ok 6 - -L :f:a.c simple
expecting success of 4211.7 '-L '/main/,/^}/:a.c' simple':
git log -L '/main/,/^}/:a.c' simple >actual &&
test_cmp "$TEST_DIRECTORY"/t4211/sha1/expect.simple-main actual
ok 7 - -L '/main/,/^}/:a.c' simple
expecting success of 4211.8 '-L :main:a.c simple':
git log -L :main:a.c simple >actual &&
test_cmp "$TEST_DIRECTORY"/t4211/sha1/expect.simple-main-to-end actual
ok 8 - -L :main:a.c simple
expecting success of 4211.9 '-L 1,+4:a.c simple':
git log -L 1,+4:a.c simple >actual &&
test_cmp "$TEST_DIRECTORY"/t4211/sha1/expect.beginning-of-file actual
ok 9 - -L 1,+4:a.c simple
expecting success of 4211.10 '-L 20:a.c simple':
git log -L 20:a.c simple >actual &&
test_cmp "$TEST_DIRECTORY"/t4211/sha1/expect.end-of-file actual
ok 10 - -L 20:a.c simple
expecting success of 4211.11 '-L '/long f/',/^}/:a.c -L /main/,/^}/:a.c simple':
git log -L '/long f/',/^}/:a.c -L /main/,/^}/:a.c simple >actual &&
test_cmp "$TEST_DIRECTORY"/t4211/sha1/expect.two-ranges actual
ok 11 - -L '/long f/',/^}/:a.c -L /main/,/^}/:a.c simple
expecting success of 4211.12 '-L 24,+1:a.c simple':
git log -L 24,+1:a.c simple >actual &&
test_cmp "$TEST_DIRECTORY"/t4211/sha1/expect.vanishes-early actual
ok 12 - -L 24,+1:a.c simple
expecting success of 4211.13 '-M -L '/long f/,/^}/:b.c' move-support':
git log -M -L '/long f/,/^}/:b.c' move-support >actual &&
test_cmp "$TEST_DIRECTORY"/t4211/sha1/expect.move-support-f actual
ok 13 - -M -L '/long f/,/^}/:b.c' move-support
expecting success of 4211.14 '-M -L ':f:b.c' parallel-change':
git log -M -L ':f:b.c' parallel-change >actual &&
test_cmp "$TEST_DIRECTORY"/t4211/sha1/expect.parallel-change-f-to-main actual
ok 14 - -M -L ':f:b.c' parallel-change
expecting success of 4211.15 '-L 4,12:a.c -L :main:a.c simple':
git log -L 4,12:a.c -L :main:a.c simple >actual &&
test_cmp "$TEST_DIRECTORY"/t4211/sha1/expect.multiple actual
ok 15 - -L 4,12:a.c -L :main:a.c simple
expecting success of 4211.16 '-L 4,18:a.c -L ^:main:a.c simple':
git log -L 4,18:a.c -L ^:main:a.c simple >actual &&
test_cmp "$TEST_DIRECTORY"/t4211/sha1/expect.multiple-overlapping actual
ok 16 - -L 4,18:a.c -L ^:main:a.c simple
expecting success of 4211.17 '-L :main:a.c -L 4,18:a.c simple':
git log -L :main:a.c -L 4,18:a.c simple >actual &&
test_cmp "$TEST_DIRECTORY"/t4211/sha1/expect.multiple-overlapping actual
ok 17 - -L :main:a.c -L 4,18:a.c simple
expecting success of 4211.18 '-L 4:a.c -L 8,12:a.c simple':
git log -L 4:a.c -L 8,12:a.c simple >actual &&
test_cmp "$TEST_DIRECTORY"/t4211/sha1/expect.multiple-superset actual
ok 18 - -L 4:a.c -L 8,12:a.c simple
expecting success of 4211.19 '-L 8,12:a.c -L 4:a.c simple':
git log -L 8,12:a.c -L 4:a.c simple >actual &&
test_cmp "$TEST_DIRECTORY"/t4211/sha1/expect.multiple-superset actual
ok 19 - -L 8,12:a.c -L 4:a.c simple
expecting success of 4211.20 'invalid args: -L':
test_must_fail git log -L 2>errors &&
test_i18ngrep 'switch.*requires a value' errors
error: switch `L' requires a value
ok 20 - invalid args: -L
expecting success of 4211.21 'invalid args: -L b.c':
test_must_fail git log -L b.c 2>errors &&
test_i18ngrep 'argument not .start,end:file' errors
fatal: -L argument not 'start,end:file' or ':funcname:file': b.c
ok 21 - invalid args: -L b.c
expecting success of 4211.22 'invalid args: -L 1:':
test_must_fail git log -L 1: 2>errors &&
test_i18ngrep 'argument not .start,end:file' errors
fatal: -L argument not 'start,end:file' or ':funcname:file': 1:
ok 22 - invalid args: -L 1:
expecting success of 4211.23 'invalid args: -L 1:nonexistent':
test_must_fail git log -L 1:nonexistent 2>errors &&
test_i18ngrep 'There is no path' errors
fatal: There is no path nonexistent in the commit
ok 23 - invalid args: -L 1:nonexistent
expecting success of 4211.24 'invalid args: -L 1:simple':
test_must_fail git log -L 1:simple 2>errors &&
test_i18ngrep 'There is no path' errors
fatal: There is no path simple in the commit
ok 24 - invalid args: -L 1:simple
expecting success of 4211.25 'invalid args: -L '/foo:b.c'':
test_must_fail git log -L '/foo:b.c' 2>errors &&
test_i18ngrep 'argument not .start,end:file' errors
fatal: -L argument not 'start,end:file' or ':funcname:file': /foo:b.c
ok 25 - invalid args: -L '/foo:b.c'
expecting success of 4211.26 'invalid args: -L 1000:b.c':
test_must_fail git log -L 1000:b.c 2>errors &&
test_i18ngrep 'has only.*lines' errors
fatal: file b.c has only 26 lines
ok 26 - invalid args: -L 1000:b.c
expecting success of 4211.27 'invalid args: -L :b.c':
test_must_fail git log -L :b.c 2>errors &&
test_i18ngrep 'argument not .start,end:file' errors
fatal: -L argument not 'start,end:file' or ':funcname:file': :b.c
ok 27 - invalid args: -L :b.c
expecting success of 4211.28 'invalid args: -L :foo:b.c':
test_must_fail git log -L :foo:b.c 2>errors &&
test_i18ngrep 'no match' errors
fatal: -L parameter 'foo' starting at line 1: no match
ok 28 - invalid args: -L :foo:b.c
expecting success of 4211.29 '-L X (X == nlines)':
n=$(wc -l <b.c) &&
git log -L $n:b.c
commit 0d8dcfc6b968e06a27d5215bad1fdde3de9d6235
Author: Thomas Rast <trast@student.ethz.ch>
Date: Thu Feb 28 10:50:24 2013 +0100
move within the file
diff --git a/b.c b/b.c
--- a/b.c
+++ b/b.c
@@ -25,0 +26,1 @@
+}
ok 29 - -L X (X == nlines)
expecting success of 4211.30 '-L X (X == nlines + 1)':
n=$(expr $(wc -l <b.c) + 1) &&
test_must_fail git log -L $n:b.c
fatal: file b.c has only 26 lines
ok 30 - -L X (X == nlines + 1)
expecting success of 4211.31 '-L X (X == nlines + 2)':
n=$(expr $(wc -l <b.c) + 2) &&
test_must_fail git log -L $n:b.c
fatal: file b.c has only 26 lines
ok 31 - -L X (X == nlines + 2)
expecting success of 4211.32 '-L ,Y (Y == nlines)':
n=$(printf "%d" $(wc -l <b.c)) &&
git log -L ,$n:b.c
commit 0d8dcfc6b968e06a27d5215bad1fdde3de9d6235
Author: Thomas Rast <trast@student.ethz.ch>
Date: Thu Feb 28 10:50:24 2013 +0100
move within the file
diff --git a/b.c b/b.c
--- a/b.c
+++ b/b.c
@@ -1,24 +1,26 @@
#include <unistd.h>
#include <stdio.h>
-long f(long x)
-{
- int s = 0;
- while (x) {
- x /= 2;
- s++;
- }
- return s;
-}
+long f(long x);
/*
* This is only an example!
*/
int main ()
{
printf("%ld\n", f(15));
return 0;
}
/* incomplete lines are bad! */
+
+long f(long x)
+{
+ int s = 0;
+ while (x) {
+ x /= 2;
+ s++;
+ }
+ return s;
+}
commit 6ce3c4ff690136099bb17e1a8766b75764726ea7
Author: Thomas Rast <trast@student.ethz.ch>
Date: Thu Feb 28 10:49:50 2013 +0100
another simple change
diff --git a/b.c b/b.c
--- a/b.c
+++ b/b.c
@@ -1,24 +1,24 @@
#include <unistd.h>
#include <stdio.h>
long f(long x)
{
int s = 0;
while (x) {
- x >>= 1;
+ x /= 2;
s++;
}
return s;
}
/*
* This is only an example!
*/
int main ()
{
printf("%ld\n", f(15));
return 0;
}
/* incomplete lines are bad! */
commit 4659538844daa2849b1a9e7d6fadb96fcd26fc83
Author: Thomas Rast <trast@student.ethz.ch>
Date: Thu Feb 28 10:48:43 2013 +0100
change back to complete line
diff --git a/a.c b/a.c
--- a/a.c
+++ b/a.c
@@ -1,22 +1,24 @@
#include <unistd.h>
#include <stdio.h>
long f(long x)
{
int s = 0;
while (x) {
x >>= 1;
s++;
}
return s;
}
/*
* This is only an example!
*/
int main ()
{
printf("%ld\n", f(15));
return 0;
-}
\ No newline at end of file
+}
+
+/* incomplete lines are bad! */
commit 100b61a6f2f720f812620a9d10afb3a960ccb73c
Author: Thomas Rast <trast@student.ethz.ch>
Date: Thu Feb 28 10:48:10 2013 +0100
change to an incomplete line at end
diff --git a/a.c b/a.c
--- a/a.c
+++ b/a.c
@@ -1,22 +1,22 @@
#include <unistd.h>
#include <stdio.h>
long f(long x)
{
int s = 0;
while (x) {
x >>= 1;
s++;
}
return s;
}
/*
* This is only an example!
*/
int main ()
{
printf("%ld\n", f(15));
return 0;
-}
+}
\ No newline at end of file
commit 4a23ae5c98d59a58c6da036156959f2dc9f472ad
Author: Thomas Rast <trast@student.ethz.ch>
Date: Thu Feb 28 10:47:40 2013 +0100
change at very beginning
diff --git a/a.c b/a.c
--- a/a.c
+++ b/a.c
@@ -1,21 +1,22 @@
+#include <unistd.h>
#include <stdio.h>
long f(long x)
{
int s = 0;
while (x) {
x >>= 1;
s++;
}
return s;
}
/*
* This is only an example!
*/
int main ()
{
printf("%ld\n", f(15));
return 0;
}
commit 39b6eb2d5b706d3322184a169f666f25ed3fbd00
Author: Thomas Rast <trast@student.ethz.ch>
Date: Thu Feb 28 10:45:41 2013 +0100
touch comment
diff --git a/a.c b/a.c
--- a/a.c
+++ b/a.c
@@ -1,21 +1,21 @@
#include <stdio.h>
long f(long x)
{
int s = 0;
while (x) {
x >>= 1;
s++;
}
return s;
}
/*
- * A comment.
+ * This is only an example!
*/
int main ()
{
printf("%ld\n", f(15));
return 0;
}
commit a6eb82647d5d67f893da442f8f9375fd89a3b1e2
Author: Thomas Rast <trast@student.ethz.ch>
Date: Thu Feb 28 10:45:16 2013 +0100
touch both functions
diff --git a/a.c b/a.c
--- a/a.c
+++ b/a.c
@@ -1,21 +1,21 @@
#include <stdio.h>
-int f(int x)
+long f(long x)
{
int s = 0;
while (x) {
x >>= 1;
s++;
}
return s;
}
/*
* A comment.
*/
int main ()
{
- printf("%d\n", f(15));
+ printf("%ld\n", f(15));
return 0;
}
commit f04fb20f2c77850996cba739709acc6faecc58f7
Author: Thomas Rast <trast@student.ethz.ch>
Date: Thu Feb 28 10:44:55 2013 +0100
change f()
diff --git a/a.c b/a.c
--- a/a.c
+++ b/a.c
@@ -1,20 +1,21 @@
#include <stdio.h>
int f(int x)
{
int s = 0;
while (x) {
x >>= 1;
s++;
}
+ return s;
}
/*
* A comment.
*/
int main ()
{
printf("%d\n", f(15));
return 0;
}
commit de4c48ae814792c02a49c4c3c0c757ae69c55f6a
Author: Thomas Rast <trast@student.ethz.ch>
Date: Thu Feb 28 10:44:48 2013 +0100
initial
diff --git a/a.c b/a.c
--- /dev/null
+++ b/a.c
@@ -0,0 +1,20 @@
+#include <stdio.h>
+
+int f(int x)
+{
+ int s = 0;
+ while (x) {
+ x >>= 1;
+ s++;
+ }
+}
+
+/*
+ * A comment.
+ */
+
+int main ()
+{
+ printf("%d\n", f(15));
+ return 0;
+}
ok 32 - -L ,Y (Y == nlines)
expecting success of 4211.33 '-L ,Y (Y == nlines + 1)':
n=$(expr $(wc -l <b.c) + 1) &&
git log -L ,$n:b.c
commit 0d8dcfc6b968e06a27d5215bad1fdde3de9d6235
Author: Thomas Rast <trast@student.ethz.ch>
Date: Thu Feb 28 10:50:24 2013 +0100
move within the file
diff --git a/b.c b/b.c
--- a/b.c
+++ b/b.c
@@ -1,24 +1,26 @@
#include <unistd.h>
#include <stdio.h>
-long f(long x)
-{
- int s = 0;
- while (x) {
- x /= 2;
- s++;
- }
- return s;
-}
+long f(long x);
/*
* This is only an example!
*/
int main ()
{
printf("%ld\n", f(15));
return 0;
}
/* incomplete lines are bad! */
+
+long f(long x)
+{
+ int s = 0;
+ while (x) {
+ x /= 2;
+ s++;
+ }
+ return s;
+}
commit 6ce3c4ff690136099bb17e1a8766b75764726ea7
Author: Thomas Rast <trast@student.ethz.ch>
Date: Thu Feb 28 10:49:50 2013 +0100
another simple change
diff --git a/b.c b/b.c
--- a/b.c
+++ b/b.c
@@ -1,24 +1,24 @@
#include <unistd.h>
#include <stdio.h>
long f(long x)
{
int s = 0;
while (x) {
- x >>= 1;
+ x /= 2;
s++;
}
return s;
}
/*
* This is only an example!
*/
int main ()
{
printf("%ld\n", f(15));
return 0;
}
/* incomplete lines are bad! */
commit 4659538844daa2849b1a9e7d6fadb96fcd26fc83
Author: Thomas Rast <trast@student.ethz.ch>
Date: Thu Feb 28 10:48:43 2013 +0100
change back to complete line
diff --git a/a.c b/a.c
--- a/a.c
+++ b/a.c
@@ -1,22 +1,24 @@
#include <unistd.h>
#include <stdio.h>
long f(long x)
{
int s = 0;
while (x) {
x >>= 1;
s++;
}
return s;
}
/*
* This is only an example!
*/
int main ()
{
printf("%ld\n", f(15));
return 0;
-}
\ No newline at end of file
+}
+
+/* incomplete lines are bad! */
commit 100b61a6f2f720f812620a9d10afb3a960ccb73c
Author: Thomas Rast <trast@student.ethz.ch>
Date: Thu Feb 28 10:48:10 2013 +0100
change to an incomplete line at end
diff --git a/a.c b/a.c
--- a/a.c
+++ b/a.c
@@ -1,22 +1,22 @@
#include <unistd.h>
#include <stdio.h>
long f(long x)
{
int s = 0;
while (x) {
x >>= 1;
s++;
}
return s;
}
/*
* This is only an example!
*/
int main ()
{
printf("%ld\n", f(15));
return 0;
-}
+}
\ No newline at end of file
commit 4a23ae5c98d59a58c6da036156959f2dc9f472ad
Author: Thomas Rast <trast@student.ethz.ch>
Date: Thu Feb 28 10:47:40 2013 +0100
change at very beginning
diff --git a/a.c b/a.c
--- a/a.c
+++ b/a.c
@@ -1,21 +1,22 @@
+#include <unistd.h>
#include <stdio.h>
long f(long x)
{
int s = 0;
while (x) {
x >>= 1;
s++;
}
return s;
}
/*
* This is only an example!
*/
int main ()
{
printf("%ld\n", f(15));
return 0;
}
commit 39b6eb2d5b706d3322184a169f666f25ed3fbd00
Author: Thomas Rast <trast@student.ethz.ch>
Date: Thu Feb 28 10:45:41 2013 +0100
touch comment
diff --git a/a.c b/a.c
--- a/a.c
+++ b/a.c
@@ -1,21 +1,21 @@
#include <stdio.h>
long f(long x)
{
int s = 0;
while (x) {
x >>= 1;
s++;
}
return s;
}
/*
- * A comment.
+ * This is only an example!
*/
int main ()
{
printf("%ld\n", f(15));
return 0;
}
commit a6eb82647d5d67f893da442f8f9375fd89a3b1e2
Author: Thomas Rast <trast@student.ethz.ch>
Date: Thu Feb 28 10:45:16 2013 +0100
touch both functions
diff --git a/a.c b/a.c
--- a/a.c
+++ b/a.c
@@ -1,21 +1,21 @@
#include <stdio.h>
-int f(int x)
+long f(long x)
{
int s = 0;
while (x) {
x >>= 1;
s++;
}
return s;
}
/*
* A comment.
*/
int main ()
{
- printf("%d\n", f(15));
+ printf("%ld\n", f(15));
return 0;
}
commit f04fb20f2c77850996cba739709acc6faecc58f7
Author: Thomas Rast <trast@student.ethz.ch>
Date: Thu Feb 28 10:44:55 2013 +0100
change f()
diff --git a/a.c b/a.c
--- a/a.c
+++ b/a.c
@@ -1,20 +1,21 @@
#include <stdio.h>
int f(int x)
{
int s = 0;
while (x) {
x >>= 1;
s++;
}
+ return s;
}
/*
* A comment.
*/
int main ()
{
printf("%d\n", f(15));
return 0;
}
commit de4c48ae814792c02a49c4c3c0c757ae69c55f6a
Author: Thomas Rast <trast@student.ethz.ch>
Date: Thu Feb 28 10:44:48 2013 +0100
initial
diff --git a/a.c b/a.c
--- /dev/null
+++ b/a.c
@@ -0,0 +1,20 @@
+#include <stdio.h>
+
+int f(int x)
+{
+ int s = 0;
+ while (x) {
+ x >>= 1;
+ s++;
+ }
+}
+
+/*
+ * A comment.
+ */
+
+int main ()
+{
+ printf("%d\n", f(15));
+ return 0;
+}
ok 33 - -L ,Y (Y == nlines + 1)
expecting success of 4211.34 '-L ,Y (Y == nlines + 2)':
n=$(expr $(wc -l <b.c) + 2) &&
git log -L ,$n:b.c
commit 0d8dcfc6b968e06a27d5215bad1fdde3de9d6235
Author: Thomas Rast <trast@student.ethz.ch>
Date: Thu Feb 28 10:50:24 2013 +0100
move within the file
diff --git a/b.c b/b.c
--- a/b.c
+++ b/b.c
@@ -1,24 +1,26 @@
#include <unistd.h>
#include <stdio.h>
-long f(long x)
-{
- int s = 0;
- while (x) {
- x /= 2;
- s++;
- }
- return s;
-}
+long f(long x);
/*
* This is only an example!
*/
int main ()
{
printf("%ld\n", f(15));
return 0;
}
/* incomplete lines are bad! */
+
+long f(long x)
+{
+ int s = 0;
+ while (x) {
+ x /= 2;
+ s++;
+ }
+ return s;
+}
commit 6ce3c4ff690136099bb17e1a8766b75764726ea7
Author: Thomas Rast <trast@student.ethz.ch>
Date: Thu Feb 28 10:49:50 2013 +0100
another simple change
diff --git a/b.c b/b.c
--- a/b.c
+++ b/b.c
@@ -1,24 +1,24 @@
#include <unistd.h>
#include <stdio.h>
long f(long x)
{
int s = 0;
while (x) {
- x >>= 1;
+ x /= 2;
s++;
}
return s;
}
/*
* This is only an example!
*/
int main ()
{
printf("%ld\n", f(15));
return 0;
}
/* incomplete lines are bad! */
commit 4659538844daa2849b1a9e7d6fadb96fcd26fc83
Author: Thomas Rast <trast@student.ethz.ch>
Date: Thu Feb 28 10:48:43 2013 +0100
change back to complete line
diff --git a/a.c b/a.c
--- a/a.c
+++ b/a.c
@@ -1,22 +1,24 @@
#include <unistd.h>
#include <stdio.h>
long f(long x)
{
int s = 0;
while (x) {
x >>= 1;
s++;
}
return s;
}
/*
* This is only an example!
*/
int main ()
{
printf("%ld\n", f(15));
return 0;
-}
\ No newline at end of file
+}
+
+/* incomplete lines are bad! */
commit 100b61a6f2f720f812620a9d10afb3a960ccb73c
Author: Thomas Rast <trast@student.ethz.ch>
Date: Thu Feb 28 10:48:10 2013 +0100
change to an incomplete line at end
diff --git a/a.c b/a.c
--- a/a.c
+++ b/a.c
@@ -1,22 +1,22 @@
#include <unistd.h>
#include <stdio.h>
long f(long x)
{
int s = 0;
while (x) {
x >>= 1;
s++;
}
return s;
}
/*
* This is only an example!
*/
int main ()
{
printf("%ld\n", f(15));
return 0;
-}
+}
\ No newline at end of file
commit 4a23ae5c98d59a58c6da036156959f2dc9f472ad
Author: Thomas Rast <trast@student.ethz.ch>
Date: Thu Feb 28 10:47:40 2013 +0100
change at very beginning
diff --git a/a.c b/a.c
--- a/a.c
+++ b/a.c
@@ -1,21 +1,22 @@
+#include <unistd.h>
#include <stdio.h>
long f(long x)
{
int s = 0;
while (x) {
x >>= 1;
s++;
}
return s;
}
/*
* This is only an example!
*/
int main ()
{
printf("%ld\n", f(15));
return 0;
}
commit 39b6eb2d5b706d3322184a169f666f25ed3fbd00
Author: Thomas Rast <trast@student.ethz.ch>
Date: Thu Feb 28 10:45:41 2013 +0100
touch comment
diff --git a/a.c b/a.c
--- a/a.c
+++ b/a.c
@@ -1,21 +1,21 @@
#include <stdio.h>
long f(long x)
{
int s = 0;
while (x) {
x >>= 1;
s++;
}
return s;
}
/*
- * A comment.
+ * This is only an example!
*/
int main ()
{
printf("%ld\n", f(15));
return 0;
}
commit a6eb82647d5d67f893da442f8f9375fd89a3b1e2
Author: Thomas Rast <trast@student.ethz.ch>
Date: Thu Feb 28 10:45:16 2013 +0100
touch both functions
diff --git a/a.c b/a.c
--- a/a.c
+++ b/a.c
@@ -1,21 +1,21 @@
#include <stdio.h>
-int f(int x)
+long f(long x)
{
int s = 0;
while (x) {
x >>= 1;
s++;
}
return s;
}
/*
* A comment.
*/
int main ()
{
- printf("%d\n", f(15));
+ printf("%ld\n", f(15));
return 0;
}
commit f04fb20f2c77850996cba739709acc6faecc58f7
Author: Thomas Rast <trast@student.ethz.ch>
Date: Thu Feb 28 10:44:55 2013 +0100
change f()
diff --git a/a.c b/a.c
--- a/a.c
+++ b/a.c
@@ -1,20 +1,21 @@
#include <stdio.h>
int f(int x)
{
int s = 0;
while (x) {
x >>= 1;
s++;
}
+ return s;
}
/*
* A comment.
*/
int main ()
{
printf("%d\n", f(15));
return 0;
}
commit de4c48ae814792c02a49c4c3c0c757ae69c55f6a
Author: Thomas Rast <trast@student.ethz.ch>
Date: Thu Feb 28 10:44:48 2013 +0100
initial
diff --git a/a.c b/a.c
--- /dev/null
+++ b/a.c
@@ -0,0 +1,20 @@
+#include <stdio.h>
+
+int f(int x)
+{
+ int s = 0;
+ while (x) {
+ x >>= 1;
+ s++;
+ }
+}
+
+/*
+ * A comment.
+ */
+
+int main ()
+{
+ printf("%d\n", f(15));
+ return 0;
+}
ok 34 - -L ,Y (Y == nlines + 2)
expecting success of 4211.35 '-L with --first-parent and a merge':
git checkout parallel-change &&
git log --first-parent -L 1,1:b.c
Switched to branch 'parallel-change'
commit 4a23ae5c98d59a58c6da036156959f2dc9f472ad
Author: Thomas Rast <trast@student.ethz.ch>
Date: Thu Feb 28 10:47:40 2013 +0100
change at very beginning
diff --git a/a.c b/a.c
--- a/a.c
+++ b/a.c
@@ -0,0 +1,1 @@
+#include <unistd.h>
ok 35 - -L with --first-parent and a merge
expecting success of 4211.36 '-L with --output':
git checkout parallel-change &&
git log --output=log -L :main:b.c >output &&
test_must_be_empty output &&
test_line_count = 70 log
Already on 'parallel-change'
ok 36 - -L with --output
expecting success of 4211.37 'range_set_union':
test_seq 500 > c.c &&
git add c.c &&
git commit -m "many lines" &&
test_seq 1000 > c.c &&
git add c.c &&
git commit -m "modify many lines" &&
git log $(for x in $(test_seq 200); do echo -L $((2*x)),+1:c.c || return 1; done)
[parallel-change d6e4eb5] many lines
Author: A U Thor <author@example.com>
1 file changed, 500 insertions(+)
create mode 100644 c.c
[parallel-change 23d0144] modify many lines
Author: A U Thor <author@example.com>
1 file changed, 500 insertions(+)
commit d6e4eb5bea25e60e2079aaeae319e9fff12659aa
Author: A U Thor <author@example.com>
Date: Fri Apr 1 13:14:15 2005 +0200
many lines
diff --git a/c.c b/c.c
--- /dev/null
+++ b/c.c
@@ -0,0 +2,1 @@
+2
ok 37 - range_set_union
expecting success of 4211.38 '-s shows only line-log commits':
git log --format="commit %s" -L1,24:b.c >expect.raw &&
grep ^commit expect.raw >expect &&
git log --format="commit %s" -L1,24:b.c -s >actual &&
test_cmp expect actual
ok 38 - -s shows only line-log commits
expecting success of 4211.39 '-p shows the default patch output':
git log -L1,24:b.c >expect &&
git log -L1,24:b.c -p >actual &&
test_cmp expect actual
ok 39 - -p shows the default patch output
expecting success of 4211.40 '--raw is forbidden':
test_must_fail git log -L1,24:b.c --raw
fatal: -L does not yet support diff formats besides -p and -s
ok 40 - --raw is forbidden
expecting success of 4211.41 'setup for checking fancy rename following':
git checkout --orphan moves-start &&
git reset --hard &&
printf "%s\n" 12 13 14 15 b c d e >file-1 &&
printf "%s\n" 22 23 24 25 B C D E >file-2 &&
git add file-1 file-2 &&
test_tick &&
git commit -m "Add file-1 and file-2" &&
oid_add_f1_f2=$(git rev-parse --short HEAD) &&
git checkout -b moves-main &&
printf "%s\n" 11 12 13 14 15 b c d e >file-1 &&
git commit -a -m "Modify file-1 on main" &&
oid_mod_f1_main=$(git rev-parse --short HEAD) &&
printf "%s\n" 21 22 23 24 25 B C D E >file-2 &&
git commit -a -m "Modify file-2 on main #1" &&
oid_mod_f2_main_1=$(git rev-parse --short HEAD) &&
git mv file-1 renamed-1 &&
git commit -m "Rename file-1 to renamed-1 on main" &&
printf "%s\n" 11 12 13 14 15 b c d e f >renamed-1 &&
git commit -a -m "Modify renamed-1 on main" &&
oid_mod_r1_main=$(git rev-parse --short HEAD) &&
printf "%s\n" 21 22 23 24 25 B C D E F >file-2 &&
git commit -a -m "Modify file-2 on main #2" &&
oid_mod_f2_main_2=$(git rev-parse --short HEAD) &&
git checkout -b moves-side moves-start &&
printf "%s\n" 12 13 14 15 16 b c d e >file-1 &&
git commit -a -m "Modify file-1 on side #1" &&
oid_mod_f1_side_1=$(git rev-parse --short HEAD) &&
printf "%s\n" 22 23 24 25 26 B C D E >file-2 &&
git commit -a -m "Modify file-2 on side" &&
oid_mod_f2_side=$(git rev-parse --short HEAD) &&
git mv file-2 renamed-2 &&
git commit -m "Rename file-2 to renamed-2 on side" &&
printf "%s\n" 12 13 14 15 16 a b c d e >file-1 &&
git commit -a -m "Modify file-1 on side #2" &&
oid_mod_f1_side_2=$(git rev-parse --short HEAD) &&
printf "%s\n" 22 23 24 25 26 A B C D E >renamed-2 &&
git commit -a -m "Modify renamed-2 on side" &&
oid_mod_r2_side=$(git rev-parse --short HEAD) &&
git checkout moves-main &&
git merge moves-side &&
oid_merge=$(git rev-parse --short HEAD)
Switched to a new branch 'moves-start'
[moves-start (root-commit) 306d665] Add file-1 and file-2
Author: A U Thor <author@example.com>
2 files changed, 16 insertions(+)
create mode 100644 file-1
create mode 100644 file-2
Switched to a new branch 'moves-main'
[moves-main d42d674] Modify file-1 on main
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[moves-main 30ac750] Modify file-2 on main #1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[moves-main 0bb858c] Rename file-1 to renamed-1 on main
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
rename file-1 => renamed-1 (100%)
[moves-main 85f9f03] Modify renamed-1 on main
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[moves-main da62335] Modify file-2 on main #2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
Switched to a new branch 'moves-side'
[moves-side aced016] Modify file-1 on side #1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[moves-side f423e86] Modify file-2 on side
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[moves-side 87b3e53] Rename file-2 to renamed-2 on side
Author: A U Thor <author@example.com>
1 file changed, 0 insertions(+), 0 deletions(-)
rename file-2 => renamed-2 (100%)
[moves-side 6073daf] Modify file-1 on side #2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[moves-side 43e9b43] Modify renamed-2 on side
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
Switched to branch 'moves-main'
Auto-merging renamed-1
Auto-merging renamed-2
Merge made by the 'ort' strategy.
renamed-1 | 2 ++
file-2 => renamed-2 | 2 ++
2 files changed, 4 insertions(+)
rename file-2 => renamed-2 (83%)
ok 41 - setup for checking fancy rename following
expecting success of 4211.42 'fancy rename following #1':
cat >expect <<-EOF &&
$oid_merge Merge branch 'moves-side' into moves-main
$oid_mod_f1_side_2 Modify file-1 on side #2
$oid_mod_f1_side_1 Modify file-1 on side #1
$oid_mod_r1_main Modify renamed-1 on main
$oid_mod_f1_main Modify file-1 on main
$oid_add_f1_f2 Add file-1 and file-2
EOF
git log -L1:renamed-1 --oneline --no-patch >actual &&
test_cmp expect actual
ok 42 - fancy rename following #1
expecting success of 4211.43 'fancy rename following #2':
cat >expect <<-EOF &&
$oid_merge Merge branch 'moves-side' into moves-main
$oid_mod_r2_side Modify renamed-2 on side
$oid_mod_f2_side Modify file-2 on side
$oid_mod_f2_main_2 Modify file-2 on main #2
$oid_mod_f2_main_1 Modify file-2 on main #1
$oid_add_f1_f2 Add file-1 and file-2
EOF
git log -L1:renamed-2 --oneline --no-patch >actual &&
test_cmp expect actual
ok 43 - fancy rename following #2
expecting success of 4211.44 'setup for checking line-log and parent oids':
git checkout --orphan parent-oids &&
git reset --hard &&
cat >file.c <<-\EOF &&
int func1()
{
return F1;
}
int func2()
{
return F2;
}
EOF
git add file.c &&
test_tick &&
first_tick=$test_tick &&
git commit -m "Add func1() and func2() in file.c" &&
echo 1 >other-file &&
git add other-file &&
test_tick &&
git commit -m "Add other-file" &&
sed -e "s/F1/F1 + 1/" file.c >tmp &&
mv tmp file.c &&
git commit -a -m "Modify func1() in file.c" &&
echo 2 >other-file &&
git commit -a -m "Modify other-file" &&
sed -e "s/F2/F2 + 2/" file.c >tmp &&
mv tmp file.c &&
git commit -a -m "Modify func2() in file.c" &&
head_oid=$(git rev-parse --short HEAD) &&
prev_oid=$(git rev-parse --short HEAD^) &&
root_oid=$(git rev-parse --short HEAD~4)
Switched to a new branch 'parent-oids'
[parent-oids (root-commit) df67db9] Add func1() and func2() in file.c
Author: A U Thor <author@example.com>
1 file changed, 9 insertions(+)
create mode 100644 file.c
[parent-oids ee91250] Add other-file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 other-file
[parent-oids 431262f] Modify func1() in file.c
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[parent-oids e3bd121] Modify other-file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
[parent-oids 0202e75] Modify func2() in file.c
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 44 - setup for checking line-log and parent oids
expecting success of 4211.45 'parent oids without parent rewriting':
cat >expect <<-EOF &&
$head_oid $prev_oid Modify func2() in file.c
$root_oid Add func1() and func2() in file.c
EOF
git log --format="%h %p %s" --no-patch -L:func2:file.c >actual &&
test_cmp expect actual
ok 45 - parent oids without parent rewriting
expecting success of 4211.46 'parent oids with parent rewriting':
cat >expect <<-EOF &&
$head_oid $root_oid Modify func2() in file.c
$root_oid Add func1() and func2() in file.c
EOF
git log --format="%h %p %s" --no-patch -L:func2:file.c --parents >actual &&
test_cmp expect actual
ok 46 - parent oids with parent rewriting
expecting success of 4211.47 'line-log with --before':
echo $root_oid >expect &&
git log --format=%h --no-patch -L:func2:file.c --before=$first_tick >actual &&
test_cmp expect actual
ok 47 - line-log with --before
expecting success of 4211.48 'setup tests for zero-width regular expressions':
cat >expect <<-EOF
Modify func1() in file.c
Add func1() and func2() in file.c
EOF
ok 48 - setup tests for zero-width regular expressions
expecting success of 4211.49 'zero-width regex $ matches any function name':
git log --format="%s" --no-patch "-L:$:file.c" >actual &&
test_cmp expect actual
ok 49 - zero-width regex $ matches any function name
expecting success of 4211.50 'zero-width regex ^ matches any function name':
git log --format="%s" --no-patch "-L:^:file.c" >actual &&
test_cmp expect actual
ok 50 - zero-width regex ^ matches any function name
expecting success of 4211.51 'zero-width regex .* matches any function name':
git log --format="%s" --no-patch "-L:.*:file.c" >actual &&
test_cmp expect actual
ok 51 - zero-width regex .* matches any function name
# passed all 51 test(s)
1..51
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4214-log-graph-octopus.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4214-log-graph-octopus/.git/
expecting success of 4214.1 'set up merge history':
test_commit initial &&
for i in 1 2 3 4 ; do
git checkout main -b $i || return $?
# Make tag name different from branch name, to avoid
# ambiguity error when calling checkout.
test_commit $i $i $i tag$i || return $?
done &&
git checkout 1 -b merge &&
test_merge octopus-merge 1 2 3 4 &&
test_commit after-merge &&
git checkout 1 -b L &&
test_commit left &&
git checkout 4 -b crossover &&
test_commit after-4 &&
git checkout initial -b more-L &&
test_commit after-initial
[main (root-commit) 24b24cf] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 initial.t
Switched to a new branch '1'
[1 0152a24] 1
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 1
Switched to a new branch '2'
[2 bca45ad] 2
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 2
Switched to a new branch '3'
[3 ec94035] 3
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 3
Switched to a new branch '4'
[4 132f27d] 4
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 4
Switched to a new branch 'merge'
Trying simple merge with 2
Trying simple merge with 3
Trying simple merge with 4
Merge made by the 'octopus' strategy.
2 | 1 +
3 | 1 +
4 | 1 +
3 files changed, 3 insertions(+)
create mode 100644 2
create mode 100644 3
create mode 100644 4
[merge ce2ad1c] after-merge
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 after-merge.t
Switched to a new branch 'L'
[L d607189] left
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 left.t
Switched to a new branch 'crossover'
[crossover 7a146e9] after-4
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 after-4.t
Switched to a new branch 'more-L'
[more-L a2d7eba] after-initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 after-initial.t
ok 1 - set up merge history
expecting success of 4214.2 'log --graph with tricky octopus merge, no color':
test_cmp_graph left octopus-merge <<-\EOF
* left
| *-. octopus-merge
|/|\ \
| | | * 4
| | * | 3
| | |/
| * / 2
| |/
* / 1
|/
* initial
EOF
ok 2 - log --graph with tricky octopus merge, no color
expecting success of 4214.3 'log --graph with tricky octopus merge with colors':
test_config log.graphColors red,green,yellow,blue,magenta,cyan &&
cat >expect.colors <<-\EOF &&
* left
<RED>|<RESET> *<MAGENTA>-<RESET><MAGENTA>.<RESET> octopus-merge
<RED>|<RESET><RED>/<RESET><YELLOW>|<RESET><BLUE>\<RESET> <MAGENTA>\<RESET>
<RED>|<RESET> <YELLOW>|<RESET> <BLUE>|<RESET> * 4
<RED>|<RESET> <YELLOW>|<RESET> * <MAGENTA>|<RESET> 3
<RED>|<RESET> <YELLOW>|<RESET> <MAGENTA>|<RESET><MAGENTA>/<RESET>
<RED>|<RESET> * <MAGENTA>/<RESET> 2
<RED>|<RESET> <MAGENTA>|<RESET><MAGENTA>/<RESET>
* <MAGENTA>/<RESET> 1
<MAGENTA>|<RESET><MAGENTA>/<RESET>
* initial
EOF
test_cmp_colored_graph left octopus-merge
ok 3 - log --graph with tricky octopus merge with colors
expecting success of 4214.4 'log --graph with normal octopus merge, no color':
test_cmp_graph octopus-merge <<-\EOF
*---. octopus-merge
|\ \ \
| | | * 4
| | * | 3
| | |/
| * / 2
| |/
* / 1
|/
* initial
EOF
ok 4 - log --graph with normal octopus merge, no color
expecting success of 4214.5 'log --graph with normal octopus merge with colors':
cat >expect.colors <<-\EOF &&
*<YELLOW>-<RESET><YELLOW>-<RESET><BLUE>-<RESET><BLUE>.<RESET> octopus-merge
<RED>|<RESET><GREEN>\<RESET> <YELLOW>\<RESET> <BLUE>\<RESET>
<RED>|<RESET> <GREEN>|<RESET> <YELLOW>|<RESET> * 4
<RED>|<RESET> <GREEN>|<RESET> * <BLUE>|<RESET> 3
<RED>|<RESET> <GREEN>|<RESET> <BLUE>|<RESET><BLUE>/<RESET>
<RED>|<RESET> * <BLUE>/<RESET> 2
<RED>|<RESET> <BLUE>|<RESET><BLUE>/<RESET>
* <BLUE>/<RESET> 1
<BLUE>|<RESET><BLUE>/<RESET>
* initial
EOF
test_config log.graphColors red,green,yellow,blue,magenta,cyan &&
test_cmp_colored_graph octopus-merge
ok 5 - log --graph with normal octopus merge with colors
expecting success of 4214.6 'log --graph with normal octopus merge and child, no color':
test_cmp_graph after-merge <<-\EOF
* after-merge
*---. octopus-merge
|\ \ \
| | | * 4
| | * | 3
| | |/
| * / 2
| |/
* / 1
|/
* initial
EOF
ok 6 - log --graph with normal octopus merge and child, no color
expecting success of 4214.7 'log --graph with normal octopus and child merge with colors':
cat >expect.colors <<-\EOF &&
* after-merge
*<BLUE>-<RESET><BLUE>-<RESET><MAGENTA>-<RESET><MAGENTA>.<RESET> octopus-merge
<GREEN>|<RESET><YELLOW>\<RESET> <BLUE>\<RESET> <MAGENTA>\<RESET>
<GREEN>|<RESET> <YELLOW>|<RESET> <BLUE>|<RESET> * 4
<GREEN>|<RESET> <YELLOW>|<RESET> * <MAGENTA>|<RESET> 3
<GREEN>|<RESET> <YELLOW>|<RESET> <MAGENTA>|<RESET><MAGENTA>/<RESET>
<GREEN>|<RESET> * <MAGENTA>/<RESET> 2
<GREEN>|<RESET> <MAGENTA>|<RESET><MAGENTA>/<RESET>
* <MAGENTA>/<RESET> 1
<MAGENTA>|<RESET><MAGENTA>/<RESET>
* initial
EOF
test_config log.graphColors red,green,yellow,blue,magenta,cyan &&
test_cmp_colored_graph after-merge
ok 7 - log --graph with normal octopus and child merge with colors
expecting success of 4214.8 'log --graph with tricky octopus merge and its child, no color':
test_cmp_graph left after-merge <<-\EOF
* left
| * after-merge
| *-. octopus-merge
|/|\ \
| | | * 4
| | * | 3
| | |/
| * / 2
| |/
* / 1
|/
* initial
EOF
ok 8 - log --graph with tricky octopus merge and its child, no color
expecting success of 4214.9 'log --graph with tricky octopus merge and its child with colors':
test_config log.graphColors red,green,yellow,blue,magenta,cyan &&
cat >expect.colors <<-\EOF &&
* left
<RED>|<RESET> * after-merge
<RED>|<RESET> *<CYAN>-<RESET><CYAN>.<RESET> octopus-merge
<RED>|<RESET><RED>/<RESET><BLUE>|<RESET><MAGENTA>\<RESET> <CYAN>\<RESET>
<RED>|<RESET> <BLUE>|<RESET> <MAGENTA>|<RESET> * 4
<RED>|<RESET> <BLUE>|<RESET> * <CYAN>|<RESET> 3
<RED>|<RESET> <BLUE>|<RESET> <CYAN>|<RESET><CYAN>/<RESET>
<RED>|<RESET> * <CYAN>/<RESET> 2
<RED>|<RESET> <CYAN>|<RESET><CYAN>/<RESET>
* <CYAN>/<RESET> 1
<CYAN>|<RESET><CYAN>/<RESET>
* initial
EOF
test_cmp_colored_graph left after-merge
ok 9 - log --graph with tricky octopus merge and its child with colors
expecting success of 4214.10 'log --graph with crossover in octopus merge, no color':
test_cmp_graph after-4 octopus-merge <<-\EOF
* after-4
| *---. octopus-merge
| |\ \ \
| |_|_|/
|/| | |
* | | | 4
| | | * 3
| |_|/
|/| |
| | * 2
| |/
|/|
| * 1
|/
* initial
EOF
ok 10 - log --graph with crossover in octopus merge, no color
expecting success of 4214.11 'log --graph with crossover in octopus merge with colors':
test_config log.graphColors red,green,yellow,blue,magenta,cyan &&
cat >expect.colors <<-\EOF &&
* after-4
<RED>|<RESET> *<BLUE>-<RESET><BLUE>-<RESET><RED>-<RESET><RED>.<RESET> octopus-merge
<RED>|<RESET> <GREEN>|<RESET><YELLOW>\<RESET> <BLUE>\<RESET> <RED>\<RESET>
<RED>|<RESET> <GREEN>|<RESET><RED>_<RESET><YELLOW>|<RESET><RED>_<RESET><BLUE>|<RESET><RED>/<RESET>
<RED>|<RESET><RED>/<RESET><GREEN>|<RESET> <YELLOW>|<RESET> <BLUE>|<RESET>
* <GREEN>|<RESET> <YELLOW>|<RESET> <BLUE>|<RESET> 4
<MAGENTA>|<RESET> <GREEN>|<RESET> <YELLOW>|<RESET> * 3
<MAGENTA>|<RESET> <GREEN>|<RESET><MAGENTA>_<RESET><YELLOW>|<RESET><MAGENTA>/<RESET>
<MAGENTA>|<RESET><MAGENTA>/<RESET><GREEN>|<RESET> <YELLOW>|<RESET>
<MAGENTA>|<RESET> <GREEN>|<RESET> * 2
<MAGENTA>|<RESET> <GREEN>|<RESET><MAGENTA>/<RESET>
<MAGENTA>|<RESET><MAGENTA>/<RESET><GREEN>|<RESET>
<MAGENTA>|<RESET> * 1
<MAGENTA>|<RESET><MAGENTA>/<RESET>
* initial
EOF
test_cmp_colored_graph after-4 octopus-merge
ok 11 - log --graph with crossover in octopus merge with colors
expecting success of 4214.12 'log --graph with crossover in octopus merge and its child, no color':
test_cmp_graph after-4 after-merge <<-\EOF
* after-4
| * after-merge
| *---. octopus-merge
| |\ \ \
| |_|_|/
|/| | |
* | | | 4
| | | * 3
| |_|/
|/| |
| | * 2
| |/
|/|
| * 1
|/
* initial
EOF
ok 12 - log --graph with crossover in octopus merge and its child, no color
expecting success of 4214.13 'log --graph with crossover in octopus merge and its child with colors':
test_config log.graphColors red,green,yellow,blue,magenta,cyan &&
cat >expect.colors <<-\EOF &&
* after-4
<RED>|<RESET> * after-merge
<RED>|<RESET> *<MAGENTA>-<RESET><MAGENTA>-<RESET><RED>-<RESET><RED>.<RESET> octopus-merge
<RED>|<RESET> <YELLOW>|<RESET><BLUE>\<RESET> <MAGENTA>\<RESET> <RED>\<RESET>
<RED>|<RESET> <YELLOW>|<RESET><RED>_<RESET><BLUE>|<RESET><RED>_<RESET><MAGENTA>|<RESET><RED>/<RESET>
<RED>|<RESET><RED>/<RESET><YELLOW>|<RESET> <BLUE>|<RESET> <MAGENTA>|<RESET>
* <YELLOW>|<RESET> <BLUE>|<RESET> <MAGENTA>|<RESET> 4
<CYAN>|<RESET> <YELLOW>|<RESET> <BLUE>|<RESET> * 3
<CYAN>|<RESET> <YELLOW>|<RESET><CYAN>_<RESET><BLUE>|<RESET><CYAN>/<RESET>
<CYAN>|<RESET><CYAN>/<RESET><YELLOW>|<RESET> <BLUE>|<RESET>
<CYAN>|<RESET> <YELLOW>|<RESET> * 2
<CYAN>|<RESET> <YELLOW>|<RESET><CYAN>/<RESET>
<CYAN>|<RESET><CYAN>/<RESET><YELLOW>|<RESET>
<CYAN>|<RESET> * 1
<CYAN>|<RESET><CYAN>/<RESET>
* initial
EOF
test_cmp_colored_graph after-4 after-merge
ok 13 - log --graph with crossover in octopus merge and its child with colors
expecting success of 4214.14 'log --graph with unrelated commit and octopus tip, no color':
test_cmp_graph after-initial octopus-merge <<-\EOF
* after-initial
| *---. octopus-merge
| |\ \ \
| | | | * 4
| |_|_|/
|/| | |
| | | * 3
| |_|/
|/| |
| | * 2
| |/
|/|
| * 1
|/
* initial
EOF
ok 14 - log --graph with unrelated commit and octopus tip, no color
expecting success of 4214.15 'log --graph with unrelated commit and octopus tip with colors':
test_config log.graphColors red,green,yellow,blue,magenta,cyan &&
cat >expect.colors <<-\EOF &&
* after-initial
<RED>|<RESET> *<BLUE>-<RESET><BLUE>-<RESET><MAGENTA>-<RESET><MAGENTA>.<RESET> octopus-merge
<RED>|<RESET> <GREEN>|<RESET><YELLOW>\<RESET> <BLUE>\<RESET> <MAGENTA>\<RESET>
<RED>|<RESET> <GREEN>|<RESET> <YELLOW>|<RESET> <BLUE>|<RESET> * 4
<RED>|<RESET> <GREEN>|<RESET><RED>_<RESET><YELLOW>|<RESET><RED>_<RESET><BLUE>|<RESET><RED>/<RESET>
<RED>|<RESET><RED>/<RESET><GREEN>|<RESET> <YELLOW>|<RESET> <BLUE>|<RESET>
<RED>|<RESET> <GREEN>|<RESET> <YELLOW>|<RESET> * 3
<RED>|<RESET> <GREEN>|<RESET><RED>_<RESET><YELLOW>|<RESET><RED>/<RESET>
<RED>|<RESET><RED>/<RESET><GREEN>|<RESET> <YELLOW>|<RESET>
<RED>|<RESET> <GREEN>|<RESET> * 2
<RED>|<RESET> <GREEN>|<RESET><RED>/<RESET>
<RED>|<RESET><RED>/<RESET><GREEN>|<RESET>
<RED>|<RESET> * 1
<RED>|<RESET><RED>/<RESET>
* initial
EOF
test_cmp_colored_graph after-initial octopus-merge
ok 15 - log --graph with unrelated commit and octopus tip with colors
expecting success of 4214.16 'log --graph with unrelated commit and octopus child, no color':
test_cmp_graph after-initial after-merge <<-\EOF
* after-initial
| * after-merge
| *---. octopus-merge
| |\ \ \
| | | | * 4
| |_|_|/
|/| | |
| | | * 3
| |_|/
|/| |
| | * 2
| |/
|/|
| * 1
|/
* initial
EOF
ok 16 - log --graph with unrelated commit and octopus child, no color
expecting success of 4214.17 'log --graph with unrelated commit and octopus child with colors':
test_config log.graphColors red,green,yellow,blue,magenta,cyan &&
cat >expect.colors <<-\EOF &&
* after-initial
<RED>|<RESET> * after-merge
<RED>|<RESET> *<MAGENTA>-<RESET><MAGENTA>-<RESET><CYAN>-<RESET><CYAN>.<RESET> octopus-merge
<RED>|<RESET> <YELLOW>|<RESET><BLUE>\<RESET> <MAGENTA>\<RESET> <CYAN>\<RESET>
<RED>|<RESET> <YELLOW>|<RESET> <BLUE>|<RESET> <MAGENTA>|<RESET> * 4
<RED>|<RESET> <YELLOW>|<RESET><RED>_<RESET><BLUE>|<RESET><RED>_<RESET><MAGENTA>|<RESET><RED>/<RESET>
<RED>|<RESET><RED>/<RESET><YELLOW>|<RESET> <BLUE>|<RESET> <MAGENTA>|<RESET>
<RED>|<RESET> <YELLOW>|<RESET> <BLUE>|<RESET> * 3
<RED>|<RESET> <YELLOW>|<RESET><RED>_<RESET><BLUE>|<RESET><RED>/<RESET>
<RED>|<RESET><RED>/<RESET><YELLOW>|<RESET> <BLUE>|<RESET>
<RED>|<RESET> <YELLOW>|<RESET> * 2
<RED>|<RESET> <YELLOW>|<RESET><RED>/<RESET>
<RED>|<RESET><RED>/<RESET><YELLOW>|<RESET>
<RED>|<RESET> * 1
<RED>|<RESET><RED>/<RESET>
* initial
EOF
test_cmp_colored_graph after-initial after-merge
ok 17 - log --graph with unrelated commit and octopus child with colors
# passed all 17 test(s)
1..17
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4217-log-limit.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4217-log-limit/.git/
expecting success of 4217.1 'setup test':
git init &&
echo a >file &&
git add file &&
GIT_COMMITTER_DATE="2021-02-01 00:00" git commit -m init &&
echo a >>file &&
git add file &&
GIT_COMMITTER_DATE="2022-02-01 00:00" git commit -m first &&
echo a >>file &&
git add file &&
GIT_COMMITTER_DATE="2021-03-01 00:00" git commit -m second &&
echo a >>file &&
git add file &&
GIT_COMMITTER_DATE="2022-03-01 00:00" git commit -m third
Reinitialized existing Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4217-log-limit/.git/
[master (root-commit) 0f41f9c] init
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
[master b839c03] first
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[master 5dd5cf2] second
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[master fd219fd] third
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
ok 1 - setup test
expecting success of 4217.2 'git log --since-as-filter=...':
git log --since-as-filter="2022-01-01" --format=%s >actual &&
cat >expect <<-\EOF &&
third
first
EOF
test_cmp expect actual
ok 2 - git log --since-as-filter=...
expecting success of 4217.3 'git log --children --since-as-filter=...':
git log --children --since-as-filter="2022-01-01" --format=%s >actual &&
cat >expect <<-\EOF &&
third
first
EOF
test_cmp expect actual
ok 3 - git log --children --since-as-filter=...
# passed all 3 test(s)
1..3
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4213-log-tabexpand.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4213-log-tabexpand/.git/
expecting success of 4213.1 'setup':
test_tick &&
sed -e "s/Q/$HT/g" <<-EOF >msg &&
Q$title
Q$body
EOF
git commit --allow-empty -F msg
[master (root-commit) 4243c44] tab indent at the beginning of the title line
Author: A U Thor <author@example.com>
ok 1 - setup
expecting success of 4213.2 'expand/no-expand':
count_expand $in $default $fmt &&
count_expand $in 8 0 $fmt --expand-tabs &&
count_expand $in 8 0 --expand-tabs $fmt &&
count_expand $in 8 0 $fmt --expand-tabs=8 &&
count_expand $in 8 0 --expand-tabs=8 $fmt &&
count_expand $in 0 1 $fmt --no-expand-tabs &&
count_expand $in 0 1 --no-expand-tabs $fmt &&
count_expand $in 0 1 $fmt --expand-tabs=0 &&
count_expand $in 0 1 --expand-tabs=0 $fmt &&
count_expand $in 4 0 $fmt --expand-tabs=4 &&
count_expand $in 4 0 --expand-tabs=4 $fmt
ok 2 - expand/no-expand
expecting success of 4213.3 'expand/no-expand for --pretty':
count_expand $in $default $fmt &&
count_expand $in 8 0 $fmt --expand-tabs &&
count_expand $in 8 0 --expand-tabs $fmt &&
count_expand $in 8 0 $fmt --expand-tabs=8 &&
count_expand $in 8 0 --expand-tabs=8 $fmt &&
count_expand $in 0 1 $fmt --no-expand-tabs &&
count_expand $in 0 1 --no-expand-tabs $fmt &&
count_expand $in 0 1 $fmt --expand-tabs=0 &&
count_expand $in 0 1 --expand-tabs=0 $fmt &&
count_expand $in 4 0 $fmt --expand-tabs=4 &&
count_expand $in 4 0 --expand-tabs=4 $fmt
ok 3 - expand/no-expand for --pretty
expecting success of 4213.4 'expand/no-expand for --pretty=short':
count_expand $in $default $fmt &&
count_expand $in 8 0 $fmt --expand-tabs &&
count_expand $in 8 0 --expand-tabs $fmt &&
count_expand $in 8 0 $fmt --expand-tabs=8 &&
count_expand $in 8 0 --expand-tabs=8 $fmt &&
count_expand $in 0 1 $fmt --no-expand-tabs &&
count_expand $in 0 1 --no-expand-tabs $fmt &&
count_expand $in 0 1 $fmt --expand-tabs=0 &&
count_expand $in 0 1 --expand-tabs=0 $fmt &&
count_expand $in 4 0 $fmt --expand-tabs=4 &&
count_expand $in 4 0 --expand-tabs=4 $fmt
ok 4 - expand/no-expand for --pretty=short
expecting success of 4213.5 'expand/no-expand for --pretty=medium':
count_expand $in $default $fmt &&
count_expand $in 8 0 $fmt --expand-tabs &&
count_expand $in 8 0 --expand-tabs $fmt &&
count_expand $in 8 0 $fmt --expand-tabs=8 &&
count_expand $in 8 0 --expand-tabs=8 $fmt &&
count_expand $in 0 1 $fmt --no-expand-tabs &&
count_expand $in 0 1 --no-expand-tabs $fmt &&
count_expand $in 0 1 $fmt --expand-tabs=0 &&
count_expand $in 0 1 --expand-tabs=0 $fmt &&
count_expand $in 4 0 $fmt --expand-tabs=4 &&
count_expand $in 4 0 --expand-tabs=4 $fmt
ok 5 - expand/no-expand for --pretty=medium
expecting success of 4213.6 'expand/no-expand for --pretty=full':
count_expand $in $default $fmt &&
count_expand $in 8 0 $fmt --expand-tabs &&
count_expand $in 8 0 --expand-tabs $fmt &&
count_expand $in 8 0 $fmt --expand-tabs=8 &&
count_expand $in 8 0 --expand-tabs=8 $fmt &&
count_expand $in 0 1 $fmt --no-expand-tabs &&
count_expand $in 0 1 --no-expand-tabs $fmt &&
count_expand $in 0 1 $fmt --expand-tabs=0 &&
count_expand $in 0 1 --expand-tabs=0 $fmt &&
count_expand $in 4 0 $fmt --expand-tabs=4 &&
count_expand $in 4 0 --expand-tabs=4 $fmt
ok 6 - expand/no-expand for --pretty=full
expecting success of 4213.7 'expand/no-expand for --pretty=fuller':
count_expand $in $default $fmt &&
count_expand $in 8 0 $fmt --expand-tabs &&
count_expand $in 8 0 --expand-tabs $fmt &&
count_expand $in 8 0 $fmt --expand-tabs=8 &&
count_expand $in 8 0 --expand-tabs=8 $fmt &&
count_expand $in 0 1 $fmt --no-expand-tabs &&
count_expand $in 0 1 --no-expand-tabs $fmt &&
count_expand $in 0 1 $fmt --expand-tabs=0 &&
count_expand $in 0 1 --expand-tabs=0 $fmt &&
count_expand $in 4 0 $fmt --expand-tabs=4 &&
count_expand $in 4 0 --expand-tabs=4 $fmt
ok 7 - expand/no-expand for --pretty=fuller
expecting success of 4213.8 'expand/no-expand for --pretty=raw':
count_expand $in $default $fmt &&
count_expand $in 8 0 $fmt --expand-tabs &&
count_expand $in 8 0 --expand-tabs $fmt &&
count_expand $in 8 0 $fmt --expand-tabs=8 &&
count_expand $in 8 0 --expand-tabs=8 $fmt &&
count_expand $in 0 1 $fmt --no-expand-tabs &&
count_expand $in 0 1 --no-expand-tabs $fmt &&
count_expand $in 0 1 $fmt --expand-tabs=0 &&
count_expand $in 0 1 --expand-tabs=0 $fmt &&
count_expand $in 4 0 $fmt --expand-tabs=4 &&
count_expand $in 4 0 --expand-tabs=4 $fmt
ok 8 - expand/no-expand for --pretty=raw
expecting success of 4213.9 'expand/no-expand for --pretty=email':
count_expand $in $default $fmt &&
count_expand $in 8 0 $fmt --expand-tabs &&
count_expand $in 8 0 --expand-tabs $fmt &&
count_expand $in 8 0 $fmt --expand-tabs=8 &&
count_expand $in 8 0 --expand-tabs=8 $fmt &&
count_expand $in 0 1 $fmt --no-expand-tabs &&
count_expand $in 0 1 --no-expand-tabs $fmt &&
count_expand $in 0 1 $fmt --expand-tabs=0 &&
count_expand $in 0 1 --expand-tabs=0 $fmt &&
count_expand $in 4 0 $fmt --expand-tabs=4 &&
count_expand $in 4 0 --expand-tabs=4 $fmt
ok 9 - expand/no-expand for --pretty=email
# passed all 9 test(s)
1..9
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4252-am-options.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4252-am-options/.git/
expecting success of 4252.1 'setup':
cp "$tm/file-1-0" file-1 &&
cp "$tm/file-2-0" file-2 &&
git add file-1 file-2 &&
test_tick &&
git commit -m initial &&
git tag initial
[master (root-commit) f06d5e1] initial
Author: A U Thor <author@example.com>
2 files changed, 14 insertions(+)
create mode 100644 file-1
create mode 100644 file-2
ok 1 - setup
expecting success of 4252.2 'interrupted am --whitespace=fix':
rm -rf .git/rebase-apply &&
git reset --hard initial &&
test_must_fail git am --whitespace=fix "$tm"/am-test-1-? &&
git am --skip &&
grep 3 file-1 &&
grep "^Six$" file-2
HEAD is now at f06d5e1 initial
.git/rebase-apply/patch:9: trailing whitespace.
Three
error: patch failed: file-1:1
error: file-1: patch does not apply
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Applying: Three
Patch failed at 0001 Three
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
.git/rebase-apply/patch:13: trailing whitespace.
Six
warning: 1 line applied after fixing whitespace errors.
Applying: Six
3
Six
ok 2 - interrupted am --whitespace=fix
expecting success of 4252.3 'interrupted am -C1':
rm -rf .git/rebase-apply &&
git reset --hard initial &&
test_must_fail git am -C1 "$tm"/am-test-2-? &&
git am --skip &&
grep 3 file-1 &&
grep "^Three$" file-2
HEAD is now at f06d5e1 initial
.git/rebase-apply/patch:9: trailing whitespace.
Three
error: patch failed: file-1:1
error: file-1: patch does not apply
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Applying: Three
Patch failed at 0001 Three
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
Context reduced to (1/1) to apply fragment at 2
Applying: Six
3
Three
ok 3 - interrupted am -C1
expecting success of 4252.4 'interrupted am -p2':
rm -rf .git/rebase-apply &&
git reset --hard initial &&
test_must_fail git am -p2 "$tm"/am-test-3-? &&
git am --skip &&
grep 3 file-1 &&
grep "^Three$" file-2
HEAD is now at f06d5e1 initial
.git/rebase-apply/patch:9: trailing whitespace.
Three
error: patch failed: file-1:1
error: file-1: patch does not apply
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Applying: Three
Patch failed at 0001 Three
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
Applying: Six
3
Three
ok 4 - interrupted am -p2
expecting success of 4252.5 'interrupted am -C1 -p2':
rm -rf .git/rebase-apply &&
git reset --hard initial &&
test_must_fail git am -p2 -C1 "$tm"/am-test-4-? &&
git am --skip &&
grep 3 file-1 &&
grep "^Three$" file-2
HEAD is now at f06d5e1 initial
.git/rebase-apply/patch:9: trailing whitespace.
Three
error: patch failed: file-1:1
error: file-1: patch does not apply
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Applying: Three
Patch failed at 0001 Three
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
Context reduced to (1/1) to apply fragment at 2
Applying: Six
3
Three
ok 5 - interrupted am -C1 -p2
expecting success of 4252.6 'interrupted am --directory="frotz nitfol"':
rm -rf .git/rebase-apply &&
git reset --hard initial &&
test_must_fail git am --directory="frotz nitfol" "$tm"/am-test-5-? &&
git am --skip &&
grep One "frotz nitfol/file-5"
HEAD is now at f06d5e1 initial
error: frotz nitfol/junk/file-2: does not exist in index
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Applying: Six
Patch failed at 0001 Six
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
Applying: Six
One
ok 6 - interrupted am --directory="frotz nitfol"
expecting success of 4252.7 'apply to a funny path':
with_sq="with'sq" &&
rm -fr .git/rebase-apply &&
git reset --hard initial &&
git am --directory="$with_sq" "$tm"/am-test-5-2 &&
test -f "$with_sq/file-5"
HEAD is now at f06d5e1 initial
Applying: Six
ok 7 - apply to a funny path
expecting success of 4252.8 'am --reject':
rm -rf .git/rebase-apply &&
git reset --hard initial &&
test_must_fail git am --reject "$tm"/am-test-6-1 &&
grep "@@ -1,3 +1,3 @@" file-2.rej &&
test_must_fail git diff-files --exit-code --quiet file-2 &&
grep "[-]-reject" .git/rebase-apply/apply-opt
HEAD is now at f06d5e1 initial
Checking patch file-2...
error: while searching for:
0
2
3
error: patch failed: file-2:1
Applying patch file-2 with 1 reject...
Rejected hunk #1.
Hunk #2 applied cleanly.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Applying: Huh
Patch failed at 0001 Huh
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
@@ -1,3 +1,3 @@
'--reject'
ok 8 - am --reject
# passed all 8 test(s)
1..8
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4254-am-corrupt.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4254-am-corrupt/.git/
expecting success of 4254.1 'setup':
# Note the missing "+++" line:
cat >bad-patch.diff <<-\EOF &&
From: A U Thor <au.thor@example.com>
diff --git a/f b/f
index 7898192..6178079 100644
--- a/f
@@ -1 +1 @@
-a
+b
EOF
echo a >f &&
git add f &&
test_tick &&
git commit -m initial
[master (root-commit) 07398d1] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 f
ok 1 - setup
expecting success of 4254.2 'try to apply corrupted patch':
test_when_finished "git am --abort" &&
test_must_fail git -c advice.amWorkDir=false am bad-patch.diff 2>actual &&
echo "error: git diff header lacks filename information (line 4)" >expected &&
test_path_is_file f &&
test_cmp expected actual
Applying:
Patch failed at 0001
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
ok 2 - try to apply corrupted patch
expecting success of 4254.3 'NUL in commit message's body':
test_when_finished "git am --abort" &&
make_mbox_with_nul body >body.patch &&
test_must_fail git am body.patch 2>err &&
grep "a NUL byte in commit log message not allowed" err
Applying: ÄËÑÏÖ
error: a NUL byte in commit log message not allowed.
ok 3 - NUL in commit message's body
expecting success of 4254.4 'NUL in commit message's header':
test_when_finished 'git am --abort' &&
make_mbox_with_nul subject >subject.patch &&
test_must_fail git mailinfo msg patch <subject.patch 2>err &&
grep "a NUL byte in 'Subject' is not allowed" err &&
test_must_fail git am subject.patch 2>err &&
grep "a NUL byte in 'Subject' is not allowed" err
Author: A U Thor
Email: author@example.com
Subject: ÄË
Date: Sun, 19 Apr 2020 13:42:07 +0700
error: a NUL byte in 'Subject' is not allowed.
error: a NUL byte in 'Subject' is not allowed.
ok 4 - NUL in commit message's header
# passed all 4 test(s)
1..4
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4253-am-keep-cr-dos.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4253-am-keep-cr-dos/.git/
expecting success of 4253.1 'setup repository with dos files':
append_cr <file1 >file &&
git add file &&
git commit -m Initial &&
git tag initial &&
append_cr <file2 >file &&
git commit -a -m Second &&
append_cr <file3 >file &&
git commit -a -m Third
[main (root-commit) 89cbfc3] Initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
[main e549bd7] Second
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
[main b664e0a] Third
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
ok 1 - setup repository with dos files
expecting success of 4253.2 'am with dos files without --keep-cr':
git checkout -b dosfiles initial &&
git format-patch -k initial..main &&
test_must_fail git am -k -3 000*.patch &&
git am --abort &&
rm -rf .git/rebase-apply 000*.patch
Switched to a new branch 'dosfiles'
0001-Second.patch
0002-Third.patch
Applying: Second
error: patch failed: file:1
error: file: patch does not apply
error: Did you hand edit your patch?
It does not apply to blobs recorded in its index.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Using index info to reconstruct a base tree...
Patch failed at 0001 Second
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
ok 2 - am with dos files without --keep-cr
expecting success of 4253.3 'am with dos files with --keep-cr':
git checkout -b dosfiles-keep-cr initial &&
git format-patch -k --stdout initial..main >output &&
git am --keep-cr -k -3 output &&
git diff --exit-code main
Switched to a new branch 'dosfiles-keep-cr'
warning: quoted CRLF detected
warning: quoted CRLF detected
Applying: Second
Applying: Third
ok 3 - am with dos files with --keep-cr
expecting success of 4253.4 'am with dos files config am.keepcr':
git config am.keepcr 1 &&
git checkout -b dosfiles-conf-keepcr initial &&
git format-patch -k --stdout initial..main >output &&
git am -k -3 output &&
git diff --exit-code main
Switched to a new branch 'dosfiles-conf-keepcr'
warning: quoted CRLF detected
warning: quoted CRLF detected
Applying: Second
Applying: Third
ok 4 - am with dos files config am.keepcr
expecting success of 4253.5 'am with dos files config am.keepcr overridden by --no-keep-cr':
git config am.keepcr 1 &&
git checkout -b dosfiles-conf-keepcr-override initial &&
git format-patch -k initial..main &&
test_must_fail git am -k -3 --no-keep-cr 000*.patch &&
git am --abort &&
rm -rf .git/rebase-apply 000*.patch
Switched to a new branch 'dosfiles-conf-keepcr-override'
0001-Second.patch
0002-Third.patch
Applying: Second
error: patch failed: file:1
error: file: patch does not apply
error: Did you hand edit your patch?
It does not apply to blobs recorded in its index.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Using index info to reconstruct a base tree...
Patch failed at 0001 Second
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
ok 5 - am with dos files config am.keepcr overridden by --no-keep-cr
expecting success of 4253.6 'am with dos files with --keep-cr continue':
git checkout -b dosfiles-keep-cr-continue initial &&
git format-patch -k initial..main &&
append_cr <file1a >file &&
git commit -m "different patch" file &&
test_must_fail git am --keep-cr -k -3 000*.patch &&
append_cr <file2 >file &&
git add file &&
git am -3 --resolved &&
git diff --exit-code main
Switched to a new branch 'dosfiles-keep-cr-continue'
0001-Second.patch
0002-Third.patch
[dosfiles-keep-cr-continue 236fcc7] different patch
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
warning: quoted CRLF detected
Applying: Second
Using index info to reconstruct a base tree...
M file
Falling back to patching base and 3-way merge...
Merging:
236fcc7 different patch
virtual Second
found 1 common ancestor:
virtual 0626bbef2b13f86fc002fb580ec5fac3fd75fa44
Auto-merging file
CONFLICT (content): Merge conflict in file
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 Second
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
warning: quoted CRLF detected
Applying: Second
Applying: Third
ok 6 - am with dos files with --keep-cr continue
expecting success of 4253.7 'am with unix files config am.keepcr overridden by --no-keep-cr':
git config am.keepcr 1 &&
git checkout -b unixfiles-conf-keepcr-override initial &&
cp -f file1 file &&
git commit -m "line ending to unix" file &&
git format-patch -k initial..main &&
git am -k -3 --no-keep-cr 000*.patch &&
git diff --exit-code -w main
Switched to a new branch 'unixfiles-conf-keepcr-override'
[unixfiles-conf-keepcr-override cec7866] line ending to unix
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
0001-Second.patch
0002-Third.patch
Applying: Second
Applying: Third
ok 7 - am with unix files config am.keepcr overridden by --no-keep-cr
# passed all 7 test(s)
1..7
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4256-am-format-flowed.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4256-am-format-flowed/.git/
expecting success of 4256.1 'setup':
cp "$TEST_DIRECTORY/t4256/1/mailinfo.c.orig" mailinfo.c &&
git add mailinfo.c &&
git commit -m initial
[master (root-commit) f699253] initial
Author: A U Thor <author@example.com>
1 file changed, 1185 insertions(+)
create mode 100644 mailinfo.c
ok 1 - setup
expecting success of 4256.2 'am with format=flowed':
git am <"$TEST_DIRECTORY/t4256/1/patch" 2>stderr &&
test_i18ngrep "warning: Patch sent with format=flowed" stderr &&
test_cmp "$TEST_DIRECTORY/t4256/1/mailinfo.c" mailinfo.c
Applying: mailinfo: support format=flowed
warning: Patch sent with format=flowed; space at the end of lines might be lost.
ok 2 - am with format=flowed
# passed all 2 test(s)
1..2
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4257-am-interactive.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4257-am-interactive/.git/
expecting success of 4257.1 'set up patches to apply':
test_commit unrelated &&
test_commit no-conflict &&
test_commit conflict-patch file patch &&
git format-patch --stdout -2 >mbox &&
git reset --hard unrelated &&
test_commit conflict-main file main base
[master (root-commit) 16dd07d] unrelated
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 unrelated.t
[master 7c8fce7] no-conflict
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 no-conflict.t
[master fe3fedc] conflict-patch
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
HEAD is now at 16dd07d unrelated
[master 73a3f21] conflict-main
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 file
ok 1 - set up patches to apply
expecting success of 4257.2 'applying all patches generates conflict':
test_must_fail git am mbox &&
echo resolved >file &&
git add -u &&
git am --resolved
error: file: already exists in index
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Applying: no-conflict
Applying: conflict-patch
Patch failed at 0002 conflict-patch
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
Applying: conflict-patch
ok 2 - applying all patches generates conflict
expecting success of 4257.3 'interactive am can apply a single patch':
git reset --hard base &&
# apply the first, but not the second
test_write_lines y n | git am -i mbox &&
echo no-conflict >expect &&
git log -1 --format=%s >actual &&
test_cmp expect actual
HEAD is now at 73a3f21 conflict-main
Commit Body is:
--------------------------
no-conflict
--------------------------
Apply? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all: Applying: no-conflict
Commit Body is:
--------------------------
conflict-patch
--------------------------
Apply? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all: ok 3 - interactive am can apply a single patch
expecting success of 4257.4 'interactive am can resolve conflict':
git reset --hard base &&
# apply both; the second one will conflict
test_write_lines y y | test_must_fail git am -i mbox &&
echo resolved >file &&
git add -u &&
# interactive "--resolved" will ask us if we want to apply the result
echo y | git am -i --resolved &&
echo conflict-patch >expect &&
git log -1 --format=%s >actual &&
test_cmp expect actual &&
echo resolved >expect &&
git cat-file blob HEAD:file >actual &&
test_cmp expect actual
HEAD is now at 73a3f21 conflict-main
error: file: already exists in index
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Commit Body is:
--------------------------
no-conflict
--------------------------
Apply? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all: Applying: no-conflict
Commit Body is:
--------------------------
conflict-patch
--------------------------
Apply? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all: Applying: conflict-patch
Patch failed at 0002 conflict-patch
When you have resolved this problem, run "git am -i --continue".
If you prefer to skip this patch, run "git am -i --skip" instead.
To restore the original branch and stop patching, run "git am -i --abort".
Applying: conflict-patch
Commit Body is:
--------------------------
conflict-patch
--------------------------
Apply? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all: ok 4 - interactive am can resolve conflict
# passed all 4 test(s)
1..4
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4258-am-quoted-cr.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4258-am-quoted-cr/.git/
expecting success of 4258.1 'setup':
test_write_lines one two three >text &&
test_commit one text &&
test_write_lines one owt three >text &&
test_commit two text
[master (root-commit) 6f47e65] one
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 text
[master 8ff8b1d] two
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 1 - setup
expecting success of 4258.2 'am warn if quoted-cr is found':
git reset --hard one &&
test_must_fail git am "$DATA/mbox" 2>err &&
grep "quoted CRLF detected" err
HEAD is now at 6f47e65 one
Applying: sample
Patch failed at 0001 sample
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
warning: quoted CRLF detected
ok 2 - am warn if quoted-cr is found
expecting success of 4258.3 'am --quoted-cr=strip':
test_might_fail git am --abort &&
git reset --hard one &&
git am --quoted-cr=strip "$DATA/mbox" &&
git diff --exit-code HEAD two
HEAD is now at 6f47e65 one
Applying: sample
ok 3 - am --quoted-cr=strip
expecting success of 4258.4 'am with config mailinfo.quotedCr=strip':
test_might_fail git am --abort &&
git reset --hard one &&
test_config mailinfo.quotedCr strip &&
git am "$DATA/mbox" &&
git diff --exit-code HEAD two
fatal: Resolve operation not in progress, we are not resuming.
HEAD is now at 6f47e65 one
Applying: sample
ok 4 - am with config mailinfo.quotedCr=strip
# passed all 4 test(s)
1..4
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4215-log-skewed-merges.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4215-log-skewed-merges/.git/
expecting success of 4215.1 'log --graph with merge fusing with its left and right neighbors':
git checkout --orphan _p &&
test_commit A &&
test_commit B &&
git checkout -b _q @^ && test_commit C &&
git checkout -b _r @^ && test_commit D &&
git checkout _p && git merge --no-ff _q _r -m E &&
git checkout _r && test_commit F &&
git checkout _p && git merge --no-ff _r -m G &&
git checkout @^^ && git merge --no-ff _p -m H &&
check_graph <<-\EOF
* H
|\
| * G
| |\
| | * F
| * | E
|/|\|
| | * D
| * | C
| |/
* / B
|/
* A
EOF
Switched to a new branch '_p'
[_p (root-commit) 0ddfaf1] A
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 A.t
[_p d9df450] B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 B.t
Switched to a new branch '_q'
[_q 5dee784] C
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 C.t
Switched to a new branch '_r'
[_r c5a55c6] D
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 D.t
Switched to branch '_p'
Trying simple merge with _q
Trying simple merge with _r
Merge made by the 'octopus' strategy.
C.t | 1 +
D.t | 1 +
2 files changed, 2 insertions(+)
create mode 100644 C.t
create mode 100644 D.t
Switched to branch '_r'
[_r 1265bd9] F
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 F.t
Switched to branch '_p'
Merge made by the 'ort' strategy.
F.t | 1 +
1 file changed, 1 insertion(+)
create mode 100644 F.t
Note: switching to '@^^'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at d9df450 B
Merge made by the 'ort' strategy.
C.t | 1 +
D.t | 1 +
F.t | 1 +
3 files changed, 3 insertions(+)
create mode 100644 C.t
create mode 100644 D.t
create mode 100644 F.t
ok 1 - log --graph with merge fusing with its left and right neighbors
expecting success of 4215.2 'log --graph with left-skewed merge':
git checkout --orphan 0_p && test_commit 0_A &&
git checkout -b 0_q 0_p && test_commit 0_B &&
git checkout -b 0_r 0_p &&
test_commit 0_C &&
test_commit 0_D &&
git checkout -b 0_s 0_p && test_commit 0_E &&
git checkout -b 0_t 0_p && git merge --no-ff 0_r^ 0_s -m 0_F &&
git checkout 0_p && git merge --no-ff 0_s -m 0_G &&
git checkout @^ && git merge --no-ff 0_q 0_r 0_t 0_p -m 0_H &&
check_graph <<-\EOF
*-----. 0_H
|\ \ \ \
| | | | * 0_G
| |_|_|/|
|/| | | |
| | | * | 0_F
| |_|/|\|
|/| | | |
| | | | * 0_E
| |_|_|/
|/| | |
| | * | 0_D
| | |/
| | * 0_C
| |/
|/|
| * 0_B
|/
* 0_A
EOF
Switched to a new branch '0_p'
[0_p (root-commit) 7fa02de] 0_A
Author: A U Thor <author@example.com>
6 files changed, 6 insertions(+)
create mode 100644 0_A.t
create mode 100644 A.t
create mode 100644 B.t
create mode 100644 C.t
create mode 100644 D.t
create mode 100644 F.t
Switched to a new branch '0_q'
[0_q 0b72759] 0_B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 0_B.t
Switched to a new branch '0_r'
[0_r 4e9c0f2] 0_C
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 0_C.t
[0_r c54658b] 0_D
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 0_D.t
Switched to a new branch '0_s'
[0_s 90b5343] 0_E
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 0_E.t
Switched to a new branch '0_t'
Fast-forwarding to: 0_r^
Trying simple merge with 0_s
Merge made by the 'octopus' strategy.
0_C.t | 1 +
0_E.t | 1 +
2 files changed, 2 insertions(+)
create mode 100644 0_C.t
create mode 100644 0_E.t
Switched to branch '0_p'
Merge made by the 'ort' strategy.
0_E.t | 1 +
1 file changed, 1 insertion(+)
create mode 100644 0_E.t
Note: switching to '@^'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 7fa02de 0_A
Fast-forwarding to: 0_q
Trying simple merge with 0_r
Trying simple merge with 0_t
Trying simple merge with 0_p
Merge made by the 'octopus' strategy.
0_B.t | 1 +
0_C.t | 1 +
0_D.t | 1 +
0_E.t | 1 +
4 files changed, 4 insertions(+)
create mode 100644 0_B.t
create mode 100644 0_C.t
create mode 100644 0_D.t
create mode 100644 0_E.t
ok 2 - log --graph with left-skewed merge
expecting success of 4215.3 'log --graph with nested left-skewed merge':
git checkout --orphan 1_p &&
test_commit 1_A &&
test_commit 1_B &&
test_commit 1_C &&
git checkout -b 1_q @^ && test_commit 1_D &&
git checkout 1_p && git merge --no-ff 1_q -m 1_E &&
git checkout -b 1_r @~3 && test_commit 1_F &&
git checkout 1_p && git merge --no-ff 1_r -m 1_G &&
git checkout @^^ && git merge --no-ff 1_p -m 1_H &&
check_graph <<-\EOF
* 1_H
|\
| * 1_G
| |\
| | * 1_F
| * | 1_E
|/| |
| * | 1_D
* | | 1_C
|/ /
* / 1_B
|/
* 1_A
EOF
Switched to a new branch '1_p'
[1_p (root-commit) 5aedbd6] 1_A
Author: A U Thor <author@example.com>
11 files changed, 11 insertions(+)
create mode 100644 0_A.t
create mode 100644 0_B.t
create mode 100644 0_C.t
create mode 100644 0_D.t
create mode 100644 0_E.t
create mode 100644 1_A.t
create mode 100644 A.t
create mode 100644 B.t
create mode 100644 C.t
create mode 100644 D.t
create mode 100644 F.t
[1_p 98d1894] 1_B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 1_B.t
[1_p 0954341] 1_C
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 1_C.t
Switched to a new branch '1_q'
[1_q acc5dd3] 1_D
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 1_D.t
Switched to branch '1_p'
Merge made by the 'ort' strategy.
1_D.t | 1 +
1 file changed, 1 insertion(+)
create mode 100644 1_D.t
Switched to a new branch '1_r'
[1_r 1f05930] 1_F
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 1_F.t
Switched to branch '1_p'
Merge made by the 'ort' strategy.
1_F.t | 1 +
1 file changed, 1 insertion(+)
create mode 100644 1_F.t
Note: switching to '@^^'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 0954341 1_C
Merge made by the 'ort' strategy.
1_D.t | 1 +
1_F.t | 1 +
2 files changed, 2 insertions(+)
create mode 100644 1_D.t
create mode 100644 1_F.t
ok 3 - log --graph with nested left-skewed merge
expecting success of 4215.4 'log --graph with nested left-skewed merge following normal merge':
git checkout --orphan 2_p &&
test_commit 2_A &&
test_commit 2_B &&
test_commit 2_C &&
git checkout -b 2_q @^^ &&
test_commit 2_D &&
test_commit 2_E &&
git checkout -b 2_r @^ && test_commit 2_F &&
git checkout 2_q &&
git merge --no-ff 2_r -m 2_G &&
git merge --no-ff 2_p^ -m 2_H &&
git checkout -b 2_s @^^ && git merge --no-ff 2_q -m 2_J &&
git checkout 2_p && git merge --no-ff 2_s -m 2_K &&
check_graph <<-\EOF
* 2_K
|\
| * 2_J
| |\
| | * 2_H
| | |\
| | * | 2_G
| |/| |
| | * | 2_F
| * | | 2_E
| |/ /
| * | 2_D
* | | 2_C
| |/
|/|
* | 2_B
|/
* 2_A
EOF
Switched to a new branch '2_p'
[2_p (root-commit) 25ac48f] 2_A
Author: A U Thor <author@example.com>
16 files changed, 16 insertions(+)
create mode 100644 0_A.t
create mode 100644 0_B.t
create mode 100644 0_C.t
create mode 100644 0_D.t
create mode 100644 0_E.t
create mode 100644 1_A.t
create mode 100644 1_B.t
create mode 100644 1_C.t
create mode 100644 1_D.t
create mode 100644 1_F.t
create mode 100644 2_A.t
create mode 100644 A.t
create mode 100644 B.t
create mode 100644 C.t
create mode 100644 D.t
create mode 100644 F.t
[2_p 350de8f] 2_B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 2_B.t
[2_p 83590dd] 2_C
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 2_C.t
Switched to a new branch '2_q'
[2_q 0e12748] 2_D
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 2_D.t
[2_q 154544f] 2_E
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 2_E.t
Switched to a new branch '2_r'
[2_r e6f7421] 2_F
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 2_F.t
Switched to branch '2_q'
Merge made by the 'ort' strategy.
2_F.t | 1 +
1 file changed, 1 insertion(+)
create mode 100644 2_F.t
Merge made by the 'ort' strategy.
2_B.t | 1 +
1 file changed, 1 insertion(+)
create mode 100644 2_B.t
Switched to a new branch '2_s'
Merge made by the 'ort' strategy.
2_B.t | 1 +
2_F.t | 1 +
2 files changed, 2 insertions(+)
create mode 100644 2_B.t
create mode 100644 2_F.t
Switched to branch '2_p'
Merge made by the 'ort' strategy.
2_D.t | 1 +
2_E.t | 1 +
2_F.t | 1 +
3 files changed, 3 insertions(+)
create mode 100644 2_D.t
create mode 100644 2_E.t
create mode 100644 2_F.t
ok 4 - log --graph with nested left-skewed merge following normal merge
expecting success of 4215.5 'log --graph with nested right-skewed merge following left-skewed merge':
git checkout --orphan 3_p &&
test_commit 3_A &&
git checkout -b 3_q &&
test_commit 3_B &&
test_commit 3_C &&
git checkout -b 3_r @^ &&
test_commit 3_D &&
git checkout 3_q && git merge --no-ff 3_r -m 3_E &&
git checkout 3_p && git merge --no-ff 3_q -m 3_F &&
git checkout 3_r && test_commit 3_G &&
git checkout 3_p && git merge --no-ff 3_r -m 3_H &&
git checkout @^^ && git merge --no-ff 3_p -m 3_J &&
check_graph <<-\EOF
* 3_J
|\
| * 3_H
| |\
| | * 3_G
| * | 3_F
|/| |
| * | 3_E
| |\|
| | * 3_D
| * | 3_C
| |/
| * 3_B
|/
* 3_A
EOF
Switched to a new branch '3_p'
[3_p (root-commit) 999faae] 3_A
Author: A U Thor <author@example.com>
22 files changed, 22 insertions(+)
create mode 100644 0_A.t
create mode 100644 0_B.t
create mode 100644 0_C.t
create mode 100644 0_D.t
create mode 100644 0_E.t
create mode 100644 1_A.t
create mode 100644 1_B.t
create mode 100644 1_C.t
create mode 100644 1_D.t
create mode 100644 1_F.t
create mode 100644 2_A.t
create mode 100644 2_B.t
create mode 100644 2_C.t
create mode 100644 2_D.t
create mode 100644 2_E.t
create mode 100644 2_F.t
create mode 100644 3_A.t
create mode 100644 A.t
create mode 100644 B.t
create mode 100644 C.t
create mode 100644 D.t
create mode 100644 F.t
Switched to a new branch '3_q'
[3_q 0baa6a7] 3_B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 3_B.t
[3_q 4ec5c38] 3_C
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 3_C.t
Switched to a new branch '3_r'
[3_r de5f7c1] 3_D
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 3_D.t
Switched to branch '3_q'
Merge made by the 'ort' strategy.
3_D.t | 1 +
1 file changed, 1 insertion(+)
create mode 100644 3_D.t
Switched to branch '3_p'
Merge made by the 'ort' strategy.
3_B.t | 1 +
3_C.t | 1 +
3_D.t | 1 +
3 files changed, 3 insertions(+)
create mode 100644 3_B.t
create mode 100644 3_C.t
create mode 100644 3_D.t
Switched to branch '3_r'
[3_r 8adad39] 3_G
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 3_G.t
Switched to branch '3_p'
Merge made by the 'ort' strategy.
3_G.t | 1 +
1 file changed, 1 insertion(+)
create mode 100644 3_G.t
Note: switching to '@^^'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 999faae 3_A
Merge made by the 'ort' strategy.
3_B.t | 1 +
3_C.t | 1 +
3_D.t | 1 +
3_G.t | 1 +
4 files changed, 4 insertions(+)
create mode 100644 3_B.t
create mode 100644 3_C.t
create mode 100644 3_D.t
create mode 100644 3_G.t
ok 5 - log --graph with nested right-skewed merge following left-skewed merge
expecting success of 4215.6 'log --graph with right-skewed merge following a left-skewed one':
git checkout --orphan 4_p &&
test_commit 4_A &&
test_commit 4_B &&
test_commit 4_C &&
git checkout -b 4_q @^^ && test_commit 4_D &&
git checkout -b 4_r 4_p^ && git merge --no-ff 4_q -m 4_E &&
git checkout -b 4_s 4_p^^ &&
git merge --no-ff 4_r -m 4_F &&
git merge --no-ff 4_p -m 4_G &&
git checkout @^^ && git merge --no-ff 4_s -m 4_H &&
check_graph --date-order <<-\EOF
* 4_H
|\
| * 4_G
| |\
| * | 4_F
|/| |
| * | 4_E
| |\ \
| | * | 4_D
| |/ /
|/| |
| | * 4_C
| |/
| * 4_B
|/
* 4_A
EOF
Switched to a new branch '4_p'
[4_p (root-commit) 34bb535] 4_A
Author: A U Thor <author@example.com>
27 files changed, 27 insertions(+)
create mode 100644 0_A.t
create mode 100644 0_B.t
create mode 100644 0_C.t
create mode 100644 0_D.t
create mode 100644 0_E.t
create mode 100644 1_A.t
create mode 100644 1_B.t
create mode 100644 1_C.t
create mode 100644 1_D.t
create mode 100644 1_F.t
create mode 100644 2_A.t
create mode 100644 2_B.t
create mode 100644 2_C.t
create mode 100644 2_D.t
create mode 100644 2_E.t
create mode 100644 2_F.t
create mode 100644 3_A.t
create mode 100644 3_B.t
create mode 100644 3_C.t
create mode 100644 3_D.t
create mode 100644 3_G.t
create mode 100644 4_A.t
create mode 100644 A.t
create mode 100644 B.t
create mode 100644 C.t
create mode 100644 D.t
create mode 100644 F.t
[4_p 1a06587] 4_B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 4_B.t
[4_p 55219af] 4_C
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 4_C.t
Switched to a new branch '4_q'
[4_q 004b4a0] 4_D
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 4_D.t
Switched to a new branch '4_r'
Merge made by the 'ort' strategy.
4_D.t | 1 +
1 file changed, 1 insertion(+)
create mode 100644 4_D.t
Switched to a new branch '4_s'
Merge made by the 'ort' strategy.
4_B.t | 1 +
4_D.t | 1 +
2 files changed, 2 insertions(+)
create mode 100644 4_B.t
create mode 100644 4_D.t
Merge made by the 'ort' strategy.
4_C.t | 1 +
1 file changed, 1 insertion(+)
create mode 100644 4_C.t
Note: switching to '@^^'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 34bb535 4_A
Merge made by the 'ort' strategy.
4_B.t | 1 +
4_C.t | 1 +
4_D.t | 1 +
3 files changed, 3 insertions(+)
create mode 100644 4_B.t
create mode 100644 4_C.t
create mode 100644 4_D.t
ok 6 - log --graph with right-skewed merge following a left-skewed one
expecting success of 4215.7 'log --graph with octopus merge with column joining its penultimate parent':
git checkout --orphan 5_p &&
test_commit 5_A &&
git branch 5_q &&
git branch 5_r &&
test_commit 5_B &&
git checkout 5_q && test_commit 5_C &&
git checkout 5_r && test_commit 5_D &&
git checkout 5_p &&
git merge --no-ff 5_q 5_r -m 5_E &&
git checkout 5_q && test_commit 5_F &&
git checkout -b 5_s 5_p^ &&
git merge --no-ff 5_p 5_q -m 5_G &&
git checkout 5_r &&
git merge --no-ff 5_s -m 5_H &&
check_graph <<-\EOF
* 5_H
|\
| *-. 5_G
| |\ \
| | | * 5_F
| | * | 5_E
| |/|\ \
| |_|/ /
|/| | /
| | |/
* | | 5_D
| | * 5_C
| |/
|/|
| * 5_B
|/
* 5_A
EOF
Switched to a new branch '5_p'
[5_p (root-commit) e8b452a] 5_A
Author: A U Thor <author@example.com>
31 files changed, 31 insertions(+)
create mode 100644 0_A.t
create mode 100644 0_B.t
create mode 100644 0_C.t
create mode 100644 0_D.t
create mode 100644 0_E.t
create mode 100644 1_A.t
create mode 100644 1_B.t
create mode 100644 1_C.t
create mode 100644 1_D.t
create mode 100644 1_F.t
create mode 100644 2_A.t
create mode 100644 2_B.t
create mode 100644 2_C.t
create mode 100644 2_D.t
create mode 100644 2_E.t
create mode 100644 2_F.t
create mode 100644 3_A.t
create mode 100644 3_B.t
create mode 100644 3_C.t
create mode 100644 3_D.t
create mode 100644 3_G.t
create mode 100644 4_A.t
create mode 100644 4_B.t
create mode 100644 4_C.t
create mode 100644 4_D.t
create mode 100644 5_A.t
create mode 100644 A.t
create mode 100644 B.t
create mode 100644 C.t
create mode 100644 D.t
create mode 100644 F.t
[5_p 7f4c378] 5_B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 5_B.t
Switched to branch '5_q'
[5_q d9d00ae] 5_C
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 5_C.t
Switched to branch '5_r'
[5_r 2639b3d] 5_D
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 5_D.t
Switched to branch '5_p'
Trying simple merge with 5_q
Trying simple merge with 5_r
Merge made by the 'octopus' strategy.
5_C.t | 1 +
5_D.t | 1 +
2 files changed, 2 insertions(+)
create mode 100644 5_C.t
create mode 100644 5_D.t
Switched to branch '5_q'
[5_q eb0b460] 5_F
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 5_F.t
Switched to a new branch '5_s'
Fast-forwarding to: 5_p
Trying simple merge with 5_q
Merge made by the 'octopus' strategy.
5_C.t | 1 +
5_D.t | 1 +
5_F.t | 1 +
3 files changed, 3 insertions(+)
create mode 100644 5_C.t
create mode 100644 5_D.t
create mode 100644 5_F.t
Switched to branch '5_r'
Merge made by the 'ort' strategy.
5_B.t | 1 +
5_C.t | 1 +
5_F.t | 1 +
3 files changed, 3 insertions(+)
create mode 100644 5_B.t
create mode 100644 5_C.t
create mode 100644 5_F.t
ok 7 - log --graph with octopus merge with column joining its penultimate parent
expecting success of 4215.8 'log --graph with multiple tips':
git checkout --orphan 6_1 &&
test_commit 6_A &&
git branch 6_2 &&
git branch 6_4 &&
test_commit 6_B &&
git branch 6_3 &&
test_commit 6_C &&
git checkout 6_2 && test_commit 6_D &&
git checkout 6_3 && test_commit 6_E &&
git checkout -b 6_5 6_1 &&
git merge --no-ff 6_2 -m 6_F &&
git checkout 6_4 && test_commit 6_G &&
git checkout 6_3 &&
git merge --no-ff 6_4 -m 6_H &&
git checkout 6_1 &&
git merge --no-ff 6_2 -m 6_I &&
check_graph 6_1 6_3 6_5 <<-\EOF
* 6_I
|\
| | * 6_H
| | |\
| | | * 6_G
| | * | 6_E
| | | | * 6_F
| |_|_|/|
|/| | |/
| | |/|
| |/| |
| * | | 6_D
| | |/
| |/|
* | | 6_C
| |/
|/|
* | 6_B
|/
* 6_A
EOF
Switched to a new branch '6_1'
[6_1 (root-commit) bae57ed] 6_A
Author: A U Thor <author@example.com>
36 files changed, 36 insertions(+)
create mode 100644 0_A.t
create mode 100644 0_B.t
create mode 100644 0_C.t
create mode 100644 0_D.t
create mode 100644 0_E.t
create mode 100644 1_A.t
create mode 100644 1_B.t
create mode 100644 1_C.t
create mode 100644 1_D.t
create mode 100644 1_F.t
create mode 100644 2_A.t
create mode 100644 2_B.t
create mode 100644 2_C.t
create mode 100644 2_D.t
create mode 100644 2_E.t
create mode 100644 2_F.t
create mode 100644 3_A.t
create mode 100644 3_B.t
create mode 100644 3_C.t
create mode 100644 3_D.t
create mode 100644 3_G.t
create mode 100644 4_A.t
create mode 100644 4_B.t
create mode 100644 4_C.t
create mode 100644 4_D.t
create mode 100644 5_A.t
create mode 100644 5_B.t
create mode 100644 5_C.t
create mode 100644 5_D.t
create mode 100644 5_F.t
create mode 100644 6_A.t
create mode 100644 A.t
create mode 100644 B.t
create mode 100644 C.t
create mode 100644 D.t
create mode 100644 F.t
[6_1 23a9c94] 6_B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 6_B.t
[6_1 87cfc01] 6_C
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 6_C.t
Switched to branch '6_2'
[6_2 596bb81] 6_D
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 6_D.t
Switched to branch '6_3'
[6_3 2e97438] 6_E
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 6_E.t
Switched to a new branch '6_5'
Merge made by the 'ort' strategy.
6_D.t | 1 +
1 file changed, 1 insertion(+)
create mode 100644 6_D.t
Switched to branch '6_4'
[6_4 f95748a] 6_G
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 6_G.t
Switched to branch '6_3'
Merge made by the 'ort' strategy.
6_G.t | 1 +
1 file changed, 1 insertion(+)
create mode 100644 6_G.t
Switched to branch '6_1'
Merge made by the 'ort' strategy.
6_D.t | 1 +
1 file changed, 1 insertion(+)
create mode 100644 6_D.t
ok 8 - log --graph with multiple tips
expecting success of 4215.9 'log --graph with multiple tips and colors':
test_config log.graphColors red,green,yellow,blue,magenta,cyan &&
cat >expect.colors <<-\EOF &&
* 6_I
<RED>|<RESET><GREEN>\<RESET>
<RED>|<RESET> <GREEN>|<RESET> * 6_H
<RED>|<RESET> <GREEN>|<RESET> <YELLOW>|<RESET><BLUE>\<RESET>
<RED>|<RESET> <GREEN>|<RESET> <YELLOW>|<RESET> * 6_G
<RED>|<RESET> <GREEN>|<RESET> <YELLOW>|<RESET> <BLUE>|<RESET> * 6_F
<RED>|<RESET> <GREEN>|<RESET><RED>_<RESET><YELLOW>|<RESET><RED>_<RESET><BLUE>|<RESET><RED>/<RESET><GREEN>|<RESET>
<RED>|<RESET><RED>/<RESET><GREEN>|<RESET> <YELLOW>|<RESET> <BLUE>|<RESET><GREEN>/<RESET>
<RED>|<RESET> <GREEN>|<RESET> <YELLOW>|<RESET><GREEN>/<RESET><BLUE>|<RESET>
<RED>|<RESET> <GREEN>|<RESET><GREEN>/<RESET><YELLOW>|<RESET> <BLUE>|<RESET>
<RED>|<RESET> <GREEN>|<RESET> * <BLUE>|<RESET> 6_E
<RED>|<RESET> * <CYAN>|<RESET> <BLUE>|<RESET> 6_D
<RED>|<RESET> <BLUE>|<RESET> <CYAN>|<RESET><BLUE>/<RESET>
<RED>|<RESET> <BLUE>|<RESET><BLUE>/<RESET><CYAN>|<RESET>
* <BLUE>|<RESET> <CYAN>|<RESET> 6_C
<CYAN>|<RESET> <BLUE>|<RESET><CYAN>/<RESET>
<CYAN>|<RESET><CYAN>/<RESET><BLUE>|<RESET>
* <BLUE>|<RESET> 6_B
<BLUE>|<RESET><BLUE>/<RESET>
* 6_A
EOF
lib_test_cmp_colored_graph --date-order --pretty=tformat:%s 6_1 6_3 6_5
ok 9 - log --graph with multiple tips and colors
expecting success of 4215.10 'log --graph with multiple tips':
git checkout --orphan 7_1 &&
test_commit 7_A &&
test_commit 7_B &&
test_commit 7_C &&
git checkout -b 7_2 7_1~2 &&
test_commit 7_D &&
test_commit 7_E &&
git checkout -b 7_3 7_1~1 &&
test_commit 7_F &&
test_commit 7_G &&
git checkout -b 7_4 7_2~1 &&
test_commit 7_H &&
git checkout -b 7_5 7_1~2 &&
test_commit 7_I &&
git checkout -b 7_6 7_3~1 &&
test_commit 7_J &&
git checkout -b M_1 7_1 &&
git merge --no-ff 7_2 -m 7_M1 &&
git checkout -b M_3 7_3 &&
git merge --no-ff 7_4 -m 7_M2 &&
git checkout -b M_5 7_5 &&
git merge --no-ff 7_6 -m 7_M3 &&
git checkout -b M_7 7_1 &&
git merge --no-ff 7_2 7_3 -m 7_M4 &&
check_graph M_1 M_3 M_5 M_7 <<-\EOF
* 7_M1
|\
| | * 7_M2
| | |\
| | | * 7_H
| | | | * 7_M3
| | | | |\
| | | | | * 7_J
| | | | * | 7_I
| | | | | | * 7_M4
| |_|_|_|_|/|\
|/| | | | |/ /
| | |_|_|/| /
| |/| | | |/
| | | |_|/|
| | |/| | |
| | * | | | 7_G
| | | |_|/
| | |/| |
| | * | | 7_F
| * | | | 7_E
| | |/ /
| |/| |
| * | | 7_D
| | |/
| |/|
* | | 7_C
| |/
|/|
* | 7_B
|/
* 7_A
EOF
Switched to a new branch '7_1'
[7_1 (root-commit) 2776d32] 7_A
Author: A U Thor <author@example.com>
40 files changed, 40 insertions(+)
create mode 100644 0_A.t
create mode 100644 0_B.t
create mode 100644 0_C.t
create mode 100644 0_D.t
create mode 100644 0_E.t
create mode 100644 1_A.t
create mode 100644 1_B.t
create mode 100644 1_C.t
create mode 100644 1_D.t
create mode 100644 1_F.t
create mode 100644 2_A.t
create mode 100644 2_B.t
create mode 100644 2_C.t
create mode 100644 2_D.t
create mode 100644 2_E.t
create mode 100644 2_F.t
create mode 100644 3_A.t
create mode 100644 3_B.t
create mode 100644 3_C.t
create mode 100644 3_D.t
create mode 100644 3_G.t
create mode 100644 4_A.t
create mode 100644 4_B.t
create mode 100644 4_C.t
create mode 100644 4_D.t
create mode 100644 5_A.t
create mode 100644 5_B.t
create mode 100644 5_C.t
create mode 100644 5_D.t
create mode 100644 5_F.t
create mode 100644 6_A.t
create mode 100644 6_B.t
create mode 100644 6_C.t
create mode 100644 6_D.t
create mode 100644 7_A.t
create mode 100644 A.t
create mode 100644 B.t
create mode 100644 C.t
create mode 100644 D.t
create mode 100644 F.t
[7_1 704700a] 7_B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 7_B.t
[7_1 b8c0a0c] 7_C
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 7_C.t
Switched to a new branch '7_2'
[7_2 78388a6] 7_D
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 7_D.t
[7_2 4d652c3] 7_E
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 7_E.t
Switched to a new branch '7_3'
[7_3 07bff16] 7_F
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 7_F.t
[7_3 8980ecc] 7_G
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 7_G.t
Switched to a new branch '7_4'
[7_4 d3195f2] 7_H
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 7_H.t
Switched to a new branch '7_5'
[7_5 ad0296d] 7_I
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 7_I.t
Switched to a new branch '7_6'
[7_6 0ff8825] 7_J
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 7_J.t
Switched to a new branch 'M_1'
Merge made by the 'ort' strategy.
7_D.t | 1 +
7_E.t | 1 +
2 files changed, 2 insertions(+)
create mode 100644 7_D.t
create mode 100644 7_E.t
Switched to a new branch 'M_3'
Merge made by the 'ort' strategy.
7_D.t | 1 +
7_H.t | 1 +
2 files changed, 2 insertions(+)
create mode 100644 7_D.t
create mode 100644 7_H.t
Switched to a new branch 'M_5'
Merge made by the 'ort' strategy.
7_B.t | 1 +
7_F.t | 1 +
7_J.t | 1 +
3 files changed, 3 insertions(+)
create mode 100644 7_B.t
create mode 100644 7_F.t
create mode 100644 7_J.t
Switched to a new branch 'M_7'
Trying simple merge with 7_2
Trying simple merge with 7_3
Merge made by the 'octopus' strategy.
7_D.t | 1 +
7_E.t | 1 +
7_F.t | 1 +
7_G.t | 1 +
4 files changed, 4 insertions(+)
create mode 100644 7_D.t
create mode 100644 7_E.t
create mode 100644 7_F.t
create mode 100644 7_G.t
ok 10 - log --graph with multiple tips
# passed all 10 test(s)
1..10
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t4300-merge-tree.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t4300-merge-tree/.git/
expecting success of 4300.1 'setup':
test_commit "initial" "initial-file" "initial"
[master (root-commit) c1d16d8] initial
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 initial-file
ok 1 - setup
expecting success of 4300.2 'file add A, !B':
git reset --hard initial &&
test_commit "add-a-not-b" "ONE" "AAA" &&
git merge-tree initial initial add-a-not-b >actual &&
cat >expected <<EXPECTED &&
added in remote
their 100644 $(git rev-parse HEAD:ONE) ONE
@@ -0,0 +1 @@
+AAA
EXPECTED
test_cmp expected actual
HEAD is now at c1d16d8 initial
[master e55b628] add-a-not-b
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 ONE
ok 2 - file add A, !B
expecting success of 4300.3 'file add !A, B':
git reset --hard initial &&
test_commit "add-not-a-b" "ONE" "AAA" &&
git merge-tree initial add-not-a-b initial >actual &&
test_must_be_empty actual
HEAD is now at c1d16d8 initial
[master fe72a09] add-not-a-b
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 ONE
ok 3 - file add !A, B
expecting success of 4300.4 'file add A, B (same)':
git reset --hard initial &&
test_commit "add-a-b-same-A" "ONE" "AAA" &&
git reset --hard initial &&
test_commit "add-a-b-same-B" "ONE" "AAA" &&
git merge-tree initial add-a-b-same-A add-a-b-same-B >actual &&
test_must_be_empty actual
HEAD is now at c1d16d8 initial
[master adad022] add-a-b-same-A
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 ONE
HEAD is now at c1d16d8 initial
[master c566426] add-a-b-same-B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 ONE
ok 4 - file add A, B (same)
expecting success of 4300.5 'file add A, B (different)':
git reset --hard initial &&
test_commit "add-a-b-diff-A" "ONE" "AAA" &&
git reset --hard initial &&
test_commit "add-a-b-diff-B" "ONE" "BBB" &&
git merge-tree initial add-a-b-diff-A add-a-b-diff-B >actual &&
cat >expected <<EXPECTED &&
added in both
our 100644 $(git rev-parse add-a-b-diff-A:ONE) ONE
their 100644 $(git rev-parse add-a-b-diff-B:ONE) ONE
@@ -1 +1,5 @@
+<<<<<<< .our
AAA
+=======
+BBB
+>>>>>>> .their
EXPECTED
test_cmp expected actual
HEAD is now at c1d16d8 initial
[master 59aa417] add-a-b-diff-A
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 ONE
HEAD is now at c1d16d8 initial
[master 06b549e] add-a-b-diff-B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 ONE
ok 5 - file add A, B (different)
expecting success of 4300.6 'file change A, !B':
git reset --hard initial &&
test_commit "change-a-not-b" "initial-file" "BBB" &&
git merge-tree initial change-a-not-b initial >actual &&
test_must_be_empty actual
HEAD is now at c1d16d8 initial
[master 46329de] change-a-not-b
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 6 - file change A, !B
expecting success of 4300.7 'file change !A, B':
git reset --hard initial &&
test_commit "change-not-a-b" "initial-file" "BBB" &&
git merge-tree initial initial change-not-a-b >actual &&
cat >expected <<EXPECTED &&
merged
result 100644 $(git rev-parse change-a-not-b:initial-file) initial-file
our 100644 $(git rev-parse initial:initial-file ) initial-file
@@ -1 +1 @@
-initial
+BBB
EXPECTED
test_cmp expected actual
HEAD is now at c1d16d8 initial
[master 4667cad] change-not-a-b
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 7 - file change !A, B
expecting success of 4300.8 'file change A, B (same)':
git reset --hard initial &&
test_commit "change-a-b-same-A" "initial-file" "AAA" &&
git reset --hard initial &&
test_commit "change-a-b-same-B" "initial-file" "AAA" &&
git merge-tree initial change-a-b-same-A change-a-b-same-B >actual &&
test_must_be_empty actual
HEAD is now at c1d16d8 initial
[master 17f6774] change-a-b-same-A
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
HEAD is now at c1d16d8 initial
[master c618aaa] change-a-b-same-B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 8 - file change A, B (same)
expecting success of 4300.9 'file change A, B (different)':
git reset --hard initial &&
test_commit "change-a-b-diff-A" "initial-file" "AAA" &&
git reset --hard initial &&
test_commit "change-a-b-diff-B" "initial-file" "BBB" &&
git merge-tree initial change-a-b-diff-A change-a-b-diff-B >actual &&
cat >expected <<EXPECTED &&
changed in both
base 100644 $(git rev-parse initial:initial-file ) initial-file
our 100644 $(git rev-parse change-a-b-diff-A:initial-file) initial-file
their 100644 $(git rev-parse change-a-b-diff-B:initial-file) initial-file
@@ -1 +1,5 @@
+<<<<<<< .our
AAA
+=======
+BBB
+>>>>>>> .their
EXPECTED
test_cmp expected actual
HEAD is now at c1d16d8 initial
[master f14ee41] change-a-b-diff-A
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
HEAD is now at c1d16d8 initial
[master 6faccc3] change-a-b-diff-B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 9 - file change A, B (different)
expecting success of 4300.10 'file change A, B (mixed)':
git reset --hard initial &&
test_commit "change-a-b-mix-base" "ONE" "
AAA
AAA
AAA
AAA
AAA
AAA
AAA
AAA
AAA
AAA
AAA
AAA
AAA
AAA
AAA" &&
test_commit "change-a-b-mix-A" "ONE" \
"$(sed -e "1{s/AAA/BBB/;}" -e "10{s/AAA/BBB/;}" <ONE)" &&
git reset --hard change-a-b-mix-base &&
test_commit "change-a-b-mix-B" "ONE" \
"$(sed -e "1{s/AAA/BBB/;}" -e "10{s/AAA/CCC/;}" <ONE)" &&
git merge-tree change-a-b-mix-base change-a-b-mix-A change-a-b-mix-B \
>actual &&
cat >expected <<EXPECTED &&
changed in both
base 100644 $(git rev-parse change-a-b-mix-base:ONE) ONE
our 100644 $(git rev-parse change-a-b-mix-A:ONE ) ONE
their 100644 $(git rev-parse change-a-b-mix-B:ONE ) ONE
@@ -7,7 +7,11 @@
AAA
AAA
AAA
+<<<<<<< .our
BBB
+=======
+CCC
+>>>>>>> .their
AAA
AAA
AAA
EXPECTED
test_cmp expected actual
HEAD is now at c1d16d8 initial
[master 8f24aa4] change-a-b-mix-base
Author: A U Thor <author@example.com>
1 file changed, 16 insertions(+)
create mode 100644 ONE
[master 37be425] change-a-b-mix-A
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
HEAD is now at 8f24aa4 change-a-b-mix-base
[master 9bb3ceb] change-a-b-mix-B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 10 - file change A, B (mixed)
expecting success of 4300.11 'file remove A, !B':
git reset --hard initial &&
test_commit "rm-a-not-b-base" "ONE" "AAA" &&
git rm ONE &&
git commit -m "rm-a-not-b" &&
git tag "rm-a-not-b" &&
git merge-tree rm-a-not-b-base rm-a-not-b rm-a-not-b-base >actual &&
test_must_be_empty actual
HEAD is now at c1d16d8 initial
[master 6bc469c] rm-a-not-b-base
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 ONE
rm 'ONE'
[master eaee347] rm-a-not-b
Author: A U Thor <author@example.com>
1 file changed, 1 deletion(-)
delete mode 100644 ONE
ok 11 - file remove A, !B
expecting success of 4300.12 'file remove !A, B':
git reset --hard initial &&
test_commit "rm-not-a-b-base" "ONE" "AAA" &&
git rm ONE &&
git commit -m "rm-not-a-b" &&
git tag "rm-not-a-b" &&
git merge-tree rm-a-not-b-base rm-a-not-b-base rm-a-not-b >actual &&
cat >expected <<EXPECTED &&
removed in remote
base 100644 $(git rev-parse rm-a-not-b-base:ONE) ONE
our 100644 $(git rev-parse rm-a-not-b-base:ONE) ONE
@@ -1 +0,0 @@
-AAA
EXPECTED
test_cmp expected actual
HEAD is now at c1d16d8 initial
[master 4c80bfe] rm-not-a-b-base
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 ONE
rm 'ONE'
[master f5c368c] rm-not-a-b
Author: A U Thor <author@example.com>
1 file changed, 1 deletion(-)
delete mode 100644 ONE
ok 12 - file remove !A, B
expecting success of 4300.13 'file remove A, B (same)':
git reset --hard initial &&
test_commit "rm-a-b-base" "ONE" "AAA" &&
git rm ONE &&
git commit -m "rm-a-b" &&
git tag "rm-a-b" &&
git merge-tree rm-a-b-base rm-a-b rm-a-b >actual &&
test_must_be_empty actual
HEAD is now at c1d16d8 initial
[master ba896b0] rm-a-b-base
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 ONE
rm 'ONE'
[master e5794d5] rm-a-b
Author: A U Thor <author@example.com>
1 file changed, 1 deletion(-)
delete mode 100644 ONE
ok 13 - file remove A, B (same)
expecting success of 4300.14 'file change A, remove B':
git reset --hard initial &&
test_commit "change-a-rm-b-base" "ONE" "AAA" &&
test_commit "change-a-rm-b-A" "ONE" "BBB" &&
git reset --hard change-a-rm-b-base &&
git rm ONE &&
git commit -m "change-a-rm-b-B" &&
git tag "change-a-rm-b-B" &&
git merge-tree change-a-rm-b-base change-a-rm-b-A change-a-rm-b-B \
>actual &&
cat >expected <<EXPECTED &&
removed in remote
base 100644 $(git rev-parse change-a-rm-b-base:ONE) ONE
our 100644 $(git rev-parse change-a-rm-b-A:ONE ) ONE
@@ -1 +0,0 @@
-BBB
EXPECTED
test_cmp expected actual
HEAD is now at c1d16d8 initial
[master 425fe11] change-a-rm-b-base
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 ONE
[master d7b5417] change-a-rm-b-A
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
HEAD is now at 425fe11 change-a-rm-b-base
rm 'ONE'
[master a35c11c] change-a-rm-b-B
Author: A U Thor <author@example.com>
1 file changed, 1 deletion(-)
delete mode 100644 ONE
ok 14 - file change A, remove B
expecting success of 4300.15 'file remove A, change B':
git reset --hard initial &&
test_commit "rm-a-change-b-base" "ONE" "AAA" &&
git rm ONE &&
git commit -m "rm-a-change-b-A" &&
git tag "rm-a-change-b-A" &&
git reset --hard rm-a-change-b-base &&
test_commit "rm-a-change-b-B" "ONE" "BBB" &&
git merge-tree rm-a-change-b-base rm-a-change-b-A rm-a-change-b-B \
>actual &&
cat >expected <<EXPECTED &&
removed in local
base 100644 $(git rev-parse rm-a-change-b-base:ONE) ONE
their 100644 $(git rev-parse rm-a-change-b-B:ONE ) ONE
EXPECTED
test_cmp expected actual
HEAD is now at c1d16d8 initial
[master e3f76d1] rm-a-change-b-base
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 ONE
rm 'ONE'
[master 12305ab] rm-a-change-b-A
Author: A U Thor <author@example.com>
1 file changed, 1 deletion(-)
delete mode 100644 ONE
HEAD is now at e3f76d1 rm-a-change-b-base
[master 30c5a34] rm-a-change-b-B
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+), 1 deletion(-)
ok 15 - file remove A, change B
expecting success of 4300.16 'tree add A, B (same)':
git reset --hard initial &&
mkdir sub &&
test_commit "add sub/file" "sub/file" "file" add-tree-A &&
git merge-tree initial add-tree-A add-tree-A >actual &&
test_must_be_empty actual
HEAD is now at c1d16d8 initial
[master f146135] add sub/file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 sub/file
ok 16 - tree add A, B (same)
expecting success of 4300.17 'tree add A, B (different)':
git reset --hard initial &&
mkdir sub &&
test_commit "add sub/file" "sub/file" "AAA" add-tree-a-b-A &&
git reset --hard initial &&
mkdir sub &&
test_commit "add sub/file" "sub/file" "BBB" add-tree-a-b-B &&
git merge-tree initial add-tree-a-b-A add-tree-a-b-B >actual &&
cat >expect <<-EOF &&
added in both
our 100644 $(git rev-parse add-tree-a-b-A:sub/file) sub/file
their 100644 $(git rev-parse add-tree-a-b-B:sub/file) sub/file
@@ -1 +1,5 @@
+<<<<<<< .our
AAA
+=======
+BBB
+>>>>>>> .their
EOF
test_cmp expect actual
HEAD is now at c1d16d8 initial
[master 278e538] add sub/file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 sub/file
HEAD is now at c1d16d8 initial
[master b437163] add sub/file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 sub/file
ok 17 - tree add A, B (different)
expecting success of 4300.18 'tree unchanged A, removed B':
git reset --hard initial &&
mkdir sub &&
test_commit "add sub/file" "sub/file" "AAA" tree-remove-b-initial &&
git rm sub/file &&
test_tick &&
git commit -m "remove sub/file" &&
git tag tree-remove-b-B &&
git merge-tree tree-remove-b-initial tree-remove-b-initial tree-remove-b-B >actual &&
cat >expect <<-EOF &&
removed in remote
base 100644 $(git rev-parse tree-remove-b-initial:sub/file) sub/file
our 100644 $(git rev-parse tree-remove-b-initial:sub/file) sub/file
@@ -1 +0,0 @@
-AAA
EOF
test_cmp expect actual
HEAD is now at c1d16d8 initial
[master 06f44d6] add sub/file
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 sub/file
rm 'sub/file'
[master 7d2ab7e] remove sub/file
Author: A U Thor <author@example.com>
1 file changed, 1 deletion(-)
delete mode 100644 sub/file
ok 18 - tree unchanged A, removed B
expecting success of 4300.19 'turn file to tree':
git reset --hard initial &&
rm initial-file &&
mkdir initial-file &&
test_commit "turn-file-to-tree" "initial-file/ONE" "CCC" &&
git merge-tree initial initial turn-file-to-tree >actual &&
cat >expect <<-EOF &&
added in remote
their 100644 $(git rev-parse turn-file-to-tree:initial-file/ONE) initial-file/ONE
@@ -0,0 +1 @@
+CCC
removed in remote
base 100644 $(git rev-parse initial:initial-file) initial-file
our 100644 $(git rev-parse initial:initial-file) initial-file
@@ -1 +0,0 @@
-initial
EOF
test_cmp expect actual
HEAD is now at c1d16d8 initial
[master c7dbe97] turn-file-to-tree
Author: A U Thor <author@example.com>
2 files changed, 1 insertion(+), 1 deletion(-)
delete mode 100644 initial-file
create mode 100644 initial-file/ONE
ok 19 - turn file to tree
expecting success of 4300.20 'turn tree to file':
git reset --hard initial &&
mkdir dir &&
test_commit "add-tree" "dir/path" "AAA" &&
test_commit "add-another-tree" "dir/another" "BBB" &&
rm -fr dir &&
test_commit "make-file" "dir" "CCC" &&
git merge-tree add-tree add-another-tree make-file >actual &&
cat >expect <<-EOF &&
removed in remote
base 100644 $(git rev-parse add-tree:dir/path) dir/path
our 100644 $(git rev-parse add-tree:dir/path) dir/path
@@ -1 +0,0 @@
-AAA
added in remote
their 100644 $(git rev-parse make-file:dir) dir
@@ -0,0 +1 @@
+CCC
EOF
test_cmp expect actual
HEAD is now at c1d16d8 initial
[master fadeed0] add-tree
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 dir/path
[master 2076f67] add-another-tree
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 dir/another
[master 8ffb08d] make-file
Author: A U Thor <author@example.com>
3 files changed, 1 insertion(+), 2 deletions(-)
create mode 100644 dir
delete mode 100644 dir/another
delete mode 100644 dir/path
ok 20 - turn tree to file
expecting success of 4300.21 'merge-tree respects core.useReplaceRefs=false':
test_commit merge-to &&
test_commit valid base &&
git reset --hard HEAD^ &&
test_commit malicious base &&
test_when_finished "git replace -d $(git rev-parse valid^0)" &&
git replace valid^0 malicious^0 &&
tree=$(git -c core.useReplaceRefs=true merge-tree --write-tree merge-to valid) &&
merged=$(git cat-file -p $tree:base) &&
test malicious = $merged &&
tree=$(git -c core.useReplaceRefs=false merge-tree --write-tree merge-to valid) &&
merged=$(git cat-file -p $tree:base) &&
test valid = $merged
[master cc93885] merge-to
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 merge-to.t
[master 99060ff] valid
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 base
HEAD is now at cc93885 merge-to
[master 069f0c6] malicious
Author: A U Thor <author@example.com>
1 file changed, 1 insertion(+)
create mode 100644 base
Deleted replace ref '99060ffb2d3618a898040626d81aa60f425c225a'
ok 21 - merge-tree respects core.useReplaceRefs=false
# passed all 21 test(s)
1..21
make[4]: Leaving directory '/<<PKGBUILDDIR>>/t'
make[4]: Entering directory '/<<PKGBUILDDIR>>/t'
*** t5000-tar-tree.sh ***
Initialized empty Git repository in /<<PKGBUILDDIR>>/t/trash directory.t5000-tar-tree/.git/
expecting success of 5000.1 'setup':
test_oid_cache <<-EOF
obj sha1:19f9c8273ec45a8938e6999cb59b3ff66739902a
obj sha256:3c666f798798601571f5cec0adb57ce4aba8546875e7693177e0535f34d2c49b
EOF
ok 1 - setup
expecting success of 5000.2 'populate workdir':
mkdir a &&
echo simple textfile >a/a &&
ten=0123456789 &&
hundred="$ten$ten$ten$ten$ten$ten$ten$ten$ten$ten" &&
echo long filename >"a/four$hundred" &&
mkdir a/bin &&
test-tool genrandom "frotz" 500000 >a/bin/sh &&
printf "A\$Format:%s\$O" "$SUBSTFORMAT" >a/substfile1 &&
printf "A not substituted O" >a/substfile2 &&
if test_have_prereq SYMLINKS
then
ln -s a a/l1
else
printf %s a >a/l1
fi &&
(
p=long_path_to_a_file &&
cd a &&
for depth in 1 2 3 4 5
do
mkdir $p &&
cd $p || exit 1
done &&
echo text >file_with_long_path
) &&
(cd a && find .) | sort >a.lst
checking prerequisite: SYMLINKS
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-SYMLINKS" &&
# test whether the filesystem supports symbolic links
ln -s x y && test -h y
)
prerequisite SYMLINKS ok
ok 2 - populate workdir
expecting success of 5000.3 'add ignored file': echo ignore me >a/ignored &&
mkdir .git/info &&
echo ignored export-ignore >.git/info/attributes
ok 3 - add ignored file
expecting success of 5000.4 'add files to repository':
git add a &&
GIT_COMMITTER_DATE="2005-05-27 22:00" git commit -m initial
[master (root-commit) dc2f90a] initial
Author: A U Thor <author@example.com>
8 files changed, 7 insertions(+)
create mode 100644 a/a
create mode 100644 a/bin/sh
create mode 100644 a/four0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
create mode 100644 a/ignored
create mode 120000 a/l1
create mode 100644 a/long_path_to_a_file/long_path_to_a_file/long_path_to_a_file/long_path_to_a_file/long_path_to_a_file/file_with_long_path
create mode 100644 a/substfile1
create mode 100644 a/substfile2
ok 4 - add files to repository
expecting success of 5000.5 'setup export-subst':
echo "substfile?" export-subst >>.git/info/attributes &&
git log --max-count=1 "--pretty=format:A${SUBSTFORMAT}O" HEAD \
>a/substfile1
ok 5 - setup export-subst
expecting success of 5000.6 'create bare clone':
git clone --template= --bare . bare.git &&
mkdir bare.git/info &&
cp .git/info/attributes bare.git/info/attributes
Cloning into bare repository 'bare.git'...
done.
ok 6 - create bare clone
expecting success of 5000.7 'remove ignored file':
rm a/ignored
ok 7 - remove ignored file
expecting success of 5000.8 'git archive':
git archive HEAD >b.tar
ok 8 - git archive
expecting success of 5000.9 ' extract tar archive':
(mkdir $dir && cd $dir && "$TAR" xf -) <$tarfile
ok 9 - extract tar archive
checking prerequisite: TAR_NEEDS_PAX_FALLBACK
mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-TAR_NEEDS_PAX_FALLBACK" &&
(
cd "$TRASH_DIRECTORY/prereq-test-dir-TAR_NEEDS_PAX_FALLBACK" &&
(
mkdir pax &&
cd pax &&
"$TAR" xf "$TEST_DIRECTORY"/t5000/pax.tar &&
test -f PaxHeaders.1791/file
)
)
prerequisite TAR_NEEDS_PAX_FALLBACK not satisfied
ok 10 # skip interpret pax headers (missing TAR_NEEDS_PAX_FALLBACK)
expecting success of 5000.11 ' validate filenames':
(cd ${dir_with_prefix}a && find .) | sort >$listfile &&
test_cmp a.lst $listfile
ok 11 - validate filenames
expecting success of 5000.12 ' validate file contents':
diff -r a ${dir_with_prefix}a
ok 12 - validate file contents
expecting success of 5000.13 ' validate mtime of a/a':
test-tool chmtime --get $dir/$path_in_archive >actual.mtime &&
echo $mtime >expect.mtime &&
test_cmp expect.mtime actual.mtime
ok 13 - validate mtime of a/a
expecting success of 5000.14 'git archive --mtime':
git archive --mtime=2002-02-02T02:02:02-0200 HEAD >with_mtime.tar
ok 14 - git archive --mtime
expecting success of 5000.15 ' extract tar archive':
(mkdir $dir && cd $dir && "$TAR" xf -) <$tarfile
ok 15 - extract tar archive
ok 16 # skip interpret pax headers (missing TAR_NEEDS_PAX_FALLBACK)
expecting success of 5000.17 ' validate filenames':
(cd ${dir_with_prefix}a && find .) | sort >$listfile &&
test_cmp a.lst $listfile
ok 17 - validate filenames
expecting success of 5000.18 ' validate file contents':
diff -r a ${dir_with_prefix}a
ok 18 - validate file contents
expecting success of 5000.19 ' validate mtime of a/a':
test-tool chmtime --get $dir/$path_in_archive >actual.mtime &&
echo $mtime >expect.mtime &&
test_cmp expect.mtime actual.mtime
ok 19 - validate mtime of a/a
expecting success of 5000.20 'git archive --prefix=prefix/':
git archive --prefix=prefix/ HEAD >with_prefix.tar
ok 20 - git archive --prefix=prefix/
expecting success of 5000.21 ' extract tar archive':
(mkdir $dir && cd $dir && "$TAR" xf -) <$tarfile
ok 21 - extract tar archive
ok 22 # skip interpret pax headers (missing TAR_NEEDS_PAX_FALLBACK)
expecting success of 5000.23 ' validate filenames':
(cd ${dir_with_prefix}a && find .) | sort >$listfile &&
test_cmp a.lst $listfile
ok 23 - validate filenames
expecting success of 5000.24 ' validate file contents':
diff -r a ${dir_with_prefix}a
ok 24 - validate file contents
expecting success of 5000.25 'git-archive --prefix=olde-':
git archive --prefix=olde- HEAD >with_olde-prefix.tar
ok 25 - git-archive --prefix=olde-
expecting success of 5000.26 ' extract tar archive':
(mkdir $dir && cd $dir && "$TAR" xf -) <$tarfile
ok 26 - extract tar archive
ok 27 # skip interpret pax headers (missing TAR_NEEDS_PAX_FALLBACK)
expecting success of 5000.28 ' validate filenames':
(cd ${dir_with_prefix}a && find .) | sort >$listfile &&
test_cmp a.lst $listfile
ok 28 - validate filenames
expecting success of 5000.29 ' validate file contents':
diff -r a ${dir_with_prefix}a
ok 29 - validate file contents
expecting success of 5000.30 'git archive --add-file':
echo untracked >untracked &&
git archive --add-file=untracked HEAD >with_untracked.tar
ok 30 - git archive --add-file
expecting success of 5000.31 ' extract tar archive':
(mkdir $dir && cd $dir && "$TAR" xf -) <$tarfile
ok 31 - extract tar archive
ok 32 # skip interpret pax headers (missing TAR_NEEDS_PAX_FALLBACK)
expecting success of 5000.33 ' validate filenames':
(cd ${dir_with_prefix}a && find .) | sort >$listfile &&
test_cmp a.lst $listfile
ok 33 - validate filenames
expecting success of 5000.34 ' validate file contents':
diff -r a ${dir_with_prefix}a
ok 34 - validate file contents
expecting success of 5000.35 ' validate extra file untracked':
diff -r $path_in_fs $dir/$path_in_archive
ok 35 - validate extra file untracked
expecting success of 5000.36 'git archive --add-file twice':
echo untracked >untracked &&
git archive --prefix=one/ --add-file=untracked \
--prefix=two/ --add-file=untracked \
--prefix= HEAD >with_untracked2.tar
ok 36 - git archive --add-file twice
expecting success of 5000.37 ' extract tar archive':
(mkdir $dir && cd $dir && "$TAR" xf -) <